Arduino Audio Tools – Multicore Processing

So far I never needed to use any of the ESP32 multicore functionality because all the examples are very simple and everything is fitting on a single core. However if you write some more complex scenarios which are e.g. updating a screen, process user input w/o impacting the audio, you should consider to use multiple tasks. Then you need to use a save way to communicate data between the tasks. In this case I strongly Read more…

ESpeak and MBROLA ?

MBROLA is a speech synthesizer based on the concatenation of diphones. It takes a list of phonemes as input, together with prosodic information (duration of phonemes and a piecewise linear description of pitch), and produces speech samples on 16 bits (linear), at the sampling frequency of the diphone database. Today I was playing around with MBROLA and was impressed by the quality of the speech. ESpeak provides an integration into the MBROLA speech synthesizer, so Read more…

ESpeak-NG for Arduino: Setting the Voice

It was quite a challenge to convert eSpeak NG to an Arduino Library. In the meantime I managed to publish a first round of error corrections. The eSpeak NG is a compact open source software text-to-speech synthesizer for Linux, Windows, Android and other operating systems. It supports more than 100 languages and accents. It is based on the eSpeak engine created by Jonathan Duddington. For each language (=voice) you can also set a voice variant Read more…

Text to Speech for more then 100 Languages on an Arduino

It was quite a challenge to convert eSpeak NG to an Arduino Library. The eSpeak NG is a compact open source software text-to-speech synthesizer for Linux, Windows, Android and other operating systems. It supports more than 100 languages and accents. It is based on the eSpeak engine created by Jonathan Duddington. Language Specific Configuration Files Using a foreign language is quite easy: You just need to load the language dependent files and set the corresponding Read more…

ESpeak-NG: The difficult journey to an Arduino Library

I converted eSpeak NG to an Arduino Library. The eSpeak NG is a compact open source software text-to-speech synthesizer for Linux, Windows, Android and other operating systems. It supports more than 100 languages and accents. It is based on the eSpeak engine created by Jonathan Duddington. eSpeak NG uses a “formant synthesis” method. This allows many languages to be provided in a small size. The speech is clear, and can be used at high speeds, Read more…

FreeRTOS-addons a C++ API on Arduino

Standard FreeRTOS uses C based API. However I prefer to have some lean C++ abstractions. That’s when I discovered the freertos-addons project from Michael Becker. I have converted it to an Arduino Library, so that it can be used e.g. on an ESP32. I also added a new Task class (which is a subclass of Thread) that allows to pass a function pointer in the constructor. For the ESP32 we support the xTaskCreatePinnedToCore() method by Read more…

Guitar Effects Controlled By A Web GUI

Quite some time ago, I have demonstrated how to build some Guitar Effects with my Arduino Audio Tools. In the last couple of blogs, I showed how to build an interactive web dialog with my TinyHttp library. Finally it is time to put the two approaches together into one single sketch to build some Audio Effects that can be controlled via a html screen. I am using an AudioKit to simplify the hardware setup. The Read more…

TinyHttp – Storing Html on an External Server

In my last Blog, I was showing how we can process html forms with the Arduino TinyHttp library. In the examples we were embedding the html into the source code. Sometimes however it is more convenient to store the html as files on a dedicated server: In the following examples we use Github for this. Forwarding In this example we just forward to an external URL. static Url forward_url(“https://pschatzmann.github.io/TinyHttp/app/webservice-example.html”); server.on(“/”,GET, forward_url); This external html page Read more…