Manche Midi-Controller schicken über ihren Midi-Ausgang unglaublich viel Datenmüll, der oftmals dazu führt, dass sich zwei Geräte nicht verstehen. Mein uraltes Kawai Datacat Mini-Keyboard kann z.B. keinen Ploytec PL2 steuern. Deshalb habe ich einen Arduino Uno dazwischengeschaltet, der nur Noten- (inklusive Velocity), ControlChange-, ProgramChange- und PitchBend-Befehle weiterleiten soll.

Voraussetzungen für das Gelingen sind ein Arduino Uno, die Arduino-Midi-Library, ein Midi-Shield bzw. selbst gebaute Midi In und Out für den Arduino sowie folgender Sketch, den ich zusammenprogrammiert habe:

#include <MIDI.h>

// Arduino Midi Filter
// Version 1.0 by Christian Streng
// Midi Out is on Channel 1.
// www.christianstreng.de/arduino-midi-filter

MIDI_CREATE_DEFAULT_INSTANCE();

void setup() {
MIDI.begin(MIDI_CHANNEL_OMNI);
MIDI.turnThruOff();
MIDI.setHandleNoteOn(MyHandleNoteOn);
MIDI.setHandleNoteOff(MyHandleNoteOff);
MIDI.setHandleControlChange(MyHandleControlChange);
MIDI.setHandleProgramChange(MyHandleProgramChange);
MIDI.setHandlePitchBend(MyHandlePitchBend);
}

void loop() {
MIDI.read();
}

void MyHandleNoteOn(byte channel, byte number, byte velocity) {
MIDI.sendNoteOn(number, velocity, 1);
}
void MyHandleNoteOff(byte channel, byte number, byte velocity) {
MIDI.sendNoteOff(number, velocity, 1);
}
void MyHandleControlChange(byte channel, byte number, byte value) {
MIDI.sendControlChange(number, value, 1);
}
void MyHandleProgramChange(byte channel, byte program) {
MIDI.sendProgramChange(program, 1);
}
void MyHandlePitchBend(byte channel, int value) {
MIDI.sendPitchBend(value, 1);
}

Mit diesem Sketch sendet der Arduino nur auf Kanal 1 (Standardkanal z.B. für den Meeblip Triode). Der Sketch lässt sich aber auch leicht an eigene Bedürfnisse anpassen. Die Implementierung der Midi Clock fehlt.

UPDATE: Meine AKTUALISIERUNG des Programmcodes ermöglicht das Weitergeben der Daten der Midi Clock.

RSS
Follow by Email
Facebook
Facebook
Google+
Google+
https://www.christianstreng.de/arduino-midi-filter/
LinkedIn
YouTube
YouTube
Instagram