From: Mark K. <mar...@gm...> - 2004-12-05 17:15:19
|
On Sun, 5 Dec 2004 15:26:10 +0100, Christian Schoenebeck <sch...@so...> wrote: > Es geschah am Sonntag 05 Dezember 2004 15:22 als Andreas Persson schrieb: > > Christian Schoenebeck wrote: > > > ProcessControlChange() only handles the sustain pedal case. > > > ProcessNoteOn() handles the case when the same key was triggered > > > instantly after releasing the same key. So this make sense. > > > > Sorry for being so stubborn, but I'm not sure I understand when the > > second case adds any realism? > > There's nothing to excuse, doubts are often productive. > > I guess you don't see a realism, because you assume the 2nd key trigger causes > a new voice of approx. the same amplitude or even higher than the first one. > > But imagine the following case: you trigger key C3 the first time with a > velocity of 127, then you release key C3 and immediately after that press C3 > again, but this time with a velocity of 1. > > If we do what you claimed and remove those lines, you will hear nothing on the > 2nd key trigger. With current implementation though you still here the first > voice. Which makes sense, doesn't it? > > > > Again, we can make that a compile time option if you like. > > > > OK, but what will be the default? :) > > I vote against that being the default behaviour. But of course if I'm alone > with that opinion I accepted it even as default behaviour. > > CU > Christian > Hi, Fairly long time since I've posted much. Speaking logically only, and not musically or even about GSt or LS specifically, I think it depends on what sort of instrument you are modeling. If the instrument is something physical where-in the second event uses the same physical entity to make the sound, then the second event should override the first. The quiet note replaces the loud note. This is the way a synth with limited oscillator count would work and probably the way GSt works when doing voice stealing. However the piano is difficult. Playing a second note on middle C does not eliminate the first note. (sustain pedal held) The second note is additive, and additive in a non-intuitive way. Actually, whatever the effect of the first and second events are, I would say they both end at the same time. (Again, sustain pedal held.) I don't think the loud note finishes any sooner than the soft note, does it? In fact the soft note might actually finish sooner implying velocity effects the overall length of the envelope. If the instrument being modeled is a synth, and assuming unlimited oscillator count, then there are just two separate events that take place in parallel. Probably this ramble isn't adding anything to the knowledge base other than to say I'm out here reading. Take care, Mark |