Norns: mlr



181101 crash while adjusting midi tempo at lowest speed. Crashes also with tape playback-tape playback doesn’t stop the tape. Still need instructions how to achieve max rec time per track. Tried to record with slowest speed and slowest speed modulation had a crash. Thanks for the update!


Im trying to make a quantized recording in Cut mode so I use Alt-Focus to setup the clip to match the tempo, Both the norns and my Audio source are synced. I then press record and I have very high pitched artifacts being recorded with the signal. The clip is quantized correctly, but it sounds terrible. If I record a clip without Alt-Focus it sounds perfectly fine, but it is out of sync with the tempo. Am I missing something?
Does anyone else get high pitched artifacts when recording to a tempo mapped clip?
How do record an audio source in MLR and have it playback in sync?


recording is only supported with non-bpm locked clips right now. we’re working on fixing this.

i’m planning to put together a mlr tutorial showing various techniques— little features keep getting added and i have a shortlist of things i want in before revising the docs and some howto vid. thanks for your patience in the meantime.

@swhic i’ll look into the long-time recording. definitely not a good approach to slow everything down— like recording to physical tape there would be degradation of the signal, and i will check the minimums to avoid crashes at the extremes.


many thanks @tehn great stuff


yeah recording has bad artifacts when rate != 1. i am literally working on it right now. if rate > 1, you actually skip samples and overdub/erase doesn’t even work right. if rate < 1 it is less bad (overdub / erase works) but you get aliasing artifacts.

i think i have mentioned a number of times that interpolating the write head is more difficult than interpolating the read head, and we’ve run into special problems in the ARM/NEON implementation. for the current state of the engine, i really would have designed the features differently - had one dedicated record head locked to rate=1 for example. i’ll fix it soon but norns is a volunteer project for me… i’ll try to get it in the next update but just can’t really make hard commitments. last attempt worked fine on x86 but exploded on ARM for some reason.

future updates on this GH issue page:

re: clock sync. IMHO this is a kind of ill-defined feature. how should we be determining tempo? by loop points? but loop points are set in quantized units, according to button presses. which points in time do the buttons correspond to? well, by default they are spaced 1s apart. this changes according to the length of a loaded file. if you load a 20s file then the bpm is effectively 120 / (16/20) or whatever. but then you have no pre/postroll/. i kinda think you would want to be able to set the loop points arbitrarily (e.g. with knobs not buttons) and determine logical tempo from that. right now, “tempo” is just assumed to be 120bpm whenever playback rate =1, 180 bpm when rate=1.5, and so on. seems kinda inadequate if this is supposed to be a “master clock” generator.

sending midi trigger on step update would be easy and make sense. the step updates are directly determined by the real position of the playback phasor, and since the speed of that phasor can be modulated (with rate slew even, if you turn it on) - that is really the only way to get a true indication of tempo. but the full picture needs more careful consideration if you want to be sending 24 ppq clock pulses in between steps, or something like that.

hope this makes sense.


I really appreciate the effort to explain this issue, I also appreciate all the effort you’ve put into this project already and am grateful you make time to continue to improve this device. All of the docs are very vague so I am blindly exploring what norns can and can’t do, Im coming to realize I would be better served to adapt to what it can do instead of getting frustrated at what it can’t.

For what its worth, from a basic layman’s user experience perspective, my intentions would be to set a tempo all my devices are synced to, set how many bars or beats I want to record, press record and capture my input, it loops, I can record the gestures of playing splices of the loop, these recorded gestures can be quantized to match the tempo…and maybe levels of quantize resolution for the gestures. So mainly, just being able to play within the confines of a given tempo,

Forgive me if your last post already explained why this is a challenge, I just hope to clarify my intended use if it might help in the direction of MLR development.


makes sense. sorry long week I’m a little fried but am digging into the DSP issues hoping to settle them in next update. clarifying how tempo should work is good for this thread I think. Honestly not my main concern - I Just want to make the engine support the required functions (and much else as well.)


right now the tempo lock/mapping doesn’t apply well to all use cases. i have some ideas how to make it more explicit and versatile to many use cases and that’s my next priority.

in addition to what i mentioned above re: docs and video. thank you for your patience-- norns is evolving on many fronts simultaneously.

Approaching: norns

I can’t thank you guys enough for all the work that’s already gone into this. The fact that contributors driving development are doing so in their spare time with no monetary compensation is a testament to the quality of the community and one of the main reasons I’ve decided to invest in the monome ecosystem. I may not have the coding ability to directly contribute, but I hope my explorations will help beta test functionality at the very least so forgive me If I pop up frequently asking noob questions lol.


I’m not sure how possible this would be, but i think it would be a lot of fun if the recall buttons worked for the on screen params like speed mod/vol/record vol etc. (even clip select would be super cool)

