al_create_audio_stream - Man Page

Allegro 5 API


#include <allegro5/allegro_audio.h>

ALLEGRO_AUDIO_STREAM *al_create_audio_stream(size_t fragment_count,
   unsigned int frag_samples, unsigned int freq, ALLEGRO_AUDIO_DEPTH depth,


Creates an ALLEGRO_AUDIO_STREAM(3). The stream will be set to play by default. It will feed audio data from a buffer, which is split into a number of fragments.


A sample that is referred to by the frag_samples parameter refers to a sequence channel intensities. E.g. if you’re making a stereo stream with the frag_samples set to 4, then the layout of the data in the fragment will be:


Where L and R are the intensities for the left and right channels respectively. A single sample, then, refers to the LR pair in this example.

The choice of fragment_count, frag_samples and freq directly influences the audio delay. The delay in seconds can be expressed as:

delay = fragment_count * frag_samples / freq

This is only the delay due to Allegro’s streaming, there may be additional delay caused by sound drivers and/or hardware.

Note: If you know the fragment size in bytes, you can get the size in samples like this:

sample_size = al_get_channel_count(chan_conf) * al_get_audio_depth_size(depth);
samples = bytes_per_fragment / sample_size;

The size of the complete buffer is:

buffer_size = bytes_per_fragment * fragment_count

Note: Unlike many Allegro objects, audio streams are not implicitly destroyed when Allegro is shut down. You must destroy them manually with al_destroy_audio_stream(3) before the audio system is shut down.

Referenced By

al_destroy_audio_stream(3), al_get_audio_stream_fragment(3), al_get_audio_stream_fragments(3), ALLEGRO_AUDIO_STREAM(3).

Allegro reference manual