MIDI USB Guitar Rig Controller

Hallo Leute!
Ich möchte für Guitar Rig 4 einen einfachen Controller bauen, der im Grunde nur aus ein paar Buttons besteht.

Im Internet habe ich mir folgenden Code zusammengesucht:

#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();

int pushButton4 = 4;
int buttonState4 = 0;
int note4 = 0;

int analogValue = 0;

int lastAnalogValue = 128;

void setup() {
MIDI.begin();
Serial.begin(115200);
pinMode(pushButton4, INPUT);
}

void loop() {
int buttonState4 = digitalRead(pushButton4);
if (buttonState4 == HIGH) {
if (note4 == 0) {
MIDI.sendNoteOn(83,127,1);
note4 = 1; }
} else {
if (note4 == 1) {
MIDI.sendNoteOff(83,0,1);
}
note4 = 0;
}
delay(1);
}

Das ganze möchte ich dann über Hairless MIDI Serial Bridge und loopMIDI mit Guitar Rig verbinden.

Momentan bekomme ich folgende Fehlermeldung in Hairless MIDI:

+3.181 - Warning: got a status byte when we were expecting 3 more data bytes, sending possibly incomplete MIDI message 0xff

Kann mir jemand weiter helfen? Kenn ich mich leider kaum aus.

Moin,

nimm mal den Beispielcode und schau, ob's damit grundsätzlich funktioniert.

Hallo,

ich habe die MIDI-library neu gedownloadet und implementiert und jetzt funktioniert es.
Den Code habe ich noch um zwei Buttons und einen Poti erweitert.

#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();

// 3 Buttons und ein Poti

int pushButton2 = 2;
int pushButton3 = 3;
int pushButton5 = 5;
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState5 = 0;
int note2 = 0;
int note3 = 0;
int note5 = 0;
int controlChange = 176;
int controllerNummer = 21;
int controllerWert = 0;
int controllerWertAlt = 0;
int potiWert = 0;
int smoothWert = 0;

int analogValue = 0;

int lastAnalogValue = 128;

void setup() {
MIDI.begin();
Serial.begin(115200);
pinMode(pushButton2, INPUT);
pinMode(pushButton3, INPUT);
pinMode(pushButton5, INPUT);
}

void loop() {

potiWert = analogRead(A0);
controllerWert = map(smoothWert,350,1023,127,0);
smoothWert = 0.6 * smoothWert + 0.4 * analogRead(A0);

if (controllerWert != controllerWertAlt) {
Serial.write(controlChange);
Serial.write(controllerNummer);
Serial.write(controllerWert);
}

controllerWertAlt = controllerWert;

int buttonState2 = digitalRead(pushButton2);
if (buttonState2 == HIGH) {
if (note2 == 0) {
MIDI.sendNoteOff(43,0,1);
note2 = 1; }
} else {
if (note2 == 1) {
MIDI.sendNoteOn(43,127,1);
}
note2 = 0;
}
int buttonState3 = digitalRead(pushButton3);
if (buttonState3 == HIGH) {
if (note3 == 0) {
MIDI.sendNoteOff(44,0,1);
note3 = 1; }
} else {
if (note3 == 1) {
MIDI.sendNoteOn(44,127,1);
}
note3 = 0;
}
int buttonState5 = digitalRead(pushButton5);
if (buttonState5 == HIGH) {
if (note5 == 0) {
MIDI.sendNoteOff(45,0,1);
note5 = 1; }
} else {
if (note5 == 1) {
MIDI.sendNoteOn(45,127,1);
}
note5 = 0;
}
delay(1);
}

Der Code ist zwar alles andere als schön, funkioniert aber.
Trotzdem, wenn jemand Tipps hat wie ich den Code vereinfachen/verschönern kann dann sehr gerne :slight_smile: