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.

Requirements

Installation

Now, you can run mouse!

Controls

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

Tutorial

mouse.png

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…

mouse2.png

Quantization

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.

Patterns

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.

Grid

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

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

Upcoming

Follow development or help contribute on Github!

demos

https://soundcloud.com/cdrake90/mouse-norns-demo (by @cfd90)

https://soundcloud.com/cdrake90/mouse-2-norns-demo (by @cfd90)

Thanks

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.