Troubleshooting
MIDI Issues
Section titled “MIDI Issues”Octave Numbers Don’t Match
Section titled “Octave Numbers Don’t Match”Resonon uses scientific pitch notation (C4 = MIDI 60). Ableton Live and some other DAWs display this as C3. This is a display convention difference — the MIDI note numbers are correct.
| Resonon | MIDI Note | Ableton Display |
|---|---|---|
| C4 | 60 | C3 |
| A4 | 69 | A3 |
| C5 | 72 | C4 |
No Sound
Section titled “No Sound”- Check MIDI track Monitor is set to In
- Verify MIDI From shows your port
- Confirm Track input is enabled in DAW preferences
- Check an instrument is loaded on the track
- Verify Resonon is connected:
midi_connected();
Port Not Found
Section titled “Port Not Found”- Run
resonon --list-portsto see available ports - Verify virtual MIDI is set up (IAC Driver, loopMIDI, etc.)
- Check the port name matches (partial names work)
Hanging Notes
Section titled “Hanging Notes”If notes get stuck:
- In Resonon: type
PAUSE; - In Ableton: double-click Stop button (sends all-notes-off)
- Restart Resonon (exits cleanly, sends note-offs)
Latency
Section titled “Latency”For lowest latency:
- Use a dedicated virtual MIDI port
- Reduce DAW buffer size
- Close other audio applications
Headless Mode
Section titled “Headless Mode”Run without MIDI for testing or development:
resonon --no-midi script.nonThe << operator silently does nothing in headless mode. Useful for:
- Testing pattern logic without DAW
- CI/CD pipelines
- Syntax checking
Audio Engine Issues
Section titled “Audio Engine Issues”No Audio Output
Section titled “No Audio Output”No audio output device found
- Check your system audio output is enabled and a device is selected
- On macOS, open Audio MIDI Setup and verify an output device is active
- On Linux, check PulseAudio (
pactl info) or PipeWire (wpctl status) is running - Close other applications that may have exclusive access to the audio device
Stream Errors
Section titled “Stream Errors”Stream config error: … / Failed to build stream: … / Failed to start stream: …
- Close other audio applications (DAWs, browsers playing audio)
- Check your audio device supports the requested sample rate
- Try a different audio output device
- Restart Resonon after changing audio hardware
Sample Rate Mismatch
Section titled “Sample Rate Mismatch”Input sample rate (X) must match output sample rate (Y)
When using audio input, the input and output devices must use the same sample rate.
- Open your system audio settings
- Set both input and output devices to the same rate (typically 44100 or 48000)
- On macOS, use Audio MIDI Setup to verify both rates match
Buffer Size and Latency
Section titled “Buffer Size and Latency”If audio crackles or has high latency:
- Reduce your system audio buffer size (256 or 512 samples is a good starting point)
- Close other audio applications
- On macOS, some audio interfaces let you set buffer size in Audio MIDI Setup
Sample and Kit Issues
Section titled “Sample and Kit Issues”Sample Not Found
Section titled “Sample Not Found”Sample file ‘X’ not found. Searched: [cwd, …]
- Check the file path — relative paths resolve from your script’s directory
- Verify the file exists at the expected location
- Check
kit_pathsin your configuration if loading from a kit directory - Only WAV files are supported — convert other formats first
Failed to Load Sample
Section titled “Failed to Load Sample”Failed to load sample: …
The file was found but couldn’t be read as audio.
- Re-export as standard PCM WAV (16-bit or 24-bit integer)
- Compressed formats (MP3, OGG, FLAC) and 32-bit float WAV are not supported
- Verify the file isn’t corrupted — try playing it in another application
Kit Loading Issues
Section titled “Kit Loading Issues”Failed to load kit ‘X’ into sampler plugin
- Check
kit.tomlsyntax — a missing comma or bracket will cause a parse failure - Verify all sample paths in
kit.tomlpoint to existing WAV files - Without a
kit.toml, WAV files in the kit directory are assigned sequential notes starting from C2
Missing Root Note
Section titled “Missing Root Note”Melodic samplers need a root note to pitch samples correctly.
- Provide the root note explicitly:
sampler("piano.wav", root: 60) - Or define it in
kit.tomlunder the sample entry - Without a root note, the sampler cannot transpose correctly
Plugin Issues
Section titled “Plugin Issues”Plugin Not Found
Section titled “Plugin Not Found”- Run
plugin_scan()first — this scans CLAP directories and builds the plugin cache - Check
plugin_list()to see what was found - Verify your
.clapfile is in a standard search path:- macOS:
/Library/Audio/Plug-Ins/CLAP,~/Library/Audio/Plug-Ins/CLAP,~/.clap - Linux:
/usr/lib/clap,/usr/local/lib/clap,~/.clap - Windows:
C:\Program Files\Common Files\CLAP
- macOS:
- Bundled plugins (e.g., the built-in sampler) don’t need scanning — they’re always available
Plugin Won’t Load
Section titled “Plugin Won’t Load”If a plugin is listed but fails to load:
- Verify the plugin architecture matches Resonon’s (e.g., arm64 vs x86_64 on macOS)
- Check the
.clapfile isn’t corrupted — re-download or reinstall the plugin - Some plugins have dependencies on system libraries — check the plugin vendor’s documentation
Plugin GUI Not Available
Section titled “Plugin GUI Not Available”Plugin does not support the CLAP GUI extension
Not all CLAP plugins provide a GUI. Bundled plugins (like the built-in sampler) have no GUI.
- Use
.params()to list all plugin parameters - Use
.set_param(name, value)to control parameters programmatically - If a third-party plugin should have a GUI, verify you have the latest version
No Plugin Cache
Section titled “No Plugin Cache”No plugin cache. Run plugin_scan() first.
The plugin system caches scan results for fast lookups. If the cache doesn’t exist:
- Run
plugin_scan()to scan all CLAP search paths - After scanning,
plugin_list()will show available plugins - You only need to rescan when you install or remove plugins
Common Language Errors
Section titled “Common Language Errors”Undefined Function or Method
Section titled “Undefined Function or Method”Undefined function ‘X’
- Check spelling — function names are case-sensitive
- Audio effect constructors are part of the prelude and available globally (e.g.,
Delay,Reverb) - Check the functions reference for the correct name
Missing Import
Section titled “Missing Import”Most “undefined” errors for user modules are caused by a missing use statement. Built-in audio effects (Delay, Reverb, Lowpass, etc.) are part of the prelude and do not require any import.
Type Errors
Section titled “Type Errors”Expected X, got Y
- Check argument types — passing a string where a number is expected is common
- MIDI note values should be integers (e.g.,
60, not"60") - Pattern values and literal values sometimes need explicit conversion
Argument Count Mismatch
Section titled “Argument Count Mismatch”‘X’ expects N arguments, got M
Check the functions reference for the correct signature. Common cases:
- Forgot a required argument
- Passed extra arguments to a method
Index Out of Bounds
Section titled “Index Out of Bounds”Index out of bounds: index N is out of range for length M
Arrays are 0-indexed. An array of length 3 has valid indices 0, 1, 2.
- Check your index value — use
.len()to verify array length - For cyclic access, use modulo:
arr[i % arr.len()]
Signal and Modulation Gotchas
Section titled “Signal and Modulation Gotchas”Zipper Noise
Section titled “Zipper Noise”Stepped or abruptly changing signals can cause audible clicks (“zipper noise”) in audio parameters.
Add .smooth(ms) to the signal to apply a one-pole lowpass filter:
lfo.smooth(10) // 5–20 ms is typicalPattern and Timing Issues
Section titled “Pattern and Timing Issues”Events Dropped After Nudge
Section titled “Events Dropped After Nudge”Events shifted outside the [0, 1) cycle boundary by .nudge() are filtered out. If events seem to disappear:
- Reduce the nudge offset magnitude
- Keep offsets well within the cycle range (e.g., ±0.1)
Swing Affects Odd Events Only
Section titled “Swing Affects Odd Events Only”This is standard swing behavior — even-indexed events stay on the grid, odd-indexed events shift forward. Swing is sugar for .nudge([0, amount]).
For per-event timing control, use .nudge() with a custom offset pattern instead.
Server Issues
Section titled “Server Issues”Cannot Connect
Section titled “Cannot Connect”- Verify server is running:
resonon server - Check port isn’t in use:
lsof -i :5555 - Verify firewall allows connections
- Try explicit host:
resonon server --server-host 127.0.0.1
No Output in VSCode
Section titled “No Output in VSCode”- Ensure code uses
PRINTorPUTfor output - Check Output panel in VSCode (select “RESONON”)
- Verify connection is established (status bar shows connected)
Errors Not Showing
Section titled “Errors Not Showing”- Ensure you’re connected to server
- Check Problems panel in VSCode
- Try running
resonon serverwith a fresh start
Server Won’t Start
Section titled “Server Won’t Start”- Check if port is already in use
- Try a different port:
resonon server --server-port 5556 - Check for permission issues (binding to 0.0.0.0)
See Also
Section titled “See Also”- DAW Setup — Virtual MIDI and DAW configuration
- VSCode Extension — Server and extension setup
- Samplers — Sample loading, kits, and root notes
- Effects — Audio effect chains and routing
- Plugins — CLAP plugin scanning, loading, and parameters
- Signals & Automation — Signal types, smoothing, and modulation
- Microtiming — Nudge, swing, and humanize
- Audio Input — Live audio input configuration
- Configuration — Kit paths, audio settings, and project config