Create a sample data structure from the supplied buffer. If free_buf is true then the buffer will be
freed with al_free(3alleg5) when the sample data structure is destroyed. For portability (especially
Windows), the buffer should have been allocated with al_malloc(3alleg5). Otherwise you should free the
sample data yourself.
A sample that is referred to by the samples parameter refers to a sequence channel intensities. E.g. if
you’re making a stereo sample with the samples set to 4, then the layout of the data in buf will be:
LRLRLRLR
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.
To allocate a buffer of the correct size, you can use something like this:
int sample_size = al_get_channel_count(chan_conf)
* al_get_audio_depth_size(depth);
int bytes = samples * sample_size;
void *buffer = al_malloc(bytes);