Arduino-USBMIDI
長嶋洋一 (SUAC) ★
- PCと実世界とのインターフェース専用(スタンドアロン無し)
- 通常のArduinoでは「MIDIは出来ない」ことに注意
- ArduinoのシリアルをMIDI速度の31250bpsにしてMIDIインターフェース(フォトカプラ入力とオープンコレクタ出力とDIN端子)を実現した場合
- MIDI出力は「Arduinoが暇な時に出力する」ことで実現OK → ジャミネータと遊ぼうでフル活用
- MIDI入力はArduinoがシリアル入力を取りこぼすので使用できない
- 普通のArduinoでなく、「Arduino Micro」だけは使えるMIDIとしてMaxと連携可能
- スピードは31250でなく115200と高速、ライブラリがFIFO処理するのでMIDI受信も取りこぼしナシ(^_^)
- ホストのMacからは「Mac OSX標準MIDIデバイス」と見え、Maxでは「普通のUSB-MIDI機器」として、MIDI関係オブジェクトが扱える
- 長谷部さんが「奇楽堂」ブランドで公開しているTouchMIDI32と同等に扱える
- Arduinoスケッチをコンパイルする際に、同じディレクトリ内に「MIDIUSB.cpp」と「MIDIUSB.h」とを置いておくこと。これにより「OSに認識されるUSB-MIDIデバイス」となってくれる
- ArduinoからテストMIDIを連続出力するのがMIDIUSB_test.zip(→zipを解凍)
- Arduinoの"MIDIUSB_test"スケッチはMIDIノートの36から71までを1秒間隔でノートオン/オフ(duration=250ms)を繰り返す
- Maxの"note_receive"パッチは、「notein」オフジェクトを叩いてMIDI機器としてArduinoを選ぶとこのMIDI情報を受け取って表示する
- ArduinoがMIDIをとりこぼさないかの「いじわるテスト」がMIDIUSB_loop.zip(→zipを解凍)
- Arduinoの"MIDIUSB_loop"スケッチは、MIDI受信したデータをMIDI出力する、というエコーバック動作。通常のArduinoだと受信しきれず異常になる
- Maxの"heavy_traffic_MIDI."パッチは「noteout」「midiin」オフジェクトを叩いてMIDI機器としてArduinoを選ぶと、多量のMIDIノート情報をガンガンに出力し、かつ受信したMIDIノート情報を表示する。エコーバックしているArduinoがデータを落とした場合にはこの両者が対応しなくなるが、ちゃんと対応してくれている事を確認できる
- ArduinoをUSB-MIDIデバイスとしてMaxの出張所にしたサンプルがMIDIUSB_read.zip(→zipを解凍)
- Arduinoの"MIDIUSB_read"スケッチはMIDIコントロールチェンジを受信するとエコーバック送信しつつ、LEDを点滅させる
- Maxの"read_test"パッチは「ctlout」「ctlin」オフジェクトを叩いてMIDI機器としてArduinoを選ぶと、MIDIコントロールチェンジとして色々なデータを送り、エコーバックされてきた情報で確認している
- 秋月電子のステッピングモータを制御するサンプルがMIDIUSB_stepping(→zipを解凍)
- 秋月電子のステッピングモータを5個、個別に制御するサンプルがMIDIUSB_stepping2(→zipを解凍)
- 同様に自在に必要なArduinoスケッチに改造して、対応するMaxパッチも改良していけるのが「Arduino-USBMIDI」の楽しみ方(^_^)