Arduino Audio Tools: Audio over Serial

So far I have always preferred to send audio using the networking functionality of the micro-controllers. This is usually fast and reliable. Many examples can be found in my communications examples folder using different protocols. Using Wires But we can also send audio signals over a physical wire. I prefer to use the Serial protocol because this is well supported across all environments. Just to proof the case I had a simple demo which was Read more…

Arduino Audio Tools – A Snapcast Client for Arduino

Snapcast is a multiroom client-server audio player, where all clients are time synchronized with the server to play perfectly synced audio. It’s not a standalone player, but an extension that turns your existing audio player into a Sonos-like multiroom solution. This week I have spent some time to work a new client for Arduino that should integrate with my AudioTools and I have a first DRAFT version that started to work. Arduino Sketch Here is Read more…

Arduino Audio Tools – Playing Audio with Http Post

Recently a user was trying to use http to post some audio to be played on a microcontroller with the help of my Audio Tools. This project contains some simple http server implementation, but only for playing audio that is generated by a microcontroller on a webbrowser. However, quite some time ago, I also implemented some extended server functionality in my TinyHttp project and I am using that one now to demonstrate how this can Read more…

Arduino Audio Tools – Sending Audio to your Mobile Phone using VBAN

For quite some time I was looking for an easy way to send some audio to some mobile devices w/o having to write my own mobile application. That’s when I found VBAN. They have some free app (and some payed ones that are reasonably priced) and publish their protocol. So I added the support for VBAN to my AudioTools library and tested the functionality with an ESP32. Here is the basic test sketch: Arduino Sketch Read more…

Arduino Audio Tools: FAAD AAC Decoder

This week I was looking into the FAAD AAC Decoder and tried to make it work on the ESP32. I was struggling quite a bit with the memory requirements and I could only make it work with a stack of 60k and by using PSRAM. So to fulfill the stack requirement we need to run the decoder in a separate freertos task. The Arduino Sketch Here is a working sketch that streams AAC audio from Read more…

Arduino Audio Tools: UNO R4 & VS1053 MP3 Shield

Today I was receiving my ordered VS1053 MP3 Shield and I was curious about it’s integration with my Arduino Audio Tools Library using the Arduino UNO R4. MP3 Streaming The first thing I tried was the MP3 Streaming sketch. It was working – a kind of. Unfortunately the WIFI is providing the data not fast enough, so it is breaking up badly. What a disappointment: the same sketch is running perfectly on different ESP32 variants Read more…

Arduino UNO R4 – Bar Charts on the LED Matrix

We can try to use a “Bar Chart” to display the result of FFT or the volume, so it is time to have a look at the built in LED Matrix. The basic API to update an LED is as follows: The LED API – Introduction #include “Arduino_LED_Matrix.h” ArduinoLEDMatrix matrix; uint8_t frame[8][12] = {0}; void setup(){ matrix.begin(); frame[7][0] = true; // acivate LED at 0,7 (left lower corner) matrix.renderBitmap(frame, 8, 12); } void loop(){} I have Read more…

Arduino UNO R4: FFT using CMSIS DSP

In my Arduino Audio Tools library I am providing a common API to do FFT against different implementations. I was already testing some of the implementations. On ARM microcontrollers we can use the CMSIS DSP library which usually comes automatically with the Arduino Core. This is not the case for the Arduino UNO R4, but we can install the Arduino CMSIS DSP library with the Arduino library manager. Here is the adapted test sketch that Read more…

ESP32: Mixing A2DP with a Sine Signal

Today I got very upset by a discussion where a user replaced the original question with a misleading conclusion that mixing an A2DP sink with a sine signal was not possible! Unfortunately he also ignored some helpful comments by some other users. So in order to avoid any confusion I had to delete the whole discussion! Mixing the output from an A2DP sink with a sine signal can be done not only very easily but Read more…

Under the Hood: Arduino UNO R4 – Timers

I was wondering how to use the timers in the new Arduino UNO R4. Unfortunately I did not find any documentation, so I decided to document my findings here. The UNO R4 has two timer peripherals: the General PWM Timer (GPT) and the Asynchronous General Purpose Timer (AGT). There are only 2 16 bit AGT timers (but one is already used to provide the Arduino millis() and microseconds() methods) and there are 7 GPT timers Read more…