@@ -163,6 +163,24 @@ mp_obj_t common_hal_audiodelays_multi_tap_delay_get_taps(audiodelays_multi_tap_d
163
163
}
164
164
}
165
165
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
+
166
184
void common_hal_audiodelays_multi_tap_delay_set_taps (audiodelays_multi_tap_delay_obj_t * self , mp_obj_t taps_in ) {
167
185
if (taps_in != mp_const_none && !MP_OBJ_TYPE_HAS_SLOT (mp_obj_get_type (taps_in ), iter )) {
168
186
mp_raise_TypeError_varg (
@@ -193,10 +211,10 @@ void common_hal_audiodelays_multi_tap_delay_set_taps(audiodelays_multi_tap_delay
193
211
mp_arg_validate_length (len1 , 2 , MP_QSTR_items );
194
212
195
213
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 );
197
215
}
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 );
200
218
} else {
201
219
mp_raise_TypeError_varg (
202
220
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
226
244
227
245
for (i = 0 ; i < len ; i ++ ) {
228
246
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 )) {
233
248
size_t len1 ;
234
249
mp_obj_t * items1 ;
235
250
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 );
238
257
}
239
258
}
240
259
0 commit comments