2013年10月11日金曜日

ArduinoでMIDIケーブルを使わずにMIDI信号をやりとりする。

つまりUSB接続でMIDI通信をしよう!と言うこと。

Appleのコンピュータを買うと最初からGarage bandというDAWソフトがついてくる。
それをArduinoから制御しましょうという話。もちろんAbleton Liveとかも操れるはず。

材料
  1. Japanino…手持ちのArduino互換のマイコンボードがこれしかなかった
手順
  1. JapaninoにArduino1.0.5からも書き込みができるようにする。
  2. シリアルからMIDI通信するソフトをダウンロードする。
  3. IACドライバを設定する。
  4. MIDIライブラリをダウンロードする
  5. Japaninoのプログラムを書き、書き込む
  6. DAWを立ち上げる。
  7. シリアルMIDIソフトをオンにする。
  8. 糸冬
JapaninoをArduinoIDE 1.0.5から扱えるようにする方法
 ここにすべて書いてある→http://dexlab.net/pukiwiki/index.php?Memo%2FArduino#n12f195c
 簡潔にまとめると、学研で配布しているArduinoIDEのパッケージの中身のpins_arduino.cとpins_arduino.hをhardware\arduino\cores\arduinoにコピー、そしてboards.txtを書き換えればよい。Macでのパッケージを参照するためにはアイコンを右クリックして「パッケージの中身を表示する」を選べばよい。

シリアルーMIDIソフトのダウンロード
 またもや、ここに全て書いてある→http://projectgus.github.io/hairless-midiserial/
 他にも同じような機能を持つソフトはあるのだが、それらのソフトを試したなかで動いたのはこれだけだったのでこれを使えば問題は無いはず。(大きい声では言えないけどSerial−MIDI Converterっていうやつです。これまた大きな声で言えないけどMake:のオンラインマガジンに紹介記事が載ってたり、ブログがヒットしたりして惑わされました。今はJavaの仕様の関係で使えない、みたいです。)

IACドライバはMacに最初から付いている。
 アプリケーション→ユーティリティ→Audio MIDI 設定というソフトの中に入っている。
 一番左にあるIACドライバをダブルクリックするとプロパティが表示される。
 「装置はオンライン」にチェックマークを入れる。

Japaninoへのプログラム
MIDIライブラリをArduinoIDEに追加する必要がある。
以下はベロシティを段階的に変えて発音させるというプログラム
これを書き込む

#include<MIDI.h> 

void setup(){
  MIDI.begin();
  Serial.begin(115200);
}

void loop(){
  for(int velocity=0; velocity<=127; velocity++){
    MIDI.sendNoteOn(36,velocity,1);
    delay(250);
    MIDI.sendNoteOff(36,velocity,1);
  }
}
 
DAWを立ち上げる
GarageBandでもなんでもよい。

Hairless midi-serialを起動して設定する。
上記のように設定すればよい。
Serial portにはArduinoがつながっているUSBポートを選択する。
そして左上のボックスにチェックを入れると音が鳴り始める。

こんなつかいかたもある
圧電ブザーから取り出した圧電素子をつかって衝撃をトリガーとした。衝撃の強さを0-127の段階に置き換え、それをベロシティとする。


最後に
 ここまで非常にめんどくさい手順が必要だったわけだが、現行版のArdiuno UNO を購入することで解決することができる。ArduinoUNOはUSB接続の際にHIデバイスやMIDIデバイスへと自らを変化させることができる。
 このブログに書いてあることはそういった方法から考えるとえらく遠回りな方法を示していることにお詫び申し上げる。しかしながらこの方法ではシリアル通信さえできれば良いので他のマイコン、例えばPIC、でも同じことができるのではないかと思う。

0 件のコメント:

コメントを投稿