Drops automatisch auf die Ramp plazieren

Von vielen gewünscht, von manchen ersehnt, kommt hier ein Skript für das automatische Plazieren von Drops über die Ramp eines Titels im Automatikbetrieb.

Wie funktioniert’s?

  • Folgende Elemente werden in der dieser Reihenfolge eingeplant:

    1. Ein Steuerelement der Länge null mit einem bestimmten Titel (kann in der Konstante BTCAPTION geändert werden), Standard ist ++ Drop ueber Ramp ++,

    2. das Element, auf dessen Ramp der Drop gesetzt werden soll und

    3. der Drop selber.

  • Zu beachten ist:

    • Der zu rampende Titel muß je einen Ramp1- und StartNext-Marker besitzen und

    • der Drop darf nicht länger sein als die Ramp des Titels.

  • Ist all dies erfüllt, wird beim Start eines Titels jeweils geprüft, ob danach das Steuerelement eingeplant ist. Ist das der Fall, wird der StartNext-Marker so verschoben, daß der Drop mit dem Ramp1-Marker abschließt. Anschließend wird der Pegel der Ramp um ein definiertes Maß (einstellbar in der Konstante RAMPLEVEL) abgesenkt.

  • Nun besteht aufgrund der mAirList-Architektur das Problem, daß das Programm „dumm“ (sorry, @Torben, Du weißt, wie es gemeint ist) auf das nächste Ende (oder StartNext) eines laufenden Elements reagiert und daher den folgenden Titel am Ende des Drops (und nicht des zu rampenden Titels) abfährt. Es muß also das ursprüngliche StartNext irgendwie wiederhergestellt bzw. so hinausgezögert werden, daß es mit dem ursprünglichen StartNext übereinstimmt.

  • Dies geschieht, indem ein Container gebaut wird und dahinein sowohl der Drop als auch eine Stille, die bis zum Ende des ursprünglichen StartNext reicht, gepackt wird.

  • Es laufen also nach dem Drop also zwei Player parallel, in einem jedoch lediglich die Füllstille.

 

Mein Dank gilt @calypso60, der die entscheidende Idee hatte.

 


Auto-Drop by Tondose 1.0.mls (7,2 KB)

6 Likes

Geil!!!

Dazu eine Verständnisfrage: Funktioniert das auch noch, wenn die Option “nur einen Player für die Automation verwenden” aktiviert ist?

Soeben ausprobiert: jawohl.

1 Like

Vielen Dank für die tolle Mühe!

1 Like

Gebt mal Rückmeldung, ob das wirklich so klappt wie bei mir im Versuch.

Erst mal vielen Dank für deine Mühe. :+1:
Leider bekomme ich es aktuell nicht wirklich hin.
Folgende Fehlermeldung bekomme ich ausgeworfen:

27.07.2022 18:02:35 Fehler Runtime error “List index out of bounds (4)” in background script C:.…\Auto-Drop by Tondose 1.0.mls, handling message: PLAYERCONTROL_STATECHANGE 1A286E5E42A6E1D8 00 00000000 00000000 02 03 ?

27.07.2022 18:02:15 Information AutoDrop error: Ramp not marked.

  • Eingebunden hab ich dieses Script als Hintergundscript in der mAirList Systemsteuerung.
  • Ramp 1 ist im zu droppenden Titel drin.
  • StartNext ist auch definiert
  • Dabei hab ich mich gefragt was dieses Steuerelement genau sein sein kann.
    Ein Platzhalter? Oder Befehl? Eine Dummy Text Datei?

Start Next Thema:
Ich habe das so verstanden das der Start Next Punkt im Lied vorhanden sein muss dessen Ramp 1, quasi gedropt wird oder?

Hoffe du wirst aus meiner Anfrage schlau.
LG Tom

Ja, ich glaube schon.

Das Steuerelement ist ein Dummy (ich auch, da ich vergessen hatte, es zu erwähnen), dessen Titel entsprechend gesetzt wird. Dann kommt der zu rampende Titel (der mit Ramp1 und StartNext versehensein muß) und dann wiederum der Drop.

Da die ganze Maschinerie angelaufen ist, wird das Skript das Steuerelement wohl erkannt haben.

Hast Du beim Testen nach dem Drop noch weitere Titel in der Playlist gehabt?

Und (zum Testen) davor noch einen weiteren Titel, der Dir Zeit zum Anschalten der Automation gibt?


