Creating a Buffer
A Buffer can be created from:
Loading a buffer from a sound file
To load an audio buffer from a sound file, pass the file path to Buffer's constructor.
# Load and play a buffer
buf = Buffer("filename.wav")
player = BufferPlayer(buf)
player.play()
The type of the audio file is automatically inferred from the type and contents. Supported formats include wav
, aif
, mp3
, ogg
, flac
, and many other audio formats.
Interally, file I/O is handled by libsndfile
. For a full list of supported files, see the libsndfile documentation.
Creating a buffer from an array of samples
To create and initialise a buffer from an existing array of samples, pass the array to Buffer's constructor. Both native Python arrays and numpy
arrays are supported.
Note that audio samples should always range between -1.0
and 1.0
to avoid distortion.
# Initialise a buffer from a native 1D array containing a sawtooth wave
samples = [(n % 100) / 100 - 0.5 for n in range(44100)]
buf = Buffer(samples)
player = BufferPlayer(buf)
player.play()
If the array is 1D, a mono buffer will be created. If the array is 2D, a multichannel buffer will be created.
# Initialise a buffer from a numpy 2D array containing a stereo sine wave
import numpy as np
t = np.linspace(0, 1, 44100)
stereo = np.array([np.sin(220 * t * np.pi * 2),
np.sin(225 * t * np.pi * 2)])
buf = Buffer(stereo * 0.1)
player = BufferPlayer(buf)
player.play()
Creating an empty buffer
An empty buffer can be initialised by specifying its dimensions. All samples will be initialised to zero.
# Create an empty buffer with 2 channels containing 44100 samples each.
buf = Buffer(2, 44100)
Initialising a buffer with the result of a function
A buffer can also be populated with the result of a Python function, which takes a single argument containing the index of the frame to be filled.
# Create a buffer containing a 440Hz ping
import numpy as np
buf = Buffer(1, graph.sample_rate,
lambda frame: np.sin(frame * 440 * np.pi * 2 / graph.sample_rate) * (1 - frame / graph.sample_rate))
player = BufferPlayer(buf)
player.play()
→ Next: Saving and exporting a buffer
Created: 2024-01-14