15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Arduino Leonardo/MicroでもMIDI使いたい。

Last updated at Posted at 2015-04-15

以前、Arduino UNOと@morecat_labさん作「mocoLUFA」を使ってMIDIコンを作る方法を紹介しましたが、何人かの方に、Microでも使える?
と聞かれたので、Microを使ったやり方も紹介したいと思います。

MicroやLeonardoだとrkistner/arcoreを使うと楽

Arduino MicroArduino Leonardoは、ATmega32U4が1つだけ搭載されたマイコンボードです。これらのボードは、Arduio UNOとは仕組みが違うので、同じ方法ではMIDIデバイスにできません。

そこで今回は、rkistner/arcoreを使ってMIDI機能を使えるようにしてみましょう。

インストールは簡単

私が試せる環境がMacしかなく申し訳ありません。Windowsでも同じように出来るはずです。

今、例のArduino戦争のお陰で、Arduino IDEは2カ所からリリースされているという状況ですが、Arduino IDE 1.6.3を使うことにします。

arcoreのダウンロードとフォルダ構成の変更

まず、rkistner/arcoreをダウンロードします。
すると、いろいろファイルが出てきます。

この中から、hardwareフォルダをarcoreなどにrenameしてください。

インストール先

renameしたarcoreフォルダを下記フォルダ配下に移動してください。

Arduino.app/Contents/Java/hardware/

Macの場合、インストールされた Arduino.appを「パッケージの内容を表示」で開くと下の階層にアクセスできます。

これでインストール完了。
簡単ですね!

使い方。

それでは、使ってみましょう。

インストール後、Arduino IDEを再起動すると、ボードメニューに、Arduino AVR Boards (arcore)という項目が追加されます。

ボード選択

使ってるボードに合わせ、Arduino Micro (arcore)Arduino Leonardo (arcore)など選んでください。

その後、スケッチを書き込むとUSB-MIDI機能が追加されます!

ただし。

Arduino UNO Rev.3+MIDI.h+mocoLUFAを使った方法より、低レベルなAPIしかありません。
USB-MIDIの4byteのパケットを送受信できるようになるだけです。

というわけで、使いたい機能をある程度自分で作りながらスケッチを書く必要があります。

とはいえ、そんなに難しくはありません。
githubのサンプルを見ればだいたいわかります。

たとえば、ボタンを押したらNoteOnを送る、というスケッチは下記のような感じでOKです。
(ボタンは9番ピンに繋いでください)

midi.ino
void noteOn(byte channel, byte pitch, byte velocity) {
  MIDIEvent noteOn = {0x09, 0x90 | channel, pitch, velocity};
  MIDIUSB.write(noteOn);
}

int obutton;

void setup() {
  pinMode(9,INPUT);
}

void loop() {
  int button = digitalRead(9);

  if((obutton != button)&&(button == HIGH)){
    noteOn(0, 60, 100);
    MIDIUSB.flush();

  }
  delay(100);
}

Androidで使おうとするとキーボードでなくなるんだけど、どーすんだ!?

2015.12.5 追記

今日ハマり一瞬焦りましたので解決方法を。
arcore/avr/cores/arcore/USBDesc.hを開いて、下記をコメントアウトしてください。

#define HID_ENABLED

コメントアウト後、もう一度Arduino IDEを再起動してスケッチをビルド→書き込みすると治ります。(キーボードとして認識されなくなり、単なるMIDIデバイスになる)

まとめ

rkistner/arcoreを使えば、Arduino MicroやLeonardoで簡単にMIDIデバイスがつくれるので、やってみよう!

MIDIは楽しいよ!

15
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?