A Basic Arduino Streaming MP3 Player

Yesterday I was finally resolving some stability issues in my URLStream class and I wanted to take the opportunity to highlight that it is pretty simple to build a simple mp3 streaming audio player using the Stream API of my Arduino Audio Tools library. You just need to copy the result from an URLStream to your output stream: The Arduino Sketch In this example Arduino sketch I am streaming BBC World Service to the analog Read more…

A Versatile Arduino MP3 File Player…

It is pretty simple to build a simple mp3 audio player using the Stream API of my Arduino Audio Tools library: A SD file is a subclass of an Arduino Stream, so all you need to do is to copy from the file to the desired output stream. when we use the EncodedAudioStream as output, we can support different audio formats we can add a status flag to halt and continue the processing Finally we Read more…

Using the ‘Arduino Audio Tools’ Library with PlatformIO

Today I was testing my Arduino Audio Tools project with PlatformIO on an ESP32 because I was really looking forward to be able to use a proper Debugger. Unfortunately I was stumbling over the fact that, while Arduino is using now the latest IDF version, the PlatformIO ESP32 Arduino implementation was still using an old version. Therefore I needed to add some additional preprocessor #if statements to handle the differences. Anyhow, I committed the corrections Read more…

Driving Speakers with a HW-627 Motor Controller?

Quite some time ago I was blogging about the hw-627 motor controller. So I was wondering if I could also use this module as well to play music and drive a small speaker. This would be cool because we could get stereo output since the module supports two output devices. Here is a simple Arduino sketch which using my Audio Tools Library with an ESP32 Microcontroller: The Arduino Sketch #include “AudioTools.h” #include “AudioCodecs/CodecMP3Helix.h” #include “BabyElephantWalk60_mp3.h” Read more…

Reading MP3 Metadata with my Audio Tools Library

I have extended my arduino-audio-tools project to provide access to MP3 Meta Data. ID3 is the metadata container which is most often used in conjunction with the MP3 audio file format. It allows information such as the title, artist, album, track number, and other information about the file to be stored in the file itself. Both versions of ID3 (ID3v1 and ID3v2) are supported. I currently however only provide the information that is available in Read more…

Setting up WordPress on a Raspberry Pi with Docker Compose

Installation I haven’t set up a new WordPress instance for quite some time. But lately I wanted to run WordPress on a Rasperry Pi. I used a docker compose file to run all services is one shot with WordPress Mariadb and phpmyadmin. Unfortunately the official mariadb image does not support ARM which is needed by the Raspberry Pi, so Im using jsurf/rpi-mariadb instead. Here is the docker-compose.yml file: version: ‘3.6’ services: wordpress: image: wordpress:5.7.2 ports: Read more…

My ESP32-A2DP Library is now also supporting the Espressif IDF

The ESP32 Microcontroller from Espressif provides a Bluetooth A2DP functionality that can receive sound data e.g. from your Mobile Phone or send it e.g. to Bluetooth Speakers. I am providing a simple API for this in my ESP-A2DP project. Most users are using this as library in the Arduino IDE or sometimes in PlatformIO. Quite some time ago I made the project independent of the Arduino API, and now I took up the task to Read more…

Audio Encoders and Decoders for Microcontrollers

Unfortunately the available memory on Microcontrollers is quite restricted and we do not get very far by storing a (uncompressed) WAV file e.g. in program/flesh memory, so I started to look into compressed audio formats. On the desktop we can use the FFmpeg project which comes with a rich set of functionality. Unfortunately the situation is much more fragmented for Microcontrollers. I started to collect the relevant libraries and in order to make things simple Read more…

An MP3 Encoder for Arduino ?

Introduction I was looking for a MP3 Encoder Library for Arduino, but unfortunately did not find anything. So I decided to take this up and make LAME available as Arduino Library. LAME is a high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPL. It is considered as one of the best MP3 encoder at mid-high bitrates and at VBR. I used the latest current release version 3.100 which can be downloaded from Read more…

Debugging Segmentation Faults with Clang

I wanted to provide an easy to use Arduino Audio Decoding Library based on libhelix. Unfortunately the ESP32 was crashing w/o any stacktrace and on the desktop it was the first time I was running into Segmentation Faults. I tried to resolve the issue with the help of Google where I found the recommendation to use valgrind to debug the code So I used my Arduino Emulator to debug the code on my McBook and Read more…