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に対応
キッズステーション専用コントローラ
ぼくらとあそぼう! ウルトラマンTVキッズステーションコントローラセット
キッズステーションドラえもん ひみつのよじげんポケットキッズステーションコントローラセット
コメント