Norns: alternative grids

Thanks @zebra. I’m an inveterate tinkerer with limited actual programming skills, so the time was well spent learning how these things are supposed to function.

If anyone needs access to the Launchpad Mini Mk3 Programmer’s Reference Guide, it can be found here.

Got my Norns shield working today. Realise now that emulating a serialoscd server won’t work to get launchpads working with Norns. As Norns uses serial USB via libmonome to talk to grid, not serialosc.

So I’ll take a look at what appears to be the latest vgrid wip fork, @beepboop’s fork of @JaggedNZ’s vgrid work:

I can test first with an APC Mini. Then try to get it working with one, and hopefully two Launchpad Mini Mk3’s. I also have a Launchpad Mini Mk2 on its way for testing. Fun times!

1 Like

Fyi I finally got to testing my WIP branch again and it looks like resent upgrades have broken something. Hope to get a chance to debug soon.

1 Like

Ok, looks like I had some code that would get upset if random midi devices where plugged in at the same time.

For my fork ONLY try adding the following line to your desired script (around line 42 before
g = grid.connect())

local grid = include "midigrid/lib/mg_128"

This is a virtual 128 grid, you can swap between the two pages using buttons 5&6 at the top the launchpad mini.

Current known bugs:
Sometimes the wrong LED lights on the first column in particular. This is not as bad as I remember it, but it’s still happening and its very hard to figure out why.

Takt didn’t work at all last time I tried many months ago :man_shrugging:

I feel I must say this, I can’t recommend buying a new launchpad mini mk2 for the sole purpose of pairing it with Norns unless you are prepared to code to make it work, and even then I’d hesitate. But if you already have one or find one second hand for cheap … (and by cheap I mean like $20-30US)
And please please don’t buy an original launchpad, unless it’s for parts!

p.s. if you have 2 launchpad mk2 / mini mk2 then plug them both in via a USB hub. Enjoy :slight_smile:


I got a good deal on a new Mini Mk3, and while I am not ever likely to use Ableton (I run Linux on my PC) it’s already proving useful for controlling an Axoloti and perhaps some other things.

I’ll give this a go - thanks!

1 Like

After much tweating, I’ve added configuration for LaunchPad Mini Mk3, and a fix for LP Mini Mk2, to the midigrid library - thanks!

To work with LP Mini Mk3, you need to put LP in “programmer” mode: long press Session -> press orange “Stop/Solo/Mute” -> see “programmer” scroll by -> then press “drums” or “keys” to leave Session config.

Changes to midigrid are in this PR:

I’ve managed to get two LaunchPad Mini Mk3 working together as a Grid 128, by overriding grid in scripts.

local grid = include "midigrid/lib/mg_128"


FYI I’ve merged your code into my fork and made a few tweaks. Most devices should support 2x for 128 buttons now.

I like your rotation hack for the second device, proper device rotation is still on my todo list but it gives me ideas…

Two questions:
Does the MK3 present two midi interfaces? I’m trying to understand “MK3 2 2”

Have you had any issues with random LEDs lighting occasionally? Particularly in the first column?

Does the MK3 present two midi interfaces? I’m trying to understand “MK3 2 2”

LP Mini MK3 presents two MIDI interfaces over USB:

  • LPMiniMK3 DAW I/O (or first interface): For use by DAWs and similar software to interact with the MK3’s Session mode.
  • LPMiniMK3 MIDI I/O (or second interface): Used to receive MIDI from Custom modes; and to provide external MIDI input or Light controls in Lighting Custom Modes and Programmer mode.

Have you had any issues with random LEDs lighting occasionally? Particularly in the first column?

Initially I missed adding launchpad.auxcol, auxrow, quad_leds configuration, and did have some unexpected LEDs lit. But not noticing random grid LEDs now.

Changing MK3 colour via MIDI note on/off allows you to use a preset MK3 128 colour palette.

We could set RGB colour values via a MK3 LED lighting SysEx message to get closer to the varibright Monome hue/brightness.

Thanks, that really clears things up for me.

Hopefully I can spend some more time on this over the next few weeks, merge beepboops branch in for APC support and create a proper Vgrid v0.1 release.

I’m debating a “hard fork” at this point, curious what other peoples opinions are on this.

1 Like

Thanks for all your efforts; I’m not certain that I’ve been getting the merged files correctly from Github at all, but I’ve not been able to get any response from the Launchpad Mini Mk3 beyond the top-left upper vertical arrow to light up when calling midigrid from any script so far (which is more than I was getting beforehand!)

Thanks for all your efforts; I’m not certain that I’ve been getting the merged files correctly from Github

To use the code changes I got working:

ssh we@norns.local # pw: sleep

cd dust/code
# backup your existing midigrid, e.g. mv midigrid midigrid-bak
git clone
cd midigrid
git checkout vgrid_wip_apc # <- branch with LP Mini Mk3 device config

And add include into other scripts, as explained on the Usage Instructions page.

Thanks very much @delineator.

I successfully installed midigrid from Github using your instructions.

