oh ha, woops, i’m dumb.
i get that - but i don’t think literally streaming many channels to disk all the time is a realistic feature request for norns. IOW:
no, i don’t think that’s an easy win at all. coding effort would be minor (routing is trival, thread sync and buffering are not) but it would tax the physical limitations of the device… (i will investigate the write speed of the actual emmc part, but it can’t be more than 400MB/s and is likely much lower. you’re asking for 1MB/s right there, and we would need to be very careful to amortize the writes.)
i’d encourage the train of thought that focuses on working within the provided capabilities, or at least seriously investigating how to expand them safely and efficiently.
for example - it doesn’t really look like you’re using 3 of the softcut voices (am i wrong about that somehow?) or most of the buffer length. so you could always be capturing the output of the 3 playhaeads you are using, into longer regions, and then save those “record regions” to disk using the existing API. requiring no massive new demanding changes to the DSP structure,
woops again, @dan_derks sorry i see that you actually already said this above. (the other voices are used for delays.)
oh, ha again. all the level params do have slewing, but there are no commands to change the slew time for level_cut_cut. so i’ll add those. adding commands is trivial if they are just exposing parameters that already exist.
i’ve mentioned it a couple times here - filter parameter calculation is expensive and that’s the reason they are only updated once per block. but yes, they definitely should be updated per-sample if it can be made feasible. there are several things i can try with varying levels of complexity. 1) just try it naively and see if the CPU hit is as bad as i think it will be. 2) use a linear tan approximation, which is OK but is a bit of a bummer because the low frequency range gets nonlinear. 3) use something like spline approximations for the whole coefficient function, which could work well but will be kindof a PITA. 4) something weird, like have accurate coefficient calculations at each block but then just slew the coeffs directly in between (instead of applying slew to the inputs of the coeff calc.) it’s on my list but it’s work.