Skip to content

Commit df5568d

Browse files
committed
move Mixer & MixerVoice from 'audiocore' to 'audiomixer'
1 parent b54fd96 commit df5568d

18 files changed

Lines changed: 346 additions & 197 deletions

File tree

py/circuitpy_defns.mk

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,9 @@ endif
114114
ifeq ($(CIRCUITPY_AUDIOCORE),1)
115115
SRC_PATTERNS += audiocore/%
116116
endif
117+
ifeq ($(CIRCUITPY_AUDIOMIXER),1)
118+
SRC_PATTERNS += audiomixer/%
119+
endif
117120
ifeq ($(CIRCUITPY_BITBANGIO),1)
118121
SRC_PATTERNS += bitbangio/%
119122
endif
@@ -305,10 +308,11 @@ SRC_SHARED_MODULE_ALL = \
305308
audiopwmio/__init__.c \
306309
audioio/__init__.c \
307310
audiocore/__init__.c \
308-
audiocore/Mixer.c \
309-
audiocore/MixerVoice.c \
310311
audiocore/RawSample.c \
311312
audiocore/WaveFile.c \
313+
audiomixer/__init__.c \
314+
audiomixer/Mixer.c \
315+
audiomixer/MixerVoice.c \
312316
bitbangio/I2C.c \
313317
bitbangio/OneWire.c \
314318
bitbangio/SPI.c \

py/circuitpy_mpconfig.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,13 @@ extern const struct _mp_obj_module_t audioio_module;
244244
#define AUDIOIO_MODULE
245245
#endif
246246

247+
#if CIRCUITPY_AUDIOMIXER
248+
#define AUDIOMIXER_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_audiomixer), (mp_obj_t)&audiomixer_module },
249+
extern const struct _mp_obj_module_t audiomixer_module;
250+
#else
251+
#define AUDIOMIXER_MODULE
252+
#endif
253+
247254
#if CIRCUITPY_AUDIOPWMIO
248255
#define AUDIOPWMIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_audiopwmio), (mp_obj_t)&audiopwmio_module },
249256
extern const struct _mp_obj_module_t audiopwmio_module;
@@ -573,6 +580,7 @@ extern const struct _mp_obj_module_t ustack_module;
573580
AUDIOBUSIO_MODULE \
574581
AUDIOCORE_MODULE \
575582
AUDIOIO_MODULE \
583+
AUDIOMIXER_MODULE \
576584
AUDIOPWMIO_MODULE \
577585
BITBANGIO_MODULE \
578586
BLEIO_MODULE \

py/circuitpy_mpconfig.mk

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ endif
9494
endif
9595
CFLAGS += -DCIRCUITPY_AUDIOCORE=$(CIRCUITPY_AUDIOCORE)
9696

97+
ifndef CIRCUITPY_AUDIOMIXER
98+
CIRCUITPY_AUDIOMIXER = $(CIRCUITPY_AUDIOIO)
99+
endif
100+
CFLAGS += -DCIRCUITPY_AUDIOMIXER=$(CIRCUITPY_AUDIOMIXER)
101+
97102
ifndef CIRCUITPY_BITBANGIO
98103
CIRCUITPY_BITBANGIO = $(CIRCUITPY_FULL_BUILD)
99104
endif

shared-bindings/audiocore/__init__.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@
3131

3232
#include "shared-bindings/microcontroller/Pin.h"
3333
#include "shared-bindings/audiocore/__init__.h"
34-
#include "shared-bindings/audiocore/Mixer.h"
3534
#include "shared-bindings/audiocore/RawSample.h"
3635
#include "shared-bindings/audiocore/WaveFile.h"
36+
//#include "shared-bindings/audiomixer/Mixer.h"
3737

3838
//| :mod:`audiocore` --- Support for audio samples and mixer
3939
//| ========================================================
@@ -49,15 +49,13 @@
4949
//| .. toctree::
5050
//| :maxdepth: 3
5151
//|
52-
//| Mixer
53-
//| MixerVoice
5452
//| RawSample
5553
//| WaveFile
5654
//|
5755

5856
STATIC const mp_rom_map_elem_t audiocore_module_globals_table[] = {
5957
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audiocore) },
60-
{ MP_ROM_QSTR(MP_QSTR_Mixer), MP_ROM_PTR(&audioio_mixer_type) },
58+
//{ MP_ROM_QSTR(MP_QSTR_Mixer), MP_ROM_PTR(&audioio_mixer_type) },
6159
{ MP_ROM_QSTR(MP_QSTR_RawSample), MP_ROM_PTR(&audioio_rawsample_type) },
6260
{ MP_ROM_QSTR(MP_QSTR_WaveFile), MP_ROM_PTR(&audioio_wavefile_type) },
6361
};

