Re: [linux-audio-dev] Plugin APIs (again)

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] Plugin APIs (again)
From: David Olofson (david_AT_olofson.net)
Date: Sun Dec 08 2002 - 02:45:08 EET


On Sunday 08 December 2002 01.26, Nathaniel Virgo wrote:
> On Saturday 07 December 2002 11:29 pm, David Olofson wrote:
[...velocity or not...]
> > Well, keep arguing, and I'll try to figure out more reasons why
> > velocity is not special, nor universal. ;-)
>
> I think velocity is special because it is often needed by the
> synthesis algorithm only at the beginning of the note. For
> instance, if you have a physical model of a bell then the velocity
> will determine the shape and magnitude of the impulse function you
> use to represent the striker. Changing it midway through the note,
> after the bell has been hit, is meaningless.

Of course. (Waving the club around in the air in front of the gong
will probably affect the sound slightly, but you may not be
interested in emulating that. :-)

However, how does velocity making sense for *some* instruments make
velocity special? I bet there are *at least* as many instruments
where velocity does *not* make sense, but "pressure/speed" does. So,
we might as well decide that "pressure/speed" is the normal (or
"special") way to control instruments, and velocity is the special
case, right?

I think both are special cases. In some cases, you don't need either
of them. In most cases, you'll need one of them, and sometimes, you
may even want to use both.

> That said, it would be cool if you could support multiple
> velocity-like parameters, so that it would be possible to control
> the position of the striker and the strength of the strike
> independently for each note.

Yes indeed. I have that kind of controls in Audiality (used only for
positional 2D audio so far) - but those are actually continous
controllers.

> Multiple poly-aftertouch-like
> controllers would also be cool, but I think they are a different
> thing.

I'm not so sure... What happens if you hit a snare drum, and then let
the stick rest on the surface? ;-)

What I'm saying is that if you thing about what you're actually
trying to simulate, it becomes clear that continous controllers will
fit practically any application.

Want positional info on drums? Think of X and Y as the "aim point",
and just make sure you're aiming at the right spot before you kick
the velocity control to the desired value - which, with this
instrument, instantly triggers the sound. Setting velocity back to 0
would correspond to NoteOff - although at least 90% of all drum
patches will completely ignore that anyway.

Want to play the trumpet? Well, just set up the right pitch first,
and then "stroke" the breath control as required. Whenever breath is
non-zero, you have a note.

The point I think you're missing is that a "control change" event is
*exactly* the same thing as a "voice start" event on the bits and
bytes level. Both carry some data. Both will have the plugin run some
code at the specified time. It's just a matter of how the plugin
interprets the data - so you may decide to have the breath control
trigger your synths internal voice on/off events by detecting
transitions from and to 0.

It's nothing like LADSPA, where you have to *poll* control ports to
do this kind of stuff.

//David Olofson - Programmer, Composer, Open Source Advocate

.- The Return of Audiality! --------------------------------.
| Free/Open Source Audio Engine for use in Games or Studio. |
| RT and off-line synth. Scripting. Sample accurate timing. |
`---------------------------> http://olofson.net/audiality -'
.- M A I A -------------------------------------------------.
| The Multimedia Application Integration Architecture |
`----------------------------> http://www.linuxdj.com/maia -'
   --- http://olofson.net --- http://www.reologica.se ---


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Sun Dec 08 2002 - 02:50:34 EET