Mixer – Mixes one or more audio samples together

Mixer mixes multiple samples into one sample.

class audiomixer.Mixer(voice_count=2, buffer_size=1024, channel_count=2, bits_per_sample=16, samples_signed=True, sample_rate=8000)

Create a Mixer object that can mix multiple channels with the same sample rate. Samples are accessed and controlled with the mixer’s audiomixer.MixerVoice objects.

Parameters:
  • 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[0].play(music)
while mixer.playing:
  # Play the second sample voice
  mixer.voice[1].play(drum)
  time.sleep(1)
print("stopped")
deinit()

Deinitialises the Mixer and releases any hardware resources for reuse.

__enter__()

No-op used by Context Managers.

__exit__()

Automatically deinitializes the hardware when exiting a context. See Lifetime and ContextManagers for more info.

playing

True when any voice is being output. (read-only)

sample_rate

32 bit value that dictates how quickly samples are played in Hertz (cycles per second).

voice

A tuple of the mixer’s audiomixer.MixerVoice object(s).

>>> mixer.voice
(<MixerVoice>,)
play(sample, *, voice=0, loop=False)

Plays the sample once when loop=False and continuously when loop=True. Does not block. Use playing to block.

Sample must be an audiocore.WaveFile, audiocore.RawSample, or audiomixer.Mixer.

The sample must match the Mixer’s encoding settings given in the constructor.

stop_voice(voice=0)

Stops playback of the sample on the given voice.