β¨ Feature Demonstrations
Granular Synthesis Engine
Engine Capabilities
- MIDI note-on triggers a new grain voice; pitch ratio pre-computed on note-on to avoid per-sample std::pow
- Grain envelope applies attack β sustain β decay with 2ms minimum crossfade to prevent audio clicks
- Forward or reverse playback selectable per-instance; Lock Pos freezes the grain start position for repeating rhythmic loops
- Force Mono mode limits to one active voice with crossfade stealing β ideal for monophonic lead lines
- Sub-sample accuracy achieved via linear interpolation between adjacent sample frames
- 16-voice polyphony with LRU voice stealing when the voice pool is exhausted
3-LFO System with Custom Wavetable Editor
LFO Modes
- Off β Free-running continuous oscillation, ignores MIDI
- Env β MIDI-triggered one-shot envelope; retriggers on each new note
- Sync β MIDI-triggered looping oscillation synced to host BPM; supports triplet and dotted note divisions
Custom Wavetable Flow
- User places up to N control points on the LFO curve editor canvas
- Hermite spline interpolation fills the 256-sample lookup table from the control points
- New table written to the back buffer, then atomic pointer swap makes it live β zero audio-thread locks
- Real-time visualization shows current phase position and output value on the LFO display
32-Slot Modulation Matrix
Modulation Assignment Flow
- User drags from an LFO or macro source onto any knob on the UI
- A mod slot is automatically created and highlighted in the matrix panel
- Amount is adjusted via the slot's bipolar amount knob (β1.0 to +1.0)
- Optional auxiliary source added for multiplicative modulation chaining
- Direction mode set: Default/Bipolar, Split (separate + and β ranges), Up, or Down
- Knob displays a colored arc overlay showing total modulation contribution
SSB Frequency Shifting
SSB Shift Signal Path
- Input audio split into in-phase (xI) and quadrature (xQ) paths via 4-stage IIR all-pass filters
- Complex exponential oscillator generates cos(Οt) and sin(Οt) at the shift frequency
- SSB output: xIΒ·cos(Οt) β xQΒ·sin(Οt) β shifts all partials by a fixed Hz offset
- Hysteresis gate engages shifting when |Hz| > 1.5, disengages when |Hz| < 0.5 β prevents click artifacts when modulation crosses 0 Hz
BPM-Synced Grain Scheduling
Sync Flow
- Host BPM read each processBlock via AudioPlayHead::getCurrentPosition
- Selected division (e.g. 1/8T) converted to samples: (60 / BPM) Γ divisionRatio Γ sampleRate
- Grain retrigger counter counts down in samples; at zero a new grain begins
- On division change mid-grain: smooth decay applied to current grain, new grain starts at next zero crossing
- BPM alert banner appears in the plugin UI when loaded preset BPM differs from host by more than a threshold
Professional Plugin Infrastructure
Commercial Features
- Preset save/load via XML serialization of the full ValueTree state β samples embedded as base64 or referenced by path
- Serial activation checked on plugin load; MuseDRM wrapping for MuseHub distribution
- Tutorial overlay highlights UI elements step-by-step with animated callouts
- Sample recorder: arm β record β auto-trim silence β normalize β save to samples folder
- Drag-and-drop loading of arbitrary audio files from the OS file system
- Full undo/redo stack via JUCE UndoManager for all parameter changes
π Professional Summary
The plugin's DSP core implements from-scratch granular synthesis (16-voice polyphonic), an IIR Hilbert transformer-based SSB frequency shifter, a three-LFO system with atomic double-buffered custom wavetables, and a 32-slot modulation matrix with per-block parameter caching. All audio-thread code is lock-free β LFO table swaps use atomic pointer exchange, and UI updates flow through JUCE's thread-safe message queue.
On the product side, SingleGrain ships with a serial-based license activation system (MuseDRM), factory content embedded directly in the binary at build time, a full preset manager, interactive tutorial overlay, and in-app sample recording. The result is a production-grade plugin that demonstrates deep expertise in real-time audio DSP, lock-free concurrent systems, plugin UX design, and C++ performance engineering.
π― Most Marketable Skills
Audio DSP
- Granular synthesis (16-voice polyphonic)
- SSB frequency shifting (IIR Hilbert)
- Wavetable LFO synthesis (256-sample)
- Envelope DSP with click-free crossfades
- Linear interpolation (sub-sample precision)
JUCE / C++ Architecture
- JUCE AudioProcessorValueTreeState
- Lock-free atomics (double-buffer LFO tables)
- Per-block parameter caching (mod matrix)
- AudioPlayHead BPM sync
- BinaryData pre-build asset embedding
Plugin UX Engineering
- 32-slot modulation matrix UI
- Serum 2-style drag-to-assign mod arcs
- Custom 256-point wavetable curve editor
- Real-time LFO phase visualization
- Interactive tutorial overlay system
Commercial Release
- MuseHub / MuseDRM license integration
- Serial activation system
- Self-contained binary (embedded assets)
- Preset manager (XML / ValueTree)
- Cross-platform: VST3 (Win/Mac) + AU (Mac)
ποΈ Architecture
DSP Engine
- PluginProcessor.cpp
- 16-voice grain pool
- SSB frequency shifter
- Grain envelope state machines
- Linear interpolation playback
Modulation System
- 3Γ wavetable LFOs
- 32-slot mod matrix
- 8 macro controllers
- Atomic double-buffer tables
- Per-block slot cache
UI Framework
- PluginEditor.cpp (JUCE)
- Custom mod-arc knobs
- Wavetable curve editor
- LFO phase visualizer
- Tutorial overlay system
Parameter Architecture
- AudioProcessorValueTreeState
- UndoManager (full undo/redo)
- XML preset serialization
- Atomic visualization data
- Raw pointer param caching
Build & Distribution
- JUCE 8.x + CMakeLists.txt
- VS2022 + macOS CI builds
- PowerShell asset pre-build
- MuseDRM wrapping
- VST3 + AU targets
π Key Achievements
Commercial MuseHub Release
Shipped a fully licensed, commercially distributed VST3/AU plugin on MuseHub with serial activation, MuseDRM wrapping, and a royalty-free perpetual license model.
SSB Frequency Shifting
Implemented Single-Sideband shifting from scratch: IIR Hilbert transformer, complex exponential oscillator, and hysteresis gate for artifact-free frequency offsetting.
32-Slot Modulation Matrix
Full modulation routing with 3 LFOs + 8 macros, 25+ destinations, drag-to-assign UI arcs, aux chaining, and direction modes β with zero audio-thread lock contention.
Lock-Free Audio Thread
LFO wavetable updates via atomic pointer swap, mod matrix parameters cached per-block, and visualization data passed to UI via atomic reads β no mutexes on the audio thread.
Custom Wavetable Editor
256-sample per-LFO wavetable drawn with a point-based curve editor, filled via Hermite spline interpolation, and swapped live into the audio engine without a gap in sound.
BPM-Synced Scheduling
24 host-sync divisions with triplet/dotted variants, equal knob-travel spacing, and smooth grain handoff on division changes β no audible cuts mid-grain.