sound
#
- class platypush.plugins.sound.PlaybackState(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#
Bases:
Enum
- class platypush.plugins.sound.RecordingState(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#
Bases:
Enum
- class platypush.plugins.sound.SoundPlugin(input_device=None, output_device=None, input_blocksize=1024, output_blocksize=1024, **kwargs)[source]#
Bases:
Plugin
Plugin to interact with a sound device.
Triggers:
platypush.message.event.sound.SoundPlaybackStartedEvent
on playback startplatypush.message.event.sound.SoundPlaybackStoppedEvent
on playback stopplatypush.message.event.sound.SoundPlaybackPausedEvent
on playback pauseplatypush.message.event.sound.SoundRecordingStartedEvent
on recording startplatypush.message.event.sound.SoundRecordingStoppedEvent
on recording stopplatypush.message.event.sound.SoundRecordingPausedEvent
on recording pause
Requires:
sounddevice (
pip install sounddevice
)soundfile (
pip install soundfile
)numpy (
pip install numpy
)
- __init__(input_device=None, output_device=None, input_blocksize=1024, output_blocksize=1024, **kwargs)[source]#
- Parameters:
input_device (int or str) – Index or name of the default input device. Use
platypush.plugins.sound.query_devices()
to get the available devices. Default: system defaultoutput_device (int or str) – Index or name of the default output device. Use
platypush.plugins.sound.query_devices()
to get the available devices. Default: system defaultinput_blocksize (int) – Blocksize to be applied to the input device. Try to increase this value if you get input overflow errors while recording. Default: 1024
output_blocksize (int) – Blocksize to be applied to the output device. Try to increase this value if you get output underflow errors while playing. Default: 1024
- play(file=None, sound=None, device=None, blocksize=None, bufsize=None, samplerate=None, channels=None, stream_name=None, stream_index=None)[source]#
Plays a sound file (support formats: wav, raw) or a synthetic sound.
- Parameters:
file (str) – Sound file path. Specify this if you want to play a file
sound – Sound to play. Specify this if you want to play synthetic sounds. You can also create polyphonic sounds by just calling play multiple times.
device (int or str) – Output device (default: default configured device or system default audio output if not configured)
blocksize (int) – Audio block size (default: configured output_blocksize or 2048)
bufsize (int) – Size of the audio buffer (default: 20 frames for audio files, 2 frames for synth sounds)
samplerate (int) – Audio samplerate. Default: audio file samplerate if in file mode, 44100 Hz if in synth mode
channels (int) – Number of audio channels. Default: number of channels in the audio file in file mode, 1 if in synth mode
stream_index (int) – If specified, play to an already active stream index (you can get them through
platypush.plugins.sound.query_streams()
). Default: creates a new audio stream through PortAudio.stream_name (str) – Name of the stream to play to. If set, the sound will be played to the specified stream name, or a stream with that name will be created. If not set, and
stream_index
is not set either, then a new stream will be created on the next available index and namedplatypush-stream-<index>
.
- query_devices(category=None)[source]#
Query the available devices
- Parameters:
category (str) – Device category to query. Can be either input or output. Default: None (query all devices)
- Returns:
A dictionary representing the available devices.
Example:
[ { "name": "pulse", "hostapi": 0, "max_input_channels": 32, "max_output_channels": 32, "default_low_input_latency": 0.008684807256235827, "default_low_output_latency": 0.008684807256235827, "default_high_input_latency": 0.034807256235827665, "default_high_output_latency": 0.034807256235827665, "default_samplerate": 44100 }, { "name": "default", "hostapi": 0, "max_input_channels": 32, "max_output_channels": 32, "default_low_input_latency": 0.008684807256235827, "default_low_output_latency": 0.008684807256235827, "default_high_input_latency": 0.034807256235827665, "default_high_output_latency": 0.034807256235827665, "default_samplerate": 44100 } ]
- record(outfile=None, duration=None, device=None, sample_rate=None, format=None, blocksize=None, latency=0, channels=1, subtype='PCM_24')[source]#
Records audio to a sound file (support formats: wav, raw)
- Parameters:
outfile (str) – Sound file (default: the method will create a temporary file with the recording)
duration (float) – Recording duration in seconds (default: record until stop event)
device (int or str) – Input device (default: default configured device or system default audio input if not configured)
sample_rate (int) – Recording sample rate (default: device default rate)
format (str) – Audio format (default: WAV)
blocksize (int) – Audio block size (default: configured input_blocksize or 2048)
latency (float) – Device latency in seconds (default: 0)
channels (int) – Number of channels (default: 1)
subtype (str) – Recording subtype - see Soundfile docs - Subtypes for a list of the available subtypes (default: PCM_24)
- recordplay(duration=None, input_device=None, output_device=None, sample_rate=None, blocksize=None, latency=0, channels=1, dtype=None)[source]#
Records audio and plays it on an output sound device (audio pass-through)
- Parameters:
duration (float) – Recording duration in seconds (default: record until stop event)
input_device (int or str) – Input device (default: default configured device or system default audio input if not configured)
output_device (int or str) – Output device (default: default configured device or system default audio output if not configured)
sample_rate (int) – Recording sample rate (default: device default rate)
blocksize (int) – Audio block size (default: configured output_blocksize or 2048)
latency (float) – Device latency in seconds (default: 0)
channels (int) – Number of channels (default: 1)
dtype (str) – Data type for the recording - see Soundfile docs - Recording for available types (default: input device default)
- release(stream_index=None, stream_name=None, sound_index=None, midi_note=None, frequency=None)[source]#
- Remove a sound from an active stream, either by sound index (use
platypush.sound.plugin.SoundPlugin.query_streams()
to get the sounds playing on the active streams), midi_note, frequency or absolute file path.
- stream_recording(device=None, fifo=None, duration=None, sample_rate=None, dtype='float32', blocksize=None, latency=0, channels=1)[source]#
Return audio data from an audio source
- Parameters:
device (int or str) – Input device (default: default configured device or system default audio input if not configured)
fifo (str) – Path of the FIFO that will be used to exchange audio samples (default: /tmp/inputstream)
duration (float) – Recording duration in seconds (default: record until stop event)
sample_rate (int) – Recording sample rate (default: device default rate)
dtype (str) – Data type for the audio samples. Supported types: ‘float64’, ‘float32’, ‘int32’, ‘int16’, ‘int8’, ‘uint8’. Default: float32
blocksize (int) – Audio block size (default: configured input_blocksize or 2048)
latency (float) – Device latency in seconds (default: 0)
channels (int) – Number of channels (default: 1)