Control - Open MIDI controller platform for 128 grids

I was mainly thinking for small portable setups. With no computer. I guess what i was thinking is a script where you can place faders, toggle switches, (maybe lfo’s?) visualized on grid, but sent out through midi via norns.
If that makes sense.
For example, possibly controlling patches on zoia?

1 Like


i’ll brainstorm cause i think there might be something like that but i can’t remember the name of it

1 Like

There was a Max & Max4Live style script like this, but not for norns. I will find the script, but as it would be running on the computer it might not suit your needs.

Here you are:

1 Like

That would probably be super handy.
Unfortunately, my coding skills in Lua are completely non-existent. :confused:
Maybe I can track someone down who’d be willing to help me iron the idea out though. :man_shrugging:

Well, the real trick will be finding the time to learn. I work full time, do pedal demos on the side and help at a friends recording studio, wife and I have a 4 month old, and just found out we got another on the way. :sweat_smile:
But! I’ll save this and keep ya in mind if I can ever approach it.
Appreciate the offer btw!


Hey @dan_derks, great to hear from you! Here are some detailed repro steps for my issues with control.

OS: Mac OS Big Sur 11.4 (M1 MacBook Air) (although the same issues do arise in my Intel MacBook Pro running Catalina)
SerialOsc version 1.4.1 from GitHub
Grid: June 2021 128, using the stock USB-C cable that comes with the grid (and a USB-A to USB-C adapter on the Macbook side)

Using the files downloaded fresh from the control GitHub repo


[Actually, it doesn’t take much at all to reproduce the freezes. Just pressing around and doing stuff works sometimes for a while, but after a few switches back and from the shift menu, the grid lights freeze up. The exact series of steps below may not lead to a freeze every time, but if I play around with control for a bit, it tends to freeze]

  1. Unzip the folder and unzip
  2. Run sudo xattr -rd on the standalone application
  3. Plug in the grid (note: the same issue arises if I start the application first and then plug in the grid)
  4. Open the application. Grid lights up in the bottom lower corner (shift key). At this point I’m in performance mode.
  5. Press the shift key on the grid and select create mode, leaving it at fader
  6. Once I release the shift key, the bottom row of lights on the grid remains.
  7. When I try to create a fader by pressing on a random key on the grid, it does not show up on the grid, and the lighting on the grid is now frozen.
  8. I can tell the fader has been created, however, as MIDI Monitor is detecting midi messages out on IAC Driver Bus 1.
Max patch

[I’ve had some instances of greater success where the patch worked for longer before the grid froze, but I’ve not been able to identify why that sometimes happens. As above however, I’ll have instances when I’ll just use it for a bit and then the grid lights will hang at random times. The below is just one instance where it happened, although there’s no guarantee that the same steps will lead to a frozen grid.]

  1. Connect grid.
  2. Open control.maxpat in Max (v 8.1.11). Shift key on grid lights up.
  3. Select create mode, and select faders on grid. Release shift key. Place faders.
  4. Press shift key again and then let go. The grid freezes and the lights are no longer responsive.
  5. Blindly going to performance mode, however, I see control sending out MIDI messages as expected. No error message in the Max console.

Thanks so much for looking into this, dan! I’ll probably link to this in the control thread for more input in a bit, since it may be specific to control if no one else with the new grid has these issues.

Just to be clear I raise this here not with a view that you or monome should be bearing the brunt of any of this support relating to these scripts/apps, but just in case it has something to do with the backend and if it’ll be useful to help other grid users who want to use certain Max-based applications! Much appreciation as always for all your work.

1 Like

I will take a look as well when I’m back from holidays (don’t have a computer or grid with me). Never had any of this behaviour. I’m using control with a 2014 grid on Big Sur, but it’s been a while since I played with it…


closing the loop for @Fardles + @Gordiegoose – i’m able to repro the control freezing with my devices, will continue to investigate potential causes tomorrow!

mod note: @Fardles , @ithkaa + @Gordiegoose – i moved the convo about 2021 grid + control troubles from HELP! Setting up Grid, Serialosc not installing - #19 by Gordiegoose to here, as i’m unable to repro this behavior with other Max patches generally.


@dan_derks Thanks so much for looking into this. Did your testing reveal any difference between the 2021 grid and earlier editions? I’ve scoured the thread above and haven’t found any such behaviour before – if it isn’t the grids, perhaps something in Max has changed.

@ithkaa Thanks for checking in! Love the work that you’ve done here, and thanks so much for responding. Enjoy your holiday!!

