<?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>The Worm Hole</title>
	<atom:link href="http://happyworm.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://happyworm.com/blog</link>
	<description>Breaking new ground on the web &#124; The Worm Hole</description>
	<lastBuildDate>Fri, 05 Apr 2013 16:59:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>The Hyperaudio Pad &#8211; Next Steps and Media Literacy</title>
		<link>http://happyworm.com/blog/2013/04/05/the-hyperaudio-pad-next-steps-and-media-literacy/</link>
		<comments>http://happyworm.com/blog/2013/04/05/the-hyperaudio-pad-next-steps-and-media-literacy/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 16:58:20 +0000</pubDate>
		<dc:creator>MarkB</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Hyper Audio]]></category>
		<category><![CDATA[jPlayer]]></category>
		<category><![CDATA[Popcorn.js]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Audio API]]></category>

		<guid isPermaLink="false">http://happyworm.com/blog/?p=1195</guid>
		<description><![CDATA[By Mark Boas Hyperaudio is a term coined by Henrik Moltke. After discovering we had similar interests we started working on the concept a while back, resulting in a few demos such as the Radiolab demo for WNYC. That was a couple of years ago now. Since then I have been working with my colleague [...]]]></description>
			<content:encoded><![CDATA[<p>By <a href="http://twitter.com/maboa">Mark Boas</a></p>
<p><a href="http://hyperaud.io">Hyperaudio</a> is a term coined by <a href="http://twitter.com/moltke">Henrik Moltke</a>. After discovering we had similar interests we started working on the concept a while back, resulting in a few demos such as the <a href="http://hyper-audio.org/r/">Radiolab demo</a> for WNYC. That was a couple of years ago now. Since then I have been working with my colleague <a href="http://twitter.com/thePag">Mark Panaghiston</a> on various Hyperaudio demos and thinking about how we can create an suite of tools IÂ imaginativelyÂ call the Hyperaudio Ecosystem, at the center of that ecosystem sits the Hyperaudio Pad.</p>
<p><a href="http://happyworm.com/blog/wp-content/uploads/2013/04/ha-eco.png"><img class="alignnone size-full wp-image-1208" title="ha-eco" src="http://happyworm.com/blog/wp-content/uploads/2013/04/ha-eco.png" alt="" width="680" height="500" /></a></p>
<h2>What is Hyperaudio?</h2>
<p>But hey, let&#8217;s back up a bit. What is this Hyperaudio of which I speak? Simply put, Hyperaudio aims to do for audio what hypertext did for text &#8211; that is to integrate audio fully into the web experience. <a href="http://blog.appsfuel.com/2012/08/30/what-is-hyperaudio/">I wrote more about that here.</a></p>
<p>The Hyperaudio Pad is a tool that enables people to build up or remix audio and video using the underlying timed-transcripts. At the moment we&#8217;re concentrating on transcribing the spoken word.</p>
<p>Over the last seven days or so me and the other Mark have been working fairly solidly on taking the Hyperaudio Pad to the next level. It&#8217;s great to work with Mark P for several reasons. Obviously as key author of jPlayer he knows pretty much all there is to know about web based media, but also although we are both developers we are in many ways diametrically opposed. Mark is keen on code quality and doing things properly and I just want to get things out there. Happily the compromise we arrive at when we work together is a usually a good one. Mark is coming around to minimal-viable solutions and I have to admit that doing things right can save time in the long-run.</p>
<p>In fact there is a world of difference between earlier versions of the Hyperaudio Pad and that I largely developed and the version we have now after a week of collaboration.</p>
<p>Putting our weird <a href="http://bizarrerecords.com/wordpress/wp-content/uploads/reneeRenat.jpg">RenÃ©e and Renato</a> relationship aside for a bit, let&#8217;s talk a little about what it is that the Hyperaudio Pad is actually meant to do.</p>
<h2>The Power of the Remix</h2>
<p>OK, so key aims here are really to encourage the remixing of media in a new and refreshingly easy way &#8211; in doing so promote media literacy. On the subject of remixing at its importance in counter-culture I&#8217;d encourage you to check out <a href="http://en.wikipedia.org/wiki/RiP!:_A_Remix_Manifesto">RIP! : A Remix Manifesto</a> and the excellent <a href="http://www.everythingisaremix.info/watch-the-series/">Everything is a Remix</a> series.</p>
<p>Actually Brett Gaylor of Remix Manifesto fame is doing similar work by leading the effort <a href="http://popcorn.webmadecontent.org/rd5">building sequencing</a> into <a href="https://popcorn.webmaker.org/">Popcorn Maker</a>. We&#8217;re approaching the same objective from completely different angles.</p>
<p>Although we use the Popcorn.js library at the heart of the Hyperaudio Pad, we use text to describe and represent media content. This may seem counter intuitive but actually transcripts can be a great way to navigate media content. Transcripts help break media out of it&#8217;s black box and we can scan and search through it relatively quickly. The Hyperaudio Pad borrows from the word-processor paradigm allowing people to copy blocks of transcript and associated media and further, allowing them to describe transitions, effects, adjust volumes using natural language that resemble editing directions in a script.</p>
<h2>Media Literacy</h2>
<p>As an example of some transitions and effects you can currently insert between clips:</p>
<p><strong>[fade through black over 2 seconds, apply effects nightvision, scanlines, tvglitch]</strong> currently works.</p>
<p>which is equivalent to:</p>
<p><strong>[fade black 2 apply nightvision scanlines tvglitch]</strong></p>
<p>but we want to encourage the user to be descriptive as these directions are both human and computer readable.</p>
<p>Other effects include : <strong>ascii, colorcube, emboss, invert, noise, ripple, scanlines, sepia, sketch, vignette</strong></p>
<p>This system will evolve of course, and we hope to allow stuff like:</p>
<p><strong>[change volume to 50% over 3 seconds, change brightness to 20% over 2 seconds, play track 'love me do' from 30 seconds to 35 seconds, change track volume from 0 to 80% over 2 seconds]</strong></p>
<p>(stuff like that)</p>
<p>Transcript snippets, combined with text described transitions and effects act as a kind of source code for the media.</p>
<h2>Weak References</h2>
<p>As cuts are nothing more than weak references to media files, start and end times and effects that are simply layered &#8212; in real-time &#8212; over the top, we can make additive remixes as easily as we can subtractive ones, that is to say, somebody could take a remix and enhance it by peeling back a specific snippet to reveal more, thereby adding to the piece.</p>
<p>In fact a key goal here is to allow remixing of remixes.</p>
<p>So a bit about more about the technology powering this. Effects are handled by <a href="https://twitter.com/bchirls">Brian Chirls</a>&#8216; seriously cool Seriously.js &#8211; a comprehensive video compositing library. The great thing about <a href="http://seriouslyjs.org/">Seriously.js</a> is that it is a modular system. We can add effects (and load their code dynamically) as we go. I also look forward to using some of our experience gained with the Web Audio API to apply realtime audio effects. The wider vision is to make a system that will take raw media, transcribe it and allow you to do all the things you could do with a professional video editing package.</p>
<p>We&#8217;ve got plenty more to do, certainly some bugs to iron out, but we&#8217;re steadily approaching beta. A lot has been restructured behind the scenes, giving us a more stable platform to build on and more quickly enhance. The question I posed and answered on Twitter. What do you call something between alpha and beta? Alpha.</p>
<h2>Going Forward</h2>
<p>We still plan to add the following features in the near future :</p>
<p>- alter brightness, contrast, saturation etc<br />
- control and fade volume<br />
- add audio track that can be played simultaneously or sequentially<br />
- add effects/transitions in paragraph etc<br />
- allow editing right down to the word, delete words<br />
- allow fine tuning of start and end points<br />
- allow the playback and sharing of fullscreen video remixes with an option to see the underlying &#8216;source code&#8217;.</p>
<p>If you want to play around yourself you can find the <a href="http://happyworm.com/clientarea/hyperaudio/hap/latest/">latest demo here</a>.</p>
<p><a href="https://github.com/maboa/hyperaudiopad">Sourcecode is on GitHub</a> (I should get around to adding an MIT license or something)</p>
<p>Or you can watch a <a href="http://happyworm.com/screencams/hyperaudiopad/2013-04-04/demo1-standard.m4v">screen recording</a> of where we were at as of yesterday. Apologies for the choppy quality, oh and the background music, it seemed a good idea at the time. </p>
]]></content:encoded>
			<wfw:commentRss>http://happyworm.com/blog/2013/04/05/the-hyperaudio-pad-next-steps-and-media-literacy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://happyworm.com/screencams/hyperaudiopad/2013-04-04/demo1-standard.m4v" length="36202945" type="video/mp4" />
		</item>
		<item>
		<title>Breaking Out &#8211; The Making Of</title>
		<link>http://happyworm.com/blog/2012/11/30/breaking-out-the-making-of/</link>
		<comments>http://happyworm.com/blog/2012/11/30/breaking-out-the-making-of/#comments</comments>
		<pubDate>Fri, 30 Nov 2012 13:53:59 +0000</pubDate>
		<dc:creator>Mark P</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jPlayer]]></category>
		<category><![CDATA[Web Audio API]]></category>

		<guid isPermaLink="false">http://happyworm.com/blog/?p=1163</guid>
		<description><![CDATA[By Mark Panaghiston. Back in the spring of 2012 we started working with the BBC on a project called Breaking Out, which was a short story that demonstrated the concept of Perceptive Media. &#8220;Perceptive Media, takes narrative back to something more aligned to a storyteller and an audience around a campfire using internet technologies and [...]]]></description>
			<content:encoded><![CDATA[<p>By <a href="https://twitter.com/thepag">Mark Panaghiston</a>.</p>
<p>Back in the spring of 2012 we started working with the <a href="http://www.bbc.co.uk/">BBC</a> on a project called <a href="http://futurebroadcasts.com/">Breaking Out</a>, which was a short story that demonstrated the concept of <a href="http://www.bbc.co.uk/blogs/researchanddevelopment/2012/07/what-is-perceptive-media.shtml">Perceptive Media</a>.</p>
<blockquote><p><em>&#8220;Perceptive Media, takes narrative back to something more aligned to a storyteller and an audience around a campfire using internet technologies and sensibility to create something closer to a personal theatre experience in your living room.&#8221;</em></p></blockquote>
<p>With this article we want to look at the technical aspects in greater detail than our previous <a href="http://happyworm.com/blog/2012/07/12/breaking-out-web-audio-and-perceptive-media/" title="Breaking Out – Web Audio and Perceptive Media">blog post</a> on the subject.</p>
<p><span id="more-1163"></span></p>
<h2>This Time It&#8217;s Personal</h2>
<p>Making the content unique for each viewer was no easy task. First we needed to get some information about the viewer and then integrate it into the story.</p>
<p>We had these sources of information available to us:</p>
<ul>
<li>geo-location <em>- with authorization</em></li>
<li>social networks <em>- if they were logged in</em></li>
<li>today&#8217;s date</li>
</ul>
<p>From the geo-location information, we were able to determine the local:</p>
<ul>
<li>city</li>
<li>attractions</li>
<li>restaurant</li>
<li>bar</li>
<li>weather</li>
</ul>
<p>The social network information checked to see if the user was logged into the following:</p>
<ul>
<li>facebook</li>
<li>twitter</li>
<li>gmail</li>
<li>digg</li>
</ul>
<p>We also gathered information for a recent:</p>
<ul>
<li>news report podcast</li>
<li>comedy movie title</li>
<li>horror movie title</li>
</ul>
<p>Where appropriate, the information was inserted into the storyline.</p>
<p>The storyline was written by Sarah Glenister and she explained that the process was difficult because usually a story ark depends on the content of the story. So if it is raining, the story may remark on the damp conditions or wet hair, but with Perceptive Media the story arks had to be rather benign to accommodate a variety of situations. This was in part due to the story remaining linear, rather than becoming a tree structure as in an adventure game.</p>
<h2>There&#8217;s not much Choice of Technology</h2>
<p>Since this project had a modest budget, the dynamic voice generation was limited to one character, the Lift. This allowed us to use the <a href="https://github.com/kripken/speak.js">speak.js</a> library, where the artificial voice worked well with the non-human Lift character. The static lines spoken by the Lift were generated and stored in audio files so that they matched with the dynamic parts.</p>
<p>The production required that the audio had affect applied to them so that, for example, they sounded like there were happening in a hallway or in a lift environment. Some sounds would require timing alignment relative to other sounds, such as music getting louder when a door opens. The timing of the whole story would also be adjustable to complicate matters, along with being able to control the volume of the various tracks through a control panel.</p>
<p>To manipulate the audio, we saw the choices:</p>
<ul>
<li><a href="http://www.w3.org/TR/webaudio/">Web Audio API</a></li>
<li><a href="https://wiki.mozilla.org/Audio_Data_API">Audio Data API</a></li>
<li><a href="https://github.com/jussi-kalliokoski/audiolib.js">audiolib.js</a></li>
</ul>
<p>The Audio Data API is a low level API that gives access to the raw audio data as it plays and as such it allows you to do pretty much anything you want, but does not give you any of the tools to do it with. You are also limited by how much your CPU can crunch in the time between sample blocks.</p>
<p>The audiolib.js by Jussi Kalliokoski appeared to be a contender since it enabled a cross-browser solution, Firefox and Chrome, but it fell foul to the size of the data processing requirement and that WAV files would be required as input. Initial investigations into the convolution effect indicated that it would take approximately 20 minutes of processing to apply, which is unreasonable. There were other issues, such as changing the gains would require reprocessing the whole track and changing the timings would require similar reprocessing of the faders.</p>
<p>The Web Audio API was the most straightforward solution. It had a large number of tools built into it, and the input could take mp3 data or be connected to an HTML5 Audio Element. The node based system allowed complicated audio networks to be implemented in a relatively simple manner. And finally, the API was real-time, in that the audio sent to a node had the effects applied to it on the fly.</p>
<p>We decided to go ahead with the Web Audio API implementation, but since this would only satisfy Chrome (at that time) we implemented a fallback solution that played the original audio through <a href="http://jplayer.org/">jPlayer</a>. This decision was backed up shortly afterwards when it was decided that the future <a href="http://www.w3.org/2012/05/09-audio-minutes.html">W3C standard for advanced audio will be based on the Web Audio API</a>.</p>
<h2>We want more Control</h2>
<p>To complicate matters the system would have a hidden Easter Egg that enabled control over the vast majority of the variables. The Easter Egg would enable the control of:</p>
<ul>
<li>timing</li>
<li>depth staging</li>
<li>track volume</li>
<li>faders</li>
<li>filters</li>
</ul>
<p>To open the Easter Egg, Breaking Out must have finished loading and then click under the last 2 of the copyright 2012 on the bottom right.</p>
<div id="attachment_1178" class="wp-caption aligncenter" style="width: 400px"><a href="http://happyworm.com/blog/wp-content/uploads/2012/11/easter-egg.png"><img src="http://happyworm.com/blog/wp-content/uploads/2012/11/easter-egg.png" alt="The Easter Egg" title="The Easter Egg placement." width="390" height="122" class="size-full wp-image-1178" /></a><p class="wp-caption-text">The Easter Egg placement.</p></div>
<p>You&#8217;ll then have access to the Control Panel.</p>
<div id="attachment_1111" class="wp-caption aligncenter" style="width: 510px"><a href="http://happyworm.com/blog/wp-content/uploads/2012/07/cpanel.png"><img src="http://happyworm.com/blog/wp-content/uploads/2012/07/cpanel.png" alt="" title="The Breaking Out Control Panel" width="500" height="900" class="size-full wp-image-1111" /></a><p class="wp-caption-text">The Breaking Out Control Panel</p></div>
<p>The control panel uses <a href="http://workshop.chromeexperiments.com/examples/gui/">dat.GUI</a> by <a href="http://workshop.chromeexperiments.com/">Chrome Experiments</a>.</p>
<h2>Let&#8217;s give the Audio some Style</h2>
<p>First we needed to develop a system to define the styles for each of the audio characteristics. With the following four style types we were able to define every situation required for the story:</p>
<ul>
<li>track / environment</li>
<li>faders</li>
<li>filters</li>
<li>convolution effects</li>
</ul>
<p>The track/environment styles were used to define the specific track styles to a given environment. Each track was not normalized with the others, so we needed to be able to control the gain of each track independently. We also needed to define the audio properties to apply, for example, when Harriet is speaking in the lift environment.</p>
<pre name="code" class="javascript">
myPM.setTrackEnv('harriet', 'lift', {
   effect:1,
   bufferGain: 2,
   effectGain: 4,
   bufferFilterGain: 0,
   effectFilterGain: 0,
   depth: 'foreground'
});
</pre>
<p>The other styles were defined in a similar simple manner to enable their use throughout the code while having a common point of control. For example, the filter style:</p>
<pre name="code" class="javascript">
myPM.setFilter('muffled', {
   type: 0, // Lowpass
   frequency: 200,
   Q: 2,
   gain: 0
});
</pre>
<h2>The Audio&#8217;s got Assets</h2>
<p>Breaking Out has around 200 individual audio assets that are put together on the client to complete the production. Each asset needed to define its audio file, its text, its relationship to the rest of the assets and so on.</p>
<p>An example asset:</p>
<pre name="code" class="javascript">
{
   track: 'harriet',
   env: 'flat',
   text: "Ok, I can do this...",
   url: media_root + 'harriet/#FMT#/h1.#FMT#'
}
</pre>
<p>The Asset class is responsible for setting up each audio asset ready to be played. This involves preparing the asset for use with either the Web audio API or the jPlayer fallback, loading in the audio data when prompted and populating the asset information, such as the duration. The asset can then be played when requested, bearing in mind that each asset expects to be played in the future. For example, an asset plays at time 120 seconds in the timeline, so if you tell it to play(0) it will play in 2 minutes, and telling it to play(120) will make it play now. Additionally, using the granular <code>noteGrainOn</code> Web Audio API command, the asset can start part way through.</p>
<p>The Asset class starts at line 737 in <a href="https://github.com/happyworm/PerceptiveMedia/blob/master/assets/js/perceptive.media/perceptive.media.js#L737">perceptive.media.js</a></p>
<h2>Arranging it all into a Timeline</h2>
<p>The majority of assets were collected together in timelines, where the code would position them relative to each other on the absolute timeline. Branches were used to add assets that occurred in parallel to other assets, where the branch asset timings were linked to the assets in the main timeline. For example, a piece of music playing between two points may start relative to one asset and stop relative to another asset.</p>
<p>The master timeline assets are defined in an array starting at line 143 in <a href="https://github.com/happyworm/PerceptiveMedia/blob/master/assets/js/perceptive.media/breaking.out.js#L143">breaking.out.js</a></p>
<p>Branches were associated with master timeline assets by giving the master timeline asset an ID. The branch then used this ID as a reference point for its timings.</p>
<p>The branch assets are defined in a (much smaller) array starting at line 1542 in <a href="https://github.com/happyworm/PerceptiveMedia/blob/master/assets/js/perceptive.media/breaking.out.js#L1542">breaking.out.js</a></p>
<h2>Relative Timings Please. Absolutely!</h2>
<p>The Web Audio API has many strengths and in our case, a weakness. For example, if we were making a game, then we can easily trigger a sound to play when you click a button to launch a rocket. In our case, we wanted to line up hundreds of audio pieces to play at the right time. This means that when you start the audio, everything must be in place and ready to queue up on the Web Audio API.</p>
<p>This explains the load bar at the start. All the assets must load in so that they are ready to be played and their duration is known, and in turn their relative relationships calculated into an absolute time. This absolute time is then used to queue the asset to play in the future.</p>
<p>The control panel complicated this part, due to 2 of its functions. The user may start playback from any point in the timeline. The user may change the time gap between each relative asset, which causes the absolute timings to be recalculated.</p>
<h2>Lost in the Audio Map</h2>
<p>The audio node map for each asset was not as complicated as you might think. </p>
<p>Every asset has two gain nodes connected to its audio source. One gain node is connected to the output and the other gain node is connected to the convolver. If the asset used a filter, this it was created inside the asset and then two more gain nodes used to pass the filtered audio source to the output and to the convolver.</p>
<p>The output path had two depth layers, the foreground and the background. Each asset was connected to one of these output paths, which allowed a depth gain to be applied to the audio.</p>
<p>The convolution effects were also created as assets, but were treated differently from the rest of the assets. These effect assets created 2 gain nodes internally to accommodate the foreground and background layers.</p>
<div id="attachment_1184" class="wp-caption aligncenter" style="width: 610px"><a href="http://happyworm.com/blog/wp-content/uploads/2012/11/asset-audio-map.png"><img src="http://happyworm.com/blog/wp-content/uploads/2012/11/asset-audio-map.png" alt="Asset Audio Map" title="Asset Audio Map" width="600" height="597" class="size-full wp-image-1184" /></a><p class="wp-caption-text">Asset Audio Map</p></div>
<p>A few points to note here.</p>
<ol>
<li>There were only two convolution assets used for the whole project, one each for the lift and lobby environments. The BBC provided the Impulse Responses required for the convolver node.</li>
<li>During development, we found that attempting to use more than 14 convolver nodes started to use all the CPU. The problem was found due to putting the convolver into the asset to begin with, rather than having one per environment and route the assets audio to them.</li>
<li>The output depth layer gain nodes have hundreds of assets connected to them.</li>
<li>The filters inside the assets are only created if required, and excessive use would require a different audio map solution to be implemented, where assets could share filters. As only 2 assets required filters, we implemented them inside the assets.</li>
</ol>
<h2>Conclusions</h2>
<p>The Web Audio API satisfied the goals of the project very well, allowing the entire production to be assembled in the client browser. This enabled control over the track timing, volume and environment acoustics by the client. From an editing point of view, this allowed the default values to be chosen easily by the editor and have them apply seamlessly to the entire production, similar to when working in the studio.</p>
<p>One of the most complicated parts of the the project was arranging the asset timelines into their absolute timings. We wanted the input system to be relative since that is a natural way to do things, &#8220;Play B after A&#8221;, rather than, &#8220;Play A at 15.2 seconds and B at 21.4 seconds.&#8221; However, once the numbers were crunched, the <code>noteOn</code> method would easy queue up the sounds in the future.</p>
<p>The main deficiency we found with the Web Audio API was that there were no events that we could use to know when, for example, a sound started playing. We believe this is in part due to it being known when that event would occur, since we did tell it to <code>noteOn</code> in 180 seconds time, but it would be nice to have an event occur when it started and maybe when its buffer emptied too. Since we wanted some artwork to display relative to the storyline, we had to use timeouts to generate these events. They did seem to work fine for the most part, but having hundreds of timeouts waiting to happen is generally not a good thing.</p>
<p>And finally, the geo-location information was somewhat limited. We had to make it specific to the UK simply because online services were either expensive or heavily biased towards sponsored companies. For example, ask for the local attractions and get back a bunch of fast food restaurants. But in practice though, you&#8217;d need to pay for a service such as this and this project did not have the budget.</p>
<p>As Harriet said, &#8220;OK, I can do this.&#8221; And we did!</p>
<p><a href="https://github.com/happyworm/PerceptiveMedia">Download</a> Perceptive Media at GitHub.</p>
]]></content:encoded>
			<wfw:commentRss>http://happyworm.com/blog/2012/11/30/breaking-out-the-making-of/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Breaking Out &#8211; Web Audio and Perceptive Media</title>
		<link>http://happyworm.com/blog/2012/07/12/breaking-out-web-audio-and-perceptive-media/</link>
		<comments>http://happyworm.com/blog/2012/07/12/breaking-out-web-audio-and-perceptive-media/#comments</comments>
		<pubDate>Thu, 12 Jul 2012 20:06:53 +0000</pubDate>
		<dc:creator>MarkB</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Hyper Audio]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jPlayer]]></category>
		<category><![CDATA[Web Audio API]]></category>
		<category><![CDATA[BBC]]></category>
		<category><![CDATA[Perceptive Media]]></category>
		<category><![CDATA[radio]]></category>

		<guid isPermaLink="false">http://happyworm.com/blog/?p=1087</guid>
		<description><![CDATA[By Mark Boas Sometimes when we take on projects we don&#8217;t really know what we&#8217;re letting ourselves in for. To fully know, we&#8217;d spec things out to the ninth degree and who wants to or has time for that? Well people like NASA do, but we don&#8217;t. When we were given the opportunity to work [...]]]></description>
			<content:encoded><![CDATA[<p>By <a href="https://twitter.com/maboa">Mark Boas</a></p>
<p>Sometimes when we take on projects we don&#8217;t really know what we&#8217;re letting ourselves in for. To fully know, we&#8217;d spec things out to the ninth degree and who wants to or has time for that? Well people like NASA do, but we don&#8217;t.</p>
<p>When we were given the opportunity to work on something called <a href="http://thenextweb.com/media/2012/02/08/the-bbc-is-experimenting-with-perceptive-media-and-it-could-transform-tv-forever/">Perceptive Media</a> all I saw was a colourful but  amorphous form ahead and although it was explained to me (as well it could be) I still didn&#8217;t have a real clue of what it would end up being and crucially what was involved in making it a reality.</p>
<p>But hey it&#8217;s the <a href="http://www.bbc.co.uk/">BBC</a> right? You don&#8217;t often get to work with the BBC &#8211; you know that BBC you spent so much time watching and listening to when you were growing up. The same BBC who make <a href="http://en.wikipedia.org/wiki/Doctor_Who">Doctor Who</a> ? &#8211; <em>That</em> BBC! </p>
<p>Time-lords aside (or not actually as the case may be), being a bit of an audio-geek I&#8217;ve always been fascinated by the BBC&#8217;s audio output especially their <a href="http://en.wikipedia.org/wiki/BBC_Radiophonic_Workshop">Radiophonic Workshop</a> especially <a href="http://enm.wikipedia.org/wiki/Delia_Derbyshire">Delia Derbyshire</a>â€™s <a href="http://en.wikipedia.org/wiki/File:Doctor_Who_theme_excerpt.ogg">work</a> and this was an audio gig coming from the <a href="http://en.wikipedia.org/wiki/File:Doctor_Who_theme_excerpt.ogg">R&#038;D department</a> of the same organisation. How could we turn it down?<br />
<div id="attachment_1119" class="wp-caption aligncenter" style="width: 689px"><a href=http://www.flickr.com/photos/aboutthebbc/page6/><img src="http://happyworm.com/blog/wp-content/uploads/2012/07/radiophonic.png" alt="Delia Derbyshire at the BBC&#039;s Radiophonic Workshop &copy; BBC" title="Delia Derbyshire at the BBC&#039;s Radiophonic Workshop &copy; BBC" width="679" height="491" class="size-full wp-image-1119" /></a><p class="wp-caption-text">Delia Derbyshire at the BBC's Radiophonic Workshop &copy; BBC</p></div></p>
<p>So I jumped at the chance without really knowing what lay in store, which incidentally is very unfair on my <a href="http://twitter.com/thePag/">colleague</a> who ended up doing the lion&#8217;s share of the work. </p>
<p>The brief went something like this : We want to create a web-audio based demo that will adjust its content to the listener, based on information we can ascertain about them. Oh and we want it to sound as natural as possible so that the listener may not suspect that the content is being tailored. I soon found out that this involved generating audio on-the-fly and applying <a href="http://en.wikipedia.org/wiki/Convolution_reverb">convolution reverb</a> and other effects so that audio sounded natural in various environments. What this all meant is that we needed to use an advanced audio API. Now <a href="http://happyworm.com/blog/2011/11/15/html5-audio-apis-how-low-can-we-go/">I&#8217;ve had fun investigating advanced audio APIs before</a>, they differ from the standard audio APIs by being designed to allow you not only to play audio files, but to generate and alter audio.</p>
<p>This is exciting because we are finally getting around to doing stuff with audio that we have been doing with text for years. It also crosses over with something I&#8217;m looking at called <a href="https://groups.google.com/forum/?fromgroups#!forum/hyperaudio">Hyperaudio</a>.</p>
<p></br></p>
<h2>Experimentation</h2>
<p>So with this cross-over in mind, I felt I could manage to find the time to experiment and create some proof of concept demos and this lead me to try out the following libraries:</p>
<p><strong><a href="https://github.com/kripken/speak.js">Speak.js</a></strong></p>
<p>The <a href="http://syntensity.com/static/espeak.html">Speak.js demo</a>  pretty much demonstrates what it can do. You put text in and speech comes out. The library itself is ported from <a href="http://espeak.sourceforge.net/">eSpeak</a> using something called <a href="https://github.com/kripken/emscripten/wiki">Emscripten</a> and actually allows you to generate audio pretty much in real-time by constructing a data URI in WAV format.</p>
<p><strong><a href="https://github.com/jussi-kalliokoski/audiolib.js">AudioLib.js</a></strong></p>
<p>We wanted it to work well on all browsers that support some advanced audio API. Firefox&#8217;s <a href="https://wiki.mozilla.org/Audio_Data_API">Audio Data API</a> adopts a more low-level approach but in theory at least, you should be able to do anything that Webkit&#8217;s <a href="http://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html">Web Audio API</a> does, but with raw JavaScript. AudioLib.js provides the libraries to do this and also abstracts the differences between the two APIs so that you can write one set of code for both.</p>
<p>Unfortunately time and budget restrictions meant that we couldn&#8217;t create the version we wanted to make &#8211; a version that would work similarly in all browsers that provided an advanced audio API. As it seems that the future <a href="http://www.w3.org/2012/05/09-audio-minutes.html">W3C standard for advanced audio will be based on the Web Audio API</a> we decided to concentrate on that.</p>
<p></br></p>
<h2>Personalisation</h2>
<p>The data we use to personalise the broadcast comes from a number of sources. The main differentiator is the listener&#8217;s location which we use via the <a href="http://dev.w3.org/geo/api/spec-source.html">geo-location API</a> to determine, local weather,  radio streams and landmarks which are then  subtly inserted into the audio stream. The only restriction is that you must be in the UK to really encounter the differences â€“ this is partly due to the fact that we use some BBC resources that are only available for the UK but also so that we can keep the data manageable for what, after all, is just a demo.</p>
<p>The second source of information about the listener came from a slightly more sinister place. For fun I&#8217;d been working with a good friend of mine <a href="http://twitter.com/cubiq/">Matteo Spinelli</a> on a project called <a href="http://cubiq.org/project-underpants-explained">Underpants</a> and while looking at the issue of browser traceability across websites we figured out how to determine which social networks a browser is logged into. Cross-over struck once more and we used this technique to personalise the part where our outdoor-challenged hero is urged to log out of her favourite social network and leave the apartment.</p>
<div id="attachment_1128" class="wp-caption aligncenter" style="width: 665px"><a href="http://futurebroadcasts.com"><img src="http://happyworm.com/blog/wp-content/uploads/2012/07/breaking-out-loading.png" alt="Breaking Out Loading Screen" title="Breaking Out Loading Screen" width="655" height="465" class="size-full wp-image-1128" /></a><p class="wp-caption-text">Breaking Out Loading Screen</p></div>
<h3><a href="http://futurebroadcasts.com">Try the demo!</a></h3>
<p></br></p>
<h2>Advanced Web Audio</h2>
<p>So what changes between the version of the broadcast that uses the Web Audio API and the fallback version that doesn&#8217;t? Well there are a number of factors, some of them quite subtle. Speak.js outputs a robot style voice which is fine for our use as the electronic voice of the lift. But we wanted to make sure it would fit in properly to the various environments in which it was set. To do this we created something called a convolution-reverb. In short, a this reverb allows us to apply the right sort of audio ambiance to a sound. So if a sound is coming from a lift we apply a lift type echo. We also apply the same &#8216;echo&#8217; to the streamed radio broadcast that is played at a certain point in the broadcast.</p>
<p>The fact that we are using an advanced audio API also enables us to add various other effects to other pieces of audio. However we soon found that we needed to be sensible with our audio design, since convolutions with the Web Audio API does take a up a fair amount of CPU. During a development error, a unique convolution was used for each sound, this was found to start failing at around the 14th.</p>
<p>We also made use of audio filters, for example the radio podcast uses a high-pass filter applied to it which makes it sound â€˜tinnyâ€™, another example is when Harriet opens the her apartment door at the start we apply both filters and faders. The Web Audio API uses a node based approach which means that you can feed the results of one effect into the next so we can apply filters, faders and convolutions to any audio source. To achieve all of this we made heavy use of Web Audio APIâ€™s <a href="http://www.w3.org/2011/audio/drafts/1WD/WebAudio/#AudioParam-section">AudioParam</a> which allows nearly any attribute to be changed using handy linear transform effects &#8211; we used this to fade in and out, or cross-fade between filtered and unfiltered outputs.</p>
<p>So the Web Audio API version applies filters, faders and convolutions to the audio whereas the standard HTML5 audio versions do not. Thatâ€™s not to say that given enough time we couldnâ€™t have achieved the same effect using the Audio Data API included in Firefox. But since the new audio standard is slated to be largely based on the Web Audio API it was decided for the purposes of this demo to concentrate our energy in this area.</p>
<p>Once we&#8217;d got the core of the functionality working, we set to work on creating a control panel to allow us to tweak every single one of the volumes, filters, faders and convolutions.</p>
<p>We wanted to be able to demonstrate to editors of audio how we could tweak pace, reverb and sound-effects in real-time and although requiring a complete code re-factor we hope that the fact that the whole thing is pretty-much customisable makes this a powerful demo and will be useful to others as well as ourselves who are dabbling in this area.<br />
<div id="attachment_1111" class="wp-caption aligncenter" style="width: 510px"><a href="http://happyworm.com/blog/wp-content/uploads/2012/07/cpanel.png"><img src="http://happyworm.com/blog/wp-content/uploads/2012/07/cpanel.png" alt="The Breaking Out Control Panel" title="The Breaking Out Control Panel" width="500" height="900" class="size-full wp-image-1111" /></a><p class="wp-caption-text">The Breaking Out Control Panel</p></div></p>
<p>So this is a good time to mention that all the source-code is open source and that you can grab it from the following GitHub location <a href="https://github.com/happyworm/PerceptiveMedia">https://github.com/happyworm/PerceptiveMedia</a>.<br />
</br></p>
<h2>Conclusions</h2>
<p>I think this was definitely an interesting and worthwhile experiment. However as its aim was to be subtle, it purposely does not make immediately clear the potential of the technology. Technically what we are able to achieve turned out to be a kind of audio framework to allow the ability to create and tweak audio as it&#8217;s being played. This is useful to producers of audio to see how effects and timings can alter the experience and is especially useful for applications such as games where perhaps you want to give your sound-effects context. I also feel that these techniques could be used for applications such as dynamic story-telling. My daughter &#8212; all too often &#8212; asks me to tell her a story featuring robots, dinosaurs and goblins and all too often I fall back on the same old principles and formulas of children&#8217;s story-telling, <a href="http://en.wikipedia.org/wiki/Rule_of_three_(writing)">the rule of three</a> and so on. Post happy-ever-after she often wants me to add to the story, getting me to fill-in or clarify some of the details. It&#8217;s not a huge stretch to imagine that we could create dynamic storytelling applications for kids. A pinch of AI here, some personalisation there and a heavy dose of randomness might just be enough to keep them happy for a bit.</p>
<p><a href="http://futurebroadcasts.com">So there we have it</a>, one small step closer to the old Star Trek computer (Did Doctor Who&#8217;s have a voice interface? I forget). We&#8217;ve already seen the application of voice input with software such as <a href="http://en.wikipedia.org/wiki/Siri_%28software%29">Siri</a>. It shouldn&#8217;t be too much longer until audio interfaces start to become common-place, with so much current emphasis on the visual I think this could be quite refreshing.</p>
<p></br></p>
<h2>Epilogue</h2>
<p>Question. What&#8217;s harder to debug than an intermittent bug? Answer. An intermittent bug that only manifests itself when you deploy to the server. Crazy I know and totally unexpected to us and for this reason you may see issues when running on Firefox (but not Opera). Being supporters of both Mozilla and Firefox we were much dismayed by this bug and spent a significant amount of time trying to get to the bottom of it. Unfortunately due to its nature we were only able to put in a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=771296">loose bug-report</a> If anybody wants to help us solve this issue please feel free to take a look, even if it&#8217;s just to <a href="https://github.com/happyworm/PerceptiveMedia">download the application from GitHub</a> and verify that it works locally for you.</p>
<p>Thanks then to <a href="https://twitter.com/cubicgarden">Ian Forrester</a> and <a href="https://twitter.com/TonyChurnside">Tony Churnside</a> for the opportunity to work with them and their team at BBC R&#038;D, also of course <a href="http://www.bbc.co.uk/blogs/writersroom/authors/Sarah_Glenister">Sarah Glenister</a> for the excellent script and <a href="https://twitter.com/angieokchan">Angie Chan</a> for the great artwork. <a href="https://twitter.com/quinnirill">Jussi Kalliokoski</a> for helping us work with AudioLib.js But most of all I want to thank my colleague <a href="https://twitter.com/thePag">Mark Panaghiston</a> for working tirelessly behind the scenes not only on the significantly challenging audio aspects of the project but also go above and beyond in integrating the visual aspects and even sourcing and setting up the hosting.<br />
<br/></p>
<h2>Related Articles</h2>
<p><a href="http://www.bbc.co.uk/blogs/writersroom/posts/Writing-for-Perceptive-Media">Writing for Perceptive Media</a><br/><br />
<a href="http://www.angiechan.com/blog/1582/illustrations-for-bbc-rds-perceptive-media-demo-breaking-out/">Illustrations for BBC R&amp;Dâ€™s Perceptive Media Demo: Breaking Out</a><br/><br />
<a href="http://www.bbc.co.uk/blogs/researchanddevelopment/2012/07/what-is-perceptive-media.shtml">What is Perceptive Media?</a><br/><br />
<a href="http://www.gmanetwork.com/news/story/264154/scitech/socialmedia/bbc-demonstrates-revolutionary-perceptive-media">BBC demonstrates revolutionary &#8216;perceptive media&#8217;</a></br/><br />
<a href="http://cubicgarden.com/2012/07/07/perceptive-media-launch-at-social-media-cafe-manchester/">Perceptive Media Launch at Social Media Cafe Manchester</a><br/><br />
<a href="http://thenextweb.com/media/2012/07/03/the-bbc-unveils-its-first-perceptive-media-experiment-and-you-can-try-it-now/">The BBC unveils its first â€˜Perceptive Mediaâ€™ experiment â€“ and you can try it now</a></br><br />
<a href="http://socialmediatoday.com/markbigdot/597936/what-perceptive-media/">What is Perceptive Media?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://happyworm.com/blog/2012/07/12/breaking-out-web-audio-and-perceptive-media/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playing web audio offline on mobile Safari. Mission impossible?</title>
		<link>http://happyworm.com/blog/2012/05/29/playing-web-audio-offline-on-mobile-safari-mission-impossible/</link>
		<comments>http://happyworm.com/blog/2012/05/29/playing-web-audio-offline-on-mobile-safari-mission-impossible/#comments</comments>
		<pubDate>Tue, 29 May 2012 11:45:48 +0000</pubDate>
		<dc:creator>MarkB</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://happyworm.com/blog/2012/05/29/playing-web-audio-offline-on-mobile-safari-mission-impossible/</guid>
		<description><![CDATA[Twitter is a great medium. I often feel that as a remote worker it has changed the way I work. Today thanks to some helpful fellow Tweeters I was able to determine whether it was possible to cache audio in mobile Safari in double quick time. Here&#8217;s the write up. Wondering if it&#8217;s even possible [...]]]></description>
			<content:encoded><![CDATA[<p><script src="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission.js?border=false&amp;header=false&amp;more=false"></script>
<div style="display: none;" class="sfy-html">
<div did="playing-web-audio-offline-on-mobile-safari-mission" class="s-story noborder">
<ol class="s-elements">
<li id="4fc4ae0fed8216de4a004526" data-type="text" data-source="storify" class="s-element s-element-text">
<div class="s-element-container">
<div class="s-element-content s-text linkify">Twitter is a great medium. I often feel that as a remote worker it has changed the way I work. Today thanks to some helpful fellow Tweeters I was able to determine whether it was possible to cache audio in mobile Safari in double quick time. Here&#8217;s the write up.</div>
</div>
</li>
<li id="4fc4ae0fed8216de4a004527" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">Wondering if it&#8217;s even possible to store an mp3 in localstorage in mobile safari.</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae0fed8216de4a004527" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae0fed8216de4a004527.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207382873093840896" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T08:08:24.000Z" class="timestamp">Tue, May 29 2012 04:08:24</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207382873093840896&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207382873093840896&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4af94d4b9ccd84a00671d" data-type="text" data-source="storify" class="s-element s-element-text">
<div class="s-element-container">
<div class="s-element-content s-text linkify"><a target="_blank" href="http://www.brucelawson.co.uk/">Bruce Lawson.</a> Web Evangelist, Opera.</div>
</div>
</li>
<li id="4fc4ae0fed8216de4a004528" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1028556851/BY_Patrick_normal.jpg" alt="brucel"/></div>
<div class="s-quote-text linkify">@maboa why wouldn&#8217;t it be? Space limits?</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae0fed8216de4a004528" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae0fed8216de4a004528.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/brucel" target="_blank" rel="brucel" class="s-author-name">bruce lawson</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/brucel/status/207383548078981120" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T08:11:05.000Z" class="timestamp">Tue, May 29 2012 04:11:05</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207383548078981120&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207383548078981120&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4b4260bd9db2f46007747" data-type="text" data-source="storify" class="s-element s-element-text">
<div class="s-element-container">
<div class="s-element-content s-text linkify"><a target="_blank" href="http://robertnyman.com/">Robert Nyman.</a> Technical Evangelist, Mozilla.</div>
</div>
</li>
<li id="4fc4ae0fed8216de4a004529" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1365729789/me_normal.jpg" alt="robertnyman"/></div>
<div class="s-quote-text linkify">@maboa Turn it onto a string, and then store?</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae0fed8216de4a004529" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae0fed8216de4a004529.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/robertnyman" target="_blank" rel="robertnyman" class="s-author-name">Robert Nyman</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/robertnyman/status/207383770490343424" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T08:11:58.000Z" class="timestamp">Tue, May 29 2012 04:11:58</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207383770490343424&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207383770490343424&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae0fed8216de4a00452a" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@brucel @robertnyman Well I&#8217;m pretty new to local storage but it appears there is a 5MB limit unless you use the local DB? Then 50MB?</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae0fed8216de4a00452a" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae0fed8216de4a00452a.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207384881104297985" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T08:16:23.000Z" class="timestamp">Tue, May 29 2012 04:16:23</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207384881104297985&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207384881104297985&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a00452b" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@robertnyman @brucel so to take advantage of 50MB I need to put it in a Web SQL format &#8211; I&#8217;m guessing a data URI would do.</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00452b" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00452b.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207385377953165312" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T08:18:21.000Z" class="timestamp">Tue, May 29 2012 04:18:21</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207385377953165312&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207385377953165312&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a00452c" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1365729789/me_normal.jpg" alt="robertnyman"/></div>
<div class="s-quote-text linkify">@maboa @brucel I think the key things are, like you say, size and then make into a Data URL. More info at http://html5doctor.com/introducing-web-sql-databases/ <img src='http://happyworm.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00452c" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00452c.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/robertnyman" target="_blank" rel="robertnyman" class="s-author-name">Robert Nyman</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/robertnyman/status/207385914236878848" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T08:20:29.000Z" class="timestamp">Tue, May 29 2012 04:20:29</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207385914236878848&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207385914236878848&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a00452d" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@robertnyman @brucel Shame the file api isn&#8217;t pronto http://caniuse.com/#feat=fileapi</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00452d" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00452d.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207386461803266053" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T08:22:40.000Z" class="timestamp">Tue, May 29 2012 04:22:40</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207386461803266053&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207386461803266053&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4b573ed8216de4a010716" data-type="text" data-source="storify" class="s-element s-element-text">
<div class="s-element-container">
<div class="s-element-content s-text linkify">So the first port of call the file api&nbsp;is out because it&#8217;s not supported by mobile Safari.</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a00452e" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1365729789/me_normal.jpg" alt="robertnyman"/></div>
<div class="s-quote-text linkify">@maboa @brucel I wrote http://hacks.mozilla.org/2012/02/saving-images-and-files-in-localstorage/ and http://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/, that might be interesting</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00452e" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00452e.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/robertnyman" target="_blank" rel="robertnyman" class="s-author-name">Robert Nyman</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/robertnyman/status/207386997642362881" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T08:24:47.000Z" class="timestamp">Tue, May 29 2012 04:24:47</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207386997642362881&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207386997642362881&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4af58502884da44004559" data-type="text" data-source="storify" class="s-element s-element-text">
<div class="s-element-container">
<div class="s-element-content s-text linkify"><a target="_blank" href="http://cubiq.org">Matteo Spinelli.</a> Freelance Developer.</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a00452f" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/689202669/n100000103747809_8802_normal.jpg" alt="cubiq"/></div>
<div class="s-quote-text linkify">@maboa couldn&#8217;t find a way to cache audio on iOS. did&#8217;t try with BlobBuilder/FileReader, though http://www.html5rocks.com/en/tutorials/file/filesystem/</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00452f" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00452f.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/cubiq" target="_blank" rel="cubiq" class="s-author-name">Matteo Spinelli</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/cubiq/status/207389497246236672" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T08:34:43.000Z" class="timestamp">Tue, May 29 2012 04:34:43</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207389497246236672&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207389497246236672&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004530" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@cubiq Thanks! My gut feeling is that it isn&#8217;t possible. Won&#8217;t stop me trying though <img src='http://happyworm.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004530" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004530.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207391086023426049" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T08:41:02.000Z" class="timestamp">Tue, May 29 2012 04:41:02</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207391086023426049&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207391086023426049&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004531" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/689202669/n100000103747809_8802_normal.jpg" alt="cubiq"/></div>
<div class="s-quote-text linkify">@maboa nope, just tried with blobbuilder+filereader, it works on chrome, still no go on iOS</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004531" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004531.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/cubiq" target="_blank" rel="cubiq" class="s-author-name">Matteo Spinelli</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/cubiq/status/207395983640891393" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:00:30.000Z" class="timestamp">Tue, May 29 2012 05:00:30</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207395983640891393&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207395983640891393&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4af58502884da44004560" data-type="text" data-source="storify" class="s-element s-element-text">
<div class="s-element-container">
<div class="s-element-content s-text linkify"><a target="_blank" href="http://webreflection.blogspot.it/">Andrea Giammarchi</a>. Software Engineer. NOKIA.</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004532" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/203142740/blogspot_profile_normal.gif" alt="WebReflection"/></div>
<div class="s-quote-text linkify">@maboa encoding/decoding takes a while plus more space as base64 &#8230; but it kinda works</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004532" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004532.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection" target="_blank" rel="WebReflection" class="s-author-name">Andrea Giammarchi</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection/status/207398338302193665" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:09:51.000Z" class="timestamp">Tue, May 29 2012 05:09:51</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207398338302193665&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207398338302193665&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004533" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@WebReflection Thanks. May be an acceptable price to pay. This is where I&#8217;m up to http://jsfiddle.net/Yz9vD/ /cc @cubiq @brucel @robertnyman</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004533" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004533.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207400590047842304" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:18:48.000Z" class="timestamp">Tue, May 29 2012 05:18:48</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207400590047842304&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207400590047842304&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004534" data-type="text" data-source="storify" class="s-element s-element-text">
<div class="s-element-container">
<div class="s-element-content s-text linkify">Note the subtle error in my markup. Alas this is not the problem.</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004535" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/203142740/blogspot_profile_normal.gif" alt="WebReflection"/></div>
<div class="s-quote-text linkify">@maboa that won&#8217;t work in iOS in any case. I have the same in http://fuckn.es and still that bloody error as soon as you play the audio</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004535" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004535.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection" target="_blank" rel="WebReflection" class="s-author-name">Andrea Giammarchi</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection/status/207401146850091009" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:21:01.000Z" class="timestamp">Tue, May 29 2012 05:21:01</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207401146850091009&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207401146850091009&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004536" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/689202669/n100000103747809_8802_normal.jpg" alt="cubiq"/></div>
<div class="s-quote-text linkify">@maboa @webreflection @brucel @robertnyman ?! the operation could not be completed</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004536" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004536.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/cubiq" target="_blank" rel="cubiq" class="s-author-name">Matteo Spinelli</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/cubiq/status/207401276542173184" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:21:32.000Z" class="timestamp">Tue, May 29 2012 05:21:32</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207401276542173184&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207401276542173184&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004537" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/203142740/blogspot_profile_normal.gif" alt="WebReflection"/></div>
<div class="s-quote-text linkify">@maboa @cubiq I filed that bug during iOS 5 beta for developers &#8230; they accepted it then still nothing is working as expected :-/ #meh</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004537" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004537.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection" target="_blank" rel="WebReflection" class="s-author-name">Andrea Giammarchi</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection/status/207403160187310081" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:29:01.000Z" class="timestamp">Tue, May 29 2012 05:29:01</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207403160187310081&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207403160187310081&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4b68bed8216de4a013508" data-type="text" data-source="storify" class="s-element s-element-text">
<div class="s-element-container">
<div class="s-element-content s-text linkify">Turns out mobile Safari doesn&#8217;t support audio as a data URI. A simpler example here :&nbsp;http://jsfiddle.net/Yz9vD/2/</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a00453a" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@cubiq @webreflection You&#8217;d think they were doing it on purpose! Images work BTW http://jsfiddle.net/Yz9vD/3/ and this is wrong http://caniuse.com/datauri</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00453a" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00453a.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207405361509044224" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:37:46.000Z" class="timestamp">Tue, May 29 2012 05:37:46</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207405361509044224&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207405361509044224&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a00453e" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/203142740/blogspot_profile_normal.gif" alt="WebReflection"/></div>
<div class="s-quote-text linkify">@maboa @cubiq img does work for sure &#8230; audio API wants explicit user interaction first on iOS and even at that point dataURI fails :-/</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00453e" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a00453e.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection" target="_blank" rel="WebReflection" class="s-author-name">Andrea Giammarchi</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection/status/207405769182814208" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:39:23.000Z" class="timestamp">Tue, May 29 2012 05:39:23</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207405769182814208&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207405769182814208&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004540" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/203142740/blogspot_profile_normal.gif" alt="WebReflection"/></div>
<div class="s-quote-text linkify">@maboa @cubiq said that, do not expect *ever* dataURI to be synchronous, it&#8217;s still async as a normal request so load() then play() /onload</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004540" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004540.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection" target="_blank" rel="WebReflection" class="s-author-name">Andrea Giammarchi</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection/status/207406526766399488" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:42:24.000Z" class="timestamp">Tue, May 29 2012 05:42:24</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207406526766399488&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207406526766399488&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004541" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@WebReflection @cubiq All I want to do is play audio in my web app while offline. If it is local it should load fast.</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004541" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004541.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207406922117283840" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:43:58.000Z" class="timestamp">Tue, May 29 2012 05:43:58</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207406922117283840&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207406922117283840&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004542" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@WebReflection @cubiq Hmm worth a try. Guessing though at that point there&#8217;d be no getting around the 5MB limit.</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004542" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004542.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207407697329537025" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:47:03.000Z" class="timestamp">Tue, May 29 2012 05:47:03</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207407697329537025&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207407697329537025&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004543" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/203142740/blogspot_profile_normal.gif" alt="WebReflection"/></div>
<div class="s-quote-text linkify">@maboa @cubiq manifest limit is 50Mb, not 5, 5 is only localStorage or sessionStorage ( not sure about the last one thought )</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004543" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004543.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection" target="_blank" rel="WebReflection" class="s-author-name">Andrea Giammarchi</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection/status/207407855240876032" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:47:40.000Z" class="timestamp">Tue, May 29 2012 05:47:40</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207407855240876032&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207407855240876032&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004542" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@WebReflection @cubiq Hmm worth a try. Guessing though at that point there&#8217;d be no getting around the 5MB limit.</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004542" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004542.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207407697329537025" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:47:03.000Z" class="timestamp">Tue, May 29 2012 05:47:03</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207407697329537025&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207407697329537025&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004546" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@WebReflection @cubiq Crazy. Gonna write this up. Thanks for all your help. Managed to isolate the issues super fast. + @robertnyman @brucel</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004546" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004546.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207406359086497792" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:41:44.000Z" class="timestamp">Tue, May 29 2012 05:41:44</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207406359086497792&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207406359086497792&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4ae10ed8216de4a004547" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@WebReflection @cubiq Cool! I may try in parallel just to get a feel for things.</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004547" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4ae10ed8216de4a004547.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207409549278330880" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T09:54:24.000Z" class="timestamp">Tue, May 29 2012 05:54:24</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207409549278330880&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207409549278330880&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4b4dd479cdc373b01e0be" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/689202669/n100000103747809_8802_normal.jpg" alt="cubiq"/></div>
<div class="s-quote-text linkify">@maboa call it .appcache and add &#8220;AddType text/cache-manifest .appcache&#8221; to .htaccess. if you can&#8217;t use .htacc set it with PHP</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4b4dd479cdc373b01e0be" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4b4dd479cdc373b01e0be.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/cubiq" target="_blank" rel="cubiq" class="s-author-name">Matteo Spinelli</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/cubiq/status/207428639455846400" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T11:10:16.000Z" class="timestamp">Tue, May 29 2012 07:10:16</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207428639455846400&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207428639455846400&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4b4dd479cdc373b01e0bf" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@cubiq Ah yes, thanks. http://happyworm.com/jPlayerLab/locals/v03/ Page caches but the audio doesn&#8217;t. I guess that&#8217;s it then. /cc @WebReflection</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4b4dd479cdc373b01e0bf" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4b4dd479cdc373b01e0bf.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207431359159996416" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T11:21:04.000Z" class="timestamp">Tue, May 29 2012 07:21:04</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207431359159996416&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207431359159996416&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4b4fc6ae5280407013c4a" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/203142740/blogspot_profile_normal.gif" alt="WebReflection"/></div>
<div class="s-quote-text linkify">@maboa @cubiq trying this with one OK at first attempt then failures all over after &#8230; http://www.3site.eu/ios_audio/</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4b4fc6ae5280407013c4a" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4b4fc6ae5280407013c4a.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection" target="_blank" rel="WebReflection" class="s-author-name">Andrea Giammarchi</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/WebReflection/status/207432694806757376" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T11:26:23.000Z" class="timestamp">Tue, May 29 2012 07:26:23</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207432694806757376&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207432694806757376&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4b4dd479cdc373b01e0c0" data-type="quote" data-source="twitter" class="s-element s-element-quote">
<div class="s-element-container">
<div class="s-quote s-element-content">
<div class="s-quote-content">
<div class="s-quote-avatar s-quote-avatar-twitter"><img src="http://a0.twimg.com/profile_images/1730528990/mark_styled2_normal.jpg" alt="maboa"/></div>
<div class="s-quote-text linkify">@WebReflection @cubiq (iOS 5.1.1 iPad) If I turn my wifi off and reload, the page reloads but it says &#8216;cannot play audio&#8217;.</div>
</div>
<div class="actions">
<div class="buttons"><a href="#" title="Like" class="like "><i></i></a><a href="#" title="Comment" class="comment"><i></i></a><a href="#" title="Share" class="share"><i></i></a></div>
<div class="s-share-dropdown">
<ul data-url="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4b4dd479cdc373b01e0c0" class="s-actions-share">
<li class="s-share-facebook"><a href="#" rel="facebook">Share on Facebook</a></li>
<li class="s-share-twitter"><a href="#" rel="twitter">Share on Twitter</a></li>
<li class="s-share-pinterest"><a href="#" rel="pinterest" data-media="http://storify.com/maboa/playing-web-audio-offline-on-mobile-safari-mission/elements/4fc4b4dd479cdc373b01e0c0.png">Share on Pinterest</a></li>
<li class="s-share-googleplus"><a href="#" rel="googleplus">Share on Google+</a></li>
<li class="s-share-linkedin"><a href="#" rel="linkedin">Share on Linkedin</a></li>
<li class="s-share-email"><a href="#" rel="email">Share by email</a></li>
</ul>
</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa" target="_blank" rel="maboa" class="s-author-name">Mark Boas</a></div>
<div class="s-posted"><a href="http://stats.storify.com/record/click?sid=4fc4ae0fed8216de4a004521&amp;redirect=http://twitter.com/maboa/status/207434133176193025" target="_blank" class="s-posted">
<div data-timestamp="2012-05-29T11:32:05.000Z" class="timestamp">Tue, May 29 2012 07:32:05</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=207434133176193025&amp;related=storify" title="Reply" class="twitter-newwindow twitter-reply">Reply</a><a href="http://twitter.com/intent/retweet?tweet_id=207434133176193025&amp;related=storify" title="Retweet" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
<div class="s-element-stats hide">
<div class="s-element-stats-likes hide"><strong>0</strong><br />
<span>likes</span></div>
<p><span class="s-element-stats-sep hide">&nbsp;&middot;&nbsp;</span>
<div class="s-element-stats-comments hide"><strong>0</strong><br />
<span>comments</span></div>
</div>
<div class="comments">
<div class="action-container">
<div class="action"><input type="text" placeholder="Say something..." class="element-comment-input"/>
<div class="element-comment-post"><i title="Post to Twitter" data-service="twitter" class="element-comment-twitter"></i><i title="Post to Facebook" data-service="facebook" class="element-comment-facebook"></i></div>
</div>
</div>
<div class="previous">
<ul></ul>
</div>
</div>
</div>
</li>
<li id="4fc4b6a929686bd25a004be1" data-type="text" data-source="storify" class="s-element s-element-text">
<div class="s-element-container">
<div class="s-element-content s-text linkify">So looks like mission impossible right now. If anybody knows a way of doing this I&#8217;d love to hear from you!</div>
</div>
</li>
</ol>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://happyworm.com/blog/2012/05/29/playing-web-audio-offline-on-mobile-safari-mission-impossible/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flash vs HTML5 Video and the Codec thing</title>
		<link>http://happyworm.com/blog/2012/02/27/flash-vs-html5-video-and-the-codec-thing/</link>
		<comments>http://happyworm.com/blog/2012/02/27/flash-vs-html5-video-and-the-codec-thing/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 19:53:05 +0000</pubDate>
		<dc:creator>MarkB</dc:creator>
				<category><![CDATA[codecs]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[H.264]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[vp8]]></category>
		<category><![CDATA[webm]]></category>

		<guid isPermaLink="false">http://happyworm.com/blog/2012/02/27/flash-vs-html5-video-and-the-codec-thing/</guid>
		<description><![CDATA[By Mark Boas As one half of the team that produces jPlayer &#8211; a JavaScript media library that uses both HTML5 and Flash, this affects me directly. There also seems to be a lot of interest in this subject at an organisation I&#8217;ve just started working with. I&#8217;m not sure if this heightened my senses [...]]]></description>
			<content:encoded><![CDATA[<p><script src="http://storify.com/maboa/flash-vs-html5-video-and-the-codec-thing.js?border=true&amp;header=false&amp;sharing=false&amp;more=false"></script>
<div style="display: none;" class="sfy-html">
<div id="flash-vs-html5-video-and-the-codec-thing" class="s-story noborder">
<ol class="s-elements">
<li id="4f4b39e4400b011c229b2348" class="s-element s-element-text">
<div class="s-element-content s-text">By <a href="https://twitter.com/#%21/maboa" target="_blank">Mark Boas</a></p>
<p>As one half of the team that produces <a href="http://jPlayer.org" target="_blank">jPlayer</a> &#8211; a JavaScript media library that uses both HTML5 and Flash, this affects me directly. There also seems to be a lot of interest in this subject at an organisation I&#8217;ve just started working with. I&#8217;m not sure if this heightened my senses to the subject, but over the last day or so I&#8217;ve noticed some interesting discussion on Twitter. So I thought it was worthwhile documenting for the next time it crops up.</p>
<p>The first discussion takes place between Mike Shaver (Facebook and ex-Mozilla) and Brendan Eich (CTO of Mozilla and inventor of JavaScript) &#8211; I include a portion of it below.</div>
</li>
<li id="4f47c9dbae79bf6271230676" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">Did Chrome ever actually drop H.264? I haven&#8217;t seen anything since the blog post 13 months (!) ago.</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/shaver" target="_blank" rel="shaver" class="s-author-name">Mike Shaver</a><a href="http://twitter.com/shaver" target="_blank"><img src="http://a3.twimg.com/profile_images/1168257928/shaver-headshot-profile_normal.jpg" alt="shaver" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/shaver/status/173033024693338112" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T13:14:22.000Z" class="timestamp">Fri, Feb 24 2012 08:14:22</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=173033024693338112&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@shaver" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="173033024693338112" target="_blank" username="shaver" title="retweet" event="twitter-retweet" text="Did Chrome ever actually drop H.264? I haven't seen anything since the blog post 13 months (!) ago." class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f4b34a5400b011c229a059d" class="s-element s-element-text">
<div class="s-element-content s-text"><a href="http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC" target="_blank">H.264 is a video compression format</a>, which although fairly recently open-sourced &#8211; H.264 is &#8216;patent encumbered&#8217; <a href="http://digitalmediaupdate.blogspot.com/2010/09/think-h264-is-now-royalty-free-think.html" target="_blank">in other words royalties for its use could be claimed at any time</a>. Currently latest versions of Chrome, Internet Explorer and Safari all<br />
support H.264 but Firefox and Opera do not but support an <a href="http://en.wikipedia.org/wiki/WebM" target="_blank">alternative format known as WebM</a> (as does Chrome). However <a href="http://googlesystem.blogspot.com/2011/01/google-chrome-to-drop-support-for-h264.html" target="_blank">around 13 months ago Google stated their intention to drop H.264 support from Chrome</a> &#8216;in the coming months&#8217;.</div>
</li>
<li id="4f47c9dcae79bf627123067c" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@shaver Not yet. If/when, NBD because content authors put Flash fallback inside &lt;video&gt;, and Chrome has a &#8220;special&#8221; Flash deal from Adobe&#8230;</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/BrendanEich" target="_blank" rel="BrendanEich" class="s-author-name">BrendanEich</a><a href="http://twitter.com/BrendanEich" target="_blank"><img src="http://a2.twimg.com/profile_images/59513850/me_normal.jpeg" alt="BrendanEich" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/BrendanEich/status/173033595064164352" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T13:16:38.000Z" class="timestamp">Fri, Feb 24 2012 08:16:38</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=173033595064164352&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@BrendanEich" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="173033595064164352" target="_blank" username="BrendanEich" title="retweet" event="twitter-retweet" text="@shaver Not yet. If/when, NBD because content authors put Flash fallback inside &lt;video&gt;, and Chrome has a &quot;special&quot; Flash deal from Adobe..." class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f4b355ab788ddf242930200" class="s-element s-element-text">
<div class="s-element-content s-text">A Flash fallback is used when we detect whether HTML5 or a particular format is supported and fall back to a Flash solution if not. At this point it&#8217;s worth mentioning that Mobile Safari does not support Flash. NBD in this case means no big deal (for Chrome). The special Flash deal probably alludes to <a href="http://techcrunch.com/2010/06/25/google-chrome-flash/" target="_blank">Chrome and Adobe&#8217;s deal to bundle Flash with Chrome</a> and <a href="http://www.computerworld.com/s/article/9224493/Adobe_to_Linux_users_Get_Chrome_or_forget_Flash" target="_blank">Adobe&#8217;s intention to drop support for Flash on Linux for browsers other than Chrome</a>. Note that Adobe plan to <a href="http://dcurt.is/flash-death" target="_blank">not support &#8216;new mobile device configurations&#8217; </a>going forward. </div>
</li>
<li id="4f47c9dcae79bf627123067e" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@BrendanEich yeah, and it looks like B2G will support H.264 as well, so to the extent that mobile is the future, open codecs probably aren&#8217;t</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/shaver" target="_blank" rel="shaver" class="s-author-name">Mike Shaver</a><a href="http://twitter.com/shaver" target="_blank"><img src="http://a3.twimg.com/profile_images/1168257928/shaver-headshot-profile_normal.jpg" alt="shaver" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/shaver/status/173048124070297601" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T14:14:22.000Z" class="timestamp">Fri, Feb 24 2012 09:14:22</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=173048124070297601&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@shaver" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="173048124070297601" target="_blank" username="shaver" title="retweet" event="twitter-retweet" text="@BrendanEich yeah, and it looks like B2G will support H.264 as well, so to the extent that mobile is the future, open codecs probably aren't" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f48044ea09695ab7535c1d1" class="s-element s-element-text">
<div class="s-element-content s-text">B2G refers to <a href="https://wiki.mozilla.org/B2G" target="_blank">Boot-2-Gecko</a> a new initiative by Mozilla to create a web-based open source mobile operating system.</div>
</li>
<li id="4f47c9dcae79bf627123067d" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@shaver We have to play in order to place or win, but we&#8217;re playing the longer game (Broadway.js is a first move) too.</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/BrendanEich" target="_blank" rel="BrendanEich" class="s-author-name">BrendanEich</a><a href="http://twitter.com/BrendanEich" target="_blank"><img src="http://a2.twimg.com/profile_images/59513850/me_normal.jpeg" alt="BrendanEich" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/BrendanEich/status/173049528142938112" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T14:19:57.000Z" class="timestamp">Fri, Feb 24 2012 09:19:57</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=173049528142938112&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@BrendanEich" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="173049528142938112" target="_blank" username="BrendanEich" title="retweet" event="twitter-retweet" text="@shaver We have to play in order to place or win, but we're playing the longer game (Broadway.js is a first move) too." class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f48fd4147662781411b1e09" class="s-element s-element-text">
<div class="s-element-content s-text">Note. Whereas there is more room to maneuver with desktop browsers, with mobile devices, speed and battery life are of prime concern. Since currently most, if not all mobile devices that play video, support H.264 decoding directly via hardware, it would be difficult to enter the market with a mobile OS that didn&#8217;t support H.264.</p>
<p><a href="https://github.com/mbebenita/Broadway" target="_blank">Broadway.js</a> is an open-source library that decodes H.264 in JavaScript by taking advantage of the newer faster JavaScript engines that are built into the latest browsers. This means that in theory a developer can add H.264 playback capability to any modern browser. See also <a href="http://jsmad.org/" target="_blank">JSMad</a> for MP3 playback and <a href="https://github.com/ofmlabs/alac.js/" target="_blank">ALAC.js</a> for lossless playback.</p>
<p> I encourage you to expand their tweets to see who else has chimed in. <a href="http://twitter.theinfo.org/173033024693338112" target="_blank">You can see the full discussion here</a>.</p>
<p></div>
</li>
<li id="4f4b35782b0407f0428cd09d" class="s-element s-element-text">
<div class="s-element-content s-text">
<h1>WebM vs H.264 Showdown</h1>
<p>The second discussion involves David Storey (former Opera Web Evangelist now working for Motorola which has recently been acquired by Google) and Faruk Ate&#351; (&#8216;Entreprenerd&#8217; and former web-standards specialist for Apple). Excerpts follow.</div>
</li>
<li id="4f48a237b788ddf2420d68b1" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">MS &#8220;Motorola is on a path to use standard essential patents to kill video on the Web&#8221; Even if true it would be H.264 not video. WebM anyone?</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/dstorey" target="_blank" rel="dstorey" class="s-author-name">David Storey</a><a href="http://twitter.com/dstorey" target="_blank"><img src="http://a0.twimg.com/profile_images/1594459027/Untitled_2_normal.png" alt="dstorey" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/dstorey/status/172833498518925312" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:01:31.000Z" class="timestamp">Thu, Feb 23 2012 19:01:31</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172833498518925312&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@dstorey" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172833498518925312" target="_blank" username="dstorey" title="retweet" event="twitter-retweet" text="MS &#8220;Motorola is on a path to use standard essential patents to kill video on the Web&#8221; Even if true it would be H.264 not video. WebM anyone?" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f489d4a813c091a220b8b55" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">&#8230;oh I forgot, MS and Apple don&#8217;t support the open format. My bad. Supporting WebM would solve their issues, but do they want to do that?</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/dstorey" target="_blank" rel="dstorey" class="s-author-name">David Storey</a><a href="http://twitter.com/dstorey" target="_blank"><img src="http://a0.twimg.com/profile_images/1594459027/Untitled_2_normal.png" alt="dstorey" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/dstorey/status/172833868594950144" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:03:00.000Z" class="timestamp">Thu, Feb 23 2012 19:03:00</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172833868594950144&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@dstorey" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172833868594950144" target="_blank" username="dstorey" title="retweet" event="twitter-retweet" text="&#8230;oh I forgot, MS and Apple don&#8217;t support the open format. My bad. Supporting WebM would solve their issues, but do they want to do that?" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f489ed13d27f1f1420be270" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@dstorey WebM is an idealist&#8217;s pipe dream, completely devoid of any shred of pragmatism.</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/KuraFire" target="_blank" rel="KuraFire" class="s-author-name">Faruk Ate&#351;</a><a href="http://twitter.com/KuraFire" target="_blank"><img src="http://a0.twimg.com/profile_images/1778939820/image1327444890_normal.png" alt="KuraFire" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/KuraFire/status/172834086975582208" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:03:52.000Z" class="timestamp">Thu, Feb 23 2012 19:03:52</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172834086975582208&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@KuraFire" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172834086975582208" target="_blank" username="KuraFire" title="retweet" event="twitter-retweet" text="@dstorey WebM is an idealist&#8217;s pipe dream, completely devoid of any shred of pragmatism." class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f489f673d27f1f1420bf213" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@KuraFire I&#8217;m not sure how H.264 is pragmatic for the web. Open source can&#8217;t use it. Browsers like Opera can&#8217;t afford to licence it.</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/dstorey" target="_blank" rel="dstorey" class="s-author-name">David Storey</a><a href="http://twitter.com/dstorey" target="_blank"><img src="http://a0.twimg.com/profile_images/1594459027/Untitled_2_normal.png" alt="dstorey" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/dstorey/status/172836639897432064" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:14:00.000Z" class="timestamp">Thu, Feb 23 2012 19:14:00</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172836639897432064&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@dstorey" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172836639897432064" target="_blank" username="dstorey" title="retweet" event="twitter-retweet" text="@KuraFire I'm not sure how H.264 is pragmatic for the web. Open source can't use it. Browsers like Opera can&#8217;t afford to licence it." class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f489eef2b0407f0420b4779" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@dstorey Not saying it&#8217;s pragmatic for the web per s&#233;, but at least it works well on the 350+ million hardware devices people have bought.</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/KuraFire" target="_blank" rel="KuraFire" class="s-author-name">Faruk Ate&#351;</a><a href="http://twitter.com/KuraFire" target="_blank"><img src="http://a0.twimg.com/profile_images/1778939820/image1327444890_normal.png" alt="KuraFire" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/KuraFire/status/172836913932288001" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:15:06.000Z" class="timestamp">Thu, Feb 23 2012 19:15:06</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172836913932288001&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@KuraFire" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172836913932288001" target="_blank" username="KuraFire" title="retweet" event="twitter-retweet" text="@dstorey Not saying it&#8217;s pragmatic for the web per s&#233;, but at least it works well on the 350+ million hardware devices people have bought." class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f489eef2b0407f0420b477a" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@dstorey Unlike WebM, which is a dreadful experience having to rely on far-slower software decoders, killing battery life.</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/KuraFire" target="_blank" rel="KuraFire" class="s-author-name">Faruk Ate&#351;</a><a href="http://twitter.com/KuraFire" target="_blank"><img src="http://a0.twimg.com/profile_images/1778939820/image1327444890_normal.png" alt="KuraFire" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/KuraFire/status/172837082132254720" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:15:46.000Z" class="timestamp">Thu, Feb 23 2012 19:15:46</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172837082132254720&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@KuraFire" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172837082132254720" target="_blank" username="KuraFire" title="retweet" event="twitter-retweet" text="@dstorey Unlike WebM, which is a dreadful experience having to rely on far-slower software decoders, killing battery life." class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f48a0b2813c091a220c318a" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@KuraFire that is/was a temporary issue. Hardware decoders are available for WebM <a href=' http://en.wikipedia.org/wiki/WebM#Hardware' target='_blank' rel='external'> en.wikipedia.org/wiki/WebM&#8230;</a></div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/dstorey" target="_blank" rel="dstorey" class="s-author-name">David Storey</a><a href="http://twitter.com/dstorey" target="_blank"><img src="http://a0.twimg.com/profile_images/1594459027/Untitled_2_normal.png" alt="dstorey" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/dstorey/status/172838293338210306" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:20:34.000Z" class="timestamp">Thu, Feb 23 2012 19:20:34</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172838293338210306&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@dstorey" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172838293338210306" target="_blank" username="dstorey" title="retweet" event="twitter-retweet" text="@KuraFire that is/was a temporary issue. Hardware decoders are available for WebM http://en.wikipedia.org/wiki/WebM#Hardware" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f489f0dcc510c82410cc2be" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@dstorey Yeah, &#8220;temporary&#8221;. Who&#8217;s going to insert hardware WebM decoders into those 350+ million devices? Dude, seriously not an argument.</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/KuraFire" target="_blank" rel="KuraFire" class="s-author-name">Faruk Ate&#351;</a><a href="http://twitter.com/KuraFire" target="_blank"><img src="http://a0.twimg.com/profile_images/1778939820/image1327444890_normal.png" alt="KuraFire" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/KuraFire/status/172838751423303680" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:22:24.000Z" class="timestamp">Thu, Feb 23 2012 19:22:24</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172838751423303680&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@KuraFire" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172838751423303680" target="_blank" username="KuraFire" title="retweet" event="twitter-retweet" text="@dstorey Yeah, &quot;temporary&quot;. Who&#8217;s going to insert hardware WebM decoders into those 350+ million devices? Dude, seriously not an argument." class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f489f0dcc510c82410cc2bf" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@dstorey That the HW decoders are now available for it means WebM is useful once _every popular consumer electronics device_ ships with one.</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/KuraFire" target="_blank" rel="KuraFire" class="s-author-name">Faruk Ate&#351;</a><a href="http://twitter.com/KuraFire" target="_blank"><img src="http://a0.twimg.com/profile_images/1778939820/image1327444890_normal.png" alt="KuraFire" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/KuraFire/status/172838941949558784" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:23:09.000Z" class="timestamp">Thu, Feb 23 2012 19:23:09</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172838941949558784&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@KuraFire" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172838941949558784" target="_blank" username="KuraFire" title="retweet" event="twitter-retweet" text="@dstorey That the HW decoders are now available for it means WebM is useful once _every popular consumer electronics device_ ships with one." class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f48a1de2b0407f0420bfe98" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@KuraFire how quick will you upgrade to the iPhone 5? Phone upgrade life cycles are short. Who says existing decoders can&#8217;t be reprogrammed?</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/dstorey" target="_blank" rel="dstorey" class="s-author-name">David Storey</a><a href="http://twitter.com/dstorey" target="_blank"><img src="http://a0.twimg.com/profile_images/1594459027/Untitled_2_normal.png" alt="dstorey" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/dstorey/status/172840331665084416" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:28:40.000Z" class="timestamp">Thu, Feb 23 2012 19:28:40</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172840331665084416&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@dstorey" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172840331665084416" target="_blank" username="dstorey" title="retweet" event="twitter-retweet" text="@KuraFire how quick will you upgrade to the iPhone 5? Phone upgrade life cycles are short. Who says existing decoders can't be reprogrammed?" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f489f0dcc510c82410cc2c0" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@dstorey If the H.264 hardware decoders can be reprogrammed to do HW decoding for WebM, *that* would make this an interesting thing.</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/KuraFire" target="_blank" rel="KuraFire" class="s-author-name">Faruk Ate&#351;</a><a href="http://twitter.com/KuraFire" target="_blank"><img src="http://a0.twimg.com/profile_images/1778939820/image1327444890_normal.png" alt="KuraFire" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/KuraFire/status/172841061679501312" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:31:34.000Z" class="timestamp">Thu, Feb 23 2012 19:31:34</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172841061679501312&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@KuraFire" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172841061679501312" target="_blank" username="KuraFire" title="retweet" event="twitter-retweet" text="@dstorey If the H.264 hardware decoders can be reprogrammed to do HW decoding for WebM, *that* would make this an interesting thing." class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f48a670bd0b2980410ea123" class="s-element s-element-text">
<div class="s-element-content s-text">This is the interesting part for me. H.264 and VP8 (the video part of WebM) are both based on Inverse <a href="http://en.wikipedia.org/wiki/Discrete_cosine_transform" target="_blank">Discrete Cosine Transform</a> for decoding so in theory at least this could happen. </div>
</li>
<li id="4f489f673d27f1f1420bf21e" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@dstorey I don&#8217;t think you&#8217;re getting the business economics of this. Companies can&#8217;t just afford to support 2 video formats for everything.</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/KuraFire" target="_blank" rel="KuraFire" class="s-author-name">Faruk Ate&#351;</a><a href="http://twitter.com/KuraFire" target="_blank"><img src="http://a0.twimg.com/profile_images/1778939820/image1327444890_normal.png" alt="KuraFire" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/KuraFire/status/172842027044708355" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:35:25.000Z" class="timestamp">Thu, Feb 23 2012 19:35:25</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172842027044708355&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@KuraFire" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172842027044708355" target="_blank" username="KuraFire" title="retweet" event="twitter-retweet" text="@dstorey I don't think you're getting the business economics of this. Companies can&#8217;t just afford to support 2 video formats for everything." class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f489f673d27f1f1420bf21f" class="s-element s-element-quote">
<div class="s-element-share">
<div class="s-element-share-label"><i></i><span class="label">Share</span></div>
</div>
<div class="s-quote s-element-content">
<div class="s-quote-open">&#8220;</div>
<div class="s-quote-content">
<div class="s-quote-text">@dstorey Every additional codec is a duplication of their entire library and infrastructure. Why do you think that comes free?</div>
</div>
<div class="s-attribution">
<div class="s-source s-twitter"><a href="http://twitter.com" target="_blank">
<div class="s-source-icon"></div>
<p></a><!--.s-source-name= source.name--></div>
<div class="s-author"><a href="http://twitter.com/KuraFire" target="_blank" rel="KuraFire" class="s-author-name">Faruk Ate&#351;</a><a href="http://twitter.com/KuraFire" target="_blank"><img src="http://a0.twimg.com/profile_images/1778939820/image1327444890_normal.png" alt="KuraFire" class="s-author-avatar"/></a></div>
<div class="s-posted"><a href="http://twitter.com/KuraFire/status/172842162185175040" target="_blank" class="s-posted">
<div data-timestamp="2012-02-24T00:35:57.000Z" class="timestamp">Thu, Feb 23 2012 19:35:57</div>
<p></a></div>
<div class="s-element-actions"><a href="http://twitter.com/intent/tweet?in_reply_to=172842162185175040&amp;related=storify&amp;via=storify&amp;url=permalink" target="_blank" title="reply" event="twitter-reply" value="@KuraFire" class="twitter-newwindow twitter-reply">Reply</a><a tweet_id="172842162185175040" target="_blank" username="KuraFire" title="retweet" event="twitter-retweet" text="@dstorey Every additional codec is a duplication of their entire library and infrastructure. Why do you think that comes free?" class="twitter-newwindow twitter-retweet">Retweet</a></div>
<div class="s-clear"></div>
</div>
</div>
<div class="s-clear"></div>
</li>
<li id="4f4b364dac54271b229e9b9b" class="s-element s-element-text">
<div class="s-element-content s-text">It&#8217;s worth pointing out that services exist that will do this for you.<br />
Upload once and have multiple formats available automatically. <a href="http://m.vid.ly/user/" target="_blank">Vid.ly </a>comes to mind but I&#8217;m sure there are others. Although I do think it would be nice to have a package that did something similar which you could install on a server of your choice.</p>
<p>So there you have it, two interesting conversations from around the Twitterverse on web video. I guess time will tell if Google removes support for H.264 from their browsers as they have promised to and whether the VP8 part of WebM can be decoded using the same hardware already in place for decoding H.264. Above all is the future really JavaScript decoders? Could we do this in hardware somehow? Also it seems that H.264 and VP8&#8242;s similarities cut both ways, if they really are so similar we could see royalty issues cropping up with VP8 too. The difference being that a large company like <a href="http://arstechnica.com/web/news/2011/07/mpeg-la-12-companies-own-patents-essential-to-googles-vp8-codec.ars" target="_blank">Google could intervene to prevent this becoming an issue</a>.</p>
<p><a href="https://twitter.com/#%21/maboa" style="" target="_blank">You can view the full discussion here.</a><br style="font-style: italic;"><br style="font-style: italic;"><span style="font-style: italic;">Follow me on Twitter at </span><a style="font-style: italic;" href="https://twitter.com/#%21/maboa" target="_blank">@maboa</a><span style="font-style: italic;">.</span></div>
</li>
</ol>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://happyworm.com/blog/2012/02/27/flash-vs-html5-video-and-the-codec-thing/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
