[表示 : 全て 最新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

75 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:54:44 ]
>>6
それはドゥレイだろ!

76 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 21:47:30 ]
>>75
超遅レス乙

77 名前:デフォルトの名無しさん [2009/02/13(金) 12:54:22 ]
再生速度の変更ってどうやればいいですか?



2 3 4 5ってデータがあったら
2 2 3 3 4 4 5 5にしたらいいんですか?これで再生速度50%?

78 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 17:46:22 ]
>>77
やってみるといいよ

79 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 21:19:47 ]
>>77
こんなん

23456789   ←6〜9をフェードアウト
   23456789←2〜5をフェードイン

80 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 01:21:02 ]
波形はそのままでサンプリングレートを下げるだけ

81 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 10:09:26 ]
それだと音程も下がるよね

82 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 13:11:10 ]
補完すればいいんじゃね

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



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 ]
自宅警備員



224 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:53:17 ]
音関係に詳しいから仕事もそれ関連かと

225 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 19:06:27 ]
だからなにやってんのって話だ

226 名前:214 mailto:sage [2009/08/24(月) 00:24:34 ]
なるほど、なかなか難しい訳ですね。 ありがとうございました。
>>218
昔の高校情報Aでやってました。

227 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 00:29:44 ]
最近の高校生は信号処理とかもするのか

228 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 01:41:47 ]
うろ覚えだけど昔工房でフーリエ変換習ってた奴もここに居たしな。

229 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 02:07:02 ]
高専なら普通に教えてそうだね

230 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 06:21:32 ]
証明はともかく使いかただけなら工房でも分かる罠

231 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 06:22:50 ]
は?何?それがどうした?

232 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 06:32:01 ]
なんか変なレスきた

233 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 15:14:29 ]
FM合成、もしくはFM変調などについて学べる書籍またはサイトは無いでしょうか?
簡単な波形合成を行うプログラムを作っているのですが、中々FMについて理解が進みませんorz



234 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 16:38:49 ]
「FM音源」と組み合わせて検索かければ解説からサンプルコード、FM音源ドライバのソースまでなんでも見つかんね?

235 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 16:57:04 ]
wikipediaで調べるといい。

236 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 19:18:03 ]
サウンドプログラミングに限らず、離散信号処理で辞典的役割をしてくれるもしくはできるだけ広範囲をカバーした本があったら教えてください

237 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 21:43:38 ]
www.google.co.jp/search?hl=ja&q=%E3%83%87%E3%82%A3%E3%82%B8%E3%82%BF%E3%83%AB%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86+%E6%9B%B8%E7%B1%8D

238 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 14:46:03 ]
ttp://www.seventhstring.com/
ここのTranscribe!ってソフトのタイムストレッチ/ピッチシフトがめちゃ精度良いように思うんだけど、
どうやって実現してるか先輩方わかります?

239 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 19:13:26 ]
そんな糞ソフトよりAutoTuneとかのほうが糞精度いい

240 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 19:17:06 ]
ポジティブな形容にも「糞」って付けるものなの?

241 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 19:21:31 ]
ワンピースみろよ。

242 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 19:50:04 ]
着てる

243 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 19:54:57 ]
ワンピース着るような清楚な女は一度も見たことないわ(清楚でなくてもだけど(ワンピース着てる奴に限ってビッチ多いらしいけど(童貞だから知らないけど)))



244 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 19:57:43 ]
lisp厨がきたぞー

245 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 20:42:23 ]
WaveOut系APIで、waveOutWriteで送った後のデータ書き換えたらマズいのかな
(waveOutPrepareHeaderで指定したWAVEHDR構造体のlpDataの参照先のデータのことね)
やってみたら一応動作はしたんだけど、これが出来るならWaveOut系APIの遅延も短く出来るよな

246 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 22:22:23 ]
俺もそれやった事あるんだけど、結局資料が見つからずに有耶無耶になってサウンドプログラミングやめた。

