notification scipt

hey!

habe eine frage: und zwar bei der Funktion OnPlayerStop, kann ich auch wählen welcher Player es seien soll?

Lg; Mike

hi,

Das geht sowei ich weiss nur über einen Umweg, indem du im Script abfragst, ob der Player, der den Playerstop ausgelöst hat, den namen xy hat…

irgendwas wie (ungetestet) :

procedure OnPlayerStop(PlayerControl: IPlayerControl; Item: IPlaylistItem; Duration: int64);

begin

  if (PlayerControl.GetCaption = 'playerbezeichnung' ) then begin
    irgendwelche befehle...
  end;
end;

begin
end.

Die Playernamen kannst du in mAirList-config ändern… standard ist ‘A’, ‘B’ usw…

grüße, michi

GetIndex geht auch, das gibt die Nummer des Players zurück (der erste hat die 0).

Das ist natürlich noch besser :slight_smile:

danke für eure hilfe. werde das gleich morgen probiern :wink:

also das das mit den einzelnen player funktioniert super! nur leider sendet mairlist immer das selbe midi signal. könnt ihr mir helfen? hier die 2 codes:

[code]procedure OnPlayerStop(PlayerControl: IPlayerControl; Item: IPlaylistItem; Duration: int64);

begin

if (PlayerControl.GetCaption = ‘MAL1’ ) then begin
MidiOut ( 02, 00, 73, 00 ) ;
end;
end;

begin
end.[/code]

Code vom 2 Player: ( sendet komischerweiße genau das selbe Midi Signal wie der 1 Code )

[code]procedure OnPlayerStop(PlayerControl: IPlayerControl; Item: IPlaylistItem; Duration: int64);

begin

if (PlayerControl.GetCaption = ‘MAL2’ ) then begin
MidiOut ( 02, 00, 74, 00 ) ;
end;
end;

begin
end.
[/code]
handelt es sich vl um einen bug ?

Lg; Mike

mhh, ich weiss nicht wie das ist, wenn man mehrere Notificationscripts mit der gleichen Auslösebedingung parallel laufen lässt…

Probier doch einfach mal das hier:

[code]procedure OnPlayerStop(PlayerControl: IPlayerControl; Item: IPlaylistItem; Duration: int64);

begin

if (PlayerControl.GetCaption = ‘MAL1’ ) then begin
MidiOut ( 02, 00, 73, 00 ) ;
end;
if (PlayerControl.GetCaption = ‘MAL2’ ) then begin
MidiOut ( 02, 00, 74, 00 ) ;
end;
end;

begin
end.[/code]

danke!! Werde es gleich probiern;)

Lg; Mike

schade es geht trotzdem nicht. mairlist sendet immer noch genau denselben midi befehl. lässt sich da irgendwas machen ?

Lg; MIke

Versuch den Fehler mal näher einzugrenzen - wird der falsche if-Block ausgeführt? Oder sendet

MidiOut ( 02, 00, 74, 00 ) ;

tatsächlich eine 73 statt einer 74 (was eigentlich nicht sein kann)?

Was passiert, wenn du die beiden Midi-Out-Befehle mal vertauschst? Welcher wird dann gesendet?

Ich bekomme komischer weise NIE die Werte 73 oder 74, sondern immer den Wert 64 ?!

Lg; Mike

Komisch. Hier ist der Sourcecode von midiOut. Einen Fehler kann ich nicht erkennen. Ihr?

procedure TmAirListScript.MidiOut(iDevice: integer; iStatus, iData1, iData2: byte);
var handle: HMIDIOUT;
    err: MMRESULT;
begin
  err := MidiOutOpen(@handle, iDevice, 0, 0, CALLBACK_NULL);
  if err = MMSYSERR_NOERROR then try
      MidiOutShortMsg(handle, iStatus + (iData1 shl 8) + (iData2 shl 16));
    finally
      MidiOutClose(handle);
    end
  else
    raise Exception.CreateFmt('MidiOutOpen (device %d): Error %d', [iDevice, err]);
end;

hmm…gibt es vl ein script, das bei einem midi out befehl die werte ins systemlog schreibt? Dann könnten wir checken ob es an mairlist liegt oder nicht.

Lg; Mike

Also ich hab das jetzt nochmal gründlich ausgetestet. Egal wie ich den Wert ändere. Ich bekomme immer nur den Wert 64 !!! Also der Fehler muss im Code sein!!!
Lässt sich da was machen, dass das funktioniert???

Lg; Mike

Ich hab das gerade mal gestet, mit MIDI-OX und dem folgenden Script:

begin
  MidiOut ( 01, 00, 74, 00 ) ;
end.

Bei mir kommt die 74 (Hex 4A) brav am Midi-“Gerät” an, siehe Screenshot.


midi.png

AAAHH scheiße :wink:

ich glaub ich hab vergessen in Hex umzuwandeln. werde das gleich morgen testen. danke für deine bemühungen :wink:

Lg; Mike