Noaidi is a virtual analog synthesizer whose whole sound engine runs on one small FPGA. Thirty-two voices, each with eight oscillators and two filters, computed sample by sample at 96 kHz. It is an instrument, not a computer running a plug-in.
Source: github.com/Thorwegian/noaidi-fpga-synth
Recorded straight from the board, unedited.
The demo runs the same patch values as the instrument, so you hear its character rather than a recording of it. Turn the knobs; they map to the same MIDI controls.
A microcontroller reads MIDI, allocates voices and maps every knob to engine parameters. The FPGA computes every voice, sample by sample, from those parameters. Every musical decision is made in firmware; the FPGA only computes sound.
How it is built is written up in the repository.
Each patch is one TOML file on the instrument. Open it in any editor or keep it in git. The firmware clamps out-of-range values, ignores keys it does not know, and never formats your partition on its own.
banks.toml lists which patch answers each Bank Select and Program Change, numbered 0 to 16383.# Patches/Factory/Pads/Supersaw.toml format = 1 [voice] structure = "7+1" osc_mix = 0 unison_detune = 0.07 # semitones per step unison_stereo = 100 [[osc]] wave = "saw" tune = 0 [[osc]] wave = "sine" tune = -12 # sub, one octave down [filter] type = "lowpass" slope = 24 cutoff = 370 # Hz at C4 resonance = 1 key_track = 100 [amp_env] attack = 0.042 decay = 3 sustain = -3.76 # dB release = 11 velocity = 50 [mod_env] destination = "cutoff" depth = 24 # semitones sustain = 93.75 [[lfo]] shape = "triangle" rate = 1 destination = "pitch" depth = 0.094 [part] bend_range = 2
Until there is a release build, the way to get one is to build it: a Tang Nano 20K, an ESP32 and a handful of parts, with free tools. The repository has the instructions.
What the instrument does. The repository carries how.
Voice
| Polyphony | 32 voices |
|---|---|
| Structures | 1+1, 7+1, 4+4 oscillators per voice |
| Oscillators | 2 per voice: saw, pulse, triangle, sine |
| Tuning | Coarse ±12 st, fine ±0.5 st, mix, pulse width 50 → 5 % |
| Unison | Detune per step, stereo spread to hard pan |
Filter
| Topology | Two state-variable filters per oscillator |
|---|---|
| Modes | Lowpass, bandpass, highpass · 12 or 24 dB/oct |
| Cutoff | ±8 octaves, 14-bit with CC 74 + 106 |
| Resonance | Butterworth to Q ≈ 32, self-oscillation reachable |
| Key tracking | 0 → 200 %, follows bend and LFO pitch |
Modulation
| Envelopes | Amp and mod ADSR per voice, velocity amounts |
|---|---|
| LFOs | 2 · 0.03 → 30 Hz · saw, pulse, tri, sine → PW, resonance, pitch, cutoff |
| Mod envelope | Bipolar, square-law, ±16 octaves to cutoff |
| Performance | Mod wheel, bend (RPN range 1–12 st), sustain, omni and per-channel multitimbral |
Audio
| Engine rate | 96 kHz |
|---|---|
| Outputs | S/PDIF and line out, both 96 kHz |
Connections
| MIDI | Two 5-pin DIN inputs |
|---|---|
| Audio | S/PDIF on RCA, line out |
| Power | USB-C |
| Patches | Text files, one per sound, banks map to Program Change |
Project
| License | Open hardware, CERN-OHL-S v2 |
|---|---|
| Author | Thor H. Linløkken, Norway |
Because one small chip can compute 32 voices, each with eight oscillators and two filters, at 96 kHz. The chip is wired for exactly that job and nothing else, so there is no software, no operating system and no buffer between the keys and the sound.
Under a millisecond from MIDI to sound. There is no operating system or buffer in the audio path.
S/PDIF and line out, both at 96 kHz.
No. The engine runs at 96 kHz, so the aliasing of a plain saw or pulse lands high in the spectrum, most of it above the hearing range. That is what the 96 kHz is for.
Yes. It takes 5-pin DIN MIDI and uses standard controller numbers, so any keyboard or sequencer with a MIDI out drives it with no software in between.
Not yet. Today you build it from two off-the-shelf boards and a few parts, following the repository.
So a patch is readable without the instrument: real units, comments allowed, diffs that make sense in git.
Watch the repository for releases, or clone it and build one now.