247 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 23:00:21 ]
>>245
woWriteの後はデータ管理としてはOS側だろ?
バグ作り込むようなもんだからできるできない以前にやらない
仕様として保証されていない動作に依存するようになるとデバッグが泥沼だよ

248 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 11:49:05 ]
Replaygainを自作プログラムに実装すべく考えているのですが
良く分かりません。教えていただけないでしょうか。

実際、色々調べてみてある程度はわかったのですが、
「Peak Amplitude」があまりよくわからなかったのと、
音量設定の単位がdbになっているので、設定の仕方が難しい、
合わせにくいというところでつまずき、そのままになっていました。

現在わかったことは、ピーク時の振幅(Peak Amplitude)、
トラックごとに音量を設定する値(Radio Replay Gain Adjustment)、
アルバム単位で設定する値(Audiophile Replay Gain Adjustment)
の3項目でタグが構成されていて、これらの値を使って音量をdb単位で調整する、
ということです。

タグの読取りはそれぞれの形式(tta,ape,mp3)で異なるが、
提供されているライブラリを使えば読取りは比較的簡単に出来る。

というところまでは行きついたのですが、
実際に読み取った値からどう処理するかが難しく、
実装するのが難しい状況です。

今考えているのが、勝手にdbの単位を独自の値に置き換えて(0dbが125とか)、
音量を調整すればいいのかも?と思っているのですが、
それにしても、ピーク時の振幅(Peak Amplitude)がよくわからないので、
どう使って良いか悩み、ここでつまずいています。

ご存じの方、教えていただけないでしょうか。

249 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 21:42:49 ]
>>248
全てはdBとリニアの変換くらいは自在にできるようにしてからだ。
Peak Apmplitudeは意味そのまんま最大振幅と思うんだが。最大はmaximumだとか言うなよ?

250 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 03:12:01 ]
dBーリニア変換

dB = 20log(A/B) log:常用対数
(パワーの場合は10log(A/B))

例)
Aが1、Bが10の時AはBに対して20dB落ち(-20dB)

上記のような比を表す他に、dBV, dBu, dBmなど、具体的な単位
(例えば1Vなどの電圧)に対する比を計算し、実際の値を表すこともある

例)
0dBm = 1 mW

251 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:45:56 ]
>>249-250
ありがとうございます。
試行錯誤してみます。

252 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:22:01 ]
色々な楽器の倍音構成をある程度記載したサイトもしくは書籍などないでしょうか?
ピアノについては見つけられたものの、そのほかの楽器が中々見つけられません

253 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:15:25 ]
Peak Apmplitudeについても、何となくわかりました。
曲によって振幅が違うから、その状況を表しているんですね。
それにしても、何故「1」が最大値なんでしょうか。
「1」の基準は何でしょうか?

質問ばかりで申し訳ないのですが、ご存じの方教えてください。
よろしくお願いいたします。



254 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:24:26 ]
少しは自分で考えないと相手にされないよ
もうされてないと思うけど

255 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 03:19:10 ]
>>252
自分でスペアナ通せよ。

>>253
Maxが100%=1だと計算しやすいから。

256 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 04:00:30 ]
>>255
本当にありがとうございます。

257 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 14:23:14 ]
適当なGM音源モジュールを買ってMIDIで鳴らして録音
リアルな音じゃなくても、倍音構成を調べるくらいには使えるんでない?

258 名前:デフォルトの名無しさん [2009/09/30(水) 20:15:57 ]
本当にありがとうございます。

259 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 05:56:05 ]
デシベルの計算式がまったく理解できなくて死にたい
-25dBから-30dBに音量が下がったら振幅値にいくつかければいいんだ…

260 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 06:14:42 ]
まず日本語からだな

261 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 06:34:53 ]
振幅100の正弦波を基準として(これが0dB?)音量が-5dB下がったときの振幅値を知りたいんだ…
説明すらできねぇ…

262 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 07:07:58 ]
-25dBの正弦波を、-30dBの正弦波にしたいって事だよね?
>>250 の逆の変換になるので、この場合、10^(-5/20)を掛ければよいはずです。

