Commisioned script request: Render as loop / Song-specific render sett

There are two additions I need to speed up my workflow when I use Renoise for game development.

The first thing is the feature to render a song as a seamless loop. In practice, what this feature needs to do is to - after when rendering a song - take the audio from the last pattern (where I’ll put the instrument/reverb decays) and merge it with the beginning of the song, producing a perfect loop.

The second thing I need is song specific render settings. That is, the sample rate and bit depth needs to be a song setting, not determined by what I rendered last. The rendered file name should always be identical (except the file extension obviously) to the name of the .xrni and always be saved in the same folder.

Can this be done with scripting in Renoise, and for how much would you do this?

This should be quite easy… Just to confirm could you send us a demonstration song with sections you’d like to render as loops?

This will be simple if you don’t mind rendering via selecting a new menu option added somewhere in renoise.

I could probably get this built and tested it in a couple of evenings this week. Just about to PM you with an offer now!

being able to render loops like that would be really swish… :panic:

I’m on it! I’ll send it to you tomorrow.

Sounds perfect. I have two buttons in mind, one for a dialog that changes the settings, and a separate one that just instantly renders the song with those settings, automatically overwriting the old rendered file without asking.

It’ll be great having this functionality!

I think you can’t modify the settings that are in the official song rendering dialog, but indeed, that doesn’t matter too much.
To make the “closed loop” - well, it can be done by summing (editing wavefile), but that might not be fully interacting with compressors etc on master track - best consideration would be probably to copy first pattern to the end of the pat. sequence and render whole song, then in the render replace first pattern by that extra last pattern. My concern would only be that these types of operations would not be quick in scripted renoise. Fastest operation for script would probably be, to load in that rendered file as an instrument, set loop points as computed by script, trigger with sample offset at beginning of ‘last’ pattern, render that again to final sample.

edit. About what I said; I don’t know if it actually makes sense. Do you just want to render it in the way you hear it in renoise when it goes from the last line in the song and loops back to the start, or are the intro and outro quite important but you want these to get crossfaded somehow?

Ideally, I’d like it to sound like you’re just looping it in Renoise. Of course, I understand that master track compressors and limiters won’t work properly if you just take the rendered audio from the last pattern and merge it with the beginning of the song, but I just have to compose the songs so it won’t be a problem. A little bit of headroom to avoid clipping and a decay that’s not too loud for master track compressors/limiters to matter much should do the trick. It’s exactly how I do it right now in Audacity with a rendered Renoise song, so I know it sounds good.

I’m pretty sure this can worked around by rendering in multiple phases:

  • Render the whole track with master fx turned off
  • Perform mixing of track ending with track start
  • Rerender mixed track with master fx turned back on

This obviously won’t work well if you’ve got an effect that creates a tail on the master channel though…

I’ll try this method too and see which you like the results of best.

I have no plans to use master effects that leave a trail anyway. The easy solution with simply merging the last pattern with the beginning of the song will be perfectly fine for me, but if you’d like to try that other solution, feel free to :)