<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Developing Loopy, Part 2: Implementation</title>
	<atom:link href="http://atastypixel.com/blog/developing-loopy-part-2-implementation/feed/" rel="self" type="application/rss+xml" />
	<link>http://atastypixel.com/blog/developing-loopy-part-2-implementation/</link>
	<description></description>
	<lastBuildDate>Fri, 10 Feb 2012 00:47:12 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: kaustubh vibhute</title>
		<link>http://atastypixel.com/blog/developing-loopy-part-2-implementation/comment-page-1/#comment-1514</link>
		<dc:creator>kaustubh vibhute</dc:creator>
		<pubDate>Wed, 14 Apr 2010 19:18:18 +0000</pubDate>
		<guid isPermaLink="false">http://atastypixel.com/blog/2009/02/15/developing-loopy-part-2-implementation/#comment-1514</guid>
		<description>&lt;p&gt;Hi Michael,&lt;/p&gt;

&lt;p&gt;I am really stuck on this one and need some opinion.....
I am trying to design a step sequencer as the heart of a music app where beats can be played from a beat pad.
The default quantization I have is 1/64 for one bar and maximum of 27 sound files for each time slot of the bar (64).
Right now I am creating 1 AUGraph, 1 Audio Unit. I have 27 input buses for each of the time slots ( up to 64 ). But this approach does not work for me since 27*64 buses in all and this is probably creating a lot of noise while trying to play back the recorded sounds.
Can you suggest me a good design approach towards creating a sequencer in terms of how many AUGraphs, Audio Units and input buses to be used?&lt;/p&gt;

&lt;p&gt;by the way...really appreciate the knowledge you have shared on the dev forums and over here. Thanks!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi Michael,</p>

<p>I am really stuck on this one and need some opinion&#8230;..
I am trying to design a step sequencer as the heart of a music app where beats can be played from a beat pad.
The default quantization I have is 1/64 for one bar and maximum of 27 sound files for each time slot of the bar (64).
Right now I am creating 1 AUGraph, 1 Audio Unit. I have 27 input buses for each of the time slots ( up to 64 ). But this approach does not work for me since 27*64 buses in all and this is probably creating a lot of noise while trying to play back the recorded sounds.
Can you suggest me a good design approach towards creating a sequencer in terms of how many AUGraphs, Audio Units and input buses to be used?</p>

<p>by the way&#8230;really appreciate the knowledge you have shared on the dev forums and over here. Thanks!</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Bzit</title>
		<link>http://atastypixel.com/blog/developing-loopy-part-2-implementation/comment-page-1/#comment-1018</link>
		<dc:creator>Bzit</dc:creator>
		<pubDate>Thu, 02 Apr 2009 11:48:44 +0000</pubDate>
		<guid isPermaLink="false">http://atastypixel.com/blog/2009/02/15/developing-loopy-part-2-implementation/#comment-1018</guid>
		<description>&lt;p&gt;Hi Michael !&lt;/p&gt;

&lt;p&gt;Thanks for sharing your knowledge, that&apos;s not so frequent.&lt;/p&gt;

&lt;p&gt;As programmer and user of Loopy, I was wondering how you manage the memory part of the audio.&lt;/p&gt;

&lt;p&gt;Do you write the audio data directly to files, or is it retained in RAM partially or completely ?&lt;/p&gt;

&lt;p&gt;User side, the question becomes : Can we record almost infinite length loops within loopy ^^ ?&lt;/p&gt;

&lt;p&gt;Looking forward for the community features on Loopy !! By the way, will it be an update of Loopy or another app ?&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Raphaël&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi Michael !</p>

<p>Thanks for sharing your knowledge, that&apos;s not so frequent.</p>

<p>As programmer and user of Loopy, I was wondering how you manage the memory part of the audio.</p>

<p>Do you write the audio data directly to files, or is it retained in RAM partially or completely ?</p>

<p>User side, the question becomes : Can we record almost infinite length loops within loopy ^^ ?</p>

<p>Looking forward for the community features on Loopy !! By the way, will it be an update of Loopy or another app ?</p>

<p>Cheers</p>

