Devi48354

I need to play a wave file looping with a specific interval between loop.

Is there any event thrown from secondaryBuffer object when it finish playing a file



Re: Game Technologies: General How to detect when secondaryBuffer finish playing a file?

Glenn Wilson

Have you looked at the Xact System, it should be able to help with your audio needs.






Re: Game Technologies: General How to detect when secondaryBuffer finish playing a file?

Etienne2005

IDirectSoundBuffer8::GetStatus

The GetStatus method retrieves the status of the sound buffer.

HRESULT GetStatus(
 LPDWORD pdwStatus
);

Parameters

pdwStatus
Address of a variable that receives the status of the sound buffer. The status can be a combination of the following flags:
Value Description
DSBSTATUS_BUFFERLOST The buffer is lost and must be restored before it can be played or locked.
DSBSTATUS_LOOPING The buffer is being looped. If this value is not set, the buffer will stop when it reaches the end of the sound data. This value is returned only in combination with DSBSTATUS_PLAYING.
DSBSTATUS_PLAYING The buffer is playing. If this value is not set, the buffer is stopped.
DSBSTATUS_LOCSOFTWARE The buffer is playing in software. Set only for buffers created with the DSBCAPS_LOCDEFER flag.
DSBSTATUS_LOCHARDWARE The buffer is playing in hardware. Set only for buffers created with the DSBCAPS_LOCDEFER flag.
DSBSTATUS_TERMINATED The buffer was prematurely terminated by the voice manager and is not playing. Set only for buffers created with the DSBCAPS_LOCDEFER flag.

Return Values

If the method succeeds, the return value is DS_OK. If the method fails, the return value may be DSERR_INVALIDPARAM.

Remarks

DSBSTATUS_PLAYING is set if the buffer is being heard. Because of latency, a call to Play or Stop might not immediately change the status.

Requirements

Header: Declared in Dsound.h.

Import Library: Use Dsound3d.dll.

See Also

IDirectSoundBuffer8





Re: Game Technologies: General How to detect when secondaryBuffer finish playing a file?

ProfEclipse

Have a look at IDirectSoundNotify8::SetNotificationPositions. You can use DSBPN_OFFSETSTOP to get a notification when the buffer stops playing. There is an example in the docs under the DirectSound/Programming Guide/Capturing Waveforms topic.





Re: Game Technologies: General How to detect when secondaryBuffer finish playing a file?

Wessam Bahnassi

DSound notifications proved to be really buggy. You can try them, but expect a lot of fun with missing notifications (or late notifications at best).
Unfortunately, there's no other event-based way in DSound. The other option is to poll the buffer's status at short intervals.