Publish 2020.11.15
ATmega32u4というのはArduino LeonardoやMicro、Pro Microに使われているマイコンなんですが、このマイコンはUNOやMEGAにあるようなUSB-シリアルを変換するチップが不要です。
これの何が嬉しいかというと、USBのMIDIデバイスとして動作させることができるので今まで使っていたHairless MIDIを使う必要もなく、USBシリアル変換のチップを書き換えをする必要もなく単体でMIDIデバイスとして利用できます。便利。
ちなみにHIDデバイスとして動作させることができるのでキーボードやマウスを自作するのにも使えるっぽいです。
ATmega32u4が使われている一番オーソドックスなボード?であるArduino Leonardoを買いました。互換品と悩みましたが、Arduinoにはかなりお世話になっているので本家にお金を落としました。改めて純正品は綺麗だなと再確認。
では、今回の本題であるArduino-USBMIDIライブラリを使ってみましょう。
今までお世話になってきたArduino MIDIライブラリですが、バージョンが5以降についてはコード内で最初の宣言をちょっと変えてあげるだけで以下のライブラリと簡単に併用にできるようになりました。最高です。なんとBLE-MIDIもあります、それについては別記事で。
Version 5 of this library, allows for other Transport layers than the original MIDI 1.0 Electrical Specification (hardware serial).
USB-MIDI
AppleMIDI or rtpMIDI
ipMIDI
BLE-MIDI
というわけで早速Arduino-USBMIDIライブラリをインストールします。
似たような名前のライブラリがいくつかあって、ちょっと紛らわしいですがlathoubさんのUSB-MIDIをインストールします。
IDEのライブラリマネージャからインストールするだけです。
早速テストコードを書き込みます。
シンプルなビートを送り続けるコードです。
問題なく動きます。めっちゃ簡単。
もちろんHelloDrumライブラリ(Ver.0.7.7)とも併用できます(動画後半)。Example>Basic>SimpleSensingを使います。
35行目から41行目にあるこの部分を、
//Using MIDI Library. If you want to use USB-MIDI, comment out the next two lines. #include <MIDI.h> MIDI_CREATE_DEFAULT_INSTANCE(); //Uncomment the next two lines for using USB-MIDI with atmega32u4 or Teensy //#include <USB-MIDI.h> //USBMIDI_CREATE_DEFAULT_INSTANCE();
こうします。
//Using MIDI Library. If you want to use USB-MIDI, comment out the next two lines. //#include <MIDI.h> //MIDI_CREATE_DEFAULT_INSTANCE(); //Uncomment the next two lines for using USB-MIDI with atmega32u4 or Teensy #include <USB-MIDI.h> USBMIDI_CREATE_DEFAULT_INSTANCE();
あとは書き込むだけです。