My dream was to build an analog synthesizer — a project full of electrical work. For now, the goal has shifted to designing a digital one :)
This project aims to build a flexible framework for different types of synthesizers running on a low-cost microcontroller. In this repository, most of the focus will be on software, while the hardware will be kept as a small and simple module.
Key components of the ESP32-LyraT:
- Microcontroller: ESP32-WROVER-E with 8 MB of additional PSRAM
- DAC module: ES8388 supporting up to 96 kHz / 24-bit sampling
- Control interface: several onboard buttons
- MIDI input: provided by an additional custom board
The simple schematic of the MIDI input is based on the MIDI hardware specification (Figure 2 – MIDI IN and THRU circuit). It uses an optocoupler connected to a UART pin of the microcontroller.
Espressif provides an Audio Development Framework that includes various functions for audio processing — filters, equalizers, encoders, and so on. Unfortunately, most of these are geared toward playback and processing rather than sound generation.
Because of that, I decided to use the PlatformIO environment instead. I’ve found several good examples of audio generators developed within it, so it seems like a solid starting point for this project.
The MidiWrapper class is a singleton that encapsulates a serial interface for MIDI input and maintains a vector of MIDI CC mappings. Mappings can be created externally and then added to the class, making this approach more convenient. The class also provides a method to change the MIDI input channel.
In future...
- 1 weeks – Prepare the hardware for testing (solder the MIDI input)
- 3 weeks – Create a parser for MIDI parameter control
- 3 weeks – Implement the waveform generation library. This will be a class that generates successive audio buffers, which can be modulated in real time using the MIDI parser module.
- 3 weeks – Create the audio processing library and implement a filter controlled via the MIDI parser.
- 3 weeks – Extend the library by adding a reverb or delay effect with MIDI control.
- 1 week – Test the device to identify any issues during continuous operation.
- 1 week – Prepare the presentation.