<p>Raphaël</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Michael</title>
		<link>http://atastypixel.com/blog/developing-loopy-part-2-implementation/comment-page-1/#comment-930</link>
		<dc:creator>Michael</dc:creator>
		<pubDate>Fri, 06 Mar 2009 00:51:59 +0000</pubDate>
		<guid isPermaLink="false">http://atastypixel.com/blog/2009/02/15/developing-loopy-part-2-implementation/#comment-930</guid>
		<description>&lt;p&gt;He&apos;s pretty unbelievable - makes me want to learn to beatbox =)&lt;/p&gt;

&lt;p&gt;You make some good points - particularly with the clapping example. Echo removal is a fairly imprecise science, even when it&apos;s done well, and it can certainly interfere with incoming audio. Whether such interference is the exception or the rule when it comes to a musical looping application is something I&apos;m not sure of.&lt;/p&gt;

&lt;p&gt;The primary limitation of the whole thing is, as you mention, the hardware - having the mic right next to the speaker on the iPhone isn&apos;t particularly conducive to a live performance-based app, unless users bring their own external hardware and connect it up to the iPhone.&lt;/p&gt;

&lt;p&gt;What would be perfect is to somehow gain access to the echo cancellation that&apos;s in place for speakerphone mode, but given that it&apos;s probably just embedded right into the hardware&apos;s audio pipeline, that&apos;s extremely unlikely to occur =)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>He&apos;s pretty unbelievable &#8211; makes me want to learn to beatbox =)</p>

<p>You make some good points &#8211; particularly with the clapping example. Echo removal is a fairly imprecise science, even when it&apos;s done well, and it can certainly interfere with incoming audio. Whether such interference is the exception or the rule when it comes to a musical looping application is something I&apos;m not sure of.</p>

<p>The primary limitation of the whole thing is, as you mention, the hardware &#8211; having the mic right next to the speaker on the iPhone isn&apos;t particularly conducive to a live performance-based app, unless users bring their own external hardware and connect it up to the iPhone.</p>

<p>What would be perfect is to somehow gain access to the echo cancellation that&apos;s in place for speakerphone mode, but given that it&apos;s probably just embedded right into the hardware&apos;s audio pipeline, that&apos;s extremely unlikely to occur =)</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Hamish Allan</title>
		<link>http://atastypixel.com/blog/developing-loopy-part-2-implementation/comment-page-1/#comment-929</link>
		<dc:creator>Hamish Allan</dc:creator>
		<pubDate>Fri, 06 Mar 2009 00:27:34 +0000</pubDate>
		<guid isPermaLink="false">http://atastypixel.com/blog/2009/02/15/developing-loopy-part-2-implementation/#comment-929</guid>
		<description>&lt;p&gt;Hi Michael,&lt;/p&gt;

&lt;p&gt;The more I consider it, the more I think that echo cancellation might be at odds with the very purpose of the app.&lt;/p&gt;

&lt;p&gt;For example, in &quot;Just For Now&quot; after Imogen has built up the main vocal loop, she claps a rhythm twice round the loop. In the second iteration, how is an adaptive filter to differentiate between the clapping coming from her hands and that coming from the monitor speakers? (Presumably, in the studio, they actually use a gated short-range mic to work around the problem.)&lt;/p&gt;

&lt;p&gt;If her timing and the audio reproduction are both perfect, the filter should theoretically remove the entire input signal. If her timing is not perfect, how can a filter be expected to converge? One could perhaps try to capitalise on the imperfect fidelity in the iPhone, but that doesn&apos;t really get you away from the bottom line: echo is rhythmic in nature.&lt;/p&gt;

&lt;p&gt;I think perhaps your approach is not just the easiest but actually the only way to go (maybe with a little adaptive gating?) Ho hum, I guess that rules out performance characteristics of the kind I&apos;d hoped for. (ThePETEBOX is great, isn&apos;t he? He&apos;s damn good without the loop pedal too!)&lt;/p&gt;

&lt;p&gt;Cheers,
Hamish&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi Michael,</p>

<p>The more I consider it, the more I think that echo cancellation might be at odds with the very purpose of the app.</p>

