blog.humaneguitarist.org

of ADLs and SMIL and stuff

[Sun, 09 Jan 2011 18:02:34 +0000]
Even more than usual - this post is me thinking out loud. So some of the stuff at the bottom might not make sense since it refers to some software of mine that really only I use. This morning I played around a little with Kino, an open-source video editor, and Adobe Audition, Adobe's flagship audio editor - which is based on their acquisition of Cool Edit [http://www.adobe.com/special/products/audition/syntrillium.html]. The reason I wanted to play around with Kino is because it can export the project timeline to SMIL [http://www.w3.org/TR/SMIL/]. I was mainly interested in seeing if it could be used as a pseudo audio editor - the idea being it could be a quick and dirty SMIL exporter. Well, it doesn't seem to support importing audio formats. I couldn't get it to import WAV or OGG files. It's still a cool application though. The session exports from Audition are, as expected, pretty dense. For people like me who work in libraries there are issues involved in terms of setting limits for how much can and should be done in digital audio "preservation" (funny, I don't remember ordering jam and bread ...). Well, at least I think there need to be limits, lest libraries want to start being creators, too, and admit that in doing so they are donating material of their own editorial designs back onto themselves. Anyway, by imposing limits I'm not sure XML session exports of thousands of lines for simple edits are a good idea. I'd like to see other session formats without downloading demos for all kinds of audio editing software (some more expensive packages don't even seem to offer demos). For a small fee, there's always AATranslator [http://www.aatranslator.com.au/]. But getting back to SMIL, I'm wondering how to use it in conjunction with AudioRegent [http://blog.humaneguitarist.org/projects/audioregent/] without writing more code into the application - for now. It would seem pretty easy to create a SMIL to SimpleADL [http://blog.humaneguitarist.org/projects/audioregent/#SimpleADL] XSLT and set up a chain to create derivative files. Specifically, say I have a source file called source.wav. And I have two SMIL files as such: source-1.smil.xml <?xml version="1.0"?> <smil xmlns="http://www.w3.org/2001/SMIL20/Language"> <body> <seq> <audio src="source.wav" clipBegin="00:00:00.000" clipEnd="00:00:30.000."/> </seq> </body> </smil> and source-2.smil.xml <?xml version="1.0"?> <smil xmlns="http://www.w3.org/2001/SMIL20/Language"> <body> <seq> <audio src="source.wav" clipBegin="00:00:30.000" clipEnd="00:00:50.000."/> </seq> <seq> <audio src="source.wav" clipBegin="00:01:00.000" clipEnd="00:02:00.000."/> </seq> </body> </smil> For both, the assumption is that two clips are to be made from source.wav: source-1 and source-2. All I'd need to do is then setup a chain as such: 1. Do source-1.smil.xml to temp.adl.xml via XSLT. 2. Have AudioRegent make source.ogg by pointing it, via the command line options, to the source file, source.wav, and the SimpleADL file, temp.adl.xml. 3. Rename source.ogg to source-1.ogg - i.e. with the same prefix as the corresponding SMIL file. 4. Do source-2.smil.xml to temp.adl.xml via XSLT, overwriting temp.adl.xml. 5. Have AudioRegent make source-2.ogg by pointing it, via the command line options, to the source file, source.wav, and the SimpleADL file, temp.adl.xml. 6. Rename source.ogg to source-2.ogg - i.e. with the same prefix as the corresponding SMIL file. Here's what temp.adl.wav would look like initially (step 1): <?xml version="1.0" encoding="UTF-8"?> <audioDecisionList filename="source.wav"> <region id="_01"> <in unit="seconds">0</in> <duration unit="seconds">30</duration> </region> <outputAsTracks>false</outputAsTracks> </audioDecisionList> And then it would look like this during the second pass (step 4): <?xml version="1.0" encoding="UTF-8"?> <audioDecisionList filename="source.wav"> <region id="_01"> <in unit="seconds">30</in> <duration unit="seconds">20</duration> </region> <region id="_02"> <in unit="seconds">60</in> <duration unit="seconds">60</duration> </region> <outputAsTracks>false</outputAsTracks> </audioDecisionList> By the way, since the SimpleADL files are temporary, I don't see why - rather than converting time format to seconds - I couldn't just use something like this: <in unit="time">00:01:00.000</in> <duration unit="time">00:01:00.000</duration> or something ...