263 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 09:42:46 ]
dB = 20log(A/B) log:常用対数
(パワーの場合は10log(A/B))

-25dBから-30dBに音量が下がったら振幅値にいくつかければいいんだ…

-25dBの正弦波を、-30dBの正弦波にしたいって事だよね?
>>250 の逆の変換になるので、この場合、10^(-5/20)を掛ければよいはずです。





264 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 10:40:13 ]
>>262-263
ありがとうございます!まさにコレが知りたかったんです…
教えていただいたことを参考にして
ttp://geocities.yahoo.co.jp/gl/flawtips0/view?.date=20050324
を試してみたのですが、同じ波形を得ることが出来ませんorz
計算は間違えてないと思うのですが…表が誤っているのでしょうか?

265 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 13:59:15 ]
logとかフーリェ級数にピンとこないってことはreal中学生かな?
www.geocities.jp/flawtips0/Pic/wav2.html#p14
ここを見ると周波数分布の山の高さがdbと合ってるから表は間違ってないと思う


266 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 15:02:14 ]
まあ特に独学で始める場合は年齢関係なく中学生レベルに見える
質問しちゃったりするしね。どんな分野でも。
育て直しじゃないが、学習のプロセスをゼロから辿り直すわけで。

日本語が中高生レベルに見える点にはあえてつっこまない

267 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 17:22:03 ]
www.shonan.ne.jp/~hiro-s/pages/post-tut/fm.html
homepage3.nifty.com/sawai/neiro/neiro.html
flawtips.ami.amigasa.jp/blog/051230.html
www.terawave.net/amane/contents/soundworks/
d4.princess.ne.jp/msx/datas/OPLL/YM2413AP.html

268 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 19:34:08 ]
質問する前に少しは考えるなり調べるなりしろよ・・・
検索すればすぐにわかるんだろそんなこと


269 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 19:36:59 ]
>>264
重ね合わせる高周波の位相がずれてるとうまくいかないよ

270 名前:デフォルトの名無しさん [2009/10/06(火) 20:59:51 ]
はいそうですか

271 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 23:41:37 ]
アー確かに、そういう奴いそうだわ

272 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 07:29:49 ]
>>264
まず試してみたソースを出せ、話はそれからだ

273 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 22:17:03 ]
>>245
違うバッファに用意しとけばいんじゃない?
メモリーのコピー作業はそんなに重くない
とこだよね
書き方によるけど



274 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 14:47:39 ]
まぁ、大抵はめんどくさいから6dBで2倍(-6dBで半分)にしちまうけどな

275 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:12:21 ]
-6dbは半分じゃなくて1/2乗だろ。
半分は1/2倍。

276 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 21:11:57 ]
1/2乗は-3dB

277 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:25:32 ]
えっ

278 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 01:42:20 ]
馬鹿がいるな

279 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 04:35:38 ]
逆立ちしたら草食性哺乳類一種鯨偶蹄目になっちまうな

280 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 07:08:02 ]
ttp://av.watch.impress.co.jp/docs/news/20091117_329581.html
なんじゃこりゃ?

281 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 08:21:50 ]
ものすごくリバーブが掛けられたゲーム音楽CDに発憤して
リバーブ成分を取り除いてみたことはあるな
そこからサラウンドに繋げられたか・・・

282 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 12:58:22 ]
>>276
ばーか、エネルギーは振れ幅の二乗だろ。アホ

283 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 13:47:16 ]
>>282
いつからエネルギーの話になったんだろうか
ああ脳内で世界が固定されちゃってるんですね



284 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 14:04:51 ]
>>274
×>>275
×>>276

285 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 14:10:04 ]
ttp://ja.wikipedia.org/wiki/デシベル
20log10(b/a) = 10log10((b/a)^2)

286 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 14:25:19 ]
20*log10(2) = 6.02 dB
20*log10(1/2) = -6.02 dB

287 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 14:30:44 ]


