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.)
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!
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!
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
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.
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. https://github.com/monome/softcut-studies 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.
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.
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
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
also, feel free to submit a PR to cranes if you improve the project and want to share those improvements!
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!
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?
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
@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
(also, @lloydcole, there are so so many fantastic + essential scripts from folks! expand horizons! )