ArduinoでMIDI音源を作ってみた(改)
3年ほど前にArduinoでMIDI音源を作ってみたを書きましたが、当時よりソフトもハードも変化していて現在では動きませんので、改めて書き直してみました。
要件:MIDI入力&3和音(3音合成ではなく、それぞれ別ピンから)。Arduino Leonardo互換のATmega32U4系マイコンを使用。Arduino IDEはv1.0.5を使用
前回から違う点はこちら。
- Arduino MIDI Libraryが3.0→4.2に代わり、プログラムの書き方が若干変わっています
- 前回はマイコンがATmega328系でしたが、今回ATmega32U4系のArduino互換機を使用しているため、Arduino Tone Library(3音同時発声ライブラリ)が動きません。
ハードウェア
Strawberry Linuxのダ・ヴィンチ32U with Arduino Bootloaderです。ATmega32U4系のマイコンを使用していますので、Arduino Leonardo互換というべきでしょうかね。また、MIDIの入力部分をシールド頼りでは無くを自作しています。(成長した!?)
左下にUSB Bの端子が見えますが、MIDIのDIN5pinを変換してこのコネクタで来ています。余っていたコネクタ使い回し(^^;
※図面のDIN端子の位置がおかしいので注意(ピン番号は合っています)
コンパイル環境を準備
Arduino MIDI Library v4.2をダウンロードして、Arduino IDEをインストールしたフォルダの中の「libraries」にコピーします。
Arduino Tone Libraryをダウンロードして、同じく「libraries」にコピーします。このままでは、ATmega32U4系マイコンでは動きませんので、このページの#7の「Tone.cpp」をダウンロードして「libraries/Tone/」フォルダ内の同名のファイルに上書きます。
Arduino IDEを再起動すれば、使用できます。
MIDI信号の再生機能
前回と同じで、必要なMIDI信号しか使っていないので、多くあるMIDI信号の機能の内、このプログラムでは一部しか使用していません。
- NoteOn・NoteOff・・・指定の音階の音を出すことは出来ますが、ボリュームを変えることはできません。
- PitchBend・・・ピッチを微妙にずらす時に使用します。対応しています。
また、処理速度が追いつかないのか、たまに再生されない音があるようです。
プログラム
https://github.com/ichirowo/MidiTestBoard4Arduino/blob/master/MidiTestBoard4Arduino.ino
Arduino Leonardoでも動くと思いますが、未確認です。
スペシャルサンクス
今回これを作るにあたり、Arduinoに初期ごろから関わられているまりすさんと、DJ機材やMIDI機材を自作されているhsgwさんにアドバイスをいただきました。ありがとうございました(๑′ᴗ‵๑)
はじめまして。この記事を参考にさせていただいたのですが、
プログラム本体はありますか?
プログラムを表示するプラグインが無効になっていて、非表示になっていました。
プログラムはこちらです。
https://github.com/ichirowo/MidiTestBoard4Arduino/blob/master/MidiTestBoard4Arduino.ino
現バージョンのArduino IDEで動くか分からないですが、ご参考まで
ありがとうございます