Auto Track Freezing

I thought about track freezing a bit, that is, automatically freezing tracks: you toggle a track from unfrozen to “auto-freeze”, and everytime you edited it (after a few seconds of not editing it, changing to another track, etc.), renoise renders and freezes it, in the background and with a progress indicator at the top of the track.

(as long as the track freezing hasn’t finished, playback uses the unfrozen data)

in some cases this would be just perfect, say, a long vocal sample track with little fx on it: you nudge/cut the vocal a bit, freezing takes just a few seconds, and you can listen in to it anywhere in the song. ahhh, that would be such bliss!

with tracks that take longer to freeze, you would want to manually freeze them when you’re done with your edits. so I guess there should be three settings for that toggle: unfrozen, “auto-freeze” and “freeze”. maybe with options for quality settings, too (when you want them to differ from the defaults which are set in the preferences, where you can also set the priority for the thread that freezes tracks), so you can go all out for maximum quality on the few tracks where you need that. although 99% of the time you’d just want to set the default to what you’re rendering the song as anyway, I guess.

a neat little thing would be Renoise converting frozen tracks automatically to mono if the left and right channel are exactly identical.

to me the most tricky part - besides memory consumption, streaming from HD would probably have to come first - is that to be really render a track, Renoise would have to render the whole song from the beginning, taking ALL tracks into account that are connected to the track you’re freezing. e.g. another track might have a signal follower that influences it… would that be feasible? to pick out the tracks you need to take into account? or would it be safer to always take all tracks into account? if the later was the case, I still would want it.

hmm, I’m not really sure what I’m trying to say here, just throwing out ideas. I just like to talk about track freezing haha! (not in an impatient way though, more in a “playing with your christmas toys in your head, in autumn” kind of way)

Freezing a vocal sample must feel wrong though, maybe it should have been an “AUDIO” track to begin with?

or… what is the reason why a normal sample can’t start playback from a late position, I would be happy if the playback engine skipped all VST-FX processing up until playback position. Does it really have to be a specific AUDIO/Frozen track for this to work?

I reckon some kind of smart filter routine must be developed so the playback engine won’t pause too long on starting playback. How could this work? first filter out all VSTi’s and look for samples obviously, maybe check the length of the samples and skip searching for those that is too short and no possibilty of be playing back. Then you need to calculate all BPM changes, pitch and positions since “note on” to figure out where playback should start? (But then what about looped samples, maybe they should be filtered out as well) Maybe it’s simply too CPU consuming and would take too long for playback to begin.

good point, but I think streaming samples from HD and track freezing is kind of a must have in the long run anyway, and it would solve that issue nicely as well.

well if anything it would prolly have to be calculated for the first line of each pattern and then stored, each time you edit, instead of being calculated when you press play?

but still, that’s so much special case stuff which in the end isn’t “perfect” anyway… freezing tracks takes longer yeah, but then it’s at least rock solid, if you know what I mean? plus, if there was some kind of duct tape fix for long samples, Renoise would still need track freezing at some point.

also, this thread made me think, if you could see the waveform of frozen tracks and zoom in on them (maybe even a spectrogram just for kicks)… that might be really useful if you wanna know what exactly is going on (and where it’s in the song, as opposed to rendering stuff and the looking at it).

Yeah I suppose that would optimize things. Just remember to do a recalculation when you swap patterns around.