Ich habe folgendes Problem mit MidiOut: Ich bekomme den Midi-Port nicht brauchbar geöffnet.
Wenn ich MidiOutOpen in ein Hintergrund-Skript in die procedure OnLoad einbaue, dann meldet später ein Action-Skript den Fehler, der Midi-Port sei nicht geöffnet.
Hintergrund-Skript:
// Called after mAirList startup
procedure OnStartup;
begin
MidiOutOpen(2);
end;
// Called before mAirList shutdown
procedure OnShutdown;
begin
MidiOutClose(2);
end;
Schreibe ich MidiOutOpen in ein Action-Skript, meldet er beim zweiten Aufruf (logischerweise), dass der Port schon geöffnet ist.
Ich habe mir damit beholfen, den Port im Action-Skript zu öffnen und wieder zu schließen. Das hat aber zur Folge, dass mAirList dadurch auch jedesmal bei Open und/oder (?) Close $B0;$40;$00 … $BF;$40;$00 sendet, wie es pm98 schon 2012 beschrieben hat.
Action-Skript:
Begin
SystemLog('WeWWe_Ultramizer_IN: Ultramizer aktiv');
MidiOutOpen(2);
Sleep(1);
MidiOut (2, $B0, $57, 1) ;
Sleep(2);
MidiOutClose(2);
End.
Die Anwendung war relativ simpel: Ein Action-Skript soll einen Kompressor einschalten oder auf Bypass stellen. Daher machte das $B0;$40;$00 usw. keine Probleme.
Bei einem anderen Fall führt das aber dazu, dass gerade aktiviere Einstellungen durch diese $B0-Controller wieder deaktiviert werden.
Kurzum: Was muss ich tun, damit mAirList beim Starten MidiOut öffnet und Action-Skripte dann auch tatsächlich darauf zugreifen können?
Und: Was sollen diese $B0-Controller, die mAirList bei Open/Close sendet? Ich bin nicht so der MIDI-Profi, aber wenn ich es richtig sehe, ist $B0;$40 der Controller für das 1. Haltepedal. Offenbar setzt mAirList das 1. Haltepedal auf allen MIDI-Kanälen auf 0. Wozu? Warum nicht wenigstens ein All-Notes-Off-Befehl?
Übrigens habe ich mir bei dem Beispiel für das Action-Skript mit Sleep-Befehlen geholfen, weil sonst gar nichts beim Kompressor ankam. Trotzdem blieb das ganze unzuverlässig. Zufällig kam der Befehl manchmal beim Kompressor an, manchmal nicht. Als ob manches unterwegs verschluckt würde. Defekte Kabel kann ich ausschließen.
Kann jemand helfen?
Viele Grüße aus Hessen
Stefan