Mouse (updated with: usb keyboard + mouse)


mouse is a script for Norns heavily inspired by Laurie Spiegel’s Music Mouse.

It is both a sound maker and a sequencer of other instruments (and sometimes both).

It is controlled both by Norns/Grid gestures (human), and looping patterns (computer).

It quantizes both pitch and time.


  • Norns
  • Grid (optional)


  • Connect to Maiden on your Norns
  • Search for mouse and thebangs, and install both scripts
  • Reboot Norns (required)

Now, you can run mouse!


Here are the basic controls. See below for a tutorial and more detailed explanations!

ENC1 x
ENC2 y
ENC3 clock division
KEY2 hold to mute, tap to retrigger
KEY3 toggle clock mod

KEY1 alt

ALT + ENC1 scale
ALT + ENC2 voice mode
ALT + ENC3 pattern index
ALT + KEY2 voice enable toggle
ALT + KEY3 pattern toggle



At the core of mouse is the X/Y grid and cursor. You can think of each axis and the units of the grid as a musical keyboard. The cursor’s location on the grid is controlled by you. Norns encoders 1 and 2 control the X and Y coordinate of the cursor, respectively. The higher the cursor is on the given axis, the higher the note(s) are that will trigger, and vice-versa.

By default, the X axis controls chords and the Y axis controls a melody. Whenever there is a new clock pulse (time quantization), mouse will take a look at the position of the cursor. If the X axis has changed since the last clock pulse, a chord will ring out. If the Y axis has changed, a melodic note will ring out. Any notes played are quantized to the selected scale (pitch quantization).

If you would like to navigate the grid-space without triggering notes, hold key 2 while moving. Letting go of key 2 will trigger the selected notes. You can tap key 2 at any time to manually trigger the selected location, even if there has been no movement since the last note trigger event.

Norns encoder 3 controls the clock division at which mouse operates (1x, 2x, 4x, 8x). To toggle random modulation of clock division, tap key 3.

Visit the SYNTH parameters menu for control over the sounds generated by mouse. You can select from a number of synth engines, add a delay effect (DELAY menu), and modulate parameters (including delay settings) with four LFOs (LFOs menu).

mouse has a second page of controls, accessed by holding the alt button (key 1). See below for more details…



The pitches mouse plays are quantized to a scale. To select a scale, hold alt and scroll encoder 1.

For additional control, visit the MOUSE parameters page. This allows you to specify a root note to build the scale from. The default is C. Performative transposition within the scale is supported as well, but this requires a Grid. See the “Grid” section below for details.

Voice Modes

mouse includes two algorithms that convert the cursor’s X and Y coordinate into pitches to trigger. The default is melody, as described above. Also provided is pairs, where both the X and Y coordinates each control two pitches separated by a standard interval. Personally I find pairs nice for playing pads. To switch between these, hold alt and scroll encoder 2.

Each voice in mouse can be toggled on or off. Triggering fewer voices reduces the textural density of the sound. To individually control voice state, visit the MOUSE parameters menu. To quickly toggle between low (one voice per axis) and high density (two or three voices per axis, depending on mode), hold alt and tap key 2.


On top of manual X/Y coordinate control, you can play patterns that dance around the cursor in time and grid-space.

To select a pattern, hold alt and scroll encoder 3. To toggle pattern playback, hold alt and tap key 3.

Each pattern is internally composed of a separate X and Y loop. These loops can have different lengths (for phasing) and specify the number of steps to add or subtract (quantized) from the base cursor position on each clock division. When playing a pattern, use knobs 1 and 2 to transpose it through the grid. When switching patterns, both the X and Y loop counters will reset to the first note.

The contents of a pattern are not currently user-editable or visible.

MIDI Output

Instead of, or in addition to, making sound itself, mouse can control external hardware via MIDI. Navigate to the MOUSE parameters page, and set output mode to either midi or thebangs + midi.

Both the X and Y axis may be assigned to a specific MIDI virtual port and channel, and can have independent note lengths (envelope sustain phase) and trigger probabilities.

Idea: use Thebangs to play musical notes, and simultaneously trigger percussion sounds with MIDI at a lower probability.

Sound Engine

As mentioned above, mouse uses Thebangs to make sound. In addition to this, a Softcut-based delay and Lua-based LFOs are provided. See the SYNTH, DELAY, and LFOs parameter pages for more details.


While it is entirely possible to play mouse only using your Norns, adding a Grid allows for a gestural approach (kind of) similar to the original Music Mouse experience.

Currently, the Grid implementation is optimized for the 64 layout. The controls are as follows:

