Metrix (220104)

And another quick update with a few UI and preset improvements.
Readme should also be up-to-date.



save octave range & mute states in preset
use encoders to change octave range
show octave range on screen
duplicated shift / mod buttons on top row

Hey @kasperbauer this script is totally ace!

Been using it for the first time today and its exactly what I’ve been looking for to ping some filters.
However, this could totally be user error, but I’m not able to get crow to output anything when set to envelope. Triggers and gates seem fine but envelopes don’t seem to be outputting any voltage from either out 1 or out 3.
I’ve tried different pulses too and many A,S,R settings.
Had a time trying to capture anything in maiden as there are a lot of constant events scrolling through but with
a tempo of 7 BPM I managed a screen shot with the following (in case it has anything to do with it).

Would be great if you had any advice and apologies in advance if its my bad!!

Looks like the same error I encountered with the triggers. I’ll fix it asap. :slight_smile:

If you’re not willing to wait until the next version, replacing line 398 of sequencer.lua with the following should do the trick:

crow.output[(trackIndex * 2) - 1].action = "{to(5," .. a .. "),to(5," .. s .. "),to(0," .. r .. ")}"
crow.output[(trackIndex * 2) - 1]()

Don’t know why the shorthand won’t work anymore. :man_shrugging:

Thats done the trick!

Thanks so much for this @kasperbauer. It’s working a treat now… time to get ratcheting.

Great work.

1 Like

this is icing on the cake, too much good stuff. most excellent UI addition there



  • fix crow envelope output
  • add param to reset a track

I’ve poked around but can’t get midigrid working properly with Metrix on my 2 LPs. As there’s been a couple of updates since you posted your helpful code, just wondered if there’s something extra I need to do to get it functional. Thanks in advance for your time.



reset both tracks via params


grid mapping not restored on script clear
sequencer starting directly after loading
randomizing pitch not having immediate effect

Keen to get my 2 Launchpads working with this script. Using this workaround I was able to get some semblance of a grid working, but sadly the pads don’t quite correspond to the documented grid layout. The different functions do not seem to light up according to the original design.

1 Like

Can’t help you much with this as i don’t have a Launchpad, but maybe this has to do with the manual grid mapping? There’s a bug right now with the grid rotation (grid rotation to 90/270 deg not usable anymore · Issue #1418 · monome/norns · GitHub), so i had to map manually…

1 Like

Got it working with midigrid and my two launchpads!

-- manual grid rotation
--function grid:led(x, y, val)
--    _norns.grid_set_led(, y, 9 - x, val)
local grid = util.file_exists(_path.code.."midigrid") and include "midigrid/lib/mg_128" or grid
g = grid.connect()

Just comment the manual rotation code and add the usual midigrid code. Don’t use the code @bontric posted seem to be for an earlier version
@dondelion @Simone_Tomaselli hope it helps!


hello! is there any way to adjust gate length for regular “trigger” steps, like on the original metropolis?

edit: it also appears to hard-crash norns to disconnect grid while the sequencer is running.

is there any way to adjust gate length for regular “trigger” steps, like on the original metropolis?

Not yet. If you’re using crow, you could use the envelope output and set the asr to the appropriate values.

it also appears to hard-crash norns to disconnect grid while the sequencer is running.

I will look into it asap. :slight_smile:

1 Like

Hi there - I tried adding this code, and no luck whatsoever. There seems to be a tremendous lag on my LP Mini MK3, and whatever orientation I use doesn’t seem to match up with what is on the screen. I think it was working much better, although far from perfectly, before I updated the script :smiling_face_with_tear:. Would you mind posting a photo of how yours looks with these lines of code added?

Thanks for your help!

1 Like

Did you erased or commented those lines??

Thanks for your message! I did, in fact, comment those lines out. I am using a LP Mini MK3, which seems to be working fine in my other scripts where I have added the standard Midigrid code. Here, though, I see in Matron an endless string of “Coords 8, 13 (x,y) outside Virtual Grid!” errors no matter which button I press, and the LEDs don’t seem to correspond to either the buttons I press on the LP or what I would be expecting to happen based on the Github documentation/chart.

Any additional help you could provide would be appreciated! As I mentioned, things did seem to be better/more aligned before I updated the script - I don’t know if that may be a clue.

1 Like

metrix.lua (28.4 KB)

Here is the .metrix lua from my dust folder, try it! its working fine here with the dual miniMk3

Thanks! I will give it a try and report back.

Edit: Thanks! That works perfectly :slight_smile:.

In looking at your code, I see what I think I did wrong. Line 32 of the original code has g=grid.connect(). I placed the midigrid code before that, rather than keeping it where you had it. That seems to have been the difference.

For others who are as dense as I am, here is the snippet from the original code. Completely replace the text in bold below with @Klinik’s code, and then also delete the additional g=grid.connect() in bold shown below (should be on line 32).

– manual grid rotation
function grid:led(x, y, val)
_norns.grid_set_led(, y, 9 - x, val)

– restore default rotation on script clear
function cleanup()
function grid:led(x, y, val)
_norns.grid_set_led(, x, y, val)

g = grid.connect()

1 Like

Thanks thanks thanks!!! This is an absolute killer in a modular set-up! Thanks for the time and effort u put in it :blush:

1 Like