07/09/06 21:05:28
( ´∀`)ノ
先生!
IIRフィルタの遅延器って、なんで高い精度必要なんですか?
精度低いとどうなるのですか?
176:デフォルトの名無しさん
07/09/06 21:08:27
無限インパルス応答だから
177:デフォルトの名無しさん
07/09/06 23:58:36
フィードバック=計算誤差が累積
でもま普通は(要求がシビアでなけりゃ)単精度でも十分じゃない?
178:デフォルトの名無しさん
07/09/07 00:09:54
なんでもいいよ
場合によっては固定小数点数でも可
179:デフォルトの名無しさん
07/09/07 07:26:55
>>175
たとえばf0の低い 1次のLPF
y := y*(1-r) +x*r; とやると、rが小さいので(1-r)の精度が悪くなる
y := y +(x-y)*r; とやればソレは解決する。
1次の場合は、yが単精度でも単に誤差が累積するだけだけど
2次になると、yが単精度だとf0が低かったりQが高いとノイズが出てくる。
それも ピーとかいう類のノイズ
180:デフォルトの名無しさん
07/09/07 16:35:54
>171
この人こんな記事書いてたのか、ターゲット絞れないバカの典型だな。
用途や環境にあわせられない奴は最適化語るなよ・・・
181:最早厭われてはいるが
07/09/07 22:19:07
>>180
あの本を書いた時点で既に、自称翁だ。バカだなんてとんでもない。年寄りは労われ。
182:デフォルトの名無しさん
07/09/08 03:05:32
多少配慮足らずでも、誰かの参考にはなる記事をネット上で公開してるんだし
それをバカの典型と言い切れるやつよりは敬われる権利あるよ。
183:デフォルトの名無しさん
07/09/08 06:29:03
90年台に「floatよりdoubleの方が速い」とか嘘かかれても、参考にならないと思いまーすw
ましてや「敬われる」とかありえませーんwww
184:デフォルトの名無しさん
07/09/08 06:41:17
floatよりdoubleの方が速いって言うのは、昔のプロセッサはfloatを内部で動的にdoubleに変換してたからだろ。
今はそういうのが無いからどう考えてもfloatの方が速いし、データが短い分キャッシュにも残りやすいから最適化も効き易い。
185:デフォルトの名無しさん
07/09/08 07:25:16
どうでもいい。結局処理系による。
つか180の食いつきかた見ry
186:デフォルトの名無しさん
07/09/08 07:33:02
うちのMacBook Pro (CoreDuo 2.0GHz) で試してみたけど、
floatよりdoubleのほうが速いぉ。
187:デフォルトの名無しさん
07/09/08 07:34:34
Mac(笑)
188:デフォルトの名無しさん
07/09/08 07:41:17
>>184
専用機はしらないけど、96年当時主流だったインテルもモトローラも内部80bitだよ。
内部で動的にdoubleに変換してる石って何?
189:デフォルトの名無しさん
07/09/08 07:42:30
>>179 2次でノイズが出るのは リミットサイクルって現象だろ?
なんかリミットサイクルの出ないフィルタとか論文があるけど、理解出来ないんだよな
190:デフォルトの名無しさん
07/09/08 08:09:02
>>188
内部80bitの場合も、floatよりdoubleの方がしばしば速い。
で、翁が想定しているのはSparcとx86だろ。
191:デフォルトの名無しさん
07/09/08 10:37:39
処理速度が問題になるほどのタップ数の多い FIRフィルタならキャッシュに収まるかどうかの方が
速度を決めてしまうと思うけどな 命令サイクルがギガに対してメモリは1桁下なんだから
192:( ´∀`)
07/09/08 13:21:01
( ´∀`)ノ
>>175-179 先生、有難うございました。
無限インパルス応答だからの回答に超感動しました。
精度が低いと、無限の過去の影響を細かく現代に反映できない。反映できないものは誤差として累積され、
現代を惑わす魍魎を生み出すことになる。怖いですね。
193:デフォルトの名無しさん
07/09/08 14:48:57
double が速いのはC言語の math.h が double に対してしか定義されていなかったり、
自動昇格が多数発生するためでしょ
x87 の FPU は内部で 80bit に昇格するのがデフォだけど、それにしたって内部精度は命令を
発行して設定できるわけで、慎重に書かれたソースなら当時から float の方が速かったよ
194:デフォルトの名無しさん
07/09/08 15:11:02
今ならc99のお蔭でhypotf()なんかが使えるからねぇ。
195:デフォルトの名無しさん
07/09/08 15:30:39
今がどうだとか昔はどうだとかこのCPUではとかいつまでやってんだ?馬鹿馬鹿しい
196:デフォルトの名無しさん
07/09/08 17:58:56
>>161
197:デフォルトの名無しさん
07/09/08 18:14:47
>>195 じゃネタだしてよ。 >>189の話を膨らませるとかさ
198:デフォルトの名無しさん
07/09/08 18:21:01
>>197
じゃあ>>189の話を膨らませろ馬鹿
199:デフォルトの名無しさん
07/09/08 20:23:28
ようし、じゃグーグルさん使ってふくらませるぞ。
リミットサイクル+フィルタ でポチっとな
URLリンク(www38.tok2.com)
> IIRなんかでフィルタ等の信号処理をすると384kFsだと係数 語調は32ビットでは
>低域でリミットサイクルによる発振現象の影響が出てきますので不足で48ビットもしくは64ビット必要になりますな。
なるほどな。
お!これだ
URLリンク(www.mk.ecei.tohoku.ac.jp)
>リミットサイクルのない 感度最小形ディジタルフィルタの合成
えと? 状態空間ディジタルフィルタ? って何? もいちどグーグルさんお願い。ポチっとな
カルマンフィルタ? いや応用カルマンフィルタ って本は持ってるんだが・・・・こりゃ退散だ
200:( ´∀`)
07/09/12 21:38:18
( ´∀`)ノ 、先生
WindowsメッセージMM_WIM_DATA(録音バッファの録音完了)を受けての処理手順について何ですけど
下記の1,2のどちらが正しいですか?
1.waveInUnprepareHeader,waveInPrepareHeaderを用いる
// 録音バッファの登録解除
waveInUnprepareHeader
録音データ、lpDataを処理する
// 録音バッファの再登録
waveInPrepareHeader
waveInAddBuffer
2.waveInUnprepareHeader,waveInPrepareHeaderを用いない
録音データ、lpDataを処理する
// 録音バッファの再登録
waveInAddBuffer
201:デフォルトの名無しさん
07/09/13 07:32:05
>>200 さあ? どっちが正しいかはしらないけど 2でやってて不具合にあたった事はないな
202:( ´∀`)
07/09/16 12:46:06
( ´∀`)ノ
>>201、先生、ども、ども、有難うございました。そっそうなんですか...
なんか、waveInもwaveOut処理同様に>>200の1.のようにするのが正しいのかなと思たですけど
203:デフォルトの名無しさん
07/09/16 13:16:46
URLリンク(up2.viploader.net)
204:デフォルトの名無しさん
07/09/16 13:42:54
>>203
毎年見れば無問題
205:デフォルトの名無しさん
07/09/16 13:50:12
それなんて3年峠?
206:デフォルトの名無しさん
07/09/16 14:35:02
どうして周波数が低いと大きな音を出すのに、高周波と比べて指数的に高いエネルギーが必要なの?
蝸牛が低音を捕らえようとするとどうしても指数的に音量が小さくなってしまうからなの?
だったら低音は凄く耳に悪いね。難聴の原因だ。
207:デフォルトの名無しさん
07/09/16 15:58:19
動かす媒質の量
208:デフォルトの名無しさん
07/09/16 16:34:37
同じエネルギーを出すのに低いほどストロークが必要という事じゃないて
同じエネルギーを与えても、小さく感じるという事ならその通り
URLリンク(www.yacmo.co.jp)
209:デフォルトの名無しさん
07/09/17 00:58:06
100人飛べる大縄跳びで二重飛びしようとするとものすごく大変なのと一緒・・・ではないな
210:デフォルトの名無しさん
07/09/17 01:52:12
>>207
マジレスありがとう。
1Hzで動く量と100Hzで動く量が違うのは当たり前ですね。
211:デフォルトの名無しさん
07/09/18 06:37:18
>206
真面目に低音は耳に悪いので注意。
スピーカー飛ばす原因も低音の出力が高すぎるってのが多いし。
212:デフォルトの名無しさん
07/09/18 07:12:34
スピーカーが飛ぶのは2つの現象
電力は 電流*電圧だけど、ボイスコイルは、コイルと名前が付くようにL成分を持ってるから
同じ電圧振幅でも電流は低周波程流れてしまう。 発熱は電流の2乗に比例するので、低音程 焼損し易い
また、コントロールして同じV*Aを与えたとしても、ボイスコイルには質量があるから
同じV*Aを与えても振幅は低周波程大きくなる。 結果、大振幅で可動域を外れ物理的に変形してしまう。
213:デフォルトの名無しさん
07/10/05 21:15:13
waveOutOpenの引数にコールバックを指定した場合、waveOutProcはスレッドセーフっぽくないんですが。
なんか現在のスレッドの処理に割り込んで呼び出されませんか?
WM_DONEで再びWaveOutWriteしようとするとかなりの割合でスタックが破壊されています。
214:デフォルトの名無しさん
07/10/06 10:20:53
手順が間違ってる
215:デフォルトの名無しさん
07/10/06 13:40:55
>>213
そういうもんだよ。
waveOutProcはスレッドセーフじゃないと、しっかり覚えておくといいんじゃない。
216:デフォルトの名無しさん
07/10/07 01:54:40
どこにもスレッドに関わることが書かれてなかったような気がするんですが、スレッドセーフではないんですね
サウンド関連の生APIはむずかしいです
217:デフォルトの名無しさん
07/10/07 05:24:12
でもそんなの関係ねぇ
218:デフォルトの名無しさん
07/10/07 14:00:21
>>216
サウンド関連の生APIはむずかしいです
じゃなく
APIでプログラム作るのはとてもむずかしいです
が正しい。
219:デフォルトの名無しさん
07/10/08 20:27:23
極めてどうでもいい揚げ足取りだな
220:デフォルトの名無しさん
07/10/08 22:02:30
>>212
ブラウン管モニタを壊すにはデバイスドライバレベルでの制御が必要だけど
ひょっとすると、スピーカーはユーザープログラムで壊せてしまう可能性がある?
超低周波を出すとか、DCオフセットをかけ続けるとか。
221:デフォルトの名無しさん
07/10/08 22:09:13
ドライバレベルで保護してないかな。してなきゃまずいね。
222:デフォルトの名無しさん
07/10/08 22:26:59
ユーザープログラムも何も
曲作ってるときうっかり変な音を鳴らしてスピーカ飛ばすって時々あるもんじゃないの?
223:デフォルトの名無しさん
07/10/08 22:51:08
ない
224:デフォルトの名無しさん
07/10/08 23:03:21
俺もそんなに詳しいわけじゃないが、もちっとだけアナログの勉強をしてもいいと思うんだ。
スピーカーが飛ぶのは>212にあるようにスピーカーが想定以上の入力を受けた時。
なので出力波形だけでなく、アンプのパワーやボリュームによる所が大きい。
225:デフォルトの名無しさん
07/10/08 23:16:44
>>220
直流を通すオーディオアンプなんてほとんど存在しないだろ。
アンプにデジタルで直結したとしても、
普通はスピーカ出力の直前にコンデンサが入ってたりしてHPF特性がかかるから、
スピーカに超低周波や直流がかかることはない。
226:デフォルトの名無しさん
07/10/08 23:22:58
ああ、でも、直流そのものは通さないとしても、
ステップ関数とかガンと入れられたら階段部分はスピーカ的に結構きついかもな。
227:デフォルトの名無しさん
07/10/09 20:02:28
ステップ関数は階段部分ではなく、その後のフラットな部分がキツイわけで
228:デフォルトの名無しさん
07/10/09 20:33:14
フラットな部分はHPFで除去されるんじゃね?
229:デフォルトの名無しさん
07/10/09 22:05:52
インパルス連続攻撃で敵を倒せないですか?
230:デフォルトの名無しさん
07/10/09 22:10:36
URLリンク(premiumtv.12gbfree.com)
231:デフォルトの名無しさん
07/10/09 22:11:43
URLリンク(proforceone.web.fc2.com) ⇒ Processed input data
Chick+Corea[777]
Herbie+Hancock[999]
URLリンク(proforceone.web.fc2.com) ⇒ Calculation processing
d=$.split("\n");for(j=0;d.length>j;j++){s=d[j].substring(0,l=d[j].indexOf("["));
s=encodeURIComponent(s).split("%2B").join("+");
n=d[j].substring(l+1,d[j].indexOf("]")).split(".");
n=eval(n[0].split(",").join(""));n=(n-n%20)/20+(n%20>0);br();
for(i=0;n>i;i++){write("http"+"://youtube.com/results?search_query=");
write(s+"&search_sort=video_date_uploaded&page="+(i+1));br();}}br();
232:デフォルトの名無しさん
07/10/09 22:12:53
>>227-228
カットオフ周波数10Hzの1次HPFの場合、
ステップ関数のフラット部分は時定数0.016秒であっという間に指数減衰するね
233:デフォルトの名無しさん
07/10/09 22:13:06
デジタルピークメーターテスト用 -12db標準音量サンプル
URLリンク(www.barks.jp)
URLリンク(www.barks.jp)
URLリンク(www.barks.jp)
フリーソフトの音量確認用 ステレオ・デジタル・メーターを使おう
赤い●をクリックする 次にスピーカーマークをクリックする
標準のは-12dbぐらいで、-6dbを超えない様に音量調節する。
URLリンク(www.forest.impress.co.jp)
234:デフォルトの名無しさん
07/10/09 23:52:44
ageんなカス
235:デフォルトの名無しさん
07/10/30 09:04:46
あのー、非常に初歩的なことなんですが、
このページでバッファは441000bytesといいつつ441000*2bytes
確保しているのはなぜなんでしょう?
URLリンク(homepage3.nifty.com)
ただのミスだと思い、ループのところを
for ( i = 0; i < BUFSIZE/2; i ++ ) {
t = ( total / (BUFSIZE/2) ) * i;
と変えてみると、出力周波数が880Hzになってしまいますし。
236:デフォルトの名無しさん
07/10/30 10:57:38
ただのミスだと思うよ。 でもあなたの修正が間違っている
237:デフォルトの名無しさん
07/10/30 11:29:54
>>235
量子化ビット数が16だから3528000[bits]なら441000[bytes]だけれど、こう計算した方がわかりやすい。
44100[Hz] * 5[sec] = 220500[samples]
だから、#define BUFSIZE 220500 とすればいい。
238:デフォルトの名無しさん
07/11/01 04:02:20
リアルタイムのスペアナ表示を作りたい。
FFTしてlog(re*re+im*im)的なことをして振幅を対数軸にするのはok。
問題は、周波数軸を対数にしたいのだが、どうするべき?
低い方は補完なので適当にごまかすとして、高い方は間引いてしまうと情報が失われるのが
いやなので避けたい。
好みとしては、ピンクノイズ(-3dB/oct)を入力したときに表示がフラットになりたい
のだが(きっと聴感に近いので)
絶対値の和? 平均?
239:デフォルトの名無しさん
07/11/01 04:42:24
普通、Octave band pass filter bank をかけるかな。
240:デフォルトの名無しさん
07/11/01 06:44:19
>238
ロスしないってんなら最大使うとか。
241:デフォルトの名無しさん
07/11/01 07:50:06
>>238
前半、俺は、
たとえば5点あったら、その最大と最小と5個平均の3つを求めて
最大から最小への薄い垂直線を引いておいて
その上から平均を結んた線を引いてる。
こうやるとホワイトノイズでフラットになる。
ピンクノイズでフラットにするのは気持ち悪いように思うけど、
実現したいなら-3dB/Octの補正をかければいいのでは?
242:デフォルトの名無しさん
07/11/01 09:49:01
>>238
用途によると思うよ。
ピーク検出したいなら、ピクセルに対応するバンド内で最大値かな。
逆に荒く(1/6octとか1/3とか)で全体的な特性を見たいなら、両対数にしてからバンド内で
平均とか。ただその場合、各バンド内でデータのある周波数点に偏りが出る(バンド内で高域に
集まる)んで、平均した場合は必ずしもバンド中央の周波数での値にならないことに注意。
>>241
Windows Media Playerのバー表示がそんな仕様じゃなかったけか
243:デフォルトの名無しさん
07/11/01 13:47:13
>Octave band pass filter bank
なるほど、FFT以外のやりかたもあるのね。検討してみます。
ピンクノイズは各オクターブ(とかの対数で等間隔の帯域)のエネルギーの密度が等しいと
何かで読んだので、正しく計算すれば自ずとフラットになるのではないかと思ったのです。
でもどう計算するとそうなるのかわからない。
logとる前の絶対値かその2乗を足すか平均するかしたあと√とる?
244:デフォルトの名無しさん
07/11/01 14:07:08
> ピンクノイズは各オクターブ(とかの対数で等間隔の帯域)のエネルギーの密度が等しいと
> 何かで読んだので、正しく計算すれば自ずとフラットになるのではないかと思ったのです。
その考えで問題ないと思います。
こっちで実験したところ、ホワイトノイズのFFT値を1/3octで絶対値合計→フラット
> logとる前の絶対値かその2乗を足すか平均するかしたあと√とる?
バンド毎に log(sum(sqrt(re*re+im*im))) で大丈夫なはず。
DCTなら log(sum(abs(re)))
245:デフォルトの名無しさん
07/11/01 21:02:04
>こっちで実験したところ、ホワイトノイズのFFT値を1/3octで絶対値合計→フラット
ピンクノイズの、だよね。
ありがとう~
246:デフォルトの名無しさん
07/11/01 21:46:59
>>245
> ピンクノイズの、だよね。
いや、ホワイトノイズ
247:デフォルトの名無しさん
07/11/01 21:52:15
説明不足だったかも。すまん
フラットの意味によるんだけど、両対数軸上で直線って
意味なら>>245でホワイトでもピンクでもフラット。
直線かつ水平って意味なら>>245ではホワイトのみフラット。
248:デフォルトの名無しさん
07/11/01 23:22:35
直線かつ水平のつもりでした。>フラット
あいまいな言葉を使ってごめんね。
> 直線かつ水平って意味なら>>245ではホワイトのみフラット。
高域にいくにしたがって加算する数が増えるからホワイトノイズは右上がりに
なりませんか?
249:デフォルトの名無しさん
07/11/02 01:10:35
↑からさらに自分で考えてみた。
>>244 log(sum(sqrt(re*re+im*im)))
の方式で仮に1バンド=1octで出力することを考える。
1個上のバンドに行くに従って加算するデータ数が2倍になっていくわけだから、
結果は+6dB/octの右上がりになるはず。
問題は、ホワイトノイズを入れると+3dB/octの右上がりになってほしい。
sqrtとsumの順番を入れ替えると(sqrtを消して20→10でも等価)、
数が2倍になると3dB上がるので+3dB/octになる。
つまり、20*log10(sqrt(sum(re*re+im*im)))
最初に書いた、絶対値の2乗で足して平方根をとる、でいいみたい。
ピンクノイズの各バンドの平均値は1バンド上がると-3dBずつ下がっていくはず
つまり1/√2に減っていくはずで、これの2乗の次元(1/2ずつ減ってく)で
数が2倍になっていくものを合計していくと皆同じになるという理屈。
ちなみに、素直に(?)、ホワイトで水平、ピンクで右下がりにするには、
sumのところを平均にすればいいはず。
(1バンド上がるごとに2倍になる個数で割ったやつをsqrtするので、1バンド上がると
1/√2つまり-3dBさがっていく)
root mean squareってやつですね。
あ~すっきりした。
250:デフォルトの名無しさん
07/11/02 02:46:03
>>249
> 1個上のバンドに行くに従って加算するデータ数が2倍になっていくわけだから、
> 結果は+6dB/octの右上がりになるはず。
データ数が増えてもデータ値は高域に従って指数的に減っていくので、
よほど高域強調されてない限り合計しても右上がりにはなりません。
251:デフォルトの名無しさん
07/11/02 09:22:34
>>249
> sqrtとsumの順番を入れ替えると
平方根の合計と合計の平方根は別のものなので入れ替えられません。
平方根の合計 sqrt(1)+sqrt(2) = 1 + 2 = 3
合計の平方根 sqrt(1 + 2) = sqrt(3) = 1.732...
素直に 20log10(sum(sqrt(re*re+im*im))) で各バンド計算して
+3dB/oct補正掛けた方が実装の見通しも良くなるような。
252:デフォルトの名無しさん
07/11/02 09:47:43
まちがえた、20log10(ave(sqrt(re*re+im*im)))です。
あとsqrt(re*re+im*im)の部分は複素数の絶対値計算なので、
RMS以前のデータ準備の段階。|z|^2=re*re+im*im
RMSやりたいなら、|z|=sqrt(re*re+im*im)の各値の二乗平均平方根、
つまりsqrt(ave(|z|^2)) = sqrt(ave(re*re+im*im))にしないと変なことになる。
253:デフォルトの名無しさん
07/11/02 21:32:20
> データ数が増えてもデータ値は高域に従って指数的に減っていくので、
> よほど高域強調されてない限り合計しても右上がりにはなりません。
なんか根本的な勘違い? >自分
ホワイトノイズはデータ値が(確率的には)全部等しいと思ってたのですが?
> 平方根の合計と合計の平方根は別のものなので入れ替えられません。
もちろんそうです。計算方法を変えるという意味です。
> あとsqrt(re*re+im*im)の部分は複素数の絶対値計算なので、
> RMS以前のデータ準備の段階。|z|^2=re*re+im*im
> RMSやりたいなら、|z|=sqrt(re*re+im*im)の各値の二乗平均平方根、
> つまりsqrt(ave(|z|^2)) = sqrt(ave(re*re+im*im))にしないと変なことになる。
>>249でRMSといってるのは、 20*log10(sqrt(sum(re*re+im*im))) のsumを平均に
変えたもののことで、あなたの式と同じです。
254:デフォルトの名無しさん
07/11/10 11:42:09
CD-TEXT の規格か仕様か、これを読み込むサンプルのあるサイトか分かりませんか。
ぐぐる用語でも分かると助かります。お願いします。
255:デフォルトの名無しさん
07/11/10 12:00:14
>>254
REDBOOK
256:254
07/11/10 22:29:04
>>255
有難うございます。お陰で参考になりそうなのを1つ見つけました。
英語版で 1996/12月ソニーが配布したものですが、データ構造についても
書いてあるようです。
余談ながら、ソニーは普及させたかったような雰囲気。
添付のソフト(3本)用に VB4 runtime routine が付いている。
257:すみません素人です
07/11/20 11:00:15
最近卒研でDSK使って音声処理する実験始めたんですけど、
高周波や低周波だけカットするLPFやHPFのプログラム(C言語)を組んだんですが、
逆に高周波とか低周波だけ増幅させるプログラムって書けるんでしょうか。
本やネットではちょっとわからなかったので、式とかサイトとか知ってる人がいたらどうかお願いします。
258:デフォルトの名無しさん
07/11/20 11:10:17
カットしたのを元のに足す引く
259:デフォルトの名無しさん
07/11/20 12:28:09
>>258さんの通り、
高周波だけをカットした結果を元の信号に(遅延・位相を合わせて)足せば低周波だけ増幅出来るわけだけど
どうして、普通はカットしか書かないのかというと、
ゲインが1を超えると、固定小数点演算だとオーバーフローするし
そもそも出力DACのレンジを越えてしまうと歪ませるしかなくなるからさ。
260:デフォルトの名無しさん
07/11/20 12:43:36
>>257
増幅したいところ以外をカットして全体のゲインを上げる
あとは双二次で検索
261:デフォルトの名無しさん
07/11/20 12:58:40
まあ、あと、増幅は、ノイズまで増幅しちゃうしね。
262:257
07/11/20 15:41:55
なるほど、カットするプログラムを応用するんですね!どうりでみつからないわけです…
それではオーバーフローやノイズの問題も考えつつ取り組んでみたいと思います。
皆さん、丁寧なご回答ありがとうございました。
263:デフォルトの名無しさん
07/11/20 21:37:12
カットして増幅とか、カットしたのをもとに足す引くとかでなくて、
ローシェルビング、ハイシェルビングフィルタでしょ。
双二次にはちがいないけど。
いわゆるトーンコントロールのロー・ハイで一般的なやつね。
ブーストするんだから、振幅に気をつけなきゃいけないのは当然
264:デフォルトの名無しさん
07/11/20 21:52:08
>>263
内部的には同じことじゃね?
265:デフォルトの名無しさん
07/11/21 04:06:49
>>264
まぁこのあたりは言い方の問題も結構あって、カットって言った場合に
シェルビングEQによるカットなのか、ハイパス・ローパスによるカットなのか、
ここまでのレスでもみんなバラバラの前提で喋ってたりするからねぇ。
カットして増幅しても、ただ増幅しても、相対的なゲインカーブが同じなら同じで良いと思う。
(アナログだとレベルによる非線形性がからむんで違うって話になるけど)
ハイパス・ローパスでカットして増幅する場合は、
例えばハイパスの場合カットオフ以上が-6dB/octとかの傾きで一様に減衰していく。
対してローシェルビングで持ち上げる(orハイシェルビングで落とす)方法だと、
ある時点で減衰/増幅が頭打ちになるって違いがある。
チラ裏失礼
266:デフォルトの名無しさん
07/11/21 06:39:16
>高周波とか低周波だけ増幅させる
カットした結果と元信号の足し引きみたいなのは、位相や遅延を考慮しないといけないから
普通わざわざやらないよね?
267:デフォルトの名無しさん
07/11/21 07:09:13
でも、数式を良く見ればf0が同じなら分母は固定で、分子だけが違う。
で、分子の変数は3つなので、
HPF/LPF/BPFの3つの組み合わせで何でも作れる事になる
ただ、ピーク位置が違うので多少f0は調整しなければいけない。
268:デフォルトの名無しさん
07/11/21 07:58:32
HPFとBPFはLPFの組み合わせで作れるんじゃね
269:デフォルトの名無しさん
07/11/21 08:14:14
実は2次の同じf0の HPF+LPF+BPF を加算すると理論的にはフラットになる
もっとも、計算精度が有限だからノイズは出るけどね。
だから1-HPF は LPFではなくて LPF+BPFになる。
その場合の特性は -6dB/Octではなくもっと悪い(1次の特性に近い)
270:デフォルトの名無しさん
07/11/21 08:30:47
それシェルビング1っ個やるのよりメリットあんの?
271:デフォルトの名無しさん
07/11/21 08:37:47
特性を可変したい場合は実際に分割するけど(可変出来るのは特性の上下だけでf0は無理だけど)
固定なら単にIIR計算としては1個でやるよ?
係数を足し算するだけだし
272:デフォルトの名無しさん
07/11/21 09:08:45
3つのフィルタの係数を
gH*HPF + gM*BPF + gL*LPF
として、gH,gM,gL を調整すれば、イコライザの特性が出せる
分母は共通だから分子の係数を加算すればいい。
左右を上下させる場合、
gMは gH,gLの加重平均 gM = √(gH*gL) 程度がイーカンジ
バンドを調整する場合、綺麗にポコンと上下させるにはQも調整しないと
上下非対称に
273:デフォルトの名無しさん
07/11/21 09:50:47
言葉で動作原理を述べるのは簡単だが、それをプログラムで作るのが分からない。
274:デフォルトの名無しさん
07/11/21 11:35:53
藻前ら、先人の知恵はちゃんと活用しようぜ。
Robert Bristow-Johnson氏のCookbookの式を使えば、2次IIRフィルタ1個だけで
ピークEQもシェルビングEQも実現できるぞ。
URLリンク(www.musicdsp.org)
275:デフォルトの名無しさん
07/11/21 11:47:05
やっぱり、HPF+BPF+LPFの合成だね。 BPFは加重平均だ。
公式を見るだけじゃなくて原理が判ると多少楽しいよね。
276:デフォルトの名無しさん
07/11/21 13:02:41
>やっぱり、HPF+BPF+LPFの合成だね。
どーしてそうなる?
HPF+BPF+LPFの合成だと4次以上にならないか?
277:デフォルトの名無しさん
07/11/21 14:20:52
>>274
それが263とかがいってる双二次フィルタですよ。
先人の知恵どころか、いま話に出てるEQなどでいちばん一般的な方法かな。
わざわざフィルタ合成みたいな概念でやるなんて聞いたことないなあ。
278:デフォルトの名無しさん
07/11/21 21:33:53
>>276
合成じゃなくてフィルタ出力の加算のことを言ってるんじゃない?
lpf(bpf(hpf(x))) じゃなくて lpf(x)+bpf(x)+hpf(x) (式は適当)
普通合成っていうと前者だから>>275はかなり紛らわしいけど。
279:デフォルトの名無しさん
07/11/24 01:28:36
根本的なことを聞きますが、LPFを作成する場合、
・FIRフィルタを用いる(入力信号に対し、フィルタ係数を畳み込み計算することで
低域通過させた出力信号を直接求める)
・FFTを利用する(入力を一旦FFTし、通過させる帯域のみを保持し、
他はゼロ埋めさせたスペクトラムを逆FFTすることで出力信号を得る)
この2通りのやり方は理想的には全く同じ挙動になるのですか?
今までFIRを使ったやり方が原理的に良く分からなかったので、FFTを使ったLPFを
作成していたのですが(周波数帯域の通過が直感的によく分かるので)、
最近勉強しなおしてFIRフィルタについて学んだところ、
時間領域において計算するだけでそのまま出力信号が得られるのが
非常に不思議に感じ、質問させていただきました。
280:デフォルトの名無しさん
07/11/24 01:33:20
FFTのことも良く分かってないんじゃないの
281:デフォルトの名無しさん
07/11/24 01:34:01
何度もすみません。追記です。
もしそうであれば、両者の特徴として
FIRの方が処理速度が速いが、後者の方が精度が高い(遷移周波数帯域幅が狭い)結果が得られる
という認識であってますか?
282:デフォルトの名無しさん
07/11/24 02:14:06
FIRフィルタをFFTで高速計算させる事が出来るけど
それをやってるなら、そういう事は書かない筈だけどな
FFTでフィルタを作った場合、バッチ処理でやるかブロックで処理する事になる。
ブロックで処理するとブロック同士がつながらない問題が出てくると思うのだが・・・・
283:デフォルトの名無しさん
07/11/24 02:56:12
>>282
ヒント: MDCT
284:デフォルトの名無しさん
07/11/24 03:18:06
>>279
時間領域における入力信号とFIR係数列の畳み込み演算は、
周波数領域におけるFFTされた入力信号とFFTされたFIR係数列の各項乗算に対応する。
つまり時間領域でのFIRフィルタ係数をFFTしたのが周波数領域でのフィルタ特性。
> FIRの方が処理速度が速いが、後者の方が精度が高い(遷移周波数帯域幅が狭い)結果が得られる
FIRはn^2 FFTはnlognなのでFFTの方が速い。
周波数領域での直接設計なら遷移周波数帯域幅も何もスパっと切れるけど、
実際にはあんまり急峻に切ると時間領域のFIR係数の収束が悪くなって(要するに
Sincに近づく)、逆に打ち切り誤差が出やすくなったりして、そう簡単にはいかない。
285:デフォルトの名無しさん
07/11/24 09:01:03
>>283 MP3でやってるように1/2 づつ窓関数をかけてズラシテフィルタをかけた後で合成すれば誤魔化せる
という事なんだけどうけど、やっぱり低い周波数にひずみが出るけどなあ
286:デフォルトの名無しさん
07/11/24 11:06:17
「ズラシテ」フィルタってなんだろと思ったのは漏れだけでいい。
287:デフォルトの名無しさん
07/11/24 20:44:38
>>285
ヒント: Time Domain Alias Cancellation (TDAC)
288:デフォルトの名無しさん
07/11/24 23:33:29
ズラシテフィルタ=comb filter
289:デフォルトの名無しさん
07/11/25 00:15:00
>>288
面白いがこの流れでそれはないww
290:デフォルトの名無しさん
07/11/25 10:38:11
こういう事だろ? たとえばFFTのサイズを4096としたら
1024毎に分けて、1ブロック毎に、 2ブロックを取ってくる。
それに窓関数をかけるけど、このときに (1-cos)/2 みたいな 1ブロック分ズレたものと加算するとフラットになるような窓関数を使う。
で、これにFFTをかけてフィルタをかけて、逆FFTして、1ブロック前の分と加算して出力してゆく。
問題は、フィルタをかけて戻した結果が、はじめと終わりがキチンと0になって戻ってればいいけど
そうじゃないとこれがノイズになる。
だから再度窓関数をかけられるように 最初にかける 窓関数を √(1-cos)/2 つまり半角公式でsinになるわけだけど
これを2度かけると確かに戻るけど、窓関数としての性能がだいぶ悪くなる
291:デフォルトの名無しさん
07/11/25 13:16:44
>>290
短時間FFTだね。2回掛ける方法の場合、有名どころがsin窓とかVorbis窓。
でも、FFTサイズ4096なのになんで1024ずらしで使ってるの?
2048ずらしで十分だと思うけど
MDCTで使われるTDACは、処理ブロックを重ね合わせるまで同じだけど、最初の段階で、
重ね合わせた部分でプリエコー・ポストエコーが最終的に相殺されるように処理するのが違う。
292:デフォルトの名無しさん
07/11/25 13:21:33
あ、あと、窓関数の性能が悪いっていってるけど、
目的に合わせたトレードオフだから、一概に良い悪いは言えないと思われ
周波数分解能なら矩形窓最強ってことになる。
293:デフォルトの名無しさん
07/11/26 00:51:35
音響レンズのシミュレーションをしてみようと思うのですが
どこから手を付けていいのやらわかりません
294:デフォルトの名無しさん
07/11/26 00:56:29
いまの話では用途が解析じゃないから、矩形窓はありえないでしょうけど
295:デフォルトの名無しさん
07/11/26 01:23:37
用途以前にまず何の性能か言わないと意味無い
296:デフォルトの名無しさん
07/11/26 19:59:27
AGC、オート・ゲイン・コントローラが必要で、Waves MaxxVolumeは高くて
買えないため自作(VSTでもオフラインでも)しようかと思うんですが、
原理としては固定ゲイン+超長アタック/リリース(10秒~)の
先読みリミッタという理解で正しいでしょうか?
297:デフォルトの名無しさん
07/11/26 21:38:30
AGCってけっこう大雑把な呼び名で、
単にゲインアップ+リミッターだったり、RMSコンプ+リミッターだったり、
もっと別のアイデアが入っていたり、、、いろいろのような
思うように作ったらいいんでは。
ある程度まともなの作るなら先読み(リアルタイムなら出力の遅れだけど)は必要だろね。
ま、フリーのコンプやリミッターもいろいろあるけどねえ。
298:デフォルトの名無しさん
07/11/26 23:35:05
どこで質問すればいいか分からなかったので、ここで質問させてください。
フーリエ変換の本を読んで、自分もWAVEファイルを読み込んで試してみたいと思ったのですが、
肝心のプログラミングがさっぱり分かりません。
Turbo C++でやろうと思っているのですが、WAVEファイルの読み込み方も、読み込んだデータの処理の仕方も
実際にFFTを行う方法も全然分かりません。
C++自体の使い方は基本的な命令文は知っていますが、マルチメディア関連はやったことがないです。
実際のプログラミングの仕方や、参考になる本など教えていただけたら幸いです。
299:デフォルトの名無しさん
07/11/27 00:00:52
あきらめたら?
300:298
07/11/27 02:06:25
ありがとうございました。もうあきらめます。
301:デフォルトの名無しさん
07/11/27 03:05:16
waveの読み込みぐらいgoogleに聞いてみればいいのに
302:デフォルトの名無しさん
07/11/27 03:32:44
URLリンク(www13.plala.or.jp)
303:デフォルトの名無しさん
07/11/27 03:46:57
釣りだろ? jk
304:デフォルトの名無しさん
07/11/27 06:14:46
>>297
TDの最後で、全体の音量をオートメーションで調整していくのが面倒、
というのがあって、楽したいなぁと思いまして。
とりあえず先読みリミッタ式で作ってみたところ、やはりレベルの急な変化にはついて
いけないことが多いですね。かといってアタックを短くすると数秒のポンプになりますし。
大雑把に手動調整、細かいところは自動調整って形で運用してみます。
ありがとうございました。
305:デフォルトの名無しさん
07/11/27 09:15:55
もしかしてみなさんはFIRだのFFTだのと言った物は既成の物があってそれを利用しているのでしょうか?
306:デフォルトの名無しさん
07/11/27 10:03:54
>>305
定番もののソースはどこにでも転がってる。流用してるやつもいるだろうよ。
307:デフォルトの名無しさん
07/11/27 11:22:13
パソコンの場合、転がってるのを使ってもいいし、自作しても何倍も速度が違わない
DSPなんかの場合、メータが必死ならFFTのライブラリなんかも公開してくれる
そうでないと当然、自分で作りこまないといけない。
308:デフォルトの名無しさん
07/11/27 13:08:48
理系じゃない高校生ぐらいの数学知識でフーリエの冒険読んでみて5日くらいでFFT書けたよ。
多少あやふやなとこもあったけど。
ただしゲーム作れる程度のC言語の知識はあった。
実際にやってみて詰まったところ質問しないと意味ないよ。
309:デフォルトの名無しさん
07/11/27 14:34:09
社会人になってだんだん時間なくなって、ライブラリ探すところから
始めるようになった。どうしても無かったり、仕様がゴミだったら自分で書くけどね。
目的が、使いたい機能を最小の手間で作る(で、使う)、になってるからなぁ。
310:デフォルトの名無しさん
07/11/28 15:41:45
>>308先生
そのFFTソースを開示してください
ついでに chirp-Z transformも作ってください
311:デフォルトの名無しさん
07/11/28 21:32:36
単にFFTを使いたいだけだったら(プログラム作成が目的でないのなら)
Scilab か GNU Octave を使ったら?
FFT機能は標準装備だし、確かWAVファイルの読み書きも出来たはず。
312:デフォルトの名無しさん
07/11/29 00:00:55
まそれいっちゃうと他にも選択肢はたくさんあるけどな。
Mac OSなんかはSIMD使ってアクセラレートされたFFTライブラリが標準で提供されてたな。
313:デフォルトの名無しさん
07/11/29 03:37:54
FFT(笑)
314:デフォルトの名無しさん
07/11/29 04:39:36
308じゃないが、だいぶ昔に書いたFFTのコードとサンプルアプリをようやっと発掘してきたが・・・そういう空気じゃないなw
315:デフォルトの名無しさん
07/11/29 10:09:13
FFTのライブラリって結構いっぱいあるけど
定番とかオススメってある?
316:デフォルトの名無しさん
07/11/29 10:19:50
定番は自作。
オススメも自作。
FFTそのものは20行もあれば書ける。
ビット逆順とか入れても40行。
面倒だったり頭を悩ませるのはソコじゃない。
317:デフォルトの名無しさん
07/11/29 10:35:29
FFTで有名な場所
URLリンク(www.kurims.kyoto-u.ac.jp)
Delphiなら
URLリンク(pc.2ch.net)
ここの207以後。
318:デフォルトの名無しさん
07/11/29 11:58:53
完全自作にこしたとはないけれど、
十分な完成度というか性能というか(速度面とか)出すとこまで含めると、
それなりに時間と労力いるよね?
そこまでコミットできないし、結果が得られれば良いヘタレな俺は
やっぱりライブラリ活用でし・・・
(でもそのためのライブラリ
319:デフォルトの名無しさん
07/11/29 12:14:43
コード見れば判るだろうけど、
FFTそのものの速度はチューニングしてもしなくても2倍も違わない。
というかチューニング出来る要素はそんなにない。
仮に2倍違ったとしても、パソコンの場合、それでどうしたのって程度の差でしかない。
リンク先のように最大の素数を求めてるとかならともかくさ
320:デフォルトの名無しさん
07/11/29 12:30:14
SIMD化するだけで数倍速くなるよ。
ただ、PC上での話なら5年前のCPUですら素のサンプルをそのまま使っても十分な性能出てたけどね。
321:デフォルトの名無しさん
07/11/29 17:26:14
Delphi使いがこのスレにたまにいるようだけど、Delphiでサウンドプログラミングなんて邪道だろ
322:デフォルトの名無しさん
07/11/29 20:53:08
ナンセンス
好きなの使えばいいじゃないの
323:デフォルトの名無しさん
07/11/30 00:00:45
FFTで何をするか、に興味がある
FFT実装には興味ないなぁ
324:デフォルトの名無しさん
07/11/30 01:52:15
Playerでグラフィックイコライザみたいな
棒グラフがぐにゃぐにゃ動く画面は
リアルタイムにFFTしながら描画してるのでしょうか?
325:デフォルトの名無しさん
07/11/30 02:43:33
そうですけど
326:デフォルトの名無しさん
07/11/30 12:15:32
MP3の場合、FFTというかある程度の周波数情報は復調時に得られるのかも
あと、グライコそのものはFFTでやるより、バンドパスや同調(Q無限大の)フィルタでも負荷量は
バンド数によっては小さい。
327:デフォルトの名無しさん
07/11/30 17:10:11
きっちりと理論の実装をするのが得意なやつもいれば、
理論はそこそこ、それらを利用したアプリケーションとか書くのが得意なやつもいるよな。
あんがい両方に長けてるやつって少なかったり
328:デフォルトの名無しさん
07/11/30 21:46:30
糞文系が理系を支配する構図ってやつ
329:デフォルトの名無しさん
07/11/30 23:31:49
>>326
低域で精度を得ようとするとタップ数が増えるからFFTというかFIR系はつらいね…
グライコならフィルタした音聴くわけじゃないし、パワーだけ得られればいいから
位相回りまくってもIIR系で急峻に落とす方が計算量としては少なそう
>>327
正しい分業の姿ですな
330:デフォルトの名無しさん
07/12/01 02:39:10
>328
327は本来両方とも理系の担当分野だと思うけどな。
つか文系は基本的にある程度以上の国家資格持ってるのならともかく大半は高卒の方がマシな連中だからな。
331:デフォルトの名無しさん
07/12/01 02:58:11
文理ではなく理学と工学の関係に近いかな
332:デフォルトの名無しさん
07/12/01 03:17:09
学の無い人は壁を作りたがる
333:デフォルトの名無しさん
07/12/01 05:27:54
理系は文系をカバー可能だが
文系で理系をカバーできないやつは使い物にならない
しかしそういうのに限って
他人だまして金儲けるのだけはうまかったりする
でスレ違いな訳だが
334:デフォルトの名無しさん
07/12/01 06:18:12
理系でも文系でもいいけど
こんなところでストレスぶちまけないでよw
335:デフォルトの名無しさん
07/12/02 15:29:45
社会を支配しているのって文系の奴ら何だからね。
336:デフォルトの名無しさん
07/12/03 02:45:02
FFTSSってのがあるな
暫くこれ使わせてもらおう
337:デフォルトの名無しさん
07/12/03 05:59:45
大浦氏のCのやつをラッパークラス書いてC++で使ってる
338:デフォルトの名無しさん
07/12/05 10:53:18
グライコならラジオの原理で言う、超再生方式が比較的効率がいいよ
表示だけなんだから処理時間が足りないなら間欠的にやればいいわけだし
339:デフォルトの名無しさん
07/12/05 12:54:29
IIRのバンドパスとかとはどうちがうの?
(グライコって、スペアナでしょ
340:デフォルトの名無しさん
07/12/05 13:14:43
ああ、スペアナだな。 みんながグライコって書いてたから勘違いしちゃった。
IIRでいえばバンドパスではなくて分子が1でQが無限大のLPF
つまり、サイン波ジェネレータに使う構成があるでしょ?
分子が1だから掛け算の回数がそれだけ少なくなる。
バンド幅は検出時間で調整する。 つまり低周波程周期に比例して長くする。
341:デフォルトの名無しさん
07/12/05 13:18:05
ただ、間欠的にデータ取るから窓関数は必要。だからそれも足したらバンドパスと変わらないけど
間欠的にデータが取れるから処理時間が余った時だけとかの調整が可能なのが有利。
バンドパスでも間欠的にデータ取れるけど、その場合だって結局窓関数かけないといけないから。
342:デフォルトの名無しさん
07/12/06 01:19:10
バンドパス
窓とかかけないでも、低いほうの周波数帯だったら
1サンプル飛ばしでsr半分として、2サンプル飛ばしでsr1/3として、みたいなかんじで
計算すりゃよくない?
あくまで精度は重要でなくて、少しでも軽く処理したいって前提だけど
343:デフォルトの名無しさん
07/12/06 01:40:20
あぁでもエイリアスひろっちゃうかな、、
344:デフォルトの名無しさん
07/12/06 09:04:42
b0 + b1*z^-1 + b2*z^-2
------------------------
a0 + a1*z^-1 + a2*z^-2
BPFの分母は b0=-b2,b1=0 か b0=-b1,b2=0(こっちは特性が悪いから普通は使わない)
だから計算量が b0=1, b1=b2=0 に比べて極端に悪いとは思えない
345:デフォルトの名無しさん
07/12/09 02:20:33
マルチバンドコンプ用に帯域分割フィルタを作りたいんだけど、
線形位相・完全再構成な不等分割フィルタバンクの設計法を調べるので方向性合ってる?
346:デフォルトの名無しさん
07/12/09 02:29:32
>> 279
>> 345
オープンソースのがすでにあるぞ。車輪の再発明はやめなはれ。
URLリンク(freeverb3.sf.net)
FIRのLPF/BPF/HPFとかも入ってるみたい。
347:デフォルトの名無しさん
07/12/09 02:39:55
JWAVEを聴きながらVeohを見てみた
URLリンク(youtubetv.atspace.com)
348:デフォルトの名無しさん
07/12/09 11:36:04
>>336
FFTSSはライセンスがGPLじゃないんだね。
上記の著作権情報をソース/バイナリどちらであっても
含めないといけないとあります。
ダウンロードに名前とemailと目的まで入力か...
349:デフォルトの名無しさん
07/12/09 15:41:18
>>346
ども。参考にするよ。FFTとかFIRの仕組み自体の実装には興味ないんだけど、
設計法は勉強したいと思ってて、そのあたりは結局のところ自分で作らないと
勉強にならないから自分でやるよ。
ちなみに、車輪の再発明って物事の実現効率しか見てなくて、
逆に学習とか、車輪の再発明そのものが必要になる場面もあったりする。
ツッコミいれるときはその意図に注意した方がいいかも。
(今回はそのあたりの前提を言ってなかったんですまんかった)
350:デフォルトの名無しさん
07/12/09 17:15:08
学習目的のそれは、再「発明」とは違うんじゃないかな。
再開発とか再実装あたりが適切じゃないかと思う。
既存の発明の情報を得て、理解した上で実際にやってみるって作業でしょ。
再発明ってのは、まだどこにも存在してないと思い込んで、既存の発明を参考にせずに一から自分で作る話。
実装とか設計以前の着想とか発案から始めて、先人達がとっくに解決したような問題で延々悩むことになる。
まず調べろ、ってこと。
351:デフォルトの名無しさん
07/12/09 17:52:01
>>350
車輪の再発明、ってのは単に言い回しでそうなっているだけで、
最初から>>350の言う厳密な発明よりも広い、開発をも含む意味で使われてるよ。
ほぼ同じ文脈で使われるNot Invented Here症候群(自前開発以外を採用しない)の場合も、
厳密な発明って意味の他に開発の意味も含むし。
とりあえず、バタワースあたりの振幅特性だけもってくる直接設計法で
一番上のバンドで誤差吸収ってのを考えた。
352:デフォルトの名無しさん
07/12/09 20:43:06
>> 345
CiNii - 線形位相完全再構成不等分割フィルタバンクの設計
CiNii - 線形位相完全再構成不等分割FIRフィルタバンクの設計
論文みたいだね。やくにはたちそう:)
353:デフォルトの名無しさん
07/12/09 22:09:36
>>352
ありがとー! 論文は読み慣れてる(分野違うけど工学系)んで問題ないです。
FIRの方をざっくり読んだけど、他の方法で漸近的に設計しておいて
最後の1or2バンドで補償してる感じかな……。
354:デフォルトの名無しさん
07/12/28 04:01:10
>>293
音響レンズってなんだ??
355:デフォルトの名無しさん
07/12/28 04:03:00
すまん自己解決
(問題-18)
音響レンズとは何か。
どんな機能を果たしているのか。
どんな材質で出来ているのか。どのような特性があるのか。
--------------------------------------------------------------------------------
(解答-18)
音響レンズとは探触子の圧電素子より前面に配置してある構造体で、音波を収束させる目的を持つ。
生体での音速に比べ遅い音速約1000m/secのシリコンで出来ている。
凸面形状をとることにより探触子から出た超音波を収束させることが出来る。
もし、音響レンズに生体より早い音速を持つ物質を使用した場合は
凹面形状をとらないと探触子から出た超音波を収束させることが出来ない。
356:デフォルトの名無しさん
08/01/03 16:51:20
DSPの経験が全くないのですが、2nd order Butterworth lowpass filterの、カットオフ周波数(1)での、ある周波数(2)の入力の位相の変化ってどうやったら求められますか?
ディレイのフィードバックで発振させて、フィルター入れたらピッチが変わって音痴になってしまいました。位相ズレ分のディレイを補正したいんです
357:デフォルトの名無しさん
08/01/04 07:24:01
普通はZ変換にw*i を突っ込めば出ますが?
でもディレイ入れるだけでピッチが変わるって・・・・何かその前にお間違えでは?
358:デフォルトの名無しさん
08/01/04 12:35:24
サウンドプログラミングって面白いね!
359:デフォルトの名無しさん
08/01/10 00:29:29
PCM出力用のバッファからリアルタイムでスペクトルを取得する為に
自分でコーディングしたFFTに short(signed 2bytes) 要素数65536 を処理させたんですが、
頑張っても 0.22 秒ほど掛かってしまうようです。
車輪の再発明をするのもあれなので、「FFTをするなら普通はこれを使う」といった手段、
例えばもっと高速に動作する既成dllやライブラリなどは無いでしょうか?
360:デフォルトの名無しさん
08/01/10 00:50:34
速度を求めるならfftw
俺は呼び出しの簡単さ優先なんで大浦氏のFFTライブラリ
(それでも自分で書くよりも断然速い)
361:デフォルトの名無しさん
08/01/10 03:08:34
fftwなら、MKLにも同梱されているしちょっとした修正でCUFFTにも移植可能だし、
使っている人が多いと言うのも魅力だね。後は、2の冪に縛られずに済むのも手抜きにはいい。
362:デフォルトの名無しさん
08/01/10 07:21:11
>>359
整数ではなく浮動小数点でデータを与えた方が変換時間が短いと思う
もっと少ないサイズでやるなら固定小数点も考えられるけど、2^16個では固定小数点では無理
あと、そもそも1秒分以上のサンプリングデータを0.22秒で処理出来ているのだから十分高速だと思うよ。
スペクトル表示が目的なら 4096か8192点で十分でしょ。
363:デフォルトの名無しさん
08/01/10 07:22:50
>>359 SINのテーブルや、ビット反転アドレスなんかのテーブルは事前に作ってるんだよね?
これを毎回作ったり、sinを毎回計算させてたら遅いよ
364:デフォルトの名無しさん
08/01/10 08:34:20
>359
この手の最適化話するならマシンスペックと施した最適化くらいは書いとけ、といつも思う。
365:デフォルトの名無しさん
08/01/11 00:37:22
>>363
>これを毎回作ったり、sinを毎回計算させてたら遅いよ
CUDAなら毎回計算した方が早い罠。
366:デフォルトの名無しさん
08/01/12 13:05:31
OpenALを使って3Dサウンドをやってみたいのですがググって見ても断片的なblogの記事くらいしか
日本語資料が見つかりません
どなたか日本語の各種ドキュメント、書籍等をご存じの方がおりましたら教えていただけると助かります
よろしくお願いします
367:デフォルトの名無しさん
08/01/12 14:12:10
>>366
URLリンク(www.google.co.jp)
368:デフォルトの名無しさん
08/01/12 17:23:21
義務教育受けてないなら諦めろ
受けてるならなんとかなる
369:デフォルトの名無しさん
08/01/13 15:41:44
ジュニアハイスクールレベルの英語教養を舐めるなよ
370:デフォルトの名無しさん
08/01/13 16:12:26
大丈夫、いみじくも「ジュニアハイスクール」と呼ばれるところに行っている生徒程度の英語教養があるなら。
371:デフォルトの名無しさん
08/01/15 13:08:52
フェーズメータを作成しようと思うのですが、知識が無くて
困っています。参考文献や参考になるサイトがあったら教えてください。
372:デフォルトの名無しさん
08/01/15 13:19:09
フェーズメータって事は、サイン波オシレータと
そのオシレータとの位相差を表示したいって事?
それをどういう環境で作りたいの?
パソコンの場合、ディレイがハード毎に違うし、そもそも出力と入力が同じサンプルクロックとは限らないから
2CH 入力して 出力を L/Rのどっちかの端子から入力させて位相を比較するとかじゃないと
汎用性が無いだろうな
位相の測定は出力オシレータを90度位相差が出る sin/cosのベクトル積型にしておいて
sin/cos成分との掛け算で出すのが一番簡単だと思うよ
373:デフォルトの名無しさん
08/01/20 13:17:27
>>372ありがとうございます。
"sin/cosのベクトル積型"というのはどういう
事なのでしょうか。すみません馬鹿で。
374:デフォルトの名無しさん
08/01/20 16:23:40
LRでリサージュ描くんじゃだめ?
URLリンク(ja.wikipedia.org)
(なんか根本的に勘違いしてたらごめん。)
375:デフォルトの名無しさん
08/01/21 09:42:03
ベクトル積じゃなくて回転行列との掛け算だろう
| c , s |
|-s , c |
376:デフォルトの名無しさん
08/01/25 01:10:48
( ゚д゚)ノ ハイ!シツモンデス!
文書では上手く説明できないと思ったので、グラフ描きました。
URLリンク(www-2ch.net:8080)
デジタルオーディオのミキシング用に、IIRフィルタを掛けて目標の周波数帯域を取り出そうとしています。
また、リアルタイムに取得する周波数帯を変更していく予定です。
そこで、まずはsin波形で色々と試しているところなのですが、
現象の呼び名が分からないので検索できませんでした。
グラフを見て頂いて、問題箇所を確認してもらえるでしょうか。
① IIRフィルタを掛けた場合、波形が後方へズレる?と思いますが、これは正しい現象ですよね?
その場合、ズレ幅はなんと呼ばれるのでしょうか?
また、その幅をIIRの係数か何かから事前算出できるものなのでしょうか?
② また①のズレ幅ですが、周波数によって変わると思うのですが、これは正しい現象でしょうか?
③ フィルタの開始、終了時に不安定?になる区間があると思いますが、これを排除する事は可能でしょうか?
また、区間の長さを事前算出できるものなのでしょうか?
④ グラフにはありませんが、IIRフィルタの係数を徐々に変更した場合、
例えば low-pass の通過帯域を 100hz → 1サンプルづつに+1 → 1000hz と変更し、
リアルタイムに取得帯域を変更した場合、正しく計算できるものなのでしょうか?
宜しくお願いします。
377:デフォルトの名無しさん
08/01/25 01:38:35
位相という言葉すら知らずにいきなりデジタルフィルタに手を出す時代なのね・・・
378:デフォルトの名無しさん
08/01/25 02:49:15
馬鹿は際限無く馬鹿ということ
379:デフォルトの名無しさん
08/01/25 03:25:54
>>378
とりあえず、位相と窓関数とRBJAudioEQCookBookとピーキングフィルタとウェーブレット
を愚ぐれ。
しかし位相も知らずにIIRとかどうやって知ったんだろ...。
380:デフォルトの名無しさん
08/01/25 05:00:54
>>379
>>>378
>>376
381:デフォルトの名無しさん
08/01/25 09:12:27
>>376
IIRフィルタに限らずデジタルフィルタは Z変換して、そこにe^(iw) をぶち込むと
周波数特性が出ます。
周波数特性は、 複素数の絶対値がゲインで、複素数の角度が位相です。
だから、貴方がやるべきことは、Z変換を理解する事です。
それには複素数を知らなければいけませんし、
そのついでにラプラス変換とフーリエ変換も勉強しないといけません。
その後でしたら説明出来ますが、今は説明が難しいです。
382:デフォルトの名無しさん
08/01/25 09:16:58
なお、最後の質問は、Z変換を理解した段階でも、まだ答えるのは難しい問題です。
実用的には十分ゆっくり変更するなら大丈夫ですけどね
383:376
08/01/25 22:19:20
>>377
>>379
SCILAB使ってます。便利な世の中です。
>>381
とりあえずz変換を勉強中です。
今のところ、離散時間信号から複素数平面への写像と捉えてます。
まだ複素数平面状で何ができるのか勉強不足なので、相違のズレが(言葉遣いあってます?
なぜ発生するかは理解してませんが。
>>382
リアルタイムにグリグリできるパラメトリックイコライザっぽいものを
作ろうと思ってるんですが、もしかして使う手法を間違ってます?
>>378
罵倒するのはいいけど、せめて1単語でもヒント書いてよ
でないと、オレと同階層の住人。
384:デフォルトの名無しさん
08/01/25 22:21:14
>>381 相違のズレ>位相のズレ
“そうい”ってなんだよオレ...orz
385:デフォルトの名無しさん
08/01/25 22:55:33
>>384
僧衣でググれ
386:デフォルトの名無しさん
08/01/25 23:18:18
まあ、なんだ。せっかくのスレなんだしギスギスしないでも...
>>376
キーワードは「直線位相」だ。
387:デフォルトの名無しさん
08/01/25 23:29:40
>>383
プログラミングの現実的な側面から言うと、
4)1サンプル毎に変化させるような仕様は事実上不必要かと
本当に1サンプルの時間精度で制御したいなら別だけど。
実際問題として、たとえばVST plug-inならDAWによるが
数千~数万サンプル単位で波形データが渡される。
# 丸数字はやめて……
オフライン処理なら意味のある仕様かな。
その場合は1ステップ毎に係数書き換えで済むような気がする
キーワードとしては、後は群遅延とかかなぁ。
388:デフォルトの名無しさん
08/01/26 03:37:28
>>383
パライコっぽいってことはパライコとは微妙に違うの?
1サンプルごとになぜ係数を変えるの?
単にパライコなら379に書いてあるように、RBJAudioEQCookBookの係数を使って
複数のピーキングフィルタを実装してつなげればできるけど。
389:デフォルトの名無しさん
08/01/26 08:36:43
>>383
Z変換して複素数を突っ込めば、位相のズレが起きるのは当然と判る
位相のズレを起きないようにするには、虚数成分がゼロにならなければならない。
それには、分母が(1+aZ+...)なんてなってると分子が同じ係数、つまりフィルター
でない状態でなければ無理。
パラメトリックイコライザなら1サンプル毎に係数をゆっくり変更するので合ってる。
ただ、IIRの場合、その係数の変更途中で分母のゲインが変わってくるから
構成方法によっては更新速度の影響が出て来る。
でも、実用的には、ひたすらユックリ変更するという事で逃げればいい。
390:デフォルトの名無しさん
08/01/26 13:26:38
よくわかってないんだけど、1サンプル毎に係数をゆっくり変更と言ってるのって、
パライコのフェーダー操作したときの話?
391:デフォルトの名無しさん
08/01/26 13:48:51
グリグリって書いてるじゃん
392:デフォルトの名無しさん
08/01/26 17:55:34
そういえばというか、
IIRが係数を急激に変化させたとき不安定になるのって
遅延器内の値も適切に補正できれば回避できたりしないかね?
393:376
08/01/27 17:49:43
みなさん、ありがとうございます。キーワードを参考に、ネット記事と書籍を読みふけってます。
>>386
「直線位相」でググるとFIRの記述が多く見つかりましたが、IIRにも同様の内容があてはまるのでしょうか?
現在、複素数平面とかに関して勉強してるので、そのうちにでてくる気もしていますが・・・
>>387
オフライン処理になるとは思いますが、上手くいけばリアルタイムも考えてます。
それも担ってステップが少ないIIRを選んだのですが、間違いだったかな。
「群遅延」とは周波数全体の位相が同時にズレるという認識であってますか?
一応、サイトとかまわってみたのですが、どうもシックリくる説明が見つからなくて困ってます。
>>388
説明不足でした。スミマセン
パライコのように目標の周波数を引き上げるのではなくて、その周波数帯を取り出したいんです。
さらに、その帯域をリアルタイムでグリグリと移動させたいなと考えてます。
なので、ピーキングではなくてバンドパスを組み合わせたいのですが、
バンドパスさせた複数の波形をそのままミキシングすると波形が壊れてしまったので、問題と原因を探してるところです。
# 根本は数学を分かってないところが大問題なのですがw
↑改行制限で分割されました↓
394:376
08/01/27 17:50:14
>>389
>構成方法によっては更新速度の影響が出て来る。
この影響範囲(時間?)を事前に算出するような事は可能なのでしょうかあ?
# まぁ、今の僕にはできないとしてw
勉強を進めていくうちにできるようになるのか、現実的に不可能なのかだけでも教えてもらえると助かります。
>>390-391
中心周波数をリアルタイムでグリグリと変更して取り出したいと考えてます。
グライコのようにピークを線形移動させるというイメージです。
十分なサンプリングレートが取れていれば、ゆっくり係数を移動させる事ができそうなので、その方向で考えてます。
25Hz -> 20kHz へ1秒で移動の場合、44.1kHz/secで1サンプル +22.32Hzの変更となってしまいますが、
まぁ、ここまで過激な対応が可能かどうかは別として。
>>392
急激な移動が起こる各バンド帯を並列で計算しておいて、移動時に遅延させるという事でしょうか?
395:デフォルトの名無しさん
08/01/27 18:04:37
FIRの場合は遅延を入れただけの信号に対しての直線位相となる。
つまりZ^n で割った時に、
Zに複素数を入れた結果の虚数成分が常に0である必要がある。
だから、分母に遅延要素以外がある IIRでは直線位相は実現出来ない。
直線位相でなければいけないのならFIRにするしかない。
しかし、FIRで25HzのBPFなんて作ろうとしたらどれだけタップ数が必要か
しかもそれをリアルタイムにf0を更新しようとしたら、まあ無理。
やるとしたらFFTで計算させるしかないね。
常にそういうスイープするなら、
FFTで時間引き伸ばしパルスなんて作るといいのかも
とりあえず、どうして直線位相でなければいけないのか
どういう用途か判れば、アドバイスしてくれる人がいるのかも
396:デフォルトの名無しさん
08/01/27 20:37:53
>>393
>「群遅延」とは周波数全体の位相が同時にズレるという認識であってますか?
簡単にいうと、(位相遅れによる)各周波数での遅延時間。定義は位相遅れの周波数微分。
(全体で一つの群遅延ではなく、周波数毎に群遅延値が出てくる点に注意)
位相遅れ量が等しくても、周波数によって波長が変わるので遅延時間は変化する。
波長によって遅延時間が違えば当然波形が歪むので、それをチェックするために群遅延を使う。
で、周波数-位相遅れのグラフが直線になる場合を直線位相といって、
グラフが直線→位相遅れの周波数微分が一定→遅延時間(群遅延)が
全帯域で一定→波形が壊れない→(゚Д゚)ウマー
397:デフォルトの名無しさん
08/01/28 06:15:24
いまいち何を実現したいのかがわからないな。
FFTして取り出したい帯域をぶっこぬくのじゃだめなの?
目的は解析?それとも音色?
398:デフォルトの名無しさん
08/01/29 11:15:19
>バンドパスさせた複数の波形をそのままミキシングする
といってたから直線位相なんじゃまいか。
>ミキシング用 >グリグリ
ということだからVSTエフェクトでも作りたいんだろうとは読み取れるけど。
まここはDTM板じゃないので、住人も幅広く
絞って説明しないとわかってもらえないときあるかもね
単にグリグリだったらIIRのバンドパスで
f0急激に変化しないように制限すれば良さそうだけど、
複数の周波数帯取り出して合成しなきゃいけないんなら、FFTが現実的かもね。
ただこの場合はグリグリするにも周波数方向の分解能は制限をうけるから
なめらかさは犠牲になるかなあ。
399:デフォルトの名無しさん
08/01/31 20:49:43
DFTおよびFFTのプログラムを作ってみたのですが
DFTとFFTで結果がまるで違います。
しかし両方とも逆変換をすると、元の値に戻るのは確認したので
計算はあってると思うのですが、さっぱりわかりません。
実験は以下のようにやってみました。
・元信号をsin関数で作って配列Xに入れる
・XにDFTおよびFFTをかけたものを配列Fに入れる
・FにIDFTおよびIFFTをかけたものを配列Yに入れる
・XとYの実軸の値はほぼ同じ。
虚軸に誤差と思われる値が入っているのは確認しています。
何か誤差が発生していたりするのでしょうか?
400:デフォルトの名無しさん
08/01/31 23:20:47
Σsin*Xn で求めたものと FFTで求めたものでは 誤差の種類は違うよ。
80bit浮動小数点で計算してる?
64bitのdoubleだと結構4096点くらいでも気になる誤差だよ。
でも計算があってるかどうかは、サイン波を合成したのを入力してみればいいと思うのだが?
401:デフォルトの名無しさん
08/02/01 05:32:14
まさかとは思うが
DCTとFFT比較してたりしないよな
402:デフォルトの名無しさん
08/02/01 14:58:25
レス下さった方には申し訳ないのですが
もっと初歩的でした。
振幅と位相の計算をしてませんでした・・・
結果がまるで違うように見えたのは
有効数字やcos、sinなどの関数の誤差によって
あまり関係の無いパラメータが変動しているためでした。
無事FFTの計算はできるようになったので
いろいろやって見ようと思います。
ありがとうございました。
403:デフォルトの名無しさん
08/02/02 02:47:09
すみません質問です。
ステレオでLRの位相を90度ずらすと、左右に音が分離して聞こえますが、
この左右に離れている音の位置間隔を中心寄りに縮めるには、どうしたらよいのでしょうか?
0~90度の間で左右の位相幅をいじっても、90度近くないと結局音が分離したようには聞こえず、
90度近いと逆に左右に音が離れすぎてしまいます。
LRのパンニングではなく、コーラスとしてステレオ感を調節するエフェクターを実装したいのですが、
良い実装方法などありましたらご教授ください。
404:デフォルトの名無しさん
08/02/02 03:13:36
MSバランス
405:デフォルトの名無しさん
08/02/02 07:27:20
位相を弄るんじゃなくて、遅延時間を弄る方がいいと思うよ。
ただ、遅延時間をスムースに変更するのは
・100タップくらいのFIRの係数を多数用意しておく
・あらかじめ高域をカットしておいて6タップくらいのFIRで1/2遅延と按分
・内部で4倍くらいオーバーサンプリングして//
あと、遅延時間だけでは移動感が出ない。音量も変更しないと
406:デフォルトの名無しさん
08/02/02 18:05:08
音楽から和音抽出ってむずいねw
407:デフォルトの名無しさん
08/02/02 18:50:35
フーリエ変換すれば何とかならんこともない
408:デフォルトの名無しさん
08/02/02 18:58:37
そんなもんで出来るんなら苦労しないわ。
和音抽出するには、まず識別する事が必要。フーリエ変換だけじゃ無理。
409:デフォルトの名無しさん
08/02/02 20:17:04
倍音が邪魔だし
410:デフォルトの名無しさん
08/02/02 20:58:26
倍音成分含む音なら基音を簡単に見つけられる。
倍音成分が少ない(無い)音やピッチが揺れる音(ベル系)は難しい。
その音が和音だと解っているなら和音も見つけられる。調も解れば精度が上がる。
ただ、和音の中に倍音がある場合(ギターのコード等)はフーリエだけじゃ多分無理。
411:デフォルトの名無しさん
08/02/02 21:07:39
ドラムとかシンセとかいろいろ入ってると難しいだろうな
412:403
08/02/03 05:37:33
皆様回答ありがとうございます。
>>404
MSバランスって初めて聴きました。
MIDをモノラルにしてLRをステレオとして合計3つの音源で広がり感を
調節するものようですね。
なるほど、中央に音源を置いたほうがいいのかも。
ちょっと試してみたいと思います。
参照:
URLリンク(stagesounds.blog74.fc2.com)
413:403
08/02/03 05:38:06
>>405
遅延時間をいじるというのは、LRそれぞれに別のFIRをかけて、
左右の遅延時間に差をつけるということでしょうか?
コーラスの場合は、左右のディレイ分の変化、つまりピッチ感の変化の位相を
ずらすことによって、同じ音源を微妙に違うものとして耳に届けることで、ステレオ感が表現できると理解しているのですが、
FIRの場合は、左右のフィルタの係り具合、つまり音色の微妙な違いによって、ステレオ感を表現するということでしょうか?
その場合、ステレオ音の広がりの間隔をどのようにして調節するのかが理解できていないのですが、
もう少しヒントをお願いできないでしょうか?
414:デフォルトの名無しさん
08/02/03 09:00:34
遅延時間を変更するのに1サンプル遅延するのに苦労は無いけど
0.5遅延するのにどうする? 単に2つの平均を取ると、これはLPFになってしまう。
高域をあまりカットしないで0.5遅延したいというような場合には
比較的長いFIRフィルタが必要。
415:デフォルトの名無しさん
08/02/03 18:41:33
というか、コーラス等のエフェクタ用途だったら、
遅延時間の解像度はサンプル単位で十分なのでは?
というか経験的には十分だったような。(44.1KHzとかのサンプリングレートなら)
どの程度のS/Nになるかは計算できないんだけどさ。
416:デフォルトの名無しさん
08/02/03 19:00:51
それで十分というならソレでいいんじゃない?
両耳の距離が17cmとして 170/340E3*44100 で22サンプルの遅延分
1サンプル単位にカクカクと変更しても気にならないといえばならない。
とりあえず思うような特性になるかどうか試してみるといいよ
417:デフォルトの名無しさん
08/02/04 01:06:18
コード抽出なら離散ウェーブレットじゃないの
再構成しないならオクターブバンドより狭く解析できるし
時間解像度的にも有利
418:デフォルトの名無しさん
08/02/04 12:46:12
その手の題材って、研究目的とかじっくりと取り組めるのでなけりゃ、
なかなか手を出しにくいね。
いくらかうまくいったとしても、道具としての実用レベルまでは遠い道のり・・・
419:403
08/02/05 03:52:34
>>405
>>414
>>415
>>416
回答ありがとうございます。
両耳への到達時間を1サンプル以下の単位で操作するためにFIRを利用するという意味なんですね。
やっと理解しました。
ちょっと実験してみたいと思います。
ありがとうございました!
420:デフォルトの名無しさん
08/02/07 11:54:50
サウンドカード付属のマイク入力(3.5ミニ)から入力された音声を
リアルタイム(非バッチ処理)にディジタル処理するプログラムの作成を考えています.
計測機器などはその製品ごと(というか会社ごと?)にコマンドが異なりますが,
サウンドカードも同様なのでしょうか?
windows Visual C++6 での開発を考えていますが,
後にUNIX系に移植するつもりです.
関数の使いまわしが出来るのかが心配になり質問しに来ました.
お願いします.
421:デフォルトの名無しさん
08/02/07 13:23:42
入出力は処理系依存だと思うけど
422:デフォルトの名無しさん
08/02/07 14:46:24
Windowsの場合は
1 低レベル オーディオAPI
waveInOpen/waveInAddBuffer/
waveOutOpen/waveOutPrepareHeader/waveOutWrite
窓へのメッセージで貰うか、CallBackを使う。
利点:サウンドカードをインストールすれば、ほぼ確実に使え、サウンドカードを意識する必要がない
欠点:色んなサウンドカードで音切れしないように考えるバッファを大きくとってレイテンシが大きくなりがち
ステレオ以上のマルチチャンネルは対応が難しい
2 DirectSound
URLリンク(msdn.microsoft.com)
利点:エフェクタ等、便利な機能が既にそろってしまっている。
欠点:DirectXがインストールされ、一部機能は対応サウンドカードである必要がある
3 ASIO
利点:低遅延
423:420
08/02/07 16:19:16
>>421-422
ありがとうございます.
低レベルオーディオAPIを使ってみます.
424:デフォルトの名無しさん
08/02/11 00:00:11
板違いかもしれませんが、質問させてください。
WindowsMediaPlayerのプレイビューのような、音楽にシンクロしてグラフィングが
変化する物(名前がわかりません)の作成の仕方が知りたいのですが、
どのように調べていいのかもわからず困っております。
ご存知の方がいましたら、調べ方についておしえてください。
425:デフォルトの名無しさん
08/02/11 00:04:29
>>424
それはグラフィクイコライザというものです。
音の高さに合わせて、それぞれの音の高さの音の大きさを棒グラフで表示します。
WMP等はこれをリアルタイムで行います。
原理は、フーリエ変換というものを使って信号を処理してそれぞれの周波数のゲインを解析しています。
手がかりは書いた。あとは検索しろ。
426:デフォルトの名無しさん
08/02/11 00:09:05
ありがとうございます。
大変重要な手がかりをいただけました。
早速検索してきますー。
427:デフォルトの名無しさん
08/02/11 01:53:23
ス ペ ク ト ラ ム ア ナ ラ イ ザ だ
428:デフォルトの名無しさん
08/02/11 02:00:52
ワロタ
429:デフォルトの名無しさん
08/02/11 03:24:13
>>425
あれって本当にフーリエ変換なんてやってるのだろうか?
大体のふいんきが分かれば十分だからもっと簡単な実装で良いんじゃないかと思わなくもない。
430:デフォルトの名無しさん
08/02/11 04:20:34
フィルタした音を再構成して使うんじゃなければただのIIRバンドパスで十分かもね。位相回ってもパワーには影響しないし。
IIRで完全なクロスオーバー作るのは難しいから、各バンドのパワーの和を厳密に元信号と一致させたいときは使えないけど、
棒グラフ程度なら十分だと思う
431:デフォルトの名無しさん
08/02/11 04:48:13
出てくる絵が変わっていけばいいだけなら、
無理にfftかけなくてもいいだろうけど、
スペクトル出すならなんかやってんだろうね。
432:デフォルトの名無しさん
08/02/11 11:05:56
パソコンの場合は十分な演算能力あるからFFTでもOK
ただ、FFTの都度CPUの負荷が上がるから消費電流の変動がノイズとなって聞こえるという困った事に
なおMP3はそもそも周波数毎に分割されてるのを再構成してるから、その時の情報を残している
可能性もある。
マイコン内蔵のDSPなんかで実現してる場合は
IIRフィルタでも共振型というかサイン波オシレータの構成だろう。
ようするにQ無限大の共振器に単発の窓関数かけて結果を見る
1個の共振器を時分割で使い回せば負荷も軽い
433:デフォルトの名無しさん
08/02/11 12:00:41
いつもは過疎スレなのにネタが落とされるとすぐにレスが付くな。
434:デフォルトの名無しさん
08/02/11 14:22:10
なんか前スレあたりでもほぼ同じ流れみたような
そしてそこでも、スペアナをグライコとよんでるやつがw
435:デフォルトの名無しさん
08/02/11 14:25:59
前スレじゃなかったこのスレだわ>>324
436:デフォルトの名無しさん
08/02/11 14:57:35
グライコがスペアナの意味で使われてて混乱してたけど、やっぱり違ったか。
437:デフォルトの名無しさん
08/02/11 15:20:50
>>436
なんか多くの素人が同じ間違いをしてる。
音楽やってたことある人でも多いし。
おそらくコンポやカーステレオでスペアナとグライコの表示が似てるせいだろう。
438:デフォルトの名無しさん
08/02/11 16:08:10
グライコはどうやってるんだろな
IIRフィルタだっていうけど、係数を全部いっぺん変更してるんだろか?
439:デフォルトの名無しさん
08/02/11 18:45:44
双二次で検索
440:デフォルトの名無しさん
08/02/12 15:20:24
多分、一番多い実装は、
RBJ Audio-EQ-Cookbook で言うところの
双二次のピーキングIIRを複数つないでる。
441:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/12 17:41:00
>>441
その割り算(a_i, b_i の計算)は、イコライザの設定変更時だけしかしなくて、
毎サイクルは必要ない。
443:デフォルトの名無しさん
08/02/12 18:16:13
イコライザだからAの変更は必要だよね? そうすると 1/a0も計算しないといけないよね?
だから、割り算しなくていいような構成方法あるんじゃないの?
444:デフォルトの名無しさん
08/02/12 18:31:03
設定変更時だけだし多少遅くても割り算やってる。
445:デフォルトの名無しさん
08/02/12 18:31:23
A の変更の頻度、それほど高くないはずだから、
割り算のコストをそこまでシビアに考えなくてもいいんじゃないかと。
除算器乗ってないプロセッサでも、除算表持ったり近似計算したりで、
割り算全く出来ないわけではないし。
446:デフォルトの名無しさん
08/02/12 19:04:53
逆数を乗算してもいいな
そういう話をしてるんじゃないのは分かってるけどw
447:デフォルトの名無しさん
08/02/12 20:14:14
イコライザいけるならHPFでもいけるかと思って
リアルタイムで係数書き換えたらあっさり発振した。
やっぱだめか。
448:デフォルトの名無しさん
08/02/12 20:18:37
イコライザも係数を一気に書き換えたら発振するよ
書き換えでフィードバックゲインが大きく変わるから、
結果オーバフローすると不安定になる。
449:デフォルトの名無しさん
08/02/13 03:26:05
だから俺はFIR派
450:デフォルトの名無しさん
08/02/13 08:04:25
FIRで、RBJみたいに簡単に扱える方法はあるの?
451:デフォルトの名無しさん
08/02/13 09:26:34
FIRでバンドパスフィルタを作っておけば直線位相だから
元の信号の遅延信号と加減算できるんだよ。
元の信号に足せば、そのバンドだけポコンの持ち上がるし
足せば下げられる。
IIIRでも同じなんだけどね
452:デフォルトの名無しさん
08/02/13 13:57:31
IIRは結果の加減算やろうとすると位相差のせいでうまくいかないからねぇ
てかRBJって何?
453:デフォルトの名無しさん
08/02/13 14:32:31
ググレカス
URLリンク(www.google.co.jp)
454:デフォルトの名無しさん
08/02/13 15:02:04
いや、バンドパスの頂点はゼロ位相だから 加算は可能だよ。
その特性は IIR-ピーキングイコライザのものと殆ど同じ
ただQはだいぶ調整必要なのとf0も少しズレるように思ったな
455:デフォルトの名無しさん
08/02/13 16:08:33
頂点以外ずれるから問題なんだろう
456:デフォルトの名無しさん
08/02/13 16:11:20
それを言うならIIRのピーキングイコライザも問題って事になる
457:デフォルトの名無しさん
08/02/13 16:19:57
いや、位相がずれたものを元音に加減算することが問題って話ですよ
458:デフォルトの名無しさん
08/02/13 16:34:02
だからIIRピーキングイコライザも、位相はピークでは一致するけど
その前後では ~ になる。
そして、IIRバンドパスのを加算しても、これは同じだから、同じだって
459:デフォルトの名無しさん
08/02/13 17:28:44
ん?ピーキングでもバンドパスでも位相がずれるのは当然、そりゃわかってる
問題はそれを元音に加減算することだと言ってるわけですよ。
位相がずれた音を元音に加減算したら周波数特性に影響が出るしょ?
までも、バンドパスは位相のズレ幅と同じスロープで減衰してるから、
大きな特性変化にはならないかもだけど。
まちがってたらすまん
460:デフォルトの名無しさん
08/02/13 17:45:59
速い話
IIRピーキング = 元音 + IIRバンドパス
でははない。ということ。
周波数特性が崩れる。
461:デフォルトの名無しさん
08/02/13 18:10:16
だからさあ
BPFの係数と
b0 = alpha
b1 = 0
b2 = -alpha
a0 = 1 + alpha
a1 = -2*cos(w0)
a2 = 1 - alpha
>>441 を比べてごらん
構造の違いは b1がゼロかどうかだろ?
BPFと元信号1遅延したのと重みを調整して加算したら区別付かないんだって
462:デフォルトの名無しさん
08/02/14 02:43:28
>>453
なんだ、それか。妙な略し方だなぁ……。
>>462
よく分かってないんだけど、
>>441でA=1として
b0 = 1 + alpha
b1 = -2*cos(w0)
b2 = 1 - alpha
a0 = 1 + alpha
a1 = -2*cos(w0)
a2 = 1 - alpha
a系列は共通だから分母は無視するとして、
441のH(z)の分子 = 1 + alpha - 2*cos(w0)*z^-1 + (1 - alpha)*z^-2
462のH(z)の分子 = alpha - alpha * z^-2
分子部分の違いは
1 - 2*cos(w0)*z^-1 + z^-2
これが
> BPFと元信号1遅延したのと重みを調整して加算
でどう区別つかなくなるのか知りたい……。
463:デフォルトの名無しさん
08/02/17 19:29:47
A=1の時
BPF/alpha *(1+alpha) + -2*cos(w0)*z^-1 とすれば一致するようだね
464:デフォルトの名無しさん
08/02/19 10:20:39
他スレから誘導されてきました
if文で、if (音を感知したら)
do ○○ っていう感じのプログラムを考えているのですが
その音を感知する部分で何か有効的な物ありますか?
(音はその時しか扱いません)
465:デフォルトの名無しさん
08/02/19 12:17:53
リアルタイム処理なら常に音量のゲインを見張って、
それが閾値に達したら別スレッドでdo○○に相当する関数を実行させるとか。
466:デフォルトの名無しさん
08/02/19 13:14:40
>>464
環境は? そして、その入力元は何? たとえばwindowsでマイク入力なのか、スピーカー出力なのか
467:デフォルトの名無しさん
08/02/19 20:05:30
>>465-466
ありがとう
windowsのマイク
何がしたいかっていうと
音を感知したら(どんな小さな音でもいいんだけど)、
HDDに録画をするっていうプログラムを作りたいんです。
だからゲインまでは必要ないかなとは思っています。
468:デフォルトの名無しさん
08/02/19 20:05:52
連続ごめん
マイク入力のこと↑
469:デフォルトの名無しさん
08/02/19 20:34:24
どんな小さな音でもっていうけど
録音状態でマイクからの入力が0フラットのまま安定することってなかなか無い気がするけど。
ゲインを監視しなかったら録画しっぱなしになるな。
ていうかひょっとして、聞きたいのは録音するためのAPIとか、そんな程度じゃねぇの?
470:デフォルトの名無しさん
08/02/19 21:06:25
あ、そっかそうだよね... まぁとりあえず、ゲインは後で考えます
そう、APIとかの事でした、質問が明確じゃなくてごめん。
何か良いのないかなと思って
C++を考えてるけど
471:デフォルトの名無しさん
08/02/19 22:38:08
トリガの音にもよるんじゃね?
チャイムとか時報みたいな単音かつ短い物ならFFTなりで周波数成分見て判別出来そうだけど、
比較的長めのジングルみたいなのはどこまで一致したらトリガ音と認識させるのかとか、
マイクからの入力だとちょっとした事で入力状態も変わってくると思うんだよなぁ。
472:デフォルトの名無しさん
08/02/20 00:02:27
ちょっと話はズレるんだけど、プログラムを走らせるパソコン外部の装置からのデータ入力の際に
ノイズが完全に入らないデジタルな接続ふyふyふゆいおjhy「
473:デフォルトの名無しさん
08/02/20 00:34:41
ふじこ!
474:デフォルトの名無しさん
08/02/20 04:25:26
>>467
物音がしたら一定時間録画、防犯システムみたいなもんか。
スレ一通り見た?Winでのマイク入力については
>>16 以降とか、
>>420 以降あたりが参考になりそう。
当然、環境音やアナログ回路由来のノイズとかあるから、静かだったら入力0ってことはない。
ある値を超えたら、って具合に感度(スレッショルド)は設ける必要ありますよ。
それから常に空調が入っているような部屋の場合は、
ハイパスフィルタなどを使って検出に不要な帯域をできるだけカットする必要があるかもね。
475:デフォルトの名無しさん
08/02/20 05:07:39
質問なのですが、ここらへんの技術で食べていくにはどうしたら良いのでしょう、
この中でプロで音響関連のプログラマーをやってる方っていますか?
やはりゲーム業界や計測器系の会社が多いんでしょうか?
DAWの開発会社に勤めている方とかいましたら、ぜひ職場の雰囲気など教えてほしいです。
職場での立ち位置なんかも気になります。
やっぱりマニアックな分野の分だけ、発言権は低いのでしょうか。
大学での専攻分野が音響/信号処理関連でないと難しいとかやっぱりあるのでしょうか。
476:デフォルトの名無しさん
08/02/20 06:01:23
発言権てw
477:デフォルトの名無しさん
08/02/20 10:06:59
国産DAWやシーケンサーは、プログラマ1人で作ってるものがほとんど(過去のものも含む)。
1人の作業に雰囲気もなにもない。
478:デフォルトの名無しさん
08/02/20 10:59:44
職場の雰囲気なんて社風によったり、部署毎に違ったり、面白いやつが一人いるだけで変わるもんだから聞くだけ無駄。
ゲーム業界におけるサウンドの地位は基本的に底辺。
サウンド専用のメモリをメイン側で使われたって話も聞いたことがある程。
唯一コナミだけはサウンドの発言権が強いってんで有名だったけど、それも10年くらい昔に聞いた話だし現状どうなってるかは知らない。
組み込み系やサウンドツールはボチボチ仕事転がってるから需要あるかもしんない。
ってかマ板向けの内容だなw
479:デフォルトの名無しさん
08/02/20 12:18:01
Q ここらへんの技術で食べていくには
A 自分を差別化出来るだけの技術を付けるしかない
音しか出来ないのでは駄目。
色んな事が出来た上で音も出来るのでなければならない。
算数や工業数学には強くないといけないね
480:デフォルトの名無しさん
08/02/20 13:02:34
算数は機械がやってくれるので問題ないだろ。
数学をやれ。
481:デフォルトの名無しさん
08/02/20 20:14:33
スタインバーグとか開発が海外でしかも音響専門のソフトウェア会社ならどうなのか気になる。
みんな楽しそうにやってるのか、デスマーチで死んでるのか。
482:デフォルトの名無しさん
08/02/20 22:06:48
>>479
技術よりネタだろうな、なんつーかもう何もかもやり尽された分野だし
FM音源が流行っていた時代、ソフトで音を作っていた時代が懐かしい。
今やるとするなら初音ミクみたいな奴とか
あえて技術で攻めるなら、このデータは効き難い事で有名といところで、圧縮、だがこれももう限界に近い。
他には音声認識もまだやれる事が多いかな、これは出力ではなくて入力なのでこのスレとはちょっと違う雰囲気か。
483:デフォルトの名無しさん
08/02/21 02:07:34
たしかに雰囲気は違うか
でも語らうとしたらこのスレくらいしかって気もするな
484:デフォルトの名無しさん
08/02/21 02:23:11
Visual C++ 6
SDKにて開発をしています.
こちらをコピーして,マイクから録音したものをwav形式で保存しています.
URLリンク(www7a.biglobe.ne.jp)
処理の流れを見ると,
waveInOpen
waveInPrepareHeader
waveInAddBuffer
waveInStart
>録音中
waveInStop
waveInReset
waveInUnprepareHeader
waveInClose
で,最後にSaveWave関数内で wav ファイルに落としています.
ここで,信号を wav に落とさずに信号処理を行いたいのです.
おそらく wh.lpData 内にデータが書かれていると思うのですが,
サンプリング周波数(例では8kHz)によってデータを配列に並べる処理等が分かりません.
具体的には,録音をしたデータをフーリエ変換し,そこから別の処理へと繋げるつもりです.
ご教授願います.
485:デフォルトの名無しさん
08/02/21 03:20:36
>484
>474
486:デフォルトの名無しさん
08/02/21 08:37:57
>>484
wf.nChannels = 1;
wf.wFormatTag = WAVE_FORMAT_PCM;
wf.wBitsPerSample = 8;
wf.nBlockAlign = wf.nChannels * wf.wBitsPerSample / 8;
wf.nSamplesPerSec = 22050;
wh.lpData に モノラル 8bit 22.05KHzの配列として入力されている
FFTするなら、
wf.wBitsPerSample = 16;
として 16bit 符号付の配列として wh.lpData を扱えばいい。
連続して処理するなら、
waveInPrepareHeader
を2つ以上確保しておいて、MM_WIM_DATAメッセージを貰う都度、バッファを使いまわす事だ
487:484
08/02/21 13:28:25
>>485
もちろん目を通しましたが,わかりませんでした.
>>486
ありがとうございます.8kHzではなく22.05kHzでした.
おそらく wh.lpData 内はバイナリで書かれていると思います.
バイナリファイルから数値を読み込むのは fopen( hoge, "rb") を利用すれば良いのですが,
バイナリとして書かれているものをアスキーの配列に入れなおすには
どうしたら良いのでしょうか?
調べる中で以下のサイトに辿り着きましたが,
こちらも fopen による処理でした
URLリンク(oku.edu.mie-u.ac.jp)
よろしくお願いします.
488:デフォルトの名無しさん
08/02/21 13:47:13
チョットまだ基本的なC言語の考え方がわかってないようだ。
もう少しC言語の作法がわかる段階でないと説明する方も辛いんで勉強してくれ。
wf.wBitsPerSample = 8; だから
wh.lpData にはバイト列で入ってる 符号なし8bitだから
unsigned char *p= (unsigned char *)wh.lpData;
とやれば for 文で (p[i]-0x80 ) とでも ( *p++ - 0x80 ) とでも 処理出来る。
wf.wBitsPerSample = 16; にしてやれば 16bit 符号付になる
同じように16bit幅の符号付ポインタに代入すればいい。
489:デフォルトの名無しさん
08/02/21 14:00:14
>>488
不勉強な中,質問させていただいて申し訳ありません.
ご丁寧なレス,感謝致します.頑張ります.
490:デフォルトの名無しさん
08/02/21 14:26:16
>>487
サウンドプログラム以前の話じゃん。
スレ違いだよ。
491:デフォルトの名無しさん
08/02/25 22:35:24
Windows上で、waveOutGetDevCaps()やwaveInGetDevCaps()で取得したデバイスの、
さらに詳細な情報を得るにはどうしたら良いでしょうか?そのデバイスがUSBオーディオ
デバイスであるかどうかや、USBデバイスの場合はPIDやVID等を取得できるとうれしい
んですが。
Setup APIと組み合わせればどうにかなるかなと思ったんですが、Setup APIで取得できる
情報と、waveOutGetDevCaps()/waveInGetDevCaps()で取得できる名前とのマッチング
がとれないんですよね。WAVE APIだと、"(2)"とか"スピーカー"とか勝手についたりするし。
何か良いアイディアは無いでしょうか?
492:デフォルトの名無しさん
08/02/26 11:25:01
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}
を見るくらいかなあ・・・
493:デフォルトの名無しさん
08/02/28 20:52:43
質問です。
Q1.
信号を、ハミング窓をかけて50%オーバーラップしながらFFTして、
そのまま、逆FFTして、Overlap and Add した場合、信号が完全に
再現されるのでしょうか?
Q2.
信号を、sine窓かけて50%オーバーラップしてMDCTして、
そのまま逆MDCTして、再度sine窓かけて、オーバーラップすると
信号は完全に再現されるのでしょうか?
494:デフォルトの名無しさん
08/02/28 21:07:26
理論上どうだったかは忘れたけど、
少なくとも窓関数が 0 近い辺りでは誤差が大きくて、
完全な再現ってのは無理。
495:デフォルトの名無しさん
08/02/29 08:13:37
FFT->逆FFTで完全に元に戻っているのだから、
窓関数がオーバーラップ処理でフラットになるかどうかの問題。
フラットになる窓関数は 180度の位相差のものと足して1になる必要がある。
ハニング/ハミング窓は
A-(1-A)*cos(2πT/L)で 180度ズレると A+(1-A)cos(2πT/L) で加算すると2A
だから、ハニング窓は完全に戻るし、ハミング窓は 0.54*2 のゲインが残るだけ
サイン窓は 180度のズレは窓関数上は90度のズレになるので、
加算してもsin関数が残る。 そのサイズでモジュレーションした信号になってしまう
FFT->加工->逆FFTとした場合は、一般的には完全には接続しない。
MP3なんかはうまく誤魔化してるけどね。
単純に考えても、音程のある成分は位相を合わす事が出来るけど
でも位相を合わせると、ノイズは位相が合わせられないのだから 1/√2になる
496:デフォルトの名無しさん
08/03/08 16:41:59
>>495
詳しい説明ありがとうございました。
MP3は、なぜハミング窓を使わなかったのだろう、と思いまして。
sine窓の必然性が理解できてないのです。。。
497:デフォルトの名無しさん
08/03/08 17:08:38
>>496
周波数領域での加工を前提とすると、
FFT前に窓がけしないと、周波数領域の信号レベルの確度が悪くなる
逆FFT後に窓がけしないと、時間領域で接続性が悪い
上の理由から実務上2度窓がけする必要があって、かつ、2度の窓がけ後の結果の
オーバーラップが元信号に戻らないといけない。でも、han窓は1回の窓がけの
結果のオーバーラップで元に戻るように設計されてるから適さない。
で、上の条件を満たすsin窓とかVorbis窓が使われる。
498:デフォルトの名無しさん
08/03/08 20:45:14
なるほど、頭いいなー
499:デフォルトの名無しさん
08/03/15 16:21:05
すみません、質問なんですが
サウンドプログラミングに関する本で、
picか何かでのサウンドドライバの作り方とか
一連のサウンドプログラミングが説明してある組込みの書籍か雑誌が発売されてたみたいなんですが、
本のタイトルがわからなくなって探すことができません。
それっぽいキーワードでググっても出てきません。
目次を眺めただけなので、具体的な内容は違うかもしれないのですが。。。
どなたか、上記の本のことをご存じないでしょうか?
500:デフォルトの名無しさん
08/03/15 18:34:48
picってMicrochip社のPIC?
501:499
08/03/15 23:37:51
>>500
ごめんなさい、picかどうかも怪しいです。
僕はMicrochip社のPICのつもりで書きましたが、
そもそもpicじゃないかもしれないです。
質問内容が曖昧過ぎますよね。。。
今になって>>499の本にすごく興味が出てきてしまって。
502:デフォルトの名無しさん
08/03/16 08:27:07
PICだとすれば DsPIC だろうけど
503:デフォルトの名無しさん
08/03/16 08:32:06
検索したけど、コレくらいしかみつからなかった
URLリンク(gihyo.jp)
504:デフォルトの名無しさん
08/03/17 23:38:52
すげえなこれ
URLリンク(slashdot.jp)
505:デフォルトの名無しさん
08/03/18 00:01:38
ソレ、おれもおどろいたわ
どういう仕組みなのかなあ
506:デフォルトの名無しさん
08/03/18 00:45:39
基音を分解したあと上音を再構成してるんだろうけど
どの上音をどの基音に結びつけるかってのは、
あらかじめ楽器音を抽象化したサンプルのカタログから検索してるんじゃないかなぁ
507:デフォルトの名無しさん
08/03/18 05:47:11
すげえなこれ
URLリンク(sho1.jp)
508:デフォルトの名無しさん
08/03/18 10:07:14
>>506
それだと人の声とか、音の響き方が変わったときは無理じゃね?
解析中に倍音成分の偏りのテーブル作ってるんじゃないかなぁ。
試算は元波形から減算して0になればいいわけだから、その辺からも補完情報得られそうだ。
おかしなエフェクトかけた音とか食わしてみたい。
>>507
ナニガ?
サウンドプログラム的には初歩の初歩だろ。
509:デフォルトの名無しさん
08/03/18 19:54:37
位相を和音を基準に解析して、各周波数ごとにピッチ、スピード、再生タイミング等を調整できるようにしただけじゃね。
和音に分解するのにものすごい時間かかりそうだ。どちらかというとアイディアよりも速い速度を出したという努力の方が凄い。
510:デフォルトの名無しさん
08/03/18 23:43:22
>>509
短絡的に考え過ぎじゃまいか。
速度無視すりゃキミ作れる?
511:デフォルトの名無しさん
08/03/18 23:51:51
まあ、そういうこと言い出すと、情報系の研究の結構な割合が、
真新しい技術を作ることじゃなくて、既存技術を低演算量で実現ってノリよ。
512:デフォルトの名無しさん
08/03/19 00:17:18
どうせ解析がDWT、再生が可変速再生でしょ。
例えばV-Vocalとどう違うのか分からん。
新しい技術ってのは多くがまず理論の領域だからね
実践が重要な情報工学の分野は、どう実現するか、とかが重要になる。
513:デフォルトの名無しさん
08/03/19 10:05:39
>>512
アホか? どの周波数の音がどの音の倍音かってのを分解できなきゃいけないんだからV-Vocalとは全然違う。
音源分離の基礎から勉強しなおせ、このタコ。
514:デフォルトの名無しさん
08/03/19 14:34:45
>>513
さすがにサンプル全く聴かないで想像で書くとバレるかwww
ある意味安心した
サンプル聴いてみたが、全サンプル単音色なのね
これだったら、全体の倍音構成がある一つの倍音構成の重み付き和になるから
アタック検出とあわせて認識するのは可能かなー 専門が音声ですら無いから
最先端とか知らんけど
515:デフォルトの名無しさん
08/03/19 15:35:05
おまえ耳悪いんだな
516:デフォルトの名無しさん
08/03/19 18:05:43
>514
URLリンク(www.sonicstate.com)
これ見て凄さが理解出来ないなら黙って消えてくれ。
517:デフォルトの名無しさん
08/03/19 19:44:08
やってることがすごいとかすごくないとかはよくわからないんだけど、
動画の中で音をばらす最初のシーンはかなり興奮したw
518:デフォルトの名無しさん
08/03/19 20:14:00
一から楽器を演奏して曲の音源を得るコストと、そのソフトを購入して既存の少ない音源から
元の音源が分からない程にまでリミックスして曲の音源を得るコストのどちらが高いか。
勿論後者の場合はもともとの音源が第三者には追跡不可能だし人格権を主張できないほど弄ってるから著作権料なんて発生しない。
519:デフォルトの名無しさん
08/03/19 20:21:14
論点変えて楽しいか?
520:デフォルトの名無しさん
08/03/19 20:35:08
一つのどうでもいいレスに対して話の流れから脱線しているように思うなら、無視すればいいだけのこと。
521:デフォルトの名無しさん
08/03/19 20:53:43
つうか板違いだろ
522:デフォルトの名無しさん
08/03/20 02:34:17
>>516
黙って消えろは酷いなw
さて、その動画今観てみたけど、やっぱり同種の楽器のサンプルしか無いね
一つだけギターとトランペットのサンプルがあるけど、音の小さいギターの方の認識は弱くなってる
支配的な倍音構成にフォーカスしてるのかな
523:デフォルトの名無しさん
08/03/20 05:03:48
>>516はアルペジオ的なサンプルばかりなのもあーやーしーいw
けど、こっちにはギターのカッティングを分解してるビデオがある
URLリンク(www.celemony.com)
524:デフォルトの名無しさん
08/03/20 14:09:51
>>523
お、やっと話せる人が来た 嬉しい
同時発音へのアプローチはどうなんだろうね。
そっちの動画は最初に観て、その感想が>>514なんだけど、うーん。
あるいは、同時発音といえどもms単位のアタック時刻ずれがあるからそれを検出して……とかなのかなぁ。
ただ低域になると時間精度が悪くなるから、そこまでの精度がでるのかどうか。
完全に同時発音のソースとか、BBE通したソースとかでどうなるか、とか興味あるなぁ
>>516の動画でも、リバーブがきついと怪しいとか、2パートのピッチがクロスすると怪しいとか
おっちゃんも言ってるし。
って長文ごめん
525:デフォルトの名無しさん
08/03/21 10:05:41
>>524
前も書いたが、音源分離の基礎から勉強しろ。
「音源分離」でググれば、この分野の基礎技術がやまほどでてくるから。