Breakpoint demolog, day 18: loading the Song.xml

I have finally decided that I’ll load directly Renoise’s Song.xml file instead of preprocessing it as I did with the .it files in to_the_beat.

Right now, I’m manually uncompressing the .xrns file and copying the contained Song.xml file to my data folder, but in the future I would like to automate the process so that I just leave a song.xrns file in the data folder and it gets uncompressed “on the fly”, and the .xml file is extracted and used.

Any suggestion for a lightweight unzipping library that doesn’t need to be installed to /usr/local or anything like that and can be easily added to a C++ project will be really appreciated. Yes, I know I can ‘Google it’, but I am asking for opinions from real library users. I wonder if there exists something like TinyUNZIP… :-)

Back to the XML front, I am using TinyXML for reading/parsing/traversing the XML, as I have been doing since 2005 since Shine suggested it to me, but I have also updated it to the latest version :D

Since Renoise’s song format has way more nested elements than the common script.xml that I use, I have written a getElementByTagName function (like a mix of getElementById and getElementsByTagName functions from JavaScript) so that I can look for child nodes with a given name, instead of linearly processing the full document as I had been doing when parsing the demo script. This way I can ignore things that I don’t care about such as the samples, envelopes, etc, and focus only on the data I am interested in – such as patterns, plugin parameters, etc :)

I guess the function could be really optimised since each time it looks for something it has to start at the parent node again — but then again there’s not much data to parse, and initial look ups are pretty much immediate so I’m not going to bother about it.

I haven’t finished yet extracting the relevant data, but there’s something else I have done: I tried yesterday’s test in a real Windows machine (mrdoob’s Eee) and it worked, quite better than in Wine. So things look like progressing in the right direction!

No screenshot, nothing to see today, move along!

ie6 for Android