Running an Arduino Sketch on your Desktop in Linux, Windows or OS/X

I was struggling with an ugly problem and wished it would be possible to compile and run or debug my Audio Arduino Sketch on my Desktop Computer. So I decided to release my arduino-emulator and extend my arduino-audio-tools project and provide an example how to compile and run it in Windows, Linux or OS/X. You just need to provide an Arduino Sketch as cpp file together with this CMakeLists.txt example file. Just replace the example Read more…

PWM Audio Output support for the “arduino-audio-tools” Arduino Library

In one of my last Posts I have described an approach how we can implement a simple audio output using PWM using the Raspberry Pico. The advantage of this approach is, that we can output audio to almost any GPIO pin, and that it can be used on any other processor which supports PWM. I have extended my arduino-audio-tools project to provide this functionality with a Stream based and a callback based API. The following Read more…

Text To Speach in Arduino – Final Conclusions

In my last couple of Blogs I was comparing the following Text To Speach (TTS) libraries which are available on Arduino: SAM Software Automatic Mouth TTS Text-to-Speech Library for Arduino Flite Festival lite I was hoping to find some TinyML based implementations, but so far without success: I put this on my to-do list for some long cold winter days. As a conclusion we see that the sound quality is directly related with the memory Read more…

Text To Speach in Arduino using Flite

In my last Blogs I looked at SAM and Arduino/TTS. I was putting high hopes in CMU Flite: CMU Flite (festival-lite) is a small, fast run-time open source text to speech synthesis engine developed at CMU and primarily designed for small embedded machines and/or large servers. Flite is designed as an alternative text to speech synthesis engine to Festival for voices built using the FestVox suite of voice building tools. I was extending the project Read more…

Text To Speach in Arduino using TTS

In my last Blog I looked at SAM. Now it is time to look at jscrane/TTS. TTS is a popular Text-to-Speech Library for Arduino which is supporting many different Microcontroller Architectures. I was extending the project, so that I could receive the data as stream: My extended project can be found on Github. Like for SAM, the Arduino sketch for the Webserver is also quite small because I am using my arduino-audio-tools . TTS is Read more…

Text To Speach in Arduino using SAM

I started to look into the topic of Text to Speach Synthesis (TTS) on Microcontrollers with the final goal to compare different engines. Since I don’t want to be bothered to connect the Microcontroller to any output device, I decided to just render the result to a Webbrowser with an ESP32 before committing to any solution. Unfortunately there are no Arduino engines which would provide the result as a stream, so I started to “extend” Read more…

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…