<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:html="http://www.w3.org/1999/html" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>aubio</title><link>http://aubio.org/news</link><description>a library for audio labelling</description><language>en</language><ttl>60</ttl><dc:creator>Paul Brossier</dc:creator><admin:generatorAgent rdf:resource="http://pyblosxom.sourceforge.net/"/><admin:errorReportsTo rdf:resource="mailto:piem@aubio.org"/><item><title>Meet gst-aubio</title><guid isPermaLink="false">20091212-1552_meet_gst-aubio</guid><link>http://aubio.org/news/20091212-1552_meet_gst-aubio</link><description>I have just pushed the Gstreamer plugin for aubio to git.aubio.org . No official release just yet, but you can ...</description><content:encoded><![CDATA[
<div class="figure">

<p> <a href="http://gstreamer.freedesktop.org"><img
src="/images/gstreamer-logo.png" alt="Gstreamer logo"/></a> </p>

</div>

<p>I have just pushed the <a
href="http://gstreamer.freedesktop.org">Gstreamer</a> plugin for aubio to <a
href="http://git.aubio.org">git.aubio.org</a>. No official release just yet,
but you can fetch the latest <a
href="http://git.aubio.org/?p=gst-aubio;a=summary">gst-aubio branch</a>
using:</p>

<blockquote>
<pre>
git clone git://git.aubio.org/git/gst-aubio
</pre>
</blockquote>

<p>So far there are two elements: <code>aubiopitch</code> and
<code>aubiotempo</code>. Here is an example of how to use them:</p>

<blockquote>
<pre>
gst-launch-0.10 filesrc location=uri://to/soundormovie.file ! decodebin \
   ! audioconvert ! aubiopitch silent=FALSE ! aubiotempo silent=FALSE \
   ! fakesink
</pre>
</blockquote>

<p>Many thanks to the nice folks at <a href="http://ubicast.eu">Ubicast</a>,
who sponsored the development of these elements. They used it for instance to
automate camera switching on the video stream of their party events, but also
to control lights and camera. Check out <a
href="http://fr.justin.tv/hackerspace/132187/Nice_automatic_bpmbased_filming">this
test</a>.</p>
]]></content:encoded><dc:date>2009-12-12T14:51:51Z</dc:date></item><item><title>Logo for aubio</title><guid isPermaLink="false">20091207-1910_logo</guid><link>http://aubio.org/news/20091207-1910_logo</link><description>A few days ago I asked Thorsten Wilms , who designed a bunch of fine logos for audio softwares , ...</description><content:encoded><![CDATA[
<p>A few days ago I asked <a
href="http://thorwil.wordpress.com/about/">Thorsten Wilms</a>, who designed a
bunch of fine <a href="http://thorwil.wordpress.com/logo-design/">logos for
audio softwares</a>, if he could think about a logo for aubio. As a starter, I
mentioned the cover of a previous issue of <a
href="http://www.mitpressjournals.org/toc/comj/29/1">Computer Music
Journal</a>.</p>

<p>Thorwil just posted a few <a
href="http://thorwil.wordpress.com/2009/12/07/aubio-logo/">ideas</a> on his
blog. Suggestions, comments, opinions? All welcome!</p>

<div class="figure">

<p> <a href="http://www.mitpressjournals.org/toc/comj/29/1"><img
src="/images/cmj_29-1.jpg" alt="Cover of Computer Music Journal 29-1"/></a>
</p>

<p><a href="http://www.mitpressjournals.org/loi/comj">Computer Music
Journal</a> cover, <a
href="http://www.mitpressjournals.org/toc/comj/29/1">Volume 29 Issue 1</a></p>

</div>
]]></content:encoded><dc:date>2009-12-07T18:10:00Z</dc:date></item><item><title>Switching to git</title><guid isPermaLink="false">20091203-0350_switching_to_git</guid><link>http://aubio.org/news/20091203-0350_switching_to_git</link><description>I have always been happy about bzr. Recently I started working on a project that uses git, and this first ...</description><content:encoded><![CDATA[
<p>I have always been happy about bzr.  Recently I started working on a project
that uses git, and this first contact was enough to convince me switching my
own branches from <a href="http://bazaar-vcs.org/">bzr</a> to <a
href="http://git-scm.com/">git</a>. The main argument is
<strong>speed</strong>! The stage area is also a nice thing. I often rushed to
type Ctrl+C with bzr after forgetting to mention which files I meant to
commit.</p>

<p>Converting the branches was as easy as:</p>

<blockquote>
<pre>
git init
bzr fast-export . | git fast-import
git reset
</pre>
</blockquote>

<p>gitweb is now installed at <a
href="http://git.aubio.org">http://git.aubio.org</a>. You can clone a branch
using:</p>

<blockquote>
<pre>git clone http://git.aubio.org/git/aubio</pre>
</blockquote>

<p>Hopefully this should also prevent <a href="http://dev.aubio.org">trac</a>
eating most of the available memory. Still, the trac site remains really slow
compared to <a href="http://git.aubio.org">gitweb</a>, and has no support for
multiple projects. So I am considering switching to <a
href="http://www.indefero.net/">Indefero</a> or <a
href="http://www.redmine.org/">Redmine</a>. They are written in PHP and Ruby,
which are not really my preferred languages, but both have built-in support for
multiple projects and are actively developed. Any suggestions?</p>
]]></content:encoded><dc:date>2009-12-03T02:50:00Z</dc:date></item><item><title>Keeping it groovy</title><guid isPermaLink="false">20091126-0153_keeping_it_groovy</guid><link>http://aubio.org/news/20091126-0153_keeping_it_groovy</link><description>Tempogram for Havana Cultura: New Cuba Sound , a 45:31 minutes mix by Gilles Peterson At the latest ISMIR conference ...</description><content:encoded><![CDATA[
<div class="figure">

