MIDI機器認識できた(RaspberryPiでArduino) | ..あちゃ! no mic's

..あちゃ! no mic's

野良作業でウクレレサイズの楽器製作中(構造材としての剛性をテスト)

SANTA no Mix

ArduinoをMIDI接続するにはDINソケットやシールドがいると思っていたけど、こんなに簡単!
ジャンパーピンだけで出来た。
今ある、参考ページは古いので、新しく書き換えた。
参考のページは「KainokiKaede's diary」
ここには多数のリンクが載っており、下調べするにはいいかも。
実行するには少し変更点があるので注意!

RaspberryPiでの変更は手がやけた。

まず、端末から

$git clone https://github.com/kuwatay/mocolufa
Dfu-programmerを導入する。
RaspberryPiのDfu-programmerは古いバージョンなので使えなかった。
ちょっと手がやけるけど、ソースからコンパイル。
$git clone https://github.com/dfu-programmer/dfu-programmer
$sudo apt-get install autoconf libusb-1.0-0-dev gawk
$cd dfu-programmer
$./bootstrap.sh
$sudo mv dfu_programmer /etc/bash_completion.d/
$cd /etc/bash_completion.d
$source dfu_programmer
$cd ~/dfu-programmer
$./configure
$make
$sudo make install
ここまででインストールは終わり。
ArduinoをRaspberryPiに接続する。
$lsusb
自分のArduinoは「Arduino SA Uno R3」になっていた。
ついでにUSBのところのチップの名前を読んでおく。
自分の場合は15倍のルーペでやっと見えるくらいだった。
「atmega16u2」と書いてあった。
ArduinoのUSBケーブルを抜く。

再度、下の写真の通り、ジャンパピンを(USBの近く)差し込んでから、RaspberryPiと接続する。


接続したまま、ジャンパピンを抜き去り、
$lsusb

ともう一度叩くと、「Atmel Corp」という表示になっている。
それを確認してから、

$cd ~/mocolufa/HEX
$sudo dfu-programmer atmega16u2 erase
$sudo dfu-programmer atmega16u2 flash dualMoco.hex
$sudo dfu-programmer atmega16u2 reset

これで書き換え終了。
MIDI機器としてArduinoが認識されるはずだ。

Arduinoにスケッチを書き込むときは、以下のように、ジャンパーを差せばOK。



「Arduino MIDI Library v4.2」をダウンロード解凍後(GitHubもある)、

$sudo cp -r MIDI /usr/share/arduino/libraries/

で、ライブラリを追加する。 Arduinoのスケッチ(ジャンパーピン接続してないと書き込めない)

 #include <MIDI.h> MIDI_CREATE_DEFAULT_INSTANCE(); int notenumber[8]={60, 62, 64, 65, 67, 69, 71, 72}; int i; void setup(){     MIDI.begin(); } void loop() {     for(i=0; i<8; i++){         MIDI.sendNoteOn(notenumber[i], 100, 1); // Velocity=100, Channel=1         delay(500); // bpm=120         MIDI.sendNoteOff(notenumber[i], 100, 1);     } }
 赤字で書いたところが重要。 この一文がないと古いソースは動かないみたい。
 $sudo apt-get install amsynth
 ジャックとAmsynthを起動後、ArduinoのMIDI機器を接続したのが以下の動画。