Back to Basics – Audio Output on the Raspberry Pico using PWM

In one of my past Blogs I have described how to implement a simple tone generator using a Repeating Timer for the Raspberry Pico with the C++ SDK. This time I want to describe an approach which is a little bit more versatile: The Pico provides no built-in DAC and thus we have no real analog output, but we can generate PWM signals on all pins – so if we use a basic PWM frequency Read more…

ESP32 Sound to a Web Browser

I was wondering what the easiest way would be to provide sound generated on a ESP32 to a Web Browser: I got distracted when I googled the topic “music streaming” and everything suddenly turned out to be very complicated. So I got back to my original idea: Just change the Server from the examples directory to return something that a Web Browser would recognize: The simplest audio file format for this purpose is WAV. It’s Read more…

Arduino Raspberry Pico – Looking Under the Hood

Today I had a look under the hood of the Standard Arduino implementation for the Raspberry Pico. I was surprised that they did not base their work on the Pico API but they based their work on ARM Mbed. Here is a blink example using the Ticker from the Mbed API: Mbed Ticker #include “mbed.h” using namespace mbed; Ticker ticker; DigitalOut led1(LED1); void blink(){ led1 = !led1; } void setup() { ticker.attach(&blink, 1); } void Read more…

You are really ugly but your face is pretty: Living in #ifdef Hell

I took the chance to look at the guts of one of my favorite projects: Mozzi. The major starting point is MozziGuts. Just tried to understand what code is relevant and my head started spinning… There is even an expression for this: #ifdef Hell. To make things more comprehensive, I thought it might make sense to split this up into different implementation files. I tried to do this manually but soon got so confused that Read more…

Stream support for my “Arduino Audio Tools” Library – A Sound Generator

Im my last couple of Blogs, I have demonstrated how we can use the low level API of my Arduino Audio Tools library. Currently I am busy working on a high level API using Arduino Streams. I did not commit my latest changes yet but I want to take the opportunity to share some more examples: We all know the Arduino Streams. We use them to write out print messages and sometimes we use them Read more…

Back to Basics – Sampling Audio with the ESP32

In this Blog I am giving a little bit of background on how the sampling of analog signals has been implemented in my Arduino audo-tools library. My initial approach was based on the Blog from Ivan Voras using timers and interrupts. But there is a much better way by using the extended ESP32 I2S functionality: You can use this to sample an analog signal (e.g. from a microphone) at very high speeds and I finally Read more…

Stream MP3 Files to A2DP Bluetooth using the ESP8266 Audio Library

Please note that a lot has changed since I published this Blog! Tought it might be possible to make this work again, you are advised to use the current API with this updated example! The processing of files with the help of the ESP8266Audio is a little bit more involved. However it allows to process different audio file types from different sources. Please consult the project for further details. Streaming of MP3 Files on a Read more…

Bluetooth A2DP – Streaming of Files on a SD card

In my Arduino ESP32-A2DP library I am providing some very simple examples that show how to transform the ESP32 into a A2DP source and transmit sound to a Bluetooth Sink (e.g. some Bluetooth Speakers). I had quite a few questions on how to do this with files, microphones and I2S as input. So I started a small “glue” project which provides some additional audio tools. I plan to provide plenty of additional examples and some Read more…

Bluetooth A2DP – Streaming from an Digital I2S Microphone

In my Arduino ESP32-A2DP library I am providing some very simple examples that show how to transform the ESP32 into a A2DP source and transmit sound to a Bluetooth Sink (e.g. some Bluetooth Speakers). I had quite a few questions on how to do this with files, microphones and I2S as input. So I started a small “glue” project which provides some additional audio tools. I plan to provide plenty of additional examples and some Read more…