FPGA Modular Synthesizer Platform · SystemVerilog
An FPGA-based Eurorack modular synthesizer platform with a novel approach to
total recall — addressing one of the longest-standing limitations of modular synthesis.
Custom hardware and FPGA architecture designed from the ground up, combining
analog signal path design with digital intelligence.
Full 3U 104HP Eurorack case designed from scratch. Case and custom knobs 3D modelled
in OpenSCAD and 3D printed. Custom front panels with silkscreen artwork,
Thonkiconn jacks, and panel-mounted LEDs for visual feedback. The case is a purpose-built
enclosure with a custom-designed PSU (bus board, ribbon cables, regulated ±12V and +5V rails) designed
to house the complete system as a self-contained instrument. Every aspect of the physical
design — panel layout, knob spacing, ergonomics — is considered alongside the electronics.
Multi-layer PCB design with mixed-signal layout: analog signal paths kept separate from
digital FPGA logic, dedicated ground planes, and careful power regulation. The analog front end
uses precision op-amps and DC-coupled I/O for full Eurorack voltage range (±12V rail,
±5V signal). Custom codec/DAC stage for high-fidelity audio conversion between the
analog domain and FPGA fabric.
Patent pending. Novel architecture enables capabilities not
currently available in any commercial modular synthesizer.
SystemVerilog
FPGA
Custom PCB
Analog Design
Eurorack
OpenSCAD
3D Printing
Panel Design
Mixed-Signal
GPU-Accelerated 3D Magnetic Tape Simulation · C++/Metal
Real-time magnetic tape saturation emulator using GPU-accelerated 3D simulation.
Models the nonlinear hysteresis of analog tape across a 65,536-point 3D grid
(64×256×4 — representing 6mm tape width, 5cm buffer, and 10μm oxide depth)
with spatial diffusion using a 7-point stencil. Jiles-Atherton hysteresis model runs
per-grid-point with Langevin function anhysteretic magnetisation.
Includes tape cutting, splicing, looping, variable speed playback, and degradation effects.
Key Innovation: Full PDE-based magnetic field simulation at real-time rates
via Metal GPU compute shaders dispatching 65,536 parallel threads. Frequency-dependent skin effect
and depth attenuation modelled across the oxide layer.
C++17
Metal GPU
JUCE
Jiles-Atherton
PDE Solver
VST3/AU
Waveguide Uilleann Pipes Synthesizer · C++/Metal
Physics-based virtual instrument modelling Irish uilleann pipes using digital waveguide synthesis
with Metal GPU acceleration. Complete paraphonic pipe set: chanter (9-hole melody), 3 drones
(bass/baritone/tenor), and 3 regulators (keyed chords). Nonlinear reed excitation via Bernoulli
equation, Kelly-Lochbaum scattering junctions at tone holes, five bore profiles (cylindrical,
conical, hyperbolic, parabolic, stepped), material damping, and bell radiation modelling.
Metal compute shaders process 7 waveguide pairs + 9 tone holes + 13 regulator keys at 96kHz.
C++17
Metal GPU
JUCE
Waveguide Synthesis
Physical Modeling
VST3/AU
Virtual Analog + Neural Hybrid Architecture · C++/Python/ONNX
JUCE audio plugin emulating the EMS VCS3/Synthi diode ladder filter using a hybrid architecture:
physics-based virtual analog modelling with neural network enhancement for authentic nonlinear
characteristics. The VA model implements a 4-pole ladder topology with bilinear transform and
tanh soft saturation. A WaveNet model trained on 750 impulse responses captured from hardware
learns only the residual difference between the VA model and real hardware, running via ONNX Runtime.
Three filter modes (LP/HP/BP), three slope options (18/24/48 dB/oct). Includes separate
Python research environment for DSP prototyping and ML training pipeline.
Key Innovation: Hybrid residual learning — the neural network corrects the
VA model's output rather than modelling the entire filter, dramatically reducing model size (~700KB)
while capturing the nonlinearities that make analog filters sound alive.
C++17
JUCE
WaveNet
ONNX Runtime
PyTorch
Virtual Analog
VST3/AU
Lexicon-Inspired Dual-Tank FDN Reverb · C++
Professional-quality algorithmic reverb inspired by the Lexicon 224/480L. Dual 8-delay feedback
delay networks with Hadamard orthogonal matrix mixing, RT60-based decay using modified Sabine equation,
4× modulated allpass prediffusion, and 7-tap early reflections. Includes time FX section
(delay, shimmer with pitch-shifting, chorus), HRTF crossfading, anti-blowup loop energy monitoring,
and safety limiter. Celtic-inspired UI with golden ratio spiral and triskele elements.
Evolved from a 24-hour WebAudio/WebMIDI hackathon prototype into a full JUCE plugin.
C++17
JUCE
FDN
Hadamard Matrix
RT60
WebAudio
VST3/AU
Extended Karplus-Strong Guitar Synthesizer · Faust
Physics-based plucked string synthesizer implementing Julius O. Smith's Extended
Karplus-Strong algorithm. Bidirectional delay line with linear-phase FIR3 damping,
pick-position comb filtering, dynamic-level lowpass compensation, and T60 decay modelling.
32-step sequencer with E minor pentatonic arpeggio patterns, stereo LFO panning,
and Zita reverb integration. Compiles to Web, JACK, VST, Daisy, and Bela targets.
Faust
Physical Modeling
Karplus-Strong
Web Audio
Bela
Daisy
Physical Model of Granular Collisions · MATLAB
Physical model of grains of sand colliding in space. Simulates the acoustic behaviour
of granular particle interactions, synthesising the resulting sounds from first-principles
physics rather than sample playback.
MATLAB
Physical Modeling
Granular
Collision Physics
Serge Resonant Equaliser for Bela · C++
Implementation of the Serge Resonant Equaliser for the Bela embedded audio platform.
The Serge ResEQ is a classic analog module design — a bank of resonant bandpass filters
that can be driven into self-oscillation, functioning as both an equaliser and a sound source.
C++
Bela
Embedded DSP
Filter Design
Serge
LM13700 OTA Analog Circuit Design
Analog circuit recreation of the OTO Biscuit synthesizer/effects processor using
LM13700 operational transconductance amplifiers. Detailed analysis and recreation
of the original circuit topology with focus on reproducing the nonlinear characteristics
of the OTA-based signal path.
Analog Design
LM13700 OTAs
SPICE
PCB Layout
Binaural & Stereo Audio Processing · Harman Corporation
Research and development of binaural and stereo audio processing in collaboration
with Harman Corporation. Work on spatial audio rendering techniques for consumer
and professional audio applications.
Spatial Audio
Binaural
Stereo Processing
Harman
EMS Stockholm + NTNU/AAU Research
Comprehensive body of work in binaural spatial audio. Head-trackable HRTF rendering
with real-time adaptation to listener movement (EMS Stockholm). Woodworth spherical head
ITD model, Brown-Duda ILD filters, fractional delay interpolation, and HRIR synthesis.
MediaPipe-based head tracking with IRCAM-style room acoustics. Multiple implementations
spanning research prototypes through to production-grade real-time systems with
VST-grade parameter smoothing.
Python
Spatial Audio
HRTF/HRIR
ITD/ILD
Head Tracking
Real-time DSP
EMS Stockholm — Guest Composer Residency
Neural network models using WaveNet and CNN architectures to emulate analog synthesizer filters.
Deep learning captures the nonlinear behaviour of analog circuits, producing convincing digital
recreations of analog filter characteristics. Research conducted during a guest composer residency
at Elektronmusikstudion (EMS) Stockholm.
Python
PyTorch
WaveNet
CNNs
Audio DSP
MATLAB
Real-Time Emotion Detection → Modular Synthesis · C++/Python
Real-time emotion detection driving modular synthesizer control voltage. JUCE plugin version
uses OpenCV face detection, 68-point landmark tracking, and Mini-Xception CNN via ONNX Runtime
to output 7 CV channels, each modulated by a physics model matched to the emotion:
Lorenz attractor (angry), Duffing oscillator (disgust), mass-spring-damper (fear),
modal resonator (happy), breath model (sad), struck membrane (surprise), damped harmonic (neutral).
Companion Python version uses MediaPipe FaceMesh with OSC output to Max/MSP.
Optimised for Expert Sleepers ES-9/ES-8 DC-coupled outputs to Eurorack.
C++
Python
JUCE
OpenCV
ONNX Runtime
Chaos Theory
Eurorack CV
Max/MSP
Adaptive VR/Mobile Sensory Platform · Unity/Godot/C++
An adaptive platform building empathy between neurodivergent and neurotypical individuals
through shared, personalised sensory experiences. Phenotype-based audio adaptation using
Dunn's Sensory Processing Framework. Integrates multiple DSP research modules: bioacoustic
synthesis (cricket stridulation, avian syrinx), physical guitar, teorainn reverb, Physical Tape
saturation, RTNeural inference, and binaural spatialisation. Generative music system using
Markov melody generation and Eno-style coprime loop techniques. VR version (Unity/Meta Quest 3)
and mobile version (Godot 4 with C++ GDExtension audio engine).
Unity
Godot
C#
C++ GDExtension
RTNeural
Meta Quest 3
ML.NET
Polychromatic Microtonal Isomorphic Controller · Python
Microtonal isomorphic controller for the ERAE II hexagonal touch surface. Supports arbitrary
N-TET tuning systems (12, 19, 31, 53, 106-TET), multiple isomorphic layouts (Wicki-Hayden,
Tonal Plexus), and colour schemes (hue wheel, polychromatic harmonic series, chromaplane).
MPE MIDI and OSC output. Direct hardware integration via ERAE II SysEx protocol for
real-time LED feedback on the touch surface.
Python
MPE MIDI
OSC
Microtonal
SysEx
ERAE II
Proteus-Style Exploration Game · Godot 4.5
3D exploration game with generative bioacoustic music. Procedurally generated environments
where the soundtrack emerges from simulated ecosystems — the music is the world.
Godot 4.5
GDScript
Generative Music
Bioacoustics
Procedural
Live Audio Visualisation Dashboard · Python
Real-time audio visualisation dashboard for the terminal featuring VU meters,
oscilloscope display, and system metrics. Live audio analysis rendered directly
in the terminal.
Python
Audio Analysis
Real-time
Terminal UI
OTO Machines · Plinky · C++/JUCE
Suite of JUCE-based audio plugins for managing presets and interfacing with
hardware synthesizers via MIDI SysEx. OTOInterface for OTO Machines devices
(Biscuit, BIM, BAM, Boum) with Pro upgrade path, PlinkyInterface for the Plinky
synthesizer, PlinkyBridge for anti-aliasing Plinky USB audio, and Plinky-VST
for direct DAW integration.
C++
JUCE
MIDI SysEx
VST3/AU/AAX
Cross-platform
ML Training Data Pipeline · C++/JUCE
JUCE audio plugin for capturing impulse responses from analog filters for machine learning
training. Automated sweep generation, capture, and cataloguing pipeline that produced the
750-file training dataset used for the MLEMS Synthi Filter neural model.
C++
JUCE
IR Capture
ML Pipeline
VST3/AU
Thread-Safe Remote Script · Python
Thread-safe Python Remote Script for Ableton Live exposing 220+ LiveAPI tools
for external automation and control. Enables programmatic access to Live's internal
API for custom control surfaces, automation scripts, and integration workflows.
Python
Ableton Live
LiveAPI
Threading
Open Source
Sequentix Cirklon Instrument Definitions
Instrument definition files (.cki) for the Sequentix Cirklon hardware sequencer.
Comprehensive MIDI CC mappings for hardware synthesizers including Plinky (synth + sampler modes)
enabling full parameter control from the Cirklon.
MIDI CC
Sequentix Cirklon
Hardware Integration
Open Source
VCO Tuning Utility · C++ · macOS Fork
Maintained fork of the VCOTuner utility updated to work on modern macOS.
Precision tuning tool for voltage-controlled oscillators in analog synthesizers.
C++
macOS
VCO
Open Source
Commercial Distribution System · Python
Licensing and activation infrastructure for commercial audio plugin distribution.
Handles license generation, validation, and management across the plugin suite.
Python
Cryptography
Distribution
USB Audio Class 2.0 on STM32L476 · C
USB Audio Class 2.0 implementation for STM32L476 using TinyUSB. 48kHz/16-bit stereo
streaming in adaptive mode. Ring buffer in dedicated SRAM2 bank, dual PLL clock architecture
(PLLSAI1 for ADC, PLLSAI2 for audio I/O), DMA integration for codec/SAI.
C
STM32
TinyUSB
UAC2
DMA
Firmware
Theory to Real-Time Implementation · Python + C++
End-to-end physical modelling of guitar acoustics: from theoretical analysis and parameter
extraction in Python to real-time JUCE C++ plugin implementation. Covers string vibration
modelling, body resonance, and coupling between physical subsystems.
Python
C++
JUCE
Physical Modeling
DSP
Gaulossen Nature Reserve · BirdNET · Praven Pro
Field-based bioacoustic monitoring and analysis. Gaulossen Nature Reserve acoustic monitoring study.
BirdNET batch analysis pipeline with YIN F0 estimation and LPC formant analysis.
Praven Pro — a professional bioacoustics workflow combining Python automation with Raven Pro
for BirdNET batch processing with F0/formant analysis.
Python
BirdNET
Raven Pro
Field Recording
F0/Formant
Open Source
Signal Processing · Simulation · Psychoacoustics
Research and coursework spanning acoustic signal processing, room acoustics,
and digital simulation methods. Includes 2D Transmission Line Matrix pipe simulation,
1D digital waveguide synthesis of musical instruments, music box DSP analysis
(multi-method F0 consensus with SHS, YIN, cepstrum), audio denoising,
MFCC extraction, harmonic analysis, and psychoacoustic modelling.
Interactive study notebooks with plug-in calculator sections and visual concept maps.
Python
MATLAB
TLM Simulation
Waveguide
FEM
LaTeX
Music Information Retrieval Tutorials · Python
Music Information Retrieval tutorials with librosa. Google Colab notebooks covering
beat tracking, harmonic-percussive source separation, MFCC, chromagram analysis,
and time-frequency visualisation for audio signal processing education.
Python
librosa
MIR
Google Colab
HPSS
Professional Video Denoising · Python / Google Colab
Professional video denoising tool with an interactive Google Colab interface.
Designed for film and media applications where clean footage is critical.
Python
Video Processing
Google Colab
Denoising
AI-Powered Photo Organisation · JavaScript
Intelligent photo organisation tool that sorts photos by date, categorises content
using AI, and manages projects. Available as both desktop app and web app.
JavaScript
AI Classification
Desktop App
Web App
Academic Publishing Pipeline · Python
Tool for converting Jupyter notebooks to academic LaTeX papers with Overleaf and GitHub
integration. Streamlines the path from research notebook to publication-ready manuscript.
Python
LaTeX
Jupyter
Overleaf
Academic
Arqiva
Professional RF engineering work covering broadcast transmission infrastructure.
RF system design, signal processing, transmission planning, and field engineering.
This foundational experience in signal processing and systems engineering directly
informs current DSP and FPGA audio work.
RF Design
Signal Processing
Transmission Systems
Test & Measurement