This component ports Espressif Audio Development Framework to AtomVM, thus enabling audio processing to esp32-based systems powered by AtomVM.
- Clone this repository into atomvm/src/platforms/esp32/components with the required submodules. You can clone with recursive submodules but most submodules are not used and the following commands will save disk space.
cd AtomVM/src/platforms/esp32/components/
git clone https://github.com/pguyot/atomvm_esp_adf.git
cd atomvm_esp_adf/
git submodule update --init components/esp-adf
cd components/esp-adf/
git submodule update --init components/esp-adf-libs/
- Build and flash AtomVM
Espressif Audio Development Framework requires CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY
which you can set using the configuration menu or editing sdkconfig file.
You can use a command sequence such as: (port name depends on OS)
cd AtomVM/src/platforms/esp32/
idf.py set-target esp32
echo CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y >> sdkconfig
idf.py build
idf.py -p /dev/cu.usbmodem14401 flash
You will also need to flash AtomVM core libraries.
Alternatively, you can flash an image generated by the CI of this project.
- Custom builds
You can finely select the ESP ADF elements you need using the configuration menu, under Component config
-> ATOMVM ESP-ADF Configuration
).
Default builds include:
- audio element driver
- audio pipeline
- i2s output stream
- MP3 and AAC decoders
- resample filter
Enabling all available decoders currently yields an image that is too large for AtomVM's default partition map.
cd AtomVM/src/platforms/esp32/
idf.py menuconfig
idf.py build
Do not forget FreeRTOS configENABLE_BACKWARD_COMPATIBILITY
(under Component config
-> FreeRTOS
-> Kernel
).
This project defines esp_adf_*
modules.
You can refer to examples or API documentation.