99 |
} |
} |
100 |
|
|
101 |
|
|
102 |
LFOUnit::LFOUnit(const LFOUnit& Unit): SfzSignalUnit(Unit), suFadeEG(static_cast<SfzSignalUnitRack*>(Unit.pRack)) { |
LFOUnit::LFOUnit(SfzSignalUnitRack* rack) |
103 |
|
: SfzSignalUnit(rack), pLfoInfo(NULL), pLFO(NULL), |
104 |
|
suFadeEG(rack), suFreqOnCC(rack, this) |
105 |
|
{ } |
106 |
|
|
107 |
|
LFOUnit::LFOUnit(const LFOUnit& Unit) |
108 |
|
: SfzSignalUnit(Unit), suFadeEG(static_cast<SfzSignalUnitRack*>(Unit.pRack)), |
109 |
|
suFreqOnCC(static_cast<SfzSignalUnitRack*>(Unit.pRack), this) |
110 |
|
{ |
111 |
Copy(Unit); |
Copy(Unit); |
112 |
} |
} |
113 |
|
|
140 |
} |
} |
141 |
} |
} |
142 |
|
|
143 |
|
void LFOUnit::ValueChanged(CCSignalUnit* pUnit) { |
144 |
|
pLFO->SetFrequency(suFreqOnCC.GetLevel() + pLfoInfo->freq, GetSampleRate()); |
145 |
|
} |
146 |
|
|
147 |
|
|
148 |
void LFOv1Unit::Trigger() { |
void LFOv1Unit::Trigger() { |
149 |
LFOUnit::Trigger(); |
LFOUnit::Trigger(); |
150 |
|
|
151 |
lfo.trigger ( |
lfo.trigger ( |
152 |
pLfoInfo->freq, |
pLfoInfo->freq + suFreqOnCC.GetLevel(), |
153 |
start_level_mid, |
start_level_mid, |
154 |
1, 0, false, GetSampleRate() |
1, 0, false, GetSampleRate() |
155 |
); |
); |
179 |
else pLFO = lfos[pLfoInfo->wave]; |
else pLFO = lfos[pLfoInfo->wave]; |
180 |
|
|
181 |
pLFO->Trigger ( |
pLFO->Trigger ( |
182 |
pLfoInfo->freq, |
pLfoInfo->freq + suFreqOnCC.GetLevel(), |
183 |
start_level_mid, |
start_level_mid, |
184 |
1, 0, false, GetSampleRate() |
1, 0, false, GetSampleRate() |
185 |
); |
); |
223 |
LFOv1Unit::Trigger(); |
LFOv1Unit::Trigger(); |
224 |
} |
} |
225 |
|
|
226 |
CCUnit::CCUnit(SfzSignalUnitRack* rack): CCSignalUnit(rack) { } |
CCUnit::CCUnit(SfzSignalUnitRack* rack, Listener* l): CCSignalUnit(rack, l) { |
227 |
|
pVoice = NULL; |
228 |
|
} |
229 |
|
|
230 |
void CCUnit::Trigger() { |
void CCUnit::Trigger() { |
231 |
for (int i = 0; i < Ctrls.size(); i++) { |
for (int i = 0; i < Ctrls.size(); i++) { |
366 |
{ |
{ |
367 |
suEndpoint.pVoice = suVolEG.pVoice = suFilEG.pVoice = suPitchEG.pVoice = voice; |
suEndpoint.pVoice = suVolEG.pVoice = suFilEG.pVoice = suPitchEG.pVoice = voice; |
368 |
suAmpLFO.pVoice = suPitchLFO.pVoice = suFilLFO.pVoice = voice; |
suAmpLFO.pVoice = suPitchLFO.pVoice = suFilLFO.pVoice = voice; |
369 |
suPitchLFO.suDepthCC.pVoice = suPitchLFO.suFadeEG.pVoice = voice; |
suPitchLFO.suDepthCC.pVoice = suPitchLFO.suFadeEG.pVoice = suPitchLFO.suFreqOnCC.pVoice = voice; |
370 |
suFilLFO.suFadeEG.pVoice = voice; |
suFilLFO.suFadeEG.pVoice = suFilLFO.suFreqOnCC.pVoice = voice; |
371 |
suAmpLFO.suFadeEG.pVoice = voice; |
suAmpLFO.suFadeEG.pVoice = suAmpLFO.suFreqOnCC.pVoice = voice; |
372 |
|
|
373 |
for (int i = 0; i < EGs.capacity(); i++) { |
for (int i = 0; i < EGs.capacity(); i++) { |
374 |
EGs[i] = new EGv2Unit(this); |
EGs[i] = new EGv2Unit(this); |
380 |
LFOs[i]->pVoice = voice; |
LFOs[i]->pVoice = voice; |
381 |
LFOs[i]->suFadeEG.pVoice = voice; |
LFOs[i]->suFadeEG.pVoice = voice; |
382 |
LFOs[i]->suPitchOnCC.pVoice = voice; |
LFOs[i]->suPitchOnCC.pVoice = voice; |
383 |
|
LFOs[i]->suFreqOnCC.pVoice = voice; |
384 |
} |
} |
385 |
} |
} |
386 |
|
|
436 |
lfo.pLfoInfo = &(pRegion->lfos[i]); |
lfo.pLfoInfo = &(pRegion->lfos[i]); |
437 |
LFOs.increment()->Copy(lfo); |
LFOs.increment()->Copy(lfo); |
438 |
LFOs[LFOs.size() - 1]->suPitchOnCC.SetCCs(pRegion->lfos[i].pitch_oncc); |
LFOs[LFOs.size() - 1]->suPitchOnCC.SetCCs(pRegion->lfos[i].pitch_oncc); |
439 |
|
LFOs[LFOs.size() - 1]->suFreqOnCC.SetCCs(pRegion->lfos[i].freq_oncc); |
440 |
} else { std::cerr << "Maximum number of LFOs reached!" << std::endl; break; } |
} else { std::cerr << "Maximum number of LFOs reached!" << std::endl; break; } |
441 |
|
|
442 |
if (pRegion->lfos[i].pitch != 0 || !pRegion->lfos[i].pitch_oncc.empty()) { |
if (pRegion->lfos[i].pitch != 0 || !pRegion->lfos[i].pitch_oncc.empty()) { |
461 |
} |
} |
462 |
|
|
463 |
suPitchLFO.suDepthCC.SetCCs(pRegion->pitchlfo_depthcc); |
suPitchLFO.suDepthCC.SetCCs(pRegion->pitchlfo_depthcc); |
464 |
|
suPitchLFO.suFreqOnCC.SetCCs(pRegion->pitchlfo_freqcc); |
465 |
|
|
466 |
|
suFilLFO.suFreqOnCC.SetCCs(pRegion->fillfo_freqcc); |
467 |
|
|
468 |
|
suAmpLFO.suFreqOnCC.SetCCs(pRegion->amplfo_freqcc); |
469 |
|
|
470 |
Units.clear(); |
Units.clear(); |
471 |
|
|
472 |
Units.add(&suVolEG); |
Units.add(&suVolEG); |
473 |
Units.add(&suFilEG); |
Units.add(&suFilEG); |
474 |
Units.add(&suPitchEG); |
Units.add(&suPitchEG); |
475 |
|
|
476 |
|
Units.add(&suPitchLFO.suFreqOnCC); // Don't change order! (should be triggered before the LFO) |
477 |
Units.add(&suPitchLFO); |
Units.add(&suPitchLFO); |
478 |
Units.add(&suPitchLFO.suDepthCC); |
Units.add(&suPitchLFO.suDepthCC); |
479 |
Units.add(&suPitchLFO.suFadeEG); |
Units.add(&suPitchLFO.suFadeEG); |
480 |
|
|
481 |
|
Units.add(&suAmpLFO.suFreqOnCC); // Don't change order! (should be triggered before the LFO) |
482 |
Units.add(&suAmpLFO); |
Units.add(&suAmpLFO); |
483 |
Units.add(&suAmpLFO.suFadeEG); |
Units.add(&suAmpLFO.suFadeEG); |
484 |
|
|
485 |
|
Units.add(&suFilLFO.suFreqOnCC); // Don't change order! (should be triggered before the LFO) |
486 |
Units.add(&suFilLFO); |
Units.add(&suFilLFO); |
487 |
Units.add(&suFilLFO.suFadeEG); |
Units.add(&suFilLFO.suFadeEG); |
488 |
|
|
491 |
} |
} |
492 |
|
|
493 |
for (int i = 0; i < LFOs.size(); i++) { |
for (int i = 0; i < LFOs.size(); i++) { |
494 |
|
Units.add(&(LFOs[i]->suFreqOnCC)); // Don't change order! (should be triggered before the LFO) |
495 |
Units.add(LFOs[i]); |
Units.add(LFOs[i]); |
496 |
Units.add(&(LFOs[i]->suFadeEG)); |
Units.add(&(LFOs[i]->suFadeEG)); |
497 |
Units.add(&(LFOs[i]->suPitchOnCC)); |
Units.add(&(LFOs[i]->suPitchOnCC)); |