MIDI über USB für Arduino Uno klappt nicht

Hallo liebe Community,

ich bin neu in eurer Gemeinde mit dem ziel einen MIDI-Controller selber zu bauen.
Nach ein paar YouTube Videos dachte ich kein Thema und habe mir ein Arduino Uno Starter Kit
gekauft und einige Videos nachgebaut vom Götz Müller-Dürholt es hat auch alles geklappt
bis auf das mit dem MIDI über USB für Arduino (Tutorial deutsch E13).
MIDI über USB für Arduino (Tutorial deutsch E13) - Controller selber bauen - YouTube

Wenn ich die Daten mit Hairless MIDI über MIDI-IN abrufe kommen falsche Daten an?

Wobei über den Serial port stimmen Sie!

Wo könnte der Fehler sein?

Vielen Dank für eure Hilfe.
Claus

Ach so der MIDI-Befehl der gesendet wird sollte laut Anleitung ein
controlChange sein!

Hier der Code:

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

void setup() {

  Serial.begin(31250);

}

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;

}

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter oder gehe in der IDE auf Bearbeiten - Für Forum kopieren und füge es hier ein).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Danke für den Tipp.

m8trix:
Wenn ich die Daten mit Hairless MIDI über MIDI-IN abrufe kommen falsche Daten an?

Wobei über den Serial port stimmen Sie!

