AVRでFM音源の続き。
コーディングと目チェックがおおよそ終ったので、
シミュレータに掛けてみて、思ったとおりの動作を
してくれるのかを試してみました。
…さて、どうでしょう…
うーん、いくつか想定外の動作。確認してみると
簡単な間違えをいくつか発見。
掛け算の筆算ロジックで、必要な数字を足し忘れて
いたり、割り込みが500クロック前提だったり
250クロック前提になっていたり。
ノートの書き方が今ひとつだったな。ゴチャゴチャ
してわかり難い…。
適当に直してシミュレータに掛けなおしてみると…
うん。「ド」の音の処理はだいたい想像どおり。
周波数比を変えたりしてみたところ、これも大体
想像どおり。
これに気を良くして、「ミ」の音のロジックを
組み込んでみてシミュレート。
うーん、なんか変。
緩やかに右肩上がりに数値が上昇していって、
1波形分のサンプル数(241サンプル分)を
出力したところで強制的にゼロ点に戻る感じ。
どこが悪いんだろう?
ひとまず、もう一回1ステップずつ動かしてみて、
想定どおり動いているのかを見直そう…。
ま、もうちょっとでコーディングと疎通は
okだな。
あとは、動作ボードのPLAYER上で悪さ
しないように、出力ピンの衝突とか、入力のまま
オープンにならないようにとか、その辺を確認
しなおしたら実機で動かしてみよう。
その後は、せっかくのPLAYERなので、
十字キーやボタンで周波数など操作しつつ、
状況をテレビ表示できるようにしたいな。
その後は「和音」がどの程度出せるかだな。
目下、シミュレーターでは1モジュレータ+
1キャリアーで50クロックちょっとという感じ。
現在はSRAMを全然使わずレジスタファイル
で全部済ませており、これを和音を対応にするには
SRAMを使うようにしないとならないので、
もう少し処理速度は遅くなるかな。
それを加味しつつ、割り込み周期とか和音合成
とか、フィードバックとかを考えていくと
せいぜい4~5和音程度が限界かな。
今は1モジュレータ+1キャリアのアルゴリズム
1種類しかないけど、これをもう少し改善すると
したら、もうちょっと和音数は減るかも。
あ、エンベロープも組み込んでなかったな。
それが一番のネックになりそう。
|