Flex — a polyphonic FPGA synthesizer module
Flex is a subtractive synthesizer built on the Sipeed Tang Nano 20K FPGA. Single-voice verified on hardware with SPDIF digital audio output at 96 kHz/24-bit. Three oscillator waveforms, a 12 dB/oct state-variable filter, and a NEORV32 RISC-V soft core at 98.304 MHz. In development since 2024.
Flex isn't locked to one sound engine. The architecture uses a dumb multiplexed audio + MIDI bus — deliberately simple, like late-80s PC ISA slots. Anyone can build a module on STM32, ESP32, FPGA, or pure analog and it connects. Flex is the reference implementation and flagship engine.
Time-division multiplexed polyphonic synthesizer on the GW2AR-LV18QN88C8. Sawtooth, pulse, and triangle oscillators with 24-bit phase accumulators. Bilinear state-variable filter (Lazzarini-Timoney topology, 12 dB/oct). NEORV32 RISC-V soft core handles MIDI and voice allocation. Verified SPDIF output.
A C++20 library (libsynth) mirrors the FPGA pipeline: 16 MIDI channels, voice manager, identical DSP blocks. Serves as ground truth for hardware verification — feed both the same MIDI, diff the outputs.
Flat-pack, democratic pricing, self-assembly. No soldering required. The Tang Nano dev board is $15-20.
Universal interconnect. Infinite recombination. Anyone can build a brick. The system outlasts any single module.
Flex is the first Noaidi product. The architecture is designed for expansion:
FPGA DSP Embedded RISC-V Analog Audio NEORV32 Tang Nano 20K SystemVerilog C++20
Thorwegian has built software and hardware since 1992. Self-taught, his career spans 3D graphics engines, embedded systems, high-throughput server architecture, and full-stack development in a half-dozen languages. His parallel life in audio (keyboardist, synth programmer, bedroom producer) lets him bridge DSP theory and musical practice. He built a 7000-member online art community in the mid-00s.