PIC AVR 工作室
シンセ・アンプラグド
こちらのサイトを大変参考にさせていただきました。
・仕組みなど
2 オペレータです。フィードバック無し。もっとも初歩的な変調です。
FM 音源の変調式は F=Asin(ωct + I sin ωmt) というものだそうです。
原理としては、外側にある正弦波の読み出し位置を、内側にある正弦波で操作している、ということです。
いくつかの変数を用いてこの操作を行うことで、元の正弦波とは似ても似つかない
複雑な波形が出力されるというのがミソ。
GB では 4bit 32step の波形メモリ音源が使えます。
この波形メモリに、計算で出した値を入れて音を鳴らすと、波形変調っぽい音源のできあがりというわけです。
ただし、2オペレータFMといっても、本物の FM音源 にあるようなエンベロープ(AR,DR,SR,RR 等々おなじみのアレ)
を取り入れていないので、豊かな時間変化をするような「それっぽい」音にはなりません。
32step が再生周波数でぐるぐる回っているだけなので、地味さは否めません。
じゃあ 32stepをいくつか繋げればいいじゃないか、ということになるのですが…(それって PCM?)。
GB の波形メモリ音源は 32Hz 〜 65536Hz の音程周波数で発音でき、32stepを 1/32秒〜 1/65536秒で 1周させます。
32step の再生をつなげようと思うと、最短で 1/65536 秒毎に次の32step を書き込まなくてはなりません。
ところで GB の CPU は倍速モードで 8MHz (=8,388,608Hz)です。
8,388,608 / 65536 = 128 で、CPU が 128 クロック分走る間隔での書き換えが必要ということになります。
で、肝心の書き換え処理はというと、「転送処理のみ」に絞っても 320 クロックかかってしまいます。
これでは計算する暇なんてとてもありませんね。
人間の可聴域は 20Hz 〜 20000Hz あたりらしいのでそこまでシビアでもないですが、状況としては変わりません。
・いやそれにしても
4bit 32step というのはいくらなんでも、という感じですが、本家FM音源と違って元の波形が弄れます。
今回は元の波形も 4bit 32step ですが、テーブル引きにして256byteくらいの固定波形で精度向上というのもアリでしょう。
さらにソフト音源なので 2オペレータ でなくても良くて、4op だろうが 6op だろうが大丈夫だと思います。
ま、それでも 出力が 4bit 32step なのは変わらないのですが。
出力波形を手動でエディットしたほうが早い
といってしまってはおしまいです。
計算で波形が出力できるということは、係数に LFO を絡ませたりすることで、リアルタイムに音色が変化するような
音作りができる(かもしれない)のです。たぶん音符一つ分くらいの間隔なら大丈夫でしょう。