The audio stream functions are for playing digital sounds that are too big to fit in a regular SAMPLE structure, either because they are huge files that you want to load in pieces as the data is required, or because you are doing something clever like generating the waveform on the fly.
You can think of an AUDIOSTREAM structure as a wrapper around two audio buffers. The first thing you do is fill both buffers with sound data and let Allegro play them. Once the first buffer has been played, the second starts, and Allegro lets you know you have to fill the other one (i.e. graphics double buffering applied to sounds too big to fit into memory).
The implementation of the sound buffers uses normal SAMPLE structures, so you can use all the voice_*() functions to modify the audio streams. Read chapter "Digital sample routines", section "Voice control" for a list of additional functions you can use. Read chapter "Structures and types defined by Allegro" for the internals of the AUDIOSTREAM structure.
The `bits' parameter must be 8 or 16. `freq' is the sample rate of the data in Hertz. The `vol' and `pan' values use the same 0-255 ranges as the regular sample playing functions. The `stereo' parameter should be set to 1 for stereo streams, or 0 otherwise.
If you want to adjust the pitch, volume, or panning of a stream once it is playing, you can use the regular voice_*() functions with stream->voice as a parameter. The format of the sample data is described in the SAMPLE entry of the "Structures and types defined by Allegro" chapter. The formula to get the size of the buffers in bytes could be:
bytes = length * (bits / 8) * (stereo ? 2 : 1)
Return value: This function returns a pointer to the audio stream or NULL if it could not be created.
See also: install_sound, get_audio_stream_buffer, stop_audio_stream, AUDIOSTREAM, Voice control.
Examples using this: exstream.
See also: play_audio_stream.
Examples using this: exstream.
See also: play_audio_stream, free_audio_stream_buffer.
Examples using this: exstream.
See also: get_audio_stream_buffer.
Examples using this: exstream.