---
name: "al_create_sample"
section: "3alleg5"
platform: "linux"
package: "allegro5-doc"
version: "2:5.2.10.1+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/al_create_sample/3alleg5"
---

# al\_create\_sample(3alleg5)

Allegro 5 API

## NAME

al\_create\_sample - Allegro 5 API

## SYNOPSIS

-

  ```
  #include <allegro5/allegro_audio.h>
  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)
  ```

## DESCRIPTION

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);
  ```

## SEE ALSO

al\_destroy\_sample(3alleg5), ALLEGRO\_AUDIO\_DEPTH(3alleg5), ALLEGRO\_CHANNEL\_CONF(3alleg5)
