サウンドプログラミング6 [無断転載禁止]©2ch.net
落ちていたので立てました。
テンプレ等はお願いします。 IIRの並列構成やはしご型構成が流行らないのは何でだろう?
ttp://leo.ec.t.kanazawa-u.ac.jp/staffs/nakayama/edu/file/signal_proc_ch7.pdf >>269
双一次変換のpre-warpingの読み方って
・プリワーピング
・プリウオーピング
・そのほか 流行らない理由はpdfに書いてあるしプリワーピング >>274
2次IIRの縦続構成は、
高次IIRで分子/分母の組合せで悩まないといけないけど、
そういうのは設計用ソフトが組合せを推奨してくれるものなのかなぁ? 2次くらいなら係数を見比べれば悩む程のこともないでしょ
際どいことをするならそれぞれの通る帯域と極の順番を考慮するくらい? 「多項式の比の部分分数展開は、数値的に不良設定問題です。」ってとこが、
IIRの並列構成が、実務的に嫌われてる要因なんだろうか?
ttps://jp.mathworks.com/help/signal/ref/residuez.html 答えが何通りも(無限に)あったら無理やろ。
素因数分解みたいに特定出来る訳じゃなく、
π求める公式だって無限にあるやん? >>278
多分答えは一通りしかない筈なんだけど、
例えば、高次多項式で表されてるIIRを並列接続に変換する際に、
IEEE754の倍精度での計算では十分な精度が得られない…と云うイメージです。
そこだけ任意精度計算出来ればいいのですが。 情報落ち
https://www.cc.kyoto-su.ac.jp/~yamada/programming/float.html#johouot
任意精度
http://www.edu.cc.uec.ac.jp/~ta113003/ref/FloatingPoint.html >>280
多分真面目にやろうとすると精度保証付き数値計算(≒区間演算)になるんだけど、
Mathematicaの一択になると思う。
仕事で使うには値段が高いので稟議が通り難い…。
RasPiのMathematicaやWolfram Programming Labを
内緒で仕事に使うのは駄目なんだろうなぁw >>282
BYODやBYOAで済むなら楽なんですけどねぇ オッペンハイムせんせーの本は、このスレではどう評価されてるのでしょうか?
ttp://www.coronasha.co.jp/np/isbn/9784339004717/
ttp://www.coronasha.co.jp/np/isbn/9784339004724/
つか著者より訳者の名前の方がでかいなんて… https://github.com/katahiromz/YappyCam/blob/master/YappyCam.cpp#L1247
波形データを線形に縮小したいんだが、いい方法知りませんか?
生PCM波形(dwFileSize - wfx_size)バイトを(dwBytes - wfx_size)バイトに縮小したい。
お願いします。 >>285
縮小したらピッチが高くなってしまいました。質問を取り下げます。 双一次変換のpre-warpingの逆って、
・post-warping
・un-pre-warping
・de-pre-warping
・そのほか お!?いつのまにかスレ復活してるじゃん
ageとこ
この板でMIDIやってる人いないのかね? 俺的にサウンドプログラムと言ったらFM音源とか音を作り出す方なんだけど、
このスレの内容は違う。 [プログラム技術板]に自分から来といて、なにを言うとるんだねチミは スペアナ表示用にFFT作ったんだけどいまいち結果のキレが悪い
窓関数を入れたらクッキリするんだろうけど、何窓が適しているかな? ここがキチガイばっかりじゃない、といつから勘違いしてた?? ここがキチガイばっかりじゃないとはどこにも書かれていないぞ リサンプリングで最終的に32bit floatの精度を得たい場合、doubleを使った演算で精度足りますか? MinMMのwaveInOpen関数で、2048byteのバッファ2つを繰り返し再利用しながら長時間録音しています。
重い処理を平行で動かしていると途中で、しばしば片方のバッファのメッセージが届かなくて1バッファの繰り返しになったり、
動かしているアプリごと異常終了する現象がでてしまいます。
もしこのAPIに造詣が深い方いらっしゃれば、アドバイスいただけないでしょうか。 >>300
アドバイスいただきどうもありがとうございます。
ご紹介いただきましたサイト情報も参考にさせていただいていましたが、現象が発生してしまいます。
知りたい点としましてはwaveInAddBuffer()で追加したバッファの順でデータがたまったら、
メッセージ(またはコールバック)を確実に返してくれるものなのか、です。
まれにメッセージ(またはコールバック)が帰らずスキップされ、再利用の処理ができない為に、
結果使いまわしているバッファ数が減少してしまいます。 >>301
WAVEHDR構造体のdwFlagsのWHDR_DONEビットを監視しなきゃダメなんじゃないの?
バッファ初期化のwaveInPrepareHeaderはエラー出てない? >>302
そうなんです。
届いたメッセージに対応するバッファをwaveInUnPrepareHeader(),waveInPrepareHeader()するときに
エラーになる場合があります。
dwFlagsの値は確認しないでいました。
dwFlagsの値を事前に確認することのがヒントになりそうですね。
アドバイスありがとうございます。 プログラミングの勉強も兼ねて、FMシンセを作ってみたんだけど
キャリアにモジュレーションかけたらピッチが狂って、鍵盤と関係ない音が出る
これじゃあ楽器として演奏できない
どこを間違ったんだろう >>305
ttp://elm-chan.org/junk/32bit/nxpdip.html#fm
ソースコードは公開されているし参考になるかも? SONICWARE LIVEN 8bit warpのオシレーターテーブルって32サンプルしかないんだね
前にFMシンセわからんって言った者なんだけど、試しに自分のプログラムの
オシレーターを32サンプルにしてみた。
1キャリア1モジュレータの2OP構成なんだけど、32サンプルにしたら
結構面白い音が出る
変調かけたらピッチがずれる話なんだけど、306の言う通りそういうもんみたい 441Hzと260Hzと120Hz。この3つのsin波だで作っ加算合成和音のwavファイルを大浦FFTのrdftメソッドに読み込ませて演算結果をテキストファイルに書き出して眺めてみました。そこで違和感。
120Hzは最大音量の50%になるように作ったので15869.0(short値を基準にしてます)
という出力結果は納得なのですが、前後のバッファ119Hzと121Hzにも2011.0と2694.0…と、結構高めの音量が出力されてるのです。これ何とかなりませんかね?
スペクトルグラフ作る時に凄く邪魔で… >>314
具体的に分解能でどのように変化するのでしょうか?
ちなみに分解能は
44100÷4096=10.76…Hzにしてます。 >>314
指摘頂いたので自分でも調べてみたんですが、つまりリーケージの問題ってことですか?
確かに…窓関数なんか使わずにwavファイルから得た4096のdataをそのままrdftに渡してましたから、分解能の誤差分でスペクトルが広がっていたのかも。
音響プログラム初心者のものでお恥ずかしい限りです。
情報検索の足掛かりが出来ましたので、窓関数に付いて調べてみようと思います。
回答ありがとうございました♪ つべの動画漁ってたらマクシミリアンのライブラリ激推しされてたんですけど
皆こういうのコッソリ使ってるんですか? >>316
窓関数については
https://www.a;mazon.co.jp/dp/4789830292/
p268-270 に三角窓、ハミング窓、ハニング窓についてごく簡単にまとめられています、章末に参考文献も記載されています 倍精度で計算するのが流行ってるのでちょっと試してみたんですが
ブロックで分けて処理するよりも、1サンプル単位で逐次処理した方がパフォーマンス出ますね
サンプルのサイズが大きいとSMIDで並列処理しにくいとかキャッシュに乗りにくいとかあるのかな