@@ -114,6 +114,31 @@ MP_PROPERTY_GETSET(audiomixer_mixervoice_level_obj,
114114 (mp_obj_t )& audiomixer_mixervoice_get_level_obj ,
115115 (mp_obj_t )& audiomixer_mixervoice_set_level_obj );
116116
117+ //| panning: synthio.BlockInput
118+ //| """Defines the channel(s) in which the voice appears, as a floating point number between
119+ //| -1 and 1. If your board does not support synthio, this property will only accept a float
120+ //| value. This property is ignored if ``audiomixer.Mixer.channel_count=1``.
121+ //|
122+ //| -1 is left channel only, 0 is both channels, and 1 is right channel. For fractional values,
123+ //| the note plays at full amplitude in one channel and partial amplitude in the other channel.
124+ //| For instance -.5 plays at full amplitude in the left channel and 1/2 amplitude in the right
125+ //| channel."""
126+ static mp_obj_t audiomixer_mixervoice_obj_get_panning (mp_obj_t self_in ) {
127+ return common_hal_audiomixer_mixervoice_get_panning (self_in );
128+ }
129+ MP_DEFINE_CONST_FUN_OBJ_1 (audiomixer_mixervoice_get_panning_obj , audiomixer_mixervoice_obj_get_panning );
130+
131+ static mp_obj_t audiomixer_mixervoice_obj_set_panning (mp_obj_t self_in , mp_obj_t panning_in ) {
132+ audiomixer_mixervoice_obj_t * self = MP_OBJ_TO_PTR (self_in );
133+ common_hal_audiomixer_mixervoice_set_panning (self , panning_in );
134+ return mp_const_none ;
135+ }
136+ MP_DEFINE_CONST_FUN_OBJ_2 (audiomixer_mixervoice_set_panning_obj , audiomixer_mixervoice_obj_set_panning );
137+
138+ MP_PROPERTY_GETSET (audiomixer_mixervoice_panning_obj ,
139+ (mp_obj_t )& audiomixer_mixervoice_get_panning_obj ,
140+ (mp_obj_t )& audiomixer_mixervoice_set_panning_obj );
141+
117142//| loop: bool
118143//| """Get or set the loop status of the currently playing sample."""
119144static mp_obj_t audiomixer_mixervoice_obj_get_loop (mp_obj_t self_in ) {
@@ -158,6 +183,7 @@ static const mp_rom_map_elem_t audiomixer_mixervoice_locals_dict_table[] = {
158183 // Properties
159184 { MP_ROM_QSTR (MP_QSTR_playing ), MP_ROM_PTR (& audiomixer_mixervoice_playing_obj ) },
160185 { MP_ROM_QSTR (MP_QSTR_level ), MP_ROM_PTR (& audiomixer_mixervoice_level_obj ) },
186+ { MP_ROM_QSTR (MP_QSTR_panning ), MP_ROM_PTR (& audiomixer_mixervoice_panning_obj ) },
161187 { MP_ROM_QSTR (MP_QSTR_loop ), MP_ROM_PTR (& audiomixer_mixervoice_loop_obj ) },
162188};
163189static MP_DEFINE_CONST_DICT (audiomixer_mixervoice_locals_dict , audiomixer_mixervoice_locals_dict_table ) ;
0 commit comments