ミニUSBホストシールドの改造
ミニUSBホストシールドは困った仕様なので改造が必要。下記の記事を参考にした。
以下に要点をまとめる。
問題点
MAX3421Eは3.3V用のICなのでVccは3.3Vでなければならないが、VccとVbusが直結されているため、USBに5Vでなく3.3Vが給電されてしまう。
解決策
VccとVbusの結線をパターンカットし、RAWとVbusをジャンパで結線する。そしてRAWに5Vを給電する。すると、Vbusは5V、Vccは3.3Vとなる。5VをRAWに給電するためにUSBシリアルアダプタも少し改造した。
ソフトウェア
USBホストおよびUSB-MIDIのライブラリは下記のものを利用した。
実験に用いたスケッチを下記に掲げる。これは上記ライブラリのサンプルスケッチ USBH_MIDI_dump を元にしている。
MIDIメッセージの内容
USB-MIDIのメッセージは4バイトの固定長であり、2バイト目以降にMIDI本来のメッセージが格納される。詳しくは下記を参照。
nanoKONTROL2のスライダやノブ、ボタンを操作すると「コントロールチェンジ」のメッセージが送られてくる。
- 1バイト目 : 0Bh = ケーブル番号=0, コントロールチェンジ
- 2バイト目 : B0h = コントロールチェンジ, チャンネル番号=0
- 3バイト目 : コントロール番号
- 4バイト目 : データ値
コントロール番号の割り当て
工場出荷状態のnanoKONTROL2ではコントロール番号は下記のような割り当てになっている。
- 00h ~ 07h : スライダ (左から順に)
- 10h ~ 17h : ノブ (左から順に)
- 20h ~ 27h : Sボタン (左から順に)
- 30h ~ 37h : Mボタン (左から順に)
- 40h ~ 47h : Rボタン (左から順に)
- 29h : PLAYボタン [>]
- 2Ah : STOPボタン [□]
- 2Bh : REWボタン [<<]
- 2Ch : FFボタン [>>]
- 2Dh : RECボタン [〇]
- 2Eh : CYCLEボタン [CYCLE]
- 3Ah : PREV TRACKボタン [<]
- 3Bh : NEXT TRACKボタン [>]
- 3Ch : SET MARKERボタン [SET]
- 3Dh : PREV MARKERボタン [<]
- 3Eh : NEXT MARKERボタン [>]
スライダおよびノブのデータ値は、00h~7Fhの間で連続変化する。
ボタンのデータ値は、押した時に7Fhとなり、はなすと00hになる。
なお、スライダ、ノブ、ボタンのチャンネル番号、コントロール番号、データ値は、KORG Kontrol Editorというソフトでカスタマイズできる。
疑問点
スライダ、ノブを動かしたときにはメッセージが来るが、動かす前の初期値は取得できないものか?