<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog.humaneguitarist.org &#187; AudioRegent</title>
	<atom:link href="http://blog.humaneguitarist.org/tag/audioregent/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.humaneguitarist.org</link>
	<description>discoveries in digital audio, music notation, and information encoding</description>
	<lastBuildDate>Tue, 07 Feb 2012 03:33:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>AudioRegent 1.3.1 released</title>
		<link>http://blog.humaneguitarist.org/2011/07/28/audioregent-1-3-1-released/</link>
		<comments>http://blog.humaneguitarist.org/2011/07/28/audioregent-1-3-1-released/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 22:31:52 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[digital audio]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[apathy]]></category>
		<category><![CDATA[AudioRegent]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=2954</guid>
		<description><![CDATA[I&#39;ve updated AudioRegent to version 1.3.1. You can read an overview of the software and get the download link to the new version here. The only reason I updated the software is because, as I&#39;ve mentioned before, I&#39;ve been having problems with Windows (and only recently at that) in terms of calling executables from the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;ve updated AudioRegent to version 1.3.1.</p>
<p>You can read an overview of the software and get the download link to the new version <a href="http://blog.humaneguitarist.org/projects/audioregent/">here</a>.</p>
<p>The only reason I updated the software is because, as I&#39;ve mentioned <a href="http://blog.humaneguitarist.org/2011/04/26/dot-dot-slash-slash/">before</a>, I&#39;ve been having problems with Windows (and only recently at that) in terms of calling executables from the command line.</p>
<p>What seems to have helped is to no longer pass a command as a string a la:</p>
<pre class="brush:python">RunSoxString = SoxPath + &quot; ./outWavs/&quot; + OggArray[cnt] + ws + &quot;--comment-file comment.txt ./outOggs/&quot; + str(OggArray[cnt])[:-4] + &quot;.&quot; + outputType + ws + SoxOptions
RunSox = subprocess.Popen([RunSoxString], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
RunSox.wait() #wait until the subprocess finishes
</pre>
<p>Now, it seems I have to pass it as a Python list (aka an array):</p>
<pre class="brush:python">RunSoxString = SoxPath + &quot; ./outWavs/&quot; + OggArray[cnt] + ws + &quot;--comment-file comment.txt ./outOggs/&quot; + str(OggArray[cnt])[:-4] + &quot;.&quot; + outputType + ws + SoxOptions
import shlex
RunSoxList = shlex.split(RunSoxString)
RunSox = subprocess.Popen(RunSoxList, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
RunSox.wait() #wait until the subprocess finishes
</pre>
<p>By the way, I totally haven&#39;t tested this new version enough to distribute it and I haven&#39;t tested it at all on a Linux box. But since no one&#39;s using it, I&#39;m not too worried.</p>
<p><img alt="" src="http://blog.humaneguitarist.org/wp-content/plugins/fckeditor-for-wordpress-plugin/ckeditor/plugins/smiley/images/devil_smile.gif" title="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2011/07/28/audioregent-1-3-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>of ADLs and SMIL and stuff</title>
		<link>http://blog.humaneguitarist.org/2011/01/09/of-adls-and-smil-and-stuff/</link>
		<comments>http://blog.humaneguitarist.org/2011/01/09/of-adls-and-smil-and-stuff/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 18:02:34 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[digital audio]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[AATranslator]]></category>
		<category><![CDATA[ADL]]></category>
		<category><![CDATA[AudioRegent]]></category>
		<category><![CDATA[Kino]]></category>
		<category><![CDATA[session files]]></category>
		<category><![CDATA[SimpleADL]]></category>
		<category><![CDATA[SMIL]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=2195</guid>
		<description><![CDATA[Even more than usual &#8211; 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&#39;s flagship [...]]]></description>
			<content:encoded><![CDATA[<p>Even more than usual &#8211; 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.</p>
<p>This morning I played around a little with Kino, an open-source video editor, and Adobe Audition, Adobe&#39;s flagship audio editor &#8211; which is based on their <a href="http://www.adobe.com/special/products/audition/syntrillium.html">acquisition of Cool Edit</a>.</p>
<p>The reason I wanted to play around with Kino is because it can export the project timeline to <a href="http://www.w3.org/TR/SMIL/">SMIL</a>. I was mainly interested in seeing if it could be used as a pseudo audio editor &#8211; the idea being it could be a quick and dirty SMIL exporter. Well, it doesn&#39;t seem to support importing audio formats. I couldn&#39;t get it to import WAV or OGG files. It&#39;s still a cool application though.</p>
<p>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 &quot;preservation&quot; (funny, I don&#39;t remember ordering jam and bread &#8230;). 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&#39;m not sure XML session exports of thousands of lines for simple edits are a good idea.</p>
<p>I&#39;d like to see other session formats without downloading demos for all kinds of audio editing software (some more expensive packages don&#39;t even seem to offer demos). For a small fee, there&#39;s always <a href="http://www.aatranslator.com.au/">AATranslator</a>.</p>
<p>But getting back to SMIL, I&#39;m wondering how to use it in conjunction with <a href="http://blog.humaneguitarist.org/projects/audioregent/">AudioRegent</a> without writing more code into the application &#8211; for now.</p>
<p>It would seem pretty easy to create a SMIL to <a href="http://blog.humaneguitarist.org/projects/audioregent/#SimpleADL">SimpleADL</a> XSLT and set up a chain to create derivative files.</p>
<p>Specifically, say I have a source file called source.wav. And I have two SMIL files as such:</p>
<p>source-1.smil.xml</p>
<pre class="brush:xml">&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;smil xmlns=&quot;http://www.w3.org/2001/SMIL20/Language&quot;&gt;
  &lt;body&gt;
    &lt;seq&gt;
      &lt;audio src=&quot;source.wav&quot; clipBegin=&quot;00:00:00.000&quot; clipEnd=&quot;00:00:30.000.&quot;/&gt;
    &lt;/seq&gt;
  &lt;/body&gt;
&lt;/smil&gt;
</pre>
<p>and source-2.smil.xml</p>
<pre class="brush:xml">&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;smil xmlns=&quot;http://www.w3.org/2001/SMIL20/Language&quot;&gt;
  &lt;body&gt;
    &lt;seq&gt;
      &lt;audio src=&quot;source.wav&quot; clipBegin=&quot;00:00:30.000&quot; clipEnd=&quot;00:00:50.000.&quot;/&gt;
    &lt;/seq&gt;
    &lt;seq&gt;
      &lt;audio src=&quot;source.wav&quot; clipBegin=&quot;00:01:00.000&quot; clipEnd=&quot;00:02:00.000.&quot;/&gt;
    &lt;/seq&gt;
  &lt;/body&gt;
&lt;/smil&gt;
</pre>
<p>For both, the assumption is that two clips are to be made from source.wav: source-1 and source-2.</p>
<p>All I&#39;d need to do is then setup a chain as such:</p>
<ol>
<li>Do source-1.smil.xml to temp.adl.xml via XSLT.</li>
<li>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.</li>
<li>Rename source.ogg to source-1.ogg &#8211; i.e. with the same prefix as the corresponding SMIL file.</li>
<li>Do source-2.smil.xml to temp.adl.xml via XSLT, overwriting temp.adl.xml.</li>
<li>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.</li>
<li>Rename source.ogg to source-2.ogg &#8211; i.e. with the same prefix as the corresponding SMIL file.</li>
</ol>
<p>Here&#39;s what temp.adl.wav would look like initially (step 1):</p>
<pre class="brush:xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;audioDecisionList filename=&quot;source.wav&quot;&gt;
  &lt;region id=&quot;_01&quot;&gt;
    &lt;in unit=&quot;seconds&quot;&gt;0&lt;/in&gt;
    &lt;duration unit=&quot;seconds&quot;&gt;30&lt;/duration&gt;
  &lt;/region&gt;
  &lt;outputAsTracks&gt;false&lt;/outputAsTracks&gt;
&lt;/audioDecisionList&gt;
</pre>
<p>And then it would look like this during the second pass (step 4):</p>
<pre class="brush:xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;audioDecisionList filename=&quot;source.wav&quot;&gt;
  &lt;region id=&quot;_01&quot;&gt;
    &lt;in unit=&quot;seconds&quot;&gt;30&lt;/in&gt;
    &lt;duration unit=&quot;seconds&quot;&gt;20&lt;/duration&gt;
  &lt;/region&gt;
  &lt;region id=&quot;_02&quot;&gt;
    &lt;in unit=&quot;seconds&quot;&gt;60&lt;/in&gt;
    &lt;duration unit=&quot;seconds&quot;&gt;60&lt;/duration&gt;
  &lt;/region&gt;
  &lt;outputAsTracks&gt;false&lt;/outputAsTracks&gt;
&lt;/audioDecisionList&gt;</pre>
<p>By the way, since the SimpleADL files are temporary, I don&#39;t see why &#8211; rather than converting time format to seconds &#8211; I couldn&#39;t just use something like this:</p>
<pre class="brush:xml">&lt;in unit=&quot;time&quot;&gt;00:01:00.000&lt;/in&gt;
&lt;duration unit=&quot;time&quot;&gt;00:01:00.000&lt;/duration&gt;</pre>
<p>or something &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2011/01/09/of-adls-and-smil-and-stuff/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AudioRegent 1.3 released</title>
		<link>http://blog.humaneguitarist.org/2010/12/26/audioregent-1-3-released/</link>
		<comments>http://blog.humaneguitarist.org/2010/12/26/audioregent-1-3-released/#comments</comments>
		<pubDate>Sun, 26 Dec 2010 15:49:35 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[digital audio]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[AudioRegent]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=2135</guid>
		<description><![CDATA[I&#39;ve updated AudioRegent to version 1.3. You can read an overview of the software and get the download link to the new version here. Here are the changes to the last release: Version 1.3 changes to version 1.1: coded AudioRegent in a more object-oriented style to reduce coding redundancy added command line options improved internal [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;ve updated AudioRegent to version 1.3.</p>
<p>You can read an overview of the software and get the download link to the new version <a href="http://blog.humaneguitarist.org/projects/audioregent/">here</a>.</p>
<p>Here are the changes to the last release:</p>
<p>Version 1.3 changes to version 1.1:</p>
<ul>
<li>
<p><span style="font-size: 10pt;">coded AudioRegent in a more object-oriented</span> style to reduce coding redundancy</p>
</li>
<li>
<p><span style="font-size: 10pt;">added command line options</span></p>
</li>
<li>
<p><span style="font-size: 10pt;">improved internal source-code documentation</span></p>
</li>
<li>
<p>created XML schema for SimpleADL 1.0</p>
</li>
<li>
<p><span style="font-size: 10pt;">created XSL transformation </span>to convert the schema-less SimpleADL from AudioRegent-1.1 to SimpleADL 1.0</p>
</li>
<li>
<p>changed SimpleADLmaker.py to create UTF-8 encoded SimpleADL templates</p>
</li>
<li>
<p>simplified the user interface for SimpleADLmaker.py</p>
</li>
<li>
<p>changed license from BSD to the more simply-worded MIT license</p>
</li>
<li>
<p>updated documentation</p>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2010/12/26/audioregent-1-3-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AudioRegent article published in Code4Lib journal</title>
		<link>http://blog.humaneguitarist.org/2010/06/27/audioregent-article-published-in-code4lib-journal/</link>
		<comments>http://blog.humaneguitarist.org/2010/06/27/audioregent-article-published-in-code4lib-journal/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 15:22:10 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[digital audio]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[AudioRegent]]></category>
		<category><![CDATA[Code4Lib]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=1433</guid>
		<description><![CDATA[If anyone&#39;s reading and is interested: last week the Code4Lib Journal published an article of mine entitled &#34;AudioRegent: Exploiting SimpleADL and SoX for Digital Audio Delivery&#34;. The article is a little overview of AudioRegent and SimpleADL and how they are utilized at the University of Alabama Libraries, where I work. from http://journal.code4lib.org/mission: &#34;The Code4Lib Journal [...]]]></description>
			<content:encoded><![CDATA[<p>If anyone&#39;s reading and is interested: last week the Code4Lib Journal published an article of mine entitled &quot;<a href="http://journal.code4lib.org/articles/2882">AudioRegent: Exploiting SimpleADL and SoX for Digital Audio Delivery</a>&quot;.</p>
<p>The article is a little overview of <a href="http://blog.humaneguitarist.org/projects/audioregent/">AudioRegent and SimpleADL</a> and how they are utilized at the University of Alabama Libraries, where I work.</p>
<p>from <a href="http://journal.code4lib.org/mission">http://journal.code4lib.org/mission</a>:</p>
<blockquote>
<p>&quot;The Code4Lib Journal exists to foster community and share information among those interested in the intersection of libraries, technology, and the future.&quot;</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2010/06/27/audioregent-article-published-in-code4lib-journal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>segmenting audio with AudioRegent, SoX and XML</title>
		<link>http://blog.humaneguitarist.org/2010/01/16/segmenting-audio-with-audioregent/</link>
		<comments>http://blog.humaneguitarist.org/2010/01/16/segmenting-audio-with-audioregent/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 19:05:39 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[digital audio]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[AudioRegent]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[SoX]]></category>
		<category><![CDATA[transcripts]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=697</guid>
		<description><![CDATA[For some reason I&#160;feel obligated to point out that I&#160;haven&#8217;t blogged in a while for a few reasons: Christmas break from school/work at the University of Alabama the desire not to blog for the sake of blogging and &#8230; I&#8217;ve been working on something huge &#8211; at least for me. It&#8217;s a piece of software [...]]]></description>
			<content:encoded><![CDATA[<p>For some reason I&nbsp;feel obligated to point out that I&nbsp;haven&#8217;t blogged in a while for a few reasons:</p>
<ol>
<li>Christmas break from school/work at the University of Alabama</li>
<li>the desire not to blog for the sake of blogging</li>
<li>and &#8230;</li>
</ol>
<p>I&#8217;ve been working on something huge &#8211; at least for me. It&#8217;s a piece of software called AudioRegent that harnesses XML to create derivative &quot;clips&quot; of regions within WAV audio files. <em>A region is simply a user-defined segment within an audio file, like a track on a Compact Disc.<br />
</em></p>
<p>Besides writing the program in Python, which I&nbsp;pretty much finished in December, I had to also develop the XML format which I&nbsp;call <a href="http://blog.humaneguitarist.org/projects/audioregent/#SimpleADL">SimpleADL</a> (Simple Audio Decision List) that AudioRegent looks at and then makes derivative audio clips by leveraging <a href="http://sox.sourceforge.net/">SoX</a>, the Sound Exchange command line audio editor. AudioRegent and SimpleADL can also be used to sync audio to text, like transcripts.</p>
<p>Actually, the programming and devising SimpleADL were the easy part. The hard stuff was the documentation and deciding on a license for the software.</p>
<p>I&nbsp;tried to find a balance in documenting the software: being thorough without writing a novel. I&#8217;m not sure I&nbsp;succeeded, but I can always improve it with time.</p>
<p>I used the W3C&#8217;s <a href="http://www.w3.org/Amaya/">Amaya</a> editor to write the documentation in XHTML. Sure, you can use OpenOffice to export a document to XHTML, but man is it bloated and messy. Amaya writes really clean XHTML.</p>
<p>As for the license, I&nbsp;chose the <a href="http://creativecommons.org/licenses/BSD/">BSD license</a>. As I&nbsp;understand it, this allows one to use the source code at will in future open or closed-source applications as long as you maintain the credits for AudioRegent. I&nbsp;was tempted to use the <a href="http://www.mozilla.org/MPL/">Mozilla Public License</a> (MPL) which, again from what I&nbsp;can tell, is similar to the BSD license except that any source derived from AudioRegent would have to stay open-source though any peripheral code can be closed-source. I absolutely decided against the <a href="http://www.gnu.org/licenses/gpl.html">GNU&nbsp;General Public License</a> which is viral and imposes its philosophy perpetually on all subsequent code, even peripheral code. Some have even argued that it works against its own objectives and is <a href="http://croftsoft.com/library/tutorials/gplmpl/">less &quot;open&quot; than the MPL</a>.</p>
<p>Now I&nbsp;realize that, practically speaking, a skilled programmer could write better code from scratch in 30 minutes as opposed to the some 30 hours I&nbsp;needed, but I&nbsp;wanted to go about this quasi-professionally. And I&nbsp;learned more about licensing, which was cool.</p>
<p>Anyway, rather than try and explain the software itself and how to get it, I&#8217;d be better off pointing you to the <a href="http://blog.humaneguitarist.org/projects/audioregent/">documentation</a> if you have any interest &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2010/01/16/segmenting-audio-with-audioregent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

