Circuit Drift Labs
SIGNAL WORKBENCH / LOCAL AUDIO

BrowserToneGen

Audio engine ready
Stopped

Choose a preset or edit a tone, then Start.

Tone bank

Related frequencies

Pairs and chords choose their own count. Groups append to the bank. Headphones separate binaural channels.

Stereo tests

Signal sequence

Set a tone's signal mode to Sequence. Each stage replaces that voice's waveform and frequency; routing, gain and modulation still apply.

Automation recipes

Load a recipe, then Start. Open the tone’s Automation section to edit it. Loading replaces the bank.

Bass drop: sine, 160 → 40 Hz over 3 s. Sweep: 40 → 1000 Hz over 10 s. Sub test: 20 → 100 Hz over 15 s. Sub drop: 80 → 25 Hz over 4 s. These use exponential frequency ramps with Loop off. Wobble: 60 Hz sine with amplitude 0.08 → 0.65, sine curve, 0.5 s cycle, Loop on (2 Hz).

For tempo sync, cycle seconds = 60 ÷ BPM ÷ cycles per beat. At 120 BPM, use 0.5 s for quarter notes or 0.25 s for eighth notes. Add a pan lane for stereo motion or automate modulation depth for changing intensity.

Save keeps the editable sound locally; Export JSON backs it up. Render WAV saves the generated audio, including automation. It renders from time zero; live MIDI knob movements change settings. Use Record live output to capture those movements; WAV renders the saved configuration.

MIDI controls

MIDI disconnected. Chrome/Edge recommended; access is requested only on Connect.

Connect, choose a target and control, Learn CC, move a knob, then Add mapping. MIDI channel and ranges are saved with presets. Press Start for audio. Automation takes priority over MIDI on the same control; remove that lane to use a knob.

Timer & transport fades

Timer repetitions restart the voice schedule; oscillator phase remains continuous. Rest silences the output.

Save audio

Live recording captures MIDI and manual changes as WebM/Opus, Ogg/Opus or M4A (browser dependent). Render WAV below saves uncompressed audio from time zero.

Offline render uses current configuration from time zero.

Pitch & frequency calculator

Diagnostics

Logs stay local. Enable with ?debug=1. No audio, account or analytics data is sent anywhere.

Using BrowserToneGen

Enable a tone, choose its frequency and waveform, then Start. Add tones to mix frequencies. Solo plays only enabled solo voices; muted voices stay silent. Space starts/stops when focus is outside a control. Escape immediately silences the engine.

Levels & phase

Amplitude sets a voice's peak scale; dB is the equivalent amplitude ratio. Master dB changes the mix. Auto headroom divides by the summed amplitude budget and shows the compensation. The final 0.98 hard ceiling prevents sample overload and reports limiting. This is a digital test source; hardware volume and calibrated SPL are external.

Phase is an offset in degrees. Equal frequencies share a start clock; 180° reverses a sine. Both-channel center pan sends −3 dB to each channel; dedicated left/right routing sends full voice amplitude.

Sweeps, steps & sequences

Choose a tone's mode. Sweep moves between the frequency and end frequency; logarithmic spacing changes frequency exponentially with time. Ping-pong is an up/down round-trip. Steps divide that range into discrete frequencies. Transition is the fraction of each dwell used for a linear glide. Sequence uses the shared stage editor. Voice delays and duration apply to all modes.

Noise & harmonics

White is broadband random noise; pink emphasizes lower octaves, brown emphasizes bass, blue and violet emphasize high frequencies. Noise coloring is approximate. Additive combines signed harmonic coefficients; patterns generate odd/even or waveform approximations, then you can edit each coefficient.

Modulation & stereo

AM/tremolo change level. Ring multiplies by a sine LFO. FM changes frequency in Hz; vibrato depth is cents. Binaural pairs route nearby frequencies to separate channels; monaural pairs mix them. No therapeutic effects are claimed. Stereo utilities replace the current bank; related frequency groups append.

Automation & MIDI

Open Automation on a tone and add a lane. Choose a control, curve, From and To values, duration, delay, and optional loop. Ramps hold their final value; sine and triangle curves return to their starting value. Seconds are per complete cycle. Pause freezes automation. Stop and Start restart it. MIDI controls use CC mappings: Connect MIDI, select the input, target and control, Learn CC, move a knob, set the range and Add mapping. Automation overrides MIDI on its target. Use the Automation recipes panel for bass drops, sweeps, sub tests, sub drops and wobbles.

Export & storage

WAV renders from time zero using current voice and master settings. Mute exports silence. Normalization rescales the rendered peak to 0.95; it cannot undo limiting. Mono averages L/R, so opposite polarity can cancel. Long 96 kHz renders use substantial memory; use shorter renders on phones. Save/rename/duplicate/delete local presets or import/export versioned JSON. Share links contain the configuration and never autoplay.

Scope, spectrum and meters show generated digital output, not microphone response. Waveforms use anti-alias approximations; high-frequency modulation can introduce aliasing. A browser/soundcard cannot guarantee calibrated analog frequency, voltage, SPL or ultrasonic output.

Run locally through python -m http.server 8000. AudioWorklet needs HTTPS or localhost.

About

BrowserToneGen , a Circuit Drift Labs browser signal workbench.

Static ES modules, shared DSP, AudioWorklet playback and Worker WAV rendering. No accounts, uploads or telemetry. Presets and troubleshooting logs remain on your device.

Beta: device calibration, grey noise, speech announcements and offline PWA caching are outside this release. Chromium browser behavior is verified where reported in the repository audit; hardware listening and cross-browser testing are separate.

Documentation & source
\n