FM音源をソフトウェアで作れないかというお話
の続き。
あれもこれもと盛り込むと大変なことになっちゃう
ので、ひとまず最低限のスペックでプロトタイプを
作ってみたいと思います。
で、電卓弾きながら紙にメモをざっくりと書き出して
みました。仕様的にはこんな感じ。
・AVRのアセンブラで作る
・PWM使って、頑張って40000Hzを出してみる
・オペレータは2個だけ(1個はキャリア、1個は
モジュレータ)で、単音発声とする
・LFO、エンベロープはひとまず見送り
・内部のsin関数テーブルは8ビット精度とする
・メロディーデータ(楽譜)は固定決め打ちで
ドレミド(4つ目のドは1オクターブ上)の4音とする
・キャリアとモジュレータの周波数比はプロコンで
指定しておくことにして、プログラム修正にて
1:1から1:7で可変とする
・変調の度合い(キャリアのノコギリ波に加算する
モジュレータの振幅)もプロコンで指定
・音程は、少し周波数が不正確になっても処理が
簡単に済むように、40000Hzの割り込み
タイミングに合わせた長さで丸める
・その他出来るだけ手を抜きつつ、上記で面倒な
ものがあれば更に手を抜く…音を出すことが
最優先
といった感じ。
ちなみにドレミドの各音を周波数にすると、
(通常) 262Hz 330Hz 392Hz 523Hz
(試作) 261Hz 331Hz 392Hz 526Hz
(四捨五入値)
といった具合に数Hzずれます。まぁ、このくらいは
いいことにします。
MEGA8が手元にいっぱいあるのでMEGA8を使いたいと
思うのですが、そうするとクロックは16MHz。
割り込み1回につき400クロックに相当。
MEGA48なら20MHzが使えるから、500
クロック使えるんですが、この間作ったシリアル版の
arduinoボード(MEGA8登載)を流用しちゃえば
はんだ付けもブレッドボードも不要になるので、
流用してしまおうかと思ってます。
(この場合もちろんarduinoのIDEもブートローダー
も使えませんが)
このくらいに機能を削れば、ひとまず作れないって事は
なさそう。まずは少しずつ進めて、音を出してみようと
思います。
|