snd_add(var handle, var offset, void* Sample, var length)
Fügt neue Sound-Daten in den Buffer eines gerade spielenden oder geloopten Sounds hinein. Läßt sich dazu benutzen, eigene Sound-Daten durch den Sound-Abspieler der Engine laufen zu lassen, beispielsweise für eine VolP-Implementation. A7.82 LC
Parameter:
handle - Ziel-Sound-Handle, das von der Play-Funktion zurückgeliefert wurde.
offset - Startadresse zum Schreiben in den Ziel-Sound-Buffer in Bytes.
Sample - Pointer auf den Sounddaten-Buffer; muß dasselbe Format und dieselbe Datenrate haben wie der Zielsound.
length - Größe der Quell-Sounddaten in Bytes. offset+length kann über das Ende des Ziel-Soundbuffers hinausgehen. In diesem Fall werden die Sounddaten zyklisch vom Beginn des Zielbuffers an wiederholt.
Rückgabewerte:
Adresse des Endes der Sounddateien im Ziel-Soundbuffer in Bytes. Kann, wenn die Daten zyklisch wiederholt wurden, kleiner sein als offset+length
Geschwindigkeit:
Mittel
Bemerkungen:
- Die gegenwärtige Spieladresse im Zielbuffer läßt sich mit der Funktion snd_playing zurückholen. Dies kann man dazu verwenden, den Zielsound, sobald er das Ende des Buffers erreicht hat, anzuhalten und ihn neu zu starten, wenn neue Sounddaten hinzugefügt wurden.
- Das Format oder die Adresse eines Sounddaten-Buffers kann mit der Funktion snd_buffer zurückgeholt werden.
Beispiel (lite-C):
#include <acknex.h>
#include <default.c>
#include <d3d9.h>
function main()
{
while (!key_space) wait(1); // wait until key pressed
SOUND* sine_snd = snd_create("#4"); // 4 seconds sine wave
SOUND* whamm_snd = snd_create("bumm.ogg"); // test sound (16 bits PCM 44.1 kHz sample rate)
// retrieve buffer and length from the test sound
DSBUFFERDESC *dsBufferDesc;
byte** pSampleBuffer;
snd_buffer(whamm_smd,(void**)&dsBufferDesc,(void***)&pSampleBuffer);
var length = dsBufferDesc->dwBufferBytes;
var h = snd_loop(sine_snd,100,0);
// add the test sound twice into the playing sine wave buffer
snd_add(h,0,*pSampleBuffer,length);
snd_add(h,length,*pSampleBuffer,length);
}
Siehe auch:
SOUND, snd_create, snd_buffer, snd_play, snd_playing
► Aktuelle Version Online