.\" Automatically generated by Pandoc 2.9.2.1 .\" .TH "al_create_sample" "3alleg5" "" "Allegro reference manual" "" .hy .SH NAME .PP al_create_sample - Allegro 5 API .SH SYNOPSIS .IP .nf \f[C] #include ALLEGRO_SAMPLE *al_create_sample(void *buf, unsigned int samples, unsigned int freq, ALLEGRO_AUDIO_DEPTH depth, ALLEGRO_CHANNEL_CONF chan_conf, bool free_buf) \f[R] .fi .SH DESCRIPTION .PP Create a sample data structure from the supplied buffer. If \f[C]free_buf\f[R] 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. .PP A sample that is referred to by the \f[C]samples\f[R] parameter refers to a sequence channel intensities. E.g. if you\[cq]re making a stereo sample with the \f[C]samples\f[R] set to 4, then the layout of the data in \f[C]buf\f[R] will be: .IP .nf \f[C] LRLRLRLR \f[R] .fi .PP 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. .PP To allocate a buffer of the correct size, you can use something like this: .IP .nf \f[C] 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); \f[R] .fi .SH SEE ALSO .PP al_destroy_sample(3alleg5), ALLEGRO_AUDIO_DEPTH(3alleg5), ALLEGRO_CHANNEL_CONF(3alleg5)