Script: Encoder Notification-Script?

Gibt es für den Encoder auch Notifications?
Konkret soll dieser beim Verbinden, immer auch SetLineInputEnabled auf true setzen

Michel

falls ich das jetzt richtig verstanden habe,
ich hab auf meiner tastatur einen button, der genau das macht,
sollte also kein problem sein ?

Danke. Wir suchen nach einer automatische Lösung

Der Encoder kann ja wahlweise, über MicIn, LineIn oder die Playlist mit Audio angesteuert werden.
Wir nehmen das Audiosignal ausschliesslich vom LineIn (externer Soundprocessor).

Bis jetzt hatten wir den LineIN als Button im Bildschirmobjekt Encoder. Dieses wurde bei Programmstart und bei manuell gestartet. Um das Ganze zu vereinfachen, soll der LineIn ausgeblendet und die Funktion über eine Notification vom Encoder gesteuert werden. Sobald dieser Online geht, soll auch der LineIn aktiviert werden.

Michel

Mich würde diese Frage auch interessieren - allerdings von einer anderen Seite: kann ich es irgendwie mitbekommen (außer, daß die Anzeige im Encoder z.B. von “(2/2)” auf “(1/2)” umspringt), wenn die Verbindung des Encoders zum Stream abbricht (z.B. weil ich vom Stream gekickt wurde, oder es aufgrund von Netzproblemen einen Buffer Underrun gibt, oder …)? Ich suche für diesen Fall eine Möglichkeit, darauf zu reagieren, und zwar nur auf den von der Störung betroffenen Teil.

Ein wenig mehr Hintergrund: Meine Konfiguration sieht derzeit so aus, daß der Encoder über Line-In gespeist wird. Dabei ist Line-In bei mir im Studio grundsätzlich aufgeschaltet, auch, wenn mAirlist Off Air ist. Ich habe im Encoder zwei Ausgänge definiert, einmal als reines .wav zum loggen auf die Festplatte und das zweite ist die Verbindung zum Stream. Ein Klick auf den On Air Button startet die beiden - und genau das macht mich nur halb glücklich: zum Starten und Stoppen der Übertragung ist das okay, so habe ich in der Regel alles schön mitgeloggt, was auch gestreamt wird.

Ich hatte das Problem noch nicht, aber ich denke immer gern einen Schritt weiter: was passiert, wenn während der Übertragung entweder die Verbindung zum Streamserver abreißt oder das Logging ausfällt (Festplatte voll, schlechten Sektor erwischt - was weiß ich, was da für Sauereiene passieren können ;-))? Bis jetzt sehe ich mich in diesem Fall über den On Air Button erst beides ausschalten, um hinterher beides wieder zusammen zu starten - das würde ich aber, wenn es geht, gerne vermeiden.

Ich denke derzeit auch über eine GPIO-Lösung nach, die (irgendwann in ferner Zukunft ;-)) mal u.A. eine Studio-Ampel ansteuern soll, die auch eine “On Air”-Anzeige enthalten soll - und da hätte ich gerne, daß die im Fall eines Streamabrisses aus geht (und ggf. einen Warnton in den Monitorweg einspielt, aber das ist eine andere Baustelle ;-)).

Deshalb interesiiert mich die Frage auch, ob ich vom Encoder Meldungen bekommen kann und ggf. welche :slight_smile:

Ich bitte für das Entern dieses Fadens um Entschuldigung, aber ich denke, es ist die gleiche Frage, nur aus anderer Sicht - wenn gewünscht, mache ich dafür aber auch gern einen eigenen Faden auf (oder Torben verschiebt den Beitrag entsprechend), ich bin da leidenschaftslos :slight_smile:

LG

McCavity

Vermutlich verstehe ich gerade falsch wonach Du suchst, aber sollte sich das nicht mit einem Scrpt und dem folgenden lösen lassen können?

<ActionList> <Action Class="EncoderMicInputDisable" /> <Action Class="EncoderLineInputEnable" /> </ActionList>

Wäre das in etwa (von der Grundform her) eine Möglichkeit für dich? Punkt "OnAir-Skript.

https://www.mairlist.com/forum/index.php/topic,5387.msg45380.html#new

Es gibt keinen Hook für “Encoder ist verbunden”, du musst mit OnTimer arbeiten, ähnlich wie hier:

https://www.mairlist.com/forum/index.php/topic,6038.msg42749.html#msg42749

Danke Euch allen für die vielen Ideen. :smiley:
Eigentlich würde mir eine Kopplung, mit dem Klicken auf den Verbindungsknopf reichen.

Klicken => SetLineInputEnabled = true

