An update of php.exe and php5ts.dll taken from the current PHP distribution might be a good idea. If you remove the CVS support, you can also delete the cvs.exe in the tools folder. Maybe there is something similar for SVN… a little commandline app, which can be used in a new .cmd file?

1.07 has been released.


Good times.

these tools rock

i have just recently started using Rigen to make ALOT of breaks samples into renoise instruments

its soo much fun

thank you to the people who made these tools available

XRNS-PHP and XRNS-SF 1.08 have been released.

Fixed the XRNS2MIDI and XRNS_MERGE scripts to work with Renoise 2.5, unmaintained scripts are now in a separate “deprecated” directory, minor optimizations and bug fixes.

Shift-reload, grab it here:

I’ve upgraded the PHP scripts to work with Renoise 2.8.

The changes are in SVN:

It’s going to take me a while to repackage the XRNS Script Frontend since I don’t work on Windows. I’ll be looking into it later this week and will post again with a release when that happens.

Here is an updated package to get the Windows crowd started. File contains the latest scripts by Conner_Bw with a modified “xrns_ogg.php” (see Changelog).


Version 1.09 (03/27/2012)

Changed: Updated XRNS-PHP scripts.
Changed: Updated included PHP version to 5.4.
Changed: Replaced CVS utility with SlikSVN.
Changed: Updated included oggenc tool version to 2.87.
Changed: Updated xrns_ogg.php to use oggenc2 instead of oggenc.
Added: Licenses folder for all included utilities.
Added: Redist folder includes Microsoft Visual C++ 2008 Redistributable Packages needed for PHP 5.4 and oggenc2.

Thanks a lot. Very useful.

No news is good news? Scripts have been updated and are ready to be used:



Uh oh, I’m getting a bug with the merge tool with some files:

Warning: DOMDocument::schemaValidate(): Element ‘SignalFollowerDevice’: The attr
ibute ‘type’ is required but missing. in D:\renoise\xrns-sf-1.09\scripts\xrns_fu
nctions.php on line 183
Error: XML is invalid!

(using the windows build)

Sounds like the same bug I reported on March 26th. It’s a Renoise bug that’s awaiting a fix in “pending”.


There’s not much I can do to fix this until Renoise relases a new version. If you want to take a risk, just open xrns_merge.php in something like Notepad++ Go to line 538 (near the end of the file). Look for:

if (!xrns_xsd_check($sx1, (int)$sx1['doc_version'])) {  
 echo "Error: XML is invalid!\n";  

And change to:

if (!xrns_xsd_check($sx1, (int)$sx1['doc_version'])) {  
 echo "Error: XML is invalid!\n";  

This will change the code to still print the error, but create the XRNS anyway, which will probably load anyway.

Please try this. If it doesnt’t work post the XRNS with problems so I can look into it some more.

Hope this helps.

EDIT: I thought it was working but it actually doesn’t. Renoise gives the message:
Loading failed with the error:
Fatal error while reading a document. Failed to create an object of type ‘SignalFollowerDevice’!.

And… unfortunately I have another bug to report! Guess I’m the main tester of merge.php right now, haha. It seems that when trying to merge a with unicode characters in the sample file name, it gives a warning. The resulting .xrns won’t open either.

Sample error:
Warning: opendir(C:\Users\David\AppData\Local\Temp/xrns_merge_edd21c9886e17fb0db
fc1ea1f27baa32_Track02//SampleData/Instrument15 (01. ・Sample00 (01. ・・ァ・.fla
Track02//SampleData/Instrument15 (01. ・Sample00 (01. ・・ァ・.flac): The directo
ry name is invalid. (code: 267) in D:\renoise\xrns-sf-1.09\scripts\xrns_function
s.php on line 86

Okay, I uploaded some example .xrns files.

[signal follower problem]
Example A + Example B = Example C, which Renoise refuses to open.

[unicode problem]
Example D + (anything) results in a bunch of errors and in some tests the resulting file won’t open.
Example D + Example D = Example E, which has simply deleted the unicode sample.

The file copying thing is a problem with PHP and Windows. It doens’t happen on my OS X machine. There’s not much I can do about this right now. Sorry.

As for the SignalFolllower bug. This should be fixed now. Sorry about that. Can you try the attached file and get back to me with feedback?

Attachment 3315 not found.

The good news is that appears to have fixed it perfectly - thanks as always for your hard work and super-quick response time! You are awesome.

The bad news is I found another bug. Fortunately it should be a quick fix. Send routing from tracks is now properly offset, but send routing within send tracks is not. Example:
File 1
send A

File 2
send B ( contains send->C )
send C

send A
send B ( contains send->B ) [invalid]
send C

I poked through the code but couldn’t quite wrap my head around exactly where the cause of this problem was.

Another bug: offsetting of Key Tracker (and probably all related devices) is screwy. I’ve attached example files. Basically it seems like the Key Tracker gets offset when it shouldn’t.
Key Tracker -> vox

Key Tracker B -> vox B

Key Tracker -> vox B
Key Tracker B -> vox B

Thanks for the example files. These really help. The detailed reports too.

Short version: Up until now, whatever I was doing to deal with SignalFollower and friends was just totally wrong and no one actually uses this script otherwise they would have noticed. If you want to see the changes click here.

Long version:

  • Renoise added a new track type named *GroupTrack mixed in with *Track. Calculations requires you to preserve the order that they appear. My XML library just groups these as two separate arrays in a node. I had to workaround this, somehow.

  • Looking at the code I wrote a few months back (to handle SignalFollower and friends) I didn’t understand what I did. After a few hours of scratching my head I realized that I wrote the code to handle merging the same file. So: FILE1 + FILE1 = FILE2 and all my algorithms/procedures were based on that, which is just wrong.

Should be working much better now. Please try this version and give feedback:

Attachment 3318 not found.

Thanks again - that seems to have fixed the KeyTrack/related problems! I think the routing within send tracks is still not quite right though, I’ve attached examples.

send track A

send track B [contains send -> send track C]
send track C

sendABC (merged)
send track A
send track B [contains send -> send track B]
send track C

Awesome, thanks again.

It never occurred to me that you could put sends (and a signal follower) on the send tracks.

What happened above is that, since the code never touched them, it would point to it’s old value. Example:

Before: [TRACKS|MASTER|SENDS] (from 0 to X)  
After: [TRACKS|TRACKS2|MASTER|SENDS|SENDS2] (still from 0 to X, but bigger)  

Sends in SEND 2 would point to their old value, which would be to the left of their intended value when merged.

Also, DestTrack->Value counts differently than DestSendTrack->Value so I have to do things differently depending on the device.

Please try this new version and give feedback. Fingers crossed this is the last one (changes):

Attachment 3330 not found.

I guess I go a little crazy with the routing. Anyway, I must say again - you are amazing! I tested on a few complex files and everything seems to be in perfect working order. Fingers crossed. I’ll let you know if something else pops up.

Idea for a future feature: an option to automatically insert ZLxx and ZTxx pattern effects on the master track, to set tempo/LPB properly for the new track. Not sure how easy it would be to implement. I might try to learn a little PHP and see if I can code it myself when I get the time. (edit: and perhaps ZKxx for ticks per line)

Topic is closed.
This project is no longer under active development.
To be continued here.