Monome norns (script ashsynth): OSC control from Claude, scripts and controllers
85 named commands to drive Monome norns over OSC — from Claude (MCP), live-coding environments or a MIDI controller.
- sourcemaker's documentation
- firmwareashsynth-de6f8ed
- real unitnot yet checked
Not checked on a real Monome norns yet. Own one? Load a sound or send a control, and tell us whether it worked.
- Maker
- Monome
- Version
- script ashsynth (nunosmash/ashsynth @ de6f8ed)
- Source
- maker's documentation
- OSC prefix
/norns_ashsynth
From the README of nunosmash/ashsynth at de6f8ed, licence Apache-2.0.
AshSynth
Demos: Demo 1 · Demo 2 (Shorts)
AshSynth is a monophonic synthesizer script for norns. It starts from a familiar dual-oscillator → LP filter → dual-ADSR layout, then adds norns-friendly UI and a few sound-design choices of its own. The screen stays live; parameters show as bar graphs so you can read the patch at a glance.
What it sounds like
AshSynth is designed to be a genuine standalone synth, capable of serving as a complete instrument in its own right.
- Mono voice — one note at a time, clear and direct; good for bass, leads, and short pads or sequences.
- Dual oscillators — wave, pitch, octave, level, and detune live on separate OSC1 / OSC2 pages so each source is easy to shape on its own.
- FM layer — a high-ratio FM voice in MIX; depth can be swept with the LFO.
- Split filter & amp envelopes — dedicated FENV and AENV pages; LINK ties base ADSR values together, and when LINK is on the amp envelope follows the filter envelope (including LFO filter-env modulation).
- Dual LFO — LFO1 and LFO2 each have rate, shape, master depth, and 16 destinations; both sum onto the same targets for layered modulation.
- Filter-env LFO (A/D/S/R) — LFO can modulate filter envelope Attack, Decay, and Release times (± around the knob) and Sustain level in real time.
- Delay & reverb — clock-synced delay (triplets, dotted notes, bars, and more) plus FreeVerb2 reverb, with light makeup gain so wet mixes do not collapse in level.
K1 + K3 randomizes for quick patch discovery; K1 + K2 restores factory defaults after experiments.
Use it
Start the bridge with this driver; it forwards named OSC commands to the software:
Then send OSC to 127.0.0.1:7777, for example:
From Claude or any MCP client, the osc-bridge mcp server exposes this driver as norns_ashsynth: ask “what can the Monome norns do?” and it reads this map with list_routes. See the MCP guide.
MIDI controls
85 controls, each with its number, its range and the name to send
OSC commands
| Command | Arguments | Name to send |
|---|---|---|
| Param | id: string, value: float | /norns_ashsynth/param/{id} |
| Param {set} {id} | set: string, id: string, value: float | /norns_ashsynth/param/{set}/{id} |
| Remote key | n: int, z: int | /norns_ashsynth/remote/key |
| Remote enc | n: int, delta: int | /norns_ashsynth/remote/enc |
| Remote brd | code: int, z: int | /norns_ashsynth/remote/brd |
| Param midi device | value: int | /norns_ashsynth/param/midi_device |
| Param midi channel | value: int | /norns_ashsynth/param/midi_channel |
| Param bend range | value: int | /norns_ashsynth/param/bend_range |
| Param osc1 wave | value: int | /norns_ashsynth/param/osc1_wave |
| Param osc1 level | value: float | /norns_ashsynth/param/osc1_level |
| Param osc1 detune | value: float | /norns_ashsynth/param/osc1_detune |
| Param osc1 pw | value: float | /norns_ashsynth/param/osc1_pw |
| Param osc1 pitch | value: float | /norns_ashsynth/param/osc1_pitch |
| Param osc1 octave | value: float | /norns_ashsynth/param/osc1_octave |
| Param osc2 wave | value: int | /norns_ashsynth/param/osc2_wave |
| Param osc2 level | value: float | /norns_ashsynth/param/osc2_level |
| Param osc2 detune | value: float | /norns_ashsynth/param/osc2_detune |
| Param osc2 pw | value: float | /norns_ashsynth/param/osc2_pw |
| Param osc2 pitch | value: float | /norns_ashsynth/param/osc2_pitch |
| Param osc2 octave | value: float | /norns_ashsynth/param/osc2_octave |
| Param noise level | value: float | /norns_ashsynth/param/noise_level |
| Param fm amount | value: float | /norns_ashsynth/param/fm_amount |
| Param glide | value: float | /norns_ashsynth/param/glide |
| Param glide mode | value: int | /norns_ashsynth/param/glide_mode |
| Param lp cutoff | value: float | /norns_ashsynth/param/lp_cutoff |
| Param lp resonance | value: float | /norns_ashsynth/param/lp_resonance |
| Param lp env amount | value: float | /norns_ashsynth/param/lp_env_amount |
| Param lp tracking | value: float | /norns_ashsynth/param/lp_tracking |
| Param filter attack | value: float | /norns_ashsynth/param/filter_attack |
| Param filter decay | value: float | /norns_ashsynth/param/filter_decay |
| Param filter sustain | value: float | /norns_ashsynth/param/filter_sustain |
| Param filter release | value: float | /norns_ashsynth/param/filter_release |
| Param filter env link amp | value: int | /norns_ashsynth/param/filter_env_link_amp |
| Param amp attack | value: float | /norns_ashsynth/param/amp_attack |
| Param amp decay | value: float | /norns_ashsynth/param/amp_decay |
| Param amp sustain | value: float | /norns_ashsynth/param/amp_sustain |
| Param amp release | value: float | /norns_ashsynth/param/amp_release |
| Param drive | value: float | /norns_ashsynth/param/drive |
| Param lfo rate | value: float | /norns_ashsynth/param/lfo_rate |
| Param lfo shape | value: int | /norns_ashsynth/param/lfo_shape |
| Param lfo master | value: float | /norns_ashsynth/param/lfo_master |
| Param lfo osc amount | value: float | /norns_ashsynth/param/lfo_osc_amount |
| Param lfo filter amount | value: float | /norns_ashsynth/param/lfo_filter_amount |
| Param lfo filter env attack amount | value: float | /norns_ashsynth/param/lfo_filter_env_attack_amount |
| Param lfo filter env decay amount | value: float | /norns_ashsynth/param/lfo_filter_env_decay_amount |
| Param lfo filter env sustain amount | value: float | /norns_ashsynth/param/lfo_filter_env_sustain_amount |
| Param lfo filter env release amount | value: float | /norns_ashsynth/param/lfo_filter_env_release_amount |
| Param lfo amp amount | value: float | /norns_ashsynth/param/lfo_amp_amount |
| Param lfo pw amount | value: float | /norns_ashsynth/param/lfo_pw_amount |
| Param lfo detune1 amount | value: float | /norns_ashsynth/param/lfo_detune1_amount |
| Param lfo detune2 amount | value: float | /norns_ashsynth/param/lfo_detune2_amount |
| Param lfo noise amount | value: float | /norns_ashsynth/param/lfo_noise_amount |
| Param lfo fm amount | value: float | /norns_ashsynth/param/lfo_fm_amount |
| Param lfo glide amount | value: float | /norns_ashsynth/param/lfo_glide_amount |
| Param lfo delay amount | value: float | /norns_ashsynth/param/lfo_delay_amount |
| Param lfo reverb amount | value: float | /norns_ashsynth/param/lfo_reverb_amount |
| Param lfo drive amount | value: float | /norns_ashsynth/param/lfo_drive_amount |
| Param lfo2 rate | value: float | /norns_ashsynth/param/lfo2_rate |
| Param lfo2 shape | value: int | /norns_ashsynth/param/lfo2_shape |
| Param lfo2 master | value: float | /norns_ashsynth/param/lfo2_master |
| Param lfo2 osc amount | value: float | /norns_ashsynth/param/lfo2_osc_amount |
| Param lfo2 filter amount | value: float | /norns_ashsynth/param/lfo2_filter_amount |
| Param lfo2 filter env attack amount | value: float | /norns_ashsynth/param/lfo2_filter_env_attack_amount |
| Param lfo2 filter env decay amount | value: float | /norns_ashsynth/param/lfo2_filter_env_decay_amount |
| Param lfo2 filter env sustain amount | value: float | /norns_ashsynth/param/lfo2_filter_env_sustain_amount |
| Param lfo2 filter env release amount | value: float | /norns_ashsynth/param/lfo2_filter_env_release_amount |
| Param lfo2 amp amount | value: float | /norns_ashsynth/param/lfo2_amp_amount |
| Param lfo2 pw amount | value: float | /norns_ashsynth/param/lfo2_pw_amount |
| Param lfo2 detune1 amount | value: float | /norns_ashsynth/param/lfo2_detune1_amount |
| Param lfo2 detune2 amount | value: float | /norns_ashsynth/param/lfo2_detune2_amount |
| Param lfo2 noise amount | value: float | /norns_ashsynth/param/lfo2_noise_amount |
| Param lfo2 fm amount | value: float | /norns_ashsynth/param/lfo2_fm_amount |
| Param lfo2 glide amount | value: float | /norns_ashsynth/param/lfo2_glide_amount |
| Param lfo2 delay amount | value: float | /norns_ashsynth/param/lfo2_delay_amount |
| Param lfo2 reverb amount | value: float | /norns_ashsynth/param/lfo2_reverb_amount |
| Param lfo2 drive amount | value: float | /norns_ashsynth/param/lfo2_drive_amount |
| Param delay sync | value: int | /norns_ashsynth/param/delay_sync |
| Param delay time | value: float | /norns_ashsynth/param/delay_time |
| Param delay division | value: int | /norns_ashsynth/param/delay_division |
| Param delay feedback | value: float | /norns_ashsynth/param/delay_feedback |
| Param delay mix | value: float | /norns_ashsynth/param/delay_mix |
| Param delay filter | value: float | /norns_ashsynth/param/delay_filter |
| Param reverb mix | value: float | /norns_ashsynth/param/reverb_mix |
| Param reverb room | value: float | /norns_ashsynth/param/reverb_room |
| Param reverb damp | value: float | /norns_ashsynth/param/reverb_damp |
The same MIDI as norns.vendor.fw-2.9.4, which this firmware shares.
Limitations
Source: the Lua source of the norns script ashsynth by Ash (nunosmash/ashsynth at de6f8ed), listed in norns.community. Shares the norns system OSC of monome/norns.vendor.fw-2.9.4 (port 10111, /param, /remote): give the norns' IP address as host override. Its own routes are the 80 parameter(s) whose id is written out in its source, read without running it, with range, options and default when written out too; set them while the script runs on the norns. 3 parameter call(s) could not be read without running the script (ids built at run time, values from variables) and are not mapped: reach them with the base driver's /param/{id}. Parameters added by libraries or engines outside the repository are not mapped either. A value goes in the parameter's units (an option's index from 1). MIDI is not mapped: the script's MIDI handling is its own and parameter MIDI mappings are learned by each user (PMAP). Untested on hardware.
Firmwares
The Monome norns runs 353 firmwares SynthHub maps, each with its own MIDI or another's it shares. All the devices with several: firmwares.
353 firmwares
Other sources
The Monome norns is mapped in 356 versions. per Electra preset, per Electra preset, per Electra preset.
Frequently asked questions
Can an AI agent like Claude control the Monome norns?
Yes: SynthHub's hosted MCP server knows the Monome norns's MIDI map, and its browser relay lets the agent send it parameter changes or load a sound, each sound change confirmed by you.