「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



AVRでFM音源の続き。

コーディングと目チェックがおおよそ終ったので、
シミュレータに掛けてみて、思ったとおりの動作を
してくれるのかを試してみました。

…さて、どうでしょう…

うーん、いくつか想定外の動作。確認してみると
簡単な間違えをいくつか発見。

掛け算の筆算ロジックで、必要な数字を足し忘れて
いたり、割り込みが500クロック前提だったり
250クロック前提になっていたり。
ノートの書き方が今ひとつだったな。ゴチャゴチャ
してわかり難い…。

適当に直してシミュレータに掛けなおしてみると…

うん。「ド」の音の処理はだいたい想像どおり。
周波数比を変えたりしてみたところ、これも大体
想像どおり。


これに気を良くして、「ミ」の音のロジックを
組み込んでみてシミュレート。

うーん、なんか変。

緩やかに右肩上がりに数値が上昇していって、
1波形分のサンプル数(241サンプル分)を
出力したところで強制的にゼロ点に戻る感じ。

どこが悪いんだろう?
ひとまず、もう一回1ステップずつ動かしてみて、
想定どおり動いているのかを見直そう…。

ま、もうちょっとでコーディングと疎通は
okだな。

あとは、動作ボードのPLAYER上で悪さ
しないように、出力ピンの衝突とか、入力のまま
オープンにならないようにとか、その辺を確認
しなおしたら実機で動かしてみよう。

その後は、せっかくのPLAYERなので、
十字キーやボタンで周波数など操作しつつ、
状況をテレビ表示できるようにしたいな。


その後は「和音」がどの程度出せるかだな。

目下、シミュレーターでは1モジュレータ+
1キャリアーで50クロックちょっとという感じ。

現在はSRAMを全然使わずレジスタファイル
で全部済ませており、これを和音を対応にするには
SRAMを使うようにしないとならないので、
もう少し処理速度は遅くなるかな。

それを加味しつつ、割り込み周期とか和音合成
とか、フィードバックとかを考えていくと
せいぜい4~5和音程度が限界かな。

今は1モジュレータ+1キャリアのアルゴリズム
1種類しかないけど、これをもう少し改善すると
したら、もうちょっと和音数は減るかも。

あ、エンベロープも組み込んでなかったな。
それが一番のネックになりそう。



コメント ( 0 )




週末、ノートに書き出していたメモを元にFM音源の
プログラムを書き進めました。

だいぶいい感じになってきました。まぁ、まだ全部は
書き終わってないのですが、モジュレータとキャリア
のsin関数出力の計算式部分を書き終わりました。

この部分が一番大変なところ。つまり産みの苦しみは
殆ど終了。アセンブラでsin関数扱おうって言う方が
ちょっと無理があるんですけどね。


といっても、まだ「ド」の音1個分だけしか出来てません。
まぁ、ここまでできればあとの3つの音もコピペするだけ。
残りは簡単に片付くかと。

ちなみに、現在組み込済み/未済の機能は

・単音のみ(和音は不可…キャリアが1個しかない)
・モジュレータは1個だけ(変調のアルゴリズムが選択不可)
・周波数比はプロコンで変更可能
・モジュレータの変調度合いはプロコンで256段階で設定可能
・エンベロープパターンは未登載
・モジュレータのフィードバックは未登載

と、FM音源を謳っている割にはまだまだ未熟です。
でも、これだけでも単なる矩形波よりはずっと
豊かな音が出るはず。

音が出るまで、あとちょっとだけだな…。


そういえば昔、8ビットパソコンで音声出力
しちゃってた凄いゲームがあった記憶が…。
アレは凄かったなぁ。パラディンだったかな?
 「ついにパソコンが喋った!」
と。もう20年以上前のお話ですが…。

AVRでもいつか音声合成でサンプリング
の音声を出力したいな。




コメント ( 0 )