New Tool (2.7, 2.8): Track Freezing

Had a bug notice:

During freezing I did try to ‘escape’ my way out of the process and pressed a bunch of keyboard buttons trying to stop the script, maybe that’s what caused the error?

Is there a way to stop the tool mid way? If not then please add it for a future version!

Cheers.

edit:

above error notice was when trying to freeze 45 patterns in realtime, 44100, 32 bit depth, ‘pattern’ instead of ‘sequence’ setting.

This tool is saving my life at the moment, thanks!

Are you planning on improving the sequence option while freezing? I’d like to be able to use pattern selection in the sequence list on the left of the pattern editor to set the range of the freezing. This to circumvent possible redundant empty patterns and thus save some harddisk space :slight_smile: .

Would be cool if you could automatically insert markers in the frozen rendition at every pattern borders as well.

Interesting idea, something I’d not thought off.

I think it would require some reworking of the code logic to identify frozen tracks through as they would only be ‘partially frozen’.

Maybe another optimization would be to ignore patterns which are empty for the track to be frozen?

yep, that would be cool :slight_smile:

also, don’t think this is already taken into account(?) & dunno if this is possible, but whenever a track gets frozen, which has some dsp/vst parameters controlled from another track (through signal follower(s))… could your script render in the ducking?

So, send channels are currently not supported, any chance to get this in a future update, or simply impossible?

I have a suggestion when rendering:

An option to create a dummy track or track column containing an empty instrument mimicing, is an exact copy of the original rendered note event sequence.

Can be handy when you want to play counter melodies etc next to the original melody later on, notes which aren’t visible anymore because of freezing. Maybe the empty instrument used for this can be auto-named to ‘freeze dummy’ or something.

Cheers.

Yo Mxb, how about updating this tool to take into account only rendering the track patterns containing actual notes, right now if you render using the ‘sequence’ option, you could have a big .wav containing large parts of silence in them, redundant space imo.

Please optimize this one :drummer: , would make it a much stronger tool!

This is cool and useful but how come my first line is always cut off? If I have a note on the first line, it’s chopped…??? I hope I’m missing something cause I really want to use this.

If anyone needs to freeze groups, just change line 53 of main.lua to

if track.type ~= renoise.Track.TRACK_TYPE_SEQUENCER and track.type ~= renoise.Track.TRACK_TYPE_GROUP then  

The reason for including the linear mode at all seems to be so that trailing audio across patterns is rendered.
One way of doing it would be by measuring the signal level at say the start of each pattern and to then use slices to keep track of where each bit starts. I’m not sure the API allows for something like that yet.
At any rate this seems like a lot of work for something that isn’t all that important.

For faster freezing when you’re working, a quick fix would be to use pattern mode and go into main.lua and in the freeze_track_pat_pre() function change

if not seq_found then  

to

if not seq_found or song.patterns[current_pattern].tracks[track_index].is_empty then  

This will skip the empty patterns.

Is this a VSTi? Some VSTi’s have this isseu, I think you can perhaps fix this with the VSTi’s static buffer options? (I dont’ use VSTs)

Excellent addition. Thanks.

Yes, this is the reason. Otherwise samples with autoseek will not work correctly.

@jiku: You seem to know your way around my code well - hope it was readable!

No worries.
Your commenting helps a lot. Where it isn’t I think it’s more to do with how I read. :)

Awesome!! Thanks

Hi, thanks for this tool - it’s amazingly useful.

Is it possible to render just one pattern from a tune, rather than all?

Sorry if I’ve missed something obvious - bit of a newbie (I’ve had Renoise for ages but am just getting round to learning it properly).

Many thanks again!

Thalamus

Probably best to do this manually. Select the region you wish to render (select all note columns on that track in that pattern) and render selection to sample.

Will there be a version for Renoise 3.0?

i was trying to get it work in renoise 3.0 by updating the api version to 4 in manifest.xml and replacing the removed function insert_sample_mapping by:

– Setup sample mapping
for i = 1, #render_filenames do
renoise.song().instruments[#song.instruments].sample_mappings[i].sample_index = i
renoise.song().instruments[#song.instruments].sample_mappings[i].base_note = i-1
renoise.song().instruments[#song.instruments].sample_mappings[i].note_range = {i-1, i-1}
renoise.song().instruments[#song.instruments].sample_mappings[i].velocity_range = {1, 127}
end

however there are some more problems, unfortunately.

Yes, the API for the instruments has changed radically.
sample_index has been removed so that no longer works.

Instead it is something like:
renoise.song().instruments[#song.instruments].sample_mappings[layer][index].base_note = i-1

See:
http://forum.renoise…nges-renoise-3/

FreezeTrack v1.4 TEST VERSION for RENOISE 3.0 - USE AT YOUR OWN RISK! BACKUP YOUR FILES BEFORE USING IT! Seems to work nicely but not extensively tested! Don’t blame me if something goes wrong.

Thanks for the hard work Frank (and MXB, naturally) - much appreciated!