Skip to content

Commit a498bcd

Browse files
committed
add voice level getter
1 parent 7aa0840 commit a498bcd

3 files changed

Lines changed: 22 additions & 1 deletion

File tree

shared-bindings/audioio/MixerVoice.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,22 @@ STATIC mp_obj_t audioio_mixervoice_obj_stop(size_t n_args, const mp_obj_t *pos_a
113113
}
114114
MP_DEFINE_CONST_FUN_OBJ_KW(audioio_mixervoice_stop_obj, 1, audioio_mixervoice_obj_stop);
115115

116+
//| .. method:: get_gain(voice, gain)
117+
//|
118+
//| Get the gain of a voice.
119+
//|
120+
//| Returns as a floating point number between 0 and 1
121+
//|
122+
STATIC mp_obj_t audioio_mixervoice_obj_get_level(mp_obj_t self_in) {
123+
124+
#if !MICROPY_PY_BUILTINS_FLOAT
125+
#error "floating point not supported"
126+
#endif
127+
128+
return mp_obj_new_float(common_hal_audioio_mixervoice_get_level(self_in));
129+
}
130+
MP_DEFINE_CONST_FUN_OBJ_1(audioio_mixervoice_get_level_obj, audioio_mixervoice_obj_get_level);
131+
116132
//| .. method:: set_gain(voice, gain)
117133
//|
118134
//| Set the gain of a voice.
@@ -146,7 +162,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(audioio_mixervoice_set_level_obj, 1, audioio_mixervoi
146162

147163
const mp_obj_property_t audioio_mixervoice_level_obj = {
148164
.base.type = &mp_type_property,
149-
.proxy = {(mp_obj_t)&mp_const_none_obj,
165+
.proxy = {(mp_obj_t)&audioio_mixervoice_get_level_obj,
150166
(mp_obj_t)&audioio_mixervoice_set_level_obj,
151167
(mp_obj_t)&mp_const_none_obj},
152168
};

shared-bindings/audioio/MixerVoice.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ void common_hal_audioio_mixervoice_deinit(audioio_mixervoice_obj_t* self);
2121
void common_hal_audioio_mixervoice_set_parent(audioio_mixervoice_obj_t* self, audioio_mixer_obj_t *parent);
2222
void common_hal_audioio_mixervoice_play(audioio_mixervoice_obj_t* self, mp_obj_t sample, bool loop);
2323
void common_hal_audioio_mixervoice_stop(audioio_mixervoice_obj_t* self);
24+
float common_hal_audioio_mixervoice_get_level(audioio_mixervoice_obj_t* self);
2425
void common_hal_audioio_mixervoice_set_level(audioio_mixervoice_obj_t* self, float gain);
2526

2627
bool common_hal_audioio_mixervoice_get_playing(audioio_mixervoice_obj_t* self);

shared-module/audioio/MixerVoice.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ void common_hal_audioio_mixervoice_set_parent(audioio_mixervoice_obj_t* self, au
1818
self->parent = parent;
1919
}
2020

21+
float common_hal_audioio_mixervoice_get_level(audioio_mixervoice_obj_t* self) {
22+
return self->level;
23+
}
24+
2125
void common_hal_audioio_mixervoice_set_level(audioio_mixervoice_obj_t* self, float level) {
2226
self->level = level * ((1 << 15)-1);
2327
}

0 commit comments

Comments
 (0)