As the zero has begun to land in users paws, it becomes more clear how long it has been since the 256 was a part of the greater community. Many 256 compatible scripts and tools were developed in a bygone era. A decade plus is more than a generation in modern computing.
Many scripts do not run on Max 8, or use monomeserial communication protocols and more. We then have Norns scripts, that are fantastic, but mostly built for 128’s as that has been the standard for a while.
I think it would be useful to have a thread dedicated to looking at both the past and the future of scripting with the zero. Finding ways to update the old, out of date scripts to modern computing, while also sharing tips and tricks for how to move forward with this beautiful new instrument.
11 Likes
besides molar, are there any other monomeserial apps that were never updated for serialosc?
4 Likes
So, Molar has suffered an even worse fate than just the connection protocol, Molar was developed in 32bit, so MacOS is off the table all together.
But beyond the issue of monomeserial, lots of apps have similar, but differing issues to molar. For example, mlrv is missing some Java items to run right.
Apps like dj256 has protocol issues (if not deeper problems), mlr256 doesn’t seem to connect, tho I haven’t dug in more.
It seems that we’re going to be going from zero to 60 here, y’all. (Been looking to use that pun!)
4 Likes
So, I am hoping that this thread will help folks find their way with zero.
I want to share some good news, which is that the grid studies:
are a nice starting point if you are using Max.
zero is instantly recognized after you follow the steps in the “Prerequisites” section in the linked Grid Studies page.
The sequence of the studies/patches takes you through first steps of having Max talk to the zero, and zero talk to Max.
You will see that it is written for 128 grid, so that is where the custom work begins:
But an entry point is established.
Can’t wait to see what other folks found working (or not) with zero!
5 Likes
I really like the way the MonomeGrid SuperCollider class gets the grid size. No assumptions! No device name sniffing or other hacks! Just a nice simple API.
MonomeGrid.setAddCallback({
arg serial, port, prefix;
("grid was added: " ++ serial ++ " " ++ port ++ " " ++ prefix).postln;
if( serial == MonomeGrid.getConnectedDevices[0], {
cols = ~m.cols;
rows = ~m.rows;
});
});
7 Likes
Norns gets rows and cols the same - but not enough people have used those perhaps.
I’ll post some snippets later when I’m back at the computer.
My grid-test norns script works with any size grid so could be a good reference?
EDIT:
grid_device = grid.connect(1)
grid_device.key = grid_key
grid_w = grid_device.cols
grid_h = grid_device.rows
function foo()
for x = 1, grid_w do
for y = 1, grid_h do
-- do stuff here
end
end
end
7 Likes
The connection and identifying the extra keys is a simple thing. It’s all OSC addresses. The issue is the handshake and such.
tehn
8
wow— flashback to be hearing monomeserial mentioned.
i see no reason why monomebridge wouldn’t continue to work, which is part of the collected repo (basically, a load of unmaintained maxmsp patches from the very first monome wiki).
note that by definition none of these are “supported”— it’s all archival. i have no idea if changes to maxmsp have broken any of this.
but monomebridge connects via serialosc to a grid and spoofs monomeserial, so you should be able to run old monomeserial patches without a problem.
i would, however, highly encourage converting or making new. supercollider and seamstress are “newcomers” (compared to the earlier 16x16 era which was basically 99% maxmsp).
9 Likes
To further @tehn’s comment. It’s worth noting that all the heavy hitters of the prior 256 programs and scripts are archived and very old. They may not work because of changes in MaxMSP and other small shifts. As far as I can ascertain, the protocols of grids have stayed consistent over all these years—simple addresses for the x,y coordinates of the grid and the LED brightnesses.
Of course, the community will decide how this proceeds, but what I would hope the value of this thread will bring is a place to converse about the following:
How these older scripts might be updated to work on newer machines.
How Norns scripts might work well with the new interface and be updated.
Tips, tricks, questions, and thoughts about modern toolsets for making new scripts with the zero in mind.
Discoveries, enjoyment, and excitement around using these beautiful tools.
I have begun taking an introductory course around learning Lua to have a more profound understanding before jumping into the Norns studies. This leads to a desire to work with seamstress in the desktop realm. Using those initial steps to enter the world of DSP and developing more complex patches and instruments would allow the zero to function at a capacity that Norns may not have the headroom for.
But until then, dusting off the bones of the prior generation, digging through the archives, testing old tools, and potentially resurrecting them, Jurassic Park style, seem like a beautiful way for the community to reconvene on this fantastic rebirth.
2 Likes
alanza
10
had a silly gotcha waiting for me with the zero and seamstress; fixed in version 0.14.1.
In case you want 15 tracks of Kria-esque MIDI sequencing, faeng-seamstress should also be working.
15 Likes
tehn
11
@alanza this is so wonderful to see!!
5 Likes
I don’t have a huge collection of scripts on my (recently upgraded/updated by the good folks at monome) norns, nor did I do any comprehensive testing, but just wanted to plant these few observations here for anyone else wondering what to do with their zero right away:
on norns
awake is the only script on my norns that works and utilizes the full zero surface:
As one could expect there are a host of scripts that work, but only utilize half the surface. The newer ones I tried were
mangl, and
cheat codes 2:
I was following advice from other threads regarding scripts that historically supported 256 that are currently accessible for norns, so loaded
mlr, and
cranes
both of which only seem to utilize half the surface.
I was especially hopeful that
bistro, and
loom
would take advantage of the zero, but both of these scripts, on my norns don’t run at all and spit out: “error: load fail” message:
So, that’s what I found on my norns today.
Anybody has any other reports on successes with zero/norns combo?
7 Likes
Curious that this had a load fail - I can run this on my 256 (clone)
It might be worth a look at maiden while loading it to see if any errors show up.
ndls is supposed to work as well
3 Likes
I just posted an update for Dreamsequence supporting 16x16 Grids.
FWIW, I get that same load error above when switching between my 16x16 and 16x8 Grids if I don’t go to System>>Devices>>Grid and set to whichever I have plugged in at the moment. I’m sure there is some more elegant way to do device discovery within the script but I haven’t looked into it.
9 Likes
For today, I took the process easy, revisited an old favorite; flin.
Might take this on as a very early project to port to lua and seamstress. No full ideas yet. But just loving living out a dream of an instrument I’ve wanted for many years.
1 Like
Just got my zero. I’ve been trying to learn on my 128 and hoping I can contribute here. 
2 Likes
As a hopefully very easy one: Would love to support someone porting Cyrene grid.lua to supporting zero.
You’ll see local HEIGHT = 8 at the top – that will need to be updated.
You’ll also see lots of checks for things like y == 8 and y ~= 8 throughout the file. Those should have been y == HEIGHT or y ~= HEIGHT all along (why define the variable if I wasn’t gonna use it?)
Then you’ll see a few more subtle ones: usage of 7. That should have been HEIGHT-1 all along. (esp. local trig_level = math.floor(255 * (7 - y) / 6) and local row_for_level = math.floor(-1 * (((trig_level/255) * 6) - 7))
Those are the easy ones. The hard-ish one is: even if there are 16 grid rows, Cyrene still only supports 7 tracks. So all times that y is passed in to a sequencer fn (e.g., sequencer:trig_level(params:get("cy_pattern"), trig_x, y)), you’ll first need to make sure that y <= sequencer.NUM_TRACKS (not yet a public variable, see sequencer.lua)
I’d do all this myself, but I of course have no way to test it
It also, hopefully, is a nice exercise for someone dipping their toes in! 
4 Likes
I have some family coming into town tomorrow. But maybe I’ll have time to try tonight. Would be very cool to pair with a drum machine I’m really trying to learn.
1 Like
Thhhh
20
Updating scripts to poll
height = grid.rows
width = grid.cols
rather than fixed values, might be a good place to start.
Other ideas on how to approach might be to expand scripts built for 8x16, utilizing the now clean surface from row 9 on to control functions that are not so easily available from the previous control surface: custom Macros, midi keyboard etc. As opposed to just extending the existing surface.
Not that I have used Pam’s Toolkit, but I can also imagine a mod where the surplus rows can control lfos that can be assigned to functions in the main script.
Different ways to build on the existing structure.
2 Likes
Wow, thinking about Molar really takes me back. I built my entire set up around that VST. I can’t believe that was 15 years ago! Here’s to looking back, but also looking forward to seeing what a new round of 16x16 grids will inspire: Live Molar Improv - Monome 256, Zendrum ZAP on Vimeo
6 Likes