Merge pull request #2010 from jepler/audiocore
audiocore: Factor from audioio
This commit is contained in:
commit
d99d3bd471
@ -29,8 +29,8 @@
|
|||||||
#include "samd/events.h"
|
#include "samd/events.h"
|
||||||
#include "samd/dma.h"
|
#include "samd/dma.h"
|
||||||
|
|
||||||
#include "shared-bindings/audioio/RawSample.h"
|
#include "shared-bindings/audiocore/RawSample.h"
|
||||||
#include "shared-bindings/audioio/WaveFile.h"
|
#include "shared-bindings/audiocore/WaveFile.h"
|
||||||
|
|
||||||
#include "py/mpstate.h"
|
#include "py/mpstate.h"
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
|
@ -29,8 +29,8 @@
|
|||||||
|
|
||||||
#include "extmod/vfs_fat.h"
|
#include "extmod/vfs_fat.h"
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
#include "shared-module/audioio/RawSample.h"
|
#include "shared-module/audiocore/RawSample.h"
|
||||||
#include "shared-module/audioio/WaveFile.h"
|
#include "shared-module/audiocore/WaveFile.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
mp_obj_t sample;
|
mp_obj_t sample;
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "common-hal/audiobusio/I2SOut.h"
|
#include "common-hal/audiobusio/I2SOut.h"
|
||||||
#include "shared-bindings/audiobusio/I2SOut.h"
|
#include "shared-bindings/audiobusio/I2SOut.h"
|
||||||
#include "shared-bindings/audioio/RawSample.h"
|
#include "shared-bindings/audiocore/RawSample.h"
|
||||||
#include "shared-bindings/microcontroller/Pin.h"
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
#include "supervisor/shared/translate.h"
|
#include "supervisor/shared/translate.h"
|
||||||
|
|
||||||
|
@ -108,6 +108,9 @@ endif
|
|||||||
ifeq ($(CIRCUITPY_AUDIOIO),1)
|
ifeq ($(CIRCUITPY_AUDIOIO),1)
|
||||||
SRC_PATTERNS += audioio/%
|
SRC_PATTERNS += audioio/%
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(CIRCUITPY_AUDIOCORE),1)
|
||||||
|
SRC_PATTERNS += audiocore/%
|
||||||
|
endif
|
||||||
ifeq ($(CIRCUITPY_BITBANGIO),1)
|
ifeq ($(CIRCUITPY_BITBANGIO),1)
|
||||||
SRC_PATTERNS += bitbangio/%
|
SRC_PATTERNS += bitbangio/%
|
||||||
endif
|
endif
|
||||||
@ -301,9 +304,10 @@ $(filter $(SRC_PATTERNS), \
|
|||||||
_stage/Text.c \
|
_stage/Text.c \
|
||||||
_stage/__init__.c \
|
_stage/__init__.c \
|
||||||
audioio/__init__.c \
|
audioio/__init__.c \
|
||||||
audioio/Mixer.c \
|
audiocore/__init__.c \
|
||||||
audioio/RawSample.c \
|
audiocore/Mixer.c \
|
||||||
audioio/WaveFile.c \
|
audiocore/RawSample.c \
|
||||||
|
audiocore/WaveFile.c \
|
||||||
bitbangio/I2C.c \
|
bitbangio/I2C.c \
|
||||||
bitbangio/OneWire.c \
|
bitbangio/OneWire.c \
|
||||||
bitbangio/SPI.c \
|
bitbangio/SPI.c \
|
||||||
|
@ -230,6 +230,13 @@ extern const struct _mp_obj_module_t audiobusio_module;
|
|||||||
#define AUDIOBUSIO_MODULE
|
#define AUDIOBUSIO_MODULE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CIRCUITPY_AUDIOCORE
|
||||||
|
#define AUDIOCORE_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_audiocore), (mp_obj_t)&audiocore_module },
|
||||||
|
extern const struct _mp_obj_module_t audiocore_module;
|
||||||
|
#else
|
||||||
|
#define AUDIOCORE_MODULE
|
||||||
|
#endif
|
||||||
|
|
||||||
#if CIRCUITPY_AUDIOIO
|
#if CIRCUITPY_AUDIOIO
|
||||||
#define AUDIOIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_audioio), (mp_obj_t)&audioio_module },
|
#define AUDIOIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_audioio), (mp_obj_t)&audioio_module },
|
||||||
extern const struct _mp_obj_module_t audioio_module;
|
extern const struct _mp_obj_module_t audioio_module;
|
||||||
@ -564,6 +571,7 @@ extern const struct _mp_obj_module_t ustack_module;
|
|||||||
#define MICROPY_PORT_BUILTIN_MODULES_STRONG_LINKS \
|
#define MICROPY_PORT_BUILTIN_MODULES_STRONG_LINKS \
|
||||||
ANALOGIO_MODULE \
|
ANALOGIO_MODULE \
|
||||||
AUDIOBUSIO_MODULE \
|
AUDIOBUSIO_MODULE \
|
||||||
|
AUDIOCORE_MODULE \
|
||||||
AUDIOIO_MODULE \
|
AUDIOIO_MODULE \
|
||||||
BITBANGIO_MODULE \
|
BITBANGIO_MODULE \
|
||||||
BLEIO_MODULE \
|
BLEIO_MODULE \
|
||||||
|
@ -74,6 +74,11 @@ CIRCUITPY_AUDIOIO = $(CIRCUITPY_FULL_BUILD)
|
|||||||
endif
|
endif
|
||||||
CFLAGS += -DCIRCUITPY_AUDIOIO=$(CIRCUITPY_AUDIOIO)
|
CFLAGS += -DCIRCUITPY_AUDIOIO=$(CIRCUITPY_AUDIOIO)
|
||||||
|
|
||||||
|
ifndef CIRCUITPY_AUDIOCORE
|
||||||
|
CIRCUITPY_AUDIOCORE = $(CIRCUITPY_AUDIOIO)
|
||||||
|
endif
|
||||||
|
CFLAGS += -DCIRCUITPY_AUDIOCORE=$(CIRCUITPY_AUDIOCORE)
|
||||||
|
|
||||||
ifndef CIRCUITPY_BITBANGIO
|
ifndef CIRCUITPY_BITBANGIO
|
||||||
CIRCUITPY_BITBANGIO = $(CIRCUITPY_FULL_BUILD)
|
CIRCUITPY_BITBANGIO = $(CIRCUITPY_FULL_BUILD)
|
||||||
endif
|
endif
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
#include "shared-bindings/audioio/Mixer.h"
|
#include "shared-bindings/audiocore/Mixer.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
@ -32,7 +32,7 @@
|
|||||||
#include "py/objproperty.h"
|
#include "py/objproperty.h"
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "shared-bindings/microcontroller/Pin.h"
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
#include "shared-bindings/audioio/RawSample.h"
|
#include "shared-bindings/audiocore/RawSample.h"
|
||||||
#include "shared-bindings/util.h"
|
#include "shared-bindings/util.h"
|
||||||
#include "supervisor/shared/translate.h"
|
#include "supervisor/shared/translate.h"
|
||||||
|
|
@ -28,8 +28,8 @@
|
|||||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_MIXER_H
|
#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_MIXER_H
|
||||||
|
|
||||||
#include "common-hal/microcontroller/Pin.h"
|
#include "common-hal/microcontroller/Pin.h"
|
||||||
#include "shared-module/audioio/Mixer.h"
|
#include "shared-module/audiocore/Mixer.h"
|
||||||
#include "shared-bindings/audioio/RawSample.h"
|
#include "shared-bindings/audiocore/RawSample.h"
|
||||||
|
|
||||||
extern const mp_obj_type_t audioio_mixer_type;
|
extern const mp_obj_type_t audioio_mixer_type;
|
||||||
|
|
@ -31,8 +31,8 @@
|
|||||||
#include "py/objproperty.h"
|
#include "py/objproperty.h"
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "shared-bindings/microcontroller/Pin.h"
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
#include "shared-bindings/audioio/AudioOut.h"
|
|
||||||
#include "shared-bindings/util.h"
|
#include "shared-bindings/util.h"
|
||||||
|
#include "shared-bindings/audiocore/RawSample.h"
|
||||||
#include "supervisor/shared/translate.h"
|
#include "supervisor/shared/translate.h"
|
||||||
|
|
||||||
//| .. currentmodule:: audioio
|
//| .. currentmodule:: audioio
|
@ -27,9 +27,8 @@
|
|||||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_RAWSAMPLE_H
|
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_RAWSAMPLE_H
|
||||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_RAWSAMPLE_H
|
#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_RAWSAMPLE_H
|
||||||
|
|
||||||
#include "common-hal/audioio/AudioOut.h"
|
|
||||||
#include "common-hal/microcontroller/Pin.h"
|
#include "common-hal/microcontroller/Pin.h"
|
||||||
#include "shared-module/audioio/RawSample.h"
|
#include "shared-module/audiocore/RawSample.h"
|
||||||
|
|
||||||
extern const mp_obj_type_t audioio_rawsample_type;
|
extern const mp_obj_type_t audioio_rawsample_type;
|
||||||
|
|
@ -29,7 +29,7 @@
|
|||||||
#include "lib/utils/context_manager_helpers.h"
|
#include "lib/utils/context_manager_helpers.h"
|
||||||
#include "py/objproperty.h"
|
#include "py/objproperty.h"
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "shared-bindings/audioio/WaveFile.h"
|
#include "shared-bindings/audiocore/WaveFile.h"
|
||||||
#include "shared-bindings/util.h"
|
#include "shared-bindings/util.h"
|
||||||
#include "supervisor/shared/translate.h"
|
#include "supervisor/shared/translate.h"
|
||||||
|
|
@ -27,10 +27,11 @@
|
|||||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_WAVEFILE_H
|
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_WAVEFILE_H
|
||||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_WAVEFILE_H
|
#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_WAVEFILE_H
|
||||||
|
|
||||||
#include "common-hal/audioio/AudioOut.h"
|
#include "py/obj.h"
|
||||||
#include "common-hal/microcontroller/Pin.h"
|
|
||||||
#include "extmod/vfs_fat.h"
|
#include "extmod/vfs_fat.h"
|
||||||
|
|
||||||
|
#include "shared-module/audiocore/WaveFile.h"
|
||||||
|
|
||||||
extern const mp_obj_type_t audioio_wavefile_type;
|
extern const mp_obj_type_t audioio_wavefile_type;
|
||||||
|
|
||||||
void common_hal_audioio_wavefile_construct(audioio_wavefile_obj_t* self,
|
void common_hal_audioio_wavefile_construct(audioio_wavefile_obj_t* self,
|
69
shared-bindings/audiocore/__init__.c
Normal file
69
shared-bindings/audiocore/__init__.c
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "py/obj.h"
|
||||||
|
#include "py/runtime.h"
|
||||||
|
|
||||||
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
|
#include "shared-bindings/audiocore/__init__.h"
|
||||||
|
#include "shared-bindings/audiocore/Mixer.h"
|
||||||
|
#include "shared-bindings/audiocore/RawSample.h"
|
||||||
|
#include "shared-bindings/audiocore/WaveFile.h"
|
||||||
|
|
||||||
|
//| :mod:`audiocore` --- Support for audio samples and mixer
|
||||||
|
//| ========================================================
|
||||||
|
//|
|
||||||
|
//| .. module:: audiocore
|
||||||
|
//| :synopsis: Support for audio samples and mixer
|
||||||
|
//| :platform: SAMD21
|
||||||
|
//|
|
||||||
|
//| The `audiocore` module contains core classes for audio IO
|
||||||
|
//|
|
||||||
|
//| Libraries
|
||||||
|
//|
|
||||||
|
//| .. toctree::
|
||||||
|
//| :maxdepth: 3
|
||||||
|
//|
|
||||||
|
//| Mixer
|
||||||
|
//| RawSample
|
||||||
|
//| WaveFile
|
||||||
|
//|
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t audiocore_module_globals_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audiocore) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_Mixer), MP_ROM_PTR(&audioio_mixer_type) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RawSample), MP_ROM_PTR(&audioio_rawsample_type) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_WaveFile), MP_ROM_PTR(&audioio_wavefile_type) },
|
||||||
|
};
|
||||||
|
|
||||||
|
STATIC MP_DEFINE_CONST_DICT(audiocore_module_globals, audiocore_module_globals_table);
|
||||||
|
|
||||||
|
const mp_obj_module_t audiocore_module = {
|
||||||
|
.base = { &mp_type_module },
|
||||||
|
.globals = (mp_obj_dict_t*)&audiocore_module_globals,
|
||||||
|
};
|
34
shared-bindings/audiocore/__init__.h
Normal file
34
shared-bindings/audiocore/__init__.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOCORE___INIT___H
|
||||||
|
#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOCORE___INIT___H
|
||||||
|
|
||||||
|
#include "py/obj.h"
|
||||||
|
|
||||||
|
// Nothing now.
|
||||||
|
|
||||||
|
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOCORE___INIT___H
|
@ -32,7 +32,7 @@
|
|||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "shared-bindings/microcontroller/Pin.h"
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
#include "shared-bindings/audioio/AudioOut.h"
|
#include "shared-bindings/audioio/AudioOut.h"
|
||||||
#include "shared-bindings/audioio/RawSample.h"
|
#include "shared-bindings/audiocore/RawSample.h"
|
||||||
#include "shared-bindings/util.h"
|
#include "shared-bindings/util.h"
|
||||||
#include "supervisor/shared/translate.h"
|
#include "supervisor/shared/translate.h"
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#include "common-hal/audioio/AudioOut.h"
|
#include "common-hal/audioio/AudioOut.h"
|
||||||
#include "common-hal/microcontroller/Pin.h"
|
#include "common-hal/microcontroller/Pin.h"
|
||||||
#include "shared-bindings/audioio/RawSample.h"
|
#include "shared-bindings/audiocore/RawSample.h"
|
||||||
|
|
||||||
extern const mp_obj_type_t audioio_audioout_type;
|
extern const mp_obj_type_t audioio_audioout_type;
|
||||||
|
|
||||||
|
@ -32,9 +32,6 @@
|
|||||||
#include "shared-bindings/microcontroller/Pin.h"
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
#include "shared-bindings/audioio/__init__.h"
|
#include "shared-bindings/audioio/__init__.h"
|
||||||
#include "shared-bindings/audioio/AudioOut.h"
|
#include "shared-bindings/audioio/AudioOut.h"
|
||||||
#include "shared-bindings/audioio/Mixer.h"
|
|
||||||
#include "shared-bindings/audioio/RawSample.h"
|
|
||||||
#include "shared-bindings/audioio/WaveFile.h"
|
|
||||||
|
|
||||||
//| :mod:`audioio` --- Support for audio input and output
|
//| :mod:`audioio` --- Support for audio input and output
|
||||||
//| ======================================================
|
//| ======================================================
|
||||||
@ -51,22 +48,19 @@
|
|||||||
//| :maxdepth: 3
|
//| :maxdepth: 3
|
||||||
//|
|
//|
|
||||||
//| AudioOut
|
//| AudioOut
|
||||||
//| Mixer
|
|
||||||
//| RawSample
|
|
||||||
//| WaveFile
|
|
||||||
//|
|
//|
|
||||||
//| All classes change hardware state and should be deinitialized when they
|
//| All classes change hardware state and should be deinitialized when they
|
||||||
//| are no longer needed if the program continues after use. To do so, either
|
//| are no longer needed if the program continues after use. To do so, either
|
||||||
//| call :py:meth:`!deinit` or use a context manager. See
|
//| call :py:meth:`!deinit` or use a context manager. See
|
||||||
//| :ref:`lifetime-and-contextmanagers` for more info.
|
//| :ref:`lifetime-and-contextmanagers` for more info.
|
||||||
//|
|
//|
|
||||||
|
//| Since CircuitPython 5, `Mixer`, `RawSample` and `WaveFile` are moved
|
||||||
|
//| to :mod:`audiocore`.
|
||||||
|
//|
|
||||||
|
|
||||||
STATIC const mp_rom_map_elem_t audioio_module_globals_table[] = {
|
STATIC const mp_rom_map_elem_t audioio_module_globals_table[] = {
|
||||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audioio) },
|
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audioio) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_AudioOut), MP_ROM_PTR(&audioio_audioout_type) },
|
{ MP_ROM_QSTR(MP_QSTR_AudioOut), MP_ROM_PTR(&audioio_audioout_type) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_Mixer), MP_ROM_PTR(&audioio_mixer_type) },
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_RawSample), MP_ROM_PTR(&audioio_rawsample_type) },
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_WaveFile), MP_ROM_PTR(&audioio_wavefile_type) },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
STATIC MP_DEFINE_CONST_DICT(audioio_module_globals, audioio_module_globals_table);
|
STATIC MP_DEFINE_CONST_DICT(audioio_module_globals, audioio_module_globals_table);
|
||||||
|
@ -36,6 +36,7 @@ Module Supported Ports
|
|||||||
`analogio` **All Supported**
|
`analogio` **All Supported**
|
||||||
`audiobusio` **SAMD/SAMD Express**
|
`audiobusio` **SAMD/SAMD Express**
|
||||||
`audioio` **SAMD Express**
|
`audioio` **SAMD Express**
|
||||||
|
`audiocore` **All with audioio**
|
||||||
`binascii` **ESP8266**
|
`binascii` **ESP8266**
|
||||||
`bitbangio` **SAMD Express, ESP8266**
|
`bitbangio` **SAMD Express, ESP8266**
|
||||||
`board` **All Supported**
|
`board` **All Supported**
|
||||||
|
@ -24,13 +24,13 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "shared-bindings/audioio/Mixer.h"
|
#include "shared-bindings/audiocore/Mixer.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "shared-module/audioio/__init__.h"
|
#include "shared-module/audiocore/__init__.h"
|
||||||
#include "shared-module/audioio/RawSample.h"
|
#include "shared-module/audiocore/RawSample.h"
|
||||||
|
|
||||||
void common_hal_audioio_mixer_construct(audioio_mixer_obj_t* self,
|
void common_hal_audioio_mixer_construct(audioio_mixer_obj_t* self,
|
||||||
uint8_t voice_count,
|
uint8_t voice_count,
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
|
|
||||||
#include "shared-module/audioio/__init__.h"
|
#include "shared-module/audiocore/__init__.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
mp_obj_t sample;
|
mp_obj_t sample;
|
@ -24,11 +24,11 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "shared-bindings/audioio/RawSample.h"
|
#include "shared-bindings/audiocore/RawSample.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "shared-module/audioio/RawSample.h"
|
#include "shared-module/audiocore/RawSample.h"
|
||||||
|
|
||||||
void common_hal_audioio_rawsample_construct(audioio_rawsample_obj_t* self,
|
void common_hal_audioio_rawsample_construct(audioio_rawsample_obj_t* self,
|
||||||
uint8_t* buffer,
|
uint8_t* buffer,
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
|
|
||||||
#include "shared-module/audioio/__init__.h"
|
#include "shared-module/audiocore/__init__.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
mp_obj_base_t base;
|
mp_obj_base_t base;
|
@ -24,7 +24,7 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "shared-bindings/audioio/WaveFile.h"
|
#include "shared-bindings/audiocore/WaveFile.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -32,7 +32,7 @@
|
|||||||
#include "py/mperrno.h"
|
#include "py/mperrno.h"
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
|
|
||||||
#include "shared-module/audioio/WaveFile.h"
|
#include "shared-module/audiocore/WaveFile.h"
|
||||||
#include "supervisor/shared/translate.h"
|
#include "supervisor/shared/translate.h"
|
||||||
|
|
||||||
struct wave_format_chunk {
|
struct wave_format_chunk {
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
|
|
||||||
#include "shared-module/audioio/__init__.h"
|
#include "shared-module/audiocore/__init__.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
mp_obj_base_t base;
|
mp_obj_base_t base;
|
125
shared-module/audiocore/__init__.c
Normal file
125
shared-module/audiocore/__init__.c
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2018 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "shared-module/audioio/__init__.h"
|
||||||
|
|
||||||
|
#include "py/obj.h"
|
||||||
|
#include "shared-bindings/audiocore/Mixer.h"
|
||||||
|
#include "shared-bindings/audiocore/RawSample.h"
|
||||||
|
#include "shared-bindings/audiocore/WaveFile.h"
|
||||||
|
#include "shared-module/audiocore/Mixer.h"
|
||||||
|
#include "shared-module/audiocore/RawSample.h"
|
||||||
|
#include "shared-module/audiocore/WaveFile.h"
|
||||||
|
|
||||||
|
uint32_t audiosample_sample_rate(mp_obj_t sample_obj) {
|
||||||
|
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
||||||
|
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return sample->sample_rate;
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
||||||
|
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return file->sample_rate;
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
||||||
|
audioio_mixer_obj_t* mixer = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return mixer->sample_rate;
|
||||||
|
}
|
||||||
|
return 16000;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t audiosample_bits_per_sample(mp_obj_t sample_obj) {
|
||||||
|
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
||||||
|
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return sample->bits_per_sample;
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
||||||
|
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return file->bits_per_sample;
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
||||||
|
audioio_mixer_obj_t* mixer = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return mixer->bits_per_sample;
|
||||||
|
}
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t audiosample_channel_count(mp_obj_t sample_obj) {
|
||||||
|
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
||||||
|
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return sample->channel_count;
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
||||||
|
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return file->channel_count;
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
||||||
|
audioio_mixer_obj_t* mixer = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return mixer->channel_count;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void audiosample_reset_buffer(mp_obj_t sample_obj, bool single_channel, uint8_t audio_channel) {
|
||||||
|
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
||||||
|
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
audioio_rawsample_reset_buffer(sample, single_channel, audio_channel);
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
||||||
|
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
audioio_wavefile_reset_buffer(file, single_channel, audio_channel);
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
||||||
|
audioio_mixer_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
audioio_mixer_reset_buffer(file, single_channel, audio_channel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
audioio_get_buffer_result_t audiosample_get_buffer(mp_obj_t sample_obj,
|
||||||
|
bool single_channel,
|
||||||
|
uint8_t channel,
|
||||||
|
uint8_t** buffer, uint32_t* buffer_length) {
|
||||||
|
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
||||||
|
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return audioio_rawsample_get_buffer(sample, single_channel, channel, buffer, buffer_length);
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
||||||
|
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return audioio_wavefile_get_buffer(file, single_channel, channel, buffer, buffer_length);
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
||||||
|
audioio_mixer_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
return audioio_mixer_get_buffer(file, single_channel, channel, buffer, buffer_length);
|
||||||
|
}
|
||||||
|
return GET_BUFFER_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void audiosample_get_buffer_structure(mp_obj_t sample_obj, bool single_channel,
|
||||||
|
bool* single_buffer, bool* samples_signed,
|
||||||
|
uint32_t* max_buffer_length, uint8_t* spacing) {
|
||||||
|
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
||||||
|
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
audioio_rawsample_get_buffer_structure(sample, single_channel, single_buffer,
|
||||||
|
samples_signed, max_buffer_length, spacing);
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
||||||
|
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
audioio_wavefile_get_buffer_structure(file, single_channel, single_buffer, samples_signed,
|
||||||
|
max_buffer_length, spacing);
|
||||||
|
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
||||||
|
audioio_mixer_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
||||||
|
audioio_mixer_get_buffer_structure(file, single_channel, single_buffer, samples_signed,
|
||||||
|
max_buffer_length, spacing);
|
||||||
|
}
|
||||||
|
}
|
53
shared-module/audiocore/__init__.h
Normal file
53
shared-module/audiocore/__init__.h
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOCORE__INIT__H
|
||||||
|
#define MICROPY_INCLUDED_SHARED_MODULE_AUDIOCORE__INIT__H
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "py/obj.h"
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
GET_BUFFER_DONE, // No more data to read
|
||||||
|
GET_BUFFER_MORE_DATA, // More data to read.
|
||||||
|
GET_BUFFER_ERROR, // Error while reading data.
|
||||||
|
} audioio_get_buffer_result_t;
|
||||||
|
|
||||||
|
uint32_t audiosample_sample_rate(mp_obj_t sample_obj);
|
||||||
|
uint8_t audiosample_bits_per_sample(mp_obj_t sample_obj);
|
||||||
|
uint8_t audiosample_channel_count(mp_obj_t sample_obj);
|
||||||
|
void audiosample_reset_buffer(mp_obj_t sample_obj, bool single_channel, uint8_t audio_channel);
|
||||||
|
audioio_get_buffer_result_t audiosample_get_buffer(mp_obj_t sample_obj,
|
||||||
|
bool single_channel,
|
||||||
|
uint8_t channel,
|
||||||
|
uint8_t** buffer, uint32_t* buffer_length);
|
||||||
|
void audiosample_get_buffer_structure(mp_obj_t sample_obj, bool single_channel,
|
||||||
|
bool* single_buffer, bool* samples_signed,
|
||||||
|
uint32_t* max_buffer_length, uint8_t* spacing);
|
||||||
|
|
||||||
|
#endif // MICROPY_INCLUDED_SHARED_MODULE_AUDIOCORE__INIT__H
|
@ -1,125 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of the MicroPython project, http://micropython.org/
|
|
||||||
*
|
|
||||||
* The MIT License (MIT)
|
|
||||||
*
|
|
||||||
* Copyright (c) 2018 Scott Shawcroft for Adafruit Industries
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
* THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "shared-module/audioio/__init__.h"
|
|
||||||
|
|
||||||
#include "py/obj.h"
|
|
||||||
#include "shared-bindings/audioio/Mixer.h"
|
|
||||||
#include "shared-bindings/audioio/RawSample.h"
|
|
||||||
#include "shared-bindings/audioio/WaveFile.h"
|
|
||||||
#include "shared-module/audioio/Mixer.h"
|
|
||||||
#include "shared-module/audioio/RawSample.h"
|
|
||||||
#include "shared-module/audioio/WaveFile.h"
|
|
||||||
|
|
||||||
uint32_t audiosample_sample_rate(mp_obj_t sample_obj) {
|
|
||||||
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
|
||||||
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return sample->sample_rate;
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
|
||||||
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return file->sample_rate;
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
|
||||||
audioio_mixer_obj_t* mixer = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return mixer->sample_rate;
|
|
||||||
}
|
|
||||||
return 16000;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t audiosample_bits_per_sample(mp_obj_t sample_obj) {
|
|
||||||
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
|
||||||
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return sample->bits_per_sample;
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
|
||||||
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return file->bits_per_sample;
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
|
||||||
audioio_mixer_obj_t* mixer = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return mixer->bits_per_sample;
|
|
||||||
}
|
|
||||||
return 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t audiosample_channel_count(mp_obj_t sample_obj) {
|
|
||||||
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
|
||||||
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return sample->channel_count;
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
|
||||||
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return file->channel_count;
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
|
||||||
audioio_mixer_obj_t* mixer = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return mixer->channel_count;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void audiosample_reset_buffer(mp_obj_t sample_obj, bool single_channel, uint8_t audio_channel) {
|
|
||||||
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
|
||||||
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
audioio_rawsample_reset_buffer(sample, single_channel, audio_channel);
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
|
||||||
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
audioio_wavefile_reset_buffer(file, single_channel, audio_channel);
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
|
||||||
audioio_mixer_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
audioio_mixer_reset_buffer(file, single_channel, audio_channel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
audioio_get_buffer_result_t audiosample_get_buffer(mp_obj_t sample_obj,
|
|
||||||
bool single_channel,
|
|
||||||
uint8_t channel,
|
|
||||||
uint8_t** buffer, uint32_t* buffer_length) {
|
|
||||||
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
|
||||||
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return audioio_rawsample_get_buffer(sample, single_channel, channel, buffer, buffer_length);
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
|
||||||
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return audioio_wavefile_get_buffer(file, single_channel, channel, buffer, buffer_length);
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
|
||||||
audioio_mixer_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
return audioio_mixer_get_buffer(file, single_channel, channel, buffer, buffer_length);
|
|
||||||
}
|
|
||||||
return GET_BUFFER_DONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void audiosample_get_buffer_structure(mp_obj_t sample_obj, bool single_channel,
|
|
||||||
bool* single_buffer, bool* samples_signed,
|
|
||||||
uint32_t* max_buffer_length, uint8_t* spacing) {
|
|
||||||
if (MP_OBJ_IS_TYPE(sample_obj, &audioio_rawsample_type)) {
|
|
||||||
audioio_rawsample_obj_t* sample = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
audioio_rawsample_get_buffer_structure(sample, single_channel, single_buffer,
|
|
||||||
samples_signed, max_buffer_length, spacing);
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_wavefile_type)) {
|
|
||||||
audioio_wavefile_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
audioio_wavefile_get_buffer_structure(file, single_channel, single_buffer, samples_signed,
|
|
||||||
max_buffer_length, spacing);
|
|
||||||
} else if (MP_OBJ_IS_TYPE(sample_obj, &audioio_mixer_type)) {
|
|
||||||
audioio_mixer_obj_t* file = MP_OBJ_TO_PTR(sample_obj);
|
|
||||||
audioio_mixer_get_buffer_structure(file, single_channel, single_buffer, samples_signed,
|
|
||||||
max_buffer_length, spacing);
|
|
||||||
}
|
|
||||||
}
|
|
@ -27,27 +27,6 @@
|
|||||||
#ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO__INIT__H
|
#ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO__INIT__H
|
||||||
#define MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO__INIT__H
|
#define MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO__INIT__H
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include "shared-module/audiocore/__init__.h"
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#include "py/obj.h"
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
GET_BUFFER_DONE, // No more data to read
|
|
||||||
GET_BUFFER_MORE_DATA, // More data to read.
|
|
||||||
GET_BUFFER_ERROR, // Error while reading data.
|
|
||||||
} audioio_get_buffer_result_t;
|
|
||||||
|
|
||||||
uint32_t audiosample_sample_rate(mp_obj_t sample_obj);
|
|
||||||
uint8_t audiosample_bits_per_sample(mp_obj_t sample_obj);
|
|
||||||
uint8_t audiosample_channel_count(mp_obj_t sample_obj);
|
|
||||||
void audiosample_reset_buffer(mp_obj_t sample_obj, bool single_channel, uint8_t audio_channel);
|
|
||||||
audioio_get_buffer_result_t audiosample_get_buffer(mp_obj_t sample_obj,
|
|
||||||
bool single_channel,
|
|
||||||
uint8_t channel,
|
|
||||||
uint8_t** buffer, uint32_t* buffer_length);
|
|
||||||
void audiosample_get_buffer_structure(mp_obj_t sample_obj, bool single_channel,
|
|
||||||
bool* single_buffer, bool* samples_signed,
|
|
||||||
uint32_t* max_buffer_length, uint8_t* spacing);
|
|
||||||
|
|
||||||
#endif // MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO__INIT__H
|
#endif // MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO__INIT__H
|
||||||
|
Loading…
Reference in New Issue
Block a user