288 名前:デフォルトの名無しさん [2009/12/23(水) 05:08:00 ]
Windowsで、ネットワークから受信した音声データを
スピーカーに再生するプログラムを書いてるんだけど
再生の方が速くて困ってる。

具体的には、
20ms間隔で20ms分の音声データをwaveOutWriteで書き込んでるんだけど、
waveOutProcのコールバックが0〜15ms間隔くらいで返ってくる。

waveOutAPIってこういうもんなの?

289 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 05:19:10 ]
yes

290 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 13:45:32 ]
バッファが十分たまれば間隔は落ちる

291 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 21:40:04 ]
DirectSound使え

292 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 21:42:34 ]
そこでWASAPIですよ

293 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 22:02:10 ]
Visual Basic 2005以降 or C#2005以降ならそこそこ開発できるスキルは持っています。
C言語はなんとなくわかりますが,非常に苦手です。
C++はわかりません。
VBでPCMデータをアップサンプリングするプログラムを作った経験はあります。

こんな私にもわかるようなASIO SDKの使い方を解説したサイトまたは書籍などご存じありませんでしょうか?




294 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 00:00:32 ]
無理

295 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 15:41:28 ]
デジタルフィルタがむずかしい。

296 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 10:01:36 ]
「***が苦手です」とか「###が苦手です」って言う人は何が難しくて自分にできないか考えたことはあるの?
それがASIO SDKとどう結びつくかを他人に説明する気はないの?

297 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 15:04:01 ]
山葵?

298 名前:デフォルトの名無しさん [2010/02/10(水) 10:44:38 ]
Windowsでbeep音だけで音階を作るサンプルコードがあれば教えてよ

299 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 11:52:49 ]
>>298
double cdef[] = {3.0, 5.0, 7.0, 8.0, 10.0, 12.0, 14.0, 15.0};
for (int i = 0; i < 8; ++i)
{
DWORD freq = (DWORD)(440.0 * pow(2.0, cdef[i]/12.0));
Beep(freq, 500);
}


300 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 12:04:09 ]
先越されてしまった。
がんばって作った俺の努力の結晶が無駄に・・・
codepad.org/VxXlvVkM

301 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 12:13:17 ]
MMLまで作ったのかw

302 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 17:28:35 ]
4分割多重MML再現したくなったw

303 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 21:39:59 ]
>>300
努力した内に入らないよw



304 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:52:44 ]
BASICでbeep文だけで声を鳴らすサンプルコードがあれば教えてよ

305 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:02:26 ]
>>300
久し振りに笑うプログラムに出会った
これは面白い
Windowsにこのような機能がまだ残されていたとはw

306 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:03:09 ]
何BASIC?

307 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 03:52:18 ]
FFTを勉強中です
基本的な質問で悪いんだけども
周波数ごとの音量ってのは
実部のスペクトル?
それとも実部と虚部から求めるパワースペクトル?

308 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 03:57:21 ]
補足です
パワースペクトルが音量に相当するなら
実部=0、虚部≠0の場合
周波数は無いのに、音量はあるのか?
実部が音量に相当するなら、パワースペクトルの意味ってなに?
とか、よくわかんなくなっちゃったのです


309 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 05:09:56 ]
laputa.cs.shinshu-u.ac.jp/~yizawa/InfSys1/basic/chap6/index.htm
アニメで見ると分かりやすいね

310 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 01:10:53 ]
>>309
読みました。
たしかにアニメーションついててわかりやすいですね。
んで、周波数ごとの音量に相当するのは、
パワースペクトルってことですね。
ありがとうございました。

311 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 22:54:20 ]
SIMDなフィルタプログラムの英語か日本語のチュートリアル、どこかにありませんか?CPUには拘りません。

312 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:50:57 ]
アップサンプリング時にゼロ補間してもスペクトルが変化しない理由ってなんでしょうか?


313 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 23:02:00 ]
補間のあとのLPFで鏡像になって出てくるスペクトルをカットしてるから。



314 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 09:06:10 ]
wavファイルの合成について相談です。

