Walking an Entire Arduino SD Card Directory Tree: A Performance Guide

I was searching for the most efficient generic way to process the whole SD directory tree in Arduino: this can be helpful if you want to search for files or if you want to store the whole file system in a tree in RAM. The Standard SD API Way When using the API provided by the SD library, we need to open each file/directory to find it’s children. So to process all files in the Read more

Building an DLNA Network Wireless Speaker

Im my last blog I was describing the DLNA Architecture. So we are ready now to dig into my first __Arduino DLNA Sketch__. By combining my arduino-dlna with the arduino-audio-tools library it is quite easy to build a Network Audio Renderer that can e.g. be controlled via an Android Application: I can recommend Hi-Fi-Cast that let’s you select the Music Sources and Playback Devices. When running this sketch you should find and entry named __ArduinoMediaRenderer__ Read more

DLNA: The Architecture

The major advantage of the DLNA architecture is it’s clear separation of concerns. This split into specialized roles allows developers to create focused, efficient devices that, when combined, form a sophisticated whole-house audio system. The architecture is built around three core components: Media Servers, which store and distribute (e.g. audio) content; Media Renderers, which receive and play that audio; and Control Points, which act as the intelligent conductors, discovering devices and orchestrating playback between them. Read more

DLNA: Challenges

Introduction Last year, I started to work on a DLNA library for Arduino. There are some existing implementations, but they only implement “Control Points”, but no “Devices”. Now that the weather is getting colder, I decided to give this topic some more “love”. The Digital Living Network Alliance (DLNA) aimed to establish interoperability among PCs, consumer appliances, and mobile devices across wired and wireless networks. The goal was to provide a common solution for sharing Read more

Playing RTTTL with STL Instruments

Yesterday I was ask to extend my Arduino AudioTools library to support RTTTL. To be honest, I had no clue what this is, so I had to look it up: RTTTL stands for Ring Tone Text Transfer Language and was developed by Nokia to transfer ringtones to cellphones. It basically descibes the notes and durations in simple text form. My library supports different sound generators and also provides the frequencies of all notes: so all Read more

Pimping up RTSP

In my last Arduino AudioTools Release I have integrated a RTSP server and client. The server was using RTOS tasks for the session management und a timer for timing the audio data. I decided to make things more flexible by providing different implementations for the Server and Streamer. Here is the overview of all available classes. I added a taskless server, so that we can use it w/o RTOS. Apart from the timer based standard Read more

Arduino Emulator: Major Architecture Improvements and Raspberry Pi Support

October 2025 I’m excited to share some significant updates to the Arduino Emulator project that make it more robust, easier to use, and better aligned with official Arduino standards. These changes represent a major step forward in cross-platform Arduino development. 🔄 Arduino Core as Official Submodule The most significant architectural change is migrating to the official Arduino Core API as a git submodule. Previously, we maintained our own fork of the Arduino Core, but now Read more

Down the Rabbit Hole: Publishing MP3 Files via RTSP

  Introduction Last week, I was asking myself the question how easy or difficult it would be to publish mp3 files via a RTSP server. Quite some time ago, I have extended the Mico-RTSP-Audio project to be integrated with the AudioTools, so all I theoretically needed to do was using an AudioPlayer to send mp3 files to the server. The RTSP Server I havent looked at this functionality for years, so the first thing was Read more

Arduino Audio Tools is using less memory

I was always unhappy that just importing my Arduino Audio Tools library was using quite some PROGMEM and RAM even with an empty sketch: Sketch uses 888547 bytes (67%) of program storage space. Maximum is 1310720 bytes. Global variables use 43352 bytes (13%) of dynamic memory, leaving 284328 bytes for local variables. Maximum is 327680 bytes. The root cause for this was that I considered networking to be part of the core functionality that should Read more

Arduino Audio Tools: Building a Simple DTMF Detector using Goertzel

The Goertzel Algorithm is an optimized Discrete Fourier Transform (DFT) that can detect defined frequencies. It can be used e.g. to identify DTMF keys. DTMF keys conist of 2 tones that can be described by the following diagram: In the Arduino Audio Tools library we can use the GoertzelStream to build a simple DTMF detector. Arduino Sketch The example can be found in the examples and I was using an AI Thinker AudioKit for testing. Read more