arduino unoでMIDIコントローラーを作る(Windows PC+abletonlive使用、完全版)

キスミー!
今回は技術的な真面目な記事です!綺羅です(*´∀`*)
Da_XmIyVMAEpA1P

※MIDIケーブルやDIN端子やdfu programmingモードでのarduinoの中身書き換えやmocoなどは必要ありません!GND端子をreset2ピンやmosi2ピンとショートさせてモードの切り替えをする必要もありません!

さて

arduinoで自作MIDIコントローラー作りたいと思うヒト結構いますよね?
たぶん数千円で自作できるのでPUSHとかMPCとかいらなくなるよ(爆)←

しかし

通常arduinoでMIDIを扱おうとすると

なんと

工夫しないとできません!!∑(゚Д゚)

ちなみにarduino純正のMIDIライブラリーを使う方法やserial convertorを使う方法などあるのですが、よくわからなかったので自分なりの方法を公開します!
やってみれば簡単なのですが、参考になる書籍とか全部乗ってるwebサイトとかないんですよねー

ちなみに当方Arduino:1.8.5 (Windows 7)環境です!

ではまず

・arduino unoの回路はこんな感じ!
IMG_5626
要望あれば詳しく書きます!!

arduino uno単体一個と
抵抗1kΩとタクトスイッチとジャンパーワイヤー(オスーオス)が数個ずつ必要です。amazonやら秋月電子で買えます。ちなみにamazonの中国発送品を買うとありえないくらい安いですが予想以上に時間かかるし最悪届かない(!)のでお気をつけて〜
まずarduino IDEはダウンロードしましたか?ブラウザで使えるのもあるみたいですが、情報少ないのでダウンロード版を使います。
https://www.arduino.cc/en/Main/Software
arduinoとPCをUSBでつなぐと勝手に初期設定が始まります!

・arduino unoのプログラム(スケッチ)はこんな感じ

#include

int pins[8] = {13,12,11,10,9,8,7,6};
int pitch[8] = {60,62,64,65,67,69,71,72};
int status[8] = {0};

Bounce button[] = {Bounce(pins[0],20),
Bounce(pins[1],20),
Bounce(pins[2],20),
Bounce(pins[3],20),
Bounce(pins[4],20),
Bounce(pins[5],20),
Bounce(pins[6],20),
Bounce(pins[7],20)};

void setup() {
for (int i=0; i< 8; i++) { pinMode(pins[i], INPUT); } Serial.begin(38400); } void loop(){ for (int i=0; i< 8; i++) { button[i].update (); if ((button[i].read() == HIGH)&&(status[i] == 0)) { MIDI_TX(144,pitch[i],127); status[i] = 1; }if ((button[i].read() == LOW)&&(status[i] == 1)) { MIDI_TX(128,pitch[i],127); status[i] = 0; }if ((button[i].read() == HIGH)&&(status[i] == 1)) { }if ((button[i].read() == LOW)&&(status[i] == 0)) { } } } void MIDI_TX(unsigned char MESSAGE, unsigned char PITCH, unsigned char VELOCITY) { Serial.write(MESSAGE); Serial.write(PITCH); Serial.write(VELOCITY); } bounce.hがここ https://github.com/thomasfredericks/Bounce2/blob/master/Bounce1.zip
にあるのでダウンロードしてライブラリーに登録してください。

(※現在のバージョンのbounce2.hは別物です。)

さらにbounce.cppをメモ帳で開いて
WProgram.hと書いてあるところをArduino.hに変更して保存します。

準備ができたら

arduinoとpcをusbケーブルで繋いで
コンパイル→送信します。

次に

・arduinoの信号を受信してDAWに渡す仮想MIDIポートを作るプログラムが必要です。
これがloopmidiです。
ここで
https://www.tobias-erichsen.de/software/loopmidi.html
ダウンロードして開きます。
適当な名前でポートを作ります。
IMG_5607
次に
・MIDI信号を受信するDAWが必要です。
ここではabletonliveを使います。
オプション→環境設定→MIDI
MIDI inをloopmidiに設定して
トラックとリモートをオンにします。
IMG_5611
・arduinoの出すシリアル信号を
MIDI信号に変換するプログラムが必要です。

それがhairlessmidiです。
(arduino純正のMIDIライブラリーを使っているとプログラムの変更が必要なので要注意!)

ここから
http://projectgus.github.io/hairless-midiserial/
ダウンロードして
展開して開きます。
serialポートでarduino unoをMIDI outポートでloopmidiを選んでください。
IMG_5608
設定はpreferenceで通信速度を38400にしてください。
IMG_5610
これで
arduino unoとloopmidiポートをつなぐことができました。

arduino uno→hairlessmidi→loopmidi→abletonliveという流れができましたね?

これで音が鳴ります!

鳴らない場合は
usbの抜き差しとか
回路を間違えてないかとか確認してみましょう!

わからんことがあれば可能な限りコメントに問い合わせくれれば返信します!
本とかブログの情報ってみんなできるヒト向けばかりなんだもの〜一緒に頑張りましょう!(*´∀`*)👍✨手作り楽器ばかりでイベントやろうぜ!

次回はこれを元に和楽器のMIDI改造するよ!

とれとれきゅん