129 |
AboutToTrigger(); |
AboutToTrigger(); |
130 |
|
|
131 |
// calculate volume |
// calculate volume |
132 |
const double velocityAttenuation = GetVelocityAttenuation(itNoteOnEvent->Param.Note.Velocity); |
const double velocityAttenuation = GetVelocityAttenuation(MIDIVelocity()); |
133 |
float volume = CalculateVolume(velocityAttenuation) * pKeyInfo->Volume; |
float volume = CalculateVolume(velocityAttenuation) * pKeyInfo->Volume; |
134 |
if (volume <= 0) return -1; |
if (volume <= 0) return -1; |
135 |
|
|
139 |
SYNTHESIS_MODE_SET_BITDEPTH24(SynthesisMode, SmplInfo.BitDepth == 24); |
SYNTHESIS_MODE_SET_BITDEPTH24(SynthesisMode, SmplInfo.BitDepth == 24); |
140 |
|
|
141 |
// get starting crossfade volume level |
// get starting crossfade volume level |
142 |
float crossfadeVolume = CalculateCrossfadeVolume(itNoteOnEvent->Param.Note.Velocity); |
float crossfadeVolume = CalculateCrossfadeVolume(MIDIVelocity()); |
143 |
|
|
144 |
VolumeLeft = volume * pKeyInfo->PanLeft; |
VolumeLeft = volume * pKeyInfo->PanLeft; |
145 |
VolumeRight = volume * pKeyInfo->PanRight; |
VolumeRight = volume * pKeyInfo->PanRight; |
198 |
NoteResonance = (pNote) ? pNote->Override.Resonance : 1.0f; |
NoteResonance = (pNote) ? pNote->Override.Resonance : 1.0f; |
199 |
|
|
200 |
// the length of the decay and release curves are dependent on the velocity |
// the length of the decay and release curves are dependent on the velocity |
201 |
const double velrelease = 1 / GetVelocityRelease(itNoteOnEvent->Param.Note.Velocity); |
const double velrelease = 1 / GetVelocityRelease(MIDIVelocity()); |
202 |
|
|
203 |
if (pSignalUnitRack == NULL) { // setup EG 1 (VCA EG) |
if (pSignalUnitRack == NULL) { // setup EG 1 (VCA EG) |
204 |
// get current value of EG1 controller |
// get current value of EG1 controller |
205 |
double eg1controllervalue = GetEG1ControllerValue(itNoteOnEvent->Param.Note.Velocity); |
double eg1controllervalue = GetEG1ControllerValue(MIDIVelocity()); |
206 |
|
|
207 |
// calculate influence of EG1 controller on EG1's parameters |
// calculate influence of EG1 controller on EG1's parameters |
208 |
EGInfo egInfo = CalculateEG1ControllerInfluence(eg1controllervalue); |
EGInfo egInfo = CalculateEG1ControllerInfluence(eg1controllervalue); |
213 |
egInfo.Release *= pNote->Override.Release; |
egInfo.Release *= pNote->Override.Release; |
214 |
} |
} |
215 |
|
|
216 |
TriggerEG1(egInfo, velrelease, velocityAttenuation, GetEngine()->SampleRate, itNoteOnEvent->Param.Note.Velocity); |
TriggerEG1(egInfo, velrelease, velocityAttenuation, GetEngine()->SampleRate, MIDIVelocity()); |
217 |
} else { |
} else { |
218 |
pSignalUnitRack->Trigger(); |
pSignalUnitRack->Trigger(); |
219 |
} |
} |
257 |
// setup EG 2 (VCF Cutoff EG) |
// setup EG 2 (VCF Cutoff EG) |
258 |
{ |
{ |
259 |
// get current value of EG2 controller |
// get current value of EG2 controller |
260 |
double eg2controllervalue = GetEG2ControllerValue(itNoteOnEvent->Param.Note.Velocity); |
double eg2controllervalue = GetEG2ControllerValue(MIDIVelocity()); |
261 |
|
|
262 |
// calculate influence of EG2 controller on EG2's parameters |
// calculate influence of EG2 controller on EG2's parameters |
263 |
EGInfo egInfo = CalculateEG2ControllerInfluence(eg2controllervalue); |
EGInfo egInfo = CalculateEG2ControllerInfluence(eg2controllervalue); |
264 |
|
|
265 |
TriggerEG2(egInfo, velrelease, velocityAttenuation, GetEngine()->SampleRate, itNoteOnEvent->Param.Note.Velocity); |
TriggerEG2(egInfo, velrelease, velocityAttenuation, GetEngine()->SampleRate, MIDIVelocity()); |
266 |
} |
} |
267 |
|
|
268 |
|
|
321 |
VCFResonanceCtrl.value = pEngineChannel->ControllerTable[VCFResonanceCtrl.controller]; |
VCFResonanceCtrl.value = pEngineChannel->ControllerTable[VCFResonanceCtrl.controller]; |
322 |
|
|
323 |
// calculate cutoff frequency |
// calculate cutoff frequency |
324 |
CutoffBase = CalculateCutoffBase(itNoteOnEvent->Param.Note.Velocity); |
CutoffBase = CalculateCutoffBase(MIDIVelocity()); |
325 |
|
|
326 |
VCFCutoffCtrl.fvalue = CalculateFinalCutoff(CutoffBase); |
VCFCutoffCtrl.fvalue = CalculateFinalCutoff(CutoffBase); |
327 |
|
|