Sound¶
- class aud.Sound
Sound objects are immutable and represent a sound that can be played simultaneously multiple times. They are called factories because they create reader objects internally that are used for playback.
- ADSR()
- classmethod ADSR(attack, decay, sustain, release)¶
Attack-Decay-Sustain-Release envelopes the volume of a sound. Note: there is currently no way to trigger the release with this API.
- Parameters
attack (float) – The attack time in seconds.
decay (float) – The decay time in seconds.
sustain (float) – The sustain level.
release (float) – The release level.
- Returns
The created
Sound
object.- Return type
Sound
- accumulate()
- classmethod accumulate(additive=False)¶
Accumulates a sound by summing over positive input differences thus generating a monotonic sigal. If additivity is set to true negative input differences get added too, but positive ones with a factor of two.
Note that with additivity the signal is not monotonic anymore.
- Parameters
additive – Whether the accumulation should be additive or not.
- Returns
The created
Sound
object.- Return type
Sound
- addSound()
- classmethod addSound(sound)¶
Adds a new sound to a sound list.
- Parameters
sound (
Sound
) – The sound that will be added to the list.
Note
You can only add a sound to a sound list.
- buffer()
- classmethod buffer(data, rate)¶
Creates a sound from a data buffer.
- Parameters
data (numpy.ndarray) – The data as two dimensional numpy array.
rate (double) – The sample rate.
- Returns
The created
Sound
object.- Return type
Sound
- cache()
- classmethod cache()¶
Caches a sound into RAM.
This saves CPU usage needed for decoding and file access if the underlying sound reads from a file on the harddisk, but it consumes a lot of memory.
- Returns
The created
Sound
object.- Return type
Sound
Note
Only known-length factories can be buffered.
Warning
Raw PCM data needs a lot of space, only buffer short factories.
- data()
- classmethod data()¶
Retrieves the data of the sound as numpy array.
- Returns
A two dimensional numpy float array.
- Return type
numpy.ndarray
Note
Best efficiency with cached sounds.
- delay()
- classmethod delay(time)¶
Delays by playing adding silence in front of the other sound’s data.
- Parameters
time (float) – How many seconds of silence should be added before the sound.
- Returns
The created
Sound
object.- Return type
Sound
- envelope()
- classmethod envelope(attack, release, threshold, arthreshold)¶
Delays by playing adding silence in front of the other sound’s data.
- Parameters
attack (float) – The attack factor.
release (float) – The release factor.
threshold (float) – The general threshold value.
arthreshold (float) – The attack/release threshold value.
- Returns
The created
Sound
object.- Return type
Sound
- fadein()
- classmethod fadein(start, length)¶
Fades a sound in by raising the volume linearly in the given time interval.
- Parameters
start (float) – Time in seconds when the fading should start.
length (float) – Time in seconds how long the fading should last.
- Returns
The created
Sound
object.- Return type
Sound
Note
Before the fade starts it plays silence.
- fadeout()
- classmethod fadeout(start, length)¶
Fades a sound in by lowering the volume linearly in the given time interval.
- Parameters
start (float) – Time in seconds when the fading should start.
length (float) – Time in seconds how long the fading should last.
- Returns
The created
Sound
object.- Return type
Sound
Note
After the fade this sound plays silence, so that the length of the sound is not altered.
- file()
- classmethod file(filename)¶
Creates a sound object of a sound file.
- Parameters
filename (string) – Path of the file.
- Returns
The created
Sound
object.- Return type
Sound
Warning
If the file doesn’t exist or can’t be read you will not get an exception immediately, but when you try to start playback of that sound.
- filter()
- classmethod filter(b, a=1)¶
Filters a sound with the supplied IIR filter coefficients. Without the second parameter you’ll get a FIR filter.
If the first value of the a sequence is 0, it will be set to 1 automatically. If the first value of the a sequence is neither 0 nor 1, all filter coefficients will be scaled by this value so that it is 1 in the end, you don’t have to scale yourself.
- Parameters
b (sequence of float) – The nominator filter coefficients.
a (sequence of float) – The denominator filter coefficients.
- Returns
The created
Sound
object.- Return type
Sound
- highpass()
- classmethod highpass(frequency, Q=0.5)¶
Creates a second order highpass filter based on the transfer function \(H(s) = s^2 / (s^2 + s/Q + 1)\)
- Parameters
frequency (float) – The cut off trequency of the highpass.
Q (float) – Q factor of the lowpass.
- Returns
The created
Sound
object.- Return type
Sound
- join()
- classmethod join(sound)¶
Plays two factories in sequence.
- Parameters
sound (
Sound
) – The sound to play second.- Returns
The created
Sound
object.- Return type
Sound
Note
The two factories have to have the same specifications (channels and samplerate).
- length
The sample specification of the sound as a tuple with rate and channel count.
- limit()
- classmethod limit(start, end)¶
Limits a sound within a specific start and end time.
- Parameters
start (float) – Start time in seconds.
end (float) – End time in seconds.
- Returns
The created
Sound
object.- Return type
Sound
- list()
- classmethod list()¶
Creates an empty sound list that can contain several sounds.
- Parameters
random (int) – whether the playback will be random or not.
- Returns
The created
Sound
object.- Return type
Sound
- loop()
- classmethod loop(count)¶
Loops a sound.
- Parameters
count (integer) – How often the sound should be looped. Negative values mean endlessly.
- Returns
The created
Sound
object.- Return type
Sound
Note
This is a filter function, you might consider using
Handle.loop_count
instead.
- lowpass()
- classmethod lowpass(frequency, Q=0.5)¶
Creates a second order lowpass filter based on the transfer function \(H(s) = 1 / (s^2 + s/Q + 1)\)
- Parameters
frequency (float) – The cut off trequency of the lowpass.
Q (float) – Q factor of the lowpass.
- Returns
The created
Sound
object.- Return type
Sound
- mix()
- classmethod mix(sound)¶
Mixes two factories.
- Parameters
sound (
Sound
) – The sound to mix over the other.- Returns
The created
Sound
object.- Return type
Sound
Note
The two factories have to have the same specifications (channels and samplerate).
- modulate()
- classmethod modulate(sound)¶
Modulates two factories.
- Parameters
sound (
Sound
) – The sound to modulate over the other.- Returns
The created
Sound
object.- Return type
Sound
Note
The two factories have to have the same specifications (channels and samplerate).
- mutable()
- classmethod mutable()¶
Creates a sound that will be restarted when sought backwards. If the original sound is a sound list, the playing sound can change.
- Returns
The created
Sound
object.- Return type
Sound
- pingpong()
- classmethod pingpong()¶
Plays a sound forward and then backward. This is like joining a sound with its reverse.
- Returns
The created
Sound
object.- Return type
Sound
- pitch()
- classmethod pitch(factor)¶
Changes the pitch of a sound with a specific factor.
- Parameters
factor (float) – The factor to change the pitch with.
- Returns
The created
Sound
object.- Return type
Sound
Note
This is done by changing the sample rate of the underlying sound, which has to be an integer, so the factor value rounded and the factor may not be 100 % accurate.
Note
This is a filter function, you might consider using
Handle.pitch
instead.
- rechannel()
- classmethod rechannel(channels)¶
Rechannels the sound.
- Parameters
channels (int) – The new channel configuration.
- Returns
The created
Sound
object.- Return type
Sound
- resample()
- classmethod resample(rate, high_quality)¶
Resamples the sound.
- Parameters
rate (double) – The new sample rate.
high_quality (bool) – When true use a higher quality but slower resampler.
- Returns
The created
Sound
object.- Return type
Sound
- reverse()
- classmethod reverse()¶
Plays a sound reversed.
- Returns
The created
Sound
object.- Return type
Sound
Note
The sound has to have a finite length and has to be seekable. It’s recommended to use this only with factories with fast and accurate seeking, which is not true for encoded audio files, such ones should be buffered using
cache()
before being played reversed.Warning
If seeking is not accurate in the underlying sound you’ll likely hear skips/jumps/cracks.
- sawtooth()
- classmethod sawtooth(frequency, rate=48000)¶
Creates a sawtooth sound which plays a sawtooth wave.
- Parameters
frequency (float) – The frequency of the sawtooth wave in Hz.
rate (int) – The sampling rate in Hz. It’s recommended to set this value to the playback device’s samling rate to avoid resamping.
- Returns
The created
Sound
object.- Return type
Sound
- silence()
- classmethod silence(rate=48000)¶
Creates a silence sound which plays simple silence.
- Parameters
rate (int) – The sampling rate in Hz. It’s recommended to set this value to the playback device’s samling rate to avoid resamping.
- Returns
The created
Sound
object.- Return type
Sound
- sine()
- classmethod sine(frequency, rate=48000)¶
Creates a sine sound which plays a sine wave.
- Parameters
frequency (float) – The frequency of the sine wave in Hz.
rate (int) – The sampling rate in Hz. It’s recommended to set this value to the playback device’s samling rate to avoid resamping.
- Returns
The created
Sound
object.- Return type
Sound
- specs
The sample specification of the sound as a tuple with rate and channel count.
- square()
- classmethod square(frequency, rate=48000)¶
Creates a square sound which plays a square wave.
- Parameters
frequency (float) – The frequency of the square wave in Hz.
rate (int) – The sampling rate in Hz. It’s recommended to set this value to the playback device’s samling rate to avoid resamping.
- Returns
The created
Sound
object.- Return type
Sound
- sum()
- classmethod sum()¶
Sums the samples of a sound.
- Returns
The created
Sound
object.- Return type
Sound
- threshold()
- classmethod threshold(threshold=0)¶
Makes a threshold wave out of an audio wave by setting all samples with a amplitude >= threshold to 1, all <= -threshold to -1 and all between to 0.
- Parameters
threshold (float) – Threshold value over which an amplitude counts non-zero.
- Returns
The created
Sound
object.- Return type
Sound
- triangle()
- classmethod triangle(frequency, rate=48000)¶
Creates a triangle sound which plays a triangle wave.
- Parameters
frequency (float) – The frequency of the triangle wave in Hz.
rate (int) – The sampling rate in Hz. It’s recommended to set this value to the playback device’s samling rate to avoid resamping.
- Returns
The created
Sound
object.- Return type
Sound
- volume()
- classmethod volume(volume)¶
Changes the volume of a sound.
- Parameters
volume (float) – The new volume..
- Returns
The created
Sound
object.- Return type
Sound
Note
Should be in the range [0, 1] to avoid clipping.
Note
This is a filter function, you might consider using
Handle.volume
instead.
- write()
- classmethod write(filename, rate, channels, format, container, codec, bitrate, buffersize)¶
Writes the sound to a file.
- Parameters
filename (string) – The path to write to.
rate (int) – The sample rate to write with.
channels (int) – The number of channels to write with.
format (int) – The sample format to write with.
container (int) – The container format for the file.
codec (int) – The codec to use in the file.
bitrate (int) – The bitrate to write with.
buffersize (int) – The size of the writing buffer.