Reels is a 4-track asynchronous looper, inspired by op-1 tape recorder and mannequins w/ eurorack module.
Big thanks to @zebra for gorgeous softcut 2.0
It is possible to add reels to any non-softcut script
place this hooks into corresponding functions
local reels = include('reels/lib/libreels')
function init()
reels.init()
end
function key(n,z)
if reels.active then
reels:key(n,z)
else
-- your script
end
end
function enc(n,d)
if reels.active then
reels:enc(n,d)
else
-- your script
end
end
function redraw()
reels:redraw()
end
Activate it via params page or manually with reels.active = true
After using this quite a lot today there were a few things I noticed, sharing them here in the hope that it’s helpful:
‘Clear clip’ is throwing an error – I think this probably just needs updating to match the latest softcut.
Error from Maiden.
/home/we/dust/code/reels/reels.lua:205: attempt to call a nil value (field 'clear_range')
stack traceback:
/home/we/dust/code/reels/reels.lua:205: in upvalue 'clear_track'
/home/we/dust/code/reels/reels.lua:659: in function 'key'
/home/we/norns/lua/core/menu.lua:164: in function </home/we/norns/lua/core/menu.lua:141>
I’m finding that recordings sometimes land in unexpected places on the tape loop. Hard to work out exactly what’s happening here but it seems like a play or rec head is somehow getting offset?
Also seeing some unexpected states if you select a different track while rec is armed. It seems like this causes recordings to land on the wrong track. Easy enough to avoid but maybe worth handling it or locking that out of the UI.
Having great fun with this - oh! I wish a couple of things (sometimes found on the more exotic real world tape machines) that would transport it into an amazing sound machine**. Reverse** - select reverse and it plays reverse, select again back to normal. AND Speed set to 1 (default) = normal speed, 0.5 = half speed and so on, down to say 0.2 fifth going the other way - who knows! Up to a max of say 4x.
Thanks! For now its 60 sec for each track (but you can record on (extreme)low speeds which will give you much more time and also adds nice lo-fi character)
Can you confirm this is still happening in latest version?
Also there seems to be a little bug with displaying playhead when loading clips to buffer and immidiately starting playback - playhead starts moving while file is not loaded yet - it start playing with a little delay and therefore UI playhead position is wrong. @zebra, is there any workaround? some sort of callback on success buffer_read or smth
i think general issue is that currently, reading buffer blocks OSC handler thread in crone process. so, subsequent commands won’t take effect immediately and there are weird delays.
@its_your_bedtime in response to query about clear_region, i noticed API doc is wrong - arguments are (start, duration) not (start, end), so maybe that helps.
hm, not a bad idea. there’s nothing like that righ tnow. pretty straightforward but requiring substantial amount of new glue, and some thought to make lua API not too ugly.
just heads up: i have limited off-clock dev time this week, only short sessions late at night. last night fixed a couple other bugs elsewhere. some day maybe i can get around to sharing my own performance instruments, which are pretty different from anything seen thus far…
I’m not sure what happened but after updating to the latest version of Reels and running it briefly it crashed my norns and even after a hard reset it keeps freezing up now. I’ve managed to load some other scripts fine but when going back to reels it freezes up.
I’m getting (error: load fail) when attempting to start reels. Is there another library I need to install in addition to what I put into ~/we/dust/code ?