From 8c12ec27b0fd7729d4d97b16a793291dc1519e8e Mon Sep 17 00:00:00 2001 From: Bob Hammell Date: Mon, 5 May 2025 05:57:42 -0400 Subject: [PATCH 1/9] Add end() method to MixerVoice to allow samples to finish playing before ending looping --- shared-bindings/audiomixer/MixerVoice.c | 14 ++++++++++++++ shared-bindings/audiomixer/MixerVoice.h | 1 + shared-module/audiomixer/MixerVoice.c | 6 ++++++ 3 files changed, 21 insertions(+) diff --git a/shared-bindings/audiomixer/MixerVoice.c b/shared-bindings/audiomixer/MixerVoice.c index 90ee877734402..0100cb993c6cf 100644 --- a/shared-bindings/audiomixer/MixerVoice.c +++ b/shared-bindings/audiomixer/MixerVoice.c @@ -81,6 +81,19 @@ static mp_obj_t audiomixer_mixervoice_obj_stop(size_t n_args, const mp_obj_t *po } MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixervoice_stop_obj, 1, audiomixer_mixervoice_obj_stop); +//| def end() -> None +//| "" +//| Sets looping to False if sample is playing, allowing current looped +// sample to finish before looping again "" +//| +STATIC mp_obj_t audiomixer_mixervoice_obj_end(mp_obj_t self_in) { + audiomixer_mixervoice_obj_t *self = MP_OBJ_TO_PTR(self_in); + common_hal_audiomixer_mixervoice_end(self); + return mp_const_none; +} +MP_DEFINE_CONST_FUN_OBJ_1(audiomixer_mixervoice_end_obj, audiomixer_mixervoice_obj_end); + + //| 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. @@ -140,6 +153,7 @@ static const mp_rom_map_elem_t audiomixer_mixervoice_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_play), MP_ROM_PTR(&audiomixer_mixervoice_play_obj) }, { MP_ROM_QSTR(MP_QSTR_stop), MP_ROM_PTR(&audiomixer_mixervoice_stop_obj) }, + { MP_ROM_QSTR(MP_QSTR_end), MP_ROM_PTR(&audiomixer_mixervoice_end_obj) // Properties { MP_ROM_QSTR(MP_QSTR_playing), MP_ROM_PTR(&audiomixer_mixervoice_playing_obj) }, diff --git a/shared-bindings/audiomixer/MixerVoice.h b/shared-bindings/audiomixer/MixerVoice.h index cf6643d995c07..fe350eb1a7592 100644 --- a/shared-bindings/audiomixer/MixerVoice.h +++ b/shared-bindings/audiomixer/MixerVoice.h @@ -15,6 +15,7 @@ void common_hal_audiomixer_mixervoice_construct(audiomixer_mixervoice_obj_t *sel void common_hal_audiomixer_mixervoice_set_parent(audiomixer_mixervoice_obj_t *self, audiomixer_mixer_obj_t *parent); void common_hal_audiomixer_mixervoice_play(audiomixer_mixervoice_obj_t *self, mp_obj_t sample, bool loop); void common_hal_audiomixer_mixervoice_stop(audiomixer_mixervoice_obj_t *self); +void common_hal_audiomixer_mixervoice_end(audiomixer_mixervoice_obj_t *self); mp_obj_t common_hal_audiomixer_mixervoice_get_level(audiomixer_mixervoice_obj_t *self); void common_hal_audiomixer_mixervoice_set_level(audiomixer_mixervoice_obj_t *self, mp_obj_t gain); diff --git a/shared-module/audiomixer/MixerVoice.c b/shared-module/audiomixer/MixerVoice.c index a63229cf5af03..e0be869aa8e44 100644 --- a/shared-module/audiomixer/MixerVoice.c +++ b/shared-module/audiomixer/MixerVoice.c @@ -67,3 +67,9 @@ bool common_hal_audiomixer_mixervoice_get_playing(audiomixer_mixervoice_obj_t *s void common_hal_audiomixer_mixervoice_stop(audiomixer_mixervoice_obj_t *self) { self->sample = NULL; } + +void common_hal_audiomixer_mixervoice_end(audiomixer_mixervoice_obj_t *self) { + if (self->sample != NULL) { + self->loop = false; + } +} From 209d5160aba52fd726e7f7c650c392339b97ee54 Mon Sep 17 00:00:00 2001 From: Bob Hammell Date: Mon, 5 May 2025 15:28:41 -0400 Subject: [PATCH 2/9] Update docstring --- shared-bindings/audiomixer/MixerVoice.c | 37 +++++++++++++------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/shared-bindings/audiomixer/MixerVoice.c b/shared-bindings/audiomixer/MixerVoice.c index 0100cb993c6cf..91e28208280bf 100644 --- a/shared-bindings/audiomixer/MixerVoice.c +++ b/shared-bindings/audiomixer/MixerVoice.c @@ -81,10 +81,10 @@ static mp_obj_t audiomixer_mixervoice_obj_stop(size_t n_args, const mp_obj_t *po } MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixervoice_stop_obj, 1, audiomixer_mixervoice_obj_stop); -//| def end() -> None -//| "" -//| Sets looping to False if sample is playing, allowing current looped -// sample to finish before looping again "" +//| def end() -> None: +//| "" Sets looping to False if sample is playing, allowing current looped +//| sample to finish before looping again "" +//| ... //| STATIC mp_obj_t audiomixer_mixervoice_obj_end(mp_obj_t self_in) { audiomixer_mixervoice_obj_t *self = MP_OBJ_TO_PTR(self_in); @@ -155,17 +155,18 @@ static const mp_rom_map_elem_t audiomixer_mixervoice_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_stop), MP_ROM_PTR(&audiomixer_mixervoice_stop_obj) }, { MP_ROM_QSTR(MP_QSTR_end), MP_ROM_PTR(&audiomixer_mixervoice_end_obj) - // Properties - { MP_ROM_QSTR(MP_QSTR_playing), MP_ROM_PTR(&audiomixer_mixervoice_playing_obj) }, - { MP_ROM_QSTR(MP_QSTR_level), MP_ROM_PTR(&audiomixer_mixervoice_level_obj) }, - { MP_ROM_QSTR(MP_QSTR_loop), MP_ROM_PTR(&audiomixer_mixervoice_loop_obj) }, -}; -static MP_DEFINE_CONST_DICT(audiomixer_mixervoice_locals_dict, audiomixer_mixervoice_locals_dict_table); - -MP_DEFINE_CONST_OBJ_TYPE( - audiomixer_mixervoice_type, - MP_QSTR_MixerVoice, - MP_TYPE_FLAG_HAS_SPECIAL_ACCESSORS, - make_new, audiomixer_mixervoice_make_new, - locals_dict, &audiomixer_mixervoice_locals_dict - ); + // Properties + { + MP_ROM_QSTR(MP_QSTR_playing), MP_ROM_PTR(&audiomixer_mixervoice_playing_obj) + }, + { MP_ROM_QSTR(MP_QSTR_level), MP_ROM_PTR(&audiomixer_mixervoice_level_obj) }, + { MP_ROM_QSTR(MP_QSTR_loop), MP_ROM_PTR(&audiomixer_mixervoice_loop_obj) }, }; + static MP_DEFINE_CONST_DICT(audiomixer_mixervoice_locals_dict, audiomixer_mixervoice_locals_dict_table); + + MP_DEFINE_CONST_OBJ_TYPE( + audiomixer_mixervoice_type, + MP_QSTR_MixerVoice, + MP_TYPE_FLAG_HAS_SPECIAL_ACCESSORS, + make_new, audiomixer_mixervoice_make_new, + locals_dict, &audiomixer_mixervoice_locals_dict + ); From 1c7a0ccf2dd80c22ff7f4d801b4c19b656c26886 Mon Sep 17 00:00:00 2001 From: Bob Hammell Date: Mon, 5 May 2025 15:42:34 -0400 Subject: [PATCH 3/9] Update docstring --- shared-bindings/audiomixer/MixerVoice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-bindings/audiomixer/MixerVoice.c b/shared-bindings/audiomixer/MixerVoice.c index 91e28208280bf..821b9746a0ab6 100644 --- a/shared-bindings/audiomixer/MixerVoice.c +++ b/shared-bindings/audiomixer/MixerVoice.c @@ -81,7 +81,7 @@ static mp_obj_t audiomixer_mixervoice_obj_stop(size_t n_args, const mp_obj_t *po } MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixervoice_stop_obj, 1, audiomixer_mixervoice_obj_stop); -//| def end() -> None: +//| def end(self) -> None: //| "" Sets looping to False if sample is playing, allowing current looped //| sample to finish before looping again "" //| ... From ba20540a1fb975d057b5a83cd1e7d7a736117220 Mon Sep 17 00:00:00 2001 From: Bob Hammell Date: Mon, 5 May 2025 21:14:46 -0400 Subject: [PATCH 4/9] Update shared-bindings/audiomixer/MixerVoice.c Co-authored-by: Scott Shawcroft --- shared-bindings/audiomixer/MixerVoice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-bindings/audiomixer/MixerVoice.c b/shared-bindings/audiomixer/MixerVoice.c index 821b9746a0ab6..3e1642a35c7ec 100644 --- a/shared-bindings/audiomixer/MixerVoice.c +++ b/shared-bindings/audiomixer/MixerVoice.c @@ -86,7 +86,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixervoice_stop_obj, 1, audiomixer_mixervo //| sample to finish before looping again "" //| ... //| -STATIC mp_obj_t audiomixer_mixervoice_obj_end(mp_obj_t self_in) { +static mp_obj_t audiomixer_mixervoice_obj_end(mp_obj_t self_in) { audiomixer_mixervoice_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_audiomixer_mixervoice_end(self); return mp_const_none; From 2c80f37b872e586e5a340e2e003a55485808fe9c Mon Sep 17 00:00:00 2001 From: Bob Hammell Date: Tue, 6 May 2025 05:46:51 -0400 Subject: [PATCH 5/9] Update shared-bindings/audiomixer/MixerVoice.c Co-authored-by: Mark <56205165+gamblor21@users.noreply.github.com> --- shared-bindings/audiomixer/MixerVoice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-bindings/audiomixer/MixerVoice.c b/shared-bindings/audiomixer/MixerVoice.c index 3e1642a35c7ec..3fd3bf46aacf1 100644 --- a/shared-bindings/audiomixer/MixerVoice.c +++ b/shared-bindings/audiomixer/MixerVoice.c @@ -153,7 +153,7 @@ static const mp_rom_map_elem_t audiomixer_mixervoice_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_play), MP_ROM_PTR(&audiomixer_mixervoice_play_obj) }, { MP_ROM_QSTR(MP_QSTR_stop), MP_ROM_PTR(&audiomixer_mixervoice_stop_obj) }, - { MP_ROM_QSTR(MP_QSTR_end), MP_ROM_PTR(&audiomixer_mixervoice_end_obj) + { MP_ROM_QSTR(MP_QSTR_end), MP_ROM_PTR(&audiomixer_mixervoice_end_obj) }, // Properties { From bcda5a4d02d31e2046ea3f2474844a2aefa8547c Mon Sep 17 00:00:00 2001 From: Bob Hammell Date: Tue, 6 May 2025 05:46:59 -0400 Subject: [PATCH 6/9] Update shared-bindings/audiomixer/MixerVoice.c Co-authored-by: Mark <56205165+gamblor21@users.noreply.github.com> --- shared-bindings/audiomixer/MixerVoice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-bindings/audiomixer/MixerVoice.c b/shared-bindings/audiomixer/MixerVoice.c index 3fd3bf46aacf1..bd47b57ad6c50 100644 --- a/shared-bindings/audiomixer/MixerVoice.c +++ b/shared-bindings/audiomixer/MixerVoice.c @@ -82,7 +82,7 @@ static mp_obj_t audiomixer_mixervoice_obj_stop(size_t n_args, const mp_obj_t *po MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixervoice_stop_obj, 1, audiomixer_mixervoice_obj_stop); //| def end(self) -> None: -//| "" Sets looping to False if sample is playing, allowing current looped +//| """ Sets looping to False if sample is playing, allowing current looped //| sample to finish before looping again "" //| ... //| From fa565e5fa42f524dcee9b6236912b57697c5e3b5 Mon Sep 17 00:00:00 2001 From: Bob Hammell Date: Tue, 6 May 2025 05:47:08 -0400 Subject: [PATCH 7/9] Update shared-bindings/audiomixer/MixerVoice.c Co-authored-by: Mark <56205165+gamblor21@users.noreply.github.com> --- shared-bindings/audiomixer/MixerVoice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-bindings/audiomixer/MixerVoice.c b/shared-bindings/audiomixer/MixerVoice.c index bd47b57ad6c50..901a3f2c06f7a 100644 --- a/shared-bindings/audiomixer/MixerVoice.c +++ b/shared-bindings/audiomixer/MixerVoice.c @@ -83,7 +83,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixervoice_stop_obj, 1, audiomixer_mixervo //| def end(self) -> None: //| """ Sets looping to False if sample is playing, allowing current looped -//| sample to finish before looping again "" +//| sample to finish before looping again """ //| ... //| static mp_obj_t audiomixer_mixervoice_obj_end(mp_obj_t self_in) { From f8406397fe5ea93b39c14a0df82eeb8e9c2f38d6 Mon Sep 17 00:00:00 2001 From: Bob Hammell Date: Tue, 6 May 2025 09:17:29 -0400 Subject: [PATCH 8/9] Update end() docstring --- shared-bindings/audiomixer/MixerVoice.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shared-bindings/audiomixer/MixerVoice.c b/shared-bindings/audiomixer/MixerVoice.c index 901a3f2c06f7a..1df15198ff4ba 100644 --- a/shared-bindings/audiomixer/MixerVoice.c +++ b/shared-bindings/audiomixer/MixerVoice.c @@ -82,9 +82,9 @@ static mp_obj_t audiomixer_mixervoice_obj_stop(size_t n_args, const mp_obj_t *po MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixervoice_stop_obj, 1, audiomixer_mixervoice_obj_stop); //| def end(self) -> None: -//| """ Sets looping to False if sample is playing, allowing current looped -//| sample to finish before looping again """ -//| ... +//| """ Sets looping to False if sample is playing. This allows the looped +//| sample to complete its current playback and end further looping """ +//| ... //| static mp_obj_t audiomixer_mixervoice_obj_end(mp_obj_t self_in) { audiomixer_mixervoice_obj_t *self = MP_OBJ_TO_PTR(self_in); From fd2500da6bbc8ccc9f953dabc35209d2416c7613 Mon Sep 17 00:00:00 2001 From: Bob Hammell Date: Tue, 6 May 2025 10:13:48 -0400 Subject: [PATCH 9/9] Update formatting --- shared-bindings/audiomixer/MixerVoice.c | 29 ++++++++++++------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/shared-bindings/audiomixer/MixerVoice.c b/shared-bindings/audiomixer/MixerVoice.c index 1df15198ff4ba..fc292d4ea2f68 100644 --- a/shared-bindings/audiomixer/MixerVoice.c +++ b/shared-bindings/audiomixer/MixerVoice.c @@ -155,18 +155,17 @@ static const mp_rom_map_elem_t audiomixer_mixervoice_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_stop), MP_ROM_PTR(&audiomixer_mixervoice_stop_obj) }, { MP_ROM_QSTR(MP_QSTR_end), MP_ROM_PTR(&audiomixer_mixervoice_end_obj) }, - // Properties - { - MP_ROM_QSTR(MP_QSTR_playing), MP_ROM_PTR(&audiomixer_mixervoice_playing_obj) - }, - { MP_ROM_QSTR(MP_QSTR_level), MP_ROM_PTR(&audiomixer_mixervoice_level_obj) }, - { MP_ROM_QSTR(MP_QSTR_loop), MP_ROM_PTR(&audiomixer_mixervoice_loop_obj) }, }; - static MP_DEFINE_CONST_DICT(audiomixer_mixervoice_locals_dict, audiomixer_mixervoice_locals_dict_table); - - MP_DEFINE_CONST_OBJ_TYPE( - audiomixer_mixervoice_type, - MP_QSTR_MixerVoice, - MP_TYPE_FLAG_HAS_SPECIAL_ACCESSORS, - make_new, audiomixer_mixervoice_make_new, - locals_dict, &audiomixer_mixervoice_locals_dict - ); + // Properties + { MP_ROM_QSTR(MP_QSTR_playing), MP_ROM_PTR(&audiomixer_mixervoice_playing_obj) }, + { MP_ROM_QSTR(MP_QSTR_level), MP_ROM_PTR(&audiomixer_mixervoice_level_obj) }, + { MP_ROM_QSTR(MP_QSTR_loop), MP_ROM_PTR(&audiomixer_mixervoice_loop_obj) }, +}; +static MP_DEFINE_CONST_DICT(audiomixer_mixervoice_locals_dict, audiomixer_mixervoice_locals_dict_table); + +MP_DEFINE_CONST_OBJ_TYPE( + audiomixer_mixervoice_type, + MP_QSTR_MixerVoice, + MP_TYPE_FLAG_HAS_SPECIAL_ACCESSORS, + make_new, audiomixer_mixervoice_make_new, + locals_dict, &audiomixer_mixervoice_locals_dict + ); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy