---
name: "al_create_sample"
section: "3"
platform: "linux"
package: "allegro"
version: "5.2.11.3-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/al_create_sample"
---

# al\_create\_sample(3)

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(3)](/al_free/3.md) when the sample data structure is destroyed. For portability (especially Windows), the buffer should have been allocated with [al\_malloc(3)](/al_malloc/3.md). 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(3)](/al_destroy_sample/3.md), [ALLEGRO\_AUDIO\_DEPTH(3)](/ALLEGRO_AUDIO_DEPTH/3.md), [ALLEGRO\_CHANNEL\_CONF(3)](/ALLEGRO_CHANNEL_CONF/3.md)
