Ton auf Hotkey legen, ohne diesen in die Playlist hinzuzufügen

Wenn man das wirklich an allen Playern und Carts vorbei machen will, ist es leider nicht ganz trivial.

Am besten nutzt man ein Hintergrundscript wie das folgende, das einen neuen Befehl “HINZTRILLER” definiert, den man dann überall (Fernsteuerung, Aktion, …) verwenden kann:

const
  FILENAME = 'Z:\tmp\hinztriller.mp3';
  DEVICE = 'Encoder';

var
  Source: IAudioSource;

procedure OnExecuteCommand(Command: string);
var
  fpi: IFilePlaylistItem;
  dev: IPlaybackDevice;
begin
  if Command = 'HINZTRILLER' then begin
    fpi := Instance.GetFactory.CreateFilePlaylistItem(FILENAME, []);
    dev := IPlaybackDevice(Instance.GetPlaybackDevices.FindByID(DEVICE));
    Source := fpi.BuildSource(dev, nil);
    Source.Start;
  end;
end;

Die Schwierigkeit an der Sache ist, dass der AudioSource “am Leben gelassen” werden muss, bis das File zuende gespielt hat. Andererseits soll das Script auch nicht solange warten - bei langen Elementen wäre das blöd, wenn mAirList dann so lange hängt. Daher hier die Lösung mit dem Hintergrund-Script, das den Source als globale Variable verwaltet.