ArduinoUNOをMIDI音源にしてみる
ゴールデンウィークが過ぎましたが、皆さんはどうお過ごしになられたでしょうか。私は家でずっといました。まあ予想通りでした。
この前の自作プリント基板の記事が予想以上の反響だったようで、アクセス解析では1日だけアクセス数が桁違いになっていました。ありがとうございました。
さて、今回はArduinoをMIDI音源にするということで、n番煎じですがやってみました。
この前のOnlyMyRailgunの手動プログラム打ち出しでの演奏に比べて随分楽に音が聴けます...(当たり前)
MacでArduinoをUSBMIDIデバイスにするまで – necobit.com(ねこびっと)
作業にあたって、こちらの記事を参考にさせていただきました。ありがとうございました。
では手順についてまとめていきます。
公式のページにありますが、画像のようにUSB側のICSPピンのRESETピンとGNDピンをジャンパでショートさせてArduinoをPCに接続します。するとDFUがリセットされるので、ジャンパを外します。
2. PC側の設定
Xcodeの"Preferences..."をクリックします。
"Locations"の"Command Line Tools"オプションでXcodeのバージョンが表示されていればCommandLineToolsがインストールされています。私は見たときにはインストールされていました。
Mac での Xcode コマンド ライン ツールのインストール - RAD Studio
こちらに詳細があります。
次に、MacPortsをインストールします。
The MacPorts Project -- Download & Installation
それも完了したら、ターミナルから「sudo port install dfu-programmer」と入力してdfu-programmerをインストールします。
PC側はこれで準備完了です。
3.Arduino側の設定
まずはこちらからMIDI Firmware forArduinoUno(Moco)をダウンロードします。
GitHub - kuwatay/mocolufa: mocoLUFA (MIDI firmware for Arduino Uno)
ダウンロードした中の"dualMoco.hex"をデスクトップにでも移動します。
ArduinoUNOを接続し、ターミナルで
dfu-programmer atmega16u2 erase
dfu-programmer atmega16u2 flash (dualMoco.hexのパス)
dfu-programmer atmega16u2 reset
を実行します。
dualMoco.hexのパスは、FinderからdualMoco.hexのアイコンをドラッグ&ドロップしてターミナルに持っていくと簡単に入力できました。
Macのターミナル.appでファイルやフォルダのパスを簡単に入力する方法 / Inforati
4.書き換えの確認
これでArduinoをMIDI音源にできたはずなので、一度Arduinoの接続を外してもう一度PCに接続します。
DAWやMIDIプレイヤーで"MocoLUFA"と表示されていることを確認します。私は無料アプリのMIDITrailで確認しました。
5.Arduinoにプログラム
ArduinoにMIDI信号を処理するプログラムを入れます。まずはMIDIライブラリをインストールし、「スケッチ>ライブラリを使用>Add Library...」から追加します。
Arduino Playground - MIDILibrary
MIDI INのプログラムでToneライブラリ(デフォルトで入っているtone関数とは別物)を使っている記事もありますが、ここではtone関数を使うことにします。
※Toneライブラリを使っていて、Tone.cppのエラーが出ることがありました。これはTone.cppのヘッダ挿入の部分で「#include "Arduino.h"」が抜けていたためでした。なので、ライブラリを追加する前にXcodeなどで追加しておくと、Finderで検索する手間が省けます。
プログラムはこちらを参考にしました。
「int vol = 1;」となっているところを「int vol = 0;」に変更しました。
ちなみに、MIDI音源にしたArduinoのプログラムを書き換えるには、画像のようにMOSIとGNDをジャンパでショートさせて接続して書き換えます。ジャンパピンがあればそれを使うのがめんどくさくなくていいと思います。
ジャンパの接続がないことを確認して、MIDI音源としてPCにArduinoを接続し、MIDIプレイヤーでMIDIデータを再生します。
MIDIをRonald McDonald - YouTube さんにお借りして圧電スピーカーで再生してみました。(動画の音がだいぶ小さい上に生活音も入っているのでご了承ください)
MIDI.hがマルチチャンネルに対応していないのと、Arduino自体の処理が追いついていないのとで出せていない音があったりしますね。今後改良していきたいところではあります。
というわけで、ArduinoUNOをMIDI音源にしてMIDIファイルを再生するまでできました。
ここまでくると自分でデータも作って再生するまでやってみたいですね笑
データの綺麗な再生にも挑戦していきたいところです。
それでは、次の更新まで。
See you again!
投げ銭していただければ、めちゃくちゃ喜ぶのでよかったらよろしくお願いします。