LoginSignup
0
2

USB-MIDIコンをArduinoで自作した

Last updated at Posted at 2022-12-20

なぜ自作するのか

VDMX5で使ういい感じのMIDIコントローラーがないので自作することにした。
最近MIDIコンを自作するVJが多い、流行ってるんか?

欲しい機能は

  • 単純なボタンが碁盤状に並んでいること
  • 無限に回るツマミがほしい

VDMX5って何?

スクリーンに自由自在に映像プレゼンテーションするためのアプリ
例えば結婚式や、DJやライブの音楽イベント、学園祭で映像の演出をするのに使われるアプリ

MIDIコン自作の情報

ともかく情報収集

ロータリーエンコーダ
 無限にクルクル回るツマミを作るための部品

内部プルアップ抵抗

USB MIDI

Keypad

USB機器を作るにはleonardoを使う

MIDIコンのようなUSB機器を作るには、Arduinoはunoではなくleonardoを使う。その方が手間が少ない。
Arduino unoは2つチップを搭載していて、USBに使われてる方のチップのファームウェアを書き換える必要があるが、leonardoなら1チップなのでファームウェア書き換えが不要。
unoとleonardo比較

材料

  • Arduino leonardo
  • ロータリーエンコーダー
  • 押しボタンスイッチ

材料をつなぐ

やりたいことはいろいろあるが、まずは調べた情報通りに作ってみる

押しボタンスイッチはGNDと4につなぐ
エンコーダーのAを5, Bを6に, CをGNDにつなぐ

ひらってきたArduinoコード

まずArduino IDEでこのライブラリを追加

ひらってきたコードをIDEにコピペ
そしてArduinoに書き込む

SwitchAndEncoder_MIDI.ino
#include <TimerOne.h>
#include <Encoder.h>
#include <USB-MIDI.h>
USBMIDI_CREATE_DEFAULT_INSTANCE();

#define OFF 0
#define ON 1
#define SW_PIN 4
#define ENC_PIN1 5
#define ENC_PIN2 6

Encoder myEnc(ENC_PIN1, ENC_PIN2);
volatile long oldPosition  = -999;
volatile long newPosition  = 0;
int TOGGLE = OFF;

void RotEnc() {
  newPosition = myEnc.read();
}

void setup() {
  pinMode( SW_PIN, INPUT_PULLUP);
  pinMode(ENC_PIN1, INPUT_PULLUP);
  pinMode(ENC_PIN2, INPUT_PULLUP);
  MIDI.begin(10);
  Timer1.initialize(500); //500μs(マイクロ秒)で設定
  Timer1.attachInterrupt(RotEnc);
}

void loop() {

  if(digitalRead( SW_PIN ) == HIGH && TOGGLE == ON ){
    TOGGLE = OFF;
    MIDI.sendNoteOn(36, 100, 10);
  }else if(digitalRead( SW_PIN ) == LOW && TOGGLE == OFF ){
    TOGGLE = ON;
    MIDI.sendNoteOff(36, 0, 10);
  }

  if (newPosition > oldPosition) {
    oldPosition = newPosition;
    MIDI.sendNrpnIncrement(67, 1);
  }else if(newPosition < oldPosition ){
    oldPosition = newPosition;
    MIDI.sendNrpnIncrement(61, 1);
  }

}

VDMX5でMIDIコンを設定する

さっそく作ったMIDIコンをVDMX5で使えるように設定する
設定のやり方はこちら

とりあえず上の要領で設定したら、ロータリーエンコーダー(無限に回るツマミ)の設定を変える
ロータリーエンコーダーをアサインしたUIを選択して、UI InspectorでEndless MIDI Modeで64-0/65-127を選択する

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2