NTS-1のコントロールパネルと音源ボード間の信号を覗いてみた


NTS-1のコントロールパネルと音源ボード間の通信はSPIらしいので、MicroPythonでも音源ボードを制御できるのでは?と思い、コントロールパネルと音源ボードの通信をロジアナで調べてみました。
SPIの信号は下図のCK_PNLがクロック、RX_PNLがMOSI、TX_PNLがMISOです。図のピン配置は音源ボードを上から見た状態です。

カスタムコントロールパネルに対応したファームウェアは現時点ではまだリリースされていませんが、パネル用ソフトウェアのライブラリは公開されています。
ですので、信号とライブラリソースを突き合せればそこそこ分かるのではないかと思ったのですが、結論から言うとどうも現在のファームウェアは、カスタムコントロールパネル用にリリースされるファームウェアとは結構違うようです。

通信プロトコル自体はSPIで、コマンドは基本4バイトで1セット、それがだいたい3KHzくらいの周期で常に流れています。

ライブラリのソースでは、鍵盤からの入力はMIDI同様にノートオン/オフのコマンドを音源ボードに送るように見えました。ですが現在のNTS-1のファームウェアは、キーが押されるとそのスキャン状態を常に音源ボードへ送っているようです。

タッチパネル鍵盤を押すと、該当するコマンドが音源ボードへ流れますが、押したときと離したときにイベント的に流れるのではなく、押している間ずっと、以下のような4バイトのステータス情報が流れているようです。

先頭の0x43, 0x00は固定値で、たぶんこれがコマンドであり、そのあと2バイトがパラメータのようです。

他にもちょこっと調べた結果を書いておきます。(たぶんあまり有用ではないでしょうけれど)

・音源からパネルへ返すACKは0xE1、パネルから音源へは0xE3
・起動時のシーケンス:
音源→パネル 7D 20 00 00
パネル→音源 63 A0 08 88 00 63 20 88 00
音源→パネル 61 C0 C0
パネル→音源 63 C0 C0
・時々音源から流れるコマンド
音源→パネル 01 F8 FE 00

カスタムコントロールパネル対応のファームウェアはもうすぐリリースされるはずなので、そうしたら改めてMicroPythonからの制御を検討してみようと思います。

【3/10追記】本日リリースされました。

コメント