← All modules
AvailableInstrumentExperimental

Mouth Synth

A vocal tract you play like a synth.

Engine preview

VST3

About

Speech is not made of samples, it is made of a tube. Air from the lungs sets the vocal folds buzzing at the glottis, and the shape of the tract above them — the tongue, the lips, the soft palate — filters that buzz into the vowels and consonants we recognise. Mouth Synth models exactly that: a glottal source driving a one-dimensional acoustic waveguide, the same physical approach Neil Thapen's Pink Trombone made famous, rebuilt here as a playable instrument rather than a toy.

The tract is a chain of short tube sections, each with its own cross-sectional area, connected as a Kelly-Lochbaum digital waveguide: sound reflects at every area change and travels back and forth, and the standing waves that survive are the formants you hear as a vowel. Moving the Tongue controls slides the tightest point of that tube forward and back and raises or lowers it, which is the whole difference between 'aah', 'eee' and 'ooh'. A separate Constriction pinches the tube somewhere specific — near the teeth for an 's', at the lips for an 'f' — and when it closes fully and reopens the model fires the little pressure transient that makes a 'p' or a 't' pop.

Because it is one tube it is monophonic, and that is a feature: like a real voice it cannot sing a chord, so moving between notes slides the pitch through everything in between. The Glide control sets how fast, from a snappy step to a long portamento wail. Tenseness and Breath trade the source between a pressed, buzzy fold vibration and an airy whisper, and the nasal branch — opened by the Nasal control's velum — lets sound leak through the nose for the hums and the 'm'/'n'/'ng' family.

This is the browser preview lane. The audible DSP is the restricted-TypeScript voice-mouth engine run in an AudioWorklet — the same source used by optimized browser and plugin builds — so nothing here is a throwaway. Its reverb is a bounded Freeverb inlined into the voice so the tail ships with it. And because the tract is just a set of numbers you can drive from anywhere, the module's camera mode maps your own mouth's openness, straight from MediaPipe face landmarks, onto the model's controls — the same landmark plumbing the Hand Mod module uses.

System requirements.

The downloadable Mouth Synth release supports the hosts and systems listed below.

  • VST3macOS · arm64

    Works in Ableton Live, Reaper, Cubase, Studio One, Bitwig and FL Studio.

Version 1.0.0

Build evidence

Every row below is a recorded build row or the recorded absence of one. Nothing here is inferred from what this module is meant to support.

Module
music.codex.mouth-synth v1.0.0
Built at
Closure hash
10b231cfb4ec…
Toolchain
  • scriptc 64acce1ae3b8…
  • moduleToolchainDist c621ffab721d…
  • pluginShellKitRuntime bca003784692…
  • faceShellGeneration 8533207ab81f…
  • uiPreservation cd28dbd7e3d6…
  • packagerVersion 3
Build result and download for each format
FormatResultDownload
Browser package (JS)
Builtweb

bundle sha256 f19150c5c050… · 390 KB

Built, but no downloadable archive was recorded.
Browser package (WASM)
Builtweb

bundle sha256 2da74cd57918… · 2.0 MB

Built, but no downloadable archive was recorded.
VST3
Builtdarwin-arm64Steinberg validator + VST3 host render: passed

bundle sha256 724205f1d77d… · 2.2 MB

CodexMouthSynth-vst3-darwin-arm64.zip

archive sha256 c89de69f5f34… · 2.2 MB · darwin-arm64

Audio UnitNot built

no recorded artifact row for au; native-lane-report.json is absent or records no au row for this module

Not built for macOS
CLAPNot built

no recorded artifact row for clap; native-lane-report.json is absent or records no clap row for this module

Not built for macOS, Windows or Linux
Standalone appNot built

no recorded artifact row for standalone; native-lane-report.json is absent or records no standalone row for this module

Not built for macOS, Windows or Linux

Parity

browser-js = browser-wasm = vst3 qualified against their own recorded digests. Not recorded: au, clap, standalone.

Presets

Start from a named sound, then adjust the instrument to make it yours.

InitDefaultOpen AahBright EeeBreathy WhisperOm Drone

Signal graph.

Experimental

Migration fallback: a page-only authored drawing, not yet runtime or export truth. Dashed cables carry modulation, not audio.

How it works.

The source is a Liljencrants-Fant glottal-flow model: one period of the classic LF waveform per pitch period, its shape set by Tenseness so a relaxed voice is rounder and a tense voice is sharper and richer in harmonics. Aspiration noise, band-limited around 500 Hz, is mixed in proportion to how breathy the source is, which is what turns the same tract from a sung vowel into a whisper of the same vowel.

That source drives the tract, a 44-section Kelly-Lochbaum waveguide run at twice the audio rate for stability. Each section has an area derived from its diameter, and at every junction a reflection coefficient sends part of the wave back — the accumulated reflections ARE the formants. The tongue and constriction controls rewrite the section diameters continuously (rate-limited, so the mouth moves at a plausible speed rather than teleporting), a nasal branch splits off at the soft palate with its own short waveguide, and turbulence is injected at any tight constriction to voice fricatives.

It is deliberately monophonic, because a single tube can only be one shape at a time. New notes retune the same glottal oscillator, and the frequency is smoothed toward its target over the Glide time, which is why the instrument slurs between pitches instead of stepping. The audible path is the restricted-TypeScript voice-mouth engine running in an AudioWorklet; it is matched to Pink Trombone musically, and optimized browser and plugin builds use the same source, so the preview and eventual plugin are one model, not two.

Goes well with.

Preview

Gong

A struck gong voice with a late shimmer.

Preview
Preview

Gamelan

Modelled bronze instruments with flexible tuning.

Preview
Preview

Vocoder

A channel vocoder for any live or recorded input.

PreviewNo build recorded