Automatisches Erzeugen von Hook-Containern mit Musik aus der folgenden Stunde

Hallo zusammen,

in meiner Station, die zu 95% nur Automation sendet, benötige ich ein Feature zur automatischen Generierung von Hook-Containern. Ich denke, dass sich dies nur über ein Skript realisieren lässt. Dabei stelle ich es mir (relativ) simpel vor, denke ich.

Das Skript soll:
a) Eintrag 3, 5 und 7 aus der Playlist nehmen.
b) Wenn es sich nicht um “Musik” handelt, die Folgepostionen jeweils um einen erhöhen. (Ist z.B. an Position 5 ein “Jingle”, dann soll 3, 6 und 8 genommen werden. Das natürlich solange wiederholt, bis nur “Musik” erkannt wurde)
c) Anschließend soll ein Hookcontainer mit Opener, Trenner und Ende erstellt werden

Ich hoffe, dass ich nicht der einzige mit einem solchen Wunsch bin. Vielleicht hat ja noch jemand Bedarf? Und ich hoffe auf Unterstützung. Gerade von den Skriptern unter euch.

Vielen Dank und beste Grüße!

1 Like

Ich habe mir jetzt etwas eigenes gebaut:

var hookitem, contpl : IPlaylistItem;
var curitem : IPlaylistItem;
var cont : IContainerPlaylistItem;
var i, imax : integer;
var itemcount : integer;
var itype : TPlaylistItemType;

// Elementkonfiguration
const hopen = 'F:\Hook-Starter.wav';
const hsweeper = 'F:\Hook-Trenner.mp3';
const hclose = 'F:\Hook-End.wav';
	
procedure addAsHook(item : IPlaylistItem);
  begin
    cont.GetPlaylist.Add(hookitem);
    hookitem.SetCuePosition(ptCueIn, hookitem.GetCuePosition(ptHookIn));
    hookitem.SetCuePosition(ptStartNext, hookitem.GetCuePosition(ptHookFade));
    hookitem.SetCuePosition(ptCueOut, hookitem.GetCuePosition(ptHookOut));
  end;	

begin
  cont := Factory.CreateContainerPlaylistItem;
  imax := CurrentPlaylist.GetCount - 1;
  itemcount := 0;
  for i := 0 to imax do begin
    curitem := CurrentPlaylist.GetItem(i);
    hookitem := IPlaylistItem(CurrentPlaylist.GetItem(i).Clone);
    if (curitem.GetItemType = pitMusic) and (curitem.GetCuePosition(ptHookIn) <> 0) and (curitem.GetCuePosition(ptHookOut) <> 0) then begin
      addAsHook(hookitem);
      itemcount := itemcount + 1;
      i := i + 1;
      if itemcount = 3 then break;
    end;
    i := i + 1;
  end;
  if (itemcount = 3) then begin
    cont.GetPlaylist.InsertFile(0, hopen, [fitMMD, fitTags, fitNativeTags, fitDuration, fitTilde, fitAutoCue, fitDatabaseLookup]);
    cont.GetPlaylist.InsertFile(2, hsweeper, [fitMMD, fitTags, fitNativeTags, fitDuration, fitTilde, fitAutoCue, fitDatabaseLookup]);
    cont.GetPlaylist.InsertFile(4, hsweeper, [fitMMD, fitTags, fitNativeTags, fitDuration, fitTilde, fitAutoCue, fitDatabaseLookup]);
    cont.GetPlaylist.InsertFile(6, hclose, [fitMMD, fitTags, fitNativeTags, fitDuration, fitTilde, fitAutoCue, fitDatabaseLookup]);
    CurrentPlaylist.Add(IPlaylistItem(cont));
    SystemLog('Hook Container generated');
  end else begin
    SystemLog('FAILED to generate Hook Container');
  end;
end.

Ich fange allerdings nicht bei Track 3, sondern bei Track 1 an. Dann 3, dann 5.

Grüße

1 Like

Hallo,
nach langem tüfteln und einigen PM funktioniert es jetzt mit der Version 4.2.1 einwandfrei was die Erstellung vom Container betrifft.

Allerdings wird der Container an das Ende der Playliste gesetzt da sind die Titel ja schon gelaufen, kannst Du das ändern das der Container an Pos. 3 eingefügt wird besser noch direkt in Player 2 das der als nächstes läuft ?

Das wäre Super

cu
Mike

Hallo,
hier möchte ich mal ein Hookcontainer als Beispiel einfügen der automatisch mit dem o.g. Script und per Eventaktion während dem laufenden Betrieb ( Automation ) erstellt wurde.

Der Container wurde nicht nachbearbeitet ! sondern so wie erstellt abgespielt.

http://www.passion-fm.de/bilder/Hookcontainer.mp3

http://www.passion-fm.de/bilder/Hookcontainer.rar

cu
Mike

Klasse, Mike!

Hört sich toll an - und die Stationvoice kenne ich auch irgendwoher. :smiley:
Ich arbeite auch gerade an dem Thema für unsere Automation und bin mit Sven deswegen Kontakt …
Falls ich dazu noch Fragen habe, kann ich mich bestimmt mal per PM bei Dir melden, oder?

Gruß aus der Nordheide,

der TomTom

Hallo,
klar kannst Dich melden bei Fragen.

cu
Mike

P.S. Sven ist von Anfang an unsere Station Voice :slight_smile:

also ich hab das grad mal probiert und hab es nicht hinbekommen, die dateinamen der soundfiles hab ich natürlich geändert.

Es geht nur wenn:

  1. Titel = Musik Kategorie
  2. Hookstart und Hookendpunkte im Titel gesetzt sind
  3. Genug Titel in Playliste sind

cu
Mike

diese bedingungen waren erfüllt

EDIT:
woooosa
ich hatte beim trenner die dateiendung vergessen anzugeben.
script läuft.

Hallo Mike, bist schon weitergekommen mit der Platzierung des Containers ? der landet ja im Moment noch am Ende der Playliste.

Erst mal danke an den Scripter, das funktioniert soweit nur ich mache wohl etwas falsch. Mein Ergebnis beim Test:

Audio

Hört man evtl schon wo der Fehler liegen könnte?

Cue-datei ist hier welche mAirlist beim Export mit auspuckte:

Cuedatei

Am ende läuft ein song immer noch etc… hm ich bin zu blöd für sowas… :frowning:

hallo dave, also für mich hört dich das an, als wenn deine hookfade-zeit einfach zu lang ist.
sprich, der abstand zwischen hookfadeout und hook.ende zu groß.
da der trenner mit ner fetten voice (von frankie) anfängt brauchts eigentlich fast keine fadeout bzw. nicht mal ne sekunde.

Vielen Dank genau das war es…

gerne :smiley:

Hallo
Intressant zu lesen! Kann mir einer erklären was mit der zeile 2 auf sich hat?

Es geht nur wenn:

Titel = Musik Kategorie
Hookstart und Hookendpunkte im Titel gesetzt sind
Genug Titel in Playliste sind

Das ist nun exakt 7 (sieben) Jahre her mit diesem Post.

Aber es ist ganz einfach:

  • Titel = Musik Kategorie --> In der DB Typ = Musik
  • Hookstart und Hookendpunkte im Titel gesetzt -->Im Cue Editor eben für jeden Titel den Hook mit Start und Ende definiert, spricht die exakte Stelle markiert, die für die Hooks genommen werden soll
  • Genug Titel in der Playliste sind --> na, dass halt genug Titel drin sind, damit das überhaupt funktioniert.

Auf die nächsten 7 Jahre mit diesem Post. :wink:

1 Like