<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>AudioResearchBlog</title>
	
	<link>http://audiores.uint8.com.ar/blog</link>
	<description>Covering all audio related stuff with special focus on programming and digital signal processing</description>
	<lastBuildDate>Wed, 29 Sep 2010 02:07:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AudioResearch" /><feedburner:info uri="audioresearch" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>AudioResearch</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>High abstraction level audio plugins specification (and code generation)</title>
		<link>http://feedproxy.google.com/~r/AudioResearch/~3/rPJN7DMJ-24/</link>
		<comments>http://audiores.uint8.com.ar/blog/2010/05/17/high-abstraction-level-audio-plugins-specification-and-code-generation/#comments</comments>
		<pubDate>Mon, 17 May 2010 03:08:00 +0000</pubDate>
		<dc:creator>hordia</dc:creator>
				<category><![CDATA[ideas]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[CLAM]]></category>
		<category><![CDATA[ClubAudioFiuba]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[signal processing]]></category>
		<category><![CDATA[specifications]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://audiores.uint8.com.ar/blog/2010/05/17/high-abstraction-level-audio-plugins-specification-and-code-generation/</guid>
		<description><![CDATA[If you ever wrote at least 2 audio plugins in your life, for sure you have noticed you had to write a lot of duplicated code. In other words, most of the times, writing a plugin there is very little &#8230; <a href="http://audiores.uint8.com.ar/blog/2010/05/17/high-abstraction-level-audio-plugins-specification-and-code-generation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<a class="wpptopdf" rel="noindex,nofollow" href="http://audiores.uint8.com.ar/blog/2010/05/17/high-abstraction-level-audio-plugins-specification-and-code-generation/?format=pdf" title="Download PDF"><img src="http://audiores.uint8.com.ar/blog/wp-content/plugins/wp-post-to-pdf/asset/images/pdf.png" alt="Download PDF"/></a><p>If you ever wrote at least <b>2</b> audio plugins in your life, for sure you have noticed you had to write a lot of duplicated code. In other words, most of the times, writing a plugin there is very little entropy from your code.</p>
<p>My first approach to this problem was some years ago when i did a simple code generator of the base code of a clam plugin (see these <b>clam-devel</b> threads for more info &#8216;<a href="http://www.mail-archive.com/clam-devel@llistes.projectes.lafarga.org/msg01345.html">Commit #11195: templated plugins generator</a>&#8216; and &#8216;<a href="http://www.mail-archive.com/clam-devel@llistes.projectes.lafarga.org/msg02257.html">Frontend for automatic generation of plugin code</a>&#8216;)</p>
<p>Now i&#8217;m with a simple but i think powerful project (derived from the needs i noticed at <a href="http://groups.google.com/group/club_de_audio_fiuba">club de audio de la fiuba</a>) to have an application to generate code of different standards using XML based specifications. Then, as before, you nearly only need to write the signal processing code of the plugin (and can forget about the mechanical work).</p>
<p>The idea is to get VST, LADSPA, lv2, CLAM, Audio Units and possibly others standards base code ready to compile for different operating systems and using different build systems. Indeed, once finished, will be easy to implement new modules for others plugins specifications since will consist only into implement an interface.</p>
<p>My proposed xml specification (comments and suggestions are welcome!), showed as a clam plugin definition example is here. Basically contains metadata, input and output ports and controls and other build definitions:<br />
<span style="font-size: 18px"></p>
<div class="codecolorer-container xml geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:600px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt; ?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span><br />
<span style="color: #009900;">&lt; !DOCTYPE AudioPlugin SYSTEM <span style="color: #ff0000;">&quot;AudioPluginDef.dtd&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;audioplugin</span> <span style="color: #000066;">Version</span>=<span style="color: #ff0000;">&quot;0.1&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;metadata<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>TestRtPlugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>This is a test realtime audio plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;authors<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Fulano, Sultano, Mengano<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/authors<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;copyright</span> <span style="color: #000066;">Year</span>=<span style="color: #ff0000;">&quot;2010&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Club de Audio FIUBA<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/copyright<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;license<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>GPL<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/license<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Plugins<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/metadata<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;inputs<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;port</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;L Input&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>AudioInPort<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;port</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;R Input&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>AudioInPort<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;control</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;Gain&quot;</span> <span style="color: #000066;">Min</span>=<span style="color: #ff0000;">&quot;0.&quot;</span> <span style="color: #000066;">Max</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">DefaultValue</span>=<span style="color: #ff0000;">&quot;.5&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>InControlFloat<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/control<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/inputs<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;outputs<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;port</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;L Output&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>AudioOutPort<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;port</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;R Output&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>AudioOutPort<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/outputs<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;outputplugin</span> <span style="color: #000066;">Standard</span>=<span style="color: #ff0000;">&quot;CLAM&quot;</span> <span style="color: #000066;">BuildSystem</span>=<span style="color: #ff0000;">&quot;Scons&quot;</span> <span style="color: #000066;">OS</span>=<span style="color: #ff0000;">&quot;Linux&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;basetemplatename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Default<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/basetemplatename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;clam_defaultconfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> <span style="color: #808080; font-style: italic;">&lt;!-- &nbsp;CLAM plugin specific configuration --&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;baseclass<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Processing<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/baseclass<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;withconfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>True<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/withconfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/clam_defaultconfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/outputplugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/audioplugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<p></span></p>
<p>I also thought about an UID (Uniqued ID) field at metadata, there is not showed in the example since is not needed to clam plugins.</p>
<p>There is also a <a href="http://en.wikipedia.org/wiki/Document_Type_Definition">.dtd</a> file to check the correctness of the plugin spec.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AudioResearch?a=rPJN7DMJ-24:J1asXQA4ZeQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=rPJN7DMJ-24:J1asXQA4ZeQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=rPJN7DMJ-24:J1asXQA4ZeQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=rPJN7DMJ-24:J1asXQA4ZeQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=rPJN7DMJ-24:J1asXQA4ZeQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=rPJN7DMJ-24:J1asXQA4ZeQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=rPJN7DMJ-24:J1asXQA4ZeQ:sqa-yYqJjYk"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=rPJN7DMJ-24:J1asXQA4ZeQ:sqa-yYqJjYk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://audiores.uint8.com.ar/blog/2010/05/17/high-abstraction-level-audio-plugins-specification-and-code-generation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://audiores.uint8.com.ar/blog/2010/05/17/high-abstraction-level-audio-plugins-specification-and-code-generation/</feedburner:origLink></item>
		<item>
		<title>Some experience with CLAM inside an audio club at FIUBA, Argentina</title>
		<link>http://feedproxy.google.com/~r/AudioResearch/~3/1CrEu_iuqFo/</link>
		<comments>http://audiores.uint8.com.ar/blog/2010/03/11/some-experience-with-clam-inside-an-audio-club-at-fiuba-argentina/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 02:21:15 +0000</pubDate>
		<dc:creator>hordia</dc:creator>
				<category><![CDATA[CLAM]]></category>
		<category><![CDATA[ClubAudioFiuba]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[effects]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[matlab]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[noise]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[signal processing]]></category>

		<guid isPermaLink="false">http://audiores.uint8.com.ar/blog/2010/03/11/some-experience-with-clam-inside-an-audio-club-at-fiuba-argentina/</guid>
		<description><![CDATA[(Note: I wrote this as something to tell to the clam-devel mailing list about some of my source-code commits) About eight months ago, there was a foundation of something like an &#8220;audio club&#8221; in my university [1]. As soon i &#8230; <a href="http://audiores.uint8.com.ar/blog/2010/03/11/some-experience-with-clam-inside-an-audio-club-at-fiuba-argentina/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<a class="wpptopdf" rel="noindex,nofollow" href="http://audiores.uint8.com.ar/blog/2010/03/11/some-experience-with-clam-inside-an-audio-club-at-fiuba-argentina/?format=pdf" title="Download PDF"><img src="http://audiores.uint8.com.ar/blog/wp-content/plugins/wp-post-to-pdf/asset/images/pdf.png" alt="Download PDF"/></a><p>(Note: I wrote this as something to tell to the clam-devel mailing list about some of my source-code commits)</p>
<p>About eight months ago, there was a foundation of something like an &#8220;audio club&#8221; in my university [<a href="http://code.google.com/p/club-audio-fiuba">1</a>]. As soon i learned about that, i quickly got in touch with them and noticed that there was a major interest in analog issues (the only audio area with at least elective, courses in the university). So i told them about all the cool things that are available and ready to do with digital audio, mostly signal processing related. I talked in general, but of course i also talked about <a href="http://clam-project.org/">clam</a>, with all its prototyping, real-time and easy development of plugins features. Even many of them ended installing and using it, and some even developing with more or less help. One thing to notice is that most of them are students from first years and most (but not all) are students with a basic programming level (because they are from electronics) but strong dsp knowledge (behind this is an university with more emphasis in theory than practice)<br />
We started specifying plugins from a more abstract level (inputs/outputs/controls) and generating the source code base using<br />
<strong>CLAM&#8217;s Templated Plugins Code Generator </strong>[<a href="http://audiores.uint8.com.ar/blog/2009/08/17/showing-a-little-about-clam-as-a-prototyping-tool-at-the-audio-club-of-fiuba/">2</a>] and prototyping some simple applications. But one of the things we ended up doing was to take advantage of clam as platform to prototype medic related applications like filter <a href="http://en.wikipedia.org/wiki/Electrocardiography">ECG</a> signal from noise in realtime, and some like _vice-versa_, i mean applying some processing knowledge from that area to audio.</p>
<p>Some of that work (one hour per week average) it&#8217;s now in the <a href="http://groups.google.com/group/club_de_audio_fiuba">repo</a>, most remarkable i think are filters work, by above the adaptative notch one (which even was used as a demo of a <a href="http://comelec.googlegroups.com/web/Analisis2_SteepestDescent.pdf?hl=es&#038;gda=-kJWU08AAAAt5-J96t0XnyxHkmJ7hfv0lkXF42FhAhzvNCGsvr91nr7XnfnP6pqsbzqK09OP4zsx49I1D3wZsUnK-MhAJdbCnHMhSp_qzSgvndaTPyHVdA">talk of one of the members about the steepest descent algorithm and its application to filter ECG signals</a>)</p>
<p>Some development screenshots:<br />
<a href="http://clam-project.org/wiki/Image:FilterByCoefExample.jpg">http://clam-project.org/wiki/Image:FilterByCoefExample.jpg</a><br />
<a href="http://clam-project.org/wiki/Image:FilterExample-LP-HP.jpg">http://clam-project.org/wiki/Image:FilterExample-LP-HP.jpg</a><br />
<a href="http://clam-project.org/wiki/Image:ThreeBandFilterOutputWithWhiteNoiseAsInput.jpg">http://clam-project.org/wiki/Image:ThreeBandFilterOutputWithWhiteNoiseAsInput.jpg</a><br />
<a href="http://clam-project.org/wiki/Image:GaussianWhiteNoiseHistogram.jpg">http://clam-project.org/wiki/Image:GaussianWhiteNoiseHistogram.jpg</a><br />
<a href="http://clam-project.org/wiki/Image:UniformWhiteNoiseHistogram.jpg">http://clam-project.org/wiki/Image:UniformWhiteNoiseHistogram.jpg</a></p>
<p>[0] <a href="http://www.fi.uba.ar/">FIUBA</a>: Engineering Faculty of Buenos Aires University<br />
[1] Group: <a href="http://code.google.com/p/club-audio-fiuba">http://code.google.com/p/club-audio-fiuba</a><br />
     Source code repo: <a href="http://groups.google.com/group/club_de_audio_fiuba">http://groups.google.com/group/club_de_audio_fiuba</a><br />
[2] <a href="http://audiores.uint8.com.ar/blog/2009/08/17/showing-a-little-about-clam-as-a-prototyping-tool-at-the-audio-club-of-fiuba/">http://audiores.uint8.com.ar/blog/2009/08/17/showing-a-little-about-clam-as-a-prototyping-tool-at-the-audio-club-of-fiuba/</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AudioResearch?a=1CrEu_iuqFo:8wqIBfl2YUE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=1CrEu_iuqFo:8wqIBfl2YUE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=1CrEu_iuqFo:8wqIBfl2YUE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=1CrEu_iuqFo:8wqIBfl2YUE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=1CrEu_iuqFo:8wqIBfl2YUE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=1CrEu_iuqFo:8wqIBfl2YUE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=1CrEu_iuqFo:8wqIBfl2YUE:sqa-yYqJjYk"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=1CrEu_iuqFo:8wqIBfl2YUE:sqa-yYqJjYk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://audiores.uint8.com.ar/blog/2010/03/11/some-experience-with-clam-inside-an-audio-club-at-fiuba-argentina/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://audiores.uint8.com.ar/blog/2010/03/11/some-experience-with-clam-inside-an-audio-club-at-fiuba-argentina/</feedburner:origLink></item>
		<item>
		<title>Showing a little about CLAM as a prototyping tool at the Audio Club of FIUBA</title>
		<link>http://feedproxy.google.com/~r/AudioResearch/~3/SyzFw8d3F1Q/</link>
		<comments>http://audiores.uint8.com.ar/blog/2009/08/17/showing-a-little-about-clam-as-a-prototyping-tool-at-the-audio-club-of-fiuba/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 02:10:03 +0000</pubDate>
		<dc:creator>hordia</dc:creator>
				<category><![CDATA[CLAM]]></category>
		<category><![CDATA[ClubAudioFiuba]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[effects]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[signal processing]]></category>

		<guid isPermaLink="false">http://audiores.uint8.com.ar/blog/2009/08/17/showing-a-little-about-clam-as-a-prototyping-tool-at-the-audio-club-of-fiuba/</guid>
		<description><![CDATA[Last week, at the recent &#8216;audio club&#8217; of my university, I was showing how to work with the CLAM framework as a tool to prototype realtime audio signal processing applications in a simple and fast way. We started with an &#8230; <a href="http://audiores.uint8.com.ar/blog/2009/08/17/showing-a-little-about-clam-as-a-prototyping-tool-at-the-audio-club-of-fiuba/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<a class="wpptopdf" rel="noindex,nofollow" href="http://audiores.uint8.com.ar/blog/2009/08/17/showing-a-little-about-clam-as-a-prototyping-tool-at-the-audio-club-of-fiuba/?format=pdf" title="Download PDF"><img src="http://audiores.uint8.com.ar/blog/wp-content/plugins/wp-post-to-pdf/asset/images/pdf.png" alt="Download PDF"/></a><p>Last week, at the recent &#8216;audio club&#8217; of my university, I was showing how to work with the <a href="http://clam-project.org/">CLAM</a> framework as a tool to prototype realtime audio signal processing applications in a simple and fast way.</p>
<p>We started with an example network to show some about the NetworkEditor capabilities: <a href="http://audiores.uint8.com.ar/files/networks/karaoke.clamnetwork">karaoke.clamnetwork</a><br />
<img id="image209" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2009/08/karaoke.jpg" alt="Karaoke" /></p>
<p>After that, we continue with a simple &#8216;diodo distortion&#8217; plugin:</p>
<p>We specified and generated the source code base in this way:<br />
<img id="image210" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2009/08/spec-distorsion-diodo.jpg" alt="Especificación de distorsión tipo diodo" /></p>
<p>We wrote this code:</p>
<div class="codecolorer-container cpp geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:600px;"><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">bool</span> Do<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">bool</span> result <span style="color: #000080;">=</span> Do<span style="color: #008000;">&#40;</span> mEntrada.<span style="color: #007788;">GetAudio</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, mSalida.<span style="color: #007788;">GetAudio</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mEntrada.<span style="color: #007788;">Consume</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mSalida.<span style="color: #007788;">Produce</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">return</span> result<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">bool</span> Do<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> Audio<span style="color: #000040;">&amp;</span> in, Audio<span style="color: #000040;">&amp;</span> out<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">int</span> size <span style="color: #000080;">=</span> in.<span style="color: #007788;">GetSize</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">const</span> DataArray<span style="color: #000040;">&amp;</span> inb <span style="color: #000080;">=</span> in.<span style="color: #007788;">GetBuffer</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DataArray<span style="color: #000040;">&amp;</span> outb <span style="color: #000080;">=</span> out.<span style="color: #007788;">GetBuffer</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span> size<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> <span style="color: #0000dd;">fabs</span><span style="color: #008000;">&#40;</span>inb<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">&gt;</span><span style="color:#800080;">0.8</span> <span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outb<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> inb<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">&amp;</span>lt<span style="color: #008080;">;</span><span style="color: #0000dd;">0</span>.<span style="color: #008080;">?</span> <span style="color: #000040;">-</span><span style="color:#800080;">0.8</span><span style="color: #008080;">:</span><span style="color:#800080;">0.8</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outb<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> inb<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span></div></div>
<p>And built this net to try it:<br />
<img id="image212" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2009/08/diodo-distorsion.jpg" alt="Red para probar distorsión de diodo" /></p>
<p>The source code of the plugin ready to be compiled is here: <a href="http://audiores.uint8.com.ar/files/code/CLAM_plugins/pluginDistorsiónDiodo_ClubAudioFiuba.tar.gz ">pluginDistorsiónDiodo_ClubAudioFiuba.tar.gz</a></p>
<p>As extra, I leave here <a href="http://audiores.uint8.com.ar/files/code/CLAM_plugins/pluginDistorsiónDiodoConControlDeClipping_ClubAudioFiuba.tar.gz">pluginDistorsiónDiodoConControlDeClipping_ClubAudioFiuba.tar.gz</a> the same diode distortion, but with a clipping control to set the threshold when playing.</p>
<p>They liked these kind of prototyping features a lot, so probably we&#8217;re going to keep using it at the club.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AudioResearch?a=SyzFw8d3F1Q:epRfLAbCYlk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=SyzFw8d3F1Q:epRfLAbCYlk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=SyzFw8d3F1Q:epRfLAbCYlk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=SyzFw8d3F1Q:epRfLAbCYlk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=SyzFw8d3F1Q:epRfLAbCYlk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=SyzFw8d3F1Q:epRfLAbCYlk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=SyzFw8d3F1Q:epRfLAbCYlk:sqa-yYqJjYk"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=SyzFw8d3F1Q:epRfLAbCYlk:sqa-yYqJjYk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://audiores.uint8.com.ar/blog/2009/08/17/showing-a-little-about-clam-as-a-prototyping-tool-at-the-audio-club-of-fiuba/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://audiores.uint8.com.ar/blog/2009/08/17/showing-a-little-about-clam-as-a-prototyping-tool-at-the-audio-club-of-fiuba/</feedburner:origLink></item>
		<item>
		<title>Interactive CLAM programming (with python)</title>
		<link>http://feedproxy.google.com/~r/AudioResearch/~3/m7fyxQCiWyc/</link>
		<comments>http://audiores.uint8.com.ar/blog/2008/08/03/interactive-clam-programming/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 01:00:09 +0000</pubDate>
		<dc:creator>hordia</dc:creator>
				<category><![CDATA[CLAM]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[screencast]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[signal processing]]></category>

		<guid isPermaLink="false">http://audiores.uint8.com.ar/blog/2008/08/03/interactive-clam-programming/</guid>
		<description><![CDATA[Recently I been playing with python bindings for the CLAM library. Here is a demo demonstrating how to interactively build a network and play a file using the IPython shell: &#160; Related scripts: playfile.py fft_example.py. &#160; PyCLAM source. INSTALL.]]></description>
			<content:encoded><![CDATA[<a class="wpptopdf" rel="noindex,nofollow" href="http://audiores.uint8.com.ar/blog/2008/08/03/interactive-clam-programming/?format=pdf" title="Download PDF"><img src="http://audiores.uint8.com.ar/blog/wp-content/plugins/wp-post-to-pdf/asset/images/pdf.png" alt="Download PDF"/></a><p>Recently I been playing with python bindings for the <a href="http://clam.iua.upf.edu/">CLAM</a> library. Here is a demo demonstrating how to interactively build a network and play a file using the <a href="http://ipython.scipy.org/moin/About">IPython</a> shell:</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/XgJsqo2_-Ng&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/XgJsqo2_-Ng&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>&nbsp;<br />
Related scripts: <a href="http://audiores.uint8.com.ar/files/code/python/playfile.py">playfile.py</a> <a href="http://audiores.uint8.com.ar/files/code/python/fft_example.py">fft_example.py</a>.<br />
&nbsp;<br />
<a href="http://clam-project.org/clam/trunk/CLAM/pyclam">PyCLAM source</a>. <a href="http://clam-project.org/clam/trunk/CLAM/pyclam/INSTALL">INSTALL</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AudioResearch?a=m7fyxQCiWyc:q1hdzD7prdc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=m7fyxQCiWyc:q1hdzD7prdc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=m7fyxQCiWyc:q1hdzD7prdc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=m7fyxQCiWyc:q1hdzD7prdc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=m7fyxQCiWyc:q1hdzD7prdc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=m7fyxQCiWyc:q1hdzD7prdc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=m7fyxQCiWyc:q1hdzD7prdc:sqa-yYqJjYk"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=m7fyxQCiWyc:q1hdzD7prdc:sqa-yYqJjYk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://audiores.uint8.com.ar/blog/2008/08/03/interactive-clam-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://audiores.uint8.com.ar/blog/2008/08/03/interactive-clam-programming/</feedburner:origLink></item>
		<item>
		<title>CLAM processing generator script (example of use)</title>
		<link>http://feedproxy.google.com/~r/AudioResearch/~3/yHkRk8968To/</link>
		<comments>http://audiores.uint8.com.ar/blog/2008/07/07/clam-processing-generator-script-example-of-use/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 20:58:49 +0000</pubDate>
		<dc:creator>hordia</dc:creator>
				<category><![CDATA[CLAM]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[library]]></category>

		<guid isPermaLink="false">http://audiores.uint8.com.ar/blog/2008/07/07/clam-processing-generator-script-example-of-use/</guid>
		<description><![CDATA[This script is about a basic code generation of a CLAM plugin. In some point I think this is some kind of meta-programming or perhaps the term &#8220;automatic programming&#8221; fits better. The basic idea is to specify some basic features &#8230; <a href="http://audiores.uint8.com.ar/blog/2008/07/07/clam-processing-generator-script-example-of-use/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<a class="wpptopdf" rel="noindex,nofollow" href="http://audiores.uint8.com.ar/blog/2008/07/07/clam-processing-generator-script-example-of-use/?format=pdf" title="Download PDF"><img src="http://audiores.uint8.com.ar/blog/wp-content/plugins/wp-post-to-pdf/asset/images/pdf.png" alt="Download PDF"/></a><p>This script is about a basic code generation of a <a href="http://www.clam.iua.upf.edu/">CLAM</a> plugin. In some point I think this is some kind of <a href="http://en.wikipedia.org/wiki/Metaprogramming">meta-programming</a> or perhaps the term &#8220;<a href="http://en.wikipedia.org/wiki/Automatic_programming">automatic programming</a>&#8221; fits better. The basic idea is to specify some basic features of the planned new processing in a plain text and then, generate some code with the script, saving in this way many of the often repetitive and mechanical work needed to set-up a new processing from scratch. Main intention is to allow concentrate in the Do() function or plugin details quickly.</p>
<p>As an example, I will reproduce here how I worked with me some time ago:<br />
&nbsp;<br />
One day, in the irc #clam channel:<br />
&#8220;[11:51] &#60;groton&#62; Consul, do you know if there is any trigger-like processing unit, list when the volume gets louder than a threshold or something like that&#8221;</p>
<p>I&#8217;m not Consul in the irc (I&#8217;m <a href="http://h.ordia.com.ar/">hordia</a>), but next day at my console&#8230;</p>
<p>cd CLAM/scripts/TemplatedPluginsGenerator<br />
vi ThresholdTrigger.template</p>
<p><span style="font-size: 14px"></p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:600px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Name:ThresholdTriggerTemplate<br />
BaseClass:Processing<br />
i:AudioInPort,Audio Input<br />
ic:0,1,Threshold<br />
oc:0,1,Trigger</div></div>
<p></span></p>
<p>In words, this means a Processing template named &#8220;ThresholdTriggerTemplate&#8221; using &#8220;Processing&#8221; as a base class and with one input of &#8220;AudioInPort&#8221; type named &#8220;Audio Input&#8221;, with one in control in the 0..1 range named &#8220;Threshold&#8221; and one out control named &#8220;Trigger&#8221;. Of course, you can add as many inputs/outputs of ports or controls as you want.<br />
&nbsp;</p>
<p>This script creates the template:</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:600px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">./TemplateGenerator.py ThresholdTrigger.template</div></div>
<p>&nbsp;<br />
And this one the processing plugin:</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:600px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">./TemplatedPluginsGenerator.py ThresholdTrigger ThresholdTriggerTemplate &quot;Hernán Ordiales&quot; GPL 2008</div></div>
<p>Again in words, this means create a new processing called &#8220;ThresholdTrigger&#8221; based on the &#8220;ThresholdTriggerTemplate&#8221; filling the copyright with my name plus the current year and the license with the GPL text.</p>
<p>&nbsp;<br />
A final edit just typing the required code for the Do() function:</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:600px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cd CLAM/plugins/ThresholdTrigger<br />
vi ThresholdTrigger.hxx</div></div>
<p><span style="font-size: 14px"></p>
<div class="codecolorer-container cpp geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:600px;"><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339900;">#include &lt;cmath&gt;</span><br />
<br />
<span style="color: #0000ff;">bool</span> Do<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">bool</span> result <span style="color: #000080;">=</span> Do<span style="color: #008000;">&#40;</span> mAudioInput.<span style="color: #007788;">GetAudio</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;mAudioInput.<span style="color: #007788;">Consume</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">return</span> result<span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">bool</span> Do<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> Audio<span style="color: #000040;">&amp;</span> in<span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">int</span> size <span style="color: #000080;">=</span> in.<span style="color: #007788;">GetSize</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">const</span> DataArray<span style="color: #000040;">&amp;</span> inb <span style="color: #000080;">=</span> in.<span style="color: #007788;">GetBuffer</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;TData threshold <span style="color: #000080;">=</span> mThreshold.<span style="color: #007788;">GetLastValue</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">bool</span> trigger <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>size <span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #0000dd;">fabs</span><span style="color: #008000;">&#40;</span>inb<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">&gt;</span>threshold<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;trigger <span style="color: #000080;">=</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;mTrigger.<span style="color: #007788;">SendControl</span><span style="color: #008000;">&#40;</span>trigger<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>size<span style="color: #000080;">&gt;&lt;</span><span style="color: #000040;">/</span>cmath<span style="color: #000080;">&gt;</span></div></div>
<p></span></p>
<p>At this point, just remains add the <a href="http://iua-share.upf.es/wikis/clam/index.php/Building_a_processing_library">basic SConstruct file for a CLAM plugin</a>, compile it with the corresponding clam_prefix and install it:</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:600px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">scons install clam_prefix=$CLAM_PATH<br />
NetworkEditor</div></div>
<p>And ready to use&#8230;</p>
<p>This example it&#8217;s very simple and has a poor implementation but was just to show the idea of how those scripts can save a lot of work. </p>
<p><strong>Update:</strong> I made a frontend for these scripts: <a href="http://iua-share.upf.edu/wikis/clam/index.php/Image:PluginCodeGenerator.png">ProcessingCodeGenerator</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AudioResearch?a=yHkRk8968To:0tPuwXwVRTY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=yHkRk8968To:0tPuwXwVRTY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=yHkRk8968To:0tPuwXwVRTY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=yHkRk8968To:0tPuwXwVRTY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=yHkRk8968To:0tPuwXwVRTY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=yHkRk8968To:0tPuwXwVRTY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=yHkRk8968To:0tPuwXwVRTY:sqa-yYqJjYk"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=yHkRk8968To:0tPuwXwVRTY:sqa-yYqJjYk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://audiores.uint8.com.ar/blog/2008/07/07/clam-processing-generator-script-example-of-use/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://audiores.uint8.com.ar/blog/2008/07/07/clam-processing-generator-script-example-of-use/</feedburner:origLink></item>
		<item>
		<title>Distortion rack prototype</title>
		<link>http://feedproxy.google.com/~r/AudioResearch/~3/Nz91yPx7fzE/</link>
		<comments>http://audiores.uint8.com.ar/blog/2008/01/05/distortion-rack-prototype/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 16:09:50 +0000</pubDate>
		<dc:creator>hordia</dc:creator>
				<category><![CDATA[CLAM]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[effects]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[sound]]></category>

		<guid isPermaLink="false">http://audiores.uint8.com.ar/blog/?p=179</guid>
		<description><![CDATA[A nice prototype: &#160; &#160; And the net behind:]]></description>
			<content:encoded><![CDATA[<a class="wpptopdf" rel="noindex,nofollow" href="http://audiores.uint8.com.ar/blog/2008/01/05/distortion-rack-prototype/?format=pdf" title="Download PDF"><img src="http://audiores.uint8.com.ar/blog/wp-content/plugins/wp-post-to-pdf/asset/images/pdf.png" alt="Download PDF"/></a><p>A nice prototype:</p>
<p><center><a href="http://audiores.uint8.com.ar/blog/wp-content/uploads/2008/01/distortion-clam-rack.png"  alt="prototype"><img id="image177" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2008/01/distortion-clam-rack_mini.png" alt="CLAM distortion rack prototype" /></a></center></p>
<p>&nbsp;<br />
&nbsp;</p>
<p>And the net behind:</p>
<p><center><a href="http://audiores.uint8.com.ar/blog/wp-content/uploads/2008/01/rack-net.png"  alt="prototype"><img id="image177" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2008/01/rack-net_mini.png" alt="CLAM distortion rack prototype" /></a></center></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AudioResearch?a=Nz91yPx7fzE:JkW-HJRf4kQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=Nz91yPx7fzE:JkW-HJRf4kQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=Nz91yPx7fzE:JkW-HJRf4kQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=Nz91yPx7fzE:JkW-HJRf4kQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=Nz91yPx7fzE:JkW-HJRf4kQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=Nz91yPx7fzE:JkW-HJRf4kQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=Nz91yPx7fzE:JkW-HJRf4kQ:sqa-yYqJjYk"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=Nz91yPx7fzE:JkW-HJRf4kQ:sqa-yYqJjYk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://audiores.uint8.com.ar/blog/2008/01/05/distortion-rack-prototype/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://audiores.uint8.com.ar/blog/2008/01/05/distortion-rack-prototype/</feedburner:origLink></item>
		<item>
		<title>LADSPA versions of my recent simple distortions</title>
		<link>http://feedproxy.google.com/~r/AudioResearch/~3/XsYMxfoa01U/</link>
		<comments>http://audiores.uint8.com.ar/blog/2007/12/17/ladspa-versions-of-my-recent-simple-distortions/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 04:41:04 +0000</pubDate>
		<dc:creator>hordia</dc:creator>
				<category><![CDATA[plugins]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[CLAM]]></category>
		<category><![CDATA[effects]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[specifications]]></category>

		<guid isPermaLink="false">http://audiores.uint8.com.ar/blog/?p=175</guid>
		<description><![CDATA[After prototype different kind of simple distortions in NetworkEditor i managed to port all them to ladspa plugins. Despite the fact that the task was less difficult than i had expected at first, prototype with CLAM first worth a lot. &#8230; <a href="http://audiores.uint8.com.ar/blog/2007/12/17/ladspa-versions-of-my-recent-simple-distortions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<a class="wpptopdf" rel="noindex,nofollow" href="http://audiores.uint8.com.ar/blog/2007/12/17/ladspa-versions-of-my-recent-simple-distortions/?format=pdf" title="Download PDF"><img src="http://audiores.uint8.com.ar/blog/wp-content/plugins/wp-post-to-pdf/asset/images/pdf.png" alt="Download PDF"/></a><p>After prototype different kind of simple distortions in NetworkEditor i managed to port all them to <a href="http://www.ladspa.org/">ladspa</a> plugins. Despite the fact that the task was less difficult than i had expected at first, prototype with CLAM first worth a lot. Probably, if i had begun coding directly to <a href="http://www.ladspa.org/">ladspa</a> source, reach the same status would be taken to me 10 or more times more. I think also was very interesting as &#8220;development process&#8221;, instead of modeling for example with matlab, you could easy modeling (among other things) in CLAM, and then, if you want/need make your final product by your own.</p>
<p>More, the other day i learned that is already possible to compile <a href="http://www.ladspa.org/">ladspa</a> plugins directly from CLAM networks&#8230; very cool! Though i think this feature is not completely ready yet and i&#8217;m still have to dig in it, i don&#8217;t think that i have lost time porting manually because now i have a better knowledge and understanding about <a href="http://www.ladspa.org/">ladspa</a> specification that for sure will be useful to work with this (for me &#8220;new&#8221;) feature, that probably needs some fixes. </p>
<p>About the ladspa plugins programming, i just downloaded the sdk from <a href="http://www.ladspa.org/">ladspa.org</a>, read some of the ladspa.h file and some basic examples (the ones from sdk) and that was enough to handle the basis. Ah, i had to ask for some <a href="http://www.ladspa.org/">ladspa</a> ID&#8217;s for my plugins here: ladspa at muse.demon.co.uk</p>
<p>On the other hand i&#8217;ve forwarded my distortion examples to musix distro folks and some of them indeed have tried it and made a couple of <a href="http://jack-rack.sourceforge.net/">jack-rack</a> presets and audio demos. More info about this here: <a href="http://www.musix.org.ar/wiki/index.php/DSP-es#Presets">DSP-es#Presets</a>, <a href="http://www.musix.org.ar/ogg/disthordian/">ogg demos and jack-rack presets</a>, and <a href="http://www.musix.org.ar/wiki/index.php/Distorsion_para_guitarra_disthordian">patchs review</a>.</p>
<p>Next step (in my TODO list): produce <a href="http://www.ladspa.org/">ladspa</a> binaries directly from CLAM networks.</p>
<p>I have uploaded these plugins here: <a href="http://audiores.uint8.com.ar/files/code/LADSPA_plugins/disthordian/index.php">disthordian ladspa plugins</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AudioResearch?a=XsYMxfoa01U:pkOHQvX_rJQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=XsYMxfoa01U:pkOHQvX_rJQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=XsYMxfoa01U:pkOHQvX_rJQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=XsYMxfoa01U:pkOHQvX_rJQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=XsYMxfoa01U:pkOHQvX_rJQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=XsYMxfoa01U:pkOHQvX_rJQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=XsYMxfoa01U:pkOHQvX_rJQ:sqa-yYqJjYk"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=XsYMxfoa01U:pkOHQvX_rJQ:sqa-yYqJjYk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://audiores.uint8.com.ar/blog/2007/12/17/ladspa-versions-of-my-recent-simple-distortions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://audiores.uint8.com.ar/blog/2007/12/17/ladspa-versions-of-my-recent-simple-distortions/</feedburner:origLink></item>
		<item>
		<title>New CLAM plugin: (‘very’ for now) simple guitar distortion</title>
		<link>http://feedproxy.google.com/~r/AudioResearch/~3/cCUaPJ4F-04/</link>
		<comments>http://audiores.uint8.com.ar/blog/2007/12/09/new-clam-plugin-very-for-now-simple-guitar-distortion/#comments</comments>
		<pubDate>Sun, 09 Dec 2007 18:47:55 +0000</pubDate>
		<dc:creator>hordia</dc:creator>
				<category><![CDATA[CLAM]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[effects]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://audiores.uint8.com.ar/blog/?p=172</guid>
		<description><![CDATA[A week or more ago, Daniel Vidal Chornet (collaborator of Musix) asked me if i can develop guitar distortion effects, because he couldn&#8217;t find something decent that suits his needs, i said &#8220;sadly i have no idea about distortions effects &#8230; <a href="http://audiores.uint8.com.ar/blog/2007/12/09/new-clam-plugin-very-for-now-simple-guitar-distortion/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<a class="wpptopdf" rel="noindex,nofollow" href="http://audiores.uint8.com.ar/blog/2007/12/09/new-clam-plugin-very-for-now-simple-guitar-distortion/?format=pdf" title="Download PDF"><img src="http://audiores.uint8.com.ar/blog/wp-content/plugins/wp-post-to-pdf/asset/images/pdf.png" alt="Download PDF"/></a><p>A week or more ago, Daniel Vidal Chornet (collaborator of <a href="http://musix.org.ar/">Musix</a>) asked me if i can develop guitar distortion effects, because he couldn&#8217;t find something decent that suits his needs, i said &#8220;sadly i have no idea about distortions effects and anyway i have no time right now to do that&#8221;, but then i remembered how useful could be the clam framework and i tried to do a little spike about. Results were better than i had expected at first (is not a super cool distortion, but at least sound like one).</p>
<p>Basically i merged and tweaked a couple of simple/base algorithms found in the web for distortion and compression and in less than 30 minutes i had something working and sounds like a guitar distortion (&#8220;clean&#8221; ones seems to sound better easily). I was amazed how fast and easy (develop and test in clam/networkeditor, once you get the basis) was. I think right now is far to be a good distortion, but as learning process and first demo seems very good.</p>
<p>Here some sound examples: </p>
<p>Original: [audio:http://audiores.uint8.com.ar/files/audios/guitardist/dvlc-guitar.mp3]<br />
(<a href="http://audiores.uint8.com.ar/files/audios/guitardist/dvlc-guitar.ogg">dvlc-guitar.ogg</a>)</p>
<p>With distortion: [audio:http://audiores.uint8.com.ar/files/audios/guitardist/guitardist-ex1.mp3]<br />
(<a href="http://audiores.uint8.com.ar/files/audios/guitardist/guitardist-ex1.ogg">guitardist-ex1.ogg</a>)</p>
<p>Test network looks like:<br />
<center><img id="image174" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/12/dist-networkt1.png" alt="Distortion NE network" /></center><br />
&nbsp;</p>
<p>The source code is here (as NetworkEditor plugin): <a href="http://audiores.uint8.com.ar/files/code/CLAM_plugins/GuitarDistortion.tar.gz">GuitarDistortion.tar.gz</a></p>
<p>Some optional tweaks could include add a three band filter but i&#8217;m still not sure if it&#8217;s better to put it at first or at the end.</p>
<p>Special thanks for testing and audio samples to Daniel Vidal Chornet. I should take from my closet my <a href="http://en.wikipedia.org/wiki/Fender_Stratocaster">fender stratocaster</a> and do my own samples <img src='http://audiores.uint8.com.ar/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> . OTOH, we already arrange to do a remote gig with this.</p>
<p>Another useful NetworkEditor processings plugins i had made during this &#8220;work&#8221;:</p>
<ul>
<li>AutomaticGainControl: Adaptative automatic gain control. Given an output reference and step response adjusts the output volume to keep it constant (<a href="http://audiores.uint8.com.ar/files/code/CLAM_plugins/AutomaticGainControl.tar.gz">AutomaticGainControl.tar.gz</a>)</li>
<li>AudioSwitch: Switchs between a configurable amount of inputs (like a multiplexer) (<a href="http://audiores.uint8.com.ar/files/code/CLAM_plugins/AudioSwitch.tar.gz">AudioSwitch.tar.gz</a>)</li>
</ul>
<p>&nbsp;<br />
<strong>Related:</strong> <a href="http://audiores.uint8.com.ar/blog/?p=175">LADSPA versions of my recent simple distortions</a><br />
<strong>Update:</strong> <a href="http://audiores.uint8.com.ar/blog/?p=179">Distortion rack prototype</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AudioResearch?a=cCUaPJ4F-04:tnlNQsOnXik:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=cCUaPJ4F-04:tnlNQsOnXik:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=cCUaPJ4F-04:tnlNQsOnXik:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=cCUaPJ4F-04:tnlNQsOnXik:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=cCUaPJ4F-04:tnlNQsOnXik:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=cCUaPJ4F-04:tnlNQsOnXik:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=cCUaPJ4F-04:tnlNQsOnXik:sqa-yYqJjYk"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=cCUaPJ4F-04:tnlNQsOnXik:sqa-yYqJjYk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://audiores.uint8.com.ar/blog/2007/12/09/new-clam-plugin-very-for-now-simple-guitar-distortion/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
<enclosure url="http://audiores.uint8.com.ar/files/audios/guitardist/guitardist-ex1.mp3" length="534192" type="audio/mpeg" />
<enclosure url="http://audiores.uint8.com.ar/files/audios/guitardist/dvlc-guitar.mp3" length="431016" type="audio/mpeg" />
<enclosure url="http://audiores.uint8.com.ar/files/audios/guitardist/dvlc-guitar.ogg" length="225108" type="audio/ogg" />
<enclosure url="http://audiores.uint8.com.ar/files/audios/guitardist/guitardist-ex1.ogg" length="215459" type="audio/ogg" />
		<feedburner:origLink>http://audiores.uint8.com.ar/blog/2007/12/09/new-clam-plugin-very-for-now-simple-guitar-distortion/</feedburner:origLink></item>
		<item>
		<title>My presentation at the “VI Jornadas de Acústica, Electroacústica y áreas vinculadas (CADAE)”</title>
		<link>http://feedproxy.google.com/~r/AudioResearch/~3/tyLQAZE128U/</link>
		<comments>http://audiores.uint8.com.ar/blog/2007/10/27/my-presentation-at-the-vi-jornadas-de-acustica-electroacustica-y-areas-vinculadas-cadae/#comments</comments>
		<pubDate>Sat, 27 Oct 2007 20:47:00 +0000</pubDate>
		<dc:creator>hordia</dc:creator>
				<category><![CDATA[CLAM]]></category>
		<category><![CDATA[GSoC2007]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[dissertation]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[acoustics]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[effects]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[midi]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[signal processing]]></category>
		<category><![CDATA[talks]]></category>

		<guid isPermaLink="false">http://audiores.uint8.com.ar/blog/?p=164</guid>
		<description><![CDATA[Yesterday I had the opportunity to give a talk about my recent work in the google summer of code at the VI Jornadas de Acústica, Electroacústica y áreas vinculadas (CADAE). The given time was short, so was a little hard &#8230; <a href="http://audiores.uint8.com.ar/blog/2007/10/27/my-presentation-at-the-vi-jornadas-de-acustica-electroacustica-y-areas-vinculadas-cadae/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<a class="wpptopdf" rel="noindex,nofollow" href="http://audiores.uint8.com.ar/blog/2007/10/27/my-presentation-at-the-vi-jornadas-de-acustica-electroacustica-y-areas-vinculadas-cadae/?format=pdf" title="Download PDF"><img src="http://audiores.uint8.com.ar/blog/wp-content/plugins/wp-post-to-pdf/asset/images/pdf.png" alt="Download PDF"/></a><p>Yesterday I had the opportunity to give a talk about my recent <a href="http://h.ordia.com.ar/blog/GSoC2007.php">work in the google summer of code </a>at the <a href="http://cadae.org.ar/jornadas_2007_formulario.htm">VI Jornadas de Acústica, Electroacústica y áreas vinculadas</a> (<a href="http://cadae.org.ar">CADAE</a>). The given time was short, so was a little hard to explain all in only 20 minutes, but seems that all went well (at least seemed like the people). Here is my presentation (in Spanish):</p>
<p>&nbsp;</p>
<h2><strong>Transformaciones espectrales en tiempo real para CLAM</strong></h2>
<div style="width:425px;text-align:left" id="__ss_147509"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://s3.amazonaws.com/slideshare/ssplayer2.swf?doc=transformaciones-espectrales-en-tiempo-real-para-c-l-a-m-hernn-ordiales-1193512509178279-1"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://s3.amazonaws.com/slideshare/ssplayer2.swf?doc=transformaciones-espectrales-en-tiempo-real-para-c-l-a-m-hernn-ordiales-1193512509178279-1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"><a href="http://www.slideshare.net/?src=embed"><img src="http://s3.amazonaws.com/slideshare/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> | <a href="http://www.slideshare.net/hordiales/transformaciones-espectrales-en-tiempo-real-para-c-l-a-m-hernn-ordiales-147509" title="View 'Transformaciones espectrales en tiempo real para CLAM' on SlideShare">View</a> | <a href="http://www.slideshare.net/upload">Upload your own</a></div>
</div>
<p>&nbsp;</p>
<p><span style="font-size: 16px"><strong>Download:</strong></span> <a href="http://audiores.uint8.com.ar/files/doc/slides/Transformaciones%20espectrales%20en%20tiempo%20real%20para%20CLAM%20-%20Hern%e1n%20Ordiales.pdf">Transformaciones espectrales en tiempo real para CLAM.pdf</a></p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AudioResearch?a=tyLQAZE128U:_DgjZbLVEPw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=tyLQAZE128U:_DgjZbLVEPw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=tyLQAZE128U:_DgjZbLVEPw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=tyLQAZE128U:_DgjZbLVEPw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=tyLQAZE128U:_DgjZbLVEPw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=tyLQAZE128U:_DgjZbLVEPw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=tyLQAZE128U:_DgjZbLVEPw:sqa-yYqJjYk"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=tyLQAZE128U:_DgjZbLVEPw:sqa-yYqJjYk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://audiores.uint8.com.ar/blog/2007/10/27/my-presentation-at-the-vi-jornadas-de-acustica-electroacustica-y-areas-vinculadas-cadae/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://audiores.uint8.com.ar/blog/2007/10/27/my-presentation-at-the-vi-jornadas-de-acustica-electroacustica-y-areas-vinculadas-cadae/</feedburner:origLink></item>
		<item>
		<title>Fundamental (in Hz) to a MIDI note</title>
		<link>http://feedproxy.google.com/~r/AudioResearch/~3/5wnwqb40iqU/</link>
		<comments>http://audiores.uint8.com.ar/blog/2007/08/26/fundamental-in-hz-to-a-midi-note/#comments</comments>
		<pubDate>Sun, 26 Aug 2007 23:54:29 +0000</pubDate>
		<dc:creator>hordia</dc:creator>
				<category><![CDATA[CLAM]]></category>
		<category><![CDATA[GSoC2007]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[midi]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[music theory]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://audiores.uint8.com.ar/blog/?p=144</guid>
		<description><![CDATA[Working to have audio-to-midi in NetworkEditor (CLAM) I needed to convert a fundamental frequency value to a MIDI note one. I found some source code related with this in Voice2MIDI app, but was not explained at all, so looking for &#8230; <a href="http://audiores.uint8.com.ar/blog/2007/08/26/fundamental-in-hz-to-a-midi-note/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<a class="wpptopdf" rel="noindex,nofollow" href="http://audiores.uint8.com.ar/blog/2007/08/26/fundamental-in-hz-to-a-midi-note/?format=pdf" title="Download PDF"><img src="http://audiores.uint8.com.ar/blog/wp-content/plugins/wp-post-to-pdf/asset/images/pdf.png" alt="Download PDF"/></a><p>Working to have <em>audio-to-midi</em> in NetworkEditor (<a href="http://clam.iua.upf.edu/">CLAM</a>) I needed to convert a fundamental frequency value to a MIDI note one.</p>
<p>I found some source code related with this in Voice2MIDI app, but was not explained at all, so looking for the reason of that formula I arrived at this:</p>
<p>Knowing about equal-tempered scale (<a href="http://audiores.uint8.com.ar/blog/?p=53">check this</a>) and $latex 2^{\frac{n}{12}}$ relation between frequencies plus the fact that C4 or &#8220;middle c&#8221; has a MIDI value of 60, it&#8217;s easy to conclude that then A4 (which its frequency value is 440Hz, a standard for tunning and is 9 semi-tones more) has a MIDI value of 69.</p>
<p>&nbsp;</p>
<p>Then, starting with:<br />
<img src="http://audiores.uint8.com.ar/blog/wp-content/ql-cache/quicklatex.com-a130549a352f01e815d7837d7fad137a_l2.gif" alt="fundfrec = 440Hz * 2^{(\frac{1}{12})^n}"title="Rendered by QuickLaTeX.com" style="vertical-align: -4px; border: none;"/></p>
<p>&nbsp;</p>
<p>It&#8217;s easy to arrive at this:<br />
<img src="http://audiores.uint8.com.ar/blog/wp-content/ql-cache/quicklatex.com-9054a7fde6af0cb985cdb55aad6ec6c9_l2.gif" alt="fund_{midinote} = 69+log_{2^{(\frac{1}{12})}}(\frac{fundfrec}{440Hz})"title="Rendered by QuickLaTeX.com" style="vertical-align: -10px; border: none;"/></p>
<p>&nbsp;</p>
<p>and then, also taking in account this mathematical relation::<br />
<img src="http://audiores.uint8.com.ar/blog/wp-content/ql-cache/quicklatex.com-4ba182edac779293ed6d070fc1ef165d_l2.gif" alt="log_{2^{\frac{1}{12}}}(a) = log_{e}(a)*17.31234"title="Rendered by QuickLaTeX.com" style="vertical-align: -10px; border: none;"/></p>
<p>&nbsp;</p>
<p>the final formula looks like:<br />
<img src="http://audiores.uint8.com.ar/blog/wp-content/ql-cache/quicklatex.com-a16a4669fd2342bb84bb029df832b51f_l2.gif" alt="fund_{midinote} = 69+log_{e}(\frac{fundfrec}{440Hz})*17.31234"title="Rendered by QuickLaTeX.com" style="vertical-align: -6px; border: none;"/></p>
<p>&nbsp;</p>
<p>and a final c++ code like:<br />
<span style="font-size: 14px"></p>
<div class="codecolorer-container cpp geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:600px;"><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">fund_midinote <span style="color: #000080;">=</span> round<span style="color: #008000;">&#40;</span> <span style="color: #0000dd;">69</span>. <span style="color: #000040;">+</span> <span style="color: #0000dd;">log</span><span style="color: #008000;">&#40;</span>fundfrec<span style="color: #000040;">/</span><span style="color: #0000dd;">440</span>.<span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color:#800080;">17.31234</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></div></div>
<p></span></p>
<p>&nbsp;<br />
<strong>Related post:</strong> nictuku&#8217;s inverse formula (i.e. from MIDI to Hz) here &#8220;<a href="http://www.nictuku.com.ar/blog/en/2008/05/24/translanting-midi-notes-to-frequencies-in-the-diatonic-scale-using-the-central-a-440hz-as-reference/">Translanting MIDI Notes to frequencies in the diatonic scale using the central A (440hz) as reference</a>&#8220;.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AudioResearch?a=5wnwqb40iqU:wrofp4bxTNE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=5wnwqb40iqU:wrofp4bxTNE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=5wnwqb40iqU:wrofp4bxTNE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=5wnwqb40iqU:wrofp4bxTNE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=5wnwqb40iqU:wrofp4bxTNE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=5wnwqb40iqU:wrofp4bxTNE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AudioResearch?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AudioResearch?a=5wnwqb40iqU:wrofp4bxTNE:sqa-yYqJjYk"><img src="http://feeds.feedburner.com/~ff/AudioResearch?i=5wnwqb40iqU:wrofp4bxTNE:sqa-yYqJjYk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://audiores.uint8.com.ar/blog/2007/08/26/fundamental-in-hz-to-a-midi-note/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://audiores.uint8.com.ar/blog/2007/08/26/fundamental-in-hz-to-a-midi-note/</feedburner:origLink></item>
	</channel>
</rss>

