Forum: Mikrocontroller und Digitale Elektronik Arduino als Midi Controller Probleme


von GP (Gast)


Lesenswert?

Hallo Zusammen!
Habe da ein Problem mit meinem Aktuellem Projekt....
Nämlich habe ich meinen Arduino UNO (Clone) mit folgendem Programm 
bespielt, um ihn als Midi Controller zu benutzen.:

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;
}


Als Software verwende ich zudem Hairless Midi Bridge und Loop MIDI.
Wenn ich jetzt aber in Hairless Midi Bridge dem Arduino Loop MIDI Port 
als Ausgang zuweisen will, funktioniert dies nicht und ich bekomme die 
Fehlermeldung:
FTDI drivers don't seem to be installed. Not attempting any FTDI latency 
tricks.

Kann mir da vlt jmd helfen?

von W.A. (Gast)


Lesenswert?

GP schrieb:
> ... und ich bekomme die Fehlermeldung: FTDI drivers don't seem to
> be installed.

Und - hat Hairless Midi Bridge recht?
Was sagt der Gerätemanager und was sagt ein simples Terminalprogramm?

> Serial.begin(9600);

Für MIDI erscheint mir das arg langsam. Wie kommst du dadrauf?

von GP (Gast)


Lesenswert?

Danke erstmal für Deine Antwort!
Habe es 1:1 wie in diesem Video gemacht um Fehler zu umgehen, allerdings 
habe ich Windows statt Mac...

https://www.youtube.com/watch?v=huDCxDyxCD8

Ausserdem war ich auf dieser Website und habe versucht den Richtigen 
Treiber herunterzuladen...

http://www.ftdichip.com/FTDrivers.htm

Allerdings weiß ich nicht genau welchen ich nehmen soll.

von GP (Gast)


Lesenswert?

Habe mir jetzt mal MidiTerm runtergeladen, falls das so ein simples 
Terminal Programm ist?
Dort verändert sich der Wert (Control Change) jenachdem wie ich das Poti 
drehe... Das sollte so ja eig auch korrekt sein.. Daselbe hatte ich auch 
in Hairless, mit dem kleinen Unterschied der Fehlermeldung... Im Geräte 
Manager wird mir ein "Virtual MIDI Driver x64" angezeigt, und auch in 
Virtual DJ gibt es einen "Loop MIDI Port". Nur reagiert VDJ nicht auf 
Eingaben vom Poti.

von Michael U. (amiga)


Lesenswert?

Hallo,

ich halte das nicht für eine Fehlermeldung:
FTDI drivers don't seem to be installed. Not attempting any FTDI latency
tricks.

Für mich liest sich das wie ein Hinweis, daß kein FTDI-Treiber und damit 
kein FTDI-Chip genutzt wird und das Programm daher irgendwelche 
Latency-Tricks nicht anwenden kann.

Ansonsten keine Ahnung über welche (Um-)Wege die Midi-Daten da vom 
Arduino in das Programm kommen. Langweilige Filme schau ich mir sowieso 
nicht an, ich habe in der Schule noch lesen gelernt...

Gruß aus Berlin
Michael

von Clemens L. (c_l)


Lesenswert?

GP schrieb:
> Ausserdem war ich auf dieser Website und habe versucht den Richtigen
> Treiber herunterzuladen...

Ein Arduino-Klan hat bestimmt gar keinen FTDI-Chip.

> Im Geräte Manager wird mir ein "Virtual MIDI Driver x64" angezeigt,
> und auch in Virtual DJ gibt es einen "Loop MIDI Port". Nur reagiert
> VDJ nicht auf Eingaben vom Poti.

Bitte beschreibe genau, welche Verbindungen du zwischen diesen Ports 
hergestellt hast.

von GP (Gast)


Lesenswert?

Nur irgendwie komisch dass es nichts daran ändert
welchen der 3 Treiber ich von der Website installiere...

von GP (Gast)


Lesenswert?

Den Port im Geräte Manager habe ich erst seit ich loop Midi und Hairless 
installiert habe, weshalb ich davon ausgehe, dass der Port von loop Midi 
erzeugt wird. Allerdings habe ich in VDJ und Hairless einen Port der 
loop Midi Port heißt. In VDJ bekomme ich ausserdem
0-JOG22
0-ENCODER22
0-SLIDER22
unter diesem Port angezeigt.

von GP (Gast)


Lesenswert?

0-JOG21
0-ENCODER21
0-SLIDER21

Meinte ich natürlich..

von Andreas H. (ahz)


Lesenswert?

Clemens L. schrieb:
> Ein Arduino-Klan hat bestimmt gar keinen FTDI-Chip.

Ein Original Arduino Uno auch nicht (da war doch ein ATmega16U2 drauf, 
oder?).