Was erwartest Du denn? Wenn Du die Daten vom Uno über den virtuellen Com-Port sendest, dann musst Du sie natürlich im Hairless MIDI auch über den seriellen Port empfangen. Dazu ist Hairless Midi ja da. MIDI-In und MIDI-OUT beim Hailrless dienen der PC-internen Kommunikation mit MIDI-Programmen. (Dann brauchst Du aber noch ein 'virtuelles' Midi-Kabel um die Verbindung Hairless<->MIDI Programm herzustellen. Z.B. 'Loopback MIDI'

Einfacher ist es aber z.B. mit einem Arduino Leonardo. Der kann direkt 'MIDI' mit dem PC sprechen.

Danke für deine Hilfe,
es ist doch ein USB MIDI Hack wie im Video.

Als ein USB to MIDI Kabel wir am TX1 und GND angeschlossen.
Somit sollten Programme wie Abelton oder Hairless den Arduino erkennen und die daten Empfangen.
Erkannt wird er, allerdings finden Fehler bei der Übertragung statt.

Die Ausgabe über Serial und MIDI-IN sollte gleich sein.
Da die Daten ja über TX1 dann mit USB to MIDI an den PC gehen.

Danke.

Hairless ist explizit dazu da, Signale, die über eine normale serielle Schnittstelle ( an aktuellen PC's üblicherweise ein virtueller Com-Port ) empfangen werden, PC-intern in ein MIDI-Signal umzuwandeln ( und umgekehrt ). Dabei muss die Baudrate auf dem virtuellen ComPort nicht der MIDI-Baudrate entsprechen. Sie muss nur zum angeschlossenen Gerät ( also hier dem UNO ) passen ( einstellbar im Hairless MIDI ).

Wenn Du direkt am TX einen USB-Midi Adapter anschließt, dann muss die Baudrate am UNO auch der Midi-Baudrate ( 31250 ) entsprechen. Mit deinen 9600 Baud bekommst Du da nur Datensalat. Allerdings funktioniert dann die Schnittstelle zum Com-Port nicht mehr, da sich die MidiBaudrate da nicht einstellen lässt.

Aber wozu den Adapter, wenn Du das mit Hairless MIDI auch einfach über den normalen Com-Port machen kannst?

Auch wenn ich die Geschwindigkeit anpasse.

Serial.begin(31250);

Ist das Ergebnis das gleiche.

Wozu der Adapter?
Es soll ein vollwertigere MIDI-Controller werden der mit jeder DAW arbeiten soll oder auch mal an einem iPad
angeschlossen werden soll.

m8trix:
Auch wenn ich die Geschwindigkeit anpasse.

Du musst dann aber auch

Serial.begin(31250);

schreiben. Und auf dem Com-Port geht dann nichts mehr.

m8trix:
Es soll ein vollwertigere MIDI-Controller werden

Warum verwendest Du dann keinen Leonardo. Der kann sich als USB-MIDI-Gerät ausgeben.
Wobei Du dich über Hairless MIDI auch über den Com-Port mit jedem DAW-Programm auf dem PC verbinden kannst.

Stimmt auf dem Serial Port kommt jetzt auch nur noch Chacos an.

Geht auch der Teensy? Oder ist der Leonardo besser?
Und ist der Code der gleiche?

Es sollte doch mit dem USB to MIDI Hack gehen oder?

Auf dem Ipad kann man kein Hairless verwenden.

m8trix:
Stimmt auf dem Serial Port kommt jetzt auch nur noch Chacos an.

Über den USB-Midi Adapter sollte es mit 31250 Baud aber gehen. Wie hast Du den überhaput angeschlossen? MIDI ist ja eine Stromschleifen-Schnittstelle

m8trix:
Geht auch der Teensy? Oder ist der Leonardo besser?
Und ist der Code der gleiche?

Der Teensy ist auf alle Fälle leistungsfähiger. Der Leonardo ist halt näher am UNO dran, deshalb hatte ich den vorgeschlagen.
Der Code ist sicher etwas anders, denn Du musst da natürlich die USB-MIDI Lib einbinden.

Ist der Code auch zwischen Leonardo und Teensy anders oder geht es nur um die MIDI Lib einbinden?

Und kann man dann nicht eventuell besser den Mega nehmen da der 16analog pins.
Also 16x 8 Inputs wenn ich Multiplexer einsetze.

Also der Adapter hat hat die Belegung 0ut4 out5 GND In4 In5.

GND habe ich an GND und In4 an TX1.

In5 an TX1 da kommt gar nichts an.

Ebenso bei den beiden Out`s was natürlich klar ist da es ja die umgekehrt Belegung ist.

m8trix:
... MIDI-Controller selber [zu] bauen....

Ich habe mir das Youtube-Filmchen nur zum Teil angeguckt. Der Typ labert mir zu viel dummes Zeug.

Was genau möchtest Du bauen? Ein Ding mit Poti, das einfach nur einen MIDI-Befehl sendet?

Und warum redest Du über eine andere Hardware, obwohl es die jetzige doch eigentlich kann?

Ich habe den Eindruck, dass die Unterhaltung in eine vollkommen nutzlose Richtung geht. Aber vielleicht habe ich nur ein paar einfache Dinge übersehen oder faslch verstanden (was mich nicht wundern würde, denn Du bringst ja kaum einen richtigen Satz zustande).

Gruß

Gregor

Ich würde gern eine MIDI Controller bauen der 58 Potis, 10 Fader (Poti und Fader sollen einen
wert von 0 bis 127 ausgeben) und 48 Taster haben soll.
Somit brauche ich 15 Analoge Pins und 15 Multiplexer. Also brauche ich nach meinen Test einen
anderen Arduino.

Der Controller soll direkt an einer DAW angeschlossen werden (per USB ohne Hairless).

Momentan habe ich eine Arduino Uno und damit einen Prototypen erstellt mit 3 Potis, 3 Fader
die die Analogen PINs A0 bis A5 Belegen (außerdem habe ich einen Prototypen mit 8 Fader und einen
Multiplexer der an A0 hängt)

Und um eine Verbindung zur DAW herzustellen habe ich wie im Video einen USB to MIDI Adapter an TX1 und GND
angeschlossen.

Wenn ich mit einer übertrag von 9600 mit Hairless über den com Port teste geht alles super.
Allerding wenn ich den Code ändere auf 31250 kommt bei Hairless über MIDI-IN nur noch Chaos an.
Ich habe die Ausgaben oben als Bilder beigefügt. Die selben Signale wie bei Hairless kommen auch in
der DAW an.

m8trix:
Ich würde gern eine MIDI Controller bauen der 58 Potis, 10 Fader (Poti und Fader sollen einen
wert von 0 bis 127 ausgeben) und 48 Taster haben soll.
Somit brauche ich 15 Analoge Pins und 15 Multiplexer. Also brauche ich nach meinen Test einen
anderen Arduino.

Ach so. Das mit den 1001 Potis habe ich wohl überlesen.

Bau zunächst ein absolutes Minimal-Ding mit einem einzigen Poti (mit Fader meinst Du wohl ein Poti, das man nicht dreht, sondern schiebt).
Bau/programmiere das so, dass es zuverlässig funktioniert (und zwar genau so funktioniert, wie Du es später auch anschließen möchtest).
Erst wenn das fertig ist, folgt die Erweiterung auf mehrere Potis.

An was für einem Rechner machst Du das jetzt eigentlich? Im Video benutzt der wohl einen Mac, Deine Shots sehen aber nach PC aus.

Gruß

Gregor

Ich mag solche Videos auch nicht. Mir ist ein geschriebener Text mit ein paar Bildern tausendmal lieber. Trotzdem habe ich mir das jetzt mal angeschaut. Ich teile Gregors Einschätzung - das ist irgendwie Mist, was der da treibt.
Wozu den USB-Midi Adapter komplett zerlegen? Einem Uno kann man mit minimalem Aufwand ( zwei 220 Ohm Widerstände und eine 5-Polige DIN Buchse ) einen normgerechten MIDI-OUT spendieren. Da kann man den Adapter direkt anschließen. So wie das im Video gemacht wird, ist das nicht in Ordnung.
Einziger Sinn, den Adapter zu öffnen könnte noch sein, ein die 5V der USB-Schnittstelle zu kommen, um den UNO damit zu versorgen. Dass über den Vin Anschluß zu machen, ist aber auch vollkommen daneben. Denn der braucht für einen stabilen Betrieb mindestens 7V. Und die kann USB nicht liefern.
Also vergiss dieses Video, und bau dir einen gescheiten MidiController - entweder mit einem Prozessor, der MIDI auf der USB Schnittstelle sprechen kann, oder eben mit Adapter und normgerechtem MIDI Out.
Wobei der UNO da eigentlich suboptimal ist, weil er nur eine serielle Schnittstelle hat. Und die sollte man für das Debuggen auf dem seriellen Monitor freihalten. Der Mega hat mehrere serielle Schnittstellen, da geht das besser.

Danke für eure Hilfe.
Okay dann werde ich mir einen neuen Kaufen.
Aber welchen Teensy, Leonardo oder Mega?

MicroBahner:
Der Leonardo ist halt näher am UNO dran, deshalb hatte ich den vorgeschlagen.

Was heißt der Leonardo ist näher am Uno? Die Bauart die Programmierung?
Danke

m8trix:
Was heißt der Leonardo ist näher am Uno? Die Bauart die Programmierung?

Beides :slight_smile: . Wobei die Macher des Teensys sich schon bemüht haben, bei der Programmierung sehr kompatibel zum UNO zu sein, auch wenn sich der Prozessor sehr unterscheidet. Mit MIDI auf dem Teensy habe ich aber keine Erfahrung. Mit dem Micro ( gleicher Prozessor wie Leonardo ) habe ich es schonmal gemacht.

Ansonsten habe ich einen STM32F1 ( 'Maple Mini' bzw. 'Blue Pill' ) für meine MIDI-Box verwendet. Der ist günstiger als ein Teensy und auch sehr gut, aber von der Programmierung ( bei der USB-Schnittstelle ) schon recht anders. Dafür kann er über USB z.B. gleichzeitig ( und unabhängig voneinander ) eine serielle und eine MIDI Verbindugng aufbauen.

Die 3,3V Prozessoren haben allerdings den Nachteil, dass für einen normgerechten MIDI-Anschluß noch ein 5V Ausgangstreiber benötigt wird, Da kann man dafür nicht direkt den Ausgangsport nehmen. Aber wenn Du es in dem Fall nur über USB machen willst, brauchst Du das natürlich nicht.

Wenn ich die Informationen Richtig deute wird es wohl ein Mega werden.
Hast du eine gute Anleitung für den Bau und die Programmierung?

Vor allem wie MIDI eingebunden wird am besten auf deutsch.

Ich danke euch

Wenn es ein Mega werden soll, gibt es da ja nichts spezifisches für die MIDI-Schnittstelle einzubinden. Da ist das dann eine ganz normale serielle Schnittstelle ( z.B. Serial1 ), die mit 31250 Baud betrieben wird. Für USB brauchst Du den externen MIDI-Adapter.
Ein Schaltbild für die MIDI-Schnittstelle mit den 2 Widerständen müsste ich mal raussuchen.
Im Prinzip:
5V -> 220Ohm -> Pin4 der DIN Buchse
TX-Pin -> 220Ohm -> Pin5 der DIN Buchse
Gnd an den Schirm ( Pin2 der DIN Buchse )