<?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</title>
	<atom:link href="http://blog.humaneguitarist.org/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>audio transcription and the undead</title>
		<link>http://blog.humaneguitarist.org/2012/01/31/audio-transcription-and-the-undead/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/31/audio-transcription-and-the-undead/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 04:22:28 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[literature]]></category>
		<category><![CDATA[technophilia]]></category>
		<category><![CDATA[Dracula]]></category>
		<category><![CDATA[phonograph]]></category>
		<category><![CDATA[recording]]></category>
		<category><![CDATA[vampires]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=4083</guid>
		<description><![CDATA[Let&#39;s forget the fact I&#39;ve blogged more this month than I intend to in a whole year &#8230; What I really want to mention is that I&#39;m reading Dracula by Bram Stoker and noticed these very interesting bits (or should I say &#39;bites&#39;?) in Chapter 17. In this chapter the character of Mina Harker is [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#39;s forget the fact I&#39;ve blogged more this month than I intend to in a whole year &#8230;</p>
<p>What I really want to mention is that I&#39;m reading <u>Dracula</u> by Bram Stoker and noticed these very interesting bits (or should I say &#39;bites&#39;?) in <a href="http://www.gutenberg.org/files/345/345-h/345-h.htm#chap17">Chapter 17</a>.</p>
<p>In this chapter the character of Mina Harker is becoming acquainted with a friend of her now dead friend, Lucy. This friend, Dr. Seward, uses a phonograph to record his patient notes, much as my dad used to use a micro-cassette back in the late 1970&#39;s and 1980&#39;s. Mina, on the other hand, uses her cutting edge writing tool, the typewriter, to make her diary entries easily readable.</p>
<p>The funny thing is that Seward confesses to Mina that he doesn&#39;t have a way to get to specific points within each recording, i.e. he doesn&#39;t have a way to denote and retrieve audio at a specific time with advanced knowledge of what passages exist at those points. Um, <em>sound</em> familiar?</p>
<p><img alt=":P" src="http://blog.humaneguitarist.org/wp-content/plugins/fckeditor-for-wordpress-plugin/ckeditor/plugins/smiley/images/tounge_smile.gif" title=":P" /></p>
<blockquote>
<p><span style="font-size:10px;">MINA HARKER&#39;S JOURNAL</p>
<p>		29 September.<br />
		</span></p>
<p><span style="font-size:10px;">Again he paused, and I could see that he was trying to invent an excuse. At length, he stammered out, &quot;You see, I do not know how to pick out any particular part of the diary.&quot;</p>
<p>		&#8230;</span></p>
<p><span style="font-size: 10px;">I could not but smile, at which he grimaced. &quot;I gave myself away that time!&quot; he said. &quot;But do you know that, although I have kept the diary for months past, it never once struck me how I was going to find any particular part of it in case I wanted to look it up?&quot; </p>
<p>		</span></p>
</blockquote>
<p>Mina goes on to transcribe his recordings so that the text can be compared with other diary entries by principal characters as they try to formulate the totality of Dracula&#39;s agenda.</p>
<blockquote>
<p><span style="font-size:10px;">DR. SEWARD&#39;S DIARY</p>
<p>		30 September.</span></p>
<p><span style="font-size: 10px;">Harker has gone back, and is again collecting material. He says that by dinner time they will be able to show a whole connected narrative. He thinks that in the meantime I should see Renfield, as hitherto he has been a sort of index to the coming and going of the Count. I hardly see this yet, but when I get at the dates I suppose I shall. What a good thing that Mrs. Harker put my cylinders into type! We never could have found the dates otherwise. </span></p>
</blockquote>
<p><strong>Update (or &quot;later&quot; as in the novel):</strong> It might be a nice homage to sync the <a href="http://www.genericradio.com/show.php?id=0cd6ca7e1d5e4e1c">transcript</a> to the <a href="http://www.archive.org/download/OrsonWelles-MercuryTheater-1938Recordings/MercuryTheater38-07-11Dracula.mp3">audio</a> of Orson Welles&#39; radio play based on the book.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/31/audio-transcription-and-the-undead/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.archive.org/download/OrsonWelles-MercuryTheater-1938Recordings/MercuryTheater38-07-11Dracula.mp3" length="0" type="audio/mpeg" />
		</item>
		<item>
		<title>VPS&#8217; ain&#8217;t cheap: MXMLiszt demo no longer online</title>
		<link>http://blog.humaneguitarist.org/2012/01/31/vps-aint-cheap-mxmliszt-demo-no-longer-online/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/31/vps-aint-cheap-mxmliszt-demo-no-longer-online/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 23:55:15 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[KickAssVPS]]></category>
		<category><![CDATA[MXMLiszt]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=4080</guid>
		<description><![CDATA[Just FYI: The live demo for MXMLiszt is no more. I decided to save money and stop paying monthly rates for a VPS on KickAssVPS.com that was originally purchased because I needed to have a live demo for my research while in graduate school. I&#39;ve been out of school for a while and now it&#39;s [...]]]></description>
			<content:encoded><![CDATA[<p>Just FYI:</p>
<p>The live demo for <a href="http://blog.humaneguitarist.org/projects/mxmliszt/">MXMLiszt</a> is no more.</p>
<p>I decided to save money and stop paying monthly rates for a VPS on KickAssVPS.com that was originally purchased because I needed to have a live demo for my research while in graduate school. I&#39;ve been out of school for a while and now it&#39;s time to move on.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/31/vps-aint-cheap-mxmliszt-demo-no-longer-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>geo this, geo that: easy acquisition of KML files with BatchGeo</title>
		<link>http://blog.humaneguitarist.org/2012/01/28/geo-this-geo-that-easy-acquisition-of-kml-files-with-batchgeo/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/28/geo-this-geo-that-easy-acquisition-of-kml-files-with-batchgeo/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 14:52:44 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[technophilia]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[BatchGeo]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[KML]]></category>
		<category><![CDATA[laziness]]></category>
		<category><![CDATA[maps]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=4072</guid>
		<description><![CDATA[Geolocation/geocoding is so &#34;hip&#34; these days. Everyone&#39;s so obsessed where where they and other things are. There&#39;s almost a comparison with 3-D filmmaking &#8230; Funny. Not too many folks seem all that concerned with when things are. Anyway &#8230; At work, we have a database with all the libraries we serve and their addresses. And [...]]]></description>
			<content:encoded><![CDATA[<p>Geolocation/geocoding is so &quot;hip&quot; these days. Everyone&#39;s so obsessed where where they and other things are. There&#39;s almost a comparison with 3-D filmmaking &#8230;</p>
<p>Funny. Not too many folks seem all that concerned with <em>when</em> things are.</p>
<p>Anyway &#8230;</p>
<p>At work, we have a database with all the libraries we serve and their addresses. And the other week we needed to quickly make a map with all their locations.</p>
<p>If necessity if the mother of invention, laziness is it&#39;s favorite uncle.</p>
<p>Enter <a href="http://batchgeo.com/">BatchGeo</a>. We were able to take those values from our database and get a map generated in minutes. But it gets better.</p>
<p>One of the nice things about this process is that in addition to a map, you also get a <a href="http://code.google.com/apis/kml/">KML</a> file download option. Taking this little XML file, it&#39;s a simple process (via XSL or other) to make a delimited file containing the inputted names of institutions and their latitude and longitude (altitude is also available).</p>
<p>From there, it&#39;s not brain surgery to get those coordinates into a database and using an SQL JOIN to be able to push out an institution&#39;s name and now its coordinates, too, whenever.</p>
<p>Just in case someone wants/needs to do something similar with an address book or a list of businesses, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/28/geo-this-geo-that-easy-acquisition-of-kml-files-with-batchgeo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>holy silence: the art of movie theaters</title>
		<link>http://blog.humaneguitarist.org/2012/01/24/holy-silence-the-art-of-movie-theaters/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/24/holy-silence-the-art-of-movie-theaters/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 02:31:01 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[film]]></category>
		<category><![CDATA[Batman]]></category>
		<category><![CDATA[interviews]]></category>
		<category><![CDATA[movie theaters]]></category>
		<category><![CDATA[SCIWAY]]></category>
		<category><![CDATA[silent movies]]></category>
		<category><![CDATA[South Carolina]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=4055</guid>
		<description><![CDATA[Tonight&#39;s a bust. I over-napped after work and now, as I listen to some Josquin des Prez, I think the most I can do tonight is write a little blog post and then go out for a beer. I saw &#34;The Artist&#34; this weekend. I don&#39;t give a rip about critics and awards, etc. but, [...]]]></description>
			<content:encoded><![CDATA[<p>Tonight&#39;s a bust. I over-napped after work and now, as I listen to some Josquin des Prez, I think the most I can do tonight is write a little blog post and then go out for a beer.</p>
<p>I saw &quot;<a href="http://www.imdb.com/title/tt1655442/">The Artist</a>&quot; this weekend. I don&#39;t give a rip about critics and awards, etc. but, having said that, this one reaches the heights of sublimity.</p>
<p><img alt="movie poster for The Artist" class="alignnone" height="317" src="http://upload.wikimedia.org/wikipedia/en/f/f3/The-Artist-poster.png" title="The Artist" width="214" /></p>
<p>This is the first time I&#39;ve seen a silent, well <em>mostly</em> silent, film on the big screen. Big images and <strong>big</strong> music. It was really beautiful and sorrowful to think how this has been sublimated to talkies and now the &quot;everything must be in 3-D&quot; way. It&#39;s a good reminder in general, but also in the library context, that new and newer technology isn&#39;t necessarily better. It&#39;s just different. With every gain, something is lost.</p>
<p>Watching the film also reminded me of a newsletter entry and interview I worked on during my time at <a href="http://www.sciway.net">SCIWAY.net</a>. I interviewed John Coles and Mark Tiedje of <a href="http://scmovietheatres.com/">SCMovieTheatres.com</a> about their research into South Carolina movies <strong>and</strong> movie theaters of the past. You can read the newsletter entry <a href="http://www.sciway.net/sn/42.html#1">here</a> and the interview <a href="http://www.sciway.net/hist/sc-single-screen-theaters.html">here</a>.</p>
<p>When my co-worker Cedric and I interviewed John and Mark, we did so at the Majestic Grill in Charleston, SC. Sadly, like many old movie theaters the restaurant and all its crazy film memorabilia are no longer being shown, as it were. The interview lasted well over four hours; there was just too much great stuff we learned. I still remember I&#39;d talked to John and Mark about watching some old Saturday serials together. In particular, we talked a little about <a href="http://en.wikipedia.org/wiki/Batman_%28serial%29">this</a> Batman serial from the 1940&#39;s I&#39;d recently seen and how it was total war propaganda replete with racial slurs toward the &quot;enemy&quot;.</p>
<p>Well, I&#39;m feeling like George Valentin from &quot;The Artist&quot; &#8211; old and washed up in my nostalgia for the past. Like him, I think I&#39;ll turn to the bottle, but for me it&#39;s going to be of the beer variety.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/24/holy-silence-the-art-of-movie-theaters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>trying to easily format Solr results as HTML with Python</title>
		<link>http://blog.humaneguitarist.org/2012/01/21/trying-to-easily-format-solr-results-as-html-with-python/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/21/trying-to-easily-format-solr-results-as-html-with-python/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 17:03:49 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[information retrieval]]></category>
		<category><![CDATA[Edgar Allen Poe]]></category>
		<category><![CDATA[Solr]]></category>
		<category><![CDATA[Tempo]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=4049</guid>
		<description><![CDATA[Just a quick Saturday morning post &#8230; One of the nice things about Solr is the ability to pass parameters that will return the results in various formats, including a Python dictionary. I wanted to see if I could whip up a little function that would let me pass to it both the name of [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick Saturday morning post &#8230;</p>
<p>One of the nice things about Solr is the ability to pass parameters that will return the results in various formats, including a Python dictionary.</p>
<p>I wanted to see if I could whip up a little function that would let me pass to it both the name of a Solr element (like &quot;title&quot;) and then the HTML element I want it mapped to.</p>
<p>It doesn&#39;t seem that bad, and is a good reminder that building UIs is in large part about parsing data into HTML, upon which things like CSS and JavaScript can enter and act re: display and interface.</p>
<p>Anyway, so here&#39;s an example of some code that gets five results from a Solr instance and then uses the function I wrote to output some HTML elements:</p>
<pre class="brush:python">import urllib2 as urllib

### first, get 5 Solr results formatted as a Python dictionary
query_url = &#39;http://data.twigkit.com/solr-gutenberg/select/?q=poe&amp;version=2.2&amp;start=0&amp;rows=5&amp;wt=python&amp;explainOther&#39;
solr = urllib.urlopen(query_url).read() #read the results
print type(solr) #returns that it&#39;s a string :-[
solr = eval(solr) #turns the string into a dictionary. yay.
print type(solr) #returns that it&#39;s now a dictionary!

### second, write a function that converts stuff to HTML
def pysolr2html(tagIn, tagOut):
    tagVal = solr[&#39;response&#39;][&#39;docs&#39;][i][tagIn]
    htmlVars = (tagOut, tagIn, tagVal, tagOut)
    return &#39;&lt;%s class=&quot;solr_%s&quot;&gt;%s&lt;/%s&gt;&#39; %htmlVars

### third, iterate over the response
i = 0
for doc in solr[&#39;response&#39;][&#39;docs&#39;]:
    print pysolr2html(&#39;id&#39;,&#39;span&#39;)
    print pysolr2html(&#39;title&#39;,&#39;p&#39;)
    i = i + 1
</pre>
<p>And here&#39;s the output from IDLE:</p>
<p><code>&gt;&gt;&gt; <br />
	&lt;type &#39;str&#39;&gt;<br />
	&lt;type &#39;dict&#39;&gt;<br />
	&lt;span class=&quot;solr_id&quot;&gt;etext8893&lt;/span&gt;<br />
	&lt;p class=&quot;solr_title&quot;&gt;Selections from Poe&lt;/p&gt;<br />
	&lt;span class=&quot;solr_id&quot;&gt;etext9511&lt;/span&gt;<br />
	&lt;p class=&quot;solr_title&quot;&gt;Several Works by Edgar Allan Poe&lt;/p&gt;<br />
	&lt;span class=&quot;solr_id&quot;&gt;etext9512&lt;/span&gt;<br />
	&lt;p class=&quot;solr_title&quot;&gt;The Works of Edgar Allan Poe, Volume 1&lt;/p&gt;<br />
	&lt;span class=&quot;solr_id&quot;&gt;etext9516&lt;/span&gt;<br />
	&lt;p class=&quot;solr_title&quot;&gt;The Works of Edgar Allan Poe, Volume 5&lt;/p&gt;<br />
	&lt;span class=&quot;solr_id&quot;&gt;etext9513&lt;/span&gt;<br />
	&lt;p class=&quot;solr_title&quot;&gt;The Works of Edgar Allan Poe, Volume 2&lt;/p&gt;<br />
	</code></p>
<p>I&#39;ll probably do this with PHP in the end and see how easy it might be to make a small Solr wrapper, kind of like <a href="http://tempojs.com/">Tempo</a> which is super light-weight. But for now, I need to remind myself it&#39;s the weekend.</p>
<p><img alt=":P" src="http://blog.humaneguitarist.org/wp-content/plugins/fckeditor-for-wordpress-plugin/ckeditor/plugins/smiley/images/tounge_smile.gif" title=":P" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/21/trying-to-easily-format-solr-results-as-html-with-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hammer prepares to nail restoration efforts</title>
		<link>http://blog.humaneguitarist.org/2012/01/20/hammer-prepares-to-nail-restoration-efforts/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/20/hammer-prepares-to-nail-restoration-efforts/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 04:33:27 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[film]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[Hammer Films]]></category>
		<category><![CDATA[restoration]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=4043</guid>
		<description><![CDATA[From the folks at the Brutal as Hell website: Here&#8217;s some killer news for fans of Hammer Horror. Yesterday Hammer announced that they would be partnering with several film outlets to bring over 30 of their classic horror flicks to Blu-ray in the coming months and years &#8230; What makes this a notable project is [...]]]></description>
			<content:encoded><![CDATA[<p>From the folks at the <u>Brutal as Hell</u> website:</p>
<blockquote>
<p>Here&rsquo;s some killer news for fans of Hammer Horror. Yesterday Hammer announced that they would be partnering with several film outlets to bring over 30 of their classic horror flicks to Blu-ray in the coming months and years &#8230; What makes this a notable project is that Hammer is investing heavily in the restoration of these films, as opposed to taking the lazy man&rsquo;s road and creating basic upconverted dumps.</p>
<p><em>source: Hammer Films to Launch Monumental Restoration Project | Brutal As Hell. Retrieved January 20, 2012, from http://www.brutalashell.com/2012/01/hammer-films-to-launch-monumental-restoration-project/<br />
		</em></p>
</blockquote>
<p>You can read more at Hammer&#39;s official WordPress blog <a href="http://blog.hammerfilms.com/?p=18">here</a>.</p>
<p>I don&#39;t have a Blu-ray player, but this should eventually be good news for streaming, too. Gawd, I wish I was in the film restoration business.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/20/hammer-prepares-to-nail-restoration-efforts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>installing lxml on my Amazon Linux instance</title>
		<link>http://blog.humaneguitarist.org/2012/01/16/installing-lxml-on-my-amazon-linux-instance/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/16/installing-lxml-on-my-amazon-linux-instance/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 15:39:57 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[technophilia]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[lxml]]></category>
		<category><![CDATA[witches]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=4024</guid>
		<description><![CDATA[Last night I installed lxml on my Amazon Linux AMI (ami-31814f58) and it was just as not-straightforward as when my co-worker and I put it on our CentOS server a few weeks ago. So by referring to the yum log, I think the following covers what I needed to install with yum: gcc-4.4.5-6.35.amzn1.i686 #for building [...]]]></description>
			<content:encoded><![CDATA[<p>Last night I installed lxml on my Amazon Linux AMI (ami-31814f58) and it was just as not-straightforward as when my co-worker and I put it on our CentOS server a few weeks ago.</p>
<p>	So by referring to the yum log, I think the following covers what I needed to install with yum:</p>
<p>	<samp>gcc-4.4.5-6.35.amzn1.i686 #for building lxml<br />
	python26-devel-2.6.7-1.36.amzn1.i686<br />
	libxslt-1.1.26-2.6.amzn1.i686 #this can&#39;t be necessary given the line below, right?<br />
	libxslt-devel-1.1.26-2.6.amzn1.i686<br />
	libxml2-devel-2.7.6-1.9.amzn1.i686</samp></p>
<p>	&#8230; and then I used easy_install (which already was on the system &#39;far as I know) to install lxml a la: <code>easy_install lxml</code>.</p>
<p>	For whatever reason, the easy_install part took several, several minutes. But I was watching &quot;<a href="http://www.imdb.com/title/tt0479997/">Season of the Witch</a>&quot; so I didn&#39;t mind.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/16/installing-lxml-on-my-amazon-linux-instance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>syntax highlighting on WordPress: you can quote me on this</title>
		<link>http://blog.humaneguitarist.org/2012/01/14/syntax-highlighting-on-wordpress-you-can-quote-me-on-this/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/14/syntax-highlighting-on-wordpress-you-can-quote-me-on-this/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 16:46:32 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[technophilia]]></category>
		<category><![CDATA[quotation marks]]></category>
		<category><![CDATA[syntax highlighting]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=3975</guid>
		<description><![CDATA[I&#39;ve totally over-blogged this month, but just as a note to self &#8230; I&#39;ve noticed that when using a syntax highlighter with WordPress &#8211; I&#39;m using Syntax Highlighter Compress &#8211; that using single quotes can sometimes cause the highlighting to break down. In the example below I have identical code written twice. Well, almost identical. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;ve totally over-blogged this month, but just as a note to self &#8230;</p>
<p>I&#39;ve noticed that when using a syntax highlighter with WordPress &#8211; I&#39;m using <a href="http://wordpress.org/extend/plugins/syntax-highlighter-compress/">Syntax Highlighter Compress</a> &#8211; that using single quotes can sometimes cause the highlighting to break down.</p>
<p>In the example below I have identical code written twice. Well, almost identical. In the first, I&#39;m surrounding &quot;data-startTime&quot; with single quotes and in the second I&#39;m using doubles. The first has some highlighting problems where single quotes are.</p>
<p>Oh well, I guess I&#39;ll just have to keep an eye on that.</p>
<pre class="brush:javascript">function jAUs_3(this_currentTime,thisAudioTag_stopTime,i){

  if (thisAudioTag_stopTime){
    //if there&#39;s a data-stopTime attribute then ...
    if (this_currentTime &gt; thisAudioTag_stopTime){
      //... reset audio to data-startTime when data-stopTime is reached.
      audioTagArray[i].currentTime = audioTagArray[i].getAttribute(&#39;data-startTime&#39;);
      audioTagArray[i].pause();
    }
  }
  else if (audioTagArray[i].ended == true){
    //if there&#39;s no data-stopTime, move back to data-startTime when playback has ended.
    audioTagArray[i].currentTime = audioTagArray[i].getAttribute(&#39;data-startTime&#39;);
    audioTagArray[i].pause();
  }
}
</pre>
<pre class="brush:javascript">function jAUs_3(this_currentTime,thisAudioTag_stopTime,i){

  if (thisAudioTag_stopTime){
    //if there&#39;s a data-stopTime attribute then ...
    if (this_currentTime &gt; thisAudioTag_stopTime){
      //... reset audio to data-startTime when data-stopTime is reached.
      audioTagArray[i].currentTime = audioTagArray[i].getAttribute(&quot;data-startTime&quot;);
      audioTagArray[i].pause();
    }
  }
  else if (audioTagArray[i].ended == true){
    //if there&#39;s no data-stopTime, move back to data-startTime when playback has ended.
    audioTagArray[i].currentTime = audioTagArray[i].getAttribute(&quot;data-startTime&quot;);
    audioTagArray[i].pause();
  }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/14/syntax-highlighting-on-wordpress-you-can-quote-me-on-this/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jAUs 3-D: no glasses required</title>
		<link>http://blog.humaneguitarist.org/2012/01/11/jaus-3-d-no-glasses-required/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/11/jaus-3-d-no-glasses-required/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 00:55:57 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[digital audio]]></category>
		<category><![CDATA[audio tag]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[jAUs]]></category>
		<category><![CDATA[streaming media]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=3916</guid>
		<description><![CDATA[So, I am slightly obsessive compulsive. I worked a little more tonight on this jAUs thing to add support for start and stop time attributes in the HTML5 &#60;audio&#62; tag. Video should work, too, with a little work, but I don&#39;t care about that right now. What I did tonight was make it so that [...]]]></description>
			<content:encoded><![CDATA[<p>So, I am slightly obsessive compulsive.</p>
<p>I worked a little more tonight on this jAUs thing to add support for start and stop time attributes in the HTML5 &lt;audio&gt; tag.</p>
<p>Video should work, too, with a little work, but I don&#39;t care about that right now.</p>
<p>What I did tonight was make it so that if a &quot;stopTime&quot; attribute is used, then after that point is reached the player will move the scrubber back to the original &quot;startTime&quot; value though at that point the playback is already paused.</p>
<p>If there is no &quot;stopTime&quot; attribute, then after the file&#39;s played itself to the end, the scrubber will move back to the &quot;startTime&quot; value. Again, playback is already paused at that point.</p>
<p>I&#39;ve tested this with Firefox 9.01, Internet Explorer 9, Safari 4.0.5, Opera 11.60, and Chrome 16.0.912.75 on my Windows 7 (32-bit) laptop.</p>
<p>Running everything from my desktop, I had no problems except that I should mention that if I used the &quot;autoplay&quot; attribute and set it to &quot;true&quot;, Chrome didn&#39;t start the playback as it should, but it seems that maybe that&#39;s a Chrome problem that <a href="http://www.google.com/support/forum/p/Chrome/thread?tid=6636ce31ccd9b4e7&amp;hl=en ">others are having</a>, too.</p>
<p>Testing with the files uploaded to my hosted account was a different story. Opera seemed to need a page refresh before the scrubber would locate itself at the proper positions &#8211; though adding a <a href="http://blog.humaneguitarist.org/2012/01/09/jaus-trying-to-add-a-starttime-attribute-to-the-audio-tag">pesky alert()</a> at the beginning seemed to make Opera happy. Chrome and Safari seemed to take a few seconds to get situated, although they seemed to generally need a restart to move the scrubber to the right place for the last audio player. I didn&#39;t test the alert() thing for these two. Firefox did well although I hate the way Firefox moves the audio players around depending on whether the audio has been played or not. And that leaves IE9 &#8230; which, hands down, did the best. Maybe that&#39;s because of the exception I&#39;d added for it as I mentioned in an <a href="http://blog.humaneguitarist.org/2012/01/09/jaus-trying-to-add-a-starttime-attribute-to-the-audio-tag#update011012">earlier post</a>.</p>
<p>So, there&#39;s still work to do and things to investigate.</p>
<p>Also, I haven&#39;t tested this with really long files or anything so I don&#39;t know how that would go. But then again, as I&#39;ve heard others say, HTML5 media elements aren&#39;t really for long-form media anyway.</p>
<p>Oh yeah, one more thing. I did in fact change to &quot;data-startTime&quot; and &quot;data-stopTime&quot; to make the HTML legal HTML5.</p>
<p>Here&#39;s the HTML5 code itself, letting one see that the JavaScript has now been moved into a separate JS file.</p>
<pre class="brush:html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;jAUs&lt;/title&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
  &lt;/head&gt;
  &lt;body&gt;

  &lt;script type=&quot;text/javascript&quot; src=&quot;jAUs.js&quot;&gt;&lt;/script&gt;

  &lt;p&gt;This is the entire recording of Shakespeare&#39;s Sonnet 130, read by Nathan Miller for
  &lt;a href=&quot;http://librivox.org/sonnet-130-by-william-shakespeare/&quot;&gt;LibriVox&lt;/a&gt;.&lt;/p&gt;
  &lt;audio controls&gt;
    &lt;source src=&quot;sonnet130_shakespeare_njm.mp3&quot; type=&quot;audio/mp3&quot; /&gt;
    &lt;source src=&quot;sonnet130_shakespeare_njm.ogg&quot; type=&quot;audio/ogg&quot; /&gt;
    Your browser does not support the audio element.
  &lt;/audio&gt;

  &lt;p&gt;&quot;My mistress&#39; eyes are nothing like the sun.&quot; - &lt;em&gt;start = 10; end = 13.&lt;/em&gt;&lt;/p&gt;
  &lt;audio class=&quot;jAUs&quot; controls data-startTime=&quot;10&quot; data-stopTime=&quot;13&quot;&gt;
    &lt;source src=&quot;sonnet130_shakespeare_njm.mp3&quot; type=&quot;audio/mp3&quot; /&gt;
    &lt;source src=&quot;sonnet130_shakespeare_njm.ogg&quot; type=&quot;audio/ogg&quot; /&gt;
    Your browser does not support the audio element.
  &lt;/audio&gt;

  &lt;p&gt;&quot;End of poem.&quot;- &lt;em&gt;start = 57, no end specified.&lt;/em&gt;&lt;/p&gt;
  &lt;audio class=&quot;jAUs&quot; controls data-startTime=&quot;57&quot;&gt;
    &lt;source src=&quot;sonnet130_shakespeare_njm.mp3&quot; type=&quot;audio/mp3&quot; /&gt;
    &lt;source src=&quot;sonnet130_shakespeare_njm.ogg&quot; type=&quot;audio/ogg&quot; /&gt;
    Your browser does not support the audio element.
  &lt;/audio&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Oh, and here&#39;s the JavaScript file:</p>
<pre class="brush:javascript">/*
***** Note: This software is still in ALPHA. Please refrain from using
the code without first contacting Nitin Arora at nitaro74@gmail.com.
Thanks!
***** 

jAUs: JavaScript &lt;audio&gt; Shark.

Copyright (c) 2012 Nitin Arora. 

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
&quot;Software&quot;), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software. 

THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 

jAUs is licensed under the MIT license:

http://www.opensource.org/licenses/mit-license.php.

*/

function jAUs(){

  audioTagArray = document.getElementsByClassName(&quot;jAUs&quot;);

  for (i=0;i&lt;=audioTagArray.length-1;i++){
    var thisAudioTag = audioTagArray[i];
    jAUs_2(audioTagArray,thisAudioTag);
  }
}

function jAUs_2(audioTagArray,thisAudioTag){
  //if this is placed directly into jAUs() - i.e. not a separate function,
  //then this whole thing doesn&#39;t seem to work.

  if (navigator.appName == &quot;Microsoft Internet Explorer&quot;){
    thisAudioTag.onloadeddata = function(){
      var thisAudioTag_startTime = thisAudioTag.getAttribute(&quot;data-startTime&quot;);
      thisAudioTag.currentTime = thisAudioTag_startTime;
    }
  }

  else {
    var thisAudioTag_startTime = thisAudioTag.getAttribute(&quot;data-startTime&quot;);
    thisAudioTag.currentTime = thisAudioTag_startTime;
  }

  var thisAudioTag_stopTime = thisAudioTag.getAttribute(&quot;data-stopTime&quot;);
  var stopString = &quot;jAUs_3(this.currentTime,&quot; + thisAudioTag_stopTime + &quot;,&quot; + i + &quot;);&quot;;
  //returns &quot;jAUs_3(this.currentTime, 13, i);&quot; where &quot;i&quot; is an int.

  thisAudioTag.setAttribute(&quot;ontimeupdate&quot;,stopString);
}

function jAUs_3(this_currentTime,thisAudioTag_stopTime,i){

  if (thisAudioTag_stopTime){
    //if there&#39;s a data-stopTime attribute then ...
    if (this_currentTime &gt; thisAudioTag_stopTime){
      //... reset audio to data-startTime when data-stopTime is reached.
      audioTagArray[i].currentTime = audioTagArray[i].getAttribute(&quot;data-startTime&quot;);
      audioTagArray[i].pause();
    }
  }
  else if (audioTagArray[i].ended == true){
    //if there&#39;s no data-stopTime, move back to data-startTime when playback has ended.
    audioTagArray[i].currentTime = audioTagArray[i].getAttribute(&quot;data-startTime&quot;);
    audioTagArray[i].pause();
  }
}

window.onload = function(){
  jAUs();
}
</pre>
<p><strong>Update, January 12, 2012:</strong> Turns out &quot;jAUs&quot; is the name for some robotic SDK and I&#39;m not too crazy about that name anyway. So, I&#39;m leaning toward &quot;m(AUj)ulate&quot; (pronounced like &#39;modulate&#39;) which would stand for something like &quot;My Untimely Little Audio Tag Extender&quot;. The word &quot;untimely&quot; being, of course, a play on the fact that time is what this is all about. The parenthetical bit refers to &quot;audio&quot; (AU) and JavaScript (j).</p>
<p>And, yes, I care much more about the name/acronym than the script itself.</p>
<p><img alt=":P" src="http://blog.humaneguitarist.org/wp-content/plugins/fckeditor-for-wordpress-plugin/ckeditor/plugins/smiley/images/tounge_smile.gif" title=":P" /></p>
<p><strong>Update, January 15, 2012:</strong> OK, this is interesting. If, for the source of the audio file, I actually use the audio files on the Archive.org site for the LibriVox recordings like so &#8230;</p>
<pre class="brush:html">  &lt;audio class=&quot;jAUs&quot; controls data-startTime=&quot;10&quot; data-stopTime=&quot;13&quot;&gt;
    &lt;source src=&quot;http://www.archive.org/download/sonnet_130_librivox/sonnet130_shakespeare_njm_64kb.mp3&quot; type=&quot;audio/mp3&quot; /&gt;
    &lt;source src=&quot;http://www.archive.org/download/sonnet_130_librivox/sonnet130_shakespeare_njm.ogg&quot; type=&quot;audio/ogg&quot; /&gt;
    Your browser does not support the audio element.
  &lt;/audio&gt;
</pre>
<p>&#8230; then this seems to be working OK in all the browsers. Chrome seems, per casual observation, the slowest in terms of getting the scrubber moved to the appropriate points, but I guess this is progress.</p>
<p>Related to all this stuff I&#39;ve been messing with, I found this: <a href="http://dev.opera.com/articles/view/consistent-event-firing-with-html5-video/">Consistent event firing with HTML5 video &#8211; Dev.Opera</a>. But here, too, they use an alert() to notify the user that metadata is loaded using &quot;onloadedmetadata&quot;, but in my tests it seems like the alert() function itself was what was fixing the inability of some browsers to set the current time as my script was instructing.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/11/jaus-3-d-no-glasses-required/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jAUs 2: just when you thought it was safe to go back to hating Internet Explorer</title>
		<link>http://blog.humaneguitarist.org/2012/01/10/jaus-2-just-when-you-thought-it-was-safe-to-go-back-to-hating-internet-explorer/</link>
		<comments>http://blog.humaneguitarist.org/2012/01/10/jaus-2-just-when-you-thought-it-was-safe-to-go-back-to-hating-internet-explorer/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 20:27:46 +0000</pubDate>
		<dc:creator>nitin</dc:creator>
				<category><![CDATA[digital audio]]></category>
		<category><![CDATA[audio tag]]></category>
		<category><![CDATA[jAUs]]></category>

		<guid isPermaLink="false">http://blog.humaneguitarist.org/?p=3897</guid>
		<description><![CDATA[Yesterday, I posted this about trying to add &#34;startTime&#34; and &#34;stopTime&#34; attributes to the HTML5 &#60;audio&#62; tag using each of the major desktop browsers&#39; native HTML5 audio player. If anyone read that post, it&#39;s clear I ran into some problems with Internet Explorer 9 when all the other HTML5 browsers seemed to be fine with [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I posted <a href="http://blog.humaneguitarist.org/2012/01/09/jaus-trying-to-add-a-starttime-attribute-to-the-audio-tag/">this</a> about trying to add &quot;startTime&quot; and &quot;stopTime&quot; attributes to the HTML5 &lt;audio&gt; tag using each of the major desktop browsers&#39; native HTML5 audio player.</p>
<p>If anyone read that post, it&#39;s clear I ran into some problems with Internet Explorer 9 when all the other HTML5 browsers seemed to be fine with my JavaScript.</p>
<p>Well, I updated that post today to reflect a possible solution. Possible in the sense that it works, but I don&#39;t know if it&#39;s the best &#8211; or even a good &#8211; solution to the IE problem.</p>
<p>It basically involved checking for IE as the user&#39;s browser and using the <a href="http://www.htmlgoodies.com/html5/tutorials/HTML5-Development-Class-Media-Events-3883356.htm">HTML5 media events</a> to find the event that would make IE wait until the right time before trying to access the current time of the audio element. I also referred to <a href="http://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx">this</a> page on Microsoft&#39;s site in terms of checking for IE.</p>
<p>You can read that update here: <a href="http://blog.humaneguitarist.org/2012/01/09/jaus-trying-to-add-a-starttime-attribute-to-the-audio-tag#update011012">http://blog.humaneguitarist.org/2012/01/09/jaus-trying-to-add-a-starttime-attribute-to-the-audio-tag#update011012</a>.</p>
<p>Hooray for anchor tags &#8211; and shark repellent.</p>
<p><iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/-bREcn8PFYk" width="420"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.humaneguitarist.org/2012/01/10/jaus-2-just-when-you-thought-it-was-safe-to-go-back-to-hating-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

