CHMBR (v1.11)

Reference Manual

Overview

CHMBR ("chamber") is a browser-based tool for exploratory listening and composition. It generates and spatializes six independent noise sources (or "nodes") arranged around the listener, with controls for each node distributed in a circle on the screen; front-left, front-center, front-right, rear-left, rear-center, and rear-right nodes. These interact with a shared environmental noise bed (controlled by a central hub of sliders) and a modulation system (controlled by two sets of sliders on the flanks) to produce tonal and textural fields with organic movement. CHMBR is intended to provide highly detailed control over what is ultimately a limited palette (of noise, in this case). I designed this utility for focus and meditation, but also a vector for material exploration and certainly a synthesis tool that can be used for music composition.

While you can use this app with speakers, the stereo image is designed to resolve in 3D and therefore requires headphones for the full effect. Likewise, you can use this on a smartphone, but the controls are very dense and much easier to navigate on larger screens.

One of the first things you'll notice is that the interface is largely abstract and has very few labels. This approach to the UI both explodes and simplifies the relationship between cause and effect. As someone experienced in sound synthesis, this helps erode my preconceptions while avoiding having to hide controls behind menus. For someone who isn't, it erodes the technical barriers that can make advanced or modular synthesizers feel off limits.

Get Started

The fastest way to see the system at work is to toggle the audio engine on using the circle above the central cluster of controls, and then to try out activating the Randomizer (the lightning bolt icon). This is a good way to quickly cycle through some of what CHMBR is capable of, as well as start to spot where the different controllable parameters are. Beyond that, just start clicking things and dragging them around; listen for what changes.

Layout

The screen is organized around a central ring with six node clusters arranged above and below it — three front nodes across the top half and three rear nodes across the bottom. To the left and right of the ring are the LFO (low frequency oscillator) panels, which drive most of the automation of different parameters. Inside the central ring are the environmental noise controls.

The main transport and utility controls sit on the outer edge of that ring at specific clock positions:

Node Controls

Each of the six nodes has five interactive areas ("orbs"). All draggable controls are hexagonal with a black center. Double-clicking any control resets it to its default value (though these are somewhat arbitrary and basically just correspond to the startup state). The output of the nodes themselves are a combination of digital noise and a modal resonator.

The five orbs are differentiated by size: the source orb is the largest, the material orb is medium-large, the regularity orb is medium-small, and the morph orb is the smallest. The decay ring encircles the source orb.

Source Orb (largest)

The large central orb for each node. Dragging within it controls two parameters simultaneously on an X/Y pad.

Decay Ring

A large ring surrounding the source orb. Dragging rotates the indicator around the ring.

Material Orb (medium-large)

A medium-large satellite orb with a two-axis arrangement.

Regularity Orb (medium-small)

A medium-small satellite orb with a two-axis arrangement.

Morph Orb (smallest)

A small single-axis satellite orb.

Environmental Noise Bed

Inside the central ring is a row of slim vertical sliders controlling a shared stereo noise bed that underlies all six nodes. This is a separate, continuously running signal that sounds more like analog noise. If the nodes can be seen as foreground, this would be the background. It provides ambient texture and spatial context. When the nodes are active the noise bed level is ducked a little for clarity.

The sliders are ordered left to right as follows:

Level

Overall gain of the environmental noise bed.

Cutoff

Filter cutoff frequency. Controls the brightness of the noise bed. Range is 350 Hz to 8 kHz.

Spread

Stereo width. Low values are mono; high values produce a wide, immersive stereo field via mid/side processing.

Motion

Depth of the internal motion envelope; how much the noise bed breathes, swells, and opens over time. At zero the bed is static.

Rate

Speed of the motion oscillators. Low is very slow and oceanic; high produces faster rhythmic pulsing.

Shape

Morphs the motion envelope from a natural, wave-like swell (left) toward a rhythmic gate with sharp attack and decay (right).

Grain

Granular burst density. At zero there is no grain effect. Increasing it introduces intermittent amplitude bursts of varying length, creating a granular or stuttering texture.

Formant

Formant filter depth. Blends in two slowly drifting bandpass filters tuned to vowel-like frequency regions, lending the noise bed a quasi-vocal or resonant quality.

Tremolo

Amplitude modulation depth. Three inharmonic sine waves are summed to create an irregular tremolo. The rate is linked to the Rate slider.

Filter Mode

Morphs the filter character from low-pass (bottom) through band-pass (middle) to high-pass (top) using a state-variable filter.

Comb

