snd_buffer(SOUND* snd, void** pDesc, void*** ppSample)
Liest, verändert oder ersetzt einen Sound-Buffer zur Laufzeit. Läßt sich zum Abspielen eigener Sounds über den Sound-Player der Engine verwenden. A7.71 LC
Parameter:
pDesc - Pointer, der auf den DSBUFFERDESC-Pointer des Sounds gesetzt ist. Läßt sich zum Lesen und Verändern des DSBUFFERDESC-Structs verwenden.
ppSample - Pointer der auf die Adresse des Sample-Buffer-Pointer des Sounds gesetzt ist. Läßt sich zum Lesen, Verändern oder freien Ersetzen des Sample-Buffers verwenden.
Geschwindigkeit:
Schnell
Remarks:
- The DSBUFFERDESC ist in include\d3d9.h definiert und läßt sich zum Zurückholen der Sound-Länge und der Sounddatenfrequenz verwenden.
A7.81
- Zum Freisetzen des Alten und Allokieren eines neuen Sounddaten-Buffers müssen die Funktionen sys_free und sys_malloc benutzt werden.
- In Sounddaten-Buffer kann nur hineinkopiert werden und sie lassen sich nur ändern bevor der Sound das erste mal abgespielt wird. Danach kann durch direkten Zugriff auf den Buffer nichts mehr verändert werden. Um einen Sound während er läuft zu ändern, nehmen Sie snd_add.
Beispiel (C++ oder lite-C):
DSBUFFERDESC *dsBufferDesc; // from DirectSound 8
byte** pSampleBuffer;
SOUND* oldsound = snd_create("#20"); // create a 20 seconds dummy sound
snd_buffer(oldsound,&dsBufferDesc,&pSampleBuffer);
// remove original sample
if (pSampleBuffer && *pSampleBuffer) sys_free(*pSampleBuffer);
// create and copy a new sample
byte* myNewSampleBuffer = (byte*)sys_malloc(myNewBufferLength);
memcpy(myNewSampleBuffer,mySoundData,myNewBufferLength);
// replace with new sample
*pSampleBuffer = myNewSampleBuffer;
dsBufferDesc->dwBufferBytes = myNewBufferLength;
memcpy(dsBufferDesc->lpwfxFormat,myNewWaveFormat,sizeof(WAVEFORMATEX));
Siehe auch:
SOUND, snd_create, snd_add
► latest
version online