There are many ways to build a synth. Because of my background on digital circuits and microprocessors, I tend to create digital synthesizers. In all cases, they have been experimentations, some as university projects; vehicles I used to learn not only about sound synthesis but adyacent topics like the low-level MIDI protocol.

PHLXM sequencer

This is a "frankenstein" of two shield boards stacked on top an Arduino Mega: a Fluxamasynth shield and a MIDI shield. Additionaly, there is a "floating" 2x14 LCD (as shown in the picture). The firmware is written in C++, using the libraries necessary to receive MIDI messages over the MIDI Shield and driving the ATSAM2695, which is a single-die "rompler" synthesizer. Given that this synth is capable of 64-voice polyphony, I thought it would be nice to program a sequencer which, depending on the notes received from MIDI, generates harmonic patterns using different algorithms. So that is kinda what PHLXM does. It syncronizes to the MIDI clock and use the MIDI shield controls (three buttons and two pots) to navigate an user interface. The user selects 4 voices from the internal banks, and using an 8-step sequencer in the form of numbers 1-7, define the scale degree of the harmonization. It is possible to select the sequencer time scale so each step can be from 1/32th to 1 bar long. It is even possible to have a polyrhythm with respect to other synthesizers in the MIDI bus. This single-chip synth also has FX (reverb, chorus, delay). Listen to a recording from the PHLXM sequencer-synth:

Wave Synth

This is a wavetable synthesizer that I am designing and implementing as a digital circuit directly on an FPGA device, using Verilog hardware description language. The system is based on the open-source Veerwolf SoC (RISC-V), so the wavetable is an additional peripheral on the Wishbone bus. Using the system UART and the FTDI USB bridge provided by the development board (Nexys A7), the wave synth is able to receive MIDI data through USB from a DAW, such that wavetable synthesis is enabled/disabled accordingly. The pitch is being currently controlled by modifying the rate at which the wavetable is scanned (instead to "skipping" samples and interpolation). The analog signal is generated using pulse width modulation and an external analog low-pass filter. Currently, there is just one 64-waves by 512-sample wavetable. Given the Artix-7 FPGA has a few free LUT and block RAM resources, I'm going to duplicate the wavetable for a two-oscillator synthesis architecture. Future plans include adding a hardware MIDI decoder so it can decoupled from the CPU, and even eliminate the CPU to free the FPGA resources needed for polyphony and stuff.


purplephloxmusic at gmail dot com


Heredia, 40104
Costa Rica