GP schrieb:
> Wenn ich jetzt aber in Hairless Midi Bridge dem Arduino Loop MIDI Port
> als Ausgang zuweisen will, funktioniert dies nicht und ich bekomme die
> Fehlermeldung:
> FTDI drivers don't seem to be installed. Not attempting any FTDI latency
> tricks.

Nur mal so ins Blaue "geraten (bin zu faul es aufzubauen, sry ;-)

Kann es sein, dass Du da was falsch verstehst? Der Arduino ist doch der 
serial (!!!) port (also LINKS im hairless window).

Als Output (in hairless rechts oben) gibts du den "echten" MIDI port an, 
wo hairless die Daten hinschicken soll (das kann natürlich auch ein 
virtueller MIDI port sein, je nach Setup Deiner Synths).
Aber das ist (bei Deinem Programm) definitiv NICHT der Arduino. Der kann 
mit MIDI Daten ja gar nicht anfangen :-D

/regards

von GP (Gast)


Lesenswert?

Oh sry, das hab ich wohl etwas umständlich geschrieben.
Rechts als Output ist der loop MIDI Port (also der von loop MIDI) 
angegeben.
Und der Serial port ist der Arduino (bei mir auf COM3).
Und dann bekomme ich unten die Fehlermeldung, Hinweis, was auch immer...
Aber ich bekomme auch alle Daten angezeigt, sprich auf welchen Wert das 
Poti eingestellt ist, der Channel usw.

von Andreas H. (ahz)


Lesenswert?

GP schrieb:
> Aber ich bekomme auch alle Daten angezeigt, sprich auf welchen Wert das
> Poti eingestellt ist, der Channel usw.

Die Daten siehst Du in hairless oder im MIDI Terminal? Aber dann scheint 
ja der Arduinoteil zu laufen.

Michael U. schrieb:
> ich halte das nicht für eine Fehlermeldung:
> FTDI drivers don't seem to be installed. Not attempting any FTDI latency
> tricks.
>
> Für mich liest sich das wie ein Hinweis, daß kein FTDI-Treiber und damit
> kein FTDI-Chip genutzt wird und das Programm daher irgendwelche
> Latency-Tricks nicht anwenden kann.

Da hast Du recht. Ich habe mal kurz nachgesehen unter 
https://github.com/projectgus/hairless-midiserial/blob/master/src/PortLatency_win32.cpp

Ist nur eine Warnung.
1
// Return the windows registry entry for the FTDI device (open), or 0
2
HKEY PortLatency::openFTDIDeviceParameters()
3
{
4
    HKEY key;
5
    const wchar_t *keypath = L"SYSTEM\\CurrentControlSet\\Enum\\FTDIBUS";
6
    long r = RegOpenKeyEx(HKEY_LOCAL_MACHINE, keypath,
7
                            0, KEY_READ, &key);
8
    if(r) {
9
        emit debugMessage("FTDI drivers don't seem to be installed. Not attempting any FTDI latency tricks.");
10
        return 0;
11
    }

/regards

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Andreas H. schrieb:
> Ein Original Arduino Uno auch nicht (da war doch ein ATmega16U2 drauf,
> oder?).

Nö. Der originale Uno hat einen Mega328P und einen FT232RL von FTDI - 
das ist die gleiche Bestückung wie auf dem Arduino 2009 (DueMilanove).

von GP (Gast)


Lesenswert?

Also bedeutet das für mich dass ich nen Originalen brauch?

von Andreas H. (ahz)


Lesenswert?

Matthias S. schrieb:
> Nö. Der originale Uno hat einen Mega328P und einen FT232RL von FTDI -
> das ist die gleiche Bestückung wie auf dem Arduino 2009 (DueMilanove).

Ok, da war ich etwas zweideutig. Mit "Original" meinte ich schon den 
aktuellen Uno R3. Aber eben keinen (China-)Klon.

GP schrieb:
> Also bedeutet das für mich dass ich nen Originalen brauch?

Nein wozu.
Für mich sieht das momentan so aus, als ob es funktioniert.
Denn Michael U. hat schon richtig erkannt, dass der "fehlende" FTDI 
nicht notwenig ist. Die Meldung sagt ja nur (grob ins Neugermanische 
übersetzt):

"Ich habe keinen FTDI Chip gefunden, also mache ich keine Tricks um die 
Latenz zu verbessern"

Was klappt den jetzt nicht?

/regards

von GP (Gast)


Lesenswert?

Also, in Virtual DJ bekomme ich unter dem Virtuellen Port (Also Arduino)
wie gesagt dass hier angezeigt:
0-JOG21
0-ENCODER21
0-SLIDER21
Denen kann ich dann ne Funktion zuordnen (z.B Crossfader, EQ). Soweit so 
gut,
rühren tut sich da aber nix. Zudem bekomme ich 0-JOG21; 0-ENCODER21; 
0-SLIDER21 erst im Menü angezeigt wenn ich am Poti drehe, vorher steht
ONINIT und ONEXIT. Ka ob es am Programm selber oder an mir liegt...

von GP (Gast)


Lesenswert?

Hab jetzt mal statt nem Poti n Taster genommen und entsprechend 
umprogrammiert... Kann den Taster in VDJ auswählen und dem was zuordnen, 
aber im Programm funktioniert das dann nicht... Ich glaub ich geb mich 
dann geschlagen

von Andreas H. (ahz)


Lesenswert?

GP schrieb:
> Kann den Taster in VDJ auswählen und dem was zuordnen,
> aber im Programm funktioniert das dann nicht... Ich glaub ich geb mich
> dann geschlagen

Ich kenn VDJ nicht. Darum kann ich Dir da nicht wirklich weiterhelfen.
Aber "siehst" Du denn MIDI events vom Taster in haircut oder MidiTerm?

Ich denke, da ist schon etwas ausprobieren angesagt. So schnell solltest 
Du da nicht aufgeben. Immerhin ist ja schon geklärt, dass es nicht am 
Arduino liegt ;-)

