So-net無料ブログ作成

Mp3デコーダでディーゼル音のための実験2 [ds-DCCデコーダ]

 さて、今週も一応やってみたのですが、ほぼ進んでいません。
 かなり久しぶりにMp3デコーダとDSBlueBoxを引っ張り出してきて実験です。
re_DSC02149.jpg
 浦島太郎です。スマイルコネクタ経由でのMp3デコーダへの書き込みでエラーがでてパニクリそうになっていました。
 一回目は失敗するお約束でしたね。
 で、まあ、サンプリングした音0.5秒の繰り返しで以下です。音は、加速中の一定音のところです。このあともうちょっとスピードが上がると、速度比例の音に変わったような気がします。


 位相を0.25秒ずらして2音だとこうでした。


 位相を0.16秒ずらして3音にしたらこうでした。


 うーん。あまり変わらないので、1音でいいかという感じです。

 問題はこっちではなくて、加速時の音階です。
 0.5秒、16kHzサンプリングデータのデータ数が8000個ほどなのですが、現在のデータのアドレスを小数指定するためのUnsigned intで扱える長さは65536個です。
音階を変えるときは8000データを65536個を超えない2の乗数で小数扱いするのですが、65536/8000 = 8.192で、整数以下は8分割しかできません。
 つまり、元サンプリング音の周波数と倍の周波数の音までの刻みが8個しか取れません・・・。
 ほぼ、ピアノの白鍵盤音階と一緒なので、スピードを変えると離散的にドレミファ・・・みたいに
音階が変わっていきます。キハはドレミファじゃないんだが・・・。
 もちろん、unsigned longにしてしまえば4,294,967,295まで扱えるらしいので、この問題は解決のような気がするのですが、なんかunsigned longにしたら、どうも音のデータでないところまで参照を始めてしまいFAXのような音がします。バグっています。
 一度Mp3デコーダでのヤマ勘実験はやめて、シリアルで確認しながらやった方が良いかなあとちょっと思いました。
 さて、先は長そうだが、時間がない・・。

コメント(2)