audiomixer – Support for audio mixing¶
Available on these boards
- class audiomixer.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")
- playing :bool¶
True when any voice is being output. (read-only)
- sample_rate :int¶
32 bit value that dictates how quickly samples are played in Hertz (cycles per second).
- voice :Tuple[MixerVoice, Ellipsis]¶
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: circuitpython_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.
- class audiomixer.MixerVoice¶
Voice objects used with Mixer
Used to access and control samples with
MixerVoice instance object(s) created by
- level :float¶
The volume level of a voice, as a floating point number between 0 and 1.
- playing :bool¶
True when this voice is being output. (read-only)
- play(self, sample: circuitpython_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.