Scripte

Habe mich mit dieser Funktion noch nicht wirklich befasst, da es bislang uninteressant für mich war. Könnte mir mal wer verständlich erklären wie das ganze funktioniert und zu funktionieren hat?

Ich probier’s mal :slight_smile:

Ein Script ist ein kleines Programm, geschrieben in einer speziellen Programmiersprache namens “mAirListScript”, das von mAirList ausgeführt werden kann, und mit dem man alle möglichen Dinge machen kann:

  • die Playlist manipulieren (laden, anhängen, Elemente verändern, …)
  • externe Programme starten
  • die Lautstärke im Windows-Mixer ändern (zum Einspeisen externer Signale über Line-In)
  • IO-Ports des Rechners ansprechen, zum Beispiel zur Fernsteuerung von externer Hardware am Parallelport.
  • jetzt neu: IO-Warrior steuern
  • bald: MIDI-Befehle senden

Prinzipiell kann man zwei Arten von Scripts unterscheiden:

  1. “Normale” Scripts. Diese werden durch ein Event oder das Kommando RUNSCRIPT ausgeführt (das man sich zum Beispiel auf ein Hotkey legen kann).

  2. Benachrichtigung-Scripts oder “Notification Scripts”. Diese Scripts führt mAirList automatisch aus, wenn bestimmte Ereignisse eintreten. Solche Ereignisse könnten zum Beispiel sein: Ein Player wird gestartet, ein Player wird gestoppt, die Playlist wurde leergespielt, ein Player ist x Sekunden vor dem EOF, usw. Man kann dann mit seinem Script auf dieses Ereignis reagieren. Beispiel: Die Playlist ist leer gelaufen, das Script lädt eine Notfall-Playlist nach.

Die Syntax der Programme entspricht der Programmiersprache Pascal bzw. Delphi. Man kann auch etliche Delphi-Funktionen und -Klassen benutzen. Außerdem natürlich spezielle mAirList-Funktionen zum Zugriff auf die Playlist usw.

Ein paar Beispiele für Notification Scripts sind bei mAirList bereits mitgeliefert. Wer ein bisschen Programmierkenntnisse besitzt, erkennt schnell, wie die funktionieren. Nach und nach vervollständige ich auch die Doku.

Torben

Aha, jetzt komme ich auch langsam draus.

Script per Hotkey starten habe ich soeben geschaft:

Auszug: mAirList.ini

Key7=121 
Action7="RUNSCRIPT D:\mAirList\mAirList-1.5.42\scripts\versuch1.mls" 
Global7=off

Genial

Hallo Torben

Diverse Ausspielprogramme laden die Player jeweils nicht vor. Dies geschieht erst beim Faderstart. Dies ist eine nützliche Sache, da so ein beliebiger freier Fader (Player) gewählt werden kann. Testhalber habe ich zwei Hotkeys verwendet.

F9-F11 Player laden
F1-F3 Player starten

Das ganze funktioniert. Wie kann ich nun beide Hotkeys beim öffnen des Faders (Faderstart) hintereinander aufrufen (z.B. Player 1 laden und anschliessend Player 1 starten)? Lässt sich dies per Script lösen.

Herzlichen Dank
Michel

Ich raffs net :-/

Ich glaube, da wird mein Lieblingsthema aufgewärmt :slight_smile:

Egal welchen Player man startet, wird einfach das nächste Element der Playliste geladen.

Jetzt ist es ja so …
Die Player werden automatisch geladen. Falls der Moderator nicht richtig guckt, kann er schonmal die falsche Datei abspielen (Bed für Wetter war im Player C vorgeladen, statt, wie vom Mod gestartet, im Player A … Nur so als Beispiel).

Daher träum
Nur die Player welche eine Datei effektiv spielen, haben eine Datei geladen. Ansonsten ist es egal, welchen Player man gerade startet (A, B oder C), es wird einfach die nächste Datei aus der Playliste abgespielt.

Vor allem wenn man mit 3 Player fährt, kann es sonst zu diesen Verwechslungen kommen …

Wenn man den Titel wirklich erst dann in den Player lädt, wenn er abgespielt werden soll, gibt es zwei Probleme: Erstens handelt man sich Verzögerungen ein, die beim Laden entstehen können. Zweitens erkennt man nicht mehr rechtzeitig, ob eine Datei fehlerhaft ist und sich nicht abspielen lässt.

Um soetwas also sinnvoll hinzukriegen, müsste mAirList die Elemente also irgendwie “vorladen”. Das gibt die interne Archtitektur aber derzeit nicht her, denn das Laden einer Datei ist immer an einen Player gebunden. Das zu ändern, wäre ein gravierender Eingriff, vor dem ich zur Zeit zurückschrecke - erstmal will ich die Version 2.0 als stabilen “Snapshot” fertigstellen.

Vielleicht lässt sich etwas Vergleichbares mit Scripts realisieren, da müsste ich aber genauer drüber nachdenken.

Torben

hallo Torben

Danke für’s Antworten.

Welche Befehle müsste ich im Script verwenden?

Player 1-1 laden?
Player 1-1 starten?

Habe mich noch nicht mit dem mAurList-Dateimanagment auseinander gesetzt. Dort lässt sich die Datei komplett ins RAM laden. Bezeiht sich dies auf den Player oder die Playlist?

Würde das Ganze trotz Problem 1&2 ausprobieren.

Herzlichen Dank
Michel

Die ins-RAM-Laden-Option hilft hier nichts, ganz im Gegenteil: Die verzögert den Ladevorgang ja noch mehr.

Den Befehl “Player laden” gibt es bei den Scripts bislang noch nicht, den habe ich aber schnell eingebaut. Dein Script müsste dann folgendes machen:

  1. Ersten freien Player ermitteln
  2. Erstes freies Element ermitteln, das gerade nirgendwo anders gespielt wird. Das ist nicht ganz trivial, vor allem, wenn man auch Dummys und Breaks in der Playlist hat, aber durchaus machbar.
  3. Den Player mit diesen Item laden.
  4. Den Player starten.

Das mit dem Laden werde ich für die Version v.43 einbauen. Dann kümmern wir uns um den Rest.

Torben