Scriptreferenz, Steuerung und Status per MIDI

Hallo,

gibt es eine Referenz über alle Scriptbefehle von mAirlist? Es geht primär darum mAirlist per Midi zu steuern und Statusmeldungen per Midi zu senden.

Das beides möglich ist habe ich schon aus dem Forum herauslesen können, auch grob wie es geht. Allerdings erschliesst sich mir nicht ganz wie ich z.B. die Stati wie EOF Warnung einzelner Player übergebe.
Denn Pro Player möchte ich 2 Kontrollampen ansteuern. Diese sollen je Playerstatus verschiedenes leuchten/blinken. (Player leer, Player stopp, EOF Warnung, EOF Player + Playlist leer.

Hardwareseitig stellt es kein Problem dar, da habe ich jemanden der das zusammen realisiert. Nur komme ich mit dem Scripting nicht weiter, da ich weder im Handbuch, noch im Forum detaillierte Referenzen dazu finde. Vor allem auch nicht wie ich die jeweiligen Stati dazu per Midi übergebe. Auch wenn ich schon was von dem Midi Out befehl gefunden habe, bringt mich das nicht voran.

Eigentlich ist es ganz einfach. Schau dir das Notification Script Template an (in C:\Programme\mAirList 4.x\scripts\notification), das nimmst du als Grundlage. Mach eine Kopie davon und leg sie irgendwo ab (Endung muss .mls sein).

In dem Script findest du verschiedene, beinahe selbst erklärende Prozeduren, die von mAirList zu den entsprechenden Situationen aufgerufen werden. Die kannst du jetzt mit Leben füllen.

Für MIDI-Ausgabe solltest du insbesondere in OnLoad zunächst den Midi-Port für die Ausgabe öffnen:

procedure OnLoad;
begin
  MidOutOpen(1);
end;

Die 1 habe ich mal geraten, der passende Wert kann ein anderer sein, wenn du mehrere MidiOut-Geräte im Rechner hast. Wenn du dir nicht sicher ist, kannst du einmal testweise den Befehl “MidiOutListDevices;” benutzen, der gibt dir die Liste der verfügbaren Geräte im Systemprotokoll aus.

Nun geht es los - du kannst zum Beispiel einen MIDI-Befehl herausschicken, wenn ein Player gestartet wird:

procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
  if PlayerIndex = 0 then // Player A
    MidiOut(1, x, y, z);
end;

Für x, y, z die entsprechenden MIDI-Werte einsetzen. PlaylistIndex (normalerweise 0) und PlayerIndex (0=erster Player usw.) geben an, welcher Player es denn war, der dort gestartet wurde.

Für noch genauere Statusinformationen gibt es OnPlayerStateChange, da bekommt man auch so Sachen wie “wird gerade geladen” (State = psLoading) mit. Die Werte sollten in der Script-Referenz (mAirListScript.chm) stehen.

Hallo Torben,
hab jetzt gesucht wie ein Blöder, aber ich habe keine Script-Referenz (mAirListScript.chm). Hab die aktuellste Home Studio neu installiert und immer noch keine mAirListScript.chm

Das Wiki gibt auch nichts darüber her wie die syntax aussehen muss…

Denn das aus den beiden Schnipseln:

[code]
procedure OnLoad;
begin
MidOutOpen(1);
end;

procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
if PlayerIndex = 0 then // Player A
MidiOut(1, 11, 62, 00);

end;[/code]

liefert mir:

2012-06-13 00:45:32 Fehler Fehler beim Laden des Benachrichtigungs-Scripts I:\mAirList 4.1\scripts\midi.mls: [Error] (4:3): Unknown identifier ‘MidOutOpen’

Nun nehme ich an das mir irgendwas fehlt…

Offensichtlicher Tippfehler meinerseits: Da fehlt ein “i” bei MidiOutOpen.

CHM-Datei liegt hier, gerade noch einmal für v4.1 aktualisiert: http://download.mairlist.com/mAirList/v4.1/scriptinghelp/

Wichtig: Beim Öffnen kommt der übliche “Diese Datei wurde aus dem Internet heruntergeladen”-Warndialog von Windows. Hier unbedingt den Haken bei “Jedesmal nachfragen” entfernen, sonst werden die Inhalte nicht angezeigt.

Danke Torben.

Aber einmal bräuchte ich nochmal Deine Hilfe. Ich bräuchte mal auf die schnelle ein klitzekleines Script was ein Midisignal von Mairlist aus sendet, denn irgendwie kommt bei mit in MidiOx mit dem Script nix an.
Oder verträgt Mairlist sich nicht mit LoopBe1 ? Allerdings kommen Signale von MidiOx in Mairlist an…

Und von Kontakt 5 kommen auch Signale im Ox an… Selbst wenn ich es mit den Codeschnipsel oben versuche bekomme ich irgendwie kein Signal raus.

Vielleicht heissen meine Player auch nicht 0, 1, usw. allerdings wär mir nicht bewußt es geändert zu haben…

Es ist zum verzweifeln…

Hm. keiner der hier weiter weiß…

Hast du überprüft, ob du auch an das richtige Gerät (im Beispiel: 1) schickst?

Dazu am besten das folgende als “liste.mls” abspeichern und mit “Öffnen -> Script ausführen” starten. Danach steht die Liste der Geräte im Systemprotokoll (Doppeklick auf die Statusleiste unten).

begin
  MidiOutListDevices;
end.

Der Code, um einfach mal eine Nachricht zu schicken (hier wieder an Device 1) steht im Prinzip schon oben:

begin
  MidiOutOpen(1);
  MidiOut(1, 11, 62, 00);
end.

Ok, das Device passt schon mal. Aber auch mit dem Schnipsel jetzt kommt bei MidiOx wie auch bei Nativ Kontakt5 keinerlei Midisignal an. Aber ich denke das liegt evtl. an der Virtuellen Midischnittstelle.

Mal schauen ob ich da irgendwie weiterkomme. Wenn ich von anderen Programmen ein Midibefehl raushau, kommt der ja auch bei MidiOX an.

Gar nicht so einfach wenn man nicht weis wo genau der Fehler liegt.

Hallo Torben,

Du hattest mir ne Email geschrieben bezüglich Einbindung des Arduino in Mairlist (auf meinen Post in den Radioforen). Darauf hatte dir mein Neffe, der das mit dem Arduino für mich machen wollte geantwortet.

Leider kam von Dir seither keine Reaktion mehr. Mein Neffe ist fit in Sachen Arduino und kann dir alle Details nennen wie genau der angesteuert wird.

Meld dich doch bitte nochmal diesbezüglich.

Ich hatte ihm ab 16.7. zurückgeschrieben aber bislang keine Antwort erhalten.

Werde auch in den nächsten paar Wochen keine Zeit für das Thema haben.

Ah, dann muss er mal in seinen Spamordner schauen… Ok. Kein Problem, das eilt ja auch nicht.