Script zum Ausschalten von Faderstart

Hallo zusammen!

Ich habe ein analoges Mischpult. mit Faderstart und Start-Button.
Die Schaltzustände übertrage ich mit einem IO-Warrior an mAirList.
Nun möchte ich die Start-Buttons zum Hot-Start benutzen.
Einziges Problem:
Zum Hot-Start muss die Fader hoch sein. Ziehe ich sie aber hoch, startet der Titel…
Meine Idee:
Beim 1. Mal drücken auf den Start-Button schaltet ein Script den Faderstart aus.
Beim 2. Mal drücken wird der Player gestartet.
Danach sollte automatisch wieder der Faderstart funktionieren, wenn das möglich ist.
Leider habe ich selber nicht wirklich einen Plan wie man ein Script vernünftig erstellt.
Könnte mir jemand bei meinem Problem helfen ??

Gruß
Sven

Erkläre bitte nochmal, die die Taster und der normale Faderstart funktionieren und vor allem an den Rechner weitergeleitet werden.

Wenn das Mischpult die schon “zusammenmischt”, kannst du wenig machen.

Das Mischpult hat Faderstart und zusätzlich einen Start-Button.
Beide funktionieren als “schließer” und sind an einen IO-Warrior angeschlossen. (Sind also einzelne Signale)
Ziehe ich jetzt die Fader hoch, startet mein Player in mAirList. Nun möchte ich gerne den Start-Button für einen Hot-Start benutzen. Der Start-Button funktioniert auch einwandfrei. Nur ich muss ja, um ein Audiosignal zu haben, die Fader oben haben. Wenn ich die Fader aber hochziehe startet ja bereits der Player.
Nun möchte ich eine Möglichkeit finden, das Signal vom Faderstart zu ignorieren. Allerdings nur dann wenn ich es vorher gesagt habe (bsp.weise durch einmal drücken des Star-Buttons). Halt wie bei einem Digitalen Pult.
Ich hoffe das war zu verstehen… :wink:

Gruß
Sven

Ok, Problem verstanden.

Vermutlich lässt sich das per Notification Script lösen. Ich habe gerade keine Zeit ein solches zu programmieren, aber hier ein paar Ideen für jemanden, der sich daran versuchen will:

  • Man denkt sich neue Faderstart-Befehle aus, zum Beispiel “TASTE 1 AN” oder “FADER 1 AN”.
  • Im OnExecuteCommand fängt man die ab.
  • Das Script merkt sich in globalen Variablen, welcher Fader/Taster gerade an ist. Ist der gewünschte Zustand erreicht, wird mit ExecuteCommand der eigentliche Befehl rausgejagt.

Ok… Vielleicht ließt das hier ja jemand der mir beim schreiben des Scriptes helfen könnte…

Gruß
Sven

@sven:

hey! hast du das script eig geschrieben ??
weil ich brauche so ein script und bevor ich jetzt eins schreib frag ich dich mal sill und leise;)

lg mike

ich habe jetzt schnell ein script geschrieben. nur weis ich nicht, wie ich über executecommand 2 befehle abfangen kann. also wie ich das programmiere. vl weiß jemand mehr als ich :wink: ??
weil dieses script mag er irgendwie nicht.

[code]procedure OnExecuteCommand(Command: string);
begin
if Command=‘MAL1_BUTTON_ON’
and
Command=‘MAL1_FADER_ON’
then begin
PlaybackControl(0).GetPlayer(0).Start;
end;
end;

begin
end.[/code]

danke!!!

lg mike

Ist klar, dass es nichts tut. Wie soll denn das funktionieren, dass das Kommando gleichzeitig “MAL1_BUTTON_ON” und “MAL1_FADER_ON” ist? Die Befehle kommen doch nacheinander.

Du musst dir zwei globale Variablen vom Typ boolean definieren, in denen du dir merkst, ob Fader bzw. Button gerade an sind. Erst wenn beide auf true stehen, startest du den Player.

danke!
ich habe leider nur keinen plan wie das geht. ich habe im forum gesucht, aber leida nichts gefunden. also normal in den fernsteuerungen die variable definieren ? nur wie frage ich die dann ab. sry ich bin jetzt a bisl verwirrt.

lg mike

Nein, gemeint ist natürlich eine Variable im Script, etwa so:

var
  FaderAn: boolean;
  TasteAn: boolean;

procedure OnStartup;
begin
  FaderAn := false;
  TasteAn := false;
end;

procedure OnExecuteCommand(Command: string);
begin
  if Command = 'MAL1_FADER_ON' then begin
    FaderAn := true;
    if ButtonAn then PlaybackControl(0).GetPlayer(0).Start;
  end
  else if Command = 'MAL1_BUTTON_ON' then begin
    ButtonAn := true;
    if FaderAn then PlaybackControl(0).GetPlayer(0).Start;
  end;
  // hier noch die abfragen für das ausschalten hin