Das ist doch aber über die Konfig einfachst zu lösen?

  • Vorab den On-Air-Modus mit dem Berbinden zum Strem verknüpfen.

  • “Konfiguration” - “Aktionen” - “Beim Wechsel in den On-Air-Modus” - “Hinzufügen” - “Encoder” - “Line-Eingang aktivieren”

  • “Konfiguration” - “Aktionen” - “Beim Wechsel in den Off-Air-Modus” - “Hinzufügen” - “Encoder” - “Line-Eingang deaktivieren”

Damit wäre die Trilogie aus “Vebinden; Line-Eingang und On-Air-Modus” perfekt?

Danke das ist mir bekannt. Nur, ist das mAirList welches den Encoder hat nicht immer OnAIR. d.h. Signal wird permanent vom LineIn genommen.

hmmm … schade, ich dachte das hätte helfen können.

Ich selbst habe ja auch schon mal nach eine Möglichkeit gesucht den Verbindungsstatus eines Encoders abzufragen. Bei mir ging es um den Plan, den ersten Titel in der playlist zu starten, wenn die Verbindung mit einem Encoder hergestellt wurde.

(Encoder.GetConnections.GetItem(0).GetState = ecsConnected)
(Encoder.GetConnections.GetItem(0).GetState = ecsConnecting)

Hilft das?

Die Zahl in der Klammer steht für die interne Nummer des Encoders, beginnend bei “0”.

Das frägt aber nur akut den Status ab oder?

Richtig. Alles weitere (Starten eines Players etc.) muss noch hinzugefügt werden. Bei mir wird der bereits genannte OnAir-Schalter beeinflusst.

Komplett sieht das Dingen so aus: (“ONAIRPRG” ist die Remote-ID eines statischen Textes als Screenobject)

[code]
procedure OnLoad;
begin
EnableTimer(1000);
end;

procedure OnTimer;
begin

if (Encoder.GetConnections.GetItem(0).GetState = ecsConnected)
OR
(Encoder.GetConnections.GetItem(1).GetState = ecsConnected)
OR
(Encoder.GetConnections.GetItem(3).GetState = ecsConnected) then begin

if Encoder.GetConnections.GetItem(0).GetState = ecsConnected then
ExecuteCommand('ONAIRPRG TEXT ONAIR - Intern');

if Encoder.GetConnections.GetItem(1).GetState = ecsConnected then
ExecuteCommand('ONAIRPRG TEXT ONAIR - Teststream');

if Encoder.GetConnections.GetItem(3).GetState = ecsConnected then
ExecuteCommand('ONAIRPRG TEXT ONAIR - Stream 1');	

ExecuteCommand('ONAIRPRG BACKGROUNDCOLOR #FF0000')
ExecuteCommand('ONAIRPRG FONTCOLOR #FFFFFF')

end

else begin

ExecuteCommand('ONAIRPRG BACKGROUNDCOLOR #000000')
ExecuteCommand('ONAIRPRG FONTCOLOR #FF0000')
ExecuteCommand('ONAIRPRG TEXT Keine Sendung')

if (Encoder.GetConnections.GetItem(0).GetState = ecsConnecting) 
      OR
   (Encoder.GetConnections.GetItem(1).GetState = ecsConnecting)
      OR
   (Encoder.GetConnections.GetItem(3).GetState = ecsConnecting) then begin

 ExecuteCommand('ONAIRPRG TEXT !!! OFF AIR !!!')
 ExecuteCommand('ONAIRPRG FONTCOLOR #FFFFFF')
 ExecuteCommand('ONAIRPRG BACKGROUNDCOLOR #FF0000')
 Sleep(1000);

end;

ExecuteCommand('ONAIRPRG BACKGROUNDCOLOR #000000')
ExecuteCommand('ONAIRPRG FONTCOLOR #00FF00')	
ExecuteCommand('ONAIRPRG TEXT Keine Sendung!');

end;

end;

begin
end.[/code]

Entschuldige - Jetzt habe ich mich leider unglücklich ausgedrückt.

Bei der Funktion, wird der Status des Encoders ja nur zu einem Punkt X einmalig abgefragt?

Wenn ich lifechannel richtig interpretiere, braucht er aber eine Funktion, die den Verbindungsstatus des Encoders permanent überwacht?

EDIT: Den zweiten Teil hatte ich jetzt noch nicht gesehen, das würde das ja dann auch lösen ?

Genau das macht das Dingen:

begin EnableTimer(1000); end;

1000=1000 ms, also sekündlich werden sämtliche eingetragenen Encoder abgefragt. Aber natürlich nur die, die auch mit Haken aktiviert sind. Sind diese nicht aktiviert werden sie auch nicht abgefragt.

EDIT: Den zweiten Teil hatte ich jetzt noch nicht gesehen, das würde das ja dann auch lösen ?

Ja, muss halt nur mit entsprechenden Befehlen angepasst werden.

Ich muss zugeben, das Skript stammt nicht von mir selbst, ich habe es von einem ehemaligen Kollegen bekommen und nur für mich angepasst.