From feef1778581e0811bc07da3aa3dc39744187b05b Mon Sep 17 00:00:00 2001 From: dean Date: Thu, 15 Nov 2018 15:04:11 -0500 Subject: DM: in progress mixer voice --- shared-module/audioio/Mixer.c | 13 +++++++++++++ shared-module/audioio/Mixer.h | 2 ++ shared-module/audioio/MixerVoice.c | 2 +- shared-module/audioio/MixerVoice.h | 14 ++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) (limited to 'shared-module') diff --git a/shared-module/audioio/Mixer.c b/shared-module/audioio/Mixer.c index 4797f4adc..28815470d 100644 --- a/shared-module/audioio/Mixer.c +++ b/shared-module/audioio/Mixer.c @@ -59,10 +59,12 @@ void common_hal_audioio_mixer_construct(audioio_mixer_obj_t* self, self->sample_rate = sample_rate; self->voice_count = voice_count; +#if 0 for (uint8_t i = 0; i < self->voice_count; i++) { self->voice[i].sample = NULL; self->voice[i].gain = ((1<<15)-1); } +#endif } void common_hal_audioio_mixer_deinit(audioio_mixer_obj_t* self) { @@ -100,6 +102,7 @@ void common_hal_audioio_mixer_play(audioio_mixer_obj_t* self, mp_obj_t sample, u if (samples_signed != self->samples_signed) { mp_raise_ValueError(translate("The sample's signedness does not match the mixer's")); } +#if 0 audioio_mixervoice_obj_t* voice = &self->voice[v]; voice->sample = sample; voice->loop = loop; @@ -109,27 +112,35 @@ void common_hal_audioio_mixer_play(audioio_mixer_obj_t* self, mp_obj_t sample, u // Track length in terms of words. voice->buffer_length /= sizeof(uint32_t); voice->more_data = result == GET_BUFFER_MORE_DATA; + +#endif } void common_hal_audioio_mixer_stop_voice(audioio_mixer_obj_t* self, uint8_t voice) { +#if 0 self->voice[voice].sample = NULL; +#endif } bool common_hal_audioio_mixer_get_playing(audioio_mixer_obj_t* self) { +#if 0 for (int32_t v = 0; v < self->voice_count; v++) { if (self->voice[v].sample != NULL) { return true; } } +#endif return false; } void audioio_mixer_reset_buffer(audioio_mixer_obj_t* self, bool single_channel, uint8_t channel) { +#if 0 for (int32_t i = 0; i < self->voice_count; i++) { self->voice[i].sample = NULL; } +#endif } uint32_t add8signed(uint32_t a, uint32_t b) { @@ -283,6 +294,7 @@ audioio_get_buffer_result_t audioio_mixer_get_buffer(audioio_mixer_obj_t* self, uint8_t channel, uint8_t** buffer, uint32_t* buffer_length) { +#if 0 if (!single_channel) { channel = 0; } @@ -403,6 +415,7 @@ audioio_get_buffer_result_t audioio_mixer_get_buffer(audioio_mixer_obj_t* self, self->right_read_count += 1; *buffer = *buffer + self->bits_per_sample / 8; } +#endif return GET_BUFFER_MORE_DATA; } diff --git a/shared-module/audioio/Mixer.h b/shared-module/audioio/Mixer.h index 40b6df2fe..083a3ce7e 100644 --- a/shared-module/audioio/Mixer.h +++ b/shared-module/audioio/Mixer.h @@ -28,6 +28,7 @@ #define MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_MIXER_H #include "py/obj.h" +#include "py/objtuple.h" #include "shared-module/audioio/__init__.h" #include "shared-bindings/audioio/MixerVoice.h" @@ -48,6 +49,7 @@ typedef struct { uint32_t right_read_count; uint8_t voice_count; + mp_obj_tuple_t *voice_tuple; mp_obj_t voice[]; } audioio_mixer_obj_t; diff --git a/shared-module/audioio/MixerVoice.c b/shared-module/audioio/MixerVoice.c index ff40da34c..28df1c5d1 100644 --- a/shared-module/audioio/MixerVoice.c +++ b/shared-module/audioio/MixerVoice.c @@ -13,6 +13,6 @@ #include "shared-module/audioio/__init__.h" #include "shared-module/audioio/RawSample.h" -void common_hal_audioio_mixervoice_set_gain(audioio_mixer_obj_t* self, float gain) { +void common_hal_audioio_mixervoice_set_gain(audioio_mixervoice_obj_t* self, float gain) { self->gain = gain * ((1 << 15)-1); } diff --git a/shared-module/audioio/MixerVoice.h b/shared-module/audioio/MixerVoice.h index c04e8ef24..b917829dd 100644 --- a/shared-module/audioio/MixerVoice.h +++ b/shared-module/audioio/MixerVoice.h @@ -8,5 +8,19 @@ #ifndef SHARED_MODULE_AUDIOIO_MIXERVOICE_H_ #define SHARED_MODULE_AUDIOIO_MIXERVOICE_H_ +#include "py/obj.h" + +#include "shared-module/audioio/__init__.h" + +typedef struct { + mp_obj_base_t base; + mp_obj_t sample; + bool loop; + bool more_data; + uint32_t* remaining_buffer; + uint32_t buffer_length; + int16_t gain; +} audioio_mixervoice_obj_t; + #endif /* SHARED_MODULE_AUDIOIO_MIXERVOICE_H_ */ -- cgit v1.2.3