<p>For example, in &quot;Just For Now&quot; after Imogen has built up the main vocal loop, she claps a rhythm twice round the loop. In the second iteration, how is an adaptive filter to differentiate between the clapping coming from her hands and that coming from the monitor speakers? (Presumably, in the studio, they actually use a gated short-range mic to work around the problem.)</p>

<p>If her timing and the audio reproduction are both perfect, the filter should theoretically remove the entire input signal. If her timing is not perfect, how can a filter be expected to converge? One could perhaps try to capitalise on the imperfect fidelity in the iPhone, but that doesn&apos;t really get you away from the bottom line: echo is rhythmic in nature.</p>

<p>I think perhaps your approach is not just the easiest but actually the only way to go (maybe with a little adaptive gating?) Ho hum, I guess that rules out performance characteristics of the kind I&apos;d hoped for. (ThePETEBOX is great, isn&apos;t he? He&apos;s damn good without the loop pedal too!)</p>

<p>Cheers,
Hamish</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Michael</title>
		<link>http://atastypixel.com/blog/developing-loopy-part-2-implementation/comment-page-1/#comment-924</link>
		<dc:creator>Michael</dc:creator>
		<pubDate>Thu, 05 Mar 2009 07:27:33 +0000</pubDate>
		<guid isPermaLink="false">http://atastypixel.com/blog/2009/02/15/developing-loopy-part-2-implementation/#comment-924</guid>
		<description>&lt;p&gt;Hi Hamish!  Please excuse the delay in responding to your comment,
Thanks for the kind words! I&apos;m glad I could help.&lt;/p&gt;

&lt;p&gt;That&apos;s very thoughtful of you, with your disclaimer; that&apos;s fine, though.&lt;/p&gt;

&lt;p&gt;Those youtube videos were fantastic - that guy is brilliant!&lt;/p&gt;

&lt;p&gt;As far as the echo cancellation stuff goes, the main difficulty isn&apos;t so much the identification of the echo delay as much as the actual removal process, which is why my efforts failed; it&apos;s not just a subtraction of one signal from the other, it&apos;s actually a process that involves iterative refinement and more academic papers than I felt like reading =)
I recommend taking a peek at the Speex source for some inspiration (the comments also refer some papers on the subject) - I&apos;d love to hear how you go. If you succeed, maybe there&apos;s hope for the rest of us!&lt;/p&gt;

&lt;p&gt;It may be a large amount of work - it would be a very helpful piece of functionality though. Maybe it&apos;s something we could collaborate on somehow, since it would definitely benefit us both.&lt;/p&gt;

&lt;p&gt;Anyway, let me know how you go (if you feel like doing so).&lt;/p&gt;

&lt;p&gt;All the best!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi Hamish!  Please excuse the delay in responding to your comment,
Thanks for the kind words! I&apos;m glad I could help.</p>

<p>That&apos;s very thoughtful of you, with your disclaimer; that&apos;s fine, though.</p>

<p>Those youtube videos were fantastic &#8211; that guy is brilliant!</p>

<p>As far as the echo cancellation stuff goes, the main difficulty isn&apos;t so much the identification of the echo delay as much as the actual removal process, which is why my efforts failed; it&apos;s not just a subtraction of one signal from the other, it&apos;s actually a process that involves iterative refinement and more academic papers than I felt like reading =)
I recommend taking a peek at the Speex source for some inspiration (the comments also refer some papers on the subject) &#8211; I&apos;d love to hear how you go. If you succeed, maybe there&apos;s hope for the rest of us!</p>

<p>It may be a large amount of work &#8211; it would be a very helpful piece of functionality though. Maybe it&apos;s something we could collaborate on somehow, since it would definitely benefit us both.</p>

<p>Anyway, let me know how you go (if you feel like doing so).</p>

<p>All the best!</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Hamish Allan</title>
		<link>http://atastypixel.com/blog/developing-loopy-part-2-implementation/comment-page-1/#comment-921</link>
		<dc:creator>Hamish Allan</dc:creator>
		<pubDate>Tue, 03 Mar 2009 22:07:48 +0000</pubDate>
		<guid isPermaLink="false">http://atastypixel.com/blog/2009/02/15/developing-loopy-part-2-implementation/#comment-921</guid>
		<description>&lt;p&gt;Hi Michael,&lt;/p&gt;

