Main Site Links Resources Tutorials
News VB Gaming Code Downloads DirectX 7
Contact Webmaster VB Programming Product Reviews DirectX 8
  General Multimedia Articles DirectX 9

DirectSound: Stream From a File
By: Jack Hoxley
Written: June 2000

Download: (16kb)

This is probably the hardest way of using sounds in DirectX. It requires you to know how a wave files data is stored; then reading it into a blank buffer. It is quite easy once you have the code, as it's self adapting.

Streaming from a file basically means that it won't store the entire file in memory, which is what happens when you use CreateBufferFromFile. Streaming basically creates a half-a-second buffer with only that much data in it, as the sound is played it updates this buffer by adding new information to it. Because of this you only need a buffer the size of a 500ms sound file - tiny. This becomes extremely useful when you want to play a large file, for example, a speech. If you used the easy (and traditional) method you would need 10-20Mb of space to hold that sound in memory, which will easily bring anything but the fastest PC's to their knees. Not a good idea when performance is critical. If, however, you used a streaming method you could have hundreds of large files taking up less memory than 2 small sounds - as each streaming buffer only needs 500ms (1/2 a second) of memory.

DirectSound has no native, and easy, method of streaming sound into it's buffers; you have to write the code for yourself. This flowchart explains (simply) how it works:

Open up the Wave file
Look through the header and gather information on the file
Create a blank buffer with the settings stored in the header
The blank buffer is created to be 500ms Long
We then use arrays to load the wave data straight from the file
We then copy this data straight to the blank buffer
The Sound starts playing
We use DirectXEvents to keep track of where it is *
As it gets to the end we load some more data into the buffer *
This small loop(*) keeps going until the sound has finished.


You can download a copy of this program from the top of the page, or from the downloads page

DirectX 4 VB 2000 Jack Hoxley. All rights reserved.
Reproduction of this site and it's contents, in whole or in part, is prohibited,
except where explicitly stated otherwise.
Design by Mateo
Contact Webmaster