shared-bindings/audioio/__init__.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,13 @@
3434
#include "shared-bindings/audioio/AudioOut.h"
3535

3636
#ifdef CIRCUITPY_AUDIOIO_COMPAT
37-
#include "shared-bindings/audiocore/Mixer.h"
37+
#include "shared-bindings/audiomixer/Mixer.h"
3838
#include "shared-bindings/audiocore/RawSample.h"
3939
#include "shared-bindings/audiocore/WaveFile.h"
4040
#endif
41+
#ifdef CIRCUIPY_AUDIOMIXER
42+
#include "shared-bindings/audiomixer/Mixer.h"
43+
#endif
4144

4245
//| :mod:`audioio` --- Support for audio input and output
4346
//| ======================================================
@@ -72,7 +75,7 @@ STATIC const mp_rom_map_elem_t audioio_module_globals_table[] = {
7275
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audioio) },
7376
{ MP_ROM_QSTR(MP_QSTR_AudioOut), MP_ROM_PTR(&audioio_audioout_type) },
7477
#ifdef CIRCUITPY_AUDIOIO_COMPAT
75-
{ MP_ROM_QSTR(MP_QSTR_Mixer), MP_ROM_PTR(&audioio_mixer_type) },
78+
//{ MP_ROM_QSTR(MP_QSTR_Mixer), MP_ROM_PTR(&audiomixer_mixer_type) },
7679
{ MP_ROM_QSTR(MP_QSTR_RawSample), MP_ROM_PTR(&audioio_rawsample_type) },
7780
{ MP_ROM_QSTR(MP_QSTR_WaveFile), MP_ROM_PTR(&audioio_wavefile_type) },
7881
#endif
Lines changed: 50 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2424
* THE SOFTWARE.
2525
*/
26-
#include "shared-bindings/audiocore/Mixer.h"
27-
#include "shared-bindings/audiocore/MixerVoice.h"
28-
#include "shared-module/audiocore/MixerVoice.h"
26+
#include "shared-bindings/audiomixer/Mixer.h"
27+
#include "shared-bindings/audiomixer/MixerVoice.h"
28+
#include "shared-module/audiomixer/MixerVoice.h"
2929

3030
#include <stdint.h>
3131

@@ -38,7 +38,7 @@
3838
#include "shared-bindings/util.h"
3939
#include "supervisor/shared/translate.h"
4040

