audiomixer – Support for audio mixing¶
Available on these boards
Mixer(voice_count: int = 2, buffer_size: int = 1024, channel_count: int = 2, bits_per_sample: int = 16, samples_signed: bool = True, sample_rate: int = 8000)¶
Mixes one or more audio samples together into one sample.
Create a Mixer object that can mix multiple channels with the same sample rate. Samples are accessed and controlled with the mixer’s
voice_count (int) – The maximum number of voices to mix
buffer_size (int) – The total size in bytes of the buffers to mix into
channel_count (int) – The number of channels the source samples contain. 1 = mono; 2 = stereo.
bits_per_sample (int) – The bits per sample of the samples being played
samples_signed (bool) – Samples are signed (True) or unsigned (False)
sample_rate (int) – The sample rate to be used for all samples
Playing a wave file from flash:
import board import audioio import audiocore import audiomixer import digitalio a = audioio.AudioOut(board.A0) music = audiocore.WaveFile(open("cplay-5.1-16bit-16khz.wav", "rb")) drum = audiocore.WaveFile(open("drum.wav", "rb")) mixer = audiomixer.Mixer(voice_count=2, sample_rate=16000, channel_count=1, bits_per_sample=16, samples_signed=True) print("playing") # Have AudioOut play our Mixer source a.play(mixer) # Play the first sample voice mixer.voice.play(music) while mixer.playing: # Play the second sample voice mixer.voice.play(drum) time.sleep(1) print("stopped")
True when any voice is being output. (read-only)
32 bit value that dictates how quickly samples are played in Hertz (cycles per second).
A tuple of the mixer’s
>>> mixer.voice (<MixerVoice>,)
__exit__(self) → None¶
Automatically deinitializes the hardware when exiting a context. See Lifetime and ContextManagers for more info.
play(self, sample: _typing.AudioSample, *, voice: int = 0, loop: bool = False) → None¶
Plays the sample once when loop=False and continuously when loop=True. Does not block. Use
The sample must match the Mixer’s encoding settings given in the constructor.
Voice objects used with Mixer
Used to access and control samples with
MixerVoice instance object(s) created by
The volume level of a voice, as a floating point number between 0 and 1.
True when this voice is being output. (read-only)
play(self, sample: _typing.AudioSample, *, loop: bool = False) → None¶
Plays the sample once when
loop=False, and continuously when
loop=True. Does not block. Use
The sample must match the
audiomixer.Mixer’s encoding settings given in the constructor.