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

David Olofson david at olofson.net
Sun Dec 8 18:51:00 UTC 2002


On Sunday 08 December 2002 18.33, Frank van de Pol wrote:
[...bell example]
> Nice examlple. To me it clearly illustrates that velocity (ie.
> force of note on/off) is indeed a property of the note event.

To me, it's just another example of a special class of instruments.


> The
> handling of velocity for said bell depends on the implementation of
> the synth; a physical modelling synth could when retriggering with
> the same pitch adjust the sound of the bell. Simple sample playback
> synths would most likely not have this level op sophistication.

(Virtual) analog synths usually do, however, and advanced samplers 
could emulate that. A "note on" while a note is still playing may 
affect only the envelope - it doesn't *have* to restart the waveform 
on a new voice.

Anyway, that's still an instrument implementation issue. It has 
nothing to do with the API, apart from demonstrating one thing:

VOICE_ON and VOICE_OFF events *may* actually be useful. Some 
instruments may react directly to velocity control changes, while 
others might want to keep the velocity value as a "standing order", 
which is actually applied only when a VOICE_ON or VOICE_OFF event is 
processed.

Then again, those VOICE_ON and VOICE_OFF events could just be the 
transitions from 0->1 and 1->0 respectively, of the value of an 
optional control named "Note"... If you want it, have one. If you act 
on Velocity directly, don't have a "Note" control, since you would 
probably just ignore it anyway.


> The violin example using the bow speed property is something
> different. In fact, the bow speed is indeed a sort of continious
> controller, while the strings could be hit by the bow with
> different velocity. How could one otherwise achive a pizzicato
> effect? (I might use the wrong phrasing, but I mean hitting like
> slapping a bass guitar the violin's strings using the bow.)

So, the Violin simulator with pizzicato support needs three controls:

	Note		(0.0 or 1.0)
	Velocity	(0.0 through 1.0)
	Bow Speed	(-1.0 through 1.0)

Or allow Velocity to be negative, and handle every change; a change 
to a positive value would be a "note on", while a change to a 
negative value would be a "note_off".

Do we still need special events for this?


> Though not in the scope for the instrument plugin discussion, I'd
> like to see compatibility with MIDI or other real-life protocols be
> considered. In the end our sequencer applications would need to
> transparently support both flavours.

That's a matter of mapping - not one of copying the design of one 
interface, just to make the mapping essentially 1:1.


//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 ---



More information about the Linux-audio-dev mailing list