69
69
//| a.play(wav)
70
70
//| while a.playing:
71
71
//| pass
72
- //| print("stopped")"""
72
+ //| print("stopped")
73
+ //|
74
+ //| Support was added for taking a filename as parameter, instead of an opened file,
75
+ //| and opening the file internally.
76
+ //| """
73
77
//| ...
74
78
//|
75
79
STATIC mp_obj_t audioio_wavefile_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * args ) {
76
80
mp_arg_check_num (n_args , n_kw , 1 , 2 , false);
81
+ mp_obj_t arg = args [0 ];
82
+
83
+ if (mp_obj_is_str (arg )) {
84
+ arg = mp_call_function_2 (MP_OBJ_FROM_PTR (& mp_builtin_open_obj ), arg , MP_ROM_QSTR (MP_QSTR_rb ));
85
+ }
77
86
78
87
audioio_wavefile_obj_t * self = m_new_obj (audioio_wavefile_obj_t );
79
88
self -> base .type = & audioio_wavefile_type ;
80
- if (!mp_obj_is_type (args [ 0 ] , & mp_type_fileio )) {
89
+ if (!mp_obj_is_type (arg , & mp_type_fileio )) {
81
90
mp_raise_TypeError (translate ("file must be a file opened in byte mode" ));
82
91
}
83
92
uint8_t * buffer = NULL ;
@@ -88,7 +97,7 @@ STATIC mp_obj_t audioio_wavefile_make_new(const mp_obj_type_t *type, size_t n_ar
88
97
buffer = bufinfo .buf ;
89
98
buffer_size = mp_arg_validate_length_range (bufinfo .len , 8 , 1024 , MP_QSTR_buffer );
90
99
}
91
- common_hal_audioio_wavefile_construct (self , MP_OBJ_TO_PTR (args [ 0 ] ),
100
+ common_hal_audioio_wavefile_construct (self , MP_OBJ_TO_PTR (arg ),
92
101
buffer , buffer_size );
93
102
94
103
return MP_OBJ_FROM_PTR (self );
0 commit comments