読者です 読者をやめる 読者になる 読者になる

Life is a Beautiful Struggle

jentagawaの平凡な毎日。ウェブ制作、音楽、MIDIコンについて。

【DIY MIDIコン】Teensy Duinoで作るMIDIボタン。後編


DIY MIDIコン、ボタン、スライダー、ツマミの順に作り方を説明していきたいです。
第1弾は基本的なボタンの作り方です。
前回は、接続まわりを説明しました。今回は楽しいプログラミングです!
ちなみに前回の記事はこちら!
jentagawa.hatenablog.com

用意するもの

  • パソコン
    • 僕はWindowsユーザーなのでMacの場合については説明できません…ごめんなさい。
  • Arduino、Teensyduinoプログラミングソフト
  • MIDI信号のテストソフト、MIDI-OX
  • 遊ぶためのソフト。今回はTraktor DJ。

必要なソフトのインストール

まずはArduinoのソフトをこちらからインストール
そのあとTeensyduinoをインストール

ここで注意しなきゃいけないのがArduinoのソフトのバージョンがTeensyduinoのソフトと互換性があるかどうか。

この記事を書いてる時点(2017/02/10現在)では、Trensyduinoバージョン1.35はArduinoのバージョン、1.0.6、1.6.5-r5、1.6.9、1.6.12、1.6.13、1.8.0、1.8.1に対応してます。

また、ArduinoをインストールしてからTeensyduinoをインストールする際に、Arduinoのソフトをどこにインストールしたか聞かれます。

インストールした場所を指定すると勝手にファイルを展開していきます。

次にこちらのTeensy Loaderというソフトをインストールします。

これで下準備完了です。

設定の確認

Arduinoのソフトを起動。
読み込み時に表示されるキャラクターがかわいい。UIも全体的にフラットデザインで配色もかわいい(´∇`)

ひとまずTeensyを接続して諸々設定していきます。

ツールからボードで該当するTeensyを選択。
f:id:jentagawa:20170222232017j:plain
そして次にUSBタイプをMIDIに設定。
f:id:jentagawa:20170222231942j:plain

それではプログラミングしていきましょー。

プログラミング

Bounceというライブラリを利用して作っていきますので、最初にBounce.hをインクルード(読み込み)しています。

#include <Bounce.h>

// ボタンの値を設定
int cc_off = 0;
int cc_on = 65;
int cc_super = 127;

// ボタンを割り振る
int cc0 = 51;

Bounce button0 = Bounce(0, 3);
// ボタンを増やす場合は、こんなかんじ
// Bounce button1 = Bounce(1, 3);
// Bounce button2 = Bounce(2, 3);

void setup() {
// MIDI rate
Serial.begin(31250);
pinMode(0, INPUT_PULLUP);
// ボタンを増やす場合は、こんなかんじ
// pinMode(1, INPUT_PULLUP);
// pinMode(2, INPUT_PULLUP);
}

void loop() {
button0.update();
// ボタンを増やす場合は、こんなかんじ
// button1.update();
// button2.update();

if (button0.fallingEdge())
{
usbMIDI.sendControlChange(cc0, cc_on, 3);
}
// ボタンを増やす場合は、こんなかんじ
// if (button1.fallingEdge())
// {
// usbMIDI.sendControlChange(cc1, cc_on, 3);
// }

if (button0.risingEdge())
{
usbMIDI.sendControlChange(cc0, cc_off, 3);
}
// ボタンを増やす場合は、こんなかんじ
// if (button1.risingEdge())
// {
// usbMIDI.sendControlChange(cc1, cc_off, 3);
// }
}

書き込み

コードが無事書けたら、Teensyに書き込んできましょう。
右矢印のボタン(マイコンボードに書き込む)をクリック。
初回のときだけTeensyについてるボタンを押すよう指示が表示されるはずです。
こんなん↓
f:id:jentagawa:20170222232943j:plain

指示にしたがってボタンを押すと、書き込み開始。

書き込みが完了したらいざテスト!

動作確認

書き込みが完了したら正しく信号が送られているか、MIDI-OXを使ってテスト。
MIDI-OXを起動して、OptionsからMIDI INPUTにTeensyを選択。
f:id:jentagawa:20170222233148j:plain
ボタンを押したり離したりすると信号が出ていることが確認できます。
f:id:jentagawa:20170222233226j:plain

問題がないことを確認したら早速遊んでみよー

TraktorDJでマッピング

今回はDJソフトのTraktorDJで設定してみます。
右上の歯車のマーク(設定)からControl Managerを選択。
DeviceからGeneric MIDIを選択。
f:id:jentagawa:20170222233420j:plain
次にIn-PortにTeensyが表示されているはずなので、選択。
あとは割り振りたい機能をマッピング

今回はAデッキの再生・ストップを試しにマッピングしました。
※Device MappingのLEARNを押してから作ったボタンを押すと、簡単に設定できます。
f:id:jentagawa:20170222233538j:plain
参考
hyle.hateblo.jp

まとめ

以上でDIY MIDIコン第1弾のボタン作りが完成です!
けっこう簡単ですよね。
さらに発展させて、ボタンの数を増やせば下のようなコントローラーも作れちゃうかも!?

f:id:jentagawa:20170222234156j:plain
DJ TechTools - Midi Fighter 3D

実際にやってみました。はんだ付けめんどくさすぎです。
こちらは作曲ソフトのパッドをマッピングしてます。

#pawdrumming #arduino キノちゃんの肉球ドラミン

余談

猫の日に入籍しましたー わー わー