[linux-audio-user] [ANN] ALSA MIDI Humanizer v0.0.1

Cesare Marilungo cesare at poeticstudios.com
Thu Jul 6 22:09:17 EDT 2006

Stephen Cameron wrote:

>--- Cesare Marilungo <cesare at poeticstudios.com> wrote:
>>ALSA MIDI Humanizer is a tiny application that route MIDI events between 
>>two applications adding random timing and velocity offsets to NOTEON and 
>>For the developers reading this list: at the moment the code is just a 
>>quick hack. I didn't know anything about ALSA develpment, the GTK+ 
>>toolkit and linux threads until this morning when I've started studying 
>>some tutorials (used the midirouter.c code from the ALSA tutorial by 
>>Matthias Nagorni as a starting point). So, be kind.
>>Comments and suggestions are highly appreciated.
>Interesting idea, though I'm not sure adding random delays
>really "humanizes" things.  Of course I realize this is mostly
>something you've put together as a learning exercise.  BTW,
>in case you're interested in reading some ramblings of another
>beginning ALSA MIDI programmer (me), you might check out this:
>http://www.geocities.com/smcameron/linux-audio-notes.html, which
>is kind of a log I've kept for the last year or so.
>Maybe there are some interesting links in there, if nothing
>else, or maybe some humor at my expense, LOL.
>For a humanizing type feature of my drum machine application,
>I added a per instrument (per note, really, as MIDI drums
>instruments are mapped to notes) feature that allows a particular
>instrument to "drag" or "rush" which is to say, fire off a little
>late, or a little early.  My implementation is a little buggy, in
>that when dragging or rushing causes an instrument to slip across
>a measure boundary, things get a little squirrelly, but the idea
>is there.  I got that idea from reading a little instructional book
>about playing the drums, I guess it's common practice among drommers 
>to keep some important instruments in fairly strict time, while kind
>of messing about with some others.
>I guess for a filter app, "rushing" is not really possible, without
>a time machine, though "dragging" every other instrument would 
>amount to the same thing, plus insertion of latency.
>-- steve
>Do You Yahoo!?
>Tired of spam?  Yahoo! Mail has the best spam protection around 
Thank you for your suggestions, Steve!

Yes, I'm writing it also as a learning exercise but I plan to actually 
use it. I've always used this kind of functionality in cubase.

And yes, "rushing" is not possible without a timemachine. :-) 
It could be done inside a sequencer, reading ahead.

Another problem that should be solved is that with the current 
implementation a noteon event that has been randomly delayed too much 
can happen after the noteoff.

I've also planned to add the possibility to have more channels, each 
with its own settings. But it would be interesting if I can define some 
filtering rules (like notes and velocity ranges) for each channel. This 
is easy.

Give me some time. It's just version 0.0.1! Don't they say to release early?



More information about the linux-audio-user mailing list