Bezeichnung
CreateSample -- erstellt ein Sample (V2.0)
Übersicht
[id] = CreateSample(id, table, pitch[, fmt, length])
Beschreibung
Dieser Befehl kann verwendet werden, um ein neues Sample aus benutzerdefinierten PCM-Daten zu erstellen. Das Sample wird der Sampleliste von Hollywood hinzugefügt werden und es kann auf ihn mit der angegebenen ID zugegriffen werden. Wenn Sie Nil in id übergeben, wird CreateSample() automatisch eine freie ID auswählen und Ihnen zurückgeben.

Sie müssen auch die gewünschte Wiedergabefrequenz für dieses Sample im Argument pitch angeben. Im optionalen Argument fmt können Sie das Format der PCM-Daten angeben, die Sie diesem Befehl übergeben. Derzeit werden folgende Formate unterstützt: #MONO8 (das ist die Standardeinstellung), #STEREO8, #MONO16 und #STEREO16. Das optionale Argument length gibt die gewünschte Länge in PCM-Daten für das neuen Sample an.

Die Sampledaten müssen als signierte Ganzzahlen übergeben werden. Für 8-Bit-Samples läuft der gültige Samplebereich von -128 bis 127, und für 16-Bit-Samples geht der gültige Samplebereich von -32768 bis 32767.

Wenn Sie ein Stereo-Sample erstellen möchten, müssen Sie verschachtelte PCM-Daten übergeben, das heißt, linker Kanalsample gefolgt vom rechten Kanalsample gefolgt durch den linken Kanalsample und so weiter.

Ab Hollywood 5.0 können die PCM-Daten für diesen Befehl in einer Reihe von verschiedenen Möglichkeiten übergeben werden. CreateSample() kann eine Reihe von PCM-Samples, eine ID einer geöffneten Datei oder einen Speicherblock als Quelle für das neuen Sample verwenden. Welche Quelle verwendet wird, hängt von der Einstellung im Argument table ab, die folgende Tags akzeptiert:

Source:
Dieser Tag gibt an, von welcher Quelle CreateSample() die Audiodaten für das Sample holen soll. Dies muss als Zeichenfolge festgelegt werden, die die Audiodatenquelle identifiziert. Die folgenden Quellen sind möglich:

PCM
Holt die Audiodaten direkt von einer Reihe von PCM-Daten. Wenn Sie dieses Feld angeben, müssen Sie die PCM-Daten in der gleichen Tabelle beginnend bei Index 0 übergeben. CreateSample() wird dann die in length angegebenen PCM-Daten aus dieser Tabelle lesen. Wenn length nicht angegeben wurde, dann liest CreateSample() alle PCM-Daten aus der Tabelle.

File
Holt die Audiodaten aus einer geöffneten Datei. Wenn Sie diesen Quelltyp verwenden, müssen Sie auch eine gültige DateiID im Tag ID angeben. Es ist auch notwendig, das optionale Argument length anzugeben, so dass CreateSample() weiß, wie viele Daten er aus der angegebenen Datei holen soll.

Memory
Holt die Audiodaten aus einem Speicherblock. Wenn Sie diesen Quelltyp verwenden, müssen Sie auch eine gültige Speicherblock-ID im Tag ID angeben. Es ist auch notwendig, das optionale Argument length anzugeben, so dass CreateSample() weiß, wie viele Daten er aus dem angegebenen Speicherblock holen soll.

Der Standardwert für den Tag Source ist PCM, so dass die Audiodaten aus einer Reihe von PCM-Daten aus der gleichen Tabelle wie diese Optionen holt.

ID:
Dieser Tag ist nur für die Quelltypen File und Memory erforderlich. In diesem Fall müssen Sie hier eine gültige ID der Datei oder Speicherblocks übergeben.

Offset:
Dieser Tag kann nur in Verbindung mit dem Quelltyp Memory verwendet werden. In diesem Fall springt CreateSample() an die Position im Speicherblock, ab dem die Audiodaten abgerufen werden sollen. Der Sprung wird in Bytes angegeben.

Swap:
Dieser Tag kann nur in Verbindung mit Quelltypen File und Memory und einem 16-Bit-Sample verwendet werden. In diesem Fall kann der Tag Swap benutzt werden, ob CreateSample() die beiden Bytes eines 16-Bit-Sample tauschen sollen oder nicht. Dies ist erforderlich, wenn die Sampledaten in der Datei oder im Speicherblock im Little-Endian-Format codiert ist (LSB zuerst). CreateSample() erfordert jedoch 16-bit Sampledaten im Big-Endian-Format (MSB zuerst). Also, wenn Ihre Quelle nur Sampledaten im LSB-Format zur Verfügung stellen kann, einfach den Tag Swap auf True setzen und es sollte nun funktionieren. Dieser Tag ist standardmäßig auf False gesetzt, was bedeutet, nichts wird getauscht.

Bitte beachten Sie, dass das neue Sample mindestens 1000 PCM-Daten verwenden soll. Wenn Sie weniger Daten verwenden, wird die Wiedergabe im Schleifenmodus sehr viel CPU-Kapazität in Anspruch nehmen. Selbst wenn Ihr Sample nur 32 verschiedene Wellenformen hat, sollten Sie sie verketten, bis das Sample aus Leistungsgründen mindestens 1000 Daten hat.

Wenn Sie große Sampletabellen diesem Befehl übergeben, vergessen Sie bitte nicht, diese Tabellen auf Nil zu setzen, wenn Sie diese nicht mehr benötigen. Andernfalls werden Sie große Mengen an Arbeitsspeicher verschwenden.

Ab Hollywood 5.0 können Sie mit CreateSample() auch leere Samples erstellen, wenn Sie eine leere Tabelle übergeben oder eine Länge von Null in length angeben. In diesem Fall können Sie Befehle wie InsertSample() verwenden, um später das Sample mit Audiodaten zu füllen.

Eingaben
id
ID des neuen Samples oder Nil für die automatische ID-Auswahl
table
Tabelle mit weiteren Parametern für das neue Sample
pitch
gewünschte Wiedergabefrequenz für das Sample
fmt
optional: Format des Samples (voreingestellt ist #MONO8) (V5.0)
length
optional: gewünschte Länge des neuen Samples in PCM-Daten (V5.0)
Rückgabewerte
id
optional: ID des Samples; wird nur zurückgegeben, wenn Sie beim Argument id Nil angegeben haben.
Beispiel
smpdata = {}
slen = 32
For k = 0 To 30
  For i = 0 To (slen\2)-1
    smpdata[k*slen+i] = -128
    smpdata[k*slen+i+(slen\2)] = 127
  Next
Next
CreateSample(1, smpdata, 6982)
PlaySample(1)
Der obige Code erstellt einen einfachen Piepton.

Navigation zeigen