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音同時発声ライブラリ)が動きません。

ハードウェア

写真 2014-12-02 0 16 44
Strawberry Linuxのダ・ヴィンチ32U with Arduino Bootloaderです。ATmega32U4系のマイコンを使用していますので、Arduino Leonardo互換というべきでしょうかね。また、MIDIの入力部分をシールド頼りでは無くを自作しています。(成長した!?)
左下にUSB Bの端子が見えますが、MIDIのDIN5pinを変換してこのコネクタで来ています。余っていたコネクタ使い回し(^^;

111111
※図面の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さんにアドバイスをいただきました。ありがとうございました(๑′ᴗ‵๑)

3 コメント
  1. はじめまして。この記事を参考にさせていただいたのですが、
    プログラム本体はありますか?

  2. ありがとうございます

コメントをどうぞ

*