<p>
<a href="/images/gilles_peterson_havana.png"><img
src="/images/gilles_peterson_havana_small.png" alt="example of tempogram"/></a>
</p>

<p>Tempogram for <a
href="http://www.gillespetersonworldwide.com/podcasts/gppresentshavanacultura.mp3">Havana
Cultura: New Cuba Sound</a>, a 45:31 minutes mix by <a
href="http://www.gillespetersonworldwide.com/podcasts.php">Gilles
Peterson</a> </p>

</div>

<p>At the latest <a href="http://ismir2009.ismir.net/">ISMIR conference</a>, <a
href="http://www.mpi-inf.mpg.de/~pgrosche/">Peter Grosche</a> and <a
href="http://www.mpi-inf.mpg.de/~mmueller/">Meinard Müller</a> presented a
paper called <a href="http://ismir2009.ismir.net/proceedings/OS2-3.pdf">A
Mid-Level Representation for Capturing Dominant Tempo and Pulse Information in
Music Recordings</a>. I was told to give it a look, as Meinard Müller gave an
impressive presentation with several sound examples of difficult but successful
beat tracking.</p>

<p>The method they describe is somewhat intuitive: build an onset detection
function, or <em>novelty</em> function, detect the pitch, or fundamental
period, on this function, and synthesise the result using an overlap-add
technique. The approach is elegant, efficient, and present several advantages
over <a
href="http://www.elec.qmul.ac.uk/people/simond/beatroot/index.html">existing</a>
methods, such as the one <a
href="http://www.elec.qmul.ac.uk/people/markp/2005/DaviesBrossierPlumbley05-aes.pdf">currently
implemented</a> in <a
href="http://aubio.org/doc/beattracking_8h.html">aubio</a>: versatile,
computationally efficient, it does not depend of previous context, is easy to
implement, and can be easily configured for different situations, with
independent tempo and time resolutions.</p>

<p>Last week-end I gave a shot at implementing this algorithm and got pretty
impressive results right at the first attempts. I managed to get 82% of correct
tempo (BPM) over my test database; not bad compared to the 72% <a
href="http://aubio.org/phd/">reached</a> with the latest aubio version &#8210;
the database, constructed by Stephen W. Hainsworth, consists of 222 musical
extracts of various genres.</p>

<p>I thought about titling this post <em>"Harder, better, faster,
stronger"</em>, but that sounded a bit déjà-vu, and the musicians from Cuba are
much harder to follow than the famous French <a
href="http://en.wikipedia.org/wiki/Daft_Punk">duo</a>. The figure above shows a
<em>tempogram</em> of a <a href="http://www.gillespetersonworldwide.com/">45
minutes long</a> mix by the amazing <a
href="http://www.gillespetersonworldwide.com/">Gilles Peterson</a>.</p>

<p>There is more than tatums and tactus coming out of these
<em>tempograms</em>: some interesting patterns emerge, describing the rhythmic
structure of the sound. More about this later, as soon as I find time to
complete my implementation, adding the precise beat locations so they can be
played.</p>
]]></content:encoded><dc:date>2009-11-26T00:53:00Z</dc:date></item><item><title>Ceci n'est pas un vecteur</title><guid isPermaLink="false">20091112-2105_ceci_n_est_pas_un_vecteur</guid><link>http://aubio.org/news/20091112-2105_ceci_n_est_pas_un_vecteur</link><description>For the last few days, I have been scratching my head at this question: should aubio keep using vectors with ...</description><content:encoded><![CDATA[
<p>For the last few days, I have been scratching my head at this question:
should aubio keep using vectors with channels? First of all, the
<code>fvec_t</code> structure currently in aubio is a matrix, not a vector, and
uses <code>float **</code> arrays. While it may sound nice to be able to run a
phase vocoder or a filter on multiple channels, this leads to several
troubles.</p>

<p>Most of the vector functions become ambiguous. For instance, should
<code>fvec_min</code> return the minimum value over all channels, or a vector
containing the minimum values of each channel? I started using things like
<code>fvec_median_channel</code> in the latest branch, but that's really ugly
and unclear.</p>

<p>In practice, in aubio we almost always want to mix down to mono before
running any algorithm on the signal. All the applications using aubio I heard
of were using only one channels. There might be some algorithms where we need
multiple channels as input, for instance pan descriptors, but that's a corner
case, and using 2 vectors for input is easy.</p>

<p>Now there are some optimisations concerns, as I have measured that running
10 channels in parallel is slightly faster with the current implementation,
which allocates the FFT buffer only once for all 10 channels. I got about 3%
slowdown when creating 10 times the required objects, instead of using objects
with 10 channels &#8210; this went down to 2% when running over a ten times
longer period, so the performance loss is probably not only due to memory
allocation.</p>

<p>Anyway, <em>premature optimisation is the root of all evil</em>.<sup><a
href="http://en.wikipedia.org/wiki/Program_optimization#cite_ref-1">*</a></sup>
So I created a branch, and published it here: 
</p>

<blockquote>
<p>
<code>http://bzr.aubio.org/aubio-mono</code>
</p>
</blockquote>

<p>
Unsurprisingly, this makes the code base a little bit shorter (1695
insertions(+), 1800 deletions(-)). Unless someone convinces me there is a very
good reason to keep this feature, I will merge the mono branch in the master
branch within the next few days.</p>

]]></content:encoded><dc:date>2009-11-12T20:05:00Z</dc:date></item></channel></rss>