A
AndiH1213
Registrierter Benutzer
- Zuletzt hier
- 24.02.16
- Registriert
- 08.02.16
- Beiträge
- 6
- Kekse
- 0
Oh Gott, wie peinlich, es lag tatsächlich an der falschen Verkabelung! Danke jedenfalls. Mittlerweile habe ich 9 Taster angeschlossen (solche hier: http://www.reichelt.de/Drucktaster-...=2&ARTICLE=19988&GROUPID=3277&artnr=T+250A+WS ), die ich jeweils mit GND und direkt (ohne zusätzliche Widerstände) per INPUT_PULLUP mit den digitalen Pins meines Arduino Pro Micro (so einer hier: https://www.sparkfun.com/products/12640 ) verbunde habe.
Ich habe den Code von Götz Müller-Dürholt etwas angepasst und bekomme in der Arduino-Software im Seriellen Monitor auch angezeigt, dass etwas passiert, Jedoch habe ich 2 Probleme:
Zum einen sieht es so aus, als würden die Buttons die ich habe meistens 2 Signale von sich geben, beim Drücken und beim Loslassen. Wenn nicht sogar noch mehr.
Außterdem scheitere ich momentan daran, z.B. über Hairless-Midi und LoopMidi meinen Controller auch in einer DAW zu nutzen. Wenn Hairless Midi läuft (manchmal aus irgendwelchen Gründen tut es das nicht) und ich die Buttons drücke, kommen immer solche Fehlermeldungen:
+9.014 - Warning: got a status byte when we were expecting 2 more data bytes, sending possibly incomplete MIDI message 0x81
+9.014 - Serial In: Ch 2: Note %2 off velocity %3
+9.014 - Serial In: Ch 1: Note 40 on velocity 127
+9.014 - Warning: got a status byte when we were expecting 1 more data bytes, sending possibly incomplete MIDI message 0x90
Wähle ich bei MIDI OUT Microsoft GS Wavetable Synth aus, dann höre ich ein Piano, mit recht großer Latenz (grob geschätze halbe Sekunde).
Setze ich MIDI OUT und MIDI IN auf loopMIDI Port, den ich zuvor gestartet habe, empfange ich in meiner DAW (in meinem Fall Cakewalk Sonar Platinum) leider nichts.
Hier ist auch einmal der Code, den ich als absoluter Laie etwas angepasst habe.
Für Hilfe wäre ich wirklich mehr als dankbar!
int button2 = LOW;
int button2Old = LOW;
int button3 = LOW;
int button3Old = LOW;
int button4 = LOW;
int button4Old = LOW;
int button5 = LOW;
int button5Old = LOW;
int button6 = LOW;
int button6Old = LOW;
int button7 = LOW;
int button7Old = LOW;
int button8 = LOW;
int button8Old = LOW;
int button9 = LOW;
int button9Old = LOW;
int button10 = LOW;
int button10Old = LOW;
void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
}
void loop(){
button2 = digitalRead(2);
if (button2 == HIGH && button2Old == LOW) {
Serial.write(144); // 1001 0000 = Note On Kanal 1
Serial.write(36); //Note C1
Serial.write(127);
button2Old = button2;
}
if (button2 == LOW && button2Old == HIGH) {
Serial.write(144); // 1001 0000 = Note On Kanal 1
Serial.write(36); //Note C1
Serial.write(0-127);
button2Old = button2;
}
button3 = digitalRead(3);
if (button3 == HIGH && button3Old == LOW) {
Serial.write(144);
Serial.write(38);
Serial.write(127);
button3Old = button3;
}
if (button3 == LOW && button3Old == HIGH) {
Serial.write(144);
Serial.write(38);
Serial.write(0-127);
button3Old = button3;
}
button4 = digitalRead(4);
if (button4 == HIGH && button4Old == LOW) {
Serial.write(144);
Serial.write(40);
Serial.write(127);
button4Old = button4;
}
if (button4 == LOW && button4Old == HIGH) {
Serial.write(144);
Serial.write(40);
Serial.write(0-127);
button4Old = button4;
}
button5 = digitalRead(5);
if (button5 == HIGH && button5Old == LOW) {
Serial.write(144);
Serial.write(41);
Serial.write(127);
button5Old = button5;
}
if (button5 == LOW && button5Old == HIGH) {
Serial.write(144);
Serial.write(41);
Serial.write(0-127);
button5Old = button5;
}
button6 = digitalRead(6);
if (button6 == HIGH && button6Old == LOW) {
Serial.write(144);
Serial.write(43);
Serial.write(127);
button6Old = button6;
}
if (button6 == LOW && button6Old == HIGH) {
Serial.write(144);
Serial.write(43);
Serial.write(0-127);
button6Old = button6;
}
button7 = digitalRead(7);
if (button7 == HIGH && button7Old == LOW) {
Serial.write(144);
Serial.write(45);
Serial.write(127);
button7Old = button7;
}
if (button7 == LOW && button7Old == HIGH) {
Serial.write(144);
Serial.write(45);
Serial.write(0-127);
button7Old = button7;
}
button8 = digitalRead(8);
if (button8 == HIGH && button8Old == LOW) {
Serial.write(144);
Serial.write(47);
Serial.write(127);
button8Old = button8;
}
if (button8 == LOW && button8Old == HIGH) {
Serial.write(144);
Serial.write(47);
Serial.write(0-127);
button8Old = button8;
}
button9 = digitalRead(9);
if (button9 == HIGH && button9Old == LOW) {
Serial.write(144);
Serial.write(48);
Serial.write(127);
button9Old = button9;
}
if (button9 == LOW && button9Old == HIGH) {
Serial.write(144);
Serial.write(48);
Serial.write(0-127);
button9Old = button9;
}
button10 = digitalRead(10);
if (button10 == HIGH && button10Old == LOW) {
Serial.write(144);
Serial.write(50);
Serial.write(127);
button10Old = button10;
}
if (button10 == LOW && button10Old == HIGH) {
Serial.write(144);
Serial.write(50);
Serial.write(0-127);
button10Old = button10;
}
}
Ich habe den Code von Götz Müller-Dürholt etwas angepasst und bekomme in der Arduino-Software im Seriellen Monitor auch angezeigt, dass etwas passiert, Jedoch habe ich 2 Probleme:
Zum einen sieht es so aus, als würden die Buttons die ich habe meistens 2 Signale von sich geben, beim Drücken und beim Loslassen. Wenn nicht sogar noch mehr.
Außterdem scheitere ich momentan daran, z.B. über Hairless-Midi und LoopMidi meinen Controller auch in einer DAW zu nutzen. Wenn Hairless Midi läuft (manchmal aus irgendwelchen Gründen tut es das nicht) und ich die Buttons drücke, kommen immer solche Fehlermeldungen:
+9.014 - Warning: got a status byte when we were expecting 2 more data bytes, sending possibly incomplete MIDI message 0x81
+9.014 - Serial In: Ch 2: Note %2 off velocity %3
+9.014 - Serial In: Ch 1: Note 40 on velocity 127
+9.014 - Warning: got a status byte when we were expecting 1 more data bytes, sending possibly incomplete MIDI message 0x90
Wähle ich bei MIDI OUT Microsoft GS Wavetable Synth aus, dann höre ich ein Piano, mit recht großer Latenz (grob geschätze halbe Sekunde).
Setze ich MIDI OUT und MIDI IN auf loopMIDI Port, den ich zuvor gestartet habe, empfange ich in meiner DAW (in meinem Fall Cakewalk Sonar Platinum) leider nichts.
Hier ist auch einmal der Code, den ich als absoluter Laie etwas angepasst habe.
Für Hilfe wäre ich wirklich mehr als dankbar!
int button2 = LOW;
int button2Old = LOW;
int button3 = LOW;
int button3Old = LOW;
int button4 = LOW;
int button4Old = LOW;
int button5 = LOW;
int button5Old = LOW;
int button6 = LOW;
int button6Old = LOW;
int button7 = LOW;
int button7Old = LOW;
int button8 = LOW;
int button8Old = LOW;
int button9 = LOW;
int button9Old = LOW;
int button10 = LOW;
int button10Old = LOW;
void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
}
void loop(){
button2 = digitalRead(2);
if (button2 == HIGH && button2Old == LOW) {
Serial.write(144); // 1001 0000 = Note On Kanal 1
Serial.write(36); //Note C1
Serial.write(127);
button2Old = button2;
}
if (button2 == LOW && button2Old == HIGH) {
Serial.write(144); // 1001 0000 = Note On Kanal 1
Serial.write(36); //Note C1
Serial.write(0-127);
button2Old = button2;
}
button3 = digitalRead(3);
if (button3 == HIGH && button3Old == LOW) {
Serial.write(144);
Serial.write(38);
Serial.write(127);
button3Old = button3;
}
if (button3 == LOW && button3Old == HIGH) {
Serial.write(144);
Serial.write(38);
Serial.write(0-127);
button3Old = button3;
}
button4 = digitalRead(4);
if (button4 == HIGH && button4Old == LOW) {
Serial.write(144);
Serial.write(40);
Serial.write(127);
button4Old = button4;
}
if (button4 == LOW && button4Old == HIGH) {
Serial.write(144);
Serial.write(40);
Serial.write(0-127);
button4Old = button4;
}
button5 = digitalRead(5);
if (button5 == HIGH && button5Old == LOW) {
Serial.write(144);
Serial.write(41);
Serial.write(127);
button5Old = button5;
}
if (button5 == LOW && button5Old == HIGH) {
Serial.write(144);
Serial.write(41);
Serial.write(0-127);
button5Old = button5;
}
button6 = digitalRead(6);
if (button6 == HIGH && button6Old == LOW) {
Serial.write(144);
Serial.write(43);
Serial.write(127);
button6Old = button6;
}
if (button6 == LOW && button6Old == HIGH) {
Serial.write(144);
Serial.write(43);
Serial.write(0-127);
button6Old = button6;
}
button7 = digitalRead(7);
if (button7 == HIGH && button7Old == LOW) {
Serial.write(144);
Serial.write(45);
Serial.write(127);
button7Old = button7;
}
if (button7 == LOW && button7Old == HIGH) {
Serial.write(144);
Serial.write(45);
Serial.write(0-127);
button7Old = button7;
}
button8 = digitalRead(8);
if (button8 == HIGH && button8Old == LOW) {
Serial.write(144);
Serial.write(47);
Serial.write(127);
button8Old = button8;
}
if (button8 == LOW && button8Old == HIGH) {
Serial.write(144);
Serial.write(47);
Serial.write(0-127);
button8Old = button8;
}
button9 = digitalRead(9);
if (button9 == HIGH && button9Old == LOW) {
Serial.write(144);
Serial.write(48);
Serial.write(127);
button9Old = button9;
}
if (button9 == LOW && button9Old == HIGH) {
Serial.write(144);
Serial.write(48);
Serial.write(0-127);
button9Old = button9;
}
button10 = digitalRead(10);
if (button10 == HIGH && button10Old == LOW) {
Serial.write(144);
Serial.write(50);
Serial.write(127);
button10Old = button10;
}
if (button10 == LOW && button10Old == HIGH) {
Serial.write(144);
Serial.write(50);
Serial.write(0-127);
button10Old = button10;
}
}