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