summaryrefslogtreecommitdiff
path: root/shared-bindings/audiomixer/Mixer.c
diff options
context:
space:
mode:
authordherrada <dylan.herrada@gmail.com>2020-04-27 17:20:40 -0400
committerdherrada <dylan.herrada@gmail.com>2020-04-27 17:20:40 -0400
commit8330471068c4cba89802c2b0b9a91a60e656c12e (patch)
treef58f489a851f068223ad2db087473e019d305a75 /shared-bindings/audiomixer/Mixer.c
parent1363e6e724124b6f51619113b2877da53195dd1e (diff)
Added inline pyi to audiomixer
Diffstat (limited to 'shared-bindings/audiomixer/Mixer.c')
-rw-r--r--shared-bindings/audiomixer/Mixer.c141
1 files changed, 67 insertions, 74 deletions
diff --git a/shared-bindings/audiomixer/Mixer.c b/shared-bindings/audiomixer/Mixer.c
index 03ffb9373..1949f2add 100644
--- a/shared-bindings/audiomixer/Mixer.c
+++ b/shared-bindings/audiomixer/Mixer.c
@@ -38,50 +38,50 @@
#include "shared-bindings/util.h"
#include "supervisor/shared/translate.h"
-//| .. currentmodule:: audiomixer
+//|class Mixer:
+//| """.. currentmodule:: audiomixer
//|
-//| :class:`Mixer` -- Mixes one or more audio samples together
-//| ===========================================================
+//| :class:`Mixer` -- Mixes one or more audio samples together
+//| ===========================================================
//|
-//| Mixer mixes multiple samples into one sample.
+//| Mixer mixes multiple samples into one sample."""
//|
-//| .. class:: Mixer(voice_count=2, buffer_size=1024, channel_count=2, bits_per_sample=16, samples_signed=True, sample_rate=8000)
+//| def __init__(self, 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):
+//| """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.
//|
-//| 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.
+//| :param int voice_count: The maximum number of voices to mix
+//| :param int buffer_size: The total size in bytes of the buffers to mix into
+//| :param int channel_count: The number of channels the source samples contain. 1 = mono; 2 = stereo.
+//| :param int bits_per_sample: The bits per sample of the samples being played
+//| :param bool samples_signed: Samples are signed (True) or unsigned (False)
+//| :param int sample_rate: The sample rate to be used for all samples
//|
-//| :param int voice_count: The maximum number of voices to mix
-//| :param int buffer_size: The total size in bytes of the buffers to mix into
-//| :param int channel_count: The number of channels the source samples contain. 1 = mono; 2 = stereo.
-//| :param int bits_per_sample: The bits per sample of the samples being played
-//| :param bool samples_signed: Samples are signed (True) or unsigned (False)
-//| :param int sample_rate: The sample rate to be used for all samples
+//| Playing a wave file from flash::
//|
-//| Playing a wave file from flash::
+//| import board
+//| import audioio
+//| import audiocore
+//| import audiomixer
+//| import digitalio
//|
-//| 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")
+//| 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")"""
+//| ...
STATIC mp_obj_t audiomixer_mixer_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
enum { ARG_voice_count, ARG_buffer_size, ARG_channel_count, ARG_bits_per_sample, ARG_samples_signed, ARG_sample_rate };
static const mp_arg_t allowed_args[] = {
@@ -125,10 +125,9 @@ STATIC mp_obj_t audiomixer_mixer_make_new(const mp_obj_type_t *type, size_t n_ar
return MP_OBJ_FROM_PTR(self);
}
-//| .. method:: deinit()
-//|
-//| Deinitialises the Mixer and releases any hardware resources for reuse.
-//|
+//| def deinit(self, ) -> Any:
+//| """Deinitialises the Mixer and releases any hardware resources for reuse."""
+//| ...
STATIC mp_obj_t audiomixer_mixer_deinit(mp_obj_t self_in) {
audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
common_hal_audiomixer_mixer_deinit(self);
@@ -142,17 +141,15 @@ STATIC void check_for_deinit(audiomixer_mixer_obj_t *self) {
}
}
-//| .. method:: __enter__()
-//|
-//| No-op used by Context Managers.
-//|
+//| def __enter__(self, ) -> Any:
+//| """No-op used by Context Managers."""
+//| ...
// Provided by context manager helper.
-//| .. method:: __exit__()
-//|
-//| Automatically deinitializes the hardware when exiting a context. See
-//| :ref:`lifetime-and-contextmanagers` for more info.
-//|
+//| def __exit__(self, ) -> Any:
+//| """Automatically deinitializes the hardware when exiting a context. See
+//| :ref:`lifetime-and-contextmanagers` for more info."""
+//| ...
STATIC mp_obj_t audiomixer_mixer_obj___exit__(size_t n_args, const mp_obj_t *args) {
(void)n_args;
common_hal_audiomixer_mixer_deinit(args[0]);
@@ -160,10 +157,9 @@ STATIC mp_obj_t audiomixer_mixer_obj___exit__(size_t n_args, const mp_obj_t *arg
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiomixer_mixer___exit___obj, 4, 4, audiomixer_mixer_obj___exit__);
-//| .. attribute:: playing
-//|
-//| True when any voice is being output. (read-only)
-//|
+//| playing: Any =
+//| """True when any voice is being output. (read-only)"""
+//| ...
STATIC mp_obj_t audiomixer_mixer_obj_get_playing(mp_obj_t self_in) {
audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
check_for_deinit(self);
@@ -178,10 +174,9 @@ const mp_obj_property_t audiomixer_mixer_playing_obj = {
(mp_obj_t)&mp_const_none_obj},
};
-//| .. attribute:: sample_rate
-//|
-//| 32 bit value that dictates how quickly samples are played in Hertz (cycles per second).
-//|
+//| sample_rate: Any =
+//| """32 bit value that dictates how quickly samples are played in Hertz (cycles per second)."""
+//| ...
STATIC mp_obj_t audiomixer_mixer_obj_get_sample_rate(mp_obj_t self_in) {
audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
check_for_deinit(self);
@@ -196,14 +191,14 @@ const mp_obj_property_t audiomixer_mixer_sample_rate_obj = {
(mp_obj_t)&mp_const_none_obj},
};
-//| .. attribute:: voice
-//|
-//| A tuple of the mixer's `audiomixer.MixerVoice` object(s).
+//| voice: Any =
+//| """A tuple of the mixer's `audiomixer.MixerVoice` object(s).
//|
-//| .. code-block:: python
+//| .. code-block:: python
//|
-//| >>> mixer.voice
-//| (<MixerVoice>,)
+//| >>> mixer.voice
+//| (<MixerVoice>,)"""
+//| ...
STATIC mp_obj_t audiomixer_mixer_obj_get_voice(mp_obj_t self_in) {
audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
check_for_deinit(self);
@@ -218,15 +213,14 @@ const mp_obj_property_t audiomixer_mixer_voice_obj = {
(mp_obj_t)&mp_const_none_obj},
};
-//| .. method:: play(sample, *, voice=0, loop=False)
+//| def play(self, sample: Any, *, voice: Any = 0, loop: Any = False) -> Any:
+//| """Plays the sample once when loop=False and continuously when loop=True.
+//| Does not block. Use `playing` to block.
//|
-//| 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.
+//| Sample must be an `audiocore.WaveFile`, `audiocore.RawSample`, or `audiomixer.Mixer`.
//|
+//| The sample must match the Mixer's encoding settings given in the constructor."""
+//| ...
STATIC mp_obj_t audiomixer_mixer_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
enum { ARG_sample, ARG_voice, ARG_loop };
static const mp_arg_t allowed_args[] = {
@@ -251,10 +245,9 @@ STATIC mp_obj_t audiomixer_mixer_obj_play(size_t n_args, const mp_obj_t *pos_arg
}
MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixer_play_obj, 1, audiomixer_mixer_obj_play);
-//| .. method:: stop_voice(voice=0)
-//|
-//| Stops playback of the sample on the given voice.
-//|
+//| def stop_voice(self, voice: Any = 0) -> Any:
+//| """Stops playback of the sample on the given voice."""
+//| ...
STATIC mp_obj_t audiomixer_mixer_obj_stop_voice(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
enum { ARG_voice };
static const mp_arg_t allowed_args[] = {