Comb filter depth. Adds metallic resonance by feeding the signal through a short delay line with feedback. The delay time drifts slowly, producing a shifting metallic colour.

NOTE: The ghost indicator on each slider shows where the parameter will peak with the current Motion and Rate settings.

LFO Panels

To the left and right of the central ring are two banks of vertical sliders — the LFO modulation system. Each LFO is a sine wave that continuously modulates one of the node parameters. This means that each LFO controls a given parameter for every node at once. This creates a relationship across the entire sound engine, while allowing each manual control to act as an offset for this modulation.

The left bank controls LFO rate; the right bank controls LFO depth. The ten rows correspond to the ten modulatable node parameters: Level, Frequency, Density, Wet, Decay, Regularity, Cluster, Bandwidth, Damping, and Material.

A small arc drawn around each rate slider's thumb shows the LFO's current phase position.

You can see the effect of each LFO by looking for the moving ghost indicators (colored dots) across the nodes.

Rate Sliders (left bank)

Sets the speed of each LFO. Range is approximately 0.008 Hz (one cycle every two minutes) to 12 Hz on a logarithmic scale. Scroll wheel also adjusts. Double-click resets to default rate.

Depth Sliders (right bank)

Sets how far each LFO shifts its target parameter away from its user-set value. At zero there is no modulation; at full the LFO sweeps half the parameter range above and below the current setting. Double-click resets to 0.5.

LFO On/Off Toggle

The upward-pointing triangle above the rate bank. Enables or disables all LFO modulation globally. When disabled, sliders dim and all parameters hold their user-set values exactly.

Freeze

The snowflake icon to the left of the LFO toggle. Freezes all LFO phases in place — modulation continues to be applied at the current phase values, but no LFO advances. Useful for locking a particular modulation moment.

Rate Randomize

Downward triangle below the rate bank. Randomizes all ten LFO rates simultaneously.

Depth Randomize

Downward triangle below the depth bank. Randomizes all ten LFO depths simultaneously.

Depth Presets

Four small triangles above the depth bank set all depths at once to fixed values: 75%, 50%, 25%, and 0% (off). The 0% button is tinted red.

Global Controls

Start / Stop (12 o'clock)

Starts and stops the sound engine. The circle dims when stopped and glows when running.

Master Volume (6 o'clock)

Controls overall output level. Drag within the orb — distance from centre maps to volume. Scroll wheel also adjusts. Double-click resets to 90%.

Randomizer (2 o'clock)

The lightning bolt button randomizes all node and environmental noise parameters, as well as all LFO rates and depths simultaneously. The master volume and the level for the environmental noise bed are not affected.

Artist Save State Loader (2 o'clock)

This button allows a user to browse and load built-in preset save states from select artists.

Save State (7–8 o'clock)

Saves the complete current state — all node parameters, environmental settings, LFO values, oscillator phases, and master volume — to a JSON file.

Load State (7–8 o'clock)

Opens a file picker for loading a previously saved state file. Parameters are applied immediately.

Record (10 o'clock)

Taps the master output and records it to a WAV file. Click once to start recording — a small timer appears above the button showing elapsed time. Click again to stop. You'll be prompted to name the file before it downloads.

Recordings are lossless 16-bit stereo WAV at whatever sample rate your audio context is running (typically 44.1 or 48 kHz). The output is peak-normalised on stop, so the file will never clip regardless of how loud the session is running.

NOTE: WAV recordings are uncompressed and held entirely in RAM until you stop. This is fine for typical takes, but be mindful with very long sessions — an hour of stereo audio at 44.1 kHz occupies roughly 1.2 GB of memory. If you are recording for extended periods, keep an eye on system performance and consider breaking long sessions into shorter takes.

Interaction Notes / Reminders

State Files

State files are plain JSON. They capture all node parameters, environmental settings, LFO configuration, oscillator phases, and master volume. They are forwards-compatible — older files will load correctly in newer versions, and any parameters not present in an older file will remain at their current values.

The one aspect of a state that cannot be fully reproduced on load is the internal memory of the modal resonator filters. These settle within approximately one to two seconds after a state is loaded, after which the sound will be very close to the original.


Version Log

v1.11
Added Save State loader for built-in artist presets. These will be added over time without updates to the version number.
v1.1
Added audio recording. Output is lossless 16-bit stereo WAV with peak normalisation applied on stop. Recordings are named manually via a dialog on stop.
Fixed a bug where LFOs had become disconnected from the audio engine and were not modulating any parameters.
v1.0
Initial release.