Xpressive Sound Design Suite
A sound synthesis toolkit built with Qt 6 and C++17 to compliment LMMS Xpressive. This suite is designed to make life easier when working with the Xpressive instrument by generating complex mathematical audio expressions (selectable between both Legacy and ExprTk parsing). Instead of manually working with complex XML files or trying to write math formulas from scratch, this suite lets you generate high-quality patches, percussion, and phonetic speech strings using a proper UI.
This is still very much work in progress. The intent was to create a suite of tools for creating Xpressive expressions as I had realised that Xpressive can do many things that people are asking for in instruments within the LMMS forums. However, the 'language' of the time domain may be quite strange to people who have no prior experience with signal processing.
The internal audio play button is broken in most of the tabs. The best way is to have two screens side by side and copy the expression into Xpressive and play there. The reason that I haven't fixed the audio player issues is that I could never get it to sound exactly the same as Xpressive in the first place, so I have used my efforts and time instead to explore deeper into what Xpressive is capable of as none of this has been documented previously apart from a list of variables and basic functions.
Key Features
The suite is divided into several tabs each targeting a specific era or style of sound design.
Tab Breakdown
• SID Architect – Build multi-segment C64-style oscillator chains with per-segment decay and frequency offsets.
• PCM Sampler – Converts WAV files into mathematical expressions for sample playback within Xpressive with optimized 4-bit or 8- bit quantisation. Bit depth of 2000, 4000, 8000, and 16,000. 16,000 slows down my i5 that I use and makes patterns jump in LMMS.
• Console Lab – A library of classic chip-synth waveforms (NES, GB, C64) with live bit-crushing and quantisation.
• SFX Macro – Generates exponential pitch sweeps and glides for transitions and cinematic risers.
• Arp Animator – Creates rhythmic, synchronised arpeggios with 8 bit style presets and BPM-sync capabilities.
• Wavetable Forge – An interface for sequencing complex waveform, pitch, and PWM changes over time.
• Bessel FM – A dual-operator FM synthesis engine with a library of 80s inspired DX7 and bell tone presets.
• Harmonic Lab – A 16 harmonic additive synthesiser with real time spectrum visualization and slider based control.
• Drum Designer – Architects percussion by combining exponential pitch-drop envelopes with simulated filter behaviours. Unlike the other tabs, this one exports a .xpf instrument so that the instruments filter can be controlled due to limited success with FIR.
• Velocilogic – Maps different code expressions to MIDI velocity layers.
• Noise Forge – Provides precise sample rate control over random noise generation for digital textures.
• XPF Packager – Wraps your raw expressions into a fully-formed LMMS instrument file for instant loading. Placeholder.
• Filter Forge – Updated. For the LPF, it uses a single line recursive formula where the current output is a weighted average of the new input and the last(1) sample. For the HPF, the system performs phase cancellation by playing the original dry signal in O1 and an inverted low pass version in O2.
• Lead Stacker – A unison engine that generates supersaw stacks with adjustable detune, sub oscillators, and drift.
• Randomiser – Uses chaos algorithms to generate semi random mathematical patches for instant inspiration.
• Phonetic Lab – A text-to-speech engine utilizing SAM phoneme tables to generate complex vocal and speech formulas. WIP. Works in principle as SAM does not use filters. However, results are not satisfactory yet.
• Logic Converter – A migration tool to bridge code between Xpressive versions, converting between Time (
• Key Mapper – Allows keyboard splitting by assigning different logic expressions to specific MIDI key ranges.
• Step Gate – A 16-step rhythmic sequencer that aims to pulse sounds in sync with the project BPM.
• Numbers 1981 – A dual-oscillator sequencer inspired by early 80s minimal synth patterns and random streams.
• Delay Architect – Builds multi tap echo chains using math based delay lines with adjustable feedback and sample rates.
• Macro Morph – A high level dashboard that morphs complex sound "vibes" using simplified Macro knobs.
• String Machine – Emulates vintage Solina and Logan string ensembles with evolving filter swells and ensemble width.
• Hardware Lab – A direct parameter analog suite for designing patches with virtual ADSR, LFOs, and resonance.
• West Coast Lab – Emulates Buchla-style nonlinear waveshaping using parallel and series wavefolding topologies.
• Modular Grid – A visual, modular synethesiser emulator / node based environment for connecting oscillators and logic modules to "draw" your synth. Now has a basic LPF that works in either parsing method.
• Spectral Resynthesiser – Analyses external WAV stabs to reconstruct sounds through windowed harmonic additive synthesis (another way to bring external recordings into Xpressive as an expression).
• Subtractive Lab - Interface to look like a subtractive synth minus the filter.
• Pixel Synth - Load an image and generate sound.
• Scratch Lab - Simulate DJ scratching.
• Nature Lab - Natural sounds. WIP.
• Vector Morph - WIP
• Pluck Lab - Generate plucks.
• House Organ - Generate house music bass organ patches.
• PCM Editor - Trim PCM "samples", add segments and tune each segment / pitch bend each segment, time stretch, reverse, pitch flatten etc. (there is a bug to be solved in PCM editor where if you press play on the GUI it returns the "sample" to the inital state before editing).
• Oscilloscope - Create timbres which animate on an X-Y oscilloscope. Messy at this stage. TDM controlled by A1.
• Melody Renderer - Intended as an AutoTune type tool for xpressive PCMs. Load an LMMS pattern, flatten the pitch of a voice, and output a sung expression. WIP for this tab!!!
• FM Bessel Matcher - Convert samples of stabs into FM formulas. WIP.
• Vocal Transform - Record live audio through your microphone and transform it into Xpressive compatible expressions with pitch and formant shifting. WIP.
• Symbolic Regression - WIP to use symbolic regression to automatically discover mathematical expressions which closely match loaded WAV samples. WIP.
• Drum Sequencer - WIP Create 16 step drum seqences in the step editor and export to a single mathematical expression. WIP.
• Xpressive Sequencer – A grid sequencer with up to 32 steps that features per step toggles, accents, pitches, and squelch controls to generate complex, evolving mathematical strings.
• Tracker – An old-school tracker interface (64 rows by 8 columns) to sequence math-based instruments, note frequencies, and macros WIP.
• Song Extractor – Analyses raw Xpressive expressions, cleans the core formulas, and extracts the sequence data into LMMS pattern files (.mmp).
• Z-Domain Experiments – WIP A tool for drawing sampledelay lines to experiment with FIR phase cancellation, comb filtering, and Karplus-Strong physical modeling. WIP
• Vector Processing Tab – An experiment to bypass Xpressive's lack of input buffering to achieve FIR convolution by unrolling the matrix and evaluating procedural waveforms at algebraically shifted time intervals.
Technical
Framework: Qt 6.x (Widgets) Language: C++17 Build System: CMake 3.16+
Panning: Due to the XML parsing, the PAN1 attributes are currently disabled to prevent crashes. You'll need to set your panning manually in the LMMS instrument editor for now (for drum designer).
Usage
Select a Mode: Use the top tabs to choose your sound design environment (e.g., Bessel FM).
Configure Parameters: Adjust sliders and drop-downs to shape the sound.
Generate: Click the "Generate" button to produce the mathematical expression.
Export: Use the Copy Clipboard function to take the generated string and paste it directly into your Xpressive engine environment in O1.
For Drum Generator generate the .xpf file and save it to your instruments folder. Drum generator works differently so that it can control the instrument filters external to the expression (as I have had limited success with FIR with last(n).
This project relies on the following open-source libraries:
- Description: A simple, lightweight Fast Fourier Transform (FFT) library used to generate the spectrogram visuals and power the frequency-based pitch/chord detection algorithms.
- Author: Mark Borgerding
- License: BSD-3-Clause
- Source: https://github.com/mborgerding/kissfft
- Description: A simple, header-only SVG parser and rasterizer designed for embedding SVG graphics into applications without the bloat of a full rendering engine.
- Author: Mikko Mononen
- License: zlib License
- Source: https://github.com/memononen/nanosvg
License
The phonemes were worked out by various versions of reversed engineered SAM (1982) found on github which was from the Commodore 64 and no longer exists / is assumed abandonware. Therefore due to this assumption, I cannot put my code under any specific open source software license.
Copyright (c) 2026 Ewan Pettigrew