@@ -163,6 +163,24 @@ mp_obj_t common_hal_audiodelays_multi_tap_delay_get_taps(audiodelays_multi_tap_d
163163 }
164164}
165165
166+ void validate_tap_value (mp_obj_t item , qstr arg_name ) {
167+ if (mp_obj_is_small_int (item )) {
168+ mp_arg_validate_int_range (mp_obj_get_int (item ), 0 , 1 , arg_name );
169+ } else {
170+ mp_arg_validate_obj_float_range (item , 0 , 1 , arg_name );
171+ }
172+ }
173+
174+ mp_float_t get_tap_value (mp_obj_t item ) {
175+ mp_float_t value ;
176+ if (mp_obj_is_small_int (item )) {
177+ value = (mp_float_t )mp_obj_get_int (item );
178+ } else {
179+ value = mp_obj_float_get (item );
180+ }
181+ return value ;
182+ }
183+
166184void common_hal_audiodelays_multi_tap_delay_set_taps (audiodelays_multi_tap_delay_obj_t * self , mp_obj_t taps_in ) {
167185 if (taps_in != mp_const_none && !MP_OBJ_TYPE_HAS_SLOT (mp_obj_get_type (taps_in ), iter )) {
168186 mp_raise_TypeError_varg (
@@ -193,10 +211,10 @@ void common_hal_audiodelays_multi_tap_delay_set_taps(audiodelays_multi_tap_delay
193211 mp_arg_validate_length (len1 , 2 , MP_QSTR_items );
194212
195213 for (size_t j = 0 ; j < len1 ; j ++ ) {
196- mp_arg_validate_obj_float_range (items1 [j ], 0 , 1 , j ? MP_QSTR_level : MP_QSTR_position );
214+ validate_tap_value (items1 [j ], j ? MP_QSTR_level : MP_QSTR_position );
197215 }
198- } else if (mp_obj_is_float (item )) {
199- mp_arg_validate_obj_float_range (item , 0 , 1 , MP_QSTR_position );
216+ } else if (mp_obj_is_float (item ) || mp_obj_is_small_int ( item ) ) {
217+ validate_tap_value (item , MP_QSTR_position );
200218 } else {
201219 mp_raise_TypeError_varg (
202220 MP_ERROR_TEXT ("%q in %q must be of type %q or %q, not %q" ),
@@ -226,15 +244,16 @@ void common_hal_audiodelays_multi_tap_delay_set_taps(audiodelays_multi_tap_delay
226244
227245 for (i = 0 ; i < len ; i ++ ) {
228246 mp_obj_t item = items [i ];
229- if (mp_obj_is_float (item )) {
230- self -> tap_positions [i ] = mp_obj_float_get (item );
231- self -> tap_levels [i ] = MICROPY_FLOAT_CONST (1.0 );
232- } else if (mp_obj_is_tuple_compatible (item )) {
247+ if (mp_obj_is_tuple_compatible (item )) {
233248 size_t len1 ;
234249 mp_obj_t * items1 ;
235250 mp_obj_tuple_get (item , & len1 , & items1 );
236- self -> tap_positions [i ] = mp_obj_float_get (items1 [0 ]);
237- self -> tap_levels [i ] = mp_obj_float_get (items1 [1 ]);
251+
252+ self -> tap_positions [i ] = get_tap_value (items1 [0 ]);
253+ self -> tap_levels [i ] = get_tap_value (items1 [1 ]);
254+ } else {
255+ self -> tap_positions [i ] = get_tap_value (item );
256+ self -> tap_levels [i ] = MICROPY_FLOAT_CONST (1.0 );
238257 }
239258 }
240259
0 commit comments