Hallo ich bin kein Programmierer, aber ich habe mir das Vellemann K8055N besorg und zusammengelötet. ich habe es auch getestet mit der Vellemann Software alles OK!
Auch kann ich die mit den Eingängen die Mairlist funkionen steuern also wird es schon mal erkannt.
Jetzt möchte ich noch die Ausgänge steuern. Ich habe Gelesen das das nur in vom eines Script geht.
Ich möchte wenn ENCODER INPUT MIC ON ist das der Erste Kanal an geht und natürlich wieder aus wenn das Mic aus geht
dann möchte ich das wenn der Encoder verbunden wird der zweite Kanal an geht.
wie mache ich das?
Ich habe mit dem Windows Editor versucht eine .mls datei zu schreiben das hat aber nicht geklappt ich bekomme immer eine fehlermeldung in Mairlist (Error 4:5 Unknown identifer K8055NRemote)
Folgendes habe ich versucht zu schreiben zum testen:
procedure OnExecuteCommand(Command: string);
begin
if Command = ‘ENCODER INPUT MIC ON’ then
K8055NRemote(0).SetDigitalChannel(1)
else if Command = ‘ENCODER INPUT MIC OFF’ then
K8055NRemote(0).ClearDigitalChannel(1);
end;
habe das so ähnlich gefunden im Forum
was ist Falsch?
kann ich das überhaupt im Editor Schreiben?
Fragen über Fragen
ich hoffe ihr könnt mir helfen?
Danke schon mal.
Liebe Grüße
Timo
PS ich habe Mairlist 6.1
da ist ein bißchen was mit der Syntax durcheinander. Probiere es mal mit:
procedure OnLoad;
begin
K8055Remote(0).ClearAllDigital;
end;
procedure OnExecuteCommand(Command: string);
begin
if Command = 'ENCODER INPUT MIC ON' then begin
K8055Remote(0).SetDigitalChannel(1);
end
else if Command = 'ENCODER INPUT MIC OFF' then begin
K8055Remote(0).ClearDigitalChannel(1);
end
else if Command = 'ENCODER CONNECT' then begin
K8055Remote(0).SetDigitalChannel(2);
end
else if Command = 'ENCODER DISCONNECT' then begin
K8055Remote(0).ClearDigitalChannel(2);
end;
end;
procedure OnUnload;
begin
K8055Remote(0).ClearAllDigital;
end;
begin
end.
(Es fehlten ein paar begin und end.) Ich habe das Script noch um einen Reset beim starten und stoppen des Scriptes (also von mAirList) erweitert, damit definierte Zustände herrschen.
Und ja, das kannst Du im Editor schreiben und als .mls abspeichern.
Danke für deine Antwort. Bin jetzt Leiter und über das Wochenende unterwegs. Werde es gleich nächste Woche mal versuchen. Finde das Forum echt cool da wird noch wirklich geholfen.
Liebe Grüße Timo
Habe Den Script nun getestet. Es kommt auch keine Fehlermeldung mehr. Aber es Fukioniert nicht wie ich das möchte… wenn ich beim Encoder auf verbinden Klicke (mit der Maus) geht kein Ausgang an. Auch beim Mikrofon ist das so. Der Ausgang geht nur wenn ich z.b. auf dem K8955N ein einen Eingang auf die Funkion lege. Wahrscheinlich sind das die Falsche Befehle die nicht den zustand des Encoders abfragen… kann das sein??? ich möchte auch wenn ich das MIC und den Encoder mit der Maus ein und ausschalte das die Ausgänge kommen
Sonnst schaut es schon mal gut aus
Liebe Grüße
Timo
Das ist zutreffend. Die Funktion Prozedur OnExecuteCommand reagiert nur auf Befehle von irgendwelchen Fernsteuerungen und macht sich nichts aus Geklicke.
Für den Encoder fiele mir folgender Trick ein, der vielleicht ginge:
In der Konfiguration wähle Stream Monitor > Aktionen > Wenn Stream On Air > Hinzufügen > Verschiedenes > Befehl ausführen
In das Feld schreibst Du STREAM ON AIR
In der Scriptzeile else if Command = 'ENCODER CONNECT' then begin änderst Du 'ENCODER CONNECT'in 'STREAM ON AIR'.
Entsprechendes für Off Air.
Für das Mikrofon geht auch was, aber da müßte ich forschen, oder jemand anderes weiß es schneller.
Ich habe hier noch etwas älteres gefunden, was man gegebenenfalls umstricken kann. Das Skript fragt jede Sekunde ab, ob ein Mikrofon offen ist und schreibt dann den entsprechenden Zustand in eine Datei. Ob das mit der Version 6 läuft, müssen andere feststellen:
procedure OnTimer;
var
sl: TStringList;
begin
sl := TStringList.Create;
try
if Encoder.GetMicInputEnabled then
sl.Add('Mikrofon On Air')
else
sl.Add('Mikfrofon nicht On Air');
sl.SaveToFile('\\irgendeinrechner\pfad\Mikrofonscript.txt');
finally
sl.Free;
end;
end;
procedure OnLoad;
begin
EnableTimer(1000);
end;
begin
end.
Jetzt frage ich mal in die Runde: Offenbar kann man den Zustand des Mikrofoneingangs mit Encoder.GetMicInputEnabled abfragen, gut. Aber wie verwurste ich das jetzt weiter? Natürlich könnte man in obiger Routine den Timer auf 10 Millisekunden setzen, aber das ist doch keine saubere Lösung. Einfach in der OnExecuteCommand Bei der if-Abfrage die Variable eintragen? Kann ich mir nicht vorstellen. (Ich kann es gerade nicht ausprobieren.)
Und, man könnte sich einen Button basteln, mit dem man das Mikrofon per Klick einschaltet, das funktioniert auf jeden Fall, halte ich aber auch nur für einen Workaround. Der Button müßte in diesem Beispiel BUTTON.MIC heißen und den Befehl MIC ON von sich geben:
var
ModeMicOn: boolean;
procedure OnLoad;
begin
K8055Remote(0).ClearAllDigital;
ModeMicOn := false
ExecuteCommand('BUTTON.MIC OFF')
end;
procedure OnExecuteCommand(Command: string);
begin
if NOT ModeMicOn AND (Command = 'MIC ON') then begin
ModeMicOn := true;
ExecuteCommand('BUTTON.MIC ON');
ExecuteCommand('ENCODER INPUT MIC ON');
K8055Remote(0).SetDigitalChannel(1);
end
else if ModeMicOn AND (Command = 'MIC ON') then begin
ModeMicOn := false;
ExecuteCommand('BUTTON.MIC OFF');
ExecuteCommand('ENCODER INPUT MIC OFF');
K8055Remote(0).ClearDigitalChannel(1);
end
else if Command = 'STREAM ON AIR' then begin
K8055Remote(0).SetDigitalChannel(2);
end
else if Command = 'STREAM OFF AIR' then begin
K8055Remote(0).ClearDigitalChannel(2);
end;
end;
procedure OnUnload;
begin
K8055Remote(0).ClearAllDigital;
end;
begin
end.
@Torben, was liegt denn noch in Deiner Trickkiste für diesen Fall?
Schaut mal in die aktuelle Background Script Template.mls von der 6.1, es gibt da schon seit einiger Zeit eine Prozedur für:
// Called when an encoder input is turned on or off
procedure OnEncoderInputToggle(Input: TEncoderInput; NewState: boolean);
begin
end;
Im Falle des Mikrofons wird die Prozedur mit den Parametern eiMicund eben true oder falsefür den Zustand des Mikrofons aufgerufen. Eine fertige Prozedur, die einen Velleman-Ausgang abhängig vom Zustand des Mic-Eingangs schaltet, könnte also so aussehen:
// Called when an encoder input is turned on or off
procedure OnEncoderInputToggle(Input: TEncoderInput; NewState: boolean);
begin
if Input = eiMic then begin
if NewState = true then
K8055Remote(0).SetDigitalChannel(2)
else
K8055Remote(0).ClearDigitalChannel(2);
end;
end;
GetMicInputEnabled gibt es seit einiger Zeit nicht mehr, stattdessen verwendet man jetzt GetInputEnabled(eiMic). Auch die anderen Eingänge kann man damit abfragen:
Nur Mic und Line haben einen Button in der GUI, zusätzlich kann man noch Aux über die entsprechende Aktion schalten, die anderen lassen sich nur per Script schalten, was aber wirklich nur in extremen Hardcore-Anwendungsfällen von Interesse sein sollte
Heißen Dank! Dann müßte Timo mal folgendes probieren:
procedure OnLoad;
begin
K8055Remote(0).ClearAllDigital;
end;
procedure OnEncoderInputToggle(Input: TEncoderInput; NewState: boolean);
begin
if Input = eiMic then begin
if NewState = true then
K8055Remote(0).SetDigitalChannel(1)
else
K8055Remote(0).ClearDigitalChannel(1);
end;
end;
procedure OnExecuteCommand(Command: string);
begin
if Command = 'ENCODER CONNECT' then begin
K8055Remote(0).SetDigitalChannel(2);
end
else if Command = 'ENCODER DISCONNECT' then begin
K8055Remote(0).ClearDigitalChannel(2);
end;
end;
procedure OnUnload;
begin
K8055Remote(0).ClearAllDigital;
end;
begin
end.
Sollte gehen (ich kann es gerade nicht testen) unter der Voraussetzung, daß in der Konfiguration für den Encoder die entsprechenden Befehle (siehe oben) eingetragen sind.
Danke euch beiden für die antworten. werde das heute Abend gleich mal versuchen.
So macht ein Forum Spaß…
Melde mich dann zurück ob das geklappt hat!!
Liebe Grüße
Timo
Ich habe es nun Getestet. ich hab es noch mal ein wenig geändert. da ich nur die Home Lizenz habe habe ich kein Stream-Monitor. ich habe das ganze nun über das OFF AIR und ON AIR gemacht… aber sonst geht es Super
mal sehn was mir noch einfällt was mann noch schalten kann
Ich möchte das als Gelb-Grün Rot Steuerung betreiben. So das ich nicht im falschem moment gestört werde
Jetzt muss ich noch ein Gehäuse bauen und das eine und andere Relais montieren dann kann es los gehen…
In Elektrotechnik bin ich fit… aber mit dem Script schreiben habe ich eine Erfahrung
Danke das Ihr mir geholfen habt.
Kann ja in Serie gehen.
Oh sorry, das fällt mir mit Vollausstattung natürlich nicht auf! Aber schön, daß Du es auch so hinbiegen konntest. Für Deine weiteren Ausbaupläne empfehle ich, wie Torben auch, einen Blick in die Background Script Template.mls (der bei mir freilich nichts genützt hat ), worin noch einige weitere nützliche Prozeduren aufgeführt sind. Viel Spaß!