|Subject:||Re: [fluid-dev] Help about EWI behavior - Soundfonts generator|
|Date:||Wed, 06 May 2015 14:22:32 +0200|
|User-agent:||Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130911 Thunderbird/17.0.9|
Thanks again for theses useful informations about EWI MIDI data.
jjc> Here the list of default modulators to change the amplitude of a sounding note in real time (called "Initial Attenuation" in SoudFont terms) .
Louis> What is needed is "Continual Attenuation" rather than "Initial Attenuation".jjc> Yes, and it is the case, please read:
- Initial Attenuation is the name of a SoundFont Parameter. This value set the "maximum" amplitude on ADSR envelope output.
- On a note start this "maximum" is read from the soundfont and set. For the volume ADSR generator, this set the ("max") level of the voice(s) note during its life.
This parameter is useful when a note have more than 1 voice (this is instructed by the soundfont) as each voice may have different ("max") level.
- This "maximum" value can be "modulated" by a list of default modulator (this is instructed by the soundfont). This means that during note life from the start, this
"maximum" value can be changed by the modulators in real time. This is why this parameter is called "Initial..".
- For the "Initial Attenuation", the list of defaults modulators are :
"Note-On Velocity to Initial Attenuation", the source of the modulator is the noteOn velocity.
"_expression_ (CC 11) to Initial Attenuation", the source of the modulator is CC 11.
"Volume (CC 07) to Initial Attenuation", the source of the modulator is CC 07.
The result is: Voice Amplitude= volADSRout x Initial x Vel x Exp x Vol
Note than Initial,Vel,Exp,Vol are normalized to [0..1] (0 for minimum value, 1 for maximum value).
So Amp = Initial at Peak envelope when, noteOn velocity= 127, CC 11=127, and CC07=127.
We see that if noteOn velocity is low (i.e 20) , the maximum amplitude will be lowered to this low value 20
This is why for any MIDI breath controler (EVI,EWI,..) we need to:
-1)set a fixed noteOn velocity value to 127, to keep the "max amplitude" possible value to the value set by the soundfont designer.
This setting can be done,
1.a) On the MIDI controler (EWI) (if possible).
1.b) On the synthesizer (if possible)
1.c) By the soundfont designer (generator GEN VELOCITY)
-2)Have a way to modulate "Initial Atenuation" by CC Breath"
This setting can be done,
2.a) On the MIDI controler (EWI) (if possible), by routing Breath sensor to CC 11 (or CC 7)
2.b) On th synthesizer (if possible). In FluidSynth we can use the MIDI Router function.
2.c) By the soundfont designer, by adding a modulator "Breath CC 02 to Initial Attenuation" in the soundfont.
Method 1.a,b, 2.a,b are interresting for quick result. But this is not the best because at sound design time, if
there are modulators with noteOn velocity to modulate other sound parameters, at playing time theses parameters
will be modulated by a fixed velocity (i.e not modulated at all). So the Sound design is damaged.
Method (1.c, 2.c) are by far the best method. Unfortunately this is not a quicker method
Louis>It may be better to work with sound fonts that use fluidsynth for the modulation as it is possible to override this with the breath modulation.
jjc>Now, we know that modulation in a SF2.01 synthesizer is done by the musician via MIDI CC ->Modulators-> Synthesis parameters.
We also must know that modulators (described in soundfont) are additive to the value of the parameter set by the sound designer.
So if the musician put the CCx value to "0", the result is "no modulation x". So it is always possible to externally disable/enable
any CC modulator source, without the need to re-edit the soundfount or add specific code at synthesis engine.
Further, for EWI it will be interresting to try to "overide" the effect of Volume ADRS generator. Again this is possible at Soundfont Design time.
For now this post is definitively too long !
Le 03/05/2015 11:23, Louis B. a écrit :
|[Prev in Thread]||Current Thread||[Next in Thread]|