Midi Script für Buttons

Liebes Forum,
ich habe leider ein Problem: weiß nicht so recht wie ich die Software rtpMidi ansteuern soll. Ich habe sie jetzt
wie ein klassisches Midi-Gerät behandelt. Dort sollen Midi Signale ankommen wenn ein Button ON bzw. OFF geschaltet wird. Dazu hab ich folgendes Script via “Script ausführen” in den Button
eingebunden. Leider zeigt es mir immer an, dass das Midi Gerät nicht offen ist. (Gerät Nummer stimmt) Auch wenn ich die Device-Number ändere zeigt es an, dass das jeweilige Gerät nicht offen ist.

procedure OnLoad;
begin	
	MidiOutOpen(2);
end;

begin
MidiOut (2,1,22,127);
end.

Es geht um drei Button - kann mir jemand helfen?

Danke!

OnLoad wird nur bei Hintergrund-Scripts verwendet, nicht bei solchen, die über eine Aktion oder ein Event ausgeführt werden. In letzeren wird ganz normal das Hauptprogramm (“begin… end.”) ausgeführt.

Demzufolge:

begin
  MidiOutOpen(2); 
  MidiOut (2,1,22,127);
end.

Vielen Dank Torben!

Leider erhalte ich jetzt einen “Error running script: Laufzeitfehler: (2,3) Expectation: MidiOutOpen (device 2): Error 4”

:-\

Schon beim ersten Aufruf nach mAirList-Start oder erst beim zweiten?

Nach dem zweiten Aufruf.
Aber auch beim ersten Aufruf passiert bei der MidiSoftware nichts - Fehler kommt in Mairlist da aber keiner.

Es ist aber gesichert, dass es sich um Gerät Nr. 2 handelt? Mit MidiOutListDevices überprüft?

Ja, hab ich schon dreimal geprüft. Es war immer das gleiche Gerät (localhost).

Gibt es eine Lösung für das Problem? :-\

Also der Fehlercode 4 bedeutet sinngemäß, dass das Gerät bereits in Verwendung ist. Das kann eine andere Anwendung sein, oder mAirList.exe selbst. Daher fragte ich nach “passiert das erst beim zweiten Mal”.

Nun ist es aber so, dass der Script-Befehl midiOutOpen intern nachhält, welches Gerät bereits geöffnet ist, und den zweiten Aufruf dann einfach ignoriert. Also gar nicht erst einen Windows-API-Aufruf durchführt, und daher auch keine Fehlermeldung erzeugt.

Daher stehe ich gerade etwas auf dem Schlauch, warum das passieren sollte.

Danke für den Support!
Es hat sich ein neues Problem aufgetan: siehe neuer Thread.

Es wäre glaube ich vorteilhaft, dafür einen neuen Thread auf zu machen.