/atomvm_esp_adf

AtomVM driver for Espressif Audio Development Framework (ESP-ADF)

Primary LanguageCMIT LicenseMIT

AtomVM driver for Espressif Audio Development Framework

This component ports Espressif Audio Development Framework to AtomVM, thus enabling audio processing to esp32-based systems powered by AtomVM.

Build

Installation

  1. 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/
  1. 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.

  1. 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).

Usage

This project defines esp_adf_* modules.

You can refer to examples or API documentation.