Codebeispiele mAirListScript

Ich dachte Du kannst darin sehen ob das Programm vernünftig beendet wird.

Danke Bernie!

Damit hast Du mir das erspart, was ich heute hier schreiben wollte. :slight_smile:

Ich habe es jetzt erst mal mit der Aufgabenverwaltung von Windows geregelt (bei XP der Taskplaner), funktioniert prima.

Es wird bei mir schon vorher irgendwann abbrechen, weil ich die diversen Ordner und Dateien nicht auf der Platte haben, die darin verwendet werden.

Hi,

ich brauche ein wenig Hilfe beim Erstellen eines Scripts, das beim Start eines Players einer bestimmten Playlist die Lautstärke aller Player einer anderen Playlist auf 0 dB setzt. Allerdings habe ich keine Ahnung von der Pascal-Syntax, die Strukturen sind mir aber durch PHP vertraut.

Kann mir dabei jemand helfen? Welche Funktionen kann ich für mein Vorhaben verwenden und wie sehen die Grundlagen für dieses Script aus?

LG

Hey.

Ich habe bereits im Forum gesucht und auch in der Hilfedatei nichts gefunden. Folgendes:

So wie Tread zum Auto Button, würde ich mir gern ein “Screenobject” : “Statischer Text” ins Fenster integrieren, der mir vom Titel der als nächstes in der Playlist kommt ( NEXT ), die Ramp in Sekunden anzeigt.

danke für die hilfe !

Nehme ich auch! Wäre ein schicker Nikolausi! :wink:

hi.

ich möchte über SetVolume(iDestination, iConnection: integer; iLeft, iRight: integer); über ein ExecuteCommand die Volume des Windows Mixers ändern. Wenn ich den Wert 0 bei iDestination eingebe, funkt. es auch. Nur welche sind die anderen Werte,zb volle Aussteuerung ? Habe in anderem Topic gelesen, dass die volle Aussteuerung 65535 beträgt, nur da bewegt sich die Volume überhaupt nicht … auch bei anderen Werten über 0.

mike

Vielleicht stimmen Destination und Connection noch nicht ganz? Hast du mal vorher mit den entsprechenden Aktionen getestet? Das ist vielleicht etwas übersichtlicher. Danach die Aktionsliste als .mla speichern, im Editor öffnen und ablesen :slight_smile:

ich habs mal mit 2 werten versucht. über midi min bcf 2 werte aufgenommen, der mixer sollte dann auf 0 und beim 2ten auf 100% sein.

mit dem wert 0 springt der volume regler auch auf 0% volume
bei 100 passiert leider gar nix …

hier meine scripts:

[code]procedure OnExecuteCommand(Command: string);
begin
if Command = ‘MIXER00’ then
begin
Mixer(1).SetVolume(0,00,0,0);
end;
end;

begin
end.[/code]

[code]procedure OnExecuteCommand(Command: string);
begin
if Command = ‘MIXER100’ then
begin
Mixer(1).SetVolume(0,100,0,0);
end;
end;

begin
end.[/code]

Wenn ich das richtig sehe, sind die beiden letzten Argumente (iLeft und iRight) von SetVolume() die Lautstärkewerte und nicht iConnection.

Stimmt, müsste (0, 0, 100, 100) sein für’s Aufdrehen. (Vorausgesetzt, 100 ist der maximale Wert, weiß ich gerade nicht.)

ah ok danke, werde das mal testen.

Hallo allerseits,

wer kann mir mal ein paar Informationen geben, wie man mit den Objekten der Scriptsprache die Aussendung von
Stream-Tags zu Icecast-Servern steuern kann?
Oder wer kann mir sagen, wo ich dazu was finde?
Hintergrund ist, dass die Tags etwas manipuliert werden sollen, um Stream-Rippern das Leben schwerer zu machen.

Schöne Grüße
Martin

Was genau hast du denn vor? Möchtest du nur das eingestellte Logging-Format verändern, oder möchtest du zwischen auch eigene Texte anzeigen?

Erstmal soll beim Start eines Titels erst nochmal der Tag des vorangegangenen Titels gesendet werden.
Dazu müsste die vorige Titelinfo aber zwischengespeichert werden.
Dann zwischendurch auch mal ein eigener Text. Oder vielleicht artist und title vertauscht.
Das ist so ungefähr der Ansatz.
Kann man da was per script realisieren?

