audiomixer – Support for audio mixing — Adafruit CircuitPython 1 documentation (original) (raw)

Adafruit CircuitPython

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 audiomixer.MixerVoice objects.

Parameters:

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() → None

Deinitialises the Mixer and releases any hardware resources for reuse.

__enter__() → Mixer

No-op used by Context Managers.

__exit__() → None

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

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 audiomixer.MixerVoice object(s).

mixer.voice (,)

play(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 playing to block.

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

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

stop_voice(voice: int = 0) → None

Stops playback of the sample on the given voice.

class audiomixer.MixerVoice

Voice objects used with Mixer

Used to access and control samples with audiomixer.Mixer.

MixerVoice instance object(s) created by audiomixer.Mixer.

play(sample: circuitpython_typing.AudioSample, *, loop: bool = False) → None

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, audiomixer.Mixer or audiomp3.MP3Decoder.

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

stop() → None

Stops playback of the sample on this voice.

end() → None

Sets looping to False if sample is playing. This allows the looped sample to complete its current playback and end further looping

level_: synthio.BlockInput_

The volume level of a voice, as a floating point number between 0 and 1. If your board does not support synthio, this property will only accept a float value.

loop_: bool_

Get or set the loop status of the currently playing sample.

playing_: bool_

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