[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 08/10 22:34 / Filesize : 74 KB / Number-of Response : 328
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

サウンドプログラミング5



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

83 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 00:00:50 ]
>>77
ttp://toragi.cqpub.co.jp/Portals/0/backnumber/2009/01/p202.pdf

84 名前:デフォルトの名無しさん [2009/02/17(火) 03:00:39 ]
すみません質問ですが、Mpeg-4の規格のドキュメントってどこかにないでしょうか。
mp4の音と映像を分離したいと思っているのですが。

85 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 07:44:34 ]
ttp://www.apple.com/jp/quicktime/technologies/mpeg4/

86 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 10:55:52 ]
mp4のdemuxくらいなら俺だったらmp4boxのソースを参照しちゃうな
ライセンスはLGPLになるが

87 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 23:08:07 ]
>>83
おー、それ買ってみた
今度よもと

88 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 12:03:38 ]
ImageMagickの音版みたいなツール群ってありませんか?

89 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:55:07 ]
具体的に、何ができることを期待している?

90 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:16:16 ]
>>89
ノーマライズしたり無音部分を取り除いたり
簡単な帯域通過フィルタができたりするコマンドラインツールです

91 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:45:41 ]
>>90
つ sox



92 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 18:43:41 ]
>>91
まさにこんなやつです!
さんくす

93 名前:デフォルトの名無しさん [2009/03/08(日) 22:10:08 ]
winXP, VC++2005 でサウンド入出力プログラムを作っています.
SDK,低レベルAPIを使っています.
入力,出力共にマルチバッファリングを行っているのですが,
入力と再生の間に,バッファ数に従う遅延が生じてしまいます.
体感では,(1バッファに録音する秒数 * 用意したバッファ数)秒
の遅延が生じていると思われます.

リアルタイムに近い動作を実現したいため,
1バッファに録音する秒数(RecSEC)を短くしています.
現在の設定では RecSEC = 0.005 [sec/buffer] です.
バッファ数が少ないと音声がブツブツと途切れてしまいますが,
バッファ数を増やす事で解決しました.

これで遅延量が少ない動作が実現できたと思っていたのですが,
RecSEC = 0.1 として実行してみたところ,約0.1[sec]の遅延を期待していたのですが
約(0.1*バッファ数)[sec] という大きな遅延となってしまいました.

ソースコードをアップしましたので,解決方法をご教授願います.
waveInStart の実行位置を変えてみる等色々とやってみましたが
よくわかりませんでした.

pass: sagehoge
ttp://www2.uploda.org/uporg2074476.txt.html

アルゴリズムによる遅延を解消したいです.
よろしくお願いします.

94 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 22:57:41 ]
>>93
遅延云々以前に入力と出力を同期させてないように見える

バッファ単位の入力完了イベントでたった今読み取ったバッファを
出力にまわす、という処理をしなくてはならないのに、
入力と出力を同時に走らせてタイミングは運にまかせてるから
録音よりも再生が先行してたまたまバッファまるまる1周分の遅れ
が生じているのでは

waveXXXは使ったことないので推測でしかないが

95 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 10:37:27 ]
InバッファとOutバッファを共有したいのは分かるが
別々に用意してコピーする方がいいかもしらん

96 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 15:32:05 ]
別に分けた所で割り込み間隔が短いと負荷時にあっさり逆転する。
まー、デバイスによるのかもしんないけど、
waveIn/waveOut系は互いに同期取ってるわけでも無いし保証も無かったと思うから
一番短い理論上可能な「1バッファ分のレイテンシ」すら難しいと思うよ。

97 名前: ◆0uxK91AxII mailto:sage [2009/03/09(月) 15:47:17 ]
>>93
頭が悪すぎてハナシにならない。

98 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 15:56:28 ]
コテハンでいきなり罵倒か。NG対象にしてくれといわんばかりだな

99 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:07:47 ]
基地外参上ってアピールしてるんだろ

100 名前:93 mailto:sage [2009/03/09(月) 22:03:47 ]
>>94
私自信 wave*** を使い始めたばかりなので
(それが免罪符だとは考えていませんが)
よく分かりません.検討致します.

>>95
ありがとうございます.
それは何故でしょうか?

>>96
「1バッファ分」が理想的ですが,
用意したバッファ分のレイテンシとなる事が避けられたら満足です.

>>97
解決策が分かるのですね.
お暇な時にアドバイスをお願いします.



101 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 09:12:54 ]
WinXPで音楽のテンポを変更する処理を実装したいです。
音楽が入ったWAVファイルの音程を変えずにテンポを変えたいです。
普通はどのように実装するものでしょうか?
WAVEFORMATEX のサンプリングレートを変更するとテンポは変わりますが音程も変わってしまいます。




102 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 09:29:10 ]
タイムストレッチとかそのへんのキーワードでぐぐってみれば

103 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 10:02:28 ]
音程を変えずにテンポ変えるのって難しいよね

104 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 10:19:24 ]
単純に考えればテンポを下げるときは波形データを間引きし
テンポを上げるときは波形データを2倍した後間引きするとか
音質は保証の限りではないが

105 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 10:19:28 ]
floor13.sakura.ne.jp/book03/book03.html
nis-ei.eng.hokudai.ac.jp/~aoki/laboratory04.html

106 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 11:07:13 ]
スレ毎に同じ質問が繰り返されてる気がするw
テンプレ化か、FAQとサンプルソースのwikiとかあった方がいいのかねぇ

107 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:11:15 ]
テンプレが増えてきたら、wikiあると便利だろうね

108 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:30:21 ]
スレ毎どころかスレ内でも繰り返してるぞ
>>101>>77-83 と同じだろ

109 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:36:56 ]
だな。ろくに知りもしないのに見当違いの回答しちゃう人が混ざってる点も同じ

110 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 16:13:23 ]
じゃ正しいソースください

111 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 21:11:14 ]
>>101
タイムストレッチはここの説明が分かりやすいかもな。
実装したことないけどw作ったらUPよろw

音声再生速度変換 : もっとゆっくりしゃべって!
blogs.msdn.com/windows_multimedia_jp/archive/2009/03/04/9458418.aspx



112 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 21:21:39 ]
>>110
つ105

113 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:43:39 ]
>>105って
200Hzの音を2倍速にするとき
10msに一度30万ステップの自己相関するん?

リアルタイムだと厳しそうね

114 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:04:04 ]
???

115 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:19:07 ]
>>113
そうしないと元の音との互換性が低くなるだろ

116 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 02:24:19 ]
>>113
ディレイっぽく聞こえるのを低減させるために
オーバーラップさせる時間を周期性としてる

周期性を求めるのに自己相関使ってるのは
FFTに比べ低音を考慮したときの精度がいいからとか
実装が楽だからとかじゃね

117 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:30:58 ]
>>101
それって結構難しいのよ
論文読むのがいいかなぁ…

118 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 07:28:37 ]
ttp://nis-ei.eng.hokudai.ac.jp/~aoki/laboratory04.html
7.実験6:再生速度の制御
↑で十分じゃん

119 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:55:07 ]
聴いた感じでは十分とは言いがたい

120 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 19:06:41 ]
単音ならまだしも
音楽となるとMIDIのようなソースレベルでテンポを変えないと無理だろ

121 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 19:11:06 ]
そこをなんとかするのがサウンドプログラミング



122 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 19:19:35 ]
適当な区間ごとに離散フーリエ変換で周波数解析して
それを合成すればなんとかなるかもしらん

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の使い方を教えてください。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<74KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef