YMF825 トーンエディタ
2つ目のYMF825Board を入手し、2機をTeensy4.0にSPI接続してコントロール。CSだけ別にして同じSPIバスにつなげました。
基本的には、どちらにも同じデータを送信して、MIDIのCC PANで左右に振れるように対応しました。
FM音源の内部レジスタのイメージそのままで、音色を操作できる画面をVisualStudio C#でFormアプリとして作成しました。
それでも思ったように音が変化しない。ビット操作を間違っているような気もしてきました。アナログのADSRとは異なり、ARなど、アタックは速さがパラメータ(アナログは長さがパラメータ)大きくなると長さは短くなる、っていうのはDX7を初めて触ったときからわかってたのですが、DX7て、アタックからサスティンまで2、3点設定できた気もします。なんだかんだで、SLとSR、RRあたりの関係がよくわかりません。
DX7にないWS(DX7は6オペレータですが、すべてのオペレータは正弦波です)があって、最初から倍音豊富な音が鳴る。
やはり、選択しているアルゴリズムALGやWSは図がないと分かりずらいなぁ。
YMF825は音色のレジスタも16音分持っていますが、現在、先頭の音色だけ修正できるところまで来ています。
MIDIのSystem Exclusiveで送受信しようかとも思いましたが、7ビット刻みでのI/Fはデバッグが大変そうなので、音色の修正はUSB経由のSerialでTeensyにコマンド送受信で対応してます。MIDIもusbMIDIを使ってます。
Serial2 みたいに、簡単に複数のシリアル通信ができるならその方法が使いたいのですが、Serialはデバッグ用にログ垂れ流しできるよう確保しておきたいですね。
音色をPCローカルファイルに保存、ローカルファイルの音色をYMF825に送信ができる
ようにするのが次の目標かな。
編集している音色は常に先頭のレジスタに来るようにすれば、1パラメータ触ったら、TeensyからYMF825には30バイトだけ送れば済むので、仕組みを考えなければ。
YMF825の仕様として、通常、16音色目の1パラメータを変更したいとき、16音色分転送しないといけない。音を出しながら音色のパラメータをいじりたいので、なるべく転送量を少なくするには、編集中の音を先頭のレジスタに来るようにして、1パラメータを連続して修正しても、1回30バイトの転送で済ませたいわけです。
なので、
編集します
→ 先頭と編集したい音色入れ替え
→入れ替えにあわせてchのアサインも入れ替え
なんてことをしないといけないので、アサイン変換テーブルを1枚余計に挟まないといけないかな。