6464//| scale: BlockInput = 1.0,
6565//| offset: BlockInput = 0,
6666//| phase_offset: BlockInput = 0,
67- //| once=False
67+ //| once=False,
68+ //| interpolate=True
6869//| ):
6970//| pass
7071static const mp_arg_t lfo_properties [] = {
@@ -74,6 +75,7 @@ static const mp_arg_t lfo_properties[] = {
7475 { MP_QSTR_offset , MP_ARG_OBJ | MP_ARG_KW_ONLY , {.u_obj = MP_ROM_INT (0 ) } },
7576 { MP_QSTR_phase_offset , MP_ARG_OBJ | MP_ARG_KW_ONLY , {.u_obj = MP_ROM_INT (0 ) } },
7677 { MP_QSTR_once , MP_ARG_OBJ | MP_ARG_KW_ONLY , {.u_obj = MP_ROM_INT (0 ) } },
78+ { MP_QSTR_interpolate , MP_ARG_OBJ | MP_ARG_KW_ONLY , {.u_obj = MP_ROM_INT (1 ) } },
7779};
7880
7981STATIC mp_obj_t synthio_lfo_make_new (const mp_obj_type_t * type_in , size_t n_args , size_t n_kw , const mp_obj_t * all_args ) {
@@ -201,6 +203,26 @@ MP_PROPERTY_GETSET(synthio_lfo_once_obj,
201203 (mp_obj_t )& synthio_lfo_set_once_obj );
202204
203205
206+ //|
207+ //| interpolate: bool
208+ //| """True if the waveform should perform linear interpolation between values"""
209+ STATIC mp_obj_t synthio_lfo_get_interpolate (mp_obj_t self_in ) {
210+ synthio_lfo_obj_t * self = MP_OBJ_TO_PTR (self_in );
211+ return mp_obj_new_bool (common_hal_synthio_lfo_get_interpolate (self ));
212+ }
213+ MP_DEFINE_CONST_FUN_OBJ_1 (synthio_lfo_get_interpolate_obj , synthio_lfo_get_interpolate );
214+
215+ STATIC mp_obj_t synthio_lfo_set_interpolate (mp_obj_t self_in , mp_obj_t arg ) {
216+ synthio_lfo_obj_t * self = MP_OBJ_TO_PTR (self_in );
217+ common_hal_synthio_lfo_set_interpolate (self , mp_obj_is_true (arg ));
218+ return mp_const_none ;
219+ }
220+ MP_DEFINE_CONST_FUN_OBJ_2 (synthio_lfo_set_interpolate_obj , synthio_lfo_set_interpolate );
221+ MP_PROPERTY_GETSET (synthio_lfo_interpolate_obj ,
222+ (mp_obj_t )& synthio_lfo_get_interpolate_obj ,
223+ (mp_obj_t )& synthio_lfo_set_interpolate_obj );
224+
225+
204226//|
205227//| phase: float
206228//| """The phase of the oscillator, in the range 0 to 1 (read-only)"""
@@ -250,6 +272,7 @@ STATIC const mp_rom_map_elem_t synthio_lfo_locals_dict_table[] = {
250272 { MP_ROM_QSTR (MP_QSTR_offset ), MP_ROM_PTR (& synthio_lfo_offset_obj ) },
251273 { MP_ROM_QSTR (MP_QSTR_phase_offset ), MP_ROM_PTR (& synthio_lfo_phase_offset_obj ) },
252274 { MP_ROM_QSTR (MP_QSTR_once ), MP_ROM_PTR (& synthio_lfo_once_obj ) },
275+ { MP_ROM_QSTR (MP_QSTR_interpolate ), MP_ROM_PTR (& synthio_lfo_interpolate_obj ) },
253276 { MP_ROM_QSTR (MP_QSTR_value ), MP_ROM_PTR (& synthio_lfo_value_obj ) },
254277 { MP_ROM_QSTR (MP_QSTR_phase ), MP_ROM_PTR (& synthio_lfo_phase_obj ) },
255278 { MP_ROM_QSTR (MP_QSTR_retrigger ), MP_ROM_PTR (& synthio_lfo_retrigger_obj ) },
0 commit comments