..im Zeichnen auch nicht?
So richtig klar wird es mir nicht.
Was soll bitte ne "analoge Drummachine" sein? Ein Schlagzeug-Synthie?
Was ist der "Midi Signal Sender"? Nen Midi-Keyboard oder Touchpad oder so?
Wenn ich das richtig erraten habe, frag ich mich, wozu da Arduino und PC (samt Schwachstelle "Java" )nötig sind?
Dieser Aufbau _kann_ nix brauchbares ergeben, die Latenzen müssen jenseits gut und böse liegen, weil alles zigmal verwustelt wird.
Wenn der Sender allerdings irgendein Midi-Gerät ist, und du das Ganze gar nicht "live" spielen willst, wäre die Latenz evtl. nicht tragisch, aber dann kanst du auch direkt die Midi-Datei vom PC zum Synthie schicken, und ggf. zum aufnehmen zurück.
Oder willst du lediglich verschiedene Presets (angepasst an den jeweiligen Drumcomputer) vom PC zum Arduino senden, damit der z.B. die einzelnen Instrumente anpasst?
Falls dem so ist: speichere die Presets direkt im Arduino ab- so wie das da aussieht klappt das in Echtzeit nie und nimmer.
Hab ich bei meinem Keyboard auch gemacht:
ich kann ein (bisher nur eins...) Preset für Aeolus (Orgel-Synthie) direkt beim starten einstellen.
Hier wählt der Arduino automatisch die passenden Kanäle (drei insgesamt) aus, ich kann wahlweise die Tastatur splitten (oder auch eine der beiden Tastaturen aufs ganze Brett nehmen, und das in Echtzeit), mit dem dritten Kanal übertrage ich nen Program-Change, mit dem wiederum ich dann voreingestellte Presets im Laptop abrufen kann.
Momentan hat das Keyboard lediglich ne normale Midi-Buchse, USB besorg ich mir mittels Midi2USB-Adapterkabel (das Teil bau ich irgendwann direkt ins Keyboard, so weit isses aber noch nicht), einfacher und flexibler geht es nicht.
Wenn _ich_ mehrere solcher Spezialfälle (der Aeolus _ist_ etwas speziell) hätte, würd ich mir einfach für jeden davon nen eigenes Preset ins Keyboard programmieren, die kann man dann ggf. auch zur Laufzeit (also während dem Spiel!) wechseln.
Bei dir würde ich wahrscheinlich das Routing ganz einfach so machen:
Eingabegerät->PC, dort dann den Jack-Server mit passenden Routings (kann man abspeichern) laufen lassen, Synthie an nen anderen Anschluss, fertig.
Da brauchts echt kein rumgewurstele mit Java...
Falls du kein Linux nutzt, könnte man das Gleiche mit LMMS (kostenlos) machen, auch dort kann man Midi nahezu beliebig routen- Jack ist aber wesentlich effektiver.
Da brauchts keinen Arduino für.
Aber wenn der eben mitspielen soll, mach das doch so: leg dir fertige Presets an, die du, meinetwegen in der Setup-Routine, abfragst. Brauchst halt sowas wie ein Display (geht im Notfall mit ner LED, die Blinkmuster ausgibt schon, ich hab ein 1.8er Farb-TFT drin), und nen Button-wobei du da ja auch dein normales Eingabegerät nutzen kannst.
Da brauchste nicht erst mit Java rum basteln.
Auch Midi aus nem Arduino raus zu bekommen, ist nicht schwer, das geht über ne serielle Schnittstelle wunderbar (Widerstand dran, Midibuchse, fertig), Midi rein ist etwas aufwendiger, hier muss noch nen Optokoppler zwischen.
Während der Arduino Midi-Daten verarbeitet, noch über den Umweg PC (und Java-Krücke) daran was zu ändern, kannst du vergessen.
Wenn du das unter 10ms Latenz noch hin kriegst, bist du entweder sehr gut, oder hast nen sehr schnellen Rechner- aber auch die 10ms sind inakzeptabel.
Alles was oberhalb 5-6ms an Latenz liegt, ist zum live spielen nicht mehr zu gebrauchen, hier muss schon synchronisiert werden, und _dann_ wirds richtig aufwendig.
Immer wichtig bei Midi: das Timing. Je weniger an nem Signal noch nachträglich rumgebastelt wird, umso gut. Du gehst da gerade völlig den falschen Weg.
Falls du eines dieser Midi-Eingabe-Wunder hast (son Ding hab ich auch, aber nen einfaches, da mein Schlagzeug Hydrogen heisst), mit Tasten, Reglern, Pads- schnapp dir einfach mal die Hairless-Midi-Serial-Bridge und guck mal, was dein Teil wirklich an Daten schickt.
Bei meinem Miditech war ich entsetzt....drum mache ich das auch selber jetzt.
Lesezeichen