41-
//| .. currentmodule:: audiocore
41+
//| .. currentmodule:: audiomixer
4242
//|
4343
//| :class:`Mixer` -- Mixes one or more audio samples together
4444
//| ===========================================================
@@ -62,6 +62,7 @@
6262
//| import board
6363
//| import audioio
6464
//| import audiocore
65+
//| import audiomixer
6566
//| import digitalio
6667
//|
6768
//| # Required for CircuitPlayground Express
@@ -70,8 +71,8 @@
7071
//|
7172
//| music = audiocore.WaveFile(open("cplay-5.1-16bit-16khz.wav", "rb"))
7273
//| drum = audiocore.WaveFile(open("drum.wav", "rb"))
73-
//| mixer = audiocore.Mixer(voice_count=2, sample_rate=16000, channel_count=1,
74-
//| bits_per_sample=16, samples_signed=True)
74+
//| mixer = audiomixer.Mixer(voice_count=2, sample_rate=16000, channel_count=1,
75+
//| bits_per_sample=16, samples_signed=True)
7576
//| a = audioio.AudioOut(board.A0)
7677
//|
7778
//| print("playing")
@@ -85,7 +86,7 @@
8586
//| time.sleep(1)
8687
//| print("stopped")
8788
//|
88-
STATIC mp_obj_t audioio_mixer_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
89+
STATIC mp_obj_t audiomixer_mixer_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
8990
enum { ARG_voice_count, ARG_buffer_size, ARG_channel_count, ARG_bits_per_sample, ARG_samples_signed, ARG_sample_rate };
9091
static const mp_arg_t allowed_args[] = {
9192
{ MP_QSTR_voice_count, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 2} },
@@ -115,13 +116,13 @@ STATIC mp_obj_t audioio_mixer_make_new(const mp_obj_type_t *type, size_t n_args,
115116
if (bits_per_sample != 8 && bits_per_sample != 16) {
116117
mp_raise_ValueError(translate("bits_per_sample must be 8 or 16"));
117118
}
118-
audioio_mixer_obj_t *self = m_new_obj_var(audioio_mixer_obj_t, mp_obj_t, voice_count);
119-
self->base.type = &audioio_mixer_type;
120-
common_hal_audioio_mixer_construct(self, voice_count, args[ARG_buffer_size].u_int, bits_per_sample, args[ARG_samples_signed].u_bool, channel_count, sample_rate);
119+
audiomixer_mixer_obj_t *self = m_new_obj_var(audiomixer_mixer_obj_t, mp_obj_t, voice_count);
120+
self->base.type = &audiomixer_mixer_type;
121+
common_hal_audiomixer_mixer_construct(self, voice_count, args[ARG_buffer_size].u_int, bits_per_sample, args[ARG_samples_signed].u_bool, channel_count, sample_rate);
121122

122123
for(int v=0; v<voice_count; v++){
123-
self->voice[v] = audioio_mixervoice_type.make_new(&audioio_mixervoice_type, 0, 0, NULL);
124-
common_hal_audioio_mixervoice_set_parent(self->voice[v], self);
124+
self->voice[v] = audiomixer_mixervoice_type.make_new(&audiomixer_mixervoice_type, 0, 0, NULL);
125+
common_hal_audiomixer_mixervoice_set_parent(self->voice[v], self);
125126
}
126127
self->voice_tuple = mp_obj_new_tuple(self->voice_count, self->voice);
127128

@@ -132,15 +133,15 @@ STATIC mp_obj_t audioio_mixer_make_new(const mp_obj_type_t *type, size_t n_args,
132133
//|
133134
//| Deinitialises the Mixer and releases any hardware resources for reuse.
134135
//|
135-
STATIC mp_obj_t audioio_mixer_deinit(mp_obj_t self_in) {
136-
audioio_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
137-
common_hal_audioio_mixer_deinit(self);
136+
STATIC mp_obj_t audiomixer_mixer_deinit(mp_obj_t self_in) {
137+
audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
138+
common_hal_audiomixer_mixer_deinit(self);
138139
return mp_const_none;
139140
}
140-
STATIC MP_DEFINE_CONST_FUN_OBJ_1(audioio_mixer_deinit_obj, audioio_mixer_deinit);
141+
STATIC MP_DEFINE_CONST_FUN_OBJ_1(audiomixer_mixer_deinit_obj, audiomixer_mixer_deinit);
141142

142-
STATIC void check_for_deinit(audioio_mixer_obj_t *self) {
143-
if (common_hal_audioio_mixer_deinited(self)) {
143+
STATIC void check_for_deinit(audiomixer_mixer_obj_t *self) {
144+
if (common_hal_audiomixer_mixer_deinited(self)) {
144145
raise_deinited_error();
145146
}
146147
}
@@ -156,27 +157,27 @@ STATIC void check_for_deinit(audioio_mixer_obj_t *self) {
156157
//| Automatically deinitializes the hardware when exiting a context. See
157158
//| :ref:`lifetime-and-contextmanagers` for more info.
158159
//|
159-
STATIC mp_obj_t audioio_mixer_obj___exit__(size_t n_args, const mp_obj_t *args) {
160+
STATIC mp_obj_t audiomixer_mixer_obj___exit__(size_t n_args, const mp_obj_t *args) {
160161
(void)n_args;
161-
common_hal_audioio_mixer_deinit(args[0]);
162+
common_hal_audiomixer_mixer_deinit(args[0]);
162163
return mp_const_none;
163164
}
164-
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audioio_mixer___exit___obj, 4, 4, audioio_mixer_obj___exit__);
165+
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiomixer_mixer___exit___obj, 4, 4, audiomixer_mixer_obj___exit__);
165166

166167
//| .. attribute:: playing
167168
//|
168169
//| True when any voice is being output. (read-only)
169170
//|
170-
STATIC mp_obj_t audioio_mixer_obj_get_playing(mp_obj_t self_in) {
171-
audioio_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
171+
STATIC mp_obj_t audiomixer_mixer_obj_get_playing(mp_obj_t self_in) {
172+
audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
172173
check_for_deinit(self);
173-
return mp_obj_new_bool(common_hal_audioio_mixer_get_playing(self));
174+
return mp_obj_new_bool(common_hal_audiomixer_mixer_get_playing(self));
174175
}
175-
MP_DEFINE_CONST_FUN_OBJ_1(audioio_mixer_get_playing_obj, audioio_mixer_obj_get_playing);
176+
MP_DEFINE_CONST_FUN_OBJ_1(audiomixer_mixer_get_playing_obj, audiomixer_mixer_obj_get_playing);
176177

177-
const mp_obj_property_t audioio_mixer_playing_obj = {
178+
const mp_obj_property_t audiomixer_mixer_playing_obj = {
178179
.base.type = &mp_type_property,
179-
.proxy = {(mp_obj_t)&audioio_mixer_get_playing_obj,
180+
.proxy = {(mp_obj_t)&audiomixer_mixer_get_playing_obj,
180181
(mp_obj_t)&mp_const_none_obj,
181182
(mp_obj_t)&mp_const_none_obj},
182183
};
@@ -185,59 +186,59 @@ const mp_obj_property_t audioio_mixer_playing_obj = {
185186
//|
186187
//| 32 bit value that dictates how quickly samples are played in Hertz (cycles per second).
187188
//|
188-
STATIC mp_obj_t audioio_mixer_obj_get_sample_rate(mp_obj_t self_in) {
189-
audioio_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
189+
STATIC mp_obj_t audiomixer_mixer_obj_get_sample_rate(mp_obj_t self_in) {
190+
audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
190191
check_for_deinit(self);
191-
return MP_OBJ_NEW_SMALL_INT(common_hal_audioio_mixer_get_sample_rate(self));
192+
return MP_OBJ_NEW_SMALL_INT(common_hal_audiomixer_mixer_get_sample_rate(self));
192193
}
193-
MP_DEFINE_CONST_FUN_OBJ_1(audioio_mixer_get_sample_rate_obj, audioio_mixer_obj_get_sample_rate);
194+
MP_DEFINE_CONST_FUN_OBJ_1(audiomixer_mixer_get_sample_rate_obj, audiomixer_mixer_obj_get_sample_rate);
194195

195-
const mp_obj_property_t audioio_mixer_sample_rate_obj = {
196+
const mp_obj_property_t audiomixer_mixer_sample_rate_obj = {
196197
.base.type = &mp_type_property,
197-
.proxy = {(mp_obj_t)&audioio_mixer_get_sample_rate_obj,
198+
.proxy = {(mp_obj_t)&audiomixer_mixer_get_sample_rate_obj,
198199
(mp_obj_t)&mp_const_none_obj,
199200
(mp_obj_t)&mp_const_none_obj},
200201
};
201202

202203
//| .. attribute:: voice
203204
//|
204-
//| A tuple of the mixer's `audioio.MixerVoice` object(s).
205+
//| A tuple of the mixer's `audiomixer.MixerVoice` object(s).
205206
//|
206207
//| .. code-block:: python
207208
//|
208209
//| >>> mixer.voice
209210
//| (<MixerVoice>,)
210-
STATIC mp_obj_t audioio_mixer_obj_get_voice(mp_obj_t self_in) {
211-
audioio_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
211+
STATIC mp_obj_t audiomixer_mixer_obj_get_voice(mp_obj_t self_in) {
212+
audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in);
212213
check_for_deinit(self);
213214
return self->voice_tuple;
214215
}
215-
MP_DEFINE_CONST_FUN_OBJ_1(audioio_mixer_get_voice_obj, audioio_mixer_obj_get_voice);
216+
MP_DEFINE_CONST_FUN_OBJ_1(audiomixer_mixer_get_voice_obj, audiomixer_mixer_obj_get_voice);
216217

217-
const mp_obj_property_t audioio_mixer_voice_obj = {
218+
const mp_obj_property_t audiomixer_mixer_voice_obj = {
218219
.base.type = &mp_type_property,
219-
.proxy = {(mp_obj_t)&audioio_mixer_get_voice_obj,
220+
.proxy = {(mp_obj_t)&audiomixer_mixer_get_voice_obj,
220221
(mp_obj_t)&mp_const_none_obj,
221222
(mp_obj_t)&mp_const_none_obj},
222223
};
223224

224225

225-
STATIC const mp_rom_map_elem_t audioio_mixer_locals_dict_table[] = {
226+
STATIC const mp_rom_map_elem_t audiomixer_mixer_locals_dict_table[] = {
226227
// Methods
227-
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&audioio_mixer_deinit_obj) },
228+
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&audiomixer_mixer_deinit_obj) },
228229
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) },
229-
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&audioio_mixer___exit___obj) },
230+
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&audiomixer_mixer___exit___obj) },
230231

231232
// Properties
232-
{ MP_ROM_QSTR(MP_QSTR_playing), MP_ROM_PTR(&audioio_mixer_playing_obj) },
233-
{ MP_ROM_QSTR(MP_QSTR_sample_rate), MP_ROM_PTR(&audioio_mixer_sample_rate_obj) },
234-
{ MP_ROM_QSTR(MP_QSTR_voice), MP_ROM_PTR(&audioio_mixer_voice_obj) }
233+
{ MP_ROM_QSTR(MP_QSTR_playing), MP_ROM_PTR(&audiomixer_mixer_playing_obj) },
234+
{ MP_ROM_QSTR(MP_QSTR_sample_rate), MP_ROM_PTR(&audiomixer_mixer_sample_rate_obj) },
235+
{ MP_ROM_QSTR(MP_QSTR_voice), MP_ROM_PTR(&audiomixer_mixer_voice_obj) }
235236
};
236-
STATIC MP_DEFINE_CONST_DICT(audioio_mixer_locals_dict, audioio_mixer_locals_dict_table);
237+
STATIC MP_DEFINE_CONST_DICT(audiomixer_mixer_locals_dict, audiomixer_mixer_locals_dict_table);
237238

238-
const mp_obj_type_t audioio_mixer_type = {
239+
const mp_obj_type_t audiomixer_mixer_type = {
239240
{ &mp_type_type },
240241
.name = MP_QSTR_Mixer,
241-
.make_new = audioio_mixer_make_new,
242-
.locals_dict = (mp_obj_dict_t*)&audioio_mixer_locals_dict,
242+
.make_new = audiomixer_mixer_make_new,
243+
.locals_dict = (mp_obj_dict_t*)&audiomixer_mixer_locals_dict,
243244
};
Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,28 @@
2424
* THE SOFTWARE.
2525
*/
2626

27-
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_MIXER_H
28-
#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_MIXER_H
27+
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER_MIXER_H
28+
#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER_MIXER_H
2929

3030
#include "common-hal/microcontroller/Pin.h"
31-
#include "shared-module/audiocore/Mixer.h"
31+
#include "shared-module/audiomixer/Mixer.h"
3232
#include "shared-bindings/audiocore/RawSample.h"
3333

34-
extern const mp_obj_type_t audioio_mixer_type;
35-
extern const mp_obj_type_t audioio_mixervoice_type;
34+
extern const mp_obj_type_t audiomixer_mixer_type;
35+
extern const mp_obj_type_t audiomixer_mixervoice_type;
3636

37-
void common_hal_audioio_mixer_construct(audioio_mixer_obj_t* self,
38-
uint8_t voice_count,
39-
uint32_t buffer_size,
40-
uint8_t bits_per_sample,
41-
bool samples_signed,
42-
uint8_t channel_count,
43-
uint32_t sample_rate);
37+
void common_hal_audiomixer_mixer_construct(audiomixer_mixer_obj_t* self,
38+
uint8_t voice_count,
39+
uint32_t buffer_size,
40+
uint8_t bits_per_sample,
41+
bool samples_signed,
42+
uint8_t channel_count,
43+
uint32_t sample_rate);
4444

45-
void common_hal_audioio_mixer_deinit(audioio_mixer_obj_t* self);
46-
bool common_hal_audioio_mixer_deinited(audioio_mixer_obj_t* self);
45+
void common_hal_audiomixer_mixer_deinit(audiomixer_mixer_obj_t* self);
46+
bool common_hal_audiomixer_mixer_deinited(audiomixer_mixer_obj_t* self);
4747

48-
bool common_hal_audioio_mixer_get_playing(audioio_mixer_obj_t* self);
49-
uint32_t common_hal_audioio_mixer_get_sample_rate(audioio_mixer_obj_t* self);
48+
bool common_hal_audiomixer_mixer_get_playing(audiomixer_mixer_obj_t* self);
49+
uint32_t common_hal_audiomixer_mixer_get_sample_rate(audiomixer_mixer_obj_t* self);
5050

51-
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_MIXER_H
51+
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER_MIXER_H

0 commit comments

Comments
 (0)