Also i would love if the pattern recorders recognized recall presses and played them back


Norns has arrived, and I’m happily diving into mlr. I’d be grateful if someone could explain the difference between the PATTERN and RECALL / MACRO concepts. Thanks!

EDIT: answering my own question… I think PATTERNS are a way of recording a series of events that unfold over time, whereas RECALL is for storing a specific state you want to return to easily. Please correct if this is misinformed :wink:


Hey there,
I just flew over this thread and I didn‘t find answers to my questions… Please have mercy if one my questions was already answered… Some are basic, but mostly mlr-related…

  1. I have a 256 Walnut Grid (2008?) which is bus powered.
    Is norns strong enough to deliver the power my grid needs?
  2. As my grid has no vari-brightness, I‘m wondering if it will work properly with the latest mlr-app? If not, will there be (or is anyone up to) some kind of classical mlr-app?
  3. Is Lua hard to learn? For the case nobody will write a classical mlr-app, haha. I have absolutely no basic knowledge when it comes to coding. But I probably will have to expand the app to my 256‘s size, right?
  4. Can I load wav-files on norns and fire them up via the grid or does norns’ mlr need live input to operate?
  5. Is there a tutorial/ video-guide to norns‘ mlr? I‘m really curious how it looks on the display and how to work with it.

I will probably come up with a few more questions soon…
Thanks in advance guys :slight_smile:

  1. The power supply is 2 amps. I’d say give it a shot.
  2. I think you need varibright to see the playhead and cut lengths
  3. Lua is not hard to learn. I would recommend it as a first programming language and the Norns API is pretty simple.
  4. Yes.
  5. I’m going through the docs right now


Just got Norns and I was able to load audio files and play them with cut.


UPGRAYDD! I’m just learning the physical interface so I’m a bit clueless. The docs can be updated by anyone with a github account.


It seems like I need better reading comprehension skill. Saving and loading sessions is a future feature.

OMG mlr is rad. I think I just accidentally made hip-hop beats.


Ah, I see… When I look at the mlr-doc I guess mlr is now the pure live recording tool it was probably always meant to be(?). Unfortunately I don‘t do recordings in mlr very often… Mostly I‘m using it to trigger my stems á la Daedelus used to. I keep my eyes open, hoping an old school mlr version for norns will show up one day. I just wanna get rid of my laptop, haha.

Thanks for the responses <3


Tonight I loaded a very long (several minute) clip onto track 1 of MLR, and it seemed to get loaded onto all 4 tracks in a musically interesting way. I can’t tell if this is a feature or a bug, can anyone explain what might be happening there? Is there a default behavior for the other 3 tracks if you don’t load a file onto them?

Relatedly, when experimenting some more with loading to try and figure out what happened, I got in a place where some amount of the steps in the 4th track were incredibly loud noise, requiring me to rip my headphones off even at the lowest volume setting to avoid damaging my ears. I can follow up with repo steps later, but I got spooked and stepped away from Norns when that happened…


To answer some questions for @Birdster and others about how I loaded audio:

Start MLR. On the grid press row 1, pad 3. The screen should show “CLIP > TRACK 1”

Press KEY 2 on norns. You should see the folders from the norns dust folder. I logged in via SFTP and made my own folder, but the tehn and common folders should be there by default.

Enc2 to scroll and KEY2/3 to navigate. Highlight audio file and press KEY3 to select.

Each of the 4 audio rows can be selected. From what I can understand, you can load up to 16 audio files and assign them on each row. @xeric - If you don’t assign them, from what I can tell, you will get the first clip by default. All this being said, I am not sure if you can overwrite/override your clips by activating record on a track.

Press row 1, button 2 on the grid and you should be able to start the clips or set a range. Row 1,1 will get you back to REC which allows you to set speed/reverse.

I’m not exactly sure what ‘resize’ does yet. I’ve only had norns for a day, but hope that helps! I love this thing, it’s really special. It’d be worth getting just for MLR, but wow - all the dust scripts are awesome.


loaded a very long (several minute) clip onto track 1 of MLR, and it seemed to get loaded onto all 4 tracks in a musically interesting way. I can’t tell if this is a feature or a bug

the voices all share one long buffer (7min). i call it a feature

Saving and loading sessions is a future feature.

should be easy to add. store filenames as params in the global pset, refresh them on init()


it’s a feature/bug that will be corrected in upcoming versions.

there is a long list of features i’m intending to add to mlr. much of my focus since launch has been on core improvements to the system (and studies, to facilitate people making their own scripts), but i’m slowly adding bits to mlr and intent to do some major additions in the coming weeks.

this will include a huge overhaul of the docs and also a video tutorial, which is pretty intensely necessary at this point.

thank you for your patience, i’m very excited to share some new mlr perspectives soon