@Biologik just a note, that code I put up there was pretty hastily exploring softcut back early in v2.0. I’m gonna guess that it probably doesn’t work exactly because param and function names have changed. Seconding @dan_derks, looking at half-second, and looking at the studies here will be much more informative. is a great explanatory series on softcut and the types of things you can do with it. Dan also has some real cool stuff going on with softcut in cranes itself that’s worth a look. Cranes is a great project to reference the code to as it is a fairly simple concept, but implements a lot of cool configuration and UI for playability.

1 Like

Wouldn’t this be tricky, because there are only 2 buffers, so cranes and the delay would potentially record over each other if the voices are at the same position in the buffer? I guess if you set the delay voice to a later position in the buffer it could work, but something to keep in mind.

I could be way off and misunderstanding how it all works though…

To clarify, you can register as many params of Cranes as you want and then choose which ones you want to assign to the Arc in the params menu - so it could be different from one preset or another. Or with a little extra code even something you change dynamically while the script is running!

Looking at the readme for Arcify I don’t think that’s clear enough, the readme would suggest you have to assign it in code - not the params menu.

Hope that helps!

1 Like

totally – cranes uses the first 60 seconds, so there’s about 4 mins left of open space for the 4 other voices. there’d need to be an offset, for sure.

1 Like

first of all, definitely go the right way and use arcify.
but just in case it’s useful as a reference, somewhere up thread here (wow this thing is crazy long now), i posted a less elegant hack to control volume and buffer position via arc:

  if n == 1 then 
    params:set("vol_1", (params:get("vol_1") + d/100))
  elseif n == 2 then
    params:set("vol_2", (params:get("vol_2") + d/100))
  elseif n == 3 then 
    if d < 0 then 
  elseif n == 4 then 
    if d < 0 then 


i want to say this might not be useful because arcify might demand params? but just in case…

this kind of illustrates your question on attribution. i don’t know if there are any rules, but my thought process was, i posted a script that is a fairly heavily modified version of loom in the library. the sequencer is unchanged but i took some stuff out and built a bunch of harmonic stuff in, so i felt like it was worth a post, because the purpose of the script diverged from the original. my other edits like the one above are small quality of life changes that don’t change the purpose of the script. i will just pop those in the thread on the off chance they’re useful to others.

again i don’t know if there are any rules but this seems to have been fine


works in progress are best shared through + even posted on Norns: code review.

I’d say if you fundamentally make something your own, you should be able to name it and attribute it to yourself, maybe with a note of where you found inspiration. @Justmat does a great job of this in mangl, for example: based on angl by @tehn and the engine: glut by @artfwo.

I think overall it’s kind to cite your sources, but it’s all fair use :slight_smile:
also, feel free to submit a PR to cranes if you improve the project and want to share those improvements!


Thanks @dan_derks, @ypxkap, @mimetaur, and @jlmitch5. All of this is very helpful and it’s amazing to see the support that’s here.


Hey dan…

on the disquiet slack tonight, @atomboyd and @rbxbx were asking about a midi trigger to start recording in cranes. (Like for using a foot switch to start recording)

So I quickly hacked something together here:

Very basic - note 0 (zero) will trigger record() You can set the note num you want at the top of the script.

What other aspects of cranes would benefit from a MIDI input?


This is just excellent! Now I just have to track down my logidy usb midi pedal!

@okyeron, you’re good people…


necrobump, i know. but i felt like cranes deserves some love as i’m still enamored by it and its immediacy. it was my bday a few days ago and i decided to try livestreaming a little dj set on fb live just for the hell of it. i was looping bits of tracks in cranes and messin with em, then mixing that with the normal track to pretty cool effect. turns out norns/fates is a great dj tool! :sunglasses:


Hey Dan,

I love this script so much. I constantly find myself going back to it. So fun to explore.

I’m noticing a couple of things I wanted to ask you about.

First off, When I set the volume out for voice 1 and 2 to a lower value (ex. 0.3), that value isn’t reflected upon playback. I have to go back into params and toggle the value for it to be reflected in the audio. Have you noticed that behavior?

2nd Would it be possible to add mute functionality to each voice? Sometimes I want to dial in a voice without hearing the other voice. I know I can move one voice past audio but I’d rather not move the playhead if possible.

3rd Would it be possible to set a bpm in params so that we could get timed loops? Or does that go against the philosophy of this script?

1 Like

I love this script so much. I was hoping to streamline my system and as this was my only ESSENTIAL app in norns. I spent 48 hours looking for iOS alternatives and - Uh, Oh, there isn’t anything. So I’m not selling my norns.


hey y’all, thank you for the positivity toward cranes :slight_smile:

@cfour: i’ll take a peek at those first two items as soon as i can. there’s still some work left to do on cheat codes, but i very much want to revisit cranes to add some new facets.

re: timed loops, i’ll definitely give it some thought. cheat codes has clocked stuff super covered (as well as very un-clocked stuff) and cranes is fundamentally a “by hand” sort of tool. I also wonder how important timed loops are once you get into lots of rate manipulation, you know? a “1 bar” loop could easily turn into “5.25 bars” once you slow it down and reverse and then and then and then. but perhaps more could be done with the loop-match function – right now, it syncs the loop points across the two voices, but I think it’d be better to match the distance between the start/end points while keeping start points static.

anyway, please share what you’re making! always so curious to see how cranes fits into people’s flows :slight_smile:

(also, @lloydcole, there are so so many fantastic + essential scripts from folks! expand horizons! :wink: )


I know, but I’m actually trying to do the opposite. I’m trying to focus on just a few apps, instruments and scripts, so that I retain the knowledge/skills. If I’m spread too thin, I return after 6 months touring and I’ve retained nothing…


Good call on keeping Cranes unclocked. That makes perfect sense.

One more thing I forgot to mention. I can’t get voice 1 or voice 2 to pan left. I only get panning right of center and center. Nothing left of center. Have you noticed this? Desperately wanting to pan voice 1 hard left and voice 2 hard right.

Thanks again for everything you’re doing.

1 Like

Can I still do all the stuff I had fun with pre-grid integration?
I can sneak a norns in my tour luggage, but maybe not a norns and a grid!
I don’t mind spending a little time setting up echoes, etc…

1 Like

Nevermind!! Norns update fixed it. :slight_smile:

1 Like

@lloydcole nothing in the core on-norns functions changed when grid controls were introduced :slight_smile: lmk if there’s anything specific you were curious about tho?

@cfour, dope! I was gonna say, i thought i had updated the panning for newer norns releases :sweat_smile: thank you for the positivity and follow-up!!

@lloydcole I can attest that cranes works great sans grid. i actually prefer it that way, else I start fiddling too much. enjoy!

1 Like

Thank you! I have decided to move on, though. Not because of anything wrong with norns/open source life… but my brain isn’t up to it. I can’t keep learning and relearning. I have no time inbetween to do to music…
I had to choose between norns and iPad and I chose iPad.

1 Like