USB-MIDI foot controller / USB-MIDIフットコントローラー作った


DIY MIDI Foot Switch with Arduino and Game Pad, BIAS FX

PlayStation用のゲームコントローラーとArduino Leonardo互換機を使って、USB接続のMIDIフットコントローラー作った。動画を公開したのはだいぶ前だけど、コードを公開してほしいということであらためて。

CODE

/*
USB-MIDI controller for Arduino Leonardo
Library
https://github.com/arduino-libraries/MIDIUSB
*/
#define CH 1
#define LED_PIN 13
#define MAX_LED_PIN_TIME 200
#define PEDAL_MARGIN 64
/* MIDIUSB */
#include "MIDIUSB.h"
void noteOn(byte channel, byte pitch, byte velocity) {
midiEventPacket_t noteOn = {0x09, 0x90 | channel, pitch, velocity};
MidiUSB.sendMIDI(noteOn);
}
void noteOff(byte channel, byte pitch, byte velocity) {
midiEventPacket_t noteOff = {0x08, 0x80 | channel, pitch, velocity};
MidiUSB.sendMIDI(noteOff);
}
void controlChange(byte channel, byte control, byte value) {
midiEventPacket_t event = {0x0B, 0xB0 | channel, control, value};
MidiUSB.sendMIDI(event);
}
int switchPins[] = {2, 3, 4, 5, 6, 7};
int btNote[] = {60, 64, 69, 74, 79, 84}; //NOTE NUMBER
int btCC[]   = {21, 22, 23, 24, 25, 26}; //CC NUMBER //
int switchPreVal[] = { -1, -1, -1, -1, -1, -1};
int switchStatus[] = {1, 1, 1, 1, 1, 1};
int pedalPin = 0;
int pedalCC = 4;
int pedalPreVal = -1;
int ledPinTime = 0;
void setup() {
Serial.begin(115200); //MIDIUSB
pinMode(LED_PIN, OUTPUT);
for (int i = 0; i < 4; i++) {
pinMode(switchPins[i], INPUT);
digitalWrite(switchPins[i], HIGH);
}
delay(100);
}
void loop() {
for (int i = 0; i < 4; i++) {
int val = digitalRead(switchPins[i]);
if (val != switchPreVal[i]) {
switchPreVal[i] = val;
digitalWrite(LED_PIN, HIGH);
ledPinTime = MAX_LED_PIN_TIME;
switchStatus[i] = !switchStatus[i];
if (switchStatus[i] == true) {
noteOn(0, btNote[i], 127);  // channel, pitch, velocity
controlChange(0, btCC[i], 127); //channel, CC#, value
MidiUSB.flush();
} else {
noteOff(0, btNote[i], 127);  // channel, pitch, velocity
MidiUSB.flush();
}
}
}
digitalWrite(LED_PIN, ledPinTime > 0 ? HIGH : LOW);
if (ledPinTime > 0) ledPinTime--;
}

Library

arduino-libraries/MIDIUSB: A MIDI library over USB, based on PluggableUSB

参考にしたもの

Arduinoで作るフットスイッチ・ペダルMIDIインターフェイス – Qiita

Arduinoを使ってWeb MIDI APIから制御可能なUSB MIDIデバイスを自作する(MIDIUSB編) – Qiita

ありがとうございました。

HiLetgo プロ ミニAtmega328 マイコンボード 5V/16MHz 328 Arduinoに対応HiLetgo プロ ミニAtmega328 マイコンボード 5V/16MHz 328 Arduinoに対応




キッズステーション専用コントローラ
キッズステーション専用コントローラ

ぼくらとあそぼう! ウルトラマンTVキッズステーションコントローラセットぼくらとあそぼう! ウルトラマンTVキッズステーションコントローラセット

キッズステーションドラえもん ひみつのよじげんポケットキッズステーションコントローラセットキッズステーションドラえもん ひみつのよじげんポケットキッズステーションコントローラセット

コメント