Mlr (norns)

Finally figured MLR out, thanks to that informal video by @tehn earlier in this thread.
I just posted a video of my latest jam with it in the performance section if anybody wants to see it in action. ( )
Main breakthrough for me was figuring out the quantise function and midi sync so I have it looping in time with the Elektron Model Sample.
Only sync’s one way though -right? Norns must be the Master.
Would be great if Norns could also sync to a Master Clock externally though.
One thing that doesn’t seem to work though is the ‘Quant Div’ control. No matter what I do there is no change to anything by adjusting this control. Is that a bug then?
Other than that MLR is absolutely brilliant. Thx.


I’m using the non varybright 64 version of mlr ( thanks! @noiserock) with a DIY shield.
I can’t do anything with the clip page…
I’m not able to load a wav file from the tape folder. Maybe I just don’t understand the function of this page…
Any help?

You need to load using button 2(you can also change the function with enc2), and then find whatever sample you wanna use. Then select with btn3. Enjoy!

So this will work :slight_smile:
I just did what you explain with maiden open:

Blockquotefile > /home/we/dust/audio/tape/0002.wav 2
/home/we/dust/code/custom64/mlr64.lua:818: attempt to call a nil value (global ‘sound_file_inspect’)
stack traceback:
/home/we/dust/code/custom64/mlr64.lua:818: in function ‘fileselect.callback’
/home/we/norns/lua/lib/fileselect.lua:50: in function ‘fileselect.exit’
/home/we/norns/lua/lib/fileselect.lua:122: in function ‘fileselect.key’
/home/we/norns/lua/core/menu.lua:139: in function </home/we/norns/lua/core/menu.lua:116>
thanks for the interest!

The script probably needs an update. I’ll see if I can make time later to fix this. Sorry about that(I am currently mainly using a 128).

1 Like

try this:

Don’t have time to test myself right now.


I don’t know what to say… This is just working. Thank you!

1 Like

No problem! But the real thanks should go to @tehn and @okyeron. I’m just the 64 janitor :wink:


This may be a hardware solution for those needing midi start messages sent to start a device syncing. I have two devices that I want to sync with midi clock from MLR and they will not sync due to MLR not sending a start message 250. This device does it manually in sync with the clock it receives. It’s designed to resync sequencers that require that midi start message without stopping the performance. I’m going try it unless this is something that could easily be implemented in the code? Not well-versed in Lua yet.

Audiowerkstatt Midi Restarter v2

literally just add


and save yourself €169


to line 452 or by itself? I am a complete novice when it comes to editing scripts.

1 Like

i guess it depends what you want to accomplish exactly

if you just want to send a start message when the script is launched, add midi_device:start() to the end of the init function

Let’s say every time midi sync is turned on it fires a midi start as well? Would that be possible?

take this with a grain of salt because i have never actually needed midi sync and likely never will. so this suggestion is totally blind and untested.

but basically:

  1. in the script preamble (before init function, e.g. L355), make a new function to handle changes to the “midi_sync” parameter, and fire a “start” message if it is turned on:
function handle_midi_sync(selection)
   if selection == "on" then
  1. in the init function, after the “midi_sync” parameter is declared (e.g. L363), assign your handler function as its action:
params:set_action("midi_sync", handle_midi_sync)

Inserted these bits of code in the suggested sections, verified script saved. My device (that works with sequencers that send MIDI start messages when you hit play like Ableton and other hardware loopers, drum machines, etc.) still didn’t start responding to clock. I can see the clock tick data being sent on my Roland UM-ONE the moment I turn MIDI sync on, just not getting my device to respond to it. I have been down this road before and have isolated it to MIDI start not being generated by the midi sync master as the culprit. If anyone else that has similar needs would like to test and report back that would be great. Maybe I am doing something wrong?

edit: verified when monitoring the midi data out of mlr only clock is sent with code implemented

@zebra I appreciate your advice and assistance in the matter.

if i can dig up a device that understands midi start/clock, i can help to test this a bit more. (i’m pretty sure there’s some drummachine in the basement that will work.)

my approach would be to first make an extremely basic script that does nothing but send start/clock, to make sure those components work, before integrating with MLR. this should be very quick

i honestly don’t know much about what various devices might require in terms of, i dunno, relative arrival time of start message and first clock tick, or if just sending byte 250 is sufficient, or what.

as a first quick test you could add a print statement to the midi_sync handler function to make sure it is actually being called.

1 Like

I used to perform some songs this way a million years ago on a monome 256 and mlr version 2.x for Max/MSP. I had presents that pitched the rows at various intervals. It was pretty fun.

I have exactly that (and a few other things) right here:


is it just me or reverse and speed values set on the grid are not saved into a preset? any plans to add this in a future update?

will check and add if it’s not there.

also good bump reminder to check the other outstanding issues.

edit: i don’t recall if the track speed settings are even in the param menu, so that’d be why… but that’s no problem to add.

1 Like