&lt;p&gt;Many thanks for all your efforts in putting all of this information together. Your writing is clear and your presentation is marvelous.&lt;/p&gt;

&lt;p&gt;In the interests of full disclosure, I should start by saying that I came across your blog during a little preliminary research into writing a &quot;loop pedal&quot; app for the iPhone. So if you&apos;d rather not reply to my comment because I might be a potential competitor, I&apos;ll understand. That said, I envisaged the focus of my app as being rather different to yours -- the primary function of mine would be the equivalent of a single track in mix mode for Loopy:&lt;/p&gt;

&lt;p&gt;http://www.youtube.com/watch?v=LxbfBRNY4M8
http://www.youtube.com/watch?v=xANiW9yWvGE&lt;/p&gt;

&lt;p&gt;The interface I have in mind is completely different to yours, designed to facilitate jamming over a single loop, just as a traditional loop pedal does. Loopy is more powerful, but I want to make that common case more accessible (though I have considered multiple tracks).&lt;/p&gt;

&lt;p&gt;But because I want to focus on the &quot;jam&quot;, echo cancellation is quite important to me. You mention that you attempted a cross-correlation technique, but I&apos;d have expected the latency to be pretty much constant, with the overwhelming component of &quot;echo&quot; being direct from speaker to microphone rather than via the walls of the room or whatever. You hard-coded the hardware latency for syncing record and playback clocks; is it not possible to do the same for the outputbuffer-to-speaker-to-microphone-to-inputbuffer round-trip latency?&lt;/p&gt;

&lt;p&gt;I appreciate you spent some time on this, so there&apos;s probably something I&apos;m missing. Obviously there&apos;s still the disparity between the original sound and the speaker&apos;s tinny reproduction to deal with, but it just struck me as odd that you needed anything more than a static technique to do the lining up of the signals.&lt;/p&gt;

&lt;p&gt;I don&apos;t really expect an answer, though I&apos;d appreciate a reply even if just to say you don&apos;t want to talk to me  As I say, I just wanted to introduce myself and state my intentions, as I&apos;m bound to get involved in conversation with you in threads about RemoteIO and I don&apos;t want to be disingenuous. And thanks again for all the information you&apos;ve made available.&lt;/p&gt;

&lt;p&gt;Best wishes,
Hamish&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi Michael,</p>

<p>Many thanks for all your efforts in putting all of this information together. Your writing is clear and your presentation is marvelous.</p>

<p>In the interests of full disclosure, I should start by saying that I came across your blog during a little preliminary research into writing a &quot;loop pedal&quot; app for the iPhone. So if you&apos;d rather not reply to my comment because I might be a potential competitor, I&apos;ll understand. That said, I envisaged the focus of my app as being rather different to yours &#8212; the primary function of mine would be the equivalent of a single track in mix mode for Loopy:</p>

<p><a href="http://www.youtube.com/watch?v=LxbfBRNY4M8" rel="nofollow">http://www.youtube.com/watch?v=LxbfBRNY4M8</a>
<span style="text-align:center; display: block;"><a href="http://atastypixel.com/blog/developing-loopy-part-2-implementation/"><img src="http://img.youtube.com/vi/xANiW9yWvGEp/2.jpg" alt="" /></a></span>

</p><p>The interface I have in mind is completely different to yours, designed to facilitate jamming over a single loop, just as a traditional loop pedal does. Loopy is more powerful, but I want to make that common case more accessible (though I have considered multiple tracks).</p>

<p>But because I want to focus on the &quot;jam&quot;, echo cancellation is quite important to me. You mention that you attempted a cross-correlation technique, but I&apos;d have expected the latency to be pretty much constant, with the overwhelming component of &quot;echo&quot; being direct from speaker to microphone rather than via the walls of the room or whatever. You hard-coded the hardware latency for syncing record and playback clocks; is it not possible to do the same for the outputbuffer-to-speaker-to-microphone-to-inputbuffer round-trip latency?</p>