現在2つのwavファイルを読み込み、データ部を足し算することで「両方同時になっているwavファイル」を作成、出力することができました。
ここで疑問なのですが、16bitWAVの場合、データ部の値は
-32768〜32767
となりますが、2つの足し算なら「int型に変えたあと足して、限界を超えたら丸めこみ、shortの範囲に戻す」すればいいとわかります。

ですが、3つの音を足すとなると、丸めこみを最後に一括してやるか、足すたびにやるかで結果が変わってしまいます。
例:
丸め(30000 + 30000 - 10000) = 32767
丸め(丸め(30000 + 30000) - 10000) = 22767

今はまだ、足す音が3つと決まっているから1単位時間毎にintで計算>shortで吐き出しで問題ないのです。
が、もし「任意にユーザーの選択により次々音を足し算できるツール」のようなものを作る場合
やはり単位時間毎に一旦intとしてバッファを作り、WAVファイルとして出力する際に丸めこむべきなのでしょうか?


315 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:52:39 ]
先に個数で割ればいいだろう

316 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 13:11:05 ]
>>315
個数で割る。というのがよくわかりませんが、任意に追加できるため個数はその場その場で定まらないのを想定しています。

例えばAとBを合成して、とりあえずそれを再生。
ユーザーがそれを聞き、「やっぱりCも合成しよう」となった時などを想定しています。

AとBの合成音を再生するために、合成音を出力するバッファを用意しますよね。
その後Cを合成するのが決定した時、
・再度A、Bのデータもひっぱってきて、3音合成する
というよりは
・A+Bの合成音にCを合成する
ほうがメモリー効率や処理速度などで有利そうです。

ですがそれだと丸めこみ問題がでてしまいます。

317 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 13:35:55 ]
普通は64bitとか128bitで計算して最後に戻すのよ。

318 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 14:55:02 ]
>>普通は64bit
一体16bit音源を何万個合成するつもりだよw

319 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 00:22:21 ]
>>316
> その後Cを合成するのが決定した時、

そんだけ仕様が未確定だと汎用的にプログラム書くしかないから効率もクソもない。
数百万サンプル程度の加算が問題になるような環境ならできることの自由度を下げる以外ない。

あと「〜そう」で目についたところを最適化するのはほぼ最悪の戦略。
かなりの確率で最適化ポイントを間違う

320 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 17:33:01 ]
ごめんねぼくはdouble厨なので

321 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 20:45:17 ]
コンプレッサ実装すれば?
r = 初期値1.0
出力サンプル = 合成サンプル * r
出力サンプルが16bit幅超えたら、r = abs(合成サンプル) / 32768.0 で更新
r < 1.0 なら時間経過と共に少しずつ1.0へ戻してやる

実用レベルで実装するなら細かいノウハウとかあるからDSP関係の文献自分で調べて

322 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:00:11 ]
>>314は「丸め」とか用語が適切じゃないからちょっと知識が不足してる感じがするね。
俺もコンプレッサ/リミッタ関連について調べてみることをお勧めする。

323 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 11:34:15 ]
コンプレッサーはデータを改変してしまうからよくないだろ。
ノーマライズすればいい。



324 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:08:07 ]
いまどき整数とか面倒
不動明王を使うだろ普通

325 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 09:59:47 ]
恐れ入谷の鬼子母神

326 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 21:27:02 ]
>>314
分解能32ビットとかで作業用データ配列を作成すると良い。すべて加算した後16ビットレンジに収まるよう最適化する。

一旦WAVファイルをセーブした後、さらに別のWAVファイル加算したいときは、16ビットでは精度が不足するので、
以下の方法を取る。

WAVファイルの分解能をfloatか24ビットとする。フォーマットの設定が16ビットと異なるがちゃんと再生されるWAVファイル
を作成することができる。

参考:
WAVEFORMATEX構造体
WAVE_FORMAT_IEEE_FLOAT


327 名前:デフォルトの名無しさん [2010/06/11(金) 21:35:42 ]
float
-> WAVEFORMATEX
24ビット
-> WAVEFORMATEXTENSIBLE







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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