end;

begin
end.

Ungestestet, aber die Idee sollte klar geworden sein.

aahh so hast du das gemeint.danke!!!

jetzt werd ich es allein weiterschaffen!

lg mike

aja. ich verwende version 2.2. geht das da eh auch ? weil da hat sich ja vom scripten her was geändert.

lg mike

Hast du’s ausprobiert?

habs gerade im studio probiert. FUNKTIONIERT !!! danke dir!!

glg mike

Vielleicht kannst du dein fertiges Skript ja mal posten?! Könnte ja auch noch für andere interessant sein…

ja gerne. kann ich aber erst morgen wieder machen, wenn ich im studio bin;)

lg mike

hallo.

leider habe ich ein problem mit den scripten. hier einmal das fürs faderstart:

[code]var
FaderAn: boolean;
TasteAn: boolean;

procedure OnStartup;
begin
FaderAn := false;
TasteAn := false;
end;

procedure OnExecuteCommand(Command: string);
begin
if Command = ‘MAL1_FADER_ON’ then begin
FaderAn := true;
if TasteAn then PlaybackControl(0).GetPlayer(0).Start;
end
else if Command = ‘MAL1_BUTTON_ON’ then begin
TasteAn := true;
if FaderAn then PlaybackControl(0).GetPlayer(0).Start;
end;
if Command = ‘MAL1_BUTTON_OFF’ then begin
TasteAn := false;
end;
if Command = ‘MAL1_FADER_OFF’ then begin
FaderAn := false;
end;
end;

begin
end.

[/code]

[code]var
FaderAn: boolean;
TasteAn: boolean;

procedure OnStartup;
begin
FaderAn := false;
TasteAn := false;
end;

procedure OnExecuteCommand(Command: string);
begin
if Command = ‘MAL2_FADER_ON’ then begin
FaderAn := true;
if TasteAn then PlaybackControl(0).GetPlayer(1).Start;
end
else if Command = ‘MAL2_BUTTON_ON’ then begin
TasteAn := true;
if FaderAn then PlaybackControl(0).GetPlayer(1).Start;
end;
if Command = ‘MAL2_BUTTON_OFF’ then begin
TasteAn := false;
end;
if Command = ‘MAL2_FADER_OFF’ then begin
FaderAn := false;
end;
end;

begin
end.[/code]

die scripten funktionieren ansich einwandfrei. das problem ist jetzt nur, dass ich noch 2 andere scripte verwende, die die history bei jedem playerstart bis auf 1 historyelement aufräumen. die haben auch bis jetzt immer super funktioniert. nur wenn ich jetzt meinen fader runterziehe und den player in pause versetze, den button auf on lasse und dann den nächsten player starte. wird die history leider nicht mehr aufgeräumt. erst wenn ich den playerbutton wieder auf off setze, wird auf einmal die history aufgeräumt. das selbe gilt auch für den fader.

torben, ist das ein bug oder funkt. das einfach so nicht, wenn ich diese scripten verwende ???

hier die scripten zum aufräumen der history bei playerstart:

[code]procedure OnPlayerStart ( PlayerControl : IPlayerControl ; Item : IPlaylistItem );
begin
PlaybackControl(0).SetMaxHistoryCount(1);
end;

begin
end.[/code]

[code]procedure OnPlayerStop ( PlayerControl : IPlayerControl ; Item : IPlaylistItem ; Duration : int64 );
begin
if (PlaybackControl(0).GetPlayer(0).GetState=PS_LOADED) or
(PlaybackControl(0).GetPlayer(1).GetState=PS_LOADED) then begin
PlaybackControl(0).SetMaxHistoryCount(50);
end;
end;

begin
end.[/code]

lg mike

EDIT: version 2.2.2
ansteuerung über MIDI

Mit SetMaxHistoryCount wird erstmal nur der Soll-Wert gesetzt. Allerdings arbeitet die Playlist nicht sofort los sondern erst dann, wenn das nächste Mal irgendwas passiert (Playerstart etc.). Du kannst aber mit “PlaybackControl(0).Invalidate” ein solches Update erzwingen. Füg das einfach mal direkt hinter dem SetMaxHistoryCount ein.

Bei mAirList 3.0 sollte das nicht mehr notwenig sein, dort wird nach dem Setzen des Wertes automatisch ein Update ausgelöst.

ok danke. ich werde das gleich morgen testen!!!

lg mike

ich habe das jetzt probiert. er schreibt aber:

Unknown Identifier 'INVALIDATE'

script:

[code]procedure OnPlayerStart ( PlayerControl : IPlayerControl ; Item : IPlaylistItem );
begin
PlaybackControl(0).SetMaxHistoryCount(1);
PlaybackControl(0).Invalidate;
end;

begin
end.[/code]

lg mike