- 1 名前:デフォルトの名無しさん [2007/07/25(水) 14:07:56 ]
- 音のプログラミング処理について語りましょう
各エフェクタの組み合わせとか、 プログラミング外の話題はDTM板の方がいいよ サウンドプログラミング3 pc11.2ch.net/test/read.cgi/tech/1145573675/ サウンドプログラミング2 pc8.2ch.net/test/read.cgi/tech/1091054082/ サウンドプログラミング pc5.2ch.net/tech/kako/996/996171508.html
- 355 名前:デフォルトの名無しさん [2007/12/28(金) 04:03:00 ]
- すまん自己解決
(問題-18) 音響レンズとは何か。 どんな機能を果たしているのか。 どんな材質で出来ているのか。どのような特性があるのか。 -------------------------------------------------------------------------------- (解答-18) 音響レンズとは探触子の圧電素子より前面に配置してある構造体で、音波を収束させる目的を持つ。 生体での音速に比べ遅い音速約1000m/secのシリコンで出来ている。 凸面形状をとることにより探触子から出た超音波を収束させることが出来る。 もし、音響レンズに生体より早い音速を持つ物質を使用した場合は 凹面形状をとらないと探触子から出た超音波を収束させることが出来ない。
- 356 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:51:20 ]
- DSPの経験が全くないのですが、2nd order Butterworth lowpass filterの、カットオフ周波数(1)での、ある周波数(2)の入力の位相の変化ってどうやったら求められますか?
ディレイのフィードバックで発振させて、フィルター入れたらピッチが変わって音痴になってしまいました。位相ズレ分のディレイを補正したいんです
- 357 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 07:24:01 ]
- 普通はZ変換にw*i を突っ込めば出ますが?
でもディレイ入れるだけでピッチが変わるって・・・・何かその前にお間違えでは?
- 358 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 12:35:24 ]
- サウンドプログラミングって面白いね!
- 359 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 00:29:29 ]
- PCM出力用のバッファからリアルタイムでスペクトルを取得する為に
自分でコーディングしたFFTに short(signed 2bytes) 要素数65536 を処理させたんですが、 頑張っても 0.22 秒ほど掛かってしまうようです。 車輪の再発明をするのもあれなので、「FFTをするなら普通はこれを使う」といった手段、 例えばもっと高速に動作する既成dllやライブラリなどは無いでしょうか?
- 360 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 00:50:34 ]
- 速度を求めるならfftw
俺は呼び出しの簡単さ優先なんで大浦氏のFFTライブラリ (それでも自分で書くよりも断然速い)
- 361 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:08:34 ]
- fftwなら、MKLにも同梱されているしちょっとした修正でCUFFTにも移植可能だし、
使っている人が多いと言うのも魅力だね。後は、2の冪に縛られずに済むのも手抜きにはいい。
- 362 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 07:21:11 ]
- >>359
整数ではなく浮動小数点でデータを与えた方が変換時間が短いと思う もっと少ないサイズでやるなら固定小数点も考えられるけど、2^16個では固定小数点では無理 あと、そもそも1秒分以上のサンプリングデータを0.22秒で処理出来ているのだから十分高速だと思うよ。 スペクトル表示が目的なら 4096か8192点で十分でしょ。
- 363 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 07:22:50 ]
- >>359 SINのテーブルや、ビット反転アドレスなんかのテーブルは事前に作ってるんだよね?
これを毎回作ったり、sinを毎回計算させてたら遅いよ
- 364 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 08:34:20 ]
- >359
この手の最適化話するならマシンスペックと施した最適化くらいは書いとけ、といつも思う。
- 365 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:37:22 ]
- >>363
>これを毎回作ったり、sinを毎回計算させてたら遅いよ CUDAなら毎回計算した方が早い罠。
- 366 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:05:31 ]
- OpenALを使って3Dサウンドをやってみたいのですがググって見ても断片的なblogの記事くらいしか
日本語資料が見つかりません どなたか日本語の各種ドキュメント、書籍等をご存じの方がおりましたら教えていただけると助かります よろしくお願いします
- 367 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 14:12:10 ]
- >>366
ttp://www.google.co.jp/search?q=%E8%8B%B1%E5%92%8C&lr=lang_ja
- 368 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 17:23:21 ]
- 義務教育受けてないなら諦めろ
受けてるならなんとかなる
- 369 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 15:41:44 ]
- ジュニアハイスクールレベルの英語教養を舐めるなよ
- 370 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 16:12:26 ]
- 大丈夫、いみじくも「ジュニアハイスクール」と呼ばれるところに行っている生徒程度の英語教養があるなら。
- 371 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 13:08:52 ]
- フェーズメータを作成しようと思うのですが、知識が無くて
困っています。参考文献や参考になるサイトがあったら教えてください。
- 372 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 13:19:09 ]
- フェーズメータって事は、サイン波オシレータと
そのオシレータとの位相差を表示したいって事? それをどういう環境で作りたいの? パソコンの場合、ディレイがハード毎に違うし、そもそも出力と入力が同じサンプルクロックとは限らないから 2CH 入力して 出力を L/Rのどっちかの端子から入力させて位相を比較するとかじゃないと 汎用性が無いだろうな 位相の測定は出力オシレータを90度位相差が出る sin/cosのベクトル積型にしておいて sin/cos成分との掛け算で出すのが一番簡単だと思うよ
- 373 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 13:17:27 ]
- >>372ありがとうございます。
"sin/cosのベクトル積型"というのはどういう 事なのでしょうか。すみません馬鹿で。
- 374 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 16:23:40 ]
- LRでリサージュ描くんじゃだめ?
ja.wikipedia.org/wiki/%E3%83%AA%E3%82%B5%E3%83%BC%E3%82%B8%E3%83%A5%E6%9B%B2%E7%B7%9A (なんか根本的に勘違いしてたらごめん。)
- 375 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 09:42:03 ]
- ベクトル積じゃなくて回転行列との掛け算だろう
| c , s | |-s , c |
- 376 名前:デフォルトの名無しさん [2008/01/25(金) 01:10:48 ]
- ( ゚д゚)ノ ハイ!シツモンデス!
文書では上手く説明できないと思ったので、グラフ描きました。 www-2ch.net:8080/up/download/1201189698030081.7mcqr5 デジタルオーディオのミキシング用に、IIRフィルタを掛けて目標の周波数帯域を取り出そうとしています。 また、リアルタイムに取得する周波数帯を変更していく予定です。 そこで、まずはsin波形で色々と試しているところなのですが、 現象の呼び名が分からないので検索できませんでした。 グラフを見て頂いて、問題箇所を確認してもらえるでしょうか。 @ IIRフィルタを掛けた場合、波形が後方へズレる?と思いますが、これは正しい現象ですよね? その場合、ズレ幅はなんと呼ばれるのでしょうか? また、その幅をIIRの係数か何かから事前算出できるものなのでしょうか? A また@のズレ幅ですが、周波数によって変わると思うのですが、これは正しい現象でしょうか? B フィルタの開始、終了時に不安定?になる区間があると思いますが、これを排除する事は可能でしょうか? また、区間の長さを事前算出できるものなのでしょうか? C グラフにはありませんが、IIRフィルタの係数を徐々に変更した場合、 例えば low-pass の通過帯域を 100hz → 1サンプルづつに+1 → 1000hz と変更し、 リアルタイムに取得帯域を変更した場合、正しく計算できるものなのでしょうか? 宜しくお願いします。
- 377 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:38:35 ]
- 位相という言葉すら知らずにいきなりデジタルフィルタに手を出す時代なのね・・・
- 378 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 02:49:15 ]
- 馬鹿は際限無く馬鹿ということ
- 379 名前:デフォルトの名無しさん [2008/01/25(金) 03:25:54 ]
- >>378
とりあえず、位相と窓関数とRBJAudioEQCookBookとピーキングフィルタとウェーブレット を愚ぐれ。 しかし位相も知らずにIIRとかどうやって知ったんだろ...。
- 380 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 05:00:54 ]
- >>379
>>>378 >>376
- 381 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:12:27 ]
- >>376
IIRフィルタに限らずデジタルフィルタは Z変換して、そこにe^(iw) をぶち込むと 周波数特性が出ます。 周波数特性は、 複素数の絶対値がゲインで、複素数の角度が位相です。 だから、貴方がやるべきことは、Z変換を理解する事です。 それには複素数を知らなければいけませんし、 そのついでにラプラス変換とフーリエ変換も勉強しないといけません。 その後でしたら説明出来ますが、今は説明が難しいです。
- 382 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:16:58 ]
- なお、最後の質問は、Z変換を理解した段階でも、まだ答えるのは難しい問題です。
実用的には十分ゆっくり変更するなら大丈夫ですけどね
- 383 名前:376 mailto:sage [2008/01/25(金) 22:19:20 ]
- >>377
>>379 SCILAB使ってます。便利な世の中です。 >>381 とりあえずz変換を勉強中です。 今のところ、離散時間信号から複素数平面への写像と捉えてます。 まだ複素数平面状で何ができるのか勉強不足なので、相違のズレが(言葉遣いあってます? なぜ発生するかは理解してませんが。 >>382 リアルタイムにグリグリできるパラメトリックイコライザっぽいものを 作ろうと思ってるんですが、もしかして使う手法を間違ってます? >>378 罵倒するのはいいけど、せめて1単語でもヒント書いてよ でないと、オレと同階層の住人。
- 384 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 22:21:14 ]
- >>381 相違のズレ>位相のズレ
“そうい”ってなんだよオレ...orz
- 385 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 22:55:33 ]
- >>384
僧衣でググれ
- 386 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:18:18 ]
- まあ、なんだ。せっかくのスレなんだしギスギスしないでも...
>>376 キーワードは「直線位相」だ。
- 387 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:29:40 ]
- >>383
プログラミングの現実的な側面から言うと、 4)1サンプル毎に変化させるような仕様は事実上不必要かと 本当に1サンプルの時間精度で制御したいなら別だけど。 実際問題として、たとえばVST plug-inならDAWによるが 数千〜数万サンプル単位で波形データが渡される。 # 丸数字はやめて…… オフライン処理なら意味のある仕様かな。 その場合は1ステップ毎に係数書き換えで済むような気がする キーワードとしては、後は群遅延とかかなぁ。
- 388 名前:デフォルトの名無しさん [2008/01/26(土) 03:37:28 ]
- >>383
パライコっぽいってことはパライコとは微妙に違うの? 1サンプルごとになぜ係数を変えるの? 単にパライコなら379に書いてあるように、RBJAudioEQCookBookの係数を使って 複数のピーキングフィルタを実装してつなげればできるけど。
- 389 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 08:36:43 ]
- >>383
Z変換して複素数を突っ込めば、位相のズレが起きるのは当然と判る 位相のズレを起きないようにするには、虚数成分がゼロにならなければならない。 それには、分母が(1+aZ+...)なんてなってると分子が同じ係数、つまりフィルター でない状態でなければ無理。 パラメトリックイコライザなら1サンプル毎に係数をゆっくり変更するので合ってる。 ただ、IIRの場合、その係数の変更途中で分母のゲインが変わってくるから 構成方法によっては更新速度の影響が出て来る。 でも、実用的には、ひたすらユックリ変更するという事で逃げればいい。
- 390 名前:デフォルトの名無しさん [2008/01/26(土) 13:26:38 ]
- よくわかってないんだけど、1サンプル毎に係数をゆっくり変更と言ってるのって、
パライコのフェーダー操作したときの話?
- 391 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:48:51 ]
- グリグリって書いてるじゃん
- 392 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 17:55:34 ]
- そういえばというか、
IIRが係数を急激に変化させたとき不安定になるのって 遅延器内の値も適切に補正できれば回避できたりしないかね?
- 393 名前:376 mailto:sage [2008/01/27(日) 17:49:43 ]
- みなさん、ありがとうございます。キーワードを参考に、ネット記事と書籍を読みふけってます。
>>386 「直線位相」でググるとFIRの記述が多く見つかりましたが、IIRにも同様の内容があてはまるのでしょうか? 現在、複素数平面とかに関して勉強してるので、そのうちにでてくる気もしていますが・・・ >>387 オフライン処理になるとは思いますが、上手くいけばリアルタイムも考えてます。 それも担ってステップが少ないIIRを選んだのですが、間違いだったかな。 「群遅延」とは周波数全体の位相が同時にズレるという認識であってますか? 一応、サイトとかまわってみたのですが、どうもシックリくる説明が見つからなくて困ってます。 >>388 説明不足でした。スミマセン パライコのように目標の周波数を引き上げるのではなくて、その周波数帯を取り出したいんです。 さらに、その帯域をリアルタイムでグリグリと移動させたいなと考えてます。 なので、ピーキングではなくてバンドパスを組み合わせたいのですが、 バンドパスさせた複数の波形をそのままミキシングすると波形が壊れてしまったので、問題と原因を探してるところです。 # 根本は数学を分かってないところが大問題なのですがw ↑改行制限で分割されました↓
- 394 名前:376 mailto:sage [2008/01/27(日) 17:50:14 ]
- >>389
>構成方法によっては更新速度の影響が出て来る。 この影響範囲(時間?)を事前に算出するような事は可能なのでしょうかあ? # まぁ、今の僕にはできないとしてw 勉強を進めていくうちにできるようになるのか、現実的に不可能なのかだけでも教えてもらえると助かります。 >>390-391 中心周波数をリアルタイムでグリグリと変更して取り出したいと考えてます。 グライコのようにピークを線形移動させるというイメージです。 十分なサンプリングレートが取れていれば、ゆっくり係数を移動させる事ができそうなので、その方向で考えてます。 25Hz -> 20kHz へ1秒で移動の場合、44.1kHz/secで1サンプル +22.32Hzの変更となってしまいますが、 まぁ、ここまで過激な対応が可能かどうかは別として。 >>392 急激な移動が起こる各バンド帯を並列で計算しておいて、移動時に遅延させるという事でしょうか?
- 395 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:04:37 ]
- FIRの場合は遅延を入れただけの信号に対しての直線位相となる。
つまりZ^n で割った時に、 Zに複素数を入れた結果の虚数成分が常に0である必要がある。 だから、分母に遅延要素以外がある IIRでは直線位相は実現出来ない。 直線位相でなければいけないのならFIRにするしかない。 しかし、FIRで25HzのBPFなんて作ろうとしたらどれだけタップ数が必要か しかもそれをリアルタイムにf0を更新しようとしたら、まあ無理。 やるとしたらFFTで計算させるしかないね。 常にそういうスイープするなら、 FFTで時間引き伸ばしパルスなんて作るといいのかも とりあえず、どうして直線位相でなければいけないのか どういう用途か判れば、アドバイスしてくれる人がいるのかも
- 396 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:37:53 ]
- >>393
>「群遅延」とは周波数全体の位相が同時にズレるという認識であってますか? 簡単にいうと、(位相遅れによる)各周波数での遅延時間。定義は位相遅れの周波数微分。 (全体で一つの群遅延ではなく、周波数毎に群遅延値が出てくる点に注意) 位相遅れ量が等しくても、周波数によって波長が変わるので遅延時間は変化する。 波長によって遅延時間が違えば当然波形が歪むので、それをチェックするために群遅延を使う。 で、周波数-位相遅れのグラフが直線になる場合を直線位相といって、 グラフが直線→位相遅れの周波数微分が一定→遅延時間(群遅延)が 全帯域で一定→波形が壊れない→(゚Д゚)ウマー
- 397 名前:デフォルトの名無しさん [2008/01/28(月) 06:15:24 ]
- いまいち何を実現したいのかがわからないな。
FFTして取り出したい帯域をぶっこぬくのじゃだめなの? 目的は解析?それとも音色?
- 398 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 11:15:19 ]
- >バンドパスさせた複数の波形をそのままミキシングする
といってたから直線位相なんじゃまいか。 >ミキシング用 >グリグリ ということだからVSTエフェクトでも作りたいんだろうとは読み取れるけど。 まここはDTM板じゃないので、住人も幅広く 絞って説明しないとわかってもらえないときあるかもね 単にグリグリだったらIIRのバンドパスで f0急激に変化しないように制限すれば良さそうだけど、 複数の周波数帯取り出して合成しなきゃいけないんなら、FFTが現実的かもね。 ただこの場合はグリグリするにも周波数方向の分解能は制限をうけるから なめらかさは犠牲になるかなあ。
- 399 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:49:43 ]
- DFTおよびFFTのプログラムを作ってみたのですが
DFTとFFTで結果がまるで違います。 しかし両方とも逆変換をすると、元の値に戻るのは確認したので 計算はあってると思うのですが、さっぱりわかりません。 実験は以下のようにやってみました。 ・元信号をsin関数で作って配列Xに入れる ・XにDFTおよびFFTをかけたものを配列Fに入れる ・FにIDFTおよびIFFTをかけたものを配列Yに入れる ・XとYの実軸の値はほぼ同じ。 虚軸に誤差と思われる値が入っているのは確認しています。 何か誤差が発生していたりするのでしょうか?
- 400 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:20:47 ]
- Σsin*Xn で求めたものと FFTで求めたものでは 誤差の種類は違うよ。
80bit浮動小数点で計算してる? 64bitのdoubleだと結構4096点くらいでも気になる誤差だよ。 でも計算があってるかどうかは、サイン波を合成したのを入力してみればいいと思うのだが?
- 401 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 05:32:14 ]
- まさかとは思うが
DCTとFFT比較してたりしないよな
- 402 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 14:58:25 ]
- レス下さった方には申し訳ないのですが
もっと初歩的でした。 振幅と位相の計算をしてませんでした・・・ 結果がまるで違うように見えたのは 有効数字やcos、sinなどの関数の誤差によって あまり関係の無いパラメータが変動しているためでした。 無事FFTの計算はできるようになったので いろいろやって見ようと思います。 ありがとうございました。
- 403 名前:デフォルトの名無しさん [2008/02/02(土) 02:47:09 ]
- すみません質問です。
ステレオでLRの位相を90度ずらすと、左右に音が分離して聞こえますが、 この左右に離れている音の位置間隔を中心寄りに縮めるには、どうしたらよいのでしょうか? 0〜90度の間で左右の位相幅をいじっても、90度近くないと結局音が分離したようには聞こえず、 90度近いと逆に左右に音が離れすぎてしまいます。 LRのパンニングではなく、コーラスとしてステレオ感を調節するエフェクターを実装したいのですが、 良い実装方法などありましたらご教授ください。
- 404 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 03:13:36 ]
- MSバランス
- 405 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:27:20 ]
- 位相を弄るんじゃなくて、遅延時間を弄る方がいいと思うよ。
ただ、遅延時間をスムースに変更するのは ・100タップくらいのFIRの係数を多数用意しておく ・あらかじめ高域をカットしておいて6タップくらいのFIRで1/2遅延と按分 ・内部で4倍くらいオーバーサンプリングして// あと、遅延時間だけでは移動感が出ない。音量も変更しないと
- 406 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:05:08 ]
- 音楽から和音抽出ってむずいねw
- 407 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:50:35 ]
- フーリエ変換すれば何とかならんこともない
- 408 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:58:37 ]
- そんなもんで出来るんなら苦労しないわ。
和音抽出するには、まず識別する事が必要。フーリエ変換だけじゃ無理。
- 409 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:17:04 ]
- 倍音が邪魔だし
- 410 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:58:26 ]
- 倍音成分含む音なら基音を簡単に見つけられる。
倍音成分が少ない(無い)音やピッチが揺れる音(ベル系)は難しい。 その音が和音だと解っているなら和音も見つけられる。調も解れば精度が上がる。 ただ、和音の中に倍音がある場合(ギターのコード等)はフーリエだけじゃ多分無理。
- 411 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:07:39 ]
- ドラムとかシンセとかいろいろ入ってると難しいだろうな
- 412 名前:403 [2008/02/03(日) 05:37:33 ]
- 皆様回答ありがとうございます。
>>404 MSバランスって初めて聴きました。 MIDをモノラルにしてLRをステレオとして合計3つの音源で広がり感を 調節するものようですね。 なるほど、中央に音源を置いたほうがいいのかも。 ちょっと試してみたいと思います。 参照: stagesounds.blog74.fc2.com/blog-entry-53.html
- 413 名前:403 [2008/02/03(日) 05:38:06 ]
-
>>405 遅延時間をいじるというのは、LRそれぞれに別のFIRをかけて、 左右の遅延時間に差をつけるということでしょうか? コーラスの場合は、左右のディレイ分の変化、つまりピッチ感の変化の位相を ずらすことによって、同じ音源を微妙に違うものとして耳に届けることで、ステレオ感が表現できると理解しているのですが、 FIRの場合は、左右のフィルタの係り具合、つまり音色の微妙な違いによって、ステレオ感を表現するということでしょうか? その場合、ステレオ音の広がりの間隔をどのようにして調節するのかが理解できていないのですが、 もう少しヒントをお願いできないでしょうか?
- 414 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 09:00:34 ]
- 遅延時間を変更するのに1サンプル遅延するのに苦労は無いけど
0.5遅延するのにどうする? 単に2つの平均を取ると、これはLPFになってしまう。 高域をあまりカットしないで0.5遅延したいというような場合には 比較的長いFIRフィルタが必要。
- 415 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:41:33 ]
- というか、コーラス等のエフェクタ用途だったら、
遅延時間の解像度はサンプル単位で十分なのでは? というか経験的には十分だったような。(44.1KHzとかのサンプリングレートなら) どの程度のS/Nになるかは計算できないんだけどさ。
- 416 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:00:51 ]
- それで十分というならソレでいいんじゃない?
両耳の距離が17cmとして 170/340E3*44100 で22サンプルの遅延分 1サンプル単位にカクカクと変更しても気にならないといえばならない。 とりあえず思うような特性になるかどうか試してみるといいよ
- 417 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:06:18 ]
- コード抽出なら離散ウェーブレットじゃないの
再構成しないならオクターブバンドより狭く解析できるし 時間解像度的にも有利
- 418 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 12:46:12 ]
- その手の題材って、研究目的とかじっくりと取り組めるのでなけりゃ、
なかなか手を出しにくいね。 いくらかうまくいったとしても、道具としての実用レベルまでは遠い道のり・・・
- 419 名前:403 [2008/02/05(火) 03:52:34 ]
- >>405
>>414 >>415 >>416 回答ありがとうございます。 両耳への到達時間を1サンプル以下の単位で操作するためにFIRを利用するという意味なんですね。 やっと理解しました。 ちょっと実験してみたいと思います。 ありがとうございました!
- 420 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 11:54:50 ]
- サウンドカード付属のマイク入力(3.5ミニ)から入力された音声を
リアルタイム(非バッチ処理)にディジタル処理するプログラムの作成を考えています. 計測機器などはその製品ごと(というか会社ごと?)にコマンドが異なりますが, サウンドカードも同様なのでしょうか? windows Visual C++6 での開発を考えていますが, 後にUNIX系に移植するつもりです. 関数の使いまわしが出来るのかが心配になり質問しに来ました. お願いします.
- 421 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:23:42 ]
- 入出力は処理系依存だと思うけど
- 422 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:46:24 ]
- Windowsの場合は
1 低レベル オーディオAPI waveInOpen/waveInAddBuffer/ waveOutOpen/waveOutPrepareHeader/waveOutWrite 窓へのメッセージで貰うか、CallBackを使う。 利点:サウンドカードをインストールすれば、ほぼ確実に使え、サウンドカードを意識する必要がない 欠点:色んなサウンドカードで音切れしないように考えるバッファを大きくとってレイテンシが大きくなりがち ステレオ以上のマルチチャンネルは対応が難しい 2 DirectSound msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/htm/directsound.asp 利点:エフェクタ等、便利な機能が既にそろってしまっている。 欠点:DirectXがインストールされ、一部機能は対応サウンドカードである必要がある 3 ASIO 利点:低遅延
- 423 名前:420 mailto:sage [2008/02/07(木) 16:19:16 ]
- >>421-422
ありがとうございます. 低レベルオーディオAPIを使ってみます.
- 424 名前:デフォルトの名無しさん [2008/02/11(月) 00:00:11 ]
- 板違いかもしれませんが、質問させてください。
WindowsMediaPlayerのプレイビューのような、音楽にシンクロしてグラフィングが 変化する物(名前がわかりません)の作成の仕方が知りたいのですが、 どのように調べていいのかもわからず困っております。 ご存知の方がいましたら、調べ方についておしえてください。
- 425 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:04:29 ]
- >>424
それはグラフィクイコライザというものです。 音の高さに合わせて、それぞれの音の高さの音の大きさを棒グラフで表示します。 WMP等はこれをリアルタイムで行います。 原理は、フーリエ変換というものを使って信号を処理してそれぞれの周波数のゲインを解析しています。 手がかりは書いた。あとは検索しろ。
- 426 名前:デフォルトの名無しさん [2008/02/11(月) 00:09:05 ]
- ありがとうございます。
大変重要な手がかりをいただけました。 早速検索してきますー。
- 427 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 01:53:23 ]
- ス ペ ク ト ラ ム ア ナ ラ イ ザ だ
- 428 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 02:00:52 ]
- ワロタ
- 429 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 03:24:13 ]
- >>425
あれって本当にフーリエ変換なんてやってるのだろうか? 大体のふいんきが分かれば十分だからもっと簡単な実装で良いんじゃないかと思わなくもない。
- 430 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 04:20:34 ]
- フィルタした音を再構成して使うんじゃなければただのIIRバンドパスで十分かもね。位相回ってもパワーには影響しないし。
IIRで完全なクロスオーバー作るのは難しいから、各バンドのパワーの和を厳密に元信号と一致させたいときは使えないけど、 棒グラフ程度なら十分だと思う
- 431 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 04:48:13 ]
- 出てくる絵が変わっていけばいいだけなら、
無理にfftかけなくてもいいだろうけど、 スペクトル出すならなんかやってんだろうね。
- 432 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:05:56 ]
- パソコンの場合は十分な演算能力あるからFFTでもOK
ただ、FFTの都度CPUの負荷が上がるから消費電流の変動がノイズとなって聞こえるという困った事に なおMP3はそもそも周波数毎に分割されてるのを再構成してるから、その時の情報を残している 可能性もある。 マイコン内蔵のDSPなんかで実現してる場合は IIRフィルタでも共振型というかサイン波オシレータの構成だろう。 ようするにQ無限大の共振器に単発の窓関数かけて結果を見る 1個の共振器を時分割で使い回せば負荷も軽い
- 433 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:00:41 ]
- いつもは過疎スレなのにネタが落とされるとすぐにレスが付くな。
- 434 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:22:10 ]
- なんか前スレあたりでもほぼ同じ流れみたような
そしてそこでも、スペアナをグライコとよんでるやつがw
- 435 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:25:59 ]
- 前スレじゃなかったこのスレだわ>>324
- 436 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:57:35 ]
- グライコがスペアナの意味で使われてて混乱してたけど、やっぱり違ったか。
- 437 名前:デフォルトの名無しさん [2008/02/11(月) 15:20:50 ]
- >>436
なんか多くの素人が同じ間違いをしてる。 音楽やってたことある人でも多いし。 おそらくコンポやカーステレオでスペアナとグライコの表示が似てるせいだろう。
- 438 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 16:08:10 ]
- グライコはどうやってるんだろな
IIRフィルタだっていうけど、係数を全部いっぺん変更してるんだろか?
- 439 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:45:44 ]
- 双二次で検索
- 440 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 15:20:24 ]
- 多分、一番多い実装は、
RBJ Audio-EQ-Cookbook で言うところの 双二次のピーキングIIRを複数つないでる。
- 441 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:22:50 ]
- b0 = 1 + alpha*A
b1 = -2*cos(w0) b2 = 1 - alpha*A a0 = 1 + alpha/A a1 = -2*cos(w0) a2 = 1 - alpha/A コレって、 1/Aの部分で割算が必要だし 結局 a0で割らないといけないから、リアルタイムにこのまま計算してるとは思えないなんだよね
- 442 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:41:00 ]
- >>441
その割り算(a_i, b_i の計算)は、イコライザの設定変更時だけしかしなくて、 毎サイクルは必要ない。
- 443 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:16:13 ]
- イコライザだからAの変更は必要だよね? そうすると 1/a0も計算しないといけないよね?
だから、割り算しなくていいような構成方法あるんじゃないの?
- 444 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:31:03 ]
- 設定変更時だけだし多少遅くても割り算やってる。
- 445 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:31:23 ]
- A の変更の頻度、それほど高くないはずだから、
割り算のコストをそこまでシビアに考えなくてもいいんじゃないかと。 除算器乗ってないプロセッサでも、除算表持ったり近似計算したりで、 割り算全く出来ないわけではないし。
- 446 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:04:53 ]
- 逆数を乗算してもいいな
そういう話をしてるんじゃないのは分かってるけどw
- 447 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:14:14 ]
- イコライザいけるならHPFでもいけるかと思って
リアルタイムで係数書き換えたらあっさり発振した。 やっぱだめか。
- 448 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:18:37 ]
- イコライザも係数を一気に書き換えたら発振するよ
書き換えでフィードバックゲインが大きく変わるから、 結果オーバフローすると不安定になる。
- 449 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 03:26:05 ]
- だから俺はFIR派
- 450 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 08:04:25 ]
- FIRで、RBJみたいに簡単に扱える方法はあるの?
- 451 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:26:34 ]
- FIRでバンドパスフィルタを作っておけば直線位相だから
元の信号の遅延信号と加減算できるんだよ。 元の信号に足せば、そのバンドだけポコンの持ち上がるし 足せば下げられる。 IIIRでも同じなんだけどね
- 452 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:57:31 ]
- IIRは結果の加減算やろうとすると位相差のせいでうまくいかないからねぇ
てかRBJって何?
- 453 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:32:31 ]
- ググレカス
www.google.co.jp/search?q=RBJ+IIR
- 454 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:02:04 ]
- いや、バンドパスの頂点はゼロ位相だから 加算は可能だよ。
その特性は IIR-ピーキングイコライザのものと殆ど同じ ただQはだいぶ調整必要なのとf0も少しズレるように思ったな
- 455 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:08:33 ]
- 頂点以外ずれるから問題なんだろう
|

|