Ich verwende MIDI mit dem klassischen MIDI-Trio, um unterschiedliche
Controller und Steuergeräte miteinander zu verbinden. Gesteuert wird
Audio, PA und Licht.
In der jüngeren Zeit ist es allerdings so, dass viele Controller-Geräte
keinen klassischen MIDI-Ausgang und vor allem kein Through mehr haben,
sodass Ich grosse Probleme bekomme, moderne Geräte ins Setup
einzuklinken.
Das Verknüpfen über USB-Hubs ist leider oft nicht möglich, weil die
Endgeräte nur ein Gerät erkennen oder akzeptieren bzw keine echte
host-Funktion haben oder es am Strom scheitert.
Ich möchte daher eine programmierbare Platform, an die ich 4 oder mehr
USB-Geräte anschließen und selber mappen kann. Das heisst, das
USB-Protokoll umsetzen, die Befehle auf Kanäle verteilen und das
feedback oder inquiries vom host Rückverteilen und den Controllern
zuleiten, je nachdem, wer gesendet hat.
Im Prinzip ist es ein Internet-Router für USB, wobei der host nur ein
einziges Gerät sehen soll.
Das Ummappen hat auch den Zweck, die Bedeutung der Befehle zu ändern:
Bei den üblichen launch-Pads bin ich oft auf die programmierte Funktion
festgelegt, die ich nicht schnell ändern kann. Die Setups müssen erst
vom PC runter geladen werden, was erneuten USB-Stress macht. Schaltet
man die Settings an machen Geräten um, wie z.B. an meinem Akai MPC, dann
werden gleich mehrere Funktionen geändert und Geräte fehlgeschaltet.
Obendrein sind die Launch-Pads teuer und haben wenige Tasten. Daher
würde Ich gerne ganz normale Keyboards benutzen und die Tasten in
Bereiche gruppieren und zweckentfremden.
Eine Tabelle soll dann einfach definieren, welche Befehlssequenz
gesendet werden soll, wenn eine bestimmte Taste betätigt wird. Die
Sequenzen bestehen idealerweise aus bis zu 24 MIDI-Befehlen, was mir
sehr viele Tasten sparen würde, weil Ich dann mit einer Taste ein
komplettes Lampensetup weiterschalten könnte.
Ich habe schon bei UCAPPS geschaut, aber da ist nichts derartiges zu
finden.
Kennt einer zufällig so ein Projekt oder ein System, mit dem man das
aufziehen kann?
Das meiste deines Postings verstehe ich leider nicht.
Wie wäre es denn, wenn du dir einfach ein USB Midi-Interface mit mehr
als 1 In/Out kaufst?
z.B. MOTU MIDI Express 128 (hat 8 Ein-/Ausgänge).
Oder iConnectivity mio10 (10x In/Out).
Hallo Joe,
solche Gerätschaften wie 8x8 habe ich haj, aber die verarbeiten nur
echte MIDI-Geräte mit den bekannten 3 Buchsen. Heutige Controller haben
die kaum noch, sondern gehen über USB direkt in den PC. Ich brauche aber
ersten so viele von den Geräten, dass es schwer wird, die über USB Hubs
zu mischen. Oft werden die Geräte nicht mehr erkannt und es geht gar
nichts. Wenn sie erkannt werden, geht früher oder später etwas schief.
Daher dachte ich mir, einen intelligenten USB-hub zu nutzen, den man
programmieren kann, um gleich noch zwei andere Dinge zu tun:
1) Ich möchte die Daten ausmaskieren, um das von von manchen
Problemcontrollern kommt, zu blocken.
2) Ich möchte die Funktionen dahingehend erweitern, dass ein "Press On"
eines einzelnen Gerätes nicht nur ein MIDI on sendet, sondern eine ganze
Sequenz abspielt, um ein Gerät zu konfigurieren.
Von den bekannten MIDI-Programmen her geht das mit SYSEX, aber ich
möchte und kann das nicht automatisieren. Ich möchte idealerweise EINE
Taste drücken und es werden mehrere Geräte per MIDI umgeschaltet. Das
ginge von PC aus, aber auch dann muss der die USB MIDI Daten alle
kriegen.
Daher dachte Ich, man könnte es gleich in einer externen Hardware
reinstecken und auf den PC verzichten. Leider sind Masterkeyboards otf
nicht umfangreich genug, um andere zu kaskadieren und solchen Umfang
auszuführen.
Es wäre also so, dass ich einen intelligenten Prozessor habe, der von
mehreren USB-Kanälen die MIDI-Daten empfängt und diese über eine Tabelle
übersetzt und dann einfach abspielt, was in der Tabelle drin steht.
Ich habe mal ein Beispiel gemacht mit der Annahme von 8 USB-Eingängen,
die alle mit einem 61-Tasten-Keyboard versorgt werden.
Der Controller im Gerät (Hub?) müsste wissen, auf welchem Kanal welche
Taste kommt und dann handeln. Konkret müsste er z.B. 32 MIDI-Ausgänge
bedienen:
Fall 1: Alle MIDI Daten vom Input 1 auf den Ausgang 3:
If Event.InputKanalNumber = 1 then Ausgang3 := CurrentEvent
Fall 2: Die Taste 3 des Keyboards auf Input 2 schaltet Lampen 2-4
If Event.InputKanalNumber = 1 AND Event.ToneNumber = 3 then
{
for L = 2 to 3
SentMidiEvent (Ausgang3, Lamp2On);
SentMidiEvent (Ausgang3, Lamp3On);
SentMidiEvent (Ausgang3, Lamp4On);
end loop
}
Es wird also ein Programm durchgerattert, das eine vorprogrammierte
Folge ausgeben kann. Mir würde es reichen, das fest compiliert zu
haben.
USB ist auf der Host-Seite sehr komplex. Etwas fertiges gibt es nicht;
am nächsten käme noch der Kenton MIDI USB Host, das MIDI-Anschlüsse für
ein USB-Gerät bereitstellt.
Ich würde es mit einem Raspberry Pi (oder einem ähnlichen Linux-System
mit USB-Host-Unterstützung) versuchen. Für Linux gibt es dann Software,
mit der man sich so etwas basteln kann (z.B. mididings, midish).
Das habe ich befürchtet. Ich werde mich mal nach einer solche Linix APP
umsehen. Im Technoforum wurde eine Software dafür empfohlen. Kann
mehrere Devices, kostet aber 499,- und ist nicht frei einstellbar.
Oder man kauft halt nur Controller, die noch echtes MIDI sprechen. Wenn
das nicht geht, versuchen, im USB-MIDI-Controller MIDI-Daten abzugreifen
und da einen Treiber und eine Buchse dranbauen. Wenn das auch nicht
geht, die Platine 'rausbauen und was eigenes einbauen, also nur die
Hardware des Herstellers verwenden. Das wird allemal günstiger und
schneller gehen, als ein komplettes Host-System zu entwickeln.
Hier sind nochmal zwei solche Kandidaten:
ICON i-ConPad und the i-creativ IR controller. Die haben beide USb, sind
auch USB-powered und so ohne weiteres nicht gemeinsam oder mit anderen
zu verwenden. Selbst ein PC mit mehreren USB-ports kommt da oft nicht
mir klar.
Das ist der, der oben bereits erwähnt wurde, nehme ich an "Kenton MIDI
USB Host".
Ok, es würde wieder auf normale MIDI-Schnittstellen übersetzen, aber die
müssten auch wieder gemerged werden.
Möglicherweise kommt man aber in dieses Gerät irgendwie rein.
Re. S. schrieb:> Ok, es würde wieder auf normale MIDI-Schnittstellen übersetzen, aber die> müssten auch wieder gemerged werden.
... und nicht nur das: Für jeden USB-Kanal braucht es einen eigenen
USB-MIDI-Wandler! Wieviele sollten das werden?
Vielleicht ist es ja eine Möglichkeit, das mit intelligenter Hwardware
zu lösen, z.B. mit Teensy / Arduino. Dafür gibt es DIY USB-Anwendungen,
teilweise auch MIDI. Da gäbe es z.B. das hier:
http://www.inspektorgadjet.com/cerebelusb/
Der scheint sowas mit Arduino gemacht zu haben. Braucht auch mehrere und
die müsste man dann dazu bringen, miteinander zu reden.
Die meisten Musiker, die das brauchen, mischen das im PC mit Software.
Dort gibt es auch die Möglichkeit, MIDI-routing zu betreiben.
Clemens L. schrieb:> Das iConnectMIDI 4+ sieht auch vielversprechend aus.
Glaub Ich eher nicht. Das sieht mir mehr so aus, als ob das zwei hoasts
auf die 4 MIDIS zugreifen können.
Ich habe in der Zwischenzeit auch nochmals gesucht aber nichts gefunden.
Kann ja wohl nicht sein!
Sind alle damit zufrieden, dass sie nur ein Keyboard anschließen können?
Reinhard S. schrieb:> Clemens L. schrieb:>> Das iConnectMIDI 4+ sieht auch vielversprechend aus.>> Glaub Ich eher nicht. Das sieht mir mehr so aus, als ob das zwei hoasts> auf die 4 MIDIS zugreifen können.
Wäre es zu viel verlangt, mal ins Handbuch zu schauen?
"The default routing (remember, this can be changed): ...
Each port on the USB Host jack routes to:
all four pairs of MIDI DIN jacks"
Ob 4:1 oder 4:4 ist nicht das Problem. Es geht um die Datenrichtung und
um die Tatsache, dass die gemultiplexten Daten selbst vom PC oft nicht
sortiert werden können.
Hier ist ein solches Projekt aufgeführt:
https://hackaday.io/project/169980-20-usb-midi-host
Die hosten praktisch das MIDI-Gerät und wandeln dessen Information in
ein "normales" (altes) MIDI um. Dazu braucht es eine Verwaltung des
MIDI-Gerätes, also ein management des Instruments als UBB-Client, einen
Takt mit Abfragen an das Gerät und einen Empfangspuffer für das
Gesendete (aus Sicht des Vermittlers, das "Empfangene") sowie einen
Sendepuffer mit Übersetzung der Pegel. Soll das als MIDI heraus, braucht
es noch eine Stromschleife.
Wenn die MIDI-Geräte auch gemischt werden müssen, dann braucht es A)
entweder einen HUB, der das schon auf der USB-Seite tut, oder B) mehrere
USB-Anschlüsse und hosts, deren Ausgänge wiederum gemischt werden.
A) Das erste scheitert daran, dass die Geräteverwaltung oft schon mit
professionellen Chips in einem PC nicht funktioniert, weil die Clients
immer denselben FTDI-Chip drin haben und man sie nicht auseinander
halten kann, oder sie zuviele Daten liefern, dass der Vermittler es
nicht schafft, das timing einzuhalten. Besonders bei USB 2.0 Geräten ist
das so: Die funktionieren oft nur richtig, wenn sie an unterschiedliche
hubs im PC angeschlossen werden. Trotzdem kommt es da immer wieder zu
Problemen. Oft haben sie sogar ein spezielles Protokoll und erfordern
einen speziellen Teiber.
B) Das Zweite scheitert daran, dass der Vermittler nicht weiß, wie er
mit mehreren Geräten umgehen soll: MIDI kommt mit 16 Kanälen und wenn es
aus 4 Geräten prickelt, dann müssen 64 auf 16 gemappt werden, was erst
einmal eine Zuordnung braucht, die willkürlich erfolgen muss.
Mein MIDI-Mischer ist dazu programmierbar, kann in der neuen Version 8x2
solcher Eingänge auf 8+8 Ausgänge mischen. Jeder davon hat wieder
"seine" 16 logischen MIDI-Kanäle.
Was noch fehlt ist ein MIDI-host, der schnell genug ist, wirklich das
Tempo von USB mitzugehen und es auf (m)ein schnelles MIDI übersetzt,
respektive zumindest auf 230k seriell, damit es Arduino und Raspberry
oder andere Hardware wie die hier verarbeiten können:
Beitrag "Analoge Orgel mit USB-MIDI steuern"
Der obige Beitrag war von mir, war aber nicht eingelogged, da vom
anderen Browser aus gepostet. Hier wurde das Thema auch aufgegriffen:
Beitrag "Re: Analoge Orgel mit USB-MIDI steuern"
Was ich abweichend von oben noch gefunden habe, ist das hier:
http://www.inspektorgadjet.com/cerebelusb/
Die mischen offenbar sogar schon die USB-Geräte, allerdings geht der
shop link nicht.(?)
Hier gibt es ein fertiges Produkt für einen Kanal:
https://www.indiamart.com/proddetail/mini-usb-host-shield-2-0-for-arduino-adk-slr-development-tool-20922080730.html
und auch der hier hat was gebaut:
https://modwiggler.com/forum/viewtopic.php?t=240740
Dazu gibt es noch einen "CAMOLA USB MIDI Host Box MIDI".
Diese Geräte kranken aber alle daran, dass sie auf langsames MIDI
übersetzen und damit ungeeignet sind, Daten aus einem Masterkeyboard
praktisch zeitgleich zu verarbeiten. Das sendet nämlich auch noch
spezifisches SYSEX und hat gfs einen Sequenzer drin, der die
angeschlossenen Synths mit Daten vollklopft.
Schnelle USB-breath controller produzieren inzwischen auch schon
deutlich mehr MIDI-Daten-Dichte, als es per MIDI 1.0 transportierbar
wäre. Dazu gehören auch und einige Theremine und Ribbon-Controller.
Mein Ziel ist eine open Plattform, bei der man an die firmware rankommt,
um sie entsprechen umschalten zu können.