Hallo zusammen
Wie kann ich in meinen Script den Befehl “IPlaybackControl: PlayerLoad” einsetzten?
Danke für einen Hinweis.
Michel
Hallo zusammen
Wie kann ich in meinen Script den Befehl “IPlaybackControl: PlayerLoad” einsetzten?
Danke für einen Hinweis.
Michel
Die Funktion erwartet zwei Parameter: 1. Die Nummer des Players (der erste hat die Nummer 0), und 2. eine Referenz auf das Item, das du laden möchtest. Dieses muss aus der zugehörigen Playlist (IPlaybackControl.GetPlaylist bzw. CurrentPlaylist) stammen. Du kannst es zum Beispiel einfach über seine Nummer referenzieren (das erste hat ebenfalls die Nummer 0):
CurrentPlaybackControl.LoadPlayer(0, CurrentPlaylist.GetItem(5));
lädt das sechste Element in den ersten Player.
Torben
Hallo Torben
Herzlichen Dank fürs Antworten. Jetzt kann es endlich weitergehen.
Genial. Leider erscheint die Meldung [Error] (2:26): Unknown indentifier ‘LOADPLAYER’ mit
CurrentPlaybackControl.PlayerLoad(0, CurrentPlaylist.GetItem(2));
klappt es
Michel
Wie kriege ich den gerade markierten Element aus der Playlist raus?
Geht nicht, weil die Objekte nicht wissen, was gerade markiert ist.
IPlaybackControl und IPlaylist verwalten nur die reinen Daten. Sogenannte Kontrollklassen. Was du auf dem Bildschirm siehst, ist ein weiteres Objekt, das über genau die gleichen Interfaces (IPlaybackControl und IPlaylist) auf diese Kontrollklassen zugreift und deren Inhalt darstellt. Daher wissen die Kontrollklassen nichts über “markiert oder nicht”.
Torben
Aha, so geht das. Staune immer wieder wie flexibel das ganze mAirList ist. Genial
Somit muss ich nun ermitteln, welches Element das Nächste ist.
Hmm, mal sehen ob ich das hin kriege.
Michel
Ersten freien Player ermitteln
// Brauche ich nicht, da ich nur geschlossene Fader (Player läuft nicht) öffnen kann
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.
Den Player mit diesen Item laden.
// Funktioniert seit 1.5.43
Den Player starten.
// Funktioniert
Naja, das ist eine übliche Programmiertechnik, Kontrollklassen und GUI zu trennen. Im Prinzip würde mAirList also auch ohne Fenster funktionieren, zumindest eine fertige Playlist abspielen können. Außerdem kann man so sehr leicht die GUI-Elemente austauschen. Ich hab zum Beispiel vor längerer Zeit mal eine Version gebastelt, deren Oberfläche wie Raduga aussah. Aber steckte halt mAirList drin Genauso habe ich ja vor, demnächst die Playlist-Darstellung komplett neu zu schreiben. Das heißt, ich brauche nur eine neue GUI-Klasse, die Kontrollklassen bleiben gleich.
Wie es ausschaut, willst du sowas wie eine Next-Taste programmieren, ja? Wie ist denn das Szenario? Ist der Player bereits geladen oder noch nicht?
Torben
Weiss nicht ob dies einer Next Taste gleichkommt. Auf jedenfall würde diese Funktion nur im Asssist Mode gebraucht.
Folgendes Ziel möchte ich erreichen:
Wir haben insgesammt 3 Player die jeweils beim Faderstart das nächste Element laden und abspielen sollen. Eventuell brauche ich für jeden Player ein eigenes Script, dass jeweils beim Faderstart abgearbeitet wird.
Folgendes Script habe ich bereits:
begin
CurrentPlaybackControl.PlayerLoad(1, CurrentPlaylist.GetItem(1));
CurrentPlaybackControl.PlayerStart(1);
end.
Die Player werden nach einem Faderstop entladen und ist somit leer.
Michel
Hallo Torben
Im Live Assist kann der Player definiert werden, dass der Player automatisch geladen wird. Dies ist eigentlich genau die Funktion die ich brauche. Nur, dass ich den Ladezeitpunkt selber per Script auslösen kann.
Weist Du was ich meine?
Michel
Ja, verstehe ich. Ich denke mal darüber nach, ob ich das eventuell als Script-Funktion zur Verfügung stellen kann. Es gibt den Lade-Algorithmus natürlich irgendwo tief im Innern von IPlaybackControl (aber derzeit in Routinen versteckt, die man nicht aus dem Script heraus aufrufen kann). Wenn ich das in eine Funktion auslagere, die man einzeln pro Player aufrufen kann, wäre dir vermutlich schon sehr geholfen.
Torben
Könnte natürlich verstehen, wenn Du diesen Algorithmus nicht als Script offenlegen möchtest. Mir würde es reichen, wenn ich diesen Algorithmus mit einer Funktion per Script ansprechen könnte und so das nächste Element zurück bekomme.
Eigentlich würde ein Sendebefehl reichen: “Lade nun den Player erneut” Genau so wie es mAirList im Moment macht, eben halt nur manuell.
Mit offenlegen hat das nichts zu tun.
Den Algorithmus für “Lade Player x mit dem nächsten freien Element” gibt es im Code natürlich schon. Er ist derzeit irgendwo implizit eingebaut in dem Algorithmus für “Lade alle Player, die AutoLoad eingeschaltet”. Was ich nun tun muss, ist “Lade Player x”, als einzelne Prozedur auszugliedern, die man dann auch aus einem Script heraus aufrufen kann. Von meinem Code gebe ich dadurch nichts preis, ich muss ihn nur etwas umorganisieren. Das dürfte sehr leicht möglich sein.
Torben
Danke schön. Da lass ich mich mal einfach überraschen.
Michel
Alles klar, wird in 1.5.44 drin sein, heißt dann PlayerAutoLoad.
WOW. Mir fehlen die Worte…
Ganz herzlichenn Dank
Michel
Als Nicht-Programmiererfahrener frage ich mich, ist die Funktion nun irgendwie aufrufbar? Wenn ja, wie lautet das Script?
Danke
Hello Powerfm_ch
Das ganze ist ziemlich einfach. Pro Player eine sep. Textdatei erstellen (z.B. PlayerA_starten.mls).
PlayerA = 0, PlayerB= 1 usw.
begin
CurrentPlaybackControl.PlayerAutoLoad(0);
CurrentPlaybackControl.PlayerStart(0);
end.
Anschliessend beim Hotkey oder IO Device anstelle von “PLAYER 1-1 START” einfach RUNSCRIPT "D:\mairlist\scripts\PlayerA_starten.mls eintragen.
Jetzt musst Du nur noch einstellen, dass mAirList den Player nicht automatisch lädt. Config -> “player automatisch laden” deaktivieren.
Viel Spass
Michel
Lieber Torben
Heute war es soweit: Der Scriptbefehl “PlayerAutoLoad” wurde im Studio getestet und machte einen spitzen Eindruck. Laden und Abspielen funktionieren zügig (keine spürbare Verzögerung). Unser Head of music war vor Begeisterung fast nicht mehr von den Fadern weg zu kriegen
Ganz herzlichen Dank für Dein Engagement
Michel
Super! es funktioniert!
Jetzt bin ich mit mAirList vollends glücklich.
Merci Michel und natürlich auch Torben
Bitte schön.