Edit: Ich kann den Fehler nachvollziehen, wenn hinter dem Drop kein weiteres Element eingeplant ist. Demnächst versuche ich, das abzufangen, bis dahin bitte genügend Elemente in die Playlist stecken.

Beim zweiten Test jetzt ja. Auch davor nun einen weiteren Titel angehängt.
Als Dummy hab ich einen Platzhalter verwendet.
Die Meldung “Drop is to long” war weil ich den Drop selbst nicht in der Playliste hatte. :wink:

Aktuell sieht es so aus:

  • Ramp1 und Start Next ist gesetzt
  • Vorlauftrack und Nachlauftrack liegen in der PL
  • Fehlermeldung ist aktuell: Ramp not marked.

Bin leider ein wenig ratlos.
Hab auch getestet, ob der Drop auch wirklich als Element Drop definiert sein muss. Leider keinen Unterschied. Ach ja und meine Version ist die V6 Home Studio.

Erst den Titel bitte, den Drop danach. Das sieht zwar unintuitiv aus, spart aber einen wüsten Haufen Programmierarbeit.

Oh, das erklärt einiges.
Ich berichte… Danke dir

Hiermit sollte der Fehler behoben sein:

Auto-Drop by Tondose 1.01.mls (7,5 KB)

1 Like

Danke, leider bin ich gestern nicht mehr dazu gekommen. Werde es heut Abend noch testen.

Ich meine mitbekommen zu haben das der START NEXT Punkt bedeutend wichtig für den Mechanismus ist. Jetzt ist es leider so, das ich bis jetzt in meiner Datenbank nie diesen definiert habe, da in der Konfiguration FadeOut = StartNext behandelt wird. Funktioniert das trotzdem?

Mal schauen wie ich das umsetze. Ansonsten muss ich diesen Punkt eben auch noch bei tausenden Titeln setzen. :thinking:

Mein Gott, auf welche Ideen Ihr immer kommt, ohne StartNext:grin:

Hiermit geht’s auch ohne:

Auto-Drop by Tondose 1.1.mls (7,1 KB)

2 Likes

Ramp1 mit Ramp3 zu ersetzen schaffe ich immerhin alleine :smile:

1 Like

Heute konnte ich endlich das Skript testen.
Funktioniert auf den ersten Anschein recht ordentlich. Nun geht ein wenig ans Feintuning mit Absenkung und Ramp Zeiten.

Vielen Dank @Tondose :+1:

1 Like

Rückmeldung: Funktioniert bei mir ganz hervorragend!!! :+1:

1 Like

Hey! Richtig cooles Script :wink: Danke Dir für Deine Arbeit.

Eine kleine Frage hätte ich aber noch. Ist es möglich, dass wenn der Sweeper/Dropper nicht spielbar ist, dass er automatisch aus der Playlist gelöscht wird?

Danke fürs Lob.

Deine Frage hat jetzt aber nicht wirklich mit dem Skript zu tun, oder verstehe ich da etwas falsch? Wenn ein Element nicht spielbar ist, gibt es meines Wissens einen Fehler (ERROR im Player), der auch protokolliert wird.

Meine Antwort mag vielleicht arrogant erscheinen, aber ich sehe es so, daß der Benutzer selber verantwortlich für das Material ist, was er in die Playlist füttert. mAirList spielt die Sachen nur ab, und ich finde, es ist nicht dessen Aufgabe, für Ordnung im Musikarchiv zu sorgen.

Wenn jemand doch so etwas programmieren mag: In der procedure OnPlayerStatChange auf den Zustand psError prüfen und bei Bedarf das entsprechende Element löschen. Das hätte zur Folge, daß beim Versuch es in eienen Player zu laden das Element sofort verschwände, ohne daß der Benutzer wüßte, was überhaupt los ist. (Ja, man könnte eine Zeile ins Log schreiben, aber die Überraschung bliebe.)

Ich verstehe nicht, warum man überhaupt ein Radio betreiben will, wenn eh alles automatisch gehen soll? Aber das liegt vielleicht an mir.

3 Likes

Hey Tondose,

ich glaube, da gibts gerade ein kleines Missverständnis :sweat_smile: Mir ging es darum, dass der Drop ausgeplant wird, wenn er nicht auf die Ramp passt. Verstehst Du was ich meine? :slight_smile:

Ah, also damit er nicht trocken nach dem Titel ausgespielt wird. Könnte man drüber nachdenken.

2 Likes