Hm, also was man derzeit machen kann ist:

  • Das Logging-Format der einzelnen Verbindungen ändern.

  • Den Start eines (beliebigen, auch ausgedachten) Titels simulieren und dadurch die Titelübertragung anstoßen.

Was nicht geht ist das Logging-Format nachträglich zu ändern und die Titelanzeige sofort mit dem zuletzte gestarteten Titel nochmal zu aktualisieren, denn der Encoder merkt sich den letzten Titel nicht. Könnte man aber im Zweifel einbauen.

Hallo Torben, hallo Community,

ich habe mich mit dem mAirList-Script noch nicht wirklich auseinandergesetzt, sondern habe einfach mal ein Script rauskopiert, dass den aktuellen Titel in einer Datei speichert. Allerdings kommt dann folgende Fehlermeldung: 'Fehler beim Laden des Benachrichtigungs-Scripts C:\Programme\mAirList 4.0\scripts\nowplaying-script.mls: [Error] (7:8): Unknown type ‘INotification’. Das Script ist folgendes:

[sup]var
pi: IPlaylistItem;
sl: TStringList;
pi1: IPlaylistItem;
pi2: IPlaylistItem;
pi3: IPlaylistItem;
n: INotification;
begin
// fetch notification data
n := GetNotification;

if (n.GetNotificationType = ntMask) then
// we want to be notified when players start
SetNotificationTypes([ntPlayerStart])
else
if (n.GetNotificationType = ntPlayerStart) then begin
// interface #1 contains a reference to the playlist item
pi := IPlaylistItem(n.GetInterface(1));

pi1 := CurrentPlaylist.GetItem(1);
pi2 := CurrentPlaylist.GetItem(2);
pi3 := CurrentPlaylist.GetItem(3);

sl := TStringList.Create;
sl.Add('<html>');
sl.Add('<head><title>Now Playing</title></head>');
sl.Add('<body>');
sl.Add('<p>Artist: ' + pi.GetArtist + ' --- Title: ' + pi.GetTitle + '</p>');
if pi.GetTitle=pi1.GetTitle then begin
  sl.Add('<p>Artist2: ' + pi2.GetArtist + ' --- Title2: ' + pi2.GetTitle + '</p>');
  sl.Add('<p>Artist3: ' + pi3.GetArtist + ' --- Title3: ' + pi3.GetTitle + '</p>');
end;
if pi.GetTitle<>pi1.GetTitle then begin
  sl.Add('<p>Artist2: ' + pi1.GetArtist + ' --- Title2: ' + pi1.GetTitle + '</p>');
  sl.Add('<p>Artist3: ' + pi2.GetArtist + ' --- Title3: ' + pi2.GetTitle + '</p>');   
end;
sl.Add('</body>');
sl.Add('</html>');
sl.SaveToFile('C:\Programme\xampp\htdocs\NowPlaying.html');
sl.Free;

end;
end.[/sup]

//Edit:
Ich benutze die Version 4.0 und den aktuellen Snapshot. Ich glaube 1173 war der oder?

hallo,
ich beschäftige mich gerade mit dem thema automation incl. wortbeiträge die sich täglich ändern.
nun stellt sich die frage ob man soetwas über ein script oder eine aktion machen kann.

beispiel.
playlist wird über die M4 DB playlist stundenvorlage gemacht.
nun gibt es diverse wortbeiträge in der sendung, welche an bestimmten zeiten abgerufen werden sollen.
wortbeiträge bekommen einen eigenen ordner.
ich dachte man könnte das über den dateinamen machen ?
z.b. 2011-11-03-01 für den 3.november2011 erster wortbeitrag.

geht soetwas ? wenn ja wie ?
vielen dank

Guten Morgen,

gibt es eine Art “Wait” funktion für die Scripte.
Zur Verdeutlichung:
Zuerst soll eine batch-datei gestartet werden, die eine log.txt auf den Webspace lädt.
Danach wird eine .php auf dem Webspace gestartet um die Daten aus der log.txt in die DB zu schreiben bzw. um zu aktualisieren.

Da aber die Batch einen Moment braucht um die log.txt auf den Webspace zu laden, bräucht ich eine Art “Wait”-Funktion (3-4 Sekunden) bis der nächste Befehl im Script ausgeführt wird.

Zur Zeit löse ich dies Manuell mittels 2 Buttons, die jeweils ein Script ausführen.

Schönen Sonntag euch :slight_smile:

Sleep(3000);

wartet 3 Sekunden (3000ms).