no no, totally easy (in theory) to fix and happy to do it (finally)! can you give this version a whirl and lmk?

also, thank you for the kind words :revolving_hearts::revolving_hearts: so glad cranes has made its way into your toolkit!

(edit: woooooof, I have learned a lot since making cranes. excited to clean this up proper.)


it worked! yeaay thanks so much Dan!

EDIT : after trying it a few minutes, i noticed, on param page
pan voice 1, can only be set either -1.0 for hard left or 0.0 for center (no increment in between -0.1 to -0.9). same also in pan voice 2, only 1.0 (hard right) or 0.0. is it possible to have the pan position somewhere in between? not just hard left and hard right?
also is it possible for voice 1 to cross to the right side and voice 2 to the left side? right now voice 1 only center or left, voice 2 center or right.

also the KEY3 option on param page, can only be set to 0.0, 1.0, 2.0, 3.0, 4.0, no .5 increment (for example 0.5, 1.5, etc.)

thank you!

1 Like

I’ve been using Cranes a LOT during the last months (both live and in studio work), and I find it to be especially brilliant in creating smudgy textures. Here’s a recent sketch on it:

One minor problem which I’ve recently had is that I messed up the input settings at some point, so when I stop recording and activate playback the sound is way louder than during monitoring… have to tweak that for good values at some point!


@indraperkasa: pan stuff fixed! made the KEY3 stuff clearer (was using numbers to reference menu items, bluuuuurgh)!
@bereenondo: level stuff fixed!
added: pan slewing!
added: filters!


Ah! Just in time for my gig Thursday. :pray::pray::pray::pray:


I’m enjoying Cranes very much!
I’m very new (only a few days!) to Norns, but love it! As I begin to work through the Norns studies, I can’t help but want to add Arc support and a controlable delay (I also wonder why delay isn’t available globally and reverb is and why Arc support isn’t already present but midi is but those are separate questions).

It seems simple enough to add arc support using Arcify - even if I have to decide at the outset what knobs control what (I did see Arcify was working towards a sort of global param select which would be great).

With respect to the delay, I saw that softcut could handle the addition of a delay. There’s already some code for a multitap delay in the softcut thread.

My questions are: is my thinking correct? And, which Norn study would best help me implement this (I am working through them all, regardless). I am not a coder, but I am a heavy R user (for stats, but most similar to Python). I am willing to put in the time to do this, so that’s not an issue. Just looking for some guidance!


so glad to hear you’re digging cranes!

  • the delays people have crafted in their scripts use softcut, which is available globally but requires the user to define its behaviors. hard-coding this approach into norns would require restricting the number of softcut voices the user has access to as well as assumptions about how folks want to use “delay” which means a wide range of things to different people (multi-tap vs ping pong vs glitchy vs long warbles vs etc etc) – better to allow you to define how you want to implement it :slight_smile:
  • to create your desired delay inside of cranes, you’ll want to spend some time with the softcut studies. cranes is already uses softcut’s voices 1 and 2, so you’ll just want to be mindful of that by creating a delay that uses voices 3 and up.
  • totally! I’d say try creating an abstraction like halfsecond (in awake), so you can repurpose your delay. then, you can create an arc-based interface for it and others can repurpose your code. otherwise, arcify is the best way to “plug and play” arc control over any of the params in cranes.

hope this helps!


Thank you so much for the very timely reply! I appreciate your work (and everyone else’s) very much.

One question related to your last paragraph. You note that others can repurpose my code. I’m clearly going to cannibalize others’ code which I’ve found in line and on github, but where else should I be looking for things I can use and where’s the best location for me to put my working pieces. Once I get a modified Cranes with arc and a delay, am I allowed to share the full code or only the pieces I modified. I’m not sure how that works since you’re the author of Cranes, but I’ll be cobbling together code from elsewhere. I’d just like to put it out there to help others once I sort it out myself.

@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.