pyglet.media.synthesis

class ADSREnvelope(attack, decay, release, sustain_amplitude=0.5)

A four part Attack, Decay, Suspend, Release envelope.

This is a four part ADSR envelope. The attack, decay, and release parameters should be provided in seconds. For example, a value of 0.1 would be 100ms. The sustain_amplitude parameter affects the sustain volume. This defaults to a value of 0.5, but can be provided on a scale from 0.0 to 1.0.

Parameters:
attack : float

The attack time, in seconds.

decay : float

The decay time, in seconds.

release : float

The release time, in seconds.

sustain_amplitude : float

The sustain amplitude (volume), from 0.0 to 1.0.

get_generator(sample_rate, duration)
class FlatEnvelope(amplitude=0.5)

A flat envelope, providing basic amplitude setting.

Parameters:
amplitude : float

The amplitude (volume) of the wave, from 0.0 to 1.0. Values outside this range will be clamped.

get_generator(sample_rate, duration)
class LinearDecayEnvelope(peak=1.0)

A linearly decaying envelope.

This envelope linearly decays the amplitude from the peak value to 0, over the length of the waveform.

Parameters:
peak : float

The Initial peak value of the envelope, from 0.0 to 1.0. Values outside this range will be clamped.

get_generator(sample_rate, duration)
class Sawtooth(duration, frequency=440, sample_rate=44800, envelope=None)
class Silence(duration, frequency=440, sample_rate=44800, envelope=None)
class Sine(duration, frequency=440, sample_rate=44800, envelope=None)
class Square(duration, frequency=440, sample_rate=44800, envelope=None)
class SynthesisSource(generator, duration, sample_rate=44800, envelope=None)

Base class for synthesized waveforms.

Parameters:
generator : A non-instantiated generator object

A waveform generator that produces a stream of floats from (-1, 1)

duration : float

The length, in seconds, of audio that you wish to generate.

sample_rate : int

Audio samples per second. (CD quality is 44100).

envelope : pyglet.media.synthesis._Envelope

An optional Envelope to apply to the waveform.

get_audio_data(num_bytes, compensation_time=0.0)

Return num_bytes bytes of audio data.

seek(timestamp)

Seek to given timestamp.

Parameters:timestamp (float) – Time where to seek in the source. The timestamp will be clamped to the duration of the source.
class TremoloEnvelope(depth, rate, amplitude=0.5)

A tremolo envelope, for modulation amplitude.

A tremolo envelope that modulates the amplitude of the waveform with a sinusoidal pattern. The depth and rate of modulation can be specified. Depth is calculated as a percentage of the maximum amplitude. For example: a depth of 0.2 and amplitude of 0.5 will fluctuate the amplitude between 0.4 an 0.5.

Parameters:
depth : float

The amount of fluctuation, from 0.0 to 1.0.

rate : float

The fluctuation frequency, in seconds.

amplitude : float

The peak amplitude (volume), from 0.0 to 1.0.

get_generator(sample_rate, duration)
class Triangle(duration, frequency=440, sample_rate=44800, envelope=None)
class WhiteNoise(duration, frequency=440, sample_rate=44800, envelope=None)
composite_operator(*operators)
noise_generator(frequency, sample_rate)
pulse_generator(frequency, sample_rate, duty_cycle=50)
sawtooth_generator(frequency, sample_rate)
silence_generator(frequency, sample_rate)
sine_generator(frequency, sample_rate)
sine_operator(sample_rate=44800, frequency=440, index=1, modulator=None, envelope=None)

A sine wave generator that can be optionally modulated with another generator.

This generator represents a single FM Operator. It can be used by itself as a simple sine wave, or modulated by another waveform generator. Multiple operators can be linked together in this way. For example:

operator1 = sine_operator(samplerate=44800, frequency=1.22)
operator2 = sine_operator(samplerate=44800, frequency=99, modulator=operator1)
operator3 = sine_operator(samplerate=44800, frequency=333, modulator=operator2)
operator4 = sine_operator(samplerate=44800, frequency=545, modulator=operator3)
Parameters:
sample_rate : int

Audio samples per second. (CD quality is 44100).

frequency : float

The frequency, in Hz, of the waveform you wish to generate.

index : float

The modulation index. Defaults to 1

modulator : sine_operator

An optional operator to modulate this one.

envelope : pyglet.media.synthesis._Envelope

An optional Envelope to apply to the waveform.

triangle_generator(frequency, sample_rate)