/regards

von GP (Gast)


Lesenswert?

Ja, es scheint einwandfrei zu funktionieren nur in Virtual DJ eben 
nicht.
In Hairless werden beim drücken 0 und 127 angezeigt, sollte so passen 
denke ich.

von Andreas H. (ahz)


Lesenswert?

GP schrieb:
> In Hairless werden beim drücken 0 und 127 angezeigt, sollte so passen
> denke ich.

Ja, super. Also kommen die Events erst mal im PC an.
Nun musst Du mal ein bisschen mit VDJ rumprobieren (ich kenn es nicht).

Wenn (!) Du da MIDI Tasten zuordnen kannst dann sollte es irgendwann 
klappen.

Poste doch mal den Scrrendump von MidiTerm/Hairless. Da sollte man ja 
auch sehen, auf welchen Channel die Daten kommen, bzw. ob da noch 
irgendwelche "Extras" zu berücksichtigen sind.

Auch der aktuelle Arduino Sketch wär da ggf. hifreich.

/regards

von GP (Gast)


Angehängte Dateien:

Lesenswert?

Sketch:

int taste = LOW;
int tasteAlt = LOW;

void setup() {
 Serial.begin(19200);
 pinMode(2, INPUT);
}

void loop(){
 taste = digitalRead(2);

 if (taste == HIGH && tasteAlt == LOW) {
 Serial.write(144); // 1001 0000 = Note On Kanal 1
 Serial.write(36); //Note C1
 Serial.write(127);
 tasteAlt = taste;
 }
 if (taste == LOW && tasteAlt == HIGH) {
 Serial.write(144); // 1001 0000 = Note On Kanal 1
 Serial.write(36); //Note C1
 Serial.write(0);
 tasteAlt = taste;
 }
}

Screenshot ist im Anhang. Habe von 9600 auf 19200 erhöht, hat aber nix 
gebracht.

von Andreas H. (ahz)


Lesenswert?

GP schrieb:
> Ja, es scheint einwandfrei zu funktionieren nur in Virtual DJ eben
> nicht.

Hab grad mal in das Manual von dem "Wunderwerk" geschaut. 
http://www.virtualdj.com/documents/VirtualDJ%208%20-%20Benutzerhandbuch.pdf, 
Seite 102:

"Hinweis: MIDI/HID Geräte sind nur in der Pro Full Infinity, oder einer 
speziellen Controllerversion verfügbar."

Hast Du die entsprechende Version ?

Ansonsten könnte man aufhören zu suchen^^

/regards

von Andreas H. (ahz)


Lesenswert?

GP schrieb:
> Screenshot ist im Anhang. Habe von 9600 auf 19200 erhöht, hat aber nix
> gebracht.

Besten Dank. Ok, in hairless kommt das alles gut an. Wenn Du Loop Midi 
in VDJ unter Controllers siehst, dann solltest Du mit der "Key learn" 
Funktion eigentlich den Taster auch lernen können. (Ob das funktioniert 
kann ich Dir leider nicht sagen).

/regards

von GP (Gast)


Lesenswert?

Verdammte Sch****... Danke, habs gerade eben in FL Studio getestet... 
Funzt.., Der Taster zumindest..
Danke für die Hilfe... So bringt mir der Controller recht wenig wenn ich 
schon 300$ für die Software hinblättern muss.... Muss ich mich wohl nach 
was anderem umschauen.
Nochmals Danke! Hoffe dass es dann wenigstens woanders hinhaut.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.