Saving Song snapshots/versions

Has there been any thought on how to handle creating different variants of a song? So instead of saving a whole new song with a different name (as currently), you could take a snapshot and make tweaks within that to try out a different mix of the tracks, or alternative sequences or routing. The snapshot could be selected in a dropdown up on the top next to the screen set preset buttons. Possible some kind of tool could merge parts of the different snapshots, to create a new snapshot … I dunno it could be a nightmare to develop!

I found this posthttps://forum.renoise.com/t/song-saving-options-such-as/45306 but it wasn’t quite what I thought.

It just seems a bit inefficient to save a whole song, duplicating all the samples again, instead of referencing the same samples.

Any thoughts?

I wrote this command-line program to help with this:

https://github.com/Neurogami/rnsgit

It’s a simple Ruby wrapper around git. This allows me to branch a song and manage different versions without having to have complete duplicates of each.

Nice bit of thinking to use git to manage versions - unfortunately would have to figure an alternative for OSX (which I use), as 7z doesn’t exist for it, so equivalent would have to be found. Also maybe a node version could be made… horses for courses!

Ideally this would be a natively implemented function of the app, but I’d imagine the logic for it would closely follow something along the lines of what you’ve done.

I guess add this to the ever growing list of feature requests! :wink:

ps.Is something like this possible in Lua I wonder, so building a tool to manage it.

rnsgit is a very cool idea. I would love to see it in a script so that you could maybe override the save command to do a commit. Would be a very convenient way of saving the complete song history.

Nice bit of thinking to use git to manage versions - unfortunately would have to figure an alternative for OSX (which I use), as 7z doesn’t exist for it, so equivalent would have to be found. Also maybe a node version could be made… horses for courses!

I used 7z instead of a pure-ruby library because it was a fast way to solve my needs. Replacing calls to 7z with calls to, say, tar or gzip would not be hard; I just have no motivation. Nowadays I do everything on Windows.

But I encourage you (or whomever) to look at the code and try to edit the zip calls. (I might consider calling gzip myself, since I have some Unix utils installed on my WIndos machines, but I’m not sure they behave the same as on a proper Posix system.)

Here’s a super-hacky trick you might try instead: On OSX, create a script (in whatever language; maybe AppleScript?) that is called “7z” and have it delegate to native zip program.

Ideally this would be a natively implemented function of the app, but I’d imagine the logic for it would closely follow something along the lines of what you’ve done.

I would love to see a native option for managing song snapshots. The big issues (for me) for simply making times-stamped copies of xrns files are disk space (mostly when on a laptop, etc.) and ease of moving among changes.

Having file copies is in some ways great because I can just load it up; using git makes me have to switch among branches and I have no simple way to load two versions at the same time.

But a proper version control system makes me more likely to commit even small changes, whereas making a full file copy is something I tend to do only when making larger changes (e.g. deleting sections).

ps.Is something like this possible in Lua I wonder, so building a tool to manage it.

A not-quite-VCS approach might to allow multiple Song.xml files in the xrns zip, and someway to move among them. Something would have to track the samples naming and ordering, and ensuring that any sample referenced by any Song.xml is not deleted.

And even then there are likely other song-tracking issues.

An ambitious Renoiser might consider writing a tool that “just” wraps calls to the native OS file copy command and maybe some way to associate comments with song versions. With a simple GUI.