hordia at GSoC2007 http://h.ordia.com.ar/planet en hordia at GSoC2007 - http://h.ordia.com.ar/planet hordia at audiores blog [en]: My presentation at the "VI Jornadas de Acústica, Electroacústica y áreas vinculadas (CADAE)" http://audiores.uint8.com.ar/blog/?p=164 http://audiores.uint8.com.ar/blog/2007/10/27/my-presentation-at-the-vi-jornadas-de-acustica-electroacustica-y-areas-vinculadas-cadae/ <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 my presentation (in Spanish):</p> <p>&nbsp;</p> <h2><strong>Transformaciones espectrales en tiempo real para CLAM</strong></h2> <div id="__ss_147509"> <div><a href="http://www.slideshare.net/?src=embed"><img src="http://s3.amazonaws.com/slideshare/logo_embd.png" 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><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> Sat, 27 Oct 2007 20:47:00 +0000 hordia at audiores blog [es]: Presentación en las VI Jornadas de Acústica, Electroacústica y áreas vinculadas (CADAE) http://audiores.uint8.com.ar/blog/?p=163 http://audiores.uint8.com.ar/blog/es/2007/10/27/presentacion-en-las-vi-jornadas-de-acustica-electroacustica-y-areas-vinculadas-cadae/ <p>Ayer tuve la oportunidad de presentar mi <a href="http://h.ordia.com.ar/blog/GSoC2007.php">trabajo realizado para el google summer of code</a> en el marco de las <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>), les dejó la presentación de la misma:</p> <p>&nbsp;</p> <h2><strong>Transformaciones espectrales en tiempo real para CLAM</strong></h2> <div id="__ss_147509"> <div><a href="http://www.slideshare.net/?src=embed"><img src="http://s3.amazonaws.com/slideshare/logo_embd.png" 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><strong>Download:</strong> <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> Sat, 27 Oct 2007 20:26:18 +0000 hordia at audiores blog [en]: Fundamental (in Hz) to a MIDI note http://audiores.uint8.com.ar/blog/?p=144 http://audiores.uint8.com.ar/blog/2007/08/26/fundamental-in-hz-to-a-midi-note/ <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://quicklatex.com/cache/ql_ac572f34c682633273ce3eb827cc58ee.gif" alt=" fundfrec = 440Hz * 2^{(\frac{1}{12})^n} " title=" fundfrec = 440Hz * 2^{(\frac{1}{12})^n} " /></p> <p>&nbsp;</p> <p>It&#8217;s easy to arrive at this:<br /> <img src="http://quicklatex.com/cache/ql_a8460e9522f6877434bc1c9e5b626495.gif" alt=" fund_{midinote} = 69+log_{2^{(\frac{1}{12})}}(\frac{fundfrec}{440Hz}) " title=" fund_{midinote} = 69+log_{2^{(\frac{1}{12})}}(\frac{fundfrec}{440Hz}) " /></p> <p>&nbsp;</p> <p>and then, also taking in account this mathematical relation::<br /> <img src="http://quicklatex.com/cache/ql_2155c6141fbb98eea4db9664b3bd4628.gif" alt=" log_{2^{\frac{1}{12}}}(a) = log_{e}(a)*17.31234 " title=" log_{2^{\frac{1}{12}}}(a) = log_{e}(a)*17.31234 " /></p> <p>&nbsp;</p> <p>the final formula looks like:<br /> <img src="http://quicklatex.com/cache/ql_511607276f2e53ab35aa75283bc74fd7.gif" alt=" fund_{midinote} = 69+log_{e}(\frac{fundfrec}{440Hz})*17.31234 " title=" fund_{midinote} = 69+log_{e}(\frac{fundfrec}{440Hz})*17.31234 " /></p> <p>&nbsp;</p> <p>and a final c++ code like:<br /> <span></span></p> <div class="codecolorer-container cpp geshi"><div class="cpp codecolorer">fund_midinote <span>=</span> round<span>&#40;</span> <span>69</span>. <span>+</span> <span>log</span><span>&#40;</span>fundfrec<span>/</span><span>440</span>.<span>&#41;</span><span>*</span><span>17.31234</span> <span>&#41;</span><span>;</span></div></div> <p></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> Sun, 26 Aug 2007 23:54:29 +0000 hordia at audiores blog [en]: SMSMorph part1 http://audiores.uint8.com.ar/blog/?p=136 http://audiores.uint8.com.ar/blog/2007/08/06/smsmorph-part1/ <p><em>Morph</em> effect (best know in <a href="http://en.wikipedia.org/wiki/Morphing">images domain</a>) it&#8217;s about hybridize two sounds so the resulting one has intermediate characteristics. This implementation is mainly based on <a href="http://en.wikipedia.org/wiki/Interpolation">interpolation</a> (peaks and residual spectrum) and a balance (depending on interpolation factor) of fundamental.</p> <p>All the code is mainly based on this idea: <img src="http://quicklatex.com/cache/ql_3df1ad8116545e144356c65dfdbc306c.gif" alt="(1. - alpha)*FirstSound + alpha*SecondSound" title="(1. - alpha)*FirstSound + alpha*SecondSound" />, where alpha is the interpolation factor (bounded to 0..1 range).</p> <p><center><img id="image137" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/08/smsmorph-medium.png" alt="SMSMorph Network" /></center></p> <p>&nbsp;<br /> I&#8217;m still have to tweak it a bit&#8230; but anyway I&#8217;ve made some demos of it:</p> <p>Sources: <a href="http://audiores.uint8.com.ar/files/audios/morph/Piano.ff.C5-mono-short.wav">Piano C5</a> and <a href="http://audiores.uint8.com.ar/files/audios/morph/oboe.mf.C5B5-mono-short.wav">Oboe C5</a>.<br /> Demos: <a href="http://audiores.uint8.com.ar/files/audios/morph/take1.ogg">Take 1</a>, <a href="http://audiores.uint8.com.ar/files/audios/morph/take2-inverted.ogg">Take 2</a><br /> To hear the online/streaming version go <a href="http://audiores.uint8.com.ar/streaming/morph1.html">here</a>.</p> <p>Samples were taken from <a href="http://freepats.opensrc.org/samples/imis/">Freepats</a> / <a href="http://freepats.opensrc.org/samples/imis/">Iowa Musical Instruments Samples</a>.</p> Mon, 06 Aug 2007 03:41:03 +0000 hordia at audiores blog [en]: SMS Harmonizer part1 http://audiores.uint8.com.ar/blog/?p=124 http://audiores.uint8.com.ar/blog/2007/07/31/sms-harmonizer-part1/ <p>I&#8217;ll start talking a bit about this effect which is mainly used for vocal harmonizing. Given an input voice (or whatever) as output you obtain (how many as you want) automatic <em>harmonic related</em> voices (a <a href="http://en.wikipedia.org/wiki/Minor_third">minor</a>/<a href="http://en.wikipedia.org/wiki/Major_third">major</a> third, a <a href="http://en.wikipedia.org/wiki/Perfect_fifth">fifth</a>, a <a href="http://en.wikipedia.org/wiki/Major_sixth">sixth</a> or any <a href="http://en.wikipedia.org/wiki/Musical_interval">musical interval</a> you want).</p> <p>This implementation, is mainly based on many <a href="http://audiores.uint8.com.ar/blog/?p=101">SMS</a> <a href="http://en.wikipedia.org/wiki/Pitch_shift">pitch-shiftings</a> (one for each voice) and a control gain for each one. Pitch controls are based on <a href="http://en.wikipedia.org/wiki/Equal_temperament">equal-tempered</a> scale semitones, following <img src="http://quicklatex.com/cache/ql_7de56a437ec9e4f6c6a02f7488072756.gif" alt="fund*2^{\frac{p_c}{12}}" title="fund*2^{\frac{p_c}{12}}" /> relation for each voice.</p> <p>&nbsp;<br /> <strong>This was my first version of the network:</strong><br /> <center><img id="image125" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/07/harmonizer-basic-network.png" alt="SMSHarmonizer-basic-network" /></center></p> <p>&nbsp;<br /> &nbsp;<br /> Testing it, my voice never sounded so musical, hehehe&#8230; but still awful, so I was thinking in your ears health and demos are with <a href="http://en.wikipedia.org/wiki/Elvis">Elvis</a> one <img src="http://audiores.uint8.com.ar/blog/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> </p> <p><strong>Disclaimer</strong>: all audio demos are early testing versions (still with artifacts and clicks that should be removed soon)</p> <p>Elvis harmonized demo: <a href="http://audiores.uint8.com.ar/files/audios/smsharmonizer/elvis-harmonized.ogg">elvis-harmonized.ogg</a> (to hear the online/streaming version go <a href="http://audiores.uint8.com.ar/streaming/smsharmonizer1.html">here</a>)</p> <p>&nbsp;<br /> <strong>Prototype:</strong><br /> <center><img id="image126" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/07/harmonizer-prototype4.png" alt="harmonizer prototype" /></center><br /> &nbsp;<br /> &nbsp;<br /> <strong>Configuration:</strong><br /> <center><img id="image128" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/07/harmonizer-config.png" alt="SMSHarmonizer config" /></center><br /> <strong>Note:</strong> demos were done without residual processing because adding residual does not improve results much and adds a lot of overhead.</p> <p>&nbsp;<br /> &nbsp;<br /> Then, following <a href="http://technocalifornia.blogspot.com/">xamat</a>&#8216;s suggestions I also added a <em>detunning</em> effect (and delay, but this one isn&#8217;t working properly yet)</p> <p><center><img id="image127" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/07/harmonizer-detuning-delay-med.png" alt="SMSHarmonizer detuning delay" /></center><br /> &nbsp;<br /> &nbsp;<br /> Elvis harmonized (detunned version) demo: <a href="http://audiores.uint8.com.ar/files/audios/smsharmonizer/elvis-harmonized-detunned.ogg">elvis-harmonized-detunned.ogg</a> (to hear the online/streaming version go <a href="http://audiores.uint8.com.ar/streaming/smsharmonizer1.html">here</a>)</p> <p>&nbsp;<br /> <strong>but wait!</strong> a lot of graphics and this is also a &#8216;coding&#8217; blog!!! here you have some code&#8230; and btw you can see that programming under <a href="http://clam.iua.upf.edu/">CLAM</a> could be very easy once you get the basics&#8230;</p> <p><span></span></p> <div class="codecolorer-container cpp geshi"><div class="cpp codecolorer"><span>bool</span> SMSHarmonizer<span>::</span><span>Do</span><span>&#40;</span> <span>const</span> SpectralPeakArray<span>&amp;</span> inPeaks, <br /> &nbsp; &nbsp; &nbsp; <span>const</span> Fundamental<span>&amp;</span> inFund,<br /> &nbsp; &nbsp; &nbsp; <span>const</span> Spectrum<span>&amp;</span> inSpectrum, <br /> &nbsp; &nbsp; &nbsp; SpectralPeakArray<span>&amp;</span> outPeaks,<br /> &nbsp; &nbsp; &nbsp; Fundamental<span>&amp;</span> outFund,<br /> &nbsp; &nbsp; &nbsp; Spectrum<span>&amp;</span> outSpectrum<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span>&#41;</span><br /> <span>&#123;</span><br /> &nbsp; outPeaks <span>=</span> inPeaks<span>;</span><br /> &nbsp; outFund <span>=</span> inFund<span>;</span><br /> &nbsp; outSpectrum <span>=</span> inSpectrum<span>;</span><br /> <br /> &nbsp; TData gain0 <span>=</span> mInputVoiceGain.<span>GetLastValue</span><span>&#40;</span><span>&#41;</span><span>;</span><br /> &nbsp; mSinusoidalGain.<span>GetInControl</span><span>&#40;</span><span>&quot;Gain&quot;</span><span>&#41;</span>.<span>DoControl</span><span>&#40;</span>gain0<span>&#41;</span><span>;</span><br /> &nbsp; mSinusoidalGain.<span>Do</span><span>&#40;</span>outPeaks,outPeaks<span>&#41;</span><span>;</span><br /> <br /> &nbsp; SpectralPeakArray mtmpPeaks<span>;</span><br /> &nbsp; Fundamental mtmpFund<span>;</span><br /> &nbsp; Spectrum mtmpSpectrum<span>;</span><br /> <br /> &nbsp; <span>for</span> <span>&#40;</span><span>int</span> i<span>=</span><span>0</span><span>;</span> i <span>&lt;</span> mVoicesPitch.<span>Size</span><span>&#40;</span><span>&#41;</span><span>;</span> i<span>++</span><span>&#41;</span><br /> &nbsp; <span>&#123;</span><br /> &nbsp; &nbsp; TData gain <span>=</span> mVoicesGain<span>&#91;</span>i<span>&#93;</span>.<span>GetLastValue</span><span>&#40;</span><span>&#41;</span><span>;</span><br /> &nbsp; &nbsp; <span>if</span> <span>&#40;</span>gain<span>&amp;</span>lt<span>;</span><span>0.01</span><span>&#41;</span> <span>//means voice OFF</span><br /> &nbsp; &nbsp; &nbsp; <span>continue</span><span>;</span><br /> &nbsp; &nbsp; <br /> &nbsp; &nbsp; TData amount <span>=</span> mVoicesPitch<span>&#91;</span>i<span>&#93;</span>.<span>GetLastValue</span><span>&#40;</span><span>&#41;</span> <span>+</span> frand<span>&#40;</span><span>&#41;</span><span>*</span>mVoicesDetuningAmount<span>&#91;</span>i<span>&#93;</span>.<span>GetLastValue</span><span>&#40;</span><span>&#41;</span><span>;</span> <span>//detuning</span><br /> &nbsp; &nbsp; amount <span>=</span> CLAM_pow<span>&#40;</span> <span>2</span>., amount<span>/</span><span>12</span>. <span>&#41;</span><span>;</span> <span>//adjust to equal-tempered scale semitones</span><br /> <br /> &nbsp; &nbsp; mPitchShift.<span>GetInControl</span><span>&#40;</span><span>&quot;PitchSteps&quot;</span><span>&#41;</span>.<span>DoControl</span><span>&#40;</span>amount<span>&#41;</span><span>;</span><br /> &nbsp; &nbsp; mPitchShift.<span>Do</span><span>&#40;</span> inPeaks,<br /> &nbsp; &nbsp; &nbsp; &nbsp; inFund, <br /> &nbsp; &nbsp; &nbsp; &nbsp; inSpectrum,<br /> &nbsp; &nbsp; &nbsp; &nbsp; mtmpPeaks, <br /> &nbsp; &nbsp; &nbsp; &nbsp; mtmpFund,<br /> &nbsp; &nbsp; &nbsp; &nbsp; mtmpSpectrum<span>&#41;</span><span>;</span><br /> &nbsp; <br /> &nbsp; &nbsp; mSinusoidalGain.<span>GetInControl</span><span>&#40;</span><span>&quot;Gain&quot;</span><span>&#41;</span>.<span>DoControl</span><span>&#40;</span>gain<span>&#41;</span><span>;</span><br /> &nbsp; &nbsp; mSinusoidalGain.<span>Do</span><span>&#40;</span>mtmpPeaks,mtmpPeaks<span>&#41;</span><span>;</span><br /> <br /> &nbsp; &nbsp; TData delay <span>=</span> mVoicesDelay<span>&#91;</span>i<span>&#93;</span>.<span>GetLastValue</span><span>&#40;</span><span>&#41;</span><span>;</span><br /> &nbsp; &nbsp; <span>if</span> <span>&#40;</span>delay<span>&gt;</span><span>0</span>.<span>&#41;</span><br /> &nbsp; &nbsp; <span>&#123;</span><br /> &nbsp; &nbsp; &nbsp; mPeaksDelay.<span>GetInControl</span><span>&#40;</span><span>&quot;Delay Control&quot;</span><span>&#41;</span>.<span>DoControl</span><span>&#40;</span>delay<span>&#41;</span><span>;</span><br /> &nbsp; &nbsp; &nbsp; mPeaksDelay.<span>Do</span><span>&#40;</span>mtmpPeaks, mtmpPeaks<span>&#41;</span><span>;</span><br /> &nbsp; &nbsp; <span>&#125;</span><br /> <br /> &nbsp; &nbsp; outPeaks <span>=</span> outPeaks <span>+</span> mtmpPeaks<span>;</span><br /> &nbsp; &nbsp; <br /> &nbsp; &nbsp; <span>if</span> <span>&#40;</span><span>!</span>mIgnoreResidual<span>&#41;</span><br /> &nbsp; &nbsp; &nbsp; mSpectrumAdder.<span>Do</span><span>&#40;</span>outSpectrum, mtmpSpectrum, outSpectrum<span>&#41;</span><span>;</span><br /> &nbsp; <span>&#125;</span><br /> &nbsp; <span>return</span> <span>true</span><span>;</span><br /> <span>&#125;</span></div></div> <p></p> <p>The plan includes add <a href="http://en.wikipedia.org/wiki/MIDI">MIDI</a> control for each voice pitch (then will be easy to control them for example by a keyboard by the same singing person)</p> <p><strong>Next post:</strong> <a href="http://audiores.uint8.com.ar/blog/?p=136">SMSMorph</a>.</p> Tue, 31 Jul 2007 03:13:34 +0000 hordia at audiores blog [en]: Blogging a little about gsoc http://audiores.uint8.com.ar/blog/?p=114 http://audiores.uint8.com.ar/blog/2007/07/30/blogging-a-little-about-gsoc/ <p>From today I&#8217;ll try to start blogging a little more about my gsoc progress&#8230;</p> <p>First of all I was adding bounded limits to many transformations, a task that taught me a lot about <a href="http://clam.iua.upf.edu/">CLAM</a> infrastructure (good suggestion <a href="http://parumi.wordpress.com/">pau</a>!), then I had pitch discretization working in NetworkEditor (new network) and built a prototyped example (this taught me about how to make GUI prototypes with <a href="http://trolltech.com/products/qt/features/designer">QTDesigner</a>). I also worked in some minor bug fix and new features like add set default value to InControls.</p> <p><center><img id="image122" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/07/sms-pitch-discretization-med.png" alt="SMSPitchDiscretization network" /><br /> <img id="image123" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/07/pitch-discretization-prototype.png" alt="SMSPitchDiscretization prototype" /></center></p> <p>&nbsp;<br /> &nbsp;<br /> &nbsp;<br /> Indeed I had wrote a couple of <a href="http://en.wikipedia.org/wiki/Unit_testing">unit tests</a> too <img src="http://audiores.uint8.com.ar/blog/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> (something very easy, but totally new for me). I have to say that <a href="http://clam.iua.upf.edu/testfarm/index.html">testfarm</a> and automatic testing are very cool features for this kind of development.</p> <p><a href="http://clam.iua.upf.edu/testfarm/index.html">Testfarm</a> looks like this:<br /> <center><img id="image129" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/07/test-farm-med.png" alt="Testfarm" /><br /> </center></p> <p>&nbsp;<br /> &nbsp;<br /> &nbsp;<br /> I&#8217;ve also added a new network for <a href="http://en.wikipedia.org/wiki/Hoarseness">hoarseness</a>, I think very useful as first aproach to work with <a href="http://audiores.uint8.com.ar/blog/?p=101">Sinusoidal+Residual</a> models (<a href="http://audiores.uint8.com.ar/blog/?p=101">SMS</a>)</p> <p><center><img id="image115" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/07/hoarseness.png" alt="Hoarseness" /></center></p> <p>&nbsp;<br /> &nbsp;<br /> Anyway, most of my work was with <a href="http://audiores.uint8.com.ar/blog/?p=124">SMS Harmonizer</a>, but that is for a <a href="http://audiores.uint8.com.ar/blog/?p=124">forthcoming post</a>.</p> Mon, 30 Jul 2007 03:05:37 +0000 hordia at audiores blog [en]: Catching (phone) SMS pulse train with CLAM... http://audiores.uint8.com.ar/blog/?p=121 http://audiores.uint8.com.ar/blog/2007/07/28/catching-phone-sms-pulse-train-with-clam/ <p>I was testing my new harmonizer network (with my mic open) and a new <a href="http://en.wikipedia.org/wiki/SMS">SMS</a> arrive to my phone&#8230;</p> <p><center><br /> <a href="javascript:openpopup('http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/07/harmonizer-pulso-marcado.png',1174,783,true)"><img src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/07/harmonizer-pulso-marcado-small.png" alt="sms pulse catched" border="1" /></a><br /> </center></p> <p>funny, don&#8217;t? a perfect pulse&#8230;</p> <p>btw: any of you could give a complete explanation about this kind of effect? I also noticed the same with some speakers (of course only hearing the signal) and I think a big clue are the wires, because with my car speakers that effect only happen when I have plugged my &#8220;cassette-to-mini-plug&#8221; adaptor&#8230;</p> <p><strong>Update:</strong> check &#8220;<a href="http://audiores.uint8.com.ar/blog/?p=141">SMS interference mystery solved</a>&#8221; post.</p> Sat, 28 Jul 2007 03:56:29 +0000 hordia at audiores blog [es]: Ejemplo sencillo de aplicación del modelo sinusoides + residuo (SMS) http://audiores.uint8.com.ar/blog/?p=116 http://audiores.uint8.com.ar/blog/es/2007/07/20/ejemplo-sencillo-de-aplicacion-del-modelo-sinusoides-residuo-sms/ <p>Si alguien leyó el <a href="http://audiores.uint8.com.ar/blog/?p=111">post introductorio a CLAM </a>y le gustó la idea, me parece que es bueno que lean algo sobre el <a href="http://audiores.uint8.com.ar/blog/?p=105">modelo sinusoides + residuo</a>, también llamado <a href="http://audiores.uint8.com.ar/blog/?p=105">SMS</a> (<a href="http://audiores.uint8.com.ar/blog/?p=105">Spectral Modeling Synthesis</a>) ya que muchas de las cosas que tiene se basan en este modelo (que creo que no es muy conocido por el público en general).</p> <p>Un ejemplo práctico y el más fácil e intuitivo de entender que se me ocurre en este momento, consiste en analizar con <a href="http://audiores.uint8.com.ar/blog/?p=105">este modelo</a> (en el sentido de descomponer en sinusoides y residuo) una señal de voz , luego aplicarle una ganancia al residuo y volver a sintetizar. Lo que se obtiene es una voz ronca o disfónica, como la de <a href="http://es.wikipedia.org/wiki/Alfio_Basile">Basile</a> (ej para futboleros argentinos <img src="http://audiores.uint8.com.ar/blog/wp-includes/images/smilies/icon_razz.gif" alt=":P" class="wp-smiley" /> ) o la de <a href="http://es.wikipedia.org/wiki/Louis_Armstrong">Luis Armstrong</a>.</p> <p>Esta red se puede armar fácilmente con el <a href="http://iua-share.upf.es/wikis/clam/index.php/Network_Editor_tutorial">NetworkEditor</a> de <a href="http://clam.iua.upf.edu/">CLAM</a>, y de hecho ya esta disponible en la <a href="http://clam.iua.upf.edu/wikis/clam/index.php/Devel">versión del svn</a>.</p> <p><center><img id="image115" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/07/hoarseness.png" alt="Hoarseness" /></center></p> Fri, 20 Jul 2007 03:37:45 +0000 hordia at audiores blog [es]: Introducción a CLAM http://audiores.uint8.com.ar/blog/?p=111 http://audiores.uint8.com.ar/blog/es/2007/07/12/introduccion-a-clam/ <p><a href="http://clam.iua.upf.edu/">CLAM</a> es un completo framework para hacer investigación y desarrollo sobre audio y música (esto también incluye aplicaciones para usuarios finales). Ofrece un modelo conceptual y herramientas para el análisis, la síntesis y el procesamiento de señales de audio. Tiene una interfaz muy amigable, es <a href="http://es.wikipedia.org/wiki/Software_Libre">Software Libre</a>, multiplataforma y esta escrito en C++ (en muchas de sus aplicaciones utiliza tiempo real).</p> <p>A pesar de que tuvo su origen en una <a href="http://upf.edu/">Universidad de Barcelona</a>, España, la documentación en español sobre este framework es escasa, asi que me decidí a hacer una pequeña introducción sobre las cosas básicas, pero con links (eso si, la mayoria en inglés) para el que quiera ir más allá. Pienso que le puede servir a más de uno para empezar.</p> <p>Básicamente hay dos perfiles: el de usuario final (de las aplicaciones) y el de desarrolladores que quieran escribir sus propios programas sobre este framework.</p> <p>En este momento se compone de 4 programas principales:<br /> &nbsp;<br /> <strong><a href="http://iua-share.upf.es/wikis/clam/index.php/Network_Editor_tutorial">NetworkEditor</a></strong>:<br /> Es una aplicación que permite conectar módulos en forma de red de procesamiento al estilo <a href="http://es.wikipedia.org/wiki/Puredata">pd</a> (pero mucho más amigable), <a href="http://en.wikipedia.org/wiki/Max_%28software%29">MaxMSP</a> o <a href="http://es.wikipedia.org/wiki/Reaktor">Reaktor</a> (o para los que usan <a href="http://es.wikipedia.org/wiki/Matlab">matlab</a>, tipo <a href="http://en.wikipedia.org/wiki/Simulink">simulink</a>). Estas redes se ejecutan en tiempo real y se pueden correr con <a href="http://en.wikipedia.org/wiki/JACK_Audio_Connection_Kit">jack</a>, <a href="http://www.portaudio.com/">portaudio</a>, <a href="http://en.wikipedia.org/wiki/LADSPA">LADSPA</a> o <a href="http://es.wikipedia.org/wiki/VST">VST</a> como backend.<br /> Una de las características más interesantes es que esta red se puede exportar y después correr con una interfaz gráfica diseñada con <a href="http://trolltech.com/products/qt/features/designer">QTDesigner</a> (ambos programas exportan a un <a href="http://es.wikipedia.org/wiki/XML">xml</a> que luego se corre con la aplicación <strong>Prototyper</strong>)</p> <p>Recomiendo ver esta presentación: &#8220;<a href="http://clam.iua.upf.edu/download/misc/lac07_slides_Garcia_Arumi_Amatriain.pdf">Visual prototyping of audio applications</a>&#8221;</p> <p>Es decir, un usuario que no es programador puede armar complejos plugins o aplicaciones sin escribir una sola línea de código. También es muy útil para armar prototipos de futuras aplicaciones o desarrollos.<br /> En este momento se esta integrando con <a href="http://www.ladspa.org/">LADSPA</a>, <a href="http://lv2plug.in/">lv2</a> y se planea reforzar aún más la posibilidad de usar plugins externos (como un módulo más) dentro del <strong>NetworkEditor</strong> y vicerversa, usar estas redes como plugins en otras aplicaciones.</p> <p>Para el que quiera empezar, recomiendo esto: <ul> <li><a href="http://iua-share.upf.es/wikis/clam/index.php/Network_Editor_tutorial">NetworkEditor tutorial</a></li> <li>Jugar con las varias redes de ejemplo que están en el directorio &#8216;example-data&#8217;</li> </ul> <p>&nbsp;<br /> <strong><a href="http://iua-share.upf.es/wikis/clam/index.php/Music_Annotator_tutorial">Annotator</a></strong>:<br /> Es un programa para hacer transcripciones, en el estilo de <a href="http://www.sonicvisualiser.org/">Sonic Visualizer</a>. Muy potente y con características que lo hacen único.</p> <p>Para conocer más: <ul> <li><a href="http://iua-share.upf.es/wikis/clam/index.php/Music_Annotator_tutorial">Annotator tutorial</a></li> <li><a href="http://www.genbeta.com/2006/05/18-clam-annotator-reconocedor-de-acordes-en-canciones">Annotator: reconocedor de acordes en canciones</a></li> <li><a href="http://www.linuxjournal.com/node/1000239">Artículo en linuxjournal</a></li> <li><a href="http://www.musicgadgets.net/2006/05/09/clam-music-annotator-chord-analyzer">CLAM Music Annotator, chord analyzer</a></li> </ul> <p>&nbsp;<br /> <strong><a href="http://iua-share.upf.es/wikis/clam/index.php/SMSTools_tutorial">SMSTools</a></strong>:<br /> Un analizador de señales de audio en el estilo de <a href="http://www.speech.kth.se/wavesurfer/">wavesurfer</a> que soporta diferentes tipos de visualización como spectogramas, y todas las derivadas del <a href="http://audiores.uint8.com.ar/blog/?p=105">módelo Sinusoides + Residuo</a> asi como trasnformaciones complejas basadas en este modelo (gender change, pitch-shifting, morph, etc) y muchas otras cosas más (ver <a href="http://iua-share.upf.es/wikis/clam/index.php/SMSTools_tutorial">tutorial</a>).</p> <p>&nbsp;<br /> <strong>Voice2MIDI</strong>:<br /> Convierte voz en MIDI. Esta comentado <a href="http://www.linuxjournal.com/node/1000147/">en este artículo de linuxjournal</a>.</p> <p>&nbsp;<br /> Para <strong>desarrolladores</strong>, sirve como entorno para realizar sus propias aplicaciones de forma fácil o como herramienta para hacer prototipos de sus futuras implementaciones.</p> <p>Recomiendo:</p> <ul> <li>Empezar por la página wiki de <a href="http://clam.iua.upf.edu/wikis/clam/index.php/Devel">desarrollo</a></li> <li>Anotarse en la <a href="http://clam.iua.upf.edu/mailinglist.html">lista de desarrollo</a> y unirse al canal #clam en freenode</li> <li>Leer estos tutoriales &#8220;<a href="http://clam.iua.upf.edu/wikis/clam/index.php/Constructing_and_playing_a_simple_network">Constructing and playing a simple network</a>&#8220;, &#8220;<a href="http://clam.iua.upf.edu/wikis/clam/index.php/Loading_and_playing_a_simple_network">Loading and playing a simple network</a>&#8220;, &#8220;<a href="http://clam.iua.upf.edu/wikis/clam/index.php/Creating_a_minimal_processing_object">Creating a minimal processing object</a>&#8221; (hay varios más)</li> <li>El código esta bastante bien documentado, se puede consultar la <a href="http://clam.iua.upf.edu/doc/CLAM-devel-doxygen/">versión online</a></li> </ul> <p>Si uno quiere, puede aportar al proyecto mandando &#8216;patchs&#8217; de código a los desarrolladores principales y hasta convertirse en &#8216;developer&#8217; luego de haber mandado varios de ellos.</p> <p>&nbsp;<br /> En fin, es un proyecto bastante grande y ambicioso. Incluso hay miles de desarrollos más sobre el mismo que no están en el &#8216;paquete principal&#8217;, pero me pareció útil dar un panorama general porque tal vez sea tan abarcativo que maree un poco para el que recién escucha algo de él.</p> <p>Como ya dije, es multiplataforma y esta disponible para GNU/Linux (con paquetes para varias distribuciones), Windows y Mac (<a href="http://clam.iua.upf.edu/download.html">ver más y descargar</a>)</p> <p>Otro links interesantes:</p> <ul> <li><a href="http://clam.iua.upf.edu/">Página principal</a></li> <li><a href="http://clam.iua.upf.edu/wikis/clam/index.php/Main_Page">Wiki</a></li> <li><a href="http://clam.iua.upf.edu/wikis/clam/index.php/Approaching_CLAM">Approaching CLAM, where to start</a></li> <li><a href="http://www.linuxjournal.com/node/1000239">Artículo en linuxjournal</a></li> </ul></p></p> Thu, 12 Jul 2007 06:58:18 +0000 Programación, dsp, audio y música http://h.ordia.com.ar/blog/index.php?entry=entry070522-213036 http://h.ordia.com.ar/blog/index.php?entry=entry070522-213036 Este lunes empiezo con el <a href="http://code.google.com/soc/clam/appinfo.html?csaid=BFDEFF29EEB54EC7" target="_blank">google summer of code</a>, un programa destinado a sustentar el <a href="http://es.wikipedia.org/wiki/Software_Libre" target="_blank">Software Libre</a> y el <a href="http://es.wikipedia.org/wiki/Open_source" target="_blank">Código Abierto</a> promocionado por <a href="http://www.google.com" target="_blank">Google</a>. Mi proyecto esta relacionado con transformaciones espectrales en tiempo real para el framework <a href="http://clam.iua.upf.edu/" target="_blank">CLAM</a>, para más información sobre esto consultar esta página: <a href="http://h.ordia.com.ar/blog/GSoC2007.php">GSoC2007: &quot;Real-time spectral transformations&quot;</a>.<br /><br />De paso aviso que de ahora en más todos los artículos que escriba sobre cosas relacionadas con audio y música van a estar en esta dirección: <a href="http://audiores.uint8.com.ar/blog" target="_blank">http://audiores.uint8.com.ar/blog</a> y en <a href="http://h.ordia.com.ar/blog" target="_blank">este blog</a> va a aparecer poco sobre estos temas (algún que otro post duplicado tomado del blog mencionado o lo que cuelgue en la sección &quot;<a href="http://h.ordia.com.ar/blog/static.php?page=proyectos">proyectos</a>&quot;)<br /><br />Otras cosas relacionadas con el audio que recomiendo/colaboro:<br /><br /><a href="http://clam.iua.upf.edu/" target="_blank">CLAM</a>: completo framework multiplataforma <a href="http://es.wikipedia.org/wiki/Software_Libre" target="_blank">Software Libre</a> para trabajar con el audio en general y música. Entre otras cosas permite el prototipado rápido de aplicaciones mediante herramientas visuales de control de flujo.<br /><br /><a href="http://musix.org.ar/" target="_blank">Musix GNU+Linux</a>: distribución para hacer música y trabajar con audio y multimedia en general orientada al usuario.<br /><br /><a href="http://groups.yahoo.com/group/buenasenal" target="_blank">Grupo Buena Señal</a>: grupo / lista de correo en español que trata temas sobre programación y procesamiento de señales aplicados al audio y la música.<div class="techtags">Tech Tags: <a href="http://technorati.com/tag/c++" rel="tag"><img src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=cpp" alt=" " />c++</a> <a href="http://technorati.com/tag/programming" rel="tag"><img src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=programming" alt=" " />programming</a> <a href="http://technorati.com/tag/gnu/linux" rel="tag"><img src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=gnu-linux" alt=" " />gnu/linux</a> <a href="http://technorati.com/tag/audio" rel="tag"><img src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=audio" alt=" " />audio</a> <a href="http://technorati.com/tag/dsp" rel="tag"><img src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=dsp" alt=" " />dsp</a></div> Wed, 23 May 2007 00:30:36 +0000 hordia at audiores blog [en]: My GSoC2007 application: "Real-time spectral transformations" http://audiores.uint8.com.ar/blog/?p=103 http://audiores.uint8.com.ar/blog/2007/05/20/my-gsoc2007-application-real-time-spectral-transformations/ <p>Next Monday finally starts the <a href="http://code.google.com/soc/">google summer of code</a>, here my finally accepted <a href="http://code.google.com/soc/clam/appinfo.html?csaid=BFDEFF29EEB54EC7">application</a>:</p> <blockquote><p><strong>Title</strong>: Real-time spectral transformations<br /> <strong>Mentor</strong>: <a href="http://parumi.wordpress.com/">Pau Arumí Albó</a><br /> <strong>License</strong>: <a href="http://creativecommons.org/licenses/GPL/2.0/">GNU General Public License</a> (<a href="http://creativecommons.org/licenses/GPL/2.0/">GPL</a>)<br /> <strong>Abstract</strong>: Revamp all CLAM SMS transformations. Turn real-time all those still aren&#8217;t and have them working on Network Editor. For example: Harmonizer, Morph and Time Stretch. Make nice prototypes for use them with Prototyper and have special focus on some. Also make real-time Voice2Midi and all those widgets which can be needed. </p></blockquote> <p><strong>Some words more about this</strong>:</p> <ul> <li>Port it to real-time and <a href="http://clam.iua.upf.edu/wikis/clam/index.php/Network_Editor_tutorial">NetworkEditor</a> these spectral transformations: Harmonizer, morph, <a href="http://en.wikipedia.org/wiki/Time_stretching">time-stretch</a> and pitch-discretization.</li> <li>Fix <a href="http://vokicodder.blogspot.com/2007/04/realtime-voice-gender-change.html">gender change</a> (already real-time, residual improvement)</li> <li>Make a harmonizer prototype with sliders to control each &#8220;voice&#8221; gain and the option of control them by midi too.</li> <li>Realtime <a href="http://www.create.ucsb.edu/~xavier/PFC/imosquera.pdf">Voice2MIDI</a>. Piano-roll widget for <a href="http://clam.iua.upf.edu/wikis/clam/index.php/Network_Editor_tutorial">NetworkEditor</a>/<a href="http://clam.iua.upf.edu/download/misc/lac07_slides_Garcia_Arumi_Amatriain.pdf">Prototyper</a>.</li> <li>More general improvements on SMS transformations over issues that can arise during the development of the project.</li> </ul> <p>Last days I was mainly reading about SMS transformations and its <a href="http://audiores.uint8.com.ar/blog/?p=101">model</a> and the &#8220;<a href="http://www.dafx.de/">Spectral Processing</a>&#8221; chapter of the <a href="http://www.dafx.de/">DAFX</a> (<a href="http://www.dafx.de/">Digital Audio Effects</a>) book.</p> <p>More news and details about this project <a href="http://h.ordia.com.ar/blog/GSoC2007.php">here</a> soon.</p> Mon, 21 May 2007 02:55:32 +0000 hordia at audiores blog [es]: Modelo de sinusoides más residuo http://audiores.uint8.com.ar/blog/?p=105 http://audiores.uint8.com.ar/blog/es/2007/05/20/modelo-de-sinusoides-mas-residuo/ <p>Es un modelo de análisis/síntesis para procesamiento espectral orientado a aplicaciones musicales y de audio. Se puede ver como una generalización de la <a href="http://en.wikipedia.org/wiki/STFT">STFT</a> (transformada de tiempo corto) y los modelos sinusoidales. Básicamente añade flexibilidad a la <a href="http://en.wikipedia.org/wiki/STFT">STFT</a> manteniendo buena fidelidad de sonido y una representación eficiente.</p> <p>Este modelo también es conocido como <a href="http://www.iua.upf.es/mtg/sms/">SMS</a> (<a href="http://www.iua.upf.es/mtg/sms/">Spectral Modeling Synthesis</a>) y como <a href="http://en.wikipedia.org/wiki/HILN">HILN</a> en el contexto de <a href="http://en.wikipedia.org/wiki/MPEG4">MPEG4</a>.</p> <p>Básicamente esta modelado como la suma de un conjunto de sinusoides (los &#8220;<a href="http://es.wikipedia.org/wiki/Sobretono">sobretonos</a>&#8221; estables armónicos o no, las componentes determinísticas del sonido) más el residuo de ruido (modelado como un <a href="http://es.wikipedia.org/wiki/Proceso_estoc%C3%A1stico">proceso estocástico</a>) como dos componentes separadas:</p> <p><img src="http://quicklatex.com/cache/ql_522c595214e80d353ed7445c5887db9f.gif" alt=" s(t) = \sum_{r=1}^R A_r(t) cos[ \Phi_r(t)] + e(t) " title=" s(t) = \sum_{r=1}^R A_r(t) cos[ \Phi_r(t)] + e(t) " /></p> <p>donde <img src="http://quicklatex.com/cache/ql_4a967c9b03911bf4e138b0a0813f39cb.gif" alt="A_r(t)" title="A_r(t)" /> y <img src="http://quicklatex.com/cache/ql_8ba84507378265ac5bec60f3b466f06f.gif" alt="\Phi_r(t)" title="\Phi_r(t)" /> son la amplitud y fase instantaneas de la <img src="http://quicklatex.com/cache/ql_dcc642ed3e03be3b687e3778bd3aad87.gif" alt="r^{th}" title="r^{th}" /> sinusoide respectivamente, y <img src="http://quicklatex.com/cache/ql_6f8ef0bdc3a65f335054981b50cac767.gif" alt="e(t)" title="e(t)" /> es la componente de ruido en el tiempo <img src="http://quicklatex.com/cache/ql_e358efa489f58062f10dd7316b65649e.gif" alt="t" title="t" />.<br /> La fase instantanea de la ecuación es: <img src="http://quicklatex.com/cache/ql_2ffb8df64f76939e71657390104e47dd.gif" alt=" \Phi_r(t) = \int_0^t w_r(\tau) d\tau " title=" \Phi_r(t) = \int_0^t w_r(\tau) d\tau " /></p> <p><center><img id="image102" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/05/500px-smsanalysis.png" alt="SMS analysis" /></center></p> <p><center><br /> </center><br /> El primer paso del análisis detecta los <a href="http://es.wikipedia.org/wiki/Sobretono">sobretonos</a> presentes en el espectro y los representa con sinusoides que varian con el tiempo . Luego se le resta al sonido original las componentes sinusoidales para obtener el &#8220;residuo&#8221; (ver el diagrama de bloques).</p> <p>La señal residual es modelada como un <a href="http://es.wikipedia.org/wiki/Proceso_estoc%C3%A1stico">proceso estocástico</a> y se describe como <a href="http://es.wikipedia.org/wiki/Ruido_blanco">ruido blanco</a> filtrado:</p> <p><img src="http://quicklatex.com/cache/ql_153a8079f578309e3d8fe15ca804df82.gif" alt=" e(t) = \int_0^t h(t,\tau) u(\tau) d\tau " title=" e(t) = \int_0^t h(t,\tau) u(\tau) d\tau " /></p> <p>donde <img src="http://quicklatex.com/cache/ql_a0d664fdd9965ace52f10dd8d03aea2d.gif" alt="u(t)" title="u(t)" /> es <a href="http://es.wikipedia.org/wiki/Ruido_blanco">ruido blanco</a> y <img src="http://quicklatex.com/cache/ql_bcbf4cdaded9686209a41db064b9c679.gif" alt="h(t,\tau)" title="h(t,\tau)" /> es la <a href="http://es.wikipedia.org/wiki/Respuesta_impulsiva">respuesta al impulso</a> de un filtro que varia con el tiempo evaluada en el instante <img src="http://quicklatex.com/cache/ql_e358efa489f58062f10dd7316b65649e.gif" alt="t" title="t" />.</p> <p>El residuo comprende la energía debida a vibraciones no estacionarias y a cualquier otra componente energética de naturaleza no sinusoidal.</p> <p>Algunas áreas donde este modelo se puede aplicar:</p> <ul> <li>análisis</li> <li>compresión de sonido</li> <li>separación de fuentes de sonido</li> <li>acústica musical</li> <li>percepción musical</li> </ul> <p><center><br /> </center><strong>Algunos links con más información sobre este modelo</strong>:</p> <ul> <li><a href="http://www.iua.upf.es/~xserra">Xavier Serra</a>: &#8220;<a href="http://www.iua.upf.es/~xserra/articles/msm/">Musical Sound Modeling With Sinusoids Plus Noise</a>&#8220;.</li> <li><a href="http://www.iua.upf.es/~xamat/Thesis/">Tesis de Xavier Amatriain</a>: &#8220;<a href="http://www.iua.upf.es/~xamat/Thesis/html/node231.html">Sinusoidal plus Residual Model</a>&#8220;</li> <li>Libro <a href="http://www.dafx.de/">DAFX</a>: <a href="http://www.dafx.de/">Chapter 10 &#8211; Spectral Processing</a>.</li> <li>CLAM SMSTools: <a href="http://iua-share.upf.edu/wikis/clam/index.php/SMSTools_tutorial">Introduction tutorial</a>, <a href="http://iua-share.upf.edu/wikis/clam/index.php/SMSToolsDetails">more details</a>.</li> </ul> <p><center><br /> </center>Este tipo de cosas me hace acordar que tengo que postear sobre la tesis de <a href="http://www.jvuletich.org/aboutMe.html">Juan Vuletich</a>: &#8220;<a href="http://audiores.uint8.com.ar/files/doc/TesisVuletich.pdf">Nuevas bases para el procesamiento de música en el dominio tiempo-frecuencia</a>&#8221; (<a href="http://audiores.uint8.com.ar/files/doc/Spie2003Vuletich.pdf">aca un paper</a> sobre la misma idea) un enfoque diferente para este tipo de cosas (<a href="http://es.wikipedia.org/wiki/Wavelets">wavelets</a>) que pienso que merece (como mínimo) un post entero lo antes posible.<center><br /> </center></p> Mon, 21 May 2007 02:50:07 +0000 hordia at audiores blog [en]: Sinusoidal plus Residual Model http://audiores.uint8.com.ar/blog/?p=101 http://audiores.uint8.com.ar/blog/2007/05/20/sinusoidal-plus-residual-model/ <p>Is an analysis/synthesis model for spectral processing oriented to audio and music applications. We can see it as a generalization of <a href="http://en.wikipedia.org/wiki/STFT">STFT</a> and sinusoidal models, basically adds more flexibility to <a href="http://en.wikipedia.org/wiki/STFT">STFT</a> while maintaining a good sound fidelity and efficient representation.</p> <p>This model is also known as <a href="http://www.iua.upf.es/mtg/sms/">SMS</a> (<a href="http://www.iua.upf.es/mtg/sms/">Spectral Modeling Synthesis</a>) and <a href="http://en.wikipedia.org/wiki/HILN">HILN</a> in the context of <a href="http://en.wikipedia.org/wiki/MPEG4">MPEG4</a>.</p> <p>Basically is modeled as the sum of a set of sinusoids (only the stable <a href="http://en.wikipedia.org/wiki/Overtone">partials</a> of a sound, harmonics or not, deterministic components) plus a noise residual (modeled as <a href="http://en.wikipedia.org/wiki/Stochastic_process">stochastic process</a>) as two separate components:</p> <p><img src="http://quicklatex.com/cache/ql_522c595214e80d353ed7445c5887db9f.gif" alt=" s(t) = \sum_{r=1}^R A_r(t) cos[ \Phi_r(t)] + e(t) " title=" s(t) = \sum_{r=1}^R A_r(t) cos[ \Phi_r(t)] + e(t) " /></p> <p>where <img src="http://quicklatex.com/cache/ql_4a967c9b03911bf4e138b0a0813f39cb.gif" alt="A_r(t)" title="A_r(t)" /> and <img src="http://quicklatex.com/cache/ql_8ba84507378265ac5bec60f3b466f06f.gif" alt="\Phi_r(t)" title="\Phi_r(t)" /> are the instantaneous amplitude and phase of the <img src="http://quicklatex.com/cache/ql_dcc642ed3e03be3b687e3778bd3aad87.gif" alt="r^{th}" title="r^{th}" /> sinusoid respectively, and <img src="http://quicklatex.com/cache/ql_6f8ef0bdc3a65f335054981b50cac767.gif" alt="e(t)" title="e(t)" /> is the noise component at time <img src="http://quicklatex.com/cache/ql_e358efa489f58062f10dd7316b65649e.gif" alt="t" title="t" />.<br /> The instantaneous phase of the equation is: <img src="http://quicklatex.com/cache/ql_2ffb8df64f76939e71657390104e47dd.gif" alt=" \Phi_r(t) = \int_0^t w_r(\tau) d\tau " title=" \Phi_r(t) = \int_0^t w_r(\tau) d\tau " /></p> <p><center><img id="image102" src="http://audiores.uint8.com.ar/blog/wp-content/uploads/2007/05/500px-smsanalysis.png" alt="SMS analysis" /></center></p> <p><center><br /> </center><br /> The first analysis step detects partials present in the spectra and represents them with time-varying sinusoids. Then the sinusoidal component is subtracted from the original sound to obtain the remaining &#8220;residual&#8221; (see the block diagram).</p> <p>This residual signal is modeled as <a href="http://en.wikipedia.org/wiki/Stochastic_process">stochastic process</a> and is described as filtered <a href="http://en.wikipedia.org/wiki/White_noise">white noise</a>:</p> <p><img src="http://quicklatex.com/cache/ql_153a8079f578309e3d8fe15ca804df82.gif" alt=" e(t) = \int_0^t h(t,\tau) u(\tau) d\tau " title=" e(t) = \int_0^t h(t,\tau) u(\tau) d\tau " /></p> <p>where <img src="http://quicklatex.com/cache/ql_a0d664fdd9965ace52f10dd8d03aea2d.gif" alt="u(t)" title="u(t)" /> is <a href="http://en.wikipedia.org/wiki/White_noise">white noise</a> and <img src="http://quicklatex.com/cache/ql_bcbf4cdaded9686209a41db064b9c679.gif" alt="h(t,\tau)" title="h(t,\tau)" /> is the response of a time varying filter to an <a href="http://en.wikipedia.org/wiki/Impulse_response">impulse</a> at time <img src="http://quicklatex.com/cache/ql_e358efa489f58062f10dd7316b65649e.gif" alt="t" title="t" />.</p> <p>The residual comprises the energy produced by not stationary vibrations plus any other energy component that is not sinusoidal in nature.</p> <p>Some areas where this model could be applied:</p> <ul> <li>analysis</li> <li>sound compression</li> <li>sound source separation</li> <li>musical acoustics</li> <li>music perception</li> </ul> <p><center><br /> </center><strong>Some links with more info about this model</strong>:</p> <ul> <li><a href="http://www.iua.upf.es/~xserra">Xavier Serra</a>: &#8220;<a href="http://www.iua.upf.es/~xserra/articles/msm/">Musical Sound Modeling With Sinusoids Plus Noise</a>&#8220;.</li> <li><a href="http://www.iua.upf.es/~xamat/Thesis/">Xavier Amatriain&#8217;s Thesis</a>: &#8220;<a href="http://www.iua.upf.es/~xamat/Thesis/html/node231.html">Sinusoidal plus Residual Model</a>&#8220;</li> <li><a href="http://www.dafx.de/">DAFX</a> book: <a href="http://www.dafx.de/">Chapter 10 &#8211; Spectral Processing</a>.</li> <li>CLAM SMSTools: <a href="http://iua-share.upf.edu/wikis/clam/index.php/SMSTools_tutorial">Introduction tutorial</a>, <a href="http://iua-share.upf.edu/wikis/clam/index.php/SMSToolsDetails">more details</a>.</li> </ul> <p><center><br /> </center>These kind of things remembers me that I have to post about <a href="http://www.jvuletich.org/aboutMe.html">Juan Vuletich</a> thesis: &#8220;<a href="http://audiores.uint8.com.ar/files/doc/TesisVuletich.pdf">New bases for music processing in the time-frequency domain</a>&#8221; (ATM only in Spanish, <a href="http://audiores.uint8.com.ar/files/doc/Spie2003Vuletich.pdf">here a paper</a> about the same idea) a different approach of those kind of things (<a href="http://en.wikipedia.org/wiki/Wavelets">wavelets</a>) which I think deserves a (at least) an entire post ASAP.<center><br /> </center></p> Mon, 21 May 2007 02:40:08 +0000 hordia at audiores blog [en]: Starts a ‘summer' of code for me http://audiores.uint8.com.ar/blog/?p=99 http://audiores.uint8.com.ar/blog/2007/04/17/starts-a-summer-of-code-for-me/ <p>Last week I got accepted into <a href="http://code.google.com/soc/">google&#8217;s summer of code</a> program, so I will be with this on summer&#8230; ehm s/summer/winter here&#8230; <img src="http://audiores.uint8.com.ar/blog/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> </p> <p>I&#8217;m very happy with that!</p> <p>Google granted 6 students to CLAM, so it&#8217;s a big success!!! All applications are listed <a href="http://code.google.com/soc/clam/about.html">here</a>.</p> <p>The scope of my app may vary (or change totally! see below) because I still have to have a meeting with my mentor and adjust some details. Indeed seems that maybe <strong>could be another of my gsoc&#8217;s applications</strong>. Beyond that, of course it will be released under <a href="http://creativecommons.org/licenses/GPL/2.0/">GPL</a>.</p> <p><strike>ATM, it will be</strike>:<br /> <blockquote><strong>Title</strong>: <strike>Educative Vowel Synthesizer</strike><br /> <strong>Mentor</strong>: <a href="http://parumi.wordpress.com/">Pau Arumí Albó</a><br /> <strong>License</strong>: <a href="http://creativecommons.org/licenses/GPL/2.0/">GNU General Public License</a> (<a href="http://creativecommons.org/licenses/GPL/2.0/">GPL</a>)<br /> <strong>Abstract</strong>: <strike>The main goal of this project is to build an application that let the user to synthesizing different vowels by placing a point within the vowel triangle, and the reverse, given an input vowel from the microphone place a dot on the triangle. For example, this is useful to students who can check their pronunciation. This includes displaying the mouth position for the vowel, visualizing the spectral peaks (and identify the effect), changing the pitch and vocal track characteristics.<br /> A teacher could limit the set of vowels to the ones used for a particular language such as Catalan or English, so that the students just see the relevant ones for the exercise. Also includes some didactict games about identify the vowels by his spectral content.</strike></blockquote></p> <p><strike>I really don&#8217;t know ATM if it&#8217;s going to change or not, but that is what the <a href="http://code.google.com/soc/clam/appinfo.html?csaid=BFDEFF29EEB54EC7">gsoc page says so far</a> <img src="http://audiores.uint8.com.ar/blog/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> </strike></p> <p><strong>CONFIRMED</strong>: it&#8217;s going to change, <strike>maybe</strike> something with real time sms transformations and real time voice2midi, news <strike>soon&#8230;</strike> <a href="http://audiores.uint8.com.ar/blog/?p=103">here</a>: &#8220;<a href="http://audiores.uint8.com.ar/blog/?p=103">My GSoC2007 application: Real-time spectral transformations</a>&#8221;</p> <p>My mentor will be <a href="http://parumi.wordpress.com/">Pau Arumí Albó</a>, one of the main developers of <a href="http://clam.iua.upf.edu/">CLAM</a> project and part of <a href="http://upf.edu/">Universitat Pompeu Fabra (Barcelona, Spain)</a>. I meet him recently on irc channels and mailing lists and he seems very kind. He&#8217;s a free software enthusiastic and <a href="http://www.iua.upf.edu/~parumi/ES1/">teachs software engineering</a>. He also developed other free software like <a href="http://iua-share.upf.edu/wikis/testfarm">testfarm</a> and <a href="http://www.iua.upf.edu/~parumi/MiniCppUnit">MiniCppUnit</a> and has <a href="http://www.iua.upf.edu/mtg/publicacions.php?lng=eng&authorid=66&aul=3">many publications</a>. Recently, for example, he was at <a href="http://www.kgw.tu-berlin.de/~lac2007/program_time.shtml#saturday">LAC2007 conference</a> with <a href="http://vokicodder.blogspot.com/">David García Garzón</a> both showing the work: &#8220;<a href="http://clam.iua.upf.edu/download/misc/lac07_slides_Garcia_Arumi_Amatriain.pdf">Visual prototyping of audio applications</a>&#8220;.</p> <p>I had heard some about CLAM before this GSoC (i had played a little with it too) and indeed starting developing with was in my (long)ToDo. But i didn&#8217;t knew that they were open to new developers too, so as fast i get know about its GSoC participation (the bad thing was that was not much before the deadline) i had no doubts about try to apply. For luck, google extended the deadline a little and the time was enough to present (&#8216;at least only&#8217;) 4 app&#8217;s, but i had presented 20 (GSoC limit!) if i had enought time. That time i was thinking, researching about CLAM, imagining, reading some source code and documentation and writing proposals of course, hehehe. Seems that i overstating but is true <img src="http://audiores.uint8.com.ar/blog/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> I had discarded from first the idea of apply to a different organization.</p> <p>My first goal was to have a good opportunity to develop to or under this framework and even I was decided to keep close to the project beyond the results. I came here to learn a lot and give my best. They gave me a warm welocome from the beginning. I wish to be able continue developing to CLAM after completing GSoC (and completing it well of course!). </p> <p>Some days ago, I already introduced me to the CLAM community <a href="http://audiores.uint8.com.ar/blog/?p=98">here</a> and also I have become member of his <a href="http://clam.iua.upf.edu/planet/index.html">planet</a>! Great!</p> <p>And last but not least i want to express all my thanks for the opportunity to the entire CLAM development group! thanks!!!</p> Tue, 17 Apr 2007 03:35:07 +0000 hordia at audiores blog [en]: Hello CLAM! http://audiores.uint8.com.ar/blog/?p=98 http://audiores.uint8.com.ar/blog/2007/04/11/hello-clam/ <p>Hi all! I&#8217;m <a href="http://h.ordia.com.ar/">Hernán Ordiales</a>, this is my first post to <a href="http://clam.iua.upf.edu/planet/index.html">Planet CLAM</a> but not my first post at all, I&#8217;m <a href="http://h.ordia.com.ar/blog">blogging</a> since last year but mostly in <a href="http://audiores.uint8.com.ar/blog/?cat=35">spanish</a>&#8230; </p> <p>what to say about me?<br /> I live in Buenos Aires, Argentina. Among other things, I love programming, audio and music. I&#8217;m studying (mainly)Electronics Engineering and Computer Engineering at <a href="http://www.fi.uba.ar/">FIUBA</a> and for luck (and my fun) I&#8217;ve a work in a project related with audio, programming and GNU/Linux. I also have interest in communications (networking, protocols, etc) and all kind of digital systems.</p> <p>I enjoy very much using/developing under <a href="http://www.fsf.org/">Free Software</a> (of course GNU/Linux is my OS of choice) and I also help with the linux audio distribution called <a href="http://www.musix.org.ar">Musix GNU+Linux.</a></p> <p>After a long time of follow <a href="http://technocalifornia.blogspot.com/index.html">Xavier Amatriain blog</a>, last weeks I&#8217;m started to get involved with <a href="http://clam.iua.upf.edu/">CLAM</a> and with every step I&#8217;m discovering a lot of new wonderful things and designs that it had never seen by me in another audio projects.<br /> I expect to contribute to and/or develop under <a href="http://clam.iua.upf.edu/">CLAM</a> ASAP. I think I&#8217;ll start blogging about my progress or new things developed with this framework soon (among other things).</p> <p>For those who still don&#8217;t know much about <a href="http://clam.iua.upf.edu/">CLAM</a> project, I&#8217;d recommend you:</p> <ul> <li><a href="http://clam.iua.upf.edu/index.html">CLAM web</a>, <a href="http://clam.iua.upf.edu/wikis/clam/index.php/Main_Page">wiki</a>, <a href="http://clam.iua.upf.edu/doc.html">general doc</a> and <a href="http://clam.iua.upf.edu/screenshots.html">screenshots</a>.</li> <li><a href="http://www.iua.upf.es/~xamat/Thesis">Xavier Amatriain&#8217;s PhD Thesis</a>, this paper about design patterns: &#8220;<a href="http://hillside.net/plop/2006/Papers/Library/audioPatterns_20060809.pdf">A Data-flow Pattern Catalog for Sound and Music Computing</a>&#8221; and <a href="http://www.iua.upf.es/mtg/publicacions.php?lng=cat&authorid=&authorlink=&search=clam">many other publications</a>.</li> <li>Main developers blogs: <a href="http://technocalifornia.blogspot.com/index.html">Xavier Amatriain</a>, <a href="http://parumi.wordpress.com/">Pau Arumi</a> and <a href="http://vokicodder.blogspot.com/">David Garcia</a>.</li> </ul> <p>Here, the &#8220;magic sentence&#8221; to start developing:</p> <div class="codecolorer-container text geshi"><div class="text codecolorer">svn co http://iua-share.upf.edu/svn/clam/trunk clam</div></div> <p>I also encourage you suscribe to <a href="http://clam.iua.upf.edu/mailinglist.html">user &#038; dev mailing lists</a>, and log in #clam channel at <a href="http://freenode.net/">freenode.net</a>!</p> <p>See you!</p> Wed, 11 Apr 2007 18:46:42 +0000