Getting Started
- Click Connect MIDI and allow browser MIDI access if requested.
- The tool will automatically switch to the Global tab where you can choose your MIDI Input and MIDI Input Channel.
- Select one of the six instrument presets at the top: Air, Reed, Solo, Brass, Pad, or Lead.
- Choose the Expression Source, Controller 1, Controller 2, Controller 3, and any Spatial Controller 1 / Spatial Controller 2 sources.
- Adjust controls across the tabs, then play your WARBL and watch the Live Status panel and optional Output Level and MIDI Stream displays.
- If the Audio status still shows Suspended, click or play again after connecting MIDI so the browser can start audio.
Global Tab
The
Global tab contains settings that apply to the entire tool and are not stored separately for each preset.
MIDI Input – Select the connected WARBL or other MIDI device this tool listens to.
MIDI Input Channel – Choose which MIDI channel the synth receives on.
Expression Source – Select which incoming MIDI value drives the main expression level:
- Breath (CC2)
- Expression (CC11)
- Volume (CC7)
- Timbre (CC74)
- Channel Pressure
- Note Velocity
- Fixed Full Volume
- Edit Custom CC…
Edit Custom CC… – Prompts you to enter a specific MIDI Control Change number from
0 to 127.
Use this when your controller sends a CC that is not listed in the menu. The selected CC is then used exactly like the built-in controller choices, and the assigned CC number will appear in the
Live Status display.
Pitch Bend Range – Sets the overall pitch bend range in semitones. The default is ±2 semitones.
Additional
Pitch Bend Down Scale and
Pitch Bend Up Scale controls are available on the
Controller tab.
Controller 1,
Controller 2, and
Controller 3 assign the three main extra controller streams used for per-patch modulation on the
Instrument tab, such as expression, tone, brightness, and resonance routing.
Spatial Controller 1 and
Spatial Controller 2 are separate dedicated controller assignments used only by the
Spatializer tab for panning and distance modulation.
Each controller selector can be set to:
- Off
- Mod Wheel (CC1)
- Breath (CC2)
- Volume (CC7)
- Pan (CC10)
- Expression (CC11)
- Timbre (CC74)
- Channel Pressure
- Edit Custom CC…
The normal controller assignments and the two spatial controller assignments are all
global settings. They apply to the whole tool and are not saved separately for each patch.
Instrument Tab
The
Instrument tab contains the main per-preset sound controls.
Click
Rename… to change the patch name.
On any of the slider controls, use the keyboard left and right arrow keys for precise value changes.
The controls appear in this order:
Filter Base – Sets the patch’s starting filter cutoff in Hz.
Lower values make the sound darker and more closed. Higher values make it brighter and more open.
Tone – Moves the sound from warmer/rounder to more focused and forward.
Brightness – Adjusts upper harmonics and filter openness.
Resonance – Adjusts the resonant character of the instrument.
The Instrument tab also includes twelve per-patch controller scaling controls:
Controller 1 → Expression – Scales how much Controller 1 adds to expression level for this patch.
Controller 1 → Tone – Scales how much Controller 1 shifts the tone for this patch.
Controller 1 → Brightness – Scales how much Controller 1 brightens the sound for this patch.
Controller 1 → Resonance – Scales how much Controller 1 adds resonance for this patch.
Controller 2 → Expression – Scales how much Controller 2 adds to expression level for this patch.
Controller 2 → Tone – Scales how much Controller 2 shifts the tone for this patch.
Controller 2 → Brightness – Scales how much Controller 2 brightens the sound for this patch.
Controller 2 → Resonance – Scales how much Controller 2 adds resonance for this patch.
Controller 3 → Expression – Scales how much Controller 3 adds to expression level for this patch.
Controller 3 → Tone – Scales how much Controller 3 shifts the tone for this patch.
Controller 3 → Brightness – Scales how much Controller 3 brightens the sound for this patch.
Controller 3 → Resonance – Scales how much Controller 3 adds resonance for this patch.
These twelve scaling controls are stored
per patch. A setting of
0.00 disables that routing for the current patch.
Controller Response Varies by Patch
Controller-based modulation is applied within each patch’s synthesis model.
Because patches use different filter ranges, harmonic content, and processing, the same controller movement may have a strong effect on one patch and a subtle or nearly inaudible effect on another.
This is expected behavior.
Attack – Sets how quickly the sound reaches full level after note-on.
Release – Sets how long the note fades after release.
Vibrato Rate – Sets vibrato speed.
Vibrato Depth – Sets vibrato depth in cents.
Drone Note – Selects which pitch the drone voice will play when toggled on.
Transpose – Shifts playback up or down in semitone steps.
Master Tuning – Fine-tunes the overall pitch by cents; the
Reset button returns it to 0 cents.
Spatializer Tab
The
Spatializer tab adds psychoacoustic positioning to the
main voice only. The drone does
not use the Spatializer.
Spatial movement is controlled by the two dedicated global assignments on the
Global tab:
Spatial Controller 1 and
Spatial Controller 2.
The Spatializer tab contains per-patch depth controls that determine how strongly those two spatial controller streams affect the current preset.
Spatial Controller 1 → Left / Right – Sets how strongly Spatial Controller 1 moves the main voice across the stereo image.
Spatial Controller 1 → Far / Close – Sets how strongly Spatial Controller 1 moves the main voice farther away or closer.
Spatial Controller 2 → Left / Right – Sets how strongly Spatial Controller 2 moves the main voice across the stereo image.
Spatial Controller 2 → Far / Close – Sets how strongly Spatial Controller 2 moves the main voice farther away or closer.
Left / Right uses stereo level to position the main voice from left to right.
Far / Close uses level and spectral darkening cues to move the main voice farther back or closer. Some patches may work better with this than others.
Controller direction is interpreted like this:
- Left / Right: minimum = left, maximum = right
- Far / Close: minimum = far, maximum = close
These routing amounts are stored
per patch, so each preset can respond differently to the same two spatial controller assignments.
If
Spatial Controller 1 or
Spatial Controller 2 is set to
Off, that controller will not affect spatial movement even if the per-patch routing amounts are greater than zero.
Spatialization is applied to the already mixed
main voice output before the shared reverb path. The drone stays in the normal centered signal path.
Synthesis Tab
The
Synthesis tab gives deeper control over oscillator setup, filtering, drive, envelope shape, and modulation response.
On any of the slider controls, use the keyboard left and right arrow keys for precise value changes.
The controls appear in this order:
Osc 1 Waveform – Chooses the waveform for oscillator 1 and controls the tone color of that layer.
Osc 1 Pitch Ratio Coarse – Sets the main pitch ratio as an integer multiple of the played note (0–8). The final ratio is limited to 0.125–8.5 when combined with the ratio fine adjustment.
Osc 1 Pitch Ratio Fine – Applies a small offset (±0.5) for detuning, beating, or subtle harmonic shifts. Click the displayed value to reset to zero.
Osc 1 Level – Sets the relative mix amount of oscillator 1 within the patch mix.
Osc 2 Waveform – Chooses the waveform for oscillator 2 and controls the tone color of that layer.
Osc 2 Pitch Ratio Coarse – Sets the main pitch ratio as an integer multiple of the played note (0–8). The final ratio is limited to 0.125–8.5 when combined with the ratio fine adjustment.
Osc 2 Pitch Ratio Fine – Applies a small offset (±0.5) for detuning, beating, or subtle harmonic shifts. Click the displayed value to reset to zero.
Osc 2 Level – Sets the relative mix amount of oscillator 2 within the patch mix.
Osc 3 Waveform – Chooses the waveform for oscillator 3 and controls the tone color of that layer.
Osc 3 Pitch Ratio Coarse – Sets the main pitch ratio as an integer multiple of the played note (0–8). The final ratio is limited to 0.125–8.5 when combined with the ratio fine adjustment.
Osc 3 Pitch Ratio Fine – Applies a small offset (±0.5) for detuning, beating, or subtle harmonic shifts. Click the displayed value to reset to zero.
Osc 3 Level – Sets the relative mix amount of oscillator 3 within the patch mix.
Each oscillator uses a coarse + fine pitch ratio. Click the fine value display to reset the fine adjustment to zero.
Sub Osc Level – Controls the level of the sub oscillator, which adds a lower octave or reinforcing tone beneath the main oscillators.
Set this lower for a cleaner sound, or increase it to add weight and depth.
Texture / Noise – Adds breath, reed, bow, or edge depending on the preset.
Attack Curve – Controls the shape of the note attack, not just the attack time.
Release Curve – Controls the shape of the note release, not just the release time.
Expression Curve – Controls how quickly the sound opens up as expression increases.
Chorus Boost – Adds additional chorus intensity on top of the preset default.
Vibrato Delay – Delays the start of vibrato after note-on.
Expression → Vibrato – Makes stronger expression add more vibrato depth.
Drive Curve – Controls the character of the saturation stage from softer to more aggressive.
Filter Q Scale – Controls the resonance strength of the main tone filter.
For the most natural results, start with small changes to oscillator ratios, oscillator levels, filter Q, and drive shape.
Controller Tab
The
Controller tab defines how incoming MIDI affects playback.
Mono Priority – Chooses which note plays when overlapping:
- Last Note
- Highest Note
- Lowest Note
Pitch Bend Down Scale /
Pitch Bend Up Scale – Adjust bend sensitivity independently.
Expression → Brightness – Makes louder playing brighter.
Enable Portamento – Enables pitch glide between notes.
Portamento Time – Controls glide speed.
Reverb / Volume Tab
Controls reverb effects and output level.
Reverb Style – Room, Hall, Plate, Ambient, or Church.
Reverb Dry – Direct signal level.
Reverb Wet – Reverb level.
Reverb Pre-delay – Delay before reverb starts.
Reverb Tone – Bright/dark reverb balance.
Drone Volume – Level of the drone voice.
Master Volume – Overall output level.
Live Status Meters
The
Live Status panel displays incoming performance data from your WARBL in real time.
Current Note – Shows the note currently sounding after any
Transpose setting is applied.
Drone – Indicates whether the drone is currently on or off.
Expression – Shows the raw incoming value from the selected
Expression Source on the
Global tab:
- Breath (CC2), Expression (CC11), Volume (CC7), or Timbre (CC74) → shows that CC value
- Channel Pressure → shows channel pressure
- Note Velocity → shows the velocity of the currently sounding note
- Fixed Full Volume → remains at maximum
- Custom CC → shows the incoming value for the selected CC number
CTRL 1,
CTRL 2,
CTRL 3,
SPATIAL 1, and
SPATIAL 2 – Show the raw incoming values for the controller sources selected on the
Global tab.
Controller and spatial meters are shown only when their corresponding
Controller Source (on the
Global tab) is enabled. If a controller is set to
Off, its meter is hidden from the display.
These meters show
input values only. They do not reflect how those values are used or scaled by the current patch.
For example, if
Controller 1 is assigned to
Mod Wheel (CC1), the
CTRL 1 meter shows incoming CC1 data. How that affects the sound depends on the patch settings, such as:
- Controller 1 → Expression
- Controller 1 → Tone
- Controller 1 → Brightness
- Controller 1 → Resonance
The same applies to
CTRL 2,
CTRL 3, and the
Spatial Controllers.
Enable live status – Shows or hides the panel. When disabled, the display is hidden and meter updates are suspended.
These meters are intended as a quick visual check that your WARBL and controller assignments are sending the expected values.
Instrument Presets
Air – Clean whistle-like tone (best starting point).
Reed – Clarinet-style sound with strong odd harmonics.
Solo – Smooth expressive lead, great with portamento.
Brass – Bright, buzzy tone with bite.
Pad – Soft ensemble-style sound.
Lead – Bright electronic lead.
Drone Feature
The drone adds a continuous backing note.
How to use:
- Send a MIDI note 51 (D#3 / Eb3) Note On message to toggle the drone on or off
- Velocity controls the initial level of the drone when it is turned on
The drone:
- Uses the same basic preset processing chain as the main flow (oscillators, filters, drive, chorus, and reverb), with a few drone-specific adjustments
- Uses a faster attack for a more stable, pipe-like response
- Follows Transpose and Master Tuning
- Does not respond to pitch bend (remains fixed in pitch)
- Disables automatically when changing presets
- The drone does not respond to live Controller 1 / Controller 2 / Controller 3 expression, tone, brightness, or resonance modulation
Performance Tips
Best starting setup:
Air preset, Note Velocity expression, ±2 bend, portamento off.
If you hear glitches:
- Turn on Enable lower CPU use mode
- Turn off Enable output level meter and Enable MIDI stream
- Close other tabs
Reset Buttons
Reset Current Preset to Defaults restores only the currently selected voice to its default settings, including
Transpose and
Master Tuning.
Global settings such as
Expression Source,
MIDI Input,
MIDI Input Channel,
Pitch Bend Range,
Controller 1,
Controller 2,
Controller 3, and global display/performance options are not changed.
Reset All Presets to Defaults clears saved changes for all voices and restores the current voice to its default settings, including
Transpose and
Master Tuning.
Global settings such as
Expression Source,
MIDI Input,
MIDI Input Channel,
Pitch Bend Range,
Controller 1,
Controller 2,
Controller 3, and global display/performance options are not changed.
If you hold down the
Shift key while clicking the
Reset All Presets to Defaults, after a confirmation, you can clear all browser saved data and reset the tool to a brand-new freshly installed state.
Saving and Loading Settings Files
WARBL Sound Lab lets you save your complete setup—including all preset settings, per-preset adjustments, and global options—to a file, then load it later or share it with others.
-
Export Settings:
Click Export Settings to download a file containing all preset settings, per-preset adjustments, and global configuration.
-
Import Settings:
Click Import Settings and select a previously saved file to restore your sounds and configuration.
-
What gets saved in the file:
• All preset parameters (tone, filter base, brightness, texture, vibrato, portamento, transpose, master tuning, reverb, controller scaling, etc.)
• Preset-specific adjustments and overrides
• Global controller settings, including Expression Source, Pitch Bend Range, MIDI Input Channel, Controller 1, Controller 2, Controller 3, Spatial Controller 1, and Spatial Controller 2
• Per-patch Controller 1 / Controller 2 / Controller 3 scaling amounts for expression, brightness, tone, and resonance
• Per-patch Spatial Controller 1 / Spatial Controller 2 scaling amounts for panning and distance
• Performance and UI options, including MIDI logging, output meter, live status visibility, and Lower CPU use mode
-
What does not get saved in the file:
• The selected MIDI input device
• Browser or hardware-specific connection state
Lower CPU Use Mode
Enable lower CPU use mode reduces processor usage by simplifying parts of the internal synth voice while leaving the current reverb system in place.
This can help on slower computers, when running many browser tabs, or if you hear glitches, crackles, or delayed response.
When enabled, some patches may sound a little less rich or animated, especially the more layered sounds such as
Pad, but the tool should remain more efficient overall.
You can further reduce CPU usage by disabling the output level meter and the MIDI stream logging.
Fullscreen Mode
The
Fullscreen button (
⛶) in the upper-right corner of the page toggles fullscreen mode on and off.
Using Fullscreen Mode can help keep
WARBL Sound Lab more visible while you play and reduce distractions from other browser interface elements.
In most browsers, you can also press
Esc to exit Fullscreen Mode.
⚠️ Keep This Tab or Window Visible While Playing
WARBL Sound Lab works best if visible on screen while you are playing.
All modern browsers (Chrome, Safari, Firefox, etc.) automatically reduce performance for content that is not visible to conserve CPU and battery. This includes:
- Tabs that are not currently active
- Windows that are fully covered by other windows
This behavior cannot be disabled by the tool.
When WARBL Sound Lab is not visible, incoming MIDI data from the WARBL (breath, expression, channel pressure, pitch bend, etc.) may not be processed smoothly.
This will cause:
- Reduced responsiveness
- Stepped or uneven dynamics and pitch
- Audio glitches, clicks, or pops
As soon as the tab or window becomes visible again, normal performance will resume.
Important: This limitation affects all web-based audio tools.
Best experience: Keep WARBL Sound Lab in the foreground, or if using a separate window, make sure some portion of it remains visible at all times.
Signal Flow Diagram
WARBL Sound Lab uses a real-time audio signal chain that converts incoming MIDI into a synthesized audio signal using oscillators, filtering, modulation, and spatial effects.
The diagram below shows how audio flows from MIDI input through the main voice and optional drone to the final output.
How the signal flows:
- MIDI input provides note, velocity, expression, and pitch bend data
- The main voice generates sound using oscillators and noise sources shaped by the current preset
- A filter stage shaped by Filter Base, Brightness, Tone, and optional expression-based brightening shapes the harmonic content before the drive stage
- Modulation and controller routing (expression shaping, tone, brightness, resonance, and vibrato) add movement
- Chorus widens and thickens the sound
- Dry signal and reverb are mixed together before the final output
Main vs Drone behavior:
- The drone uses the same basic preset processing chain as the main flow (oscillators, filters, drive, chorus, and reverb), with a faster attack and a few drone-specific adjustments
- The drone has a faster attack and a fixed expression level set at trigger time
- The main voice responds continuously to expression and pitch bend
- The drone does not respond to pitch bend or live expression changes
- The drone does not respond to live Controller 1 / Controller 2 / Controller 3 expression, tone, brightness, or resonance modulation
- Main and drone voices run in parallel and are mixed together before reverb and final output
Troubleshooting
If you do not hear sound:
• Make sure MIDI access was granted.
• Verify the correct MIDI device is selected.
• Check that the correct
MIDI Input Channel is selected.
• Try clicking
All Notes Off if a note gets stuck.
• If
Audio still shows
Suspended, click or play again to let the browser start audio.
If you hear pops or other glitches:
• Turn on
Enable lower CPU use mode.
• Disable
Enable output level meter and
Enable MIDI stream.
• Close other browser tabs or programs that may be using CPU resources.
Browser Compatibility
This tool requires a browser that supports the
Web MIDI API.
If your browser does not support WebMIDI, MIDI devices will not appear, and the tool will not function.
Recommended browsers:
• Google Chrome (Windows, macOS, Linux)
• Microsoft Edge (Windows, macOS)
• Opera (desktop versions)
• Chromium-based browsers that support WebMIDI
Not currently supported:
• Safari (macOS and iOS)
• Firefox (not officially supported; may work inconsistently)
• Web MIDI Browser app for iOS
• Most mobile browsers

WARBL Configuration Tool
The
WARBL Configuration Tool button in the upper-left corner of the page opens the official
WARBL Configuration Tool in a new browser tab.
This allows you to adjust fingering patterns, pressure sensitivity, MIDI output behavior, and pitch bend settings while using
WARBL Sound Lab.
You can find a PDF of all of the WARBL fingering pattern charts here:
More WARBL Sound Modules
Celtic Sounds is my other WebMIDI sound module for the WARBL.
While
WARBL Sound Lab focuses on a smaller set of flexible synth-style voices that you can shape in real time,
Celtic Sounds is designed around a collection of per-note sampled acoustic instrument sounds for playing traditional Irish and Scottish music.
Tip Jars
This tool was created by
Michael Eskin.
If this tool has been useful to you, please consider supporting ongoing
development by tossing a few bucks into one of my online tip jars.
Venmo
@MichaelEskin