- 1 名前:デフォルトの名無しさん [2009/01/11(日) 13:43:21 ]
- 音のプログラミング処理について語りましょう
各エフェクタの組み合わせとか、 プログラミング外の話題はDTM板の方がいいよ サウンドプログラミング4 pc11.2ch.net/test/read.cgi/tech/1185340076/ サウンドプログラミング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
- 123 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:40:16 ]
- >>122
それはむずかしい un4seenってとこのライブラリ たしかオープンソースの再生速度変更が けっこう優秀。 WMPより優秀と思う
- 124 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 13:20:45 ]
- サウンドプログラマーな先輩方にお聞きしたい。
WaveTone(ttp://www.vector.co.jp/soft/win95/art/se421780.html) ↑このソフトはどういった変換でスペクトル算出しているのか見当つきますでしょうか。 当方、FFTで似たようなプログラムを組んでみたのですが、低音域の周波数分解能があまりに悪く、 実用とはほど遠い結果になりましたので、先輩方のお知恵をお貸し頂きたいです。 何卒よろしくお願い申し上げます。
- 125 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 14:42:06 ]
- FFTのポイント数を増やすのはダメ?
ゼロ詰めしたりフレーム長を増やしたりしてね.
- 126 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:18:51 ]
- >>124
・FFT結果から山を見つけて頂点を補完 ・各音階に属する周波数成分で平均化(画像縮小アルゴリズムの面積平均法みたいな感じ?) サイトの画像見る限りでは低音の精度は粗いからFFT後になんか処理してると思われ
- 127 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 00:42:11 ]
- ローパスフィルタで分けてから低音域だけ取り出すとか
- 128 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 00:26:38 ]
- >>123
みつからないけどどこ?
- 129 名前:デフォルトの名無しさん [2009/03/27(金) 05:51:08 ]
- すみませんタイム(ピッチ)シフトを実装したいのですが、
質問させてください。 速度とともにピッチが変更されてもかまわないのですが、 たとえば98%遅くするなど、単純な整数比ではない場合はどう実装すればよいのでしょうか。 アップサンプリング/ダウンサンプリングの手法ではこれは実現できないのでしょうか? 80%〜120%の間で、速度を変更したいです。 よろしくお願いします。
- 130 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 07:37:39 ]
- >>128
ttp://www.un4seen.com/ ttp://www12.plala.or.jp/mojo/Delphi/delphi6-Z.html タイムストレッチはたしかbass_fx >>129 >>118でも見れ 98%の速度にするには、100×nサンプル再生した後 2×nサンプル戻った位置から再生する
- 131 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 12:56:11 ]
- ピッチも変わっていいならTimidityのソースを見てみたら?
- 132 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 21:46:56 ]
- ほんとは間引く前にローパスフィルタだっけ?
あれかけないとノイズがでることがある
- 133 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 23:28:05 ]
- いらない
- 134 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 02:00:47 ]
- FIRフィルタをそのまま実装するのと、
同じ係数で短時間FFTしてオーバーラップするのとは 同じ事でしょうか? 異なる場合は、どのような点が異なるのでしょうか?
- 135 名前:デフォルトの名無しさん [2009/04/08(水) 18:02:31 ]
- >>134
infoshako.sk.tsukuba.ac.jp/InfoRes/jdoc/MATLAB5/jhelp/toolbox/signal/fftfilt.html
- 136 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 02:53:22 ]
- >>135
ありがとうございますー
- 137 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 00:57:20 ]
- VSTでイコライザを作ってます。
RBJ Audio-EQ-Cookbook見ながらピーキングフィルタを使ってシングルバンドのEQらしきものは実装できました。 これをLOWとHIGHの2バンドにしようとしてるのですがうまくいきません。 この場合、どんなふうにコードを書けばいいのでしょうか?
- 138 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 01:30:12 ]
- ピーキング2つって意味ならIIRフィルタ2つ作ってに直列に通す
トンコロ的な、2~3バンドで全体を調整できるようなものにしたいなら シェルビングタイプ2つにして直列に通す
- 139 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 22:35:18 ]
- >>138
ありがとうございます。 ピーキング2つを並べてLOW,HIGHの順でやってるんですが、 LOWの効きがシングルのときよりかなり弱く(効いてない?)なってしまうんです。 「直列」っていうのをちゃんとプログラミングできてないんですかね・・・
- 140 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 13:53:01 ]
- ASIO対応の録音再生ソフトって、素人では作れないですか?
- 141 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 14:02:52 ]
- そんなことないでしょ、どうしてそう思った?
- 142 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 23:30:39 ]
- 商用ソフトしか存在しないから。
なんか、ASIOSDKがあるらしいので、入手できた。
- 143 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 23:44:55 ]
- どんだけ無知だよ。。。
- 144 名前:129 [2009/04/25(土) 17:54:51 ]
- >>130
亀ですみませんが、ありがとうございます。 100*nサンプルを再生バッファに入力した後、2*nサンプルもどってバッファを入力する処理を実装してみたのですが、 再生時にノイズが乗ってしまいました。 波形の接続部分がきれいに合わないためだと思うんですが、 これにローパスフィルタをかければノイズは消えるものなのでしょうか。 それとも僕の方法がまちがっていますか? こわれたテーププレーヤーのような効果をデジタルで実装するのに他に何か有効な方法はないでしょうか。 よろしくお願いします。
- 145 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:16:44 ]
- >>144
いきなり切替えたらノイズが出るので、 フェードアウト・フェードインさせながら切替えないといけない floor13.sakura.ne.jp/book03/book03.html のchapter11.zip
- 146 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:45:52 ]
- クロスフェードってやつな
- 147 名前:129 [2009/04/25(土) 19:04:13 ]
- >>145
おおお、ありがとうございます。 なるほどお, この本買って読んでみます。
- 148 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 00:48:41 ]
- >>135
便乗ですまんけど、 FFTは暗黙に処理範囲の両端が繰り返すけど、FIRだと繰り返さないよね ブロック処理ってそのあたり大丈夫なのかな?
- 149 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 15:47:10 ]
- 質問が曖昧でなにが大丈夫なんだ?
FIRだと切れ目無くできるからいいけど FFTはぶった切るから窓関数+最後 オーバーラップが必要ってことか
- 150 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 22:15:45 ]
- FIR相当の処理をFFTでやると、両端がループしてるから区間の最後の方の
計算値が区間の最初の方に影響するってことだろJK
- 151 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 00:15:26 ]
- 周波数成分いじって逆FFTしてまた窓かけてオーバーラップするからいんじゃね?
- 152 名前:148 mailto:sage [2009/04/28(火) 00:21:42 ]
- 分かりやすくするために極端な例だけど、例えば前半全てゼロ、
後半ピンクノイズみたいな波形があって、それをFFTして周波数成分を 操作して戻すと、ゼロだった前半部に微小な波形が出るよね。 要するにプリエコー、ポストエコーなんだけど、 これはオーバーラップだと解決できないと思うんだ。
- 153 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 00:57:45 ]
- >>152
FFTは時間成分ないんだから当たり前
- 154 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 01:27:08 ]
- >>153
んと、解決できない、でOK? とすると、>>135は無効ってことになるけど・・・
- 155 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 07:55:33 ]
- 感覚でものを言っちゃいかん 数式で検証してくれ
- 156 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 21:36:30 ]
- Androidでサウンド系アプリ作った人いる?
- 157 名前:デフォルトの名無しさん [2009/04/29(水) 04:49:22 ]
- >>149
一回の計算についてはFIRもFFTと同じくブロック処理以外の 何ものでもないのだが? どちらも対象の有限長のブロック以外は全然計算対象に入っ ていない。 FIRの代わりにFFTを使う時、FIRでの場合と同じように1サン プルづつずらしてFFTを行い、その結果を正しく評価すれば FIRでの場合と同じ結果が得られるんじゃない? ただ、それだと普通にFIRやるよりも計算量が増えるので、 それをひっくり返す手法としてオーバーラップ法があるの だと理解してるが?
- 158 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 14:31:42 ]
- >>157
てことは、オーバーラップは単に計算量対策で、 FIRとFFT+オーバーラップは本来は代替不可能ってことか。
- 159 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 22:26:47 ]
- >>157
一回の計算についてはプログラミング上 ブロック処理にしてもしなくても 出力はFIRならいっしょだからそれは考えないとして。 FIRとFFTの違いはサンプル数の違いがでかくないか? FFTはサンプル数でかくしないと周波数領域で操作できる 周波数ステップ荒くなるし FIRは少なくてもある程度できる。 サンプル数大きくするとそれだけFFTの計算に入れる時間が 大きくなるから時間分解能下がる FIRはリアルタイム処理だから時間分解能最大。 それでサンプル数が一緒での議論だと、 FFTは実際(データが何かにもよるけど)窓関数とかかけなきゃ だめだからそれだけデータ量そこでへっちゃうから、 最終処理後のデータの品質さがる だから目的に合わせて選べばいんでは
- 160 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 22:40:47 ]
- >>159
いまいち良くわからんのだが、、 >FFTはサンプル数でかくしないと ... FIRは少なくてもある程度できる。 同じステップ数として、FFTの時間領域で、FIRフィルタの 設計上のカーブを各点で取ったフィルタ処理は違うもの? 違うとすればどの辺りが? > サンプル数大きくすると ... 大きくなるから時間分解能下がる 時間分解能はサンプリング周波数で固定だと思うけど、、、 短時間FFTのオーバーラップ回数が少なくなるってこと? > FFTは ... それだけデータ量そこでへっちゃうから、 データ量は減らないと思う。
- 161 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 23:35:07 ]
- >>160
FFT/FIRの基本的な仕組みすら理解出来てねーだろお前。 159の説明は波形処理の基礎だぞ。 まずは自分で調べて考えろ、なんでも聞いて済まそうとすんな。
- 162 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 00:00:23 ]
- >>161
ただ罵倒するだけのレスは無価値ですよ、いつもの方。
- 163 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 01:51:36 ]
- >>160
あの、 ここでの説明だとあれだから本買ってきた方がいいよ。 最初の方は強いて言えば違わないけど、 それぞれの癖とか特徴とかできることできないことあるから 目的に応じたいい方をえらべよ 二つ目は >サンプル数大きくするとそれだけFFTの計算に入れる時間が >大きくなるから時間分解能下がる これはFFTの時間分解能だから。 160が言ってるのは多分サンプリング定理とかそこら辺の 波形のデジタル化の時の時間分解能の事をいってるんかな? FFTの原理とか時間領域-周波数領域のサイトとか本とかみればわかると思うけど みつめ 何バイトとかのデータ量はへらないけど、なんというか削ってるんだから論理的な データ量は減るよね? たとえばwav->mp3圧縮の時みたいな感じで たとえばデータを波形ととらえて周波数領域に変換して周波数高い一部分を少なくして 時間領域に戻してもバイトは変わらない。でも何か(なんらかの情報)は減っている。
- 164 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 02:02:29 ]
- >>163
うーん……難しくていいので正確に書いてもらえると嬉しいです。 理解してるとかしていないのかという問題よりも、163の説明の中の 一つ一つの用語が式とか定理のうち具体的に何を指しているのかが曖昧すぎて分からない。 > FFTの時間分解能 >>160の時間分解能は指摘の通りデジタル化の際の時間分解能です。 で、説明だとFFTという変換自体にに時間分解能ってパラメータなり特性が存在するんですよね? > データ量 窓かけの周波数特性でサイドローブが出る話ですよね。 歪みは出ると思いますが、それが情報が減っているということ?
- 165 名前:デフォルトの名無しさん [2009/04/30(木) 05:43:39 ]
- >>159
>FFTはサンプル数でかくしないと周波数領域で操作できる >周波数ステップ荒くなるし >FIRは少なくてもある程度できる。 そんなことない。 「NタップのFIR」は「サイズNのFFT+周波数領域での積和演算」 と等価でしょ?
- 166 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 21:11:03 ]
- >>165
「ある程度」だから実用性を考えての ことだよ 小さいタップ数で同じ事ができるんだったら 小さい方がいいだろ
- 167 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 21:35:01 ]
- >>164
一般的なFFTの話だが FFTはサンプル数を大きくすれば周波数分解能はあがるが、 それだけ時間領域でも… たとえば音楽だと22050hz、4096FFTだと一回のFFTで 4096サンプル=0.185秒分のデータが必要になる 音楽だと0.185秒だとテンポの速い音楽だと音符が2個分 含まれていることもあるかもしれない。(極端な話) 上のFFTだと5.38hzごとの周波数領域のデータだ。 このようにFFTではサンプル数を大きくすれば得られる周波数データの hzの間隔は少なくなり詳しく得られるが、それだけたくさんの時間を 計算に組み入れなければならないので、いらないデータも含まれるかも しれない。sin波だったらずっと同じだからいいけど、PCMなんかだと 刻一刻と周波数成分が変わっていってるので(音楽なので刻一刻と かわらないとおかしいが)一回の計算にいれる時間は少ない方が その時点の周波数は正確に表れる。 この文を読めばFFTの時間分解能、周波数分解能の意味は なんとなくわかるだろ
- 168 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 22:12:17 ]
- >>167
いやそれはとっくに分かってるんだが・・・ ピッチ検出ならゼロクロスなりケプストラムなり使うし。 で、そもそもの疑問である >>163 > 最初の方は強いて言えば違わないけど、 これをkwsk
- 169 名前:165 mailto:sage [2009/05/02(土) 05:33:05 ]
- >>166
>小さいタップ数で同じ事ができる 俺はそんなことは出来ないと理解してるのだが?
- 170 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 22:11:32 ]
- 便乗レスだけど、
>>168 NタップのFIRをFFTで実装しようとすると時系列データもN用意して Circular ConvをConvにするため最低Length=2N+1のDFTを行う必要がある。 (信号分析しないから窓掛けしないとする) DFT自体は丸め誤差とかを除いたら単なる座標変換だから周波数領域での掛け算も 時間領域の畳み込みも等価なんだけど、フレーム単位で処理する必要があるから 出力時には最低Nサンプルの遅れがある。 反面、FIRだと過去Nサンプルのバッファを用意して置けば新しいサンプルが入ったときに バッファからフィルタの出力をその時点で得られる。 同じ性能を発揮するのに必要なタップ数が変わることはありえないし、 時系列でFIRを処理するから周波数分解能が云々とか、それを座標変換した 領域で作業するから周波数分解能が云々ってないし、考慮する要件は数理的なものよりも 処理時間やFFT-IFFTするオーバーヘッドや誤差への許容に関すること。 更に言えば、Portaudioみたいに最初にデータをバッファにためてバッファがいっぱいになったら コールバックを呼ぶようなやつだったら、正直FIRを時間ドメインでやろうが周波数でやろうが 変わらない。 リアルタイム性を重視するフィルタだったらFIRを時系列で畳み込む方がいい場合もある。 特にタップ長が短い場合。
- 171 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 23:46:32 ]
- 質問いい?
VistaでWin32APIのmidiOut〜系でMIDIを出力しているんだが、 どうにも我慢ならないほどの遅延が発生する(200ms程度)。 出力先をデフォルトのMIDIマッパーの代わりに、Timidity++→ASIOにしても同程度の遅延が発生するので、 多分APIに問題があるんだと思う。 そこで、他のAPIに乗り換えようかと思ったんだが、 DirectMusicは消滅した上に64bitアプリで使えないようなので、 他の選択肢が欲しい。 なんかないかな?
- 172 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 23:53:35 ]
- MIDIならしょうがない
- 173 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:02:12 ]
- しょうがないのか。 適当な音源自前で実装するか……サンクス。
- 174 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 09:57:02 ]
- Timidity++側、ASIO側にバッファがあれば同様の遅延は発生するだろ
APIを疑う前になぜMIDIインタフェース+外部音源の組み合わせで試さないのか不思議だな
- 175 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 10:22:23 ]
- >>171
少なくともXPまでの環境でmidiOutで200msecも遅延するとか聞いたこと無い Vistaのドライバとかの問題だと思うが、ソフトMIDI音源とかで試してみた?
- 176 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 12:35:56 ]
- >>174
外部音源とか持ってねーよwwww Timidity++のGUIからmidiファイルを再生してみたけど、たぶん遅延してない。 >>175 全く違うハードウェア構成の2台のVistaで同様の遅延が発生してる。 で、さっきXPマシンで試験したけど遅延しない。 何ヶ所かの英語フォーラムで、Vistaだと遅延が発生するという報告があるのよ。
- 177 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 13:33:55 ]
- いや、MIDIファイルの再生じゃ遅延してるかどうかなんて分からんだろう・・・
なんにせよmidiOUtの問題じゃないと思うんだが VISTA環境があれば試すんだがなぁ
- 178 名前:177 mailto:sage [2009/05/21(木) 13:36:32 ]
- >>173には同意してるかんね
- 179 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 13:59:15 ]
- ソースが公開されてるDAWやシーケンサがMIDIをどう発音しているか確かめたら?
あとTimidity++自体に遅延があるからASIOを使ってもMSGSより遅いぞ
- 180 名前:デフォルトの名無しさん [2009/05/31(日) 17:26:05 ]
- ogg vorbisのエンコードについて詳しく書かれたサイトありますか?
公式見ても初期化部分しか書かれてなくて何をすればいいのかすらわからん
- 181 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 21:03:25 ]
- >>180
oggのlibならexamplesディレクトリに encoder_example.c があると思うけど、それじゃだめなん?
- 182 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 13:24:01 ]
- ogg vorbisのエンコード上手くいかない・・・
- 183 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 14:21:40 ]
- 自作のフィルターを組んでメモリ上に全てのデータを置いてランダムアクセスで
メモリ上を飛び回って処理をしているのですが、音源の時間に比べて20倍の処理速度が掛かります。 DSPとやらを使えばもっと高速にできるらしいのですが、どうやって使えばいいのでしょうか? Google先生に効いてもネット上に資料はあまりなく、困っています。 VC++9.0SP1を使ってプログラミングをしています。誰かVC++からのDSPの使い方を教えてください。
- 184 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 16:19:54 ]
- とりあえずどんなフィルタか書かんと
DSPは単純な演算を高速に(あるいは並列に)こなすものだから 処理の種類によっちゃ効果がない
- 185 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 02:42:57 ]
- >>183
どんなマシン使って20倍なのかわからないけど、 最近のPCでそのスコアならアルゴリズムから見直さないとどのみち無理な気が。 一言にDSPっていってもピンキリだし、PCから使うならどこかの評価ボードみたいなの買うしかないんじゃないかな? 本気でDSPに手出すなら開発キット&コンパイラで数十万、仕事じゃないなら個人に販売してくれるかってのも微妙な所。 たぶん想像してるよりもはるかに敷居高いと思う。 波形処理の高速化なら一番お手軽なSIMDに手出してみれば? モノによっては5〜10倍くらい期待出来る。
- 186 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:12:40 ]
- G.722とG.722.1 Cの、GPL/LGPLでないソースを探していますが、どこにありますか?
- 187 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 18:29:55 ]
- 誰かにそのソースを渡す
アルゴリズムと定数だけそいつから聞き出して自分で実装する
- 188 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:49:19 ]
- そして定数の中にGPLの文字がひっそりと含まれていて自爆するわけですね
- 189 名前:デフォルトの名無しさん [2009/06/09(火) 21:05:53 ]
- ogg vorbis以外で意匠フリーでブロードキャスト向けの音声圧縮ってありますか?
- 190 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:30:33 ]
- 189!=186と仮定して、G.722
- 191 名前:186 mailto:sage [2009/06/11(木) 12:55:56 ]
- 結局Speex使うことにしました
- 192 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 18:55:46 ]
- スペアナ作りたいですが、窓掛けしてFFTして絶対値取れば完成ですか?
- 193 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 19:03:43 ]
- いや、表示せんと。
- 194 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 21:17:35 ]
- テキストで吐けば十分
リアルタイムじゃないなら
- 195 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 21:04:34 ]
- すいません。
WindowsXPでサウンドデバイスを2つ以上インストールしているマシンがあるとします。 再生デバイスと録音デバイスにそれぞれ別の物を設定しているとして、 録音デバイスから入力した音声をそのままダイレクトに再生デバイスから出力させることは できますか?
- 196 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 23:57:27 ]
- OS上の機能では無理だったと思うよ。
プログラム作っていいなら AudioIn → プログラム → AudioOut は簡単に実装できる。 まぁ、レイテンシは発生してしまうけど。 Virtual Audio Cable とか既存のツール使ったらプログラム組まなくても簡単にいけるかな。
- 197 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 15:13:37 ]
- DirectXスレからきました。
DirectSound で再生しながら、 横軸に周波数、縦軸に音量を表すようなグラフを リアルタイムで描きたいです。 とりあえずWAVを再生するところはできてるんですけど、 そのようなグラフを描くにはどうすればいいですか? 一応↓のコードを手に入れたのですが、どういうふうに使えば... ? ttp://www5.airnet.ne.jp/tomy/cpro/sslib8.htm
- 198 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 17:40:48 ]
- やる気がなければ帰れ。
- 199 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 18:21:18 ]
- >>197
テストアプリ書いてデバッガなりコマンドプロンプトなりに変換結果出してみるとかやってみた? サイン波形なりを食わしてみればすぐ理解できる
- 200 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 23:50:01 ]
- >>197のプログラムをコンパイルするとkが初期化されてない警告が出るんですけど、
これは0 で初期化して問題ないですか? あと、iter は何の値なんでしょうか??
- 201 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 00:53:28 ]
- んー、一通り目通せばすぐ気付くだろうに、ホントにやる気ないのな
fft2(), fft2x()のjのforループでkは使われてない→たぶんコピペって k += nmax を消し忘れ iterはループ回数の演算省略用じゃね? 0渡せば勝手に計算するようになってるだろ
- 202 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 23:56:30 ]
- RolandのVariPhraseってあるじゃん
あれってなにがすごいの?
- 203 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 21:12:01 ]
- >>202
当時のチップの速度でリアルタイムにピッチやらフォルマントやらを操作して、それをもとに音作りできるところ。
- 204 名前:デフォルトの名無しさん [2009/07/09(木) 23:57:30 ]
- ケプストラムについて教えてください。
n個の時間領域のデータxn(t)をFFTし、 Xk(f)のパワースペクトルを得たとします。(k=n/2) パワースペクトルの自然対数を取り、IFFTすると思うのですが、IFFTするには 実部と虚部の情報が必要ですよね?パワースペクトルの対数をとったら、虚部が わからなくなってしまいますよね。 そのところでわからなくて困っています。わかる方教えてください。
- 205 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:15:43 ]
- >>204
IFFTは別に虚部がなくてもいいです. それとスペクトルのkはnのままでいいと思います. スペクトルは偶関数になってるので,IFFTすれば実数成分(ケプストラム)が求まると思います.
- 206 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 03:03:10 ]
- MMEやDirectSound対応のスペアナソフトやレベルメーターのソフトみたいな音を入力して解析してリアルタイムで表示する系統のソフトって、
半日以上とか1日とか数日とか、長時間起動してると、必ず反応がかなり遅れるようになるけど、それはなぜ? 複数のソフト、いろいろな環境で再現性があるのでOSの問題なんだろうかと思うんですが。 たとえばwavespetcraとかDeskTopLevelMeterとか、他にも山ほどあります。
- 207 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 11:25:17 ]
- システム時計とサンプラ側の時計(たとえば44.1kHz)がビミョーにずれてくのかもね
- 208 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 15:56:49 ]
- ソレ系のソフト以外でも、何でも遅くなってないか?
多分、ただのページングだよ。
- 209 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 16:48:43 ]
- WinVista/VC++expでサウンドプログラミングをしているのですが、
リアルタイム(1バッファ遅延)に入力→加工→出力を行うAPIを探しています。 調べたところWDM?ではカーネルミキサを通す分遅延がありすぎて話にならない ディフォルト出力ならKernel Streamingが良いと聞きました。 Win32APIのwaveXXXX関数は、関数の内容的にハードウェアに直接アクセスしてるように思えるのですが 実際のところ、Winのカーネルミキサを経由していたりするのでしょうか?
- 210 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:22:46 ]
- 「ハードウェアに直接アクセス」なんて危険なAPIは基本的に存在しない
waveIn()/waveOut()で遅延がネックになるレベルならPCでの処理は難しいと思うが、 WinAPIよりはリアルタイム処理に向いてると言われるASIO使ってみれば?
- 211 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:54:39 ]
- CoreAudioAPI
- 212 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 00:49:41 ]
- DirectX
- 213 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 10:04:27 ]
- >>211
DirectXはミキサ通すはず。 >>212 VistaはCoreAudioっていうんだな。Macかとオモタ
- 214 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 00:03:48 ]
- 音程を変えずに速度を変える処理って、100msとかの短い間隔のかたまりで処理するタイプが定番なんですかね。
ゆっくりさせると、響いている様になってしまい良くないです。 NHKテレビで、波形の山を増やすとか言ってたが、 波形の山一個単位(一周期単位)でコピーして増やしたり減らしたりするアルゴリズムを僕は考えていたのですが、実現されていないのでしょうか。
- 215 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 00:09:28 ]
- >>214
ちょうどいい間隔でスキマがうまるならそれでいいだろうよ。 どうせギャップができて似たような音になると思うけど。
- 216 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 00:25:22 ]
- >>214
ピッチ検出の話になるが、ゼロクロス検出の精度が実際微妙ってことを 考えると、似たような理由で何かの障害があるんだと思うよ
- 217 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 10:22:13 ]
- 含まれる周波数の最小公倍数な周期、いわゆるf0周期が短く明確なら良好な結果になるが
が、実際の音声は周波数はおろか振幅エネルギーも 時間変動する よってf0の定義自体がまず困難 少しでもずれがあればパルスノイズが発生(矩形窓の場合) 蛇足だか、なんだかんだで窓関数は有効だよ。 目的に応じて最適な窓関数とオーバーラップ数の設計をすればいいし
- 218 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 19:03:38 ]
- >>214
nhkでそんな話してくれるの?KWSK
- 219 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 01:06:24 ]
- 反応速度を優先するならグラニュラー(ディレイを使ったものも一緒)
音質を優先するなら、周波数領域に変換してからリリース部なんかを中心に引き伸ばせ。
- 220 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 23:02:58 ]
- ここの人たちって、お仕事はなにを?
- 221 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 04:29:17 ]
- 無職
- 222 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 05:37:43 ]
- マ板でやれ
- 223 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 10:13:29 ]
- 自宅警備員
|

|