Re: DLS MusicDevice and note ordering
Re: DLS MusicDevice and note ordering
- Subject: Re: DLS MusicDevice and note ordering
- From: Urs Heckmann <email@hidden>
- Date: Thu, 24 Jul 2003 08:31:07 +0200
Am Donnerstag, 24.07.03, um 01:30 Uhr (Europe/Berlin) schrieb Jeremy
Sagan:
I am wondering about this sequence of events and how synth (or synth
plug-ins) are expected to behave.
C3-NoteOn time 0
C3-NoteOn time 1000
C3-NoteOff time 1000
C3-NoteOff time 2000
The measurement of time is in samples but does not matter. I would
think this sequence would cause the second note on to continue to
sound between times 1000 and 2000 but in the case of DLS Musicdevice
it does not.
Is this considered a bug?
Jeremy
Hi Jeremy,
dunno in case of the DLS, but I have some general thoughts to offer:
Via the MusicDevice APIs, a plugin may behave "correctly", because
there's this NoteInstanceID stuff. - The "logic" is left to the hosting
app. Naturally, an MD has to also react on Midi, where an assignment of
the NoteOffs is not possible anymore.
There are several possibilities:
a) Make only one Note sound and increment an internal counter for
expected Note offs, then hold until NoteOffs == NoteOns for a sounding
Note
b) Like a, but play new notes and treat stuff like a FIFO...
c) Ignore subsequent NoteOns and stop the Note on first NoteOff
d) Before a double NoteOn, send yourself a NoteOff internally and stop
that on last expected NoteOff
e) like d, but stop the new note on first NoteOff
f) more?
I have seen about all of these implemented in hardware Gear, so there's
no common rule I think.
However. Despite I feel that b) is the better solution, I tend to
prefer d). So far, I think I only managed to implement e), which was
really hard enough...
As a famous developer said, the queueing of Note Events, their
Assignment To Voices, Note Stealing and different Play/Trigger Modes is
the bigger challenge in Synth Design. More so than any dsp. I tend
agree with that 8-)
You can look at my implementation in the Source Code I provided here:
http://www.u-he.com/MultiTimbralSynth.sit - The Note Handling stuff is
just crazy. It grew to a sort of spagetti code. At least, hanging notes
have become seldom.
Just some thoughts...
;) Urs
(Hehe, one could implement two schemes: A "strong" behaviour on MD
APIs, and a "weak" behaviour on Midi. But well, that would be overkill,
right?)
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.