<p>I appreciate you spent some time on this, so there&apos;s probably something I&apos;m missing. Obviously there&apos;s still the disparity between the original sound and the speaker&apos;s tinny reproduction to deal with, but it just struck me as odd that you needed anything more than a static technique to do the lining up of the signals.</p>

<p>I don&apos;t really expect an answer, though I&apos;d appreciate a reply even if just to say you don&apos;t want to talk to me  As I say, I just wanted to introduce myself and state my intentions, as I&apos;m bound to get involved in conversation with you in threads about RemoteIO and I don&apos;t want to be disingenuous. And thanks again for all the information you&apos;ve made available.</p>

<p>Best wishes,
Hamish</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ray Valdes</title>
		<link>http://atastypixel.com/blog/developing-loopy-part-2-implementation/comment-page-1/#comment-898</link>
		<dc:creator>Ray Valdes</dc:creator>
		<pubDate>Fri, 20 Feb 2009 16:21:07 +0000</pubDate>
		<guid isPermaLink="false">http://atastypixel.com/blog/2009/02/15/developing-loopy-part-2-implementation/#comment-898</guid>
		<description>&lt;p&gt;Great post, especially the informative diagrams. Must have taken some time to create.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Great post, especially the informative diagrams. Must have taken some time to create.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Marcus Hobbs</title>
		<link>http://atastypixel.com/blog/developing-loopy-part-2-implementation/comment-page-1/#comment-879</link>
		<dc:creator>Marcus Hobbs</dc:creator>
		<pubDate>Tue, 17 Feb 2009 03:04:51 +0000</pubDate>
		<guid isPermaLink="false">http://atastypixel.com/blog/2009/02/15/developing-loopy-part-2-implementation/#comment-879</guid>
		<description>&lt;p&gt;Awesome post Michael.  Very enlightening and encouraging to read about your creative and technical process.  It was also fascinating to hear about the compromises along the way.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Awesome post Michael.  Very enlightening and encouraging to read about your creative and technical process.  It was also fascinating to hear about the compromises along the way.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Charley Lanusse</title>
		<link>http://atastypixel.com/blog/developing-loopy-part-2-implementation/comment-page-1/#comment-876</link>
		<dc:creator>Charley Lanusse</dc:creator>
		<pubDate>Mon, 16 Feb 2009 23:36:06 +0000</pubDate>
		<guid isPermaLink="false">http://atastypixel.com/blog/2009/02/15/developing-loopy-part-2-implementation/#comment-876</guid>
		<description>&lt;p&gt;Fantastic post, Michael!  It&#039;s rare to find someone so technically adept who can also communicate so elegantly.  This post furthers really furthers my understanding of iPhone audio units.  Thanks for sharing your struggles and epiphanies.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Fantastic post, Michael!  It&#8217;s rare to find someone so technically adept who can also communicate so elegantly.  This post furthers really furthers my understanding of iPhone audio units.  Thanks for sharing your struggles and epiphanies.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Feinberg</title>
		<link>http://atastypixel.com/blog/developing-loopy-part-2-implementation/comment-page-1/#comment-872</link>
		<dc:creator>Jonathan Feinberg</dc:creator>
		<pubDate>Sun, 15 Feb 2009 15:03:38 +0000</pubDate>
		<guid isPermaLink="false">http://atastypixel.com/blog/2009/02/15/developing-loopy-part-2-implementation/#comment-872</guid>
		<description>&lt;p&gt;Thanks so much for this extremely interesting and beautifully designed blog post. The development of my &quot;Wordle&quot; toy saw many analogous &quot;garden path&quot; designs, but I don&#039;t know if I could ever recapture and relate them in as organized and thorough a form as you&#039;ve achieved here. Kudos!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Thanks so much for this extremely interesting and beautifully designed blog post. The development of my &#8220;Wordle&#8221; toy saw many analogous &#8220;garden path&#8221; designs, but I don&#8217;t know if I could ever recapture and relate them in as organized and thorough a form as you&#8217;ve achieved here. Kudos!</p>]]></content:encoded>
	</item>
</channel>
</rss>

