arduino-audio-tools/examples/examples-stream/streams-memory_raw-i2s
2023-07-16 05:17:13 +02:00
..
README.md README streams-memory_raw-i2s 2023-07-16 05:17:13 +02:00
StarWars30.h Comment StarWars30.h 2023-04-23 16:52:51 +02:00
streams-memory_raw-i2s.ino README streams-memory_raw-i2s 2023-07-16 05:17:13 +02:00

Digital output via I2S to a external DAC

Somtimes we want to store the sound file in memory. Audacity might help you out here: export with the file name audio.raw as RAW signed 16 bit PCM and copy it to the SD card. In the example I was just using one channel to save memory!.

Then you can convert the file with xxd into a C file that contains the data in an array. In the Sketch I am using the MemoryStream class which turns the array into a Stream.

Please note that you must compile this sketch with the Partition Scheme: Huge App!

External DAC:

DAC

For my tests I am using the 24-bit PCM5102 PCM5102A Stereo DAC Digital-to-analog Converter PLL Voice Module pHAT

I am just using the default pins defined by the framework. However I could change them with the help of the config object. The mute pin can be defined in the constructor of the I2SStream - by not defining anything we use the default which is GPIO23

DAC ESP32
VCC 5V
GND GND
BCK BCK (GPIO14)
DIN OUT (GPIO22)
LCK BCK (GPIO15)
FMT GND
XMT 3V (or another GPIO PIN which is set to high)
  • DMP - De-emphasis control for 44.1kHz sampling rate(1): Off (Low) / On (High)
  • FLT - Filter select : Normal latency (Low) / Low latency (High)
  • SCL - System clock input (probably SCL on your board).
  • FMT - Audio format selection : I2S (Low) / Left justified (High)
  • XMT - Soft mute control(1): Soft mute (Low) / soft un-mute (High)