Are there any details about the PlaybackEngineVersion tag available? I have an old .rns file that won’t open in new versions of Renoise anymore, so I guess it’s best to convert it to .xrns if I want to be able to open it in the future. When I convert it in 1.9 there’s no PlaybackEngineVersion tag in the .xrns at all. I’m guessing the default value is 0, because if I open the converted .xrns in a later version of Renoise and save it, there’s a PlaybackEngineVersion tag which says 0. Now the strange thing is that if I convert the .rns file in 2.5 I get an .xrns with PlaybackEngineVersion 1 instead. Is that a bug? What is the difference?

The simple difference is that there have been many different iterations of the playback engine over the years. Each time Renoise gets some new major features under the hood, the playback engine version increases, and then we have to add all sorts of crap to handle the backwards compatibility. So each song is tagged with the correct engine version it needs in order to play correctly.

You should probably avoid tampering with this stuff yourself, and simply use Renoise itself to convert the .rns (really old binary format) to .xrns (more recent XML-based format) as you have been doing.

If you have an old .rns that doesn’t even load correctly into the latest Renoise 2.8, then maybe we can take a look at this to see what’s going on there. We do try to be backwards compatible with all older versions, but perhaps something has been overlooked.

In any case, if you are at least able to convert to .xrns in a slightly older version of Renoise such as 2.5, then you should at least be able to load that into Renoise 2.8?

Yes, this works. My question is why the resulting .xrns ends up with different PlaybackEngineVersion depending on which version I use for the conversion. If I convert using 1.9 I get version 0, and if I use 2.5 I get version 1. Surely they are not interchangable?

No they aren’t, but 2.5 got sample layers and a pattern matrix and 1.9 had exact bpm support but no sample layers, so there are also differences between versions from 1.8 to 2.8. Thus if you load a song xrnx converted by 1.9 song into 2.8, 2.8 has to do some extra conversion for setting up the sample layers and set up tables for the matrix which it doesn’t need for a song saved with 2.5

Perhaps I’m not being clear.

Loading .rns in 1.9 and saving as .xrnx: PlaybackEngineVersion 0
Loading .rns in 2.5 and saving as .xrnx: PlaybackEngineVersion 1

The version numbers don’t change if I load the files in 2.8 and save them again.

Shouldn’t the version number specify which playback engine was used when the song was composed so that it can be correctly played?

So if you resave the one which you convertyed with 1.9 again in 2.5 does it stay as PlaybackEngineVersion 0? I was under the impression version changes were often made in the background (some at least, there is also an Update Song button or similar in Song Settings when loading an old song) and thus the version will always depend on what version of Renoise it was last saved with. Therefore having differnet PlaybackEngineVersion numbers from converting with different versions of Renoise makes perfect sense! But it not changing when you save again with a newer version does not.

Yes. That’s why I’m wondering if there’s a bug in the conversion routine in later versions.

Version changes that don’t affect playback can occur automatically, like doc_version. Version changes that do affect playback, like PlaybackEngineVersion, should only occur when the “upgrade to latest version” button you mention is clicked. Otherwise it would not be safe to save an old song in a new version (it could sound different), and the upgrade button would serve no purpose. This is based on my assumption that the upgrade button’s purpose is to let the user say “please upgrade the song even if it may sound different, I know what I’m doing”.

If the user clicks the upgrade button it makes perfect sense to upgrade PlaybackEngineVersion to the latest version supported by that particular Renoise version. If the user doesn’t click the upgrade button it makes no sense. I did not click the upgrade button when saving the .xrns files mentioned.

This still can mean:
you load an .rns in 1.9 and save as Xrns version 0:compatability mode turned on.
you load an .rns in 2.5 and save as Xrns version 1:compatability mode turned on, plus layer structures for the instruments are already fixed.

When you resave an already compatible format Xrnx, i guess stuff is saved as is and this means no changes are done and your song will still be loaded using the specific engine that Renoise once stamped it would require (until you touch that convert button in the song properties tab).
Well, only the devs can give the exact insight here, if you want to clear it up for yourself, i can only suggest to also save in Renoise 2.0, 2.1, 2.6 and 2.7 and see what those numbers change into and also what the numbers are when you save a clean initialised song natively against an old song that has been converted from compatible mode to native mode. (you get more dots in your stats frame so more an idea of what is really happening)

Is layer structurs for instruments the only difference between verison 0 and 1?

No, that was an example and i even discovered layers got introduced in 2.7.
But there were other things introduced between 1.9 and 2.5, like new commands (aftertouch support) and the delay column in the pattern editor.
I suspect the “true BPM” change is the real difference here that counts, since songs in 1.9 still play with speed and ticks and an approximate bpm value whereas Renoise 2.0 introduced an exact bpm timing model.

The whole update history can be found here:

I found this quote:

I don’t think the question is what happened between versions 1.9 (engine version 1) and 2.5 (engine version 4), because they both have more recent engines than 1.28 (engine version 0) which was used to make the original .rns. Both 1.9 and 2.5 support engine version 1, so I don’t understand why only 2.5 upgrades the file to version 1 or, more importantly, why it does so.

Thanks. I have already looked at it, but found no specific information about differences in the playback engine.

Yes, the version should not change unless you manually click on the “Upgrade” button in the song settings tab. In theory Renoise 2.5 and later versions indeed should use version 0 for old RNS songs, yes, but the change between 0 and 1 was actually a bugfix. We first thought it should not be applied to old RNS songs, then we decided it should. So the behavior is confusing, but correct here.

Here is a quick summary of what changed:

0: <= 1.8.0 fixed glide/pitch effect commands (sample rates other than 44.1 caused pitch command to play back wrong)  
1: <= 1.9.1 changed how release stages in instrument envelopes got applied  
2: <= 2.0.0 "Speed" got replaced by LPB and TPL  
3: <= 2.0.0 bunch of new Sample FX behavior  
4: <= 2.6.1 new polyphony, velocity, sustain and voice stealing behavior  
5: 2.7.0 to current  

That makes sense, thanks for clearing it up!