USB-BLEワイヤレスMIDIアダプター
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
アプリとオンラインサービス
> ![]() |
|
このプロジェクトについて
低エネルギーBluetoothを使用して、USBMIDI機器をiOSデバイスにワイヤレスで接続します。
K-Board、BopPad、ArtiphonなどのUSB MIDI機器をGarageBand、DrumJam、GeoShredなどのiOS音楽アプリに接続するには、通常、Apple Camera ConnectionKitが必要です。ただし、一部のArduinoコンポーネントとスケッチを使用すると、USB機器からMIDIメッセージを読み取り、Bluetooth LE(BLE)を使用してiOSデバイスに送信するアダプターを簡単に作成できます。
私は3つの異なるアプローチを調査し、このプロジェクトでそれぞれに指示を与えました。
Arduino 101 / Hobbytronics USB HOST-MIDI
最初の設計は、部品と接続の点で最も単純です。これは、Arduino101によって提供されるBLEサポートとHobbytronicsUSBHOST-MIDIブレイクアウトによって提供されるUSBホストサポートを組み合わせたものです。
Arduino 101とHobbytronicsのブレイクアウトは、シリアルI / Oを使用して通信します。 Arduino 101で実行されているスケッチは、USBホストブレークアウトからMIDIメッセージを読み取り、統合されたBLEサービスに書き込みます。
<図>

アダプターは現在、一方向にのみ動作し、USBからメッセージを受信しますが、USBには送信しません。ちなみに、これはこのプロジェクトのすべてのアダプターに当てはまります。このため、Hobbytronicsブレイクアウトには、5V、GND、およびTXの3つの接続のみが必要です。 TXピンをArduino101のRXピン(D0)に接続します。
アダプターをプログラムするには、CurieUsbMidiBridgeスケッチをArduino 101にアップロードします。これで、楽器をプラグインし、iOSアプリをアダプターに接続して(「CurieBLE」をスキャン)、再生を開始する準備が整いました。
多くのiOSアプリは、BLEMIDI接続を直接サポートしています。そうでないアプリの場合、midimittrアプリが仲介者として機能できます。
安定性の理由から、このアダプターの実装は、NoteOnおよびNoteOffメッセージのみを処理します。 Control Change、After Touch、Pitch Bendなどの他のチャンネルメッセージのサポートは、将来のバージョンで有効になる可能性がありますが、現時点ではスケッチでコメントアウトされています。
Arduino Mega ADK / SparkFun nRF52832
2番目の設計は、SparkFun nRF52832Breakoutによって提供されるBLEサポートとArduinoMegaADKによって提供されるUSBホストサポートを活用します。
SparkFunnRF52ブレイクアウトとArduinoMegaはI2Cを使用して通信します。 nRF52はI2Cマスターであり、ArduinoMegaからのMIDIメッセージを要求します。 Arduino Megaから受信したメッセージは、nRF52のBLEサービスを介して送信されます。 Arduino Megaで実行されているスケッチは、I2C要求に応答し、統合されたUSBホストコントローラーからMIDIメッセージを読み取り、nRF52に書き込みます。
<図>
SparkFunブレイクアウトには5つの接続が必要です:
- 3V3
- GND
- RST
- SDA(24)
- SCL(25)
SparkFun nRF52ブレークアウトは3V3で動作し、Arduino Megaは5Vで動作するため、3つのロジックピンは双方向レベルシフターを介して接続されます。
注:SDAとSCLの割り当ては、SparkFunのvariants.hファイルで再定義する必要があります。詳細については、このフックアップガイドの説明を参照してください。
スケッチnRF52MidiWireMasterをSparkFunブレークアウトにアップロードし、UsbMidiWireSlaveをArduinoMegaにアップロードします。次に、機器をUSBホストコネクタに接続し、iOSアプリをアダプタに接続して(「nRFMIDI」をスキャン)、再生を開始します!
Arduino Uno / USBホストシールド/ Bean +
最終的な設計では、LightBlue Bean +のBLE機能を採用し、下の写真に示すように、ArduinoUnoに接続されたUSBホストシールドとペアリングしています。 Arduino Mega ADKは、USBホストシールドとArduinoUnoの組み合わせの代わりに使用できます。フリッツの図は、Arduino MegaADKバージョンを示しています。
前の設計と同様に、2つのMCUはI2Cを使用して通信します。 Bean +はI2Cマスターであり、ArduinoUnoにMIDIメッセージを要求します。 Unoから受信したメッセージは、BeanのBLEサービスを介して送信されます。 Unoで実行されているスケッチは、I2C要求に応答し、接続されているUSBホストシールドからMIDIメッセージを読み取り、Bean +に書き込みます。
<図>
Bean +には4つの接続が必要です:
- GND
- 5V
- SDA(A4)
- SCL(A5)
注:Bean +を5V動作に切り替えます。
スケッチBeanMidiWireMasterをBean +にアップロードし、UsbMidiWireSlaveをArduinoUnoにアップロードします。次に、機器をUSBホストシールドに接続し、iOSアプリをアダプターに接続して(「Bean +」をスキャン)、再生を開始します。
パフォーマンス上の理由から、コントロール変更およびアフタータッチチャネルメッセージのサポートはスケッチでコメントアウトされていますが、将来のバージョンで有効になる可能性があります。
コード
CurieUsbMidiBridge.ino
Arduino 101 + Hobbytronics USBHOSTで使用-MIDIhttps://github.com/joebowbeer/CurieUsbMidiBridgenRF52MidiWireMaster.ino
nRF52ブレークアウトにアップロードし、UsbMidiWireSlave.ino(以下を参照)をUSBMIDI機器に接続されているArduinoにアップロードします。https://github.com/joebowbeer/nRF52MidiWireMasterBeanMidiWireMaster.ino
Bean +にアップロードし、UsbMidiWireSlave.ino(下記)をUSBMIDI機器に接続されているArduinoにアップロードします。https://github.com/joebowbeer/BeanMidiWireMasterUsbMidiWireSlave.ino
Arduino ADK(またはArduino Uno + USBホストシールド)にアップロードします。 USB MIDI機器からMIDIメッセージを読み取り、それらをWire(I2C)マスターに書き込みます。https://github.com/joebowbeer/UsbMidiWireSlave 回路図
Arduino101とHobbytronicsUSBHOSTの接続-MIDIArduinoADKとSparkfunnRF52Breakoutの接続ArduinoADKとLightBlueBean +の接続製造プロセス