Arduino Audio Tools – RTSP Revisited

Quite some time ago, I was describing how we can stream audio with the help of RTSP. In that example we needed to provide a data stream from which we can read the audio! This is not very flexible and often we want to specify RTSP as output: e.g. in the AudioPlayer we want to tell to send the audio to a RTSP stream. Therefore I decided to extend the functionality a bit by supporting Read more…

Arduino AudioTools – FormatConverterStream

I am currently providing quite a few audio processing classes which can be used to change the audio format. So far, the FormatConverterStream could be used to change the bits_per_sample and the number of channels only. I thought it might be cool, if we could use this class for changing the sample rate as well, so I finally managed to commit this change! Here is an example which changes The sample rate from 32000 to Read more…

Mozzi and the AudioKit – Reading Audio Data

I have extended the I2S interface in Mozzi, so that we can can use the getAudioInput() which reads the audio via I2S: This can be used e.g. by the AudioKit. Until this change has been merged, you need to use my extended project. Mozzi brings your Arduino to life by allowing it to produce much more complex and interesting growls, sweeps and chorusing atmospherics. These sounds can be quickly and easily constructed from familiar synthesis Read more…

Playing Commodore 64 SID Audio Files on Microcontrollers or the Desktop

In the old days I was rather a Commodere PC guy, but I know of colleagues of mine that were addicted to the Commodore 64 and knew it inside out. So, here is another project that makes you feel nostalgic: Sound Interface Device (SID) is a audio format used by the Commodore 64. To get some SID files, I can recommend The High Voltage SID Collection (HVSC) which is a freeware hobby project that organizes Read more…

Arduino AudioTools: ESP32 vs RP2040 Pico W

I thought it might be interesting to compare the Rasperry Pico W with the ESP32. While the ESP32 provides faster numeric operations, I did not have any visibility how these two microcontrollers compare in regard of the WIFI speed. The good news is, that the URLStream from the AudioTools library is working now properly for the Pico W as well, so we can use it to measure the thruput! Measuring the Speed I used the Read more…

Using Mozzi with the AudioKit

Mozzi brings your Arduino to life by allowing it to produce much more complex and interesting growls, sweeps and chorusing atmospherics. These sounds can be quickly and easily constructed from familiar synthesis units like oscillators, delays, filters and envelopes. The AudioKit is a cheap ESP32 based audio board that usually uses an ES8388 audio chip. Quite some time ago I was working on a Mozzi integration for my AudioTools and had it usable. But because Read more…

Arduino AudioTools: Display the FFT Result on a LED Matrix

I have added a simple output class to my Arduino Audio Tools which can display the result of a FFT analysis on an LED Matrix. For my tests, I am using a 32 x 8 LED Matrix, but first we need to test the functionality. Determine the Wiring Logic I am using the FastLED library to update the LEDs. To simplify the processing I am providing the LEDOutput class. #include “AudioTools.h” #include “AudioLibs/LEDOutput.h” #define PIN_LEDS Read more…

Supporting WM8960 Audio Boards in Arduino

The WM8960 based boards are quite popular as Audio Modules for the Rasperry Pi and I had one of these laying around. So I had it always on my to-do list to extend my AudioTools library to support this audio chip as well, so that it can be used in Arduino. I started last year to convert the audio-codec-wm8960 library provided by Infinion by making sure that the i2c calls are using the Wire library Read more…

A simple Midi File Parser (not only) for Arduino

I was looking for a simple midi file parser library, but I did not find anything that made me happy, so I decided to provide one myself. Here are my design goals: minimal RAM requirements for midi with 1 track incremental writing and parsing of data No external dependencies: compile and run outside of Arduino with cmake Using the Arduino Print API for writing data For processors with a lot of RAM: provide some multitrack Read more…