--- Cesare Marilungo <cesare(a)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
http://mail.yahoo.com
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?
c.
--