midi controller mit 8 potis über einen mulitplexer 4051 arduino uno für ableton

hallo
ich möchte mir einen midi controller mit 8 potis über einen multiplexer 4051 bauen und damit die macros in ableton anzusteuern. hab schon viel recherchiert aber nix brauchbares gefunden ausser von Götz Müller-Dürholt der coole tutorials macht.aber da mein programmierwissen so ziemlich am anfang ist wollte ich fragen ob mir jemand helfen kann.
mit dem code kann ich 8 potis über einen 4051 einlesen(über A0) aber krieg keine midi daten.hab das ganze über ein usb to midi via tx angehängt.

int potiWert = 0;
int zaehler = 0;

int bit1 = 0;
int bit2 = 0;
int bit3 = 0;

void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin(9600);
}

void loop () {
for ( zaehler = 0 ; zaehler <= 7; zaehler++ ) {

 bit1 = bitRead(zaehler, 0);
 bit2 = bitRead(zaehler, 1);
 bit3 = bitRead(zaehler, 2);

 digitalWrite(2, bit1);
 digitalWrite(3, bit2);
 digitalWrite(4, bit3);

 potiWert = analogRead(A0);

 Serial.print(potiWert);
 Serial.print(" ");
} 
Serial.println("");
}

Du weißt aber schon, wie eine Midi-Nachricht aussieht?

Ich empfehle dringend, mal das arduino Midi-Beispiel anzuschauen und sich auch mit den Controlern von Ableton zu beschäftigen.

Der nächste Schritt sollte dann sein, Ableton mit 1 Poti zu steuern, dann den Multiplexer in Angriff zu nehmen und dann alles zusammenzurühren.

Außerdem würde ich die erste Messung nach dem Kanalwechsel verwerfen, da keine Garantie besteht, daß die Messung richtig ist.
Grüße Uwe

hy Klaus
Ich hab da schon paar sachen ausprobiert aber bin so ziemlich am anfang. also ehrlich gesagt hab ich codes kopiert und ausprobiert.
1 poti zum ansteuern von effekten in ableton mit diesem sketch:

int controlChange = 176; // MIDI Kanal 1
int controllerNummer = 21;
int controllerWert = 0;
int controllerWertAlt = 0;
int potiWert = 0;

void setup() {
Serial.begin(9600);
}

void loop() {

potiWert = analogRead(A0);
controllerWert = map(potiWert,0,1023,0,127);

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

controllerWertAlt = controllerWert;
}

ich schau mir die signale am hairless-MIDI an .
also mit einem poti sehe ich dann
+6.895 - Serial In: Ch 1: Controller 21 value 127
+174.613 - Serial In: Ch 1: Controller 21 value 0
das sieht glaub gut aus kann ja den auch per midi learn in ableton benutzen.

aber dann wollte ich 8 potis über den multiplexer 4051 ansteuern mit diesem code:

int potiWert = 0;
int zaehler = 0;

int bit1 = 0;
int bit2 = 0;
int bit3 = 0;

void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin(9600);
}

void loop () {
for ( zaehler = 0 ; zaehler <= 7; zaehler++ ) {

bit1 = bitRead(zaehler, 0);
bit2 = bitRead(zaehler, 1);
bit3 = bitRead(zaehler, 2);

digitalWrite(2, bit1);
digitalWrite(3, bit2);
digitalWrite(4, bit3);

potiWert = analogRead(A0);

Serial.print(potiWert);
Serial.print(" “);
}
Serial.println(”");
}

aber das ging nicht. ich hab dann festgestellt dass ich nicht wie beim ersten code
Serial.write(controlChange);
Serial.write(controllerNummer);
Serial.write(controllerWert);
habe sondern
digitalWrite(2, bit1);
digitalWrite(3, bit2);
digitalWrite(4, bit3);
und mein wissen ist so gleich null dass ich dann halt nicht weiss wie ich die in midi umwandle.
also ich werde mir die arduino midi beispiele ansehen und vielleicht gibts den aha effekt.
danke für input
gruss
ueli

Ok, Du kannst also kopieren, weisst aber nicht was da passiert, wie eine Midi-Message aufgebaut ist, wie ein Multiplexer angesteuert wird ... das sind recht unzureichende Voraussetzungen für Dein Vorhaben.

Trotzdem wird es mit ein wenig Lernen funktionieren. Teile das Projekt in Teile wie schon geschrieben

  • wie sieht eine Midi Message aus (siehst Du ja eigentlich schon)
  • ändere mal den Controler/Channel
  • Frag 2 Potis ab und gib die Werte seriell aus
  • Mappe die Werte auf 2 Controler
  • Ansteuerung des Multiplexers kommt als nächstes
  • Du bist fast am Ziel

Wenns klemmt hier fragen, aber bitte konkret mit Code.

Klappt schon!

ok einen kann ich ja schon mal ansteuern.
hast recht dass ich bis jetzt noch unzureichende voraussetzungen habe, aber das klappert schon noch hast recht. bin jetzt schon mal diese codes genauer am studieren und ausprobieren und probier mal 2 potis zu programmieren und dann auf zwei controller zu mappen.
hab auch schon ein tutorial über array schleifen gesehen was ja auch interessant ist. so kann ich gleich alle auf einmal ansteuern aber ins detail muss ich mich noch vertiefen zuerst mal 2 analoge inputs.
danke nochmals für deine deine hilfe hat mir schon viel geholfen.
ich wollte eigentlich nicht ins detail lernen wie zu programmieren, aber wie es aussieht komm ich da nicht herum. schaden kann dass ja nicht.
also ich werde deine punkte mal durch gehen und vielleicht kommt noch eine frage
gruss
ueli

Du musst Dich halt entscheiden, ob Du wirklich was bauen möchtest (hatte ich eingangs so verstanden). Dann hilft alles nix und Du musst fehlendes Know-How aufbauen.
Dauert am längsten, ist finanzell am günstigsten für Dich, hält das Hirn auf Trab :grin:

Oder Du willst was Fertiges kaufen, Doepfer bietet da auch schöne Produkte an die Du an Deine Wünsche anpassen kannst.
Geht flott, kostet z.B. 75 EUR (Pocket Electronic für 16 Potis o.ä., Bastelspass ist auch dabei.

Oder Du läßt jemanden für Dich programmieren.
Ist am teuersten und sicher außerhalb des gewünschten Rahmens (aber wer weiß).