3333#include "shared-bindings/util.h"
3434#include "supervisor/shared/translate.h"
3535
36- //| .. currentmodule:: audiocore
36+ //|class WaveFile:
37+ //| """.. currentmodule:: audiocore
3738//|
38- //| :class:`WaveFile` -- Load a wave file for audio playback
39- //| ========================================================
39+ //| :class:`WaveFile` -- Load a wave file for audio playback
40+ //| ========================================================
4041//|
41- //| A .wav file prepped for audio playback. Only mono and stereo files are supported. Samples must
42- //| be 8 bit unsigned or 16 bit signed. If a buffer is provided, it will be used instead of allocating
43- //| an internal buffer.
42+ //| A .wav file prepped for audio playback. Only mono and stereo files are supported. Samples must
43+ //| be 8 bit unsigned or 16 bit signed. If a buffer is provided, it will be used instead of allocating
44+ //| an internal buffer."""
45+ //| def __init__(self, file: typing.BinaryIO, buffer: bytearray):
46+ //| """Load a .wav file for playback with `audioio.AudioOut` or `audiobusio.I2SOut`.
4447//|
45- //| .. class:: WaveFile(file[, buffer])
48+ //| :param typing.BinaryIO file: Already opened wave file
49+ //| :param bytearray buffer: Optional pre-allocated buffer, that will be split in half and used for double-buffering of the data. If not provided, two 512 byte buffers are allocated internally.
4650//|
47- //| Load a .wav file for playback with `audioio.AudioOut` or `audiobusio.I2SOut`.
4851//|
49- //| :param typing.BinaryIO file: Already opened wave file
50- //| :param bytearray buffer: Optional pre-allocated buffer, that will be split in half and used for double-buffering of the data. If not provided, two 512 byte buffers are allocated internally.
52+ //| Playing a wave file from flash::
5153//|
54+ //| import board
55+ //| import audiocore
56+ //| import audioio
57+ //| import digitalio
5258//|
53- //| Playing a wave file from flash::
59+ //| # Required for CircuitPlayground Express
60+ //| speaker_enable = digitalio.DigitalInOut(board.SPEAKER_ENABLE)
61+ //| speaker_enable.switch_to_output(value=True)
5462//|
55- //| import board
56- //| import audiocore
57- //| import audioio
58- //| import digitalio
59- //|
60- //| # Required for CircuitPlayground Express
61- //| speaker_enable = digitalio.DigitalInOut(board.SPEAKER_ENABLE)
62- //| speaker_enable.switch_to_output(value=True)
63- //|
64- //| data = open("cplay-5.1-16bit-16khz.wav", "rb")
65- //| wav = audiocore.WaveFile(data)
66- //| a = audioio.AudioOut(board.A0)
67- //|
68- //| print("playing")
69- //| a.play(wav)
70- //| while a.playing:
71- //| pass
72- //| print("stopped")
63+ //| data = open("cplay-5.1-16bit-16khz.wav", "rb")
64+ //| wav = audiocore.WaveFile(data)
65+ //| a = audioio.AudioOut(board.A0)
7366//|
67+ //| print("playing")
68+ //| a.play(wav)
69+ //| while a.playing:
70+ //| pass
71+ //| print("stopped")"""
72+ //| ...
7473STATIC mp_obj_t audioio_wavefile_make_new (const mp_obj_type_t * type , size_t n_args , const mp_obj_t * args , mp_map_t * kw_args ) {
7574 mp_arg_check_num (n_args , kw_args , 1 , 2 , false);
7675
@@ -93,10 +92,9 @@ STATIC mp_obj_t audioio_wavefile_make_new(const mp_obj_type_t *type, size_t n_ar
9392 return MP_OBJ_FROM_PTR (self );
9493}
9594
96- //| .. method:: deinit()
97- //|
98- //| Deinitialises the WaveFile and releases all memory resources for reuse.
99- //|
95+ //| def deinit(self, ) -> Any:
96+ //| """Deinitialises the WaveFile and releases all memory resources for reuse."""
97+ //| ...
10098STATIC mp_obj_t audioio_wavefile_deinit (mp_obj_t self_in ) {
10199 audioio_wavefile_obj_t * self = MP_OBJ_TO_PTR (self_in );
102100 common_hal_audioio_wavefile_deinit (self );
@@ -110,30 +108,27 @@ STATIC void check_for_deinit(audioio_wavefile_obj_t *self) {
110108 }
111109}
112110
113- //| .. method:: __enter__()
114- //|
115- //| No-op used by Context Managers.
116- //|
111+ //| def __enter__(self, ) -> Any:
112+ //| """No-op used by Context Managers."""
113+ //| ...
117114// Provided by context manager helper.
118115
119- //| .. method:: __exit__()
120- //|
121- //| Automatically deinitializes the hardware when exiting a context. See
122- //| :ref:`lifetime-and-contextmanagers` for more info.
123- //|
116+ //| def __exit__(self, ) -> Any:
117+ //| """Automatically deinitializes the hardware when exiting a context. See
118+ //| :ref:`lifetime-and-contextmanagers` for more info."""
119+ //| ...
124120STATIC mp_obj_t audioio_wavefile_obj___exit__ (size_t n_args , const mp_obj_t * args ) {
125121 (void )n_args ;
126122 common_hal_audioio_wavefile_deinit (args [0 ]);
127123 return mp_const_none ;
128124}
129125STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (audioio_wavefile___exit___obj , 4 , 4 , audioio_wavefile_obj___exit__ );
130126
131- //| .. attribute:: sample_rate
132- //|
133- //| 32 bit value that dictates how quickly samples are loaded into the DAC
134- //| in Hertz (cycles per second). When the sample is looped, this can change
135- //| the pitch output without changing the underlying sample.
136- //|
127+ //| sample_rate: Any =
128+ //| """32 bit value that dictates how quickly samples are loaded into the DAC
129+ //| in Hertz (cycles per second). When the sample is looped, this can change
130+ //| the pitch output without changing the underlying sample."""
131+ //| ...
137132STATIC mp_obj_t audioio_wavefile_obj_get_sample_rate (mp_obj_t self_in ) {
138133 audioio_wavefile_obj_t * self = MP_OBJ_TO_PTR (self_in );
139134 check_for_deinit (self );
@@ -156,10 +151,9 @@ const mp_obj_property_t audioio_wavefile_sample_rate_obj = {
156151 (mp_obj_t )& mp_const_none_obj },
157152};
158153
159- //| .. attribute:: bits_per_sample
160- //|
161- //| Bits per sample. (read only)
162- //|
154+ //| bits_per_sample: Any =
155+ //| """Bits per sample. (read only)"""
156+ //| ...
163157STATIC mp_obj_t audioio_wavefile_obj_get_bits_per_sample (mp_obj_t self_in ) {
164158 audioio_wavefile_obj_t * self = MP_OBJ_TO_PTR (self_in );
165159 check_for_deinit (self );
@@ -174,10 +168,9 @@ const mp_obj_property_t audioio_wavefile_bits_per_sample_obj = {
174168 (mp_obj_t )& mp_const_none_obj },
175169};
176170
177- //| .. attribute:: channel_count
178- //|
179- //| Number of audio channels. (read only)
180- //|
171+ //| channel_count: Any =
172+ //| """Number of audio channels. (read only)"""
173+ //| ...
181174STATIC mp_obj_t audioio_wavefile_obj_get_channel_count (mp_obj_t self_in ) {
182175 audioio_wavefile_obj_t * self = MP_OBJ_TO_PTR (self_in );
183176 check_for_deinit (self );
0 commit comments