33
33
#include "shared-bindings/util.h"
34
34
#include "supervisor/shared/translate.h"
35
35
36
- //| .. currentmodule:: audiocore
36
+ //|class WaveFile:
37
+ //| """.. currentmodule:: audiocore
37
38
//|
38
- //| :class:`WaveFile` -- Load a wave file for audio playback
39
- //| ========================================================
39
+ //| :class:`WaveFile` -- Load a wave file for audio playback
40
+ //| ========================================================
40
41
//|
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`.
44
47
//|
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.
46
50
//|
47
- //| Load a .wav file for playback with `audioio.AudioOut` or `audiobusio.I2SOut`.
48
51
//|
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::
51
53
//|
54
+ //| import board
55
+ //| import audiocore
56
+ //| import audioio
57
+ //| import digitalio
52
58
//|
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)
54
62
//|
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)
73
66
//|
67
+ //| print("playing")
68
+ //| a.play(wav)
69
+ //| while a.playing:
70
+ //| pass
71
+ //| print("stopped")"""
72
+ //| ...
74
73
STATIC 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 ) {
75
74
mp_arg_check_num (n_args , kw_args , 1 , 2 , false);
76
75
@@ -93,10 +92,9 @@ STATIC mp_obj_t audioio_wavefile_make_new(const mp_obj_type_t *type, size_t n_ar
93
92
return MP_OBJ_FROM_PTR (self );
94
93
}
95
94
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
+ //| ...
100
98
STATIC mp_obj_t audioio_wavefile_deinit (mp_obj_t self_in ) {
101
99
audioio_wavefile_obj_t * self = MP_OBJ_TO_PTR (self_in );
102
100
common_hal_audioio_wavefile_deinit (self );
@@ -110,30 +108,27 @@ STATIC void check_for_deinit(audioio_wavefile_obj_t *self) {
110
108
}
111
109
}
112
110
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
+ //| ...
117
114
// Provided by context manager helper.
118
115
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
+ //| ...
124
120
STATIC mp_obj_t audioio_wavefile_obj___exit__ (size_t n_args , const mp_obj_t * args ) {
125
121
(void )n_args ;
126
122
common_hal_audioio_wavefile_deinit (args [0 ]);
127
123
return mp_const_none ;
128
124
}
129
125
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (audioio_wavefile___exit___obj , 4 , 4 , audioio_wavefile_obj___exit__ );
130
126
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
+ //| ...
137
132
STATIC mp_obj_t audioio_wavefile_obj_get_sample_rate (mp_obj_t self_in ) {
138
133
audioio_wavefile_obj_t * self = MP_OBJ_TO_PTR (self_in );
139
134
check_for_deinit (self );
@@ -156,10 +151,9 @@ const mp_obj_property_t audioio_wavefile_sample_rate_obj = {
156
151
(mp_obj_t )& mp_const_none_obj },
157
152
};
158
153
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
+ //| ...
163
157
STATIC mp_obj_t audioio_wavefile_obj_get_bits_per_sample (mp_obj_t self_in ) {
164
158
audioio_wavefile_obj_t * self = MP_OBJ_TO_PTR (self_in );
165
159
check_for_deinit (self );
@@ -174,10 +168,9 @@ const mp_obj_property_t audioio_wavefile_bits_per_sample_obj = {
174
168
(mp_obj_t )& mp_const_none_obj },
175
169
};
176
170
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
+ //| ...
181
174
STATIC mp_obj_t audioio_wavefile_obj_get_channel_count (mp_obj_t self_in ) {
182
175
audioio_wavefile_obj_t * self = MP_OBJ_TO_PTR (self_in );
183
176
check_for_deinit (self );
0 commit comments