Midigrid: use launchpads & midi grid controllers with Norns

Hej there,
I am new here an a total Norns/Coding n00b.
I was able to get Midigrid running with my Launchpad MK3 with “Awake” and “Cheat Codes 2” but I can’t get it to work with “Granchild” or “Glut”.
I placed the Code where it was suggested on the Norns Community Midigrid page:

Am I missing something? Do you have similar issues?
Your wise eyes and minds would be much appreciated and helpful for a humble unknowing novice in this game :woman_mage: Thank you a lot

Hey, for grandchild you need to add it to the file in the lib folder inside the grandchild folder.

lib > grandchild.lua

rather than the main grandchild.lua file as you have shown in the picture.

for me adding
local grid = util.file_exists(_path.code.."midigrid") and include "midigrid/lib/mg_128" or grid
to glut works but…

because glut calls the lib>grandchild.lua file perhaps it won’t work until you make the edit to that file.


Hej Thank you so much! I was daft enough not to find the lib file.
It is working now and adding some delight to my evening :purple_heart::rainbow::sparkles::vulcan_salute:


Hi, new norns user here and new to this Lines forum too. Quite excited to start my journey with this beauty!

I have a launchpad (mk2?) and want to use it as a grid for norns shield.
I just have one question: I have found two midigrid github repositories… one from jaggednz (presented at the beginning of this thread) and one from miker2049 (https://github.com/miker2049/midigrid).
I hope I am not offending anyone when I ask this but are they related in any manner? What are the main differences?

Thanks in advance!

Edit: Just noticed that the one from jaggednz is a fork from miker2049.

Short version is I forked and rewrote a lot of the code to support things like multiple launchpads :slight_smile:


Otis (the fabulous cocoquantus manifestation by the excellent Justmat) would be great with grid interaction. I found this by cfd90 already built for grid64 monobright so hopefully it would be easy to bend into working for midigrid? I would be so delighted, Otis is amazing!

1 Like

Huge and most sincere apologies if this has been covered before…

I’m attempting to get midigrid to work with a mismatched pair of LP Minis (Mk 1 and Mk 2) which, as I understand it, essentially function in the same way as one another.

I have followed the guide provided by @Helen and now the LPs are working within Awake with the left of the two LPs automatically rotated 45 degrees counter-clockwise (which is the layout I would like to use anyway - joy!). They only work as duplicates of one another, however.

From reading through the help and this thread, I would assume I need to use mg_128 in some capacity but if I replace the part of Awake where I’ve inserted midigrid with mg_128 it falls over (I realised that the error must be that my line was incorrect so I simply replaced it in Maiden, restarted the Norns and then all was well once more)

My question is: what do I need to alter in order to get the 2 LP Minis to operate as two halves of a 128 grid?

[As an aside, I noticed mention to ensuring that the LPs didn’t appear in Norns MIDI devices page, which they did, so I removed them from there, but that didn’t seem to achieve anything and also when I restarted the Norns they were discovered again and had returned to the MIDI devices list (as Launchpad & Launchpad Mini 8 respectively)]

Additionally: thank you so much for this @JaggedNZ - even though I’ve not managed to set it up yet, the fact that Perplex On has it working with his LP Mini 3s and creates beautiful music/video with it is more than sufficient for me to owe you a debt of gratitude right off the bat!

Just to check, when you use this code in the awake script it fails:

local grid = util.file_exists(_path.code.."midigrid") and include "midigrid/lib/mg_128" or grid

Have you tried having maiden open while starting up the edited script and seeing if any errors are showing?

I have two LP mk1 minis and just having them plugged in with this addition to the script and midigrid installed works.

So not sure if anything extra is needed for different models.

1 Like

Fantastic! That works perfectly! Thank you immensely - I now have a fully operational 128 Grid-a-like and am about to explore!


Thanks for the assist, I was about to grab the code from my Norns then remembered I’d removed it for reasons…

@petesasqwax the mini mk1/mk2 combo is exactly what my dev setup is, so most things should work well with mg_128, with a few exceptions.

Have fun! :slight_smile:

1 Like

This is amazing - it was all I could do to drag myself off to bed last night instead of exploring scripts until dawn! I knew the Minis would come in handy again one day and dear gods haven’t they just?!


@DegradedEcho and anyone else that’s interested if you add the standard midigrid include code (below) at line 257 under the —grid before the grid connect line it should work. I haven’t tested though so let my know if this doesn’t work.

local grid = util.file_exists(_path.code…“midigrid”) and include “midigrid/lib/midigrid” or grid

1 Like

Trying to get the Launchpad Pro to work with my factory Norns using [this](file:///Users/william/Downloads/Norns%20Shield%20and%20Launchpad%20Mini%20Mk3.pdf) guide from Helen and not having any luck. The Launchpad does show up in my midi devices (inexplicably, three times), and I’ve edited the script as shown exactly in the guide, slept and powered back up, etc. The Launchpad is definitely receiving power (does the light show and all), but pressing the pads doesn’t make any changes to awake, and I don’t get any visual feedback on the pad (in programmer mode).

Any help would be very appreciated <3

edit: looks like links are broken? Here’s a version that’s more easily paste-able.


Hi guys, I’m a complete newbie, I’ve tried adding mg_128 on line 22 in awake.lua to get it running with my APC Mini, but it doesn’t work. I really don’t understand how to proceed at all even after looking at the official documentation. I’m at a complete loss…

And one more thing, whenever I connect my APC Mini, Cheat codes 2, Pitfalls or nmelodymagic all crash, error init or error load fail. I must have been missing something somewhere. But I don’t know what it is…

Sorry the APC mini codes still a little broken :grimacing:
Anybody who managed to fix it able to help @beenome out?

Lovely to see the Novation channel giving Norns some love in the recent stream by Lines’ own @CALC

It’s not quite the music grant @tehn contemplated in his most recent appearance on the always excellent @darwingrosse podcast but maybe that’s on the way :wink:


Hi Guys,

I was trying to get two launchpad X’s working with the norns. I have set both into programmer mode and set the second device to ID 2. Both devices have latest Firmware. Only one seems to work when I add either of the following to awake.lua (before grid.connect())

local grid = util.file_exists(_path.code.."midigrid") and include "midigrid/lib/mg_128" or grid


local grid = include("midigrid/lib/mg_128")

Matron always reports the following.

# script clear
# script load: /home/we/dust/code/awake/awake.lua
including /home/we/dust/code/awake/lib/halfsecond.lua
including /home/we/dust/code/midigrid/lib/mg_128.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
vgrid init with layout: 128
5	 core midi devices
Scanning for supported midigrid devices:
virtual	 -- Not supported
Launchpad X 1	 -- Not supported
launchpad_x	 -- Supported
Launchpad X 1 2	 -- Not supported
Launchpad X 2 2	 -- Not supported
3	launchpad_x
Loading midi device type:launchpad_x on midi port 3
including /home/we/dust/code/midigrid/lib/devices/launchpad_x.lua
including /home/we/dust/code/midigrid/lib/devices/launchpad_rgb.lua
including /home/we/dust/code/midigrid/lib/devices/generic_device.lua
Attaching devices:
# script run
loading engine: PolyPerc
>> reading PMAP /home/we/dust/data/awake/awake.pmap
m.read: /home/we/dust/data/awake/awake.pmap not read.

The script loads, but only one Launchpad has buttons enabled or active. The only Launchpad that appears to work is the first one by order of USB ports. The second one doesn’t load at all.

It looks like the second device detection code is not picking it up. You could manually add it in the lib supported devices lua file.

Something like adding:

{ midi_base_name= ‘launchpad x 2 2’, device_type=‘launchpad_x’ },

Please let me know if this works.

Hi JaggedNZ,

Thank you for the response. Right after I wrote that post, I figured it out. I saw the Matron output and figured out the combination.

I have given you a pull request to your github repo with the working code addition to support a second Launchpad X. So far it has been stable with the scripts using mg_128. This should help the folks with the second device.


I’ve been using the amazing midigrid mg_128 with 2 x Launchpad Mini Mk 2 on my Norns Shield without issue for a couple of months but they occasionally swap themselves on booting up. The right LP will now display the leftmost 8x8 grid and the left LP the rightmost 8x8 grid. I can of course just reposition and rotate the LPs to correct this but it’s annoying due to cables, etc. It doesn’t seem to be script specific but I can’t predict when it might happen. I’ve unsuccessfully tried to get my head around midigrid device boot order. Swapping the USB ports does nothing, a system>reset sometimes works and I can’t find an obvious file that might hold a list of devices that I could edit. Any ideas what’s happening?

1 Like