Would appreciate if anyone else using control could give some input too!!

woop, yes, apologies for the incomplete note. previous gen grids with control are fine, but this doesn’t seem a global issue since other recent Max patchers (like Grainfields) don’t exhibit this behavior with the 2021. i don’t want to speculate about cause until i have more complete testing done, but will follow up soon :slight_smile:


closing the loop! @Fardles , thank you for such clear repro steps + helping suss this out, really helpful!!

investigation + discoveries!

i was curious what the difference between grainfields and control were re: LED drawing and stumbled on a difference in approach between the two patchers. @tehn was quickly able to identify that the redraw pattern control uses exposed a vulnerability in the new grid’s firmware, which can be fixed a few ways!

control utilizes a pattern of 128 simultaneous /level/set messages for redrawing, which is bottlenecking something in the new grid’s firmware (maybe USB, maybe LED buffering, Brian’s poking at it rn) which the old grid was able to push through. grainfields makes use of /level/row and /level/col to batch these LED redraws, which is why this isn’t reproducible with that patcher.

the recommended approach for batch-updating all of the grid’s LEDs is using /level/map, which updates quadrants of 8x8, eg:

/monome/grid/led/level/map 0 0 15 1 3 8 14 8 2 9 12 0 7 0 0 6 3 0 9 14 5 10 11 4 12 13 12 14 11 7 3 9 12 2 10 3 4 3 4 9 1 8 1 7 11 7 7 6 15 1 7 10 10 5 7 14 9 1 1 15 5 12 6 9 11 11

the first two integers represent the upper-left corner of the quadrant (0-indexed), so 8 0 would target the right quad of a 128 grid. the other 64 integers represent level values. the grid-howto.maxpat bundled in the monome Max package has a few examples.

of course, /level/set is a heck of a lot easier to manage in pure Max, so we’re working on we made a Max abstraction which can just be we plopped into control so that @ithkaa doesn’t have to repatch everything (or really much at all) anything, which will collects and executes /level/set messages as a single /level/map packet (which is closer to how the norns API works) on a reasonable timer.

a fix (needs testing!)

i added the quad mapping approach as described in the foldout above, which seems to be working locally for me. @Gordiegoose + @Fardles , would love some testing on each:

control m4l.amxd (<~~ max for live device) (<~~ max patcher)

once we have these two tested as working with the 2021 grid, i’ll submit a PR to @ithkaa and let them do the final once-over + standalone compilation!



Thanks @dan_derks! I already thought the grid/led/level/set approach would be the culprit. I remember the steep learning curve when patching ‘control’. Level/set was more comprehensible to me at that time and my grid didn’t complain so I went with it :wink:. Curious to see your solution … will check it out ASAP when I return home …

1 Like

Absolutely brilliant @dan_derks and @tehn ! The Max version works like a charm for me, no hiccups at all. Thanks so much for looking into this, and so glad there was a fix. Unfortunately, I’m not able to test M4L given my lack of Ableton Live Suite

1 Like

If it makes any difference to you, I couldn’t get the M4L version working and I have Suite. The Max version is fantastic tho and I’ve used it a bit when traveling in a previous life.

you mean the version posted above doesn’t work but previous versions did? or historically, you’ve not been able to get the m4l version up and running?

the scope of changes in what i posted is purely redrawing the grid, so it shouldn’t negatively affect usability. but happy to investigate any grid redraw troubles!

I was using previous builds about 8 months ago and just couldn’t get it to actually run any of the tools in life. Nothing was responding. The grid worked and responded fine. It might have been my misunderstanding of how the thing works. But the Max patch worked great and I’ve migrated a bunch of my work over to BitWig recently anyway. But I will try the new versions someday soon and if I have problems I’ll drop you a line.

1 Like

Hey @ithkaa ,

I am going to perform a poetry/sound set next weekend and I just wanted to drop by and say thank you! Control is such an intuitive App and super versatile. I hope you are good in these scary times and send a lot of love from Berlin! :pray:


@dan_derks Thanks again for solving this problem! I copied your solution to an updated version of (the Max patch of) control which I forgot to upload to GitHub:

control (587.6 KB)

Let me know when testing on the new grids is complete so I can make a standalone …

1 Like

for some reason I still get led issue :frowning:
using a 2021 grid and Max8

hi @ithkaa any update on somethinbg like this for a 256 grid?
I’m reallu really interested :pray:

1 Like