When running from Awake with midigrid called as per the instructions, I get:

including /home/we/dust/code/awake/lib/halfsecond.lua
including /home/we/dust/code/midigrid/lib/midigrid.lua
including /home/we/dust/code/midigrid/lib/vgrid.lua
including /home/we/dust/code/midigrid/lib/supported_devices.lua

etc; again, only the top-left up arrow button lights up (this is in Programmer mode)

Running the led_test.lua script from the minigrid install, however,

results in:

# script load: /home/we/dust/code/midigrid/led_test.lua
# cleanup
# script clear
ERROR (i2c/hp) failed to write
including /home/we/dust/code/midigrid/lib/midigrid.lua
including /home/we/dust/code/midigrid/lib/vgrid.lua
including /home/we/dust/code/midigrid/lib/supported_devices.lua
Default 64 layout init
vgrid init with layout: 64
core midi devices
6 table: 0x362638
5 table: 0x497800
finding device: 6 with name Launchpad Mini MK3 2
Dev6 FD launchpad_minimk3
finding device: 5 with name Launchpad Mini MK3 1
6 launchpad_minimk3
Loading midi device type:launchpad_minimk3 on midi port 6
including /home/we/dust/code/midigrid/lib/devices/launchpad_minimk3.lua
including /home/we/dust/code/midigrid/lib/devices/generic_device.lua
Connected devices:
6 table: 0x4f6ae0
attaching devices:
6 table: 0x4f6ae0
pset >> write: /home/we/dust/data/system.pset
# script run`

etc, with only the top-left button lighting up as before.

EDIT: I switched the previous


in Awake to

local grid = include(‘midigrid/lib/midigrid’)

And now it works (sort of)! Amazing - now to update the other scripts.

1 Like

If you try
local grid = include "midigrid/lib/mg_128"
Then you should be able to switch between two halves of a 128 led grid.

1 Like

I’ve tried mg_128 in Awake, and got the top-left up-arrow button lit up - pushing it or the unlit down-arrow button next to it does nothing.

However, if I then swap out of Programmer mode on the Launchpad Mini Mk3 by going to something like Legacy mode (in which the lit 8x8 grid buttons work, but with the wrong positions), then switch back to Programmer mode, I get the arrow-down button in the top-left corner lit, and the other half of the 128 grid from Awake working. Pushing the lit arrow-down button (or any of the non-8x8 grid buttons) does nothing still.

A bit of swapping back and forth between Legacy modes eventually gets back to the left-hand side of the 128 grid on Awake, with the top-left up-arrow lit (and still unresponsive).

Throughout, I get orange lights flashing across the 8x8 Programmer mode grid – as well as into the right-hand colum of > keys – in positions which seem to reflect the Launchpad’s MIDI note positions in response to Awake (this also happens in the Keys page of the Live mode, but in what I assume are correct note positions and not always in orange).

Update: using mg_128 and a freshly arrived second Launchpad Mini Mk3 works excellently well - some scripts (eg Timber Player) don’t seem to have keys light up, but they do function. Off to enjoy the wonderful Buoys script in all its glory. Huge thanks are due to everyone who made midigrid possible!


Also - kudos for @delineator for including midigrid support in the source code of his intriguing Pitfalls script:

1 Like

2 posts were merged into an existing topic: DIY monome compatible grid w/ Adafruit NeoTrellis

Apologies for bringing this back up way after you resolved your issue but I have been reading this thread very closely today as I am very keen on getting MLR working with my launchpad (just standard, not pro). It seems we have had the same issue but I cannot work out what I’ve done incorrectly.

I have downloaded the midigrid stuff from github and put it is dust > codes folder.

I also got MLR64 and stuck that in the dust > codes > MLR folder.

I then copied exactly what you put in your successful MLR64 script to override the global grid object:

local grid = include(‘midigrid/lib/midigrid’)

Here’s a screengrab of the script.

I have a very long error message from Matron, although it looks like the Launchpad is detected. Here’s the last part of that in case it helps…

If it wasn’t already completely obvious I’m a musician, not (yet!) a programmer, the github instructions are tricky for me to follow so I may have missed something important here. Anyone know what I can try? Thanks a lot.

@sophie I’ve got a similar issues, but after reboot norns, the scripts worked fine. Have you tried after a reboot?

@beepboop when I test some of scripts (awake and zellen) the pads on my launchpad blinking sync on tempo… is that normal? in the case is so annoying.

Someone knows how to tweak this to stop the blinking pads?


@nokulture I’ve had success using 2 LP mini mk3 with a patched version of minigrid. See this post for code in a pull request link: Norns: alternative grids

I’m not sure if my patches have made it into the official minigrid release yet? Or there might be a vgrid release that contains them?

1 Like

Hi, thanks!
But I’m new in norns environnement, and I don’t understand which is the portion of code you have used to fixed the blinking pads. I have a launchpad pro (mk1) and I guess I have to fix in their midigrid scripts, could you tell me more specific? Thx.