mlr (norns)

yes - I tried several. I can select one and screen returns to the “clip” screen.

are you on the newest norns update, and the newest mlr version?

last i checked it’s working here. i’ll open it up again now

Shiny newbie question - finally getting my feet wet with MLR and making some lush sounds.

question: audio coming in through monitor sounds fine, but MLR on playback is filter cut on playback - sounds like low pass filter 12k or so.
BUT sounds fine if I load up a built in .wav file
Is there a setting I don’t know about that is filter cutting my recording?

thanks for the patience,

weird - reboot and the issue went away… :slight_smile:

there is a pre-record filter in softcut with various settings.

the default settings, which are restored whenever a script is run, set the filter mode to lowpass, base cutoff frequency to 16k, and set the cutoff to be modulated 1:1 by the head rate. (so that lower rates create lower cutoffs; this softens the aliasing effect when recording at low rates.) AFAICT, mlr does not alter the default settings.

if you want the pre-record filter to be completely bypassed, you could insert lines like this into the init routine:

for voice=1,6 do 
   softcut.pre_filter_lp (voice, 0)
   softcut.pre_filter_hp (voice, 0)
   softcut.pre_filter_bp (voice, 0)
   softcut.pre_filter_br (voice, 0)
   softcut.pre_filter_dry (voice, 1)

the pre-filter has been reworked in the development branch for softcut, and will have simpler options on the next big release.


Forgive me, but I skimmed the whole thread and maybe missed more details on this. I’m preparing to record a performance this weekend and would love a filter insert after each track i could control either through params or midi mapping. Can someone point me in the right direction? I’m a software engineer by training so if altering mlr is necessary I can probably make do with handwavy pseudo-implementation details and a link to the right doc


hey hey! post filters have been implemented into softcut (which mlr uses for all the magic!) and can be added to the script using the techniques outlined here:

establishing parameter/midi-map control over those functions would require the techniques described here:, eg:

params:add_control("filter cutoff", "filter cutoff",,12000,'exp',1,12000,"Hz"))
params:set_action("filter cutoff", function(x) softcut.post_filter_fc(1,x) end)

params:add_control("lp_filter","low pass presence",, 1, 'lin', 0, 1, ""))
params:set_action("lp_filter", function(x) softcut.post_filter_lp(1,x) end)

hopefully this helps? let us know :slight_smile:


This looks perfect. Will dive in tomorrow and give an update after I (hopefully) succeed!

@dan_derks - thanks to your basically complete instructions that was the easiest thing ever - i can send a PR upstream if there’s any interest but this is all i did, and now i’m filterin’ ~/dust/code/mlr $ git diff
diff --git a/mlr.lua b/mlr.lua
index 30be35c..66ad737 100644
--- a/mlr.lua
+++ b/mlr.lua
@@ -402,6 +402,11 @@ init = function()
     softcut.position(i, clip[track[i].clip].s)
+    softcut.post_filter_dry(i,0.0)
+    softcut.post_filter_lp(i,1.0)
+    softcut.post_filter_fc(i,12000)
+    softcut.post_filter_rq(1,10)
     params:add_control(i.."vol", i.."vol", UP1)
     params:set_action(i.."vol", function(x) softcut.level(i,x) end)
     params:add_control(i.."pan", i.."pan", cs_PAN)
@@ -431,6 +436,9 @@ init = function()
       --function(n) print("FILESELECT > "..i.." "..n) end)
       function(n) fileselect_callback(n,i) end)
+    params:add_control(i.."filter cutoff", i.."filter cutoff",,12000,'exp',1,12000,"Hz"))
+    params:set_action(i.."filter cutoff", function(x) softcut.post_filter_fc(i,x) end)


Hi I just updated my norns and MLR and noticed an little issue (or maybe is it a change in the workflow):

PATTERN seems to save the state of the track (ON / OFF) and recalls it when the track is turned off. Before that i could record a pattern and turn off one of the track freely (even if the pattern was still activated). Now, the track automatically turns back to ON if the pattern is activated.

Is there a way to correct that thing or at least make it switchable in the parameters? I’ve got some gigs coming and it kind of change everything :pensive:

had my first mlr sesh today… feels like a right of passage. everything worked great clocking my modular with crow and moving the grid back and forth from ansible and norns to get new patterns with everything perfectly in sync. so cool to look on the old forum and see people just as excited as I am about it back in 2007. thanks for all the work on this over the years @tehn and co!


I have what is probably a silly question:
I’ve always used mlr at the default tempo but I’m trying to change it for the first time.
I’m just doing live recording without any pre-recorded loops.

I’ve adjusted the tempo using alt+Q and in the parameters (+ reset) and it doesn’t seem to have any effect on the speed of the playheads. I’m using factory Norns and Grid, and I’ve updated MLR and Norns to the latest version.

Is this the expected behavior? I would have thought that a tempo change would change the length of the loop (with each grid column being a 16th note). If not, any advice on how to get the length/speed to change?

From the docs:


touch to toggle quantization. ALT-Q to change tempo and division.

in REC/SPEED mode use ALT-FOCUS to toggle tempo-mapping.

a tempo-mapped clip will follow the tempo.

1 Like

Thanks! I thought I had tried that but I’d been using two fingers on the FOCUS buttons out of habit (because of the pair of lights), which had been toggling the tempo-mapping on then off faster than I could see.

1 Like

Hi all, I know this has been asked – is there a tutorial for MLR? Specifically, I am worried about BPM and tempo keeping. Do I need to record my input with an external metronome to ensure everything keeps time (knowing there’s no input quantization) or use loops that are guaranteed the same BPM? I feel like I’m about to be very lost, but also am very excited. Just received my grid and this is my first foray into using it so just want to make sure I’m having fun.


This would qualify as one of the more in-depth run through a of the script.

Honestly, in a way, scripts developed in house by monome have a history of being a little less documented than those by others.

After this script, I suggest you give Cheat Codes, Cranes and Otis a shot for audio mangling stuff as well. Although with that script you might actually get an embarrassment of riches when it comes to complexity and documentation!!!

Welcome to the monome family tho! The grid is great and we’re happy you’re here!!!


Trying to record for the first time in MLR and I feel like I’m missing something obvious. I followed the recording quickstart in the docs exactly, but the notes I play into the L input channel on the norns (fates) don’t play back as the loops loop. I definitely hear it in the monitor and see the level bouncing on the leftmost menu page… what else can i check?

e.g. Otis works for recording so i know the system itself seems functional

Thank you!! This is awesome. The only thing this didn’t really answer was quantization. What does “quant div” do? And if I’m trying to play a melodic piece I’ll effectively have to just use an external metronome then as quantizing changes the pitch (ie is more useful for rhythmic). Am I missing something there?

Honestly, these are questions I don’t have much of an answer for. I apologize, but hopefully someone here might have a bit more knowledge on the inner workings of mlr in that regard.

Sorry to double tap on the above, figured it’d be easier to ask in bulleted Qs

  • Is it better to use external clocked items for melodic pieces like Ableton or an OP1?
  • Are recorded patterns automatically tempo locked/quantized to the tempo without me having to tempo lock that track? I don’t want to tempo lock clips right now because it makes my entire track out of key.
  • What does “quant div” do? I am assuming it has something to do with note divisions, but how is it quantizing note divisions if it’s just slowing or speeding up the pitch of a clip? Is quant div for pattern record (meaning patterns are quantized to nearest 1/4 if the quant div is set to 4)?

Thank you all and sorry for bombarding with Qs :slight_smile: Hopefully this helps someone else too though.