[id] = CreateSample(id, table, pitch[, fmt, length])
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:
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:
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.
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.
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:
File
und Memory
erforderlich.
In diesem Fall müssen Sie hier eine gültige ID der Datei oder Speicherblocks
übergeben.
Offset:
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:
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.
#MONO8
) (V5.0)id
Nil angegeben haben.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.