Bezeichnung
CreateMusic -- erstellt einen dynamischen Musik-Stream (V5.0)
Übersicht
[id] = CreateMusic(id, pitch, fmt)
Beschreibung
Dieser Befehl kann verwendet werden, um einen dynamischen Musik-Stream zu erstellen, der ständig mit neuen PCM-Daten über eine benutzerdefinierte Callback-Funktion zugeführt werden muss. Auf diese Weise können Sie im laufenden Betrieb durch eine Callback-Funktion lückenlos Audio mit PCM-Daten abspielen. Die Musik wird zu Hollywoods Musikliste hinzugefügt und kann über die angegebene ID zugegriffen werden. Wenn Sie in id Nil übergeben, wird CreateMusic() automatisch eine freie ID auswählen und sie zurückgeben. Sie müssen auch die gewünschte Wiedergabefrequenz für die Musik im Argument pitch sowie die Codierung der PCM-Daten im Argument fmt angeben. Derzeit werden folgende Formate unterstützt: #MONO8, #STEREO8, #MONO16 und #STEREO16.

Bevor Sie diesen Befehl aufrufen, müssen Sie eine Callback-Funktion vom Typ FillMusicBuffer mit dem Befehl InstallEventHandler() installieren. Diese Callback-Funktion wird dann aufgerufen, wenn der Audio-Server neue PCM-Daten benötigt. Um die neuen PCM-Daten an den Audio-Server zu liefern, hat Ihre Callback-Funktion den Befehl FillMusicBuffer() aufzurufen. Siehe FillMusicBuffer für Details.

Sobald Sie die Musik mit CreateMusic() erstellt haben, können Sie dann alle regulären Befehle aus der Musikbibliothek verwenden, um mit der neuen Musik zu arbeiten. Zum Beispiel können Sie mit PlayMusic() die Wiedergabe starten und mit PauseMusic() das Musikobjekt anhalten.

Stellen Sie sicher, dass Sie immer eine Hauptschleife verwenden, die WaitEvent() aufruft, wenn Sie diesen Befehl verwenden, da die Callback-Funktion von CreateMusic() immer von WaitEvent() aufgerufen wird! Wenn Sie WaitEvent() nicht in einer Schleife verwenden, wird Ihre Callback-Funktion nie aufgerufen werden und somit wird nie ein Ton gespielt!

Bitte beachten Sie, dass dies ein Lowlevel-Befehl ist, der ganz in der Nähe der Hardware-Ebene läuft. Daher sollte Ihre Callback-Funktion Ihr Skript niemals für eine längere Zeit blockieren. Es sollte so schnell wie möglich wieder in die Hauptschleife zurückkehren. Sie dürfen niemals Befehle aufrufen, die das Skript in der Callback-Funktion von CreateMusic() blockieren könnten. Zum Beispiel ist der Aufruf von Wait() oder SystemRequest() in einer Musik-Callback-Funktion eine sehr schlechte Idee.

Eingaben
id
Identifikator der neuen Musik Nil für die automatische ID-Auswahl
pitch
gewünschte Wiedergabefrequenz für die Musik
fmt
gewünschtes Format für die Musik
Rückgabewerte
id
optional: ID der neuen Musik; wird nur zurückgegeben, wenn Sie beim Argument id Nil angegeben haben.

Navigation zeigen