1 2 3 4 . . V v
x y . . . . Y X
. . . . . . . .
. . . . . . . .
c c c c . . . /
. . . . . . . .
o m . . . . . .
p p p p p . . P
  • 1 2 3 4 enable and disable voices. V and v toggle between melody and pairs mode.
  • x y transpose the cursor downwards by the transposition interval (set on the MOUSE parameters page). X Y transpose upwards. This is useful for peprforming chord changes with patterns.
  • c c c c switches between clock division rates, and / toggles random rate modulation.
  • Holding o engages 1hand mode, meant to replicate the original dual keyboard/mouse interaction of Music Mouse. Holding o will cause encoder 1 to control the Y axis (instead of X), and encoder 2 to become disabled. Switch between holding and letting go of o to control Y and X, respectively. This frees up your right hand (previously using encoder 2 to navigate the Y axis) to manipulate other settings on the Grid.
  • p p p p p select patterns, and P toggles pattern playback.

Note that currently it is only possible to control transposition via Grid.


  • Crow support
  • Varibright support
  • USB mouse and keyboard (?)

Follow development or help contribute on Github!


Thanks to Laurie Spiegel, whose original Music Mouse design keeps surprising me the more I learn about it!

Thanks to everyone who checked out and provided feedback about this script before release: @oootini, @renegog, @imwaiting, @sademik, @infinitedigits.

Thanks to @zebra for Thebangs, @Justmat for hnds, and @tehn for halfsecond.

Thanks to jgs for the mouse ASCII art.


wow! stoked on this. read alot about this spiegel software but never thought I’d get a chance to try it out. cant wait to have time to install. So many new and creative Norns scripts coming out recently. this community is AWESOME…


Another sick script :slight_smile: Many thanks


Thanks all :slight_smile: Just added to Maiden and updated installation instructions above.

Don’t forget to install Thebangs and reboot too!


this is fantastic, congratulations on the release!

1 Like

Oh this is awesome, cannot wait to try this out! Nice work!

1 Like

yep! excited for this i’ve been using the web browser version lately and loving it but to have it hands on in Norns is :ok_hand:

also what is making the soft delicious pad sound in the second demo?


Cool to see something based on Music Mouse :slight_smile: I still need to get an olde mac working to run my bought copy of that…

Uhh obvious question: would it be somehow possible to control this with an actual mouse? :slight_smile:


@Cementimental So… there is actually USB mouse support hidden away in the code already :smirk:

I commented it out because I’ve been having trouble getting Norns to consistently identify and connect to my mouse, and the values produced by it are a bit jumpy and hard to control at the moment (needs smoothing? or maybe my mouse is terrible).

But if you want to try it out, go to line 262 in the code and delete the two -- dash characters at the beginning of this line before setup_mouse:

--setup_mouse()  -- Revist this, a bit experimental and crazy at the moment.
1 Like

yes! think i just coaxed some of the best sounds i’ve made on norns with this. been listening to a ton of her work lately, super inspiring all around.


think i just coaxed some of the best sounds i’ve made on norns with this

20 frickin’ characters of :heart: :heart: :heart: :heart:

Glad you’re enjoying it :slight_smile: I’ve also been listening to a lot of Laurie’s music while working on this script!


@leescan The second demo is mouse + Nord Lead 2.

The light sine wave pads are mouse, and the other two sounds are two channels/patches of a Nord Lead triggered by MIDI sent from mouse. Everything is sent back into Norns and mixed through mouse’s built-in delay!

X is sending MIDI to Nord Lead channel 1, Y to Nord Lead channel 2, and both have a low trigger probability so they don’t ring as many times as the main mouse sound.

^ This is a great recipe I accidentally discovered for thickening up the sound of a mouse sequence :slight_smile:

1 Like

you’re solving so many problems for me

those light sine pads are very selected ambient works vol2


game over, this is everything. congratulations and thank you!


:tada::tada::tada::tada: v excited for this. Thank you!


Ah nice :slight_smile: Excited to try this soon

1 Like

Yes! Been a huge fan of Laurie Spiegel for years and always wanted to use her software.

Thank you for this! It sounds incredible!

~ one side note upon initial exploration ~ I noticed that when a pattern is running, if I move the Y position to the far upper region the pattern stops playing and will not restart. Is there a way to restart the pattern without reloading? Apologies if I’m overlooking something obvious.


Well done! I’m really excited to explore this script.

For folks who haven’t ever used the original Music Mouse software, there is an online emulator.

Also, @cfd90, it would be super lovely to see support added for Just Friends in addition to Crow.


Thanks everyone for checking out the script! :slight_smile:

Feel free to share recordings here, I’d love to hear how people are using it.

I noticed that when a pattern is running, if I move the Y position to the far upper region the pattern stops playing and will not restart.

@ntrncr I have a hunch this is the pattern causing an out of range MIDI note to be triggered. Could have sworn I fixed this, will take a look! Curious if it’s just the pattern that stops or the whole sound engine.

Also, @cfd90, it would be super lovely to see support added for Just Friends in addition to Crow.

@jaseknighter I can potentially look into this, but I don’t have a Crow (yet?) or a Just Friends so it might be hard for me to test / know what is useful for it to do. Maybe somebody with one could help out here?


Adding basic functionality for Crow and Just Friends is very straightforward. I’d suggest you search for ‘crow.output’ and ‘crow.ii.jf’ in awake’s awake.lua file to see an example. I’m also happy to test if it would be helpful.

1 Like