418 |
} |
} |
419 |
} |
} |
420 |
|
|
421 |
|
void CCUnit::SetCCs(::sfz::Array<float>& cc) { |
422 |
|
RemoveAllCCs(); |
423 |
|
for (int i = 0; i < 128; i++) { |
424 |
|
if (cc[i] != 0) AddCC(i, cc[i]); |
425 |
|
} |
426 |
|
} |
427 |
|
|
428 |
void CCUnit::SetCCs(ArrayList< ::sfz::CC>& cc) { |
void CCUnit::SetCCs(ArrayList< ::sfz::CC>& cc) { |
429 |
RemoveAllCCs(); |
RemoveAllCCs(); |
430 |
for (int i = 0; i < cc.size(); i++) { |
for (int i = 0; i < cc.size(); i++) { |
742 |
SfzSignalUnitRack::SfzSignalUnitRack(Voice* voice) |
SfzSignalUnitRack::SfzSignalUnitRack(Voice* voice) |
743 |
: SignalUnitRack(MaxUnitCount), pVoice(voice), suEndpoint(this), suVolEG(this), suFilEG(this), suPitchEG(this), |
: SignalUnitRack(MaxUnitCount), pVoice(voice), suEndpoint(this), suVolEG(this), suFilEG(this), suPitchEG(this), |
744 |
EGs(maxEgCount), volEGs(maxEgCount), pitchEGs(maxEgCount), filEGs(maxEgCount), resEGs(maxEgCount), panEGs(maxEgCount), |
EGs(maxEgCount), volEGs(maxEgCount), pitchEGs(maxEgCount), filEGs(maxEgCount), resEGs(maxEgCount), panEGs(maxEgCount), |
745 |
|
suEq1GainOnCC(this), suEq2GainOnCC(this), suEq3GainOnCC(this), |
746 |
|
suEq1FreqOnCC(this), suEq2FreqOnCC(this), suEq3FreqOnCC(this), |
747 |
|
suEq1BwOnCC(this), suEq2BwOnCC(this), suEq3BwOnCC(this), |
748 |
suVolOnCC(this), suPitchOnCC(this), suCutoffOnCC(this), suResOnCC(this), |
suVolOnCC(this), suPitchOnCC(this), suCutoffOnCC(this), suResOnCC(this), |
749 |
suAmpLFO(this), suPitchLFO(this), suFilLFO(this), |
suAmpLFO(this), suPitchLFO(this), suFilLFO(this), |
750 |
LFOs(maxLfoCount), volLFOs(maxLfoCount), pitchLFOs(maxLfoCount), |
LFOs(maxLfoCount), volLFOs(maxLfoCount), pitchLFOs(maxLfoCount), |
753 |
suEndpoint.pVoice = suEndpoint.suXFInCC.pVoice = suEndpoint.suXFOutCC.pVoice = suEndpoint.suPanOnCC.pVoice = voice; |
suEndpoint.pVoice = suEndpoint.suXFInCC.pVoice = suEndpoint.suXFOutCC.pVoice = suEndpoint.suPanOnCC.pVoice = voice; |
754 |
suVolEG.pVoice = suFilEG.pVoice = suPitchEG.pVoice = voice; |
suVolEG.pVoice = suFilEG.pVoice = suPitchEG.pVoice = voice; |
755 |
suAmpLFO.pVoice = suPitchLFO.pVoice = suFilLFO.pVoice = voice; |
suAmpLFO.pVoice = suPitchLFO.pVoice = suFilLFO.pVoice = voice; |
756 |
|
|
757 |
|
suEq1GainOnCC.pVoice = suEq2GainOnCC.pVoice = suEq3GainOnCC.pVoice = voice; |
758 |
|
suEq1FreqOnCC.pVoice = suEq2FreqOnCC.pVoice = suEq3FreqOnCC.pVoice = voice; |
759 |
|
suEq1BwOnCC.pVoice = suEq2BwOnCC.pVoice = suEq3BwOnCC.pVoice = voice; |
760 |
|
|
761 |
suVolOnCC.pVoice = suPitchOnCC.pVoice = suCutoffOnCC.pVoice = suResOnCC.pVoice = voice; |
suVolOnCC.pVoice = suPitchOnCC.pVoice = suCutoffOnCC.pVoice = suResOnCC.pVoice = voice; |
762 |
suPitchLFO.suDepthOnCC.pVoice = suPitchLFO.suFadeEG.pVoice = suPitchLFO.suFreqOnCC.pVoice = voice; |
suPitchLFO.suDepthOnCC.pVoice = suPitchLFO.suFadeEG.pVoice = suPitchLFO.suFreqOnCC.pVoice = voice; |
763 |
suFilLFO.suFadeEG.pVoice = suFilLFO.suDepthOnCC.pVoice = suFilLFO.suFreqOnCC.pVoice = voice; |
suFilLFO.suFadeEG.pVoice = suFilLFO.suDepthOnCC.pVoice = suFilLFO.suFreqOnCC.pVoice = voice; |
803 |
Pool<CCSignalUnit::CC>* pCCPool = pVoice->pEngine->pCCPool; |
Pool<CCSignalUnit::CC>* pCCPool = pVoice->pEngine->pCCPool; |
804 |
Pool<Smoother>* pSmootherPool = pVoice->pEngine->pSmootherPool; |
Pool<Smoother>* pSmootherPool = pVoice->pEngine->pSmootherPool; |
805 |
|
|
806 |
|
suEq1GainOnCC.InitCCList(pCCPool, pSmootherPool); |
807 |
|
suEq2GainOnCC.InitCCList(pCCPool, pSmootherPool); |
808 |
|
suEq3GainOnCC.InitCCList(pCCPool, pSmootherPool); |
809 |
|
suEq1FreqOnCC.InitCCList(pCCPool, pSmootherPool); |
810 |
|
suEq2FreqOnCC.InitCCList(pCCPool, pSmootherPool); |
811 |
|
suEq3FreqOnCC.InitCCList(pCCPool, pSmootherPool); |
812 |
|
suEq1BwOnCC.InitCCList(pCCPool, pSmootherPool); |
813 |
|
suEq2BwOnCC.InitCCList(pCCPool, pSmootherPool); |
814 |
|
suEq3BwOnCC.InitCCList(pCCPool, pSmootherPool); |
815 |
|
|
816 |
suVolOnCC.InitCCList(pCCPool, pSmootherPool); |
suVolOnCC.InitCCList(pCCPool, pSmootherPool); |
817 |
suPitchOnCC.InitCCList(pCCPool, pSmootherPool); |
suPitchOnCC.InitCCList(pCCPool, pSmootherPool); |
818 |
suCutoffOnCC.InitCCList(pCCPool, pSmootherPool); |
suCutoffOnCC.InitCCList(pCCPool, pSmootherPool); |
865 |
|
|
866 |
::sfz::Region* const pRegion = pVoice->pRegion; |
::sfz::Region* const pRegion = pVoice->pRegion; |
867 |
|
|
868 |
|
suEq1GainOnCC.SetCCs(pRegion->eq1_gain_oncc); |
869 |
|
suEq2GainOnCC.SetCCs(pRegion->eq2_gain_oncc); |
870 |
|
suEq3GainOnCC.SetCCs(pRegion->eq3_gain_oncc); |
871 |
|
suEq1FreqOnCC.SetCCs(pRegion->eq1_freq_oncc); |
872 |
|
suEq2FreqOnCC.SetCCs(pRegion->eq2_freq_oncc); |
873 |
|
suEq3FreqOnCC.SetCCs(pRegion->eq3_freq_oncc); |
874 |
|
suEq1BwOnCC.SetCCs(pRegion->eq1_bw_oncc); |
875 |
|
suEq2BwOnCC.SetCCs(pRegion->eq2_bw_oncc); |
876 |
|
suEq3BwOnCC.SetCCs(pRegion->eq3_bw_oncc); |
877 |
|
|
878 |
|
bHasEq = pRegion->eq1_gain || pRegion->eq2_gain || pRegion->eq3_gain || |
879 |
|
suEq1GainOnCC.HasCCs() || suEq2GainOnCC.HasCCs() || suEq3GainOnCC.HasCCs(); |
880 |
|
|
881 |
suVolOnCC.SetCCs(pRegion->volume_oncc); |
suVolOnCC.SetCCs(pRegion->volume_oncc); |
882 |
suPitchOnCC.SetCCs(pRegion->pitch_oncc); |
suPitchOnCC.SetCCs(pRegion->pitch_oncc); |
883 |
suCutoffOnCC.SetCCs(pRegion->cutoff_oncc); |
suCutoffOnCC.SetCCs(pRegion->cutoff_oncc); |
987 |
|
|
988 |
Units.clear(); |
Units.clear(); |
989 |
|
|
990 |
|
Units.add(&suEq1GainOnCC); |
991 |
|
Units.add(&suEq2GainOnCC); |
992 |
|
Units.add(&suEq3GainOnCC); |
993 |
|
Units.add(&suEq1FreqOnCC); |
994 |
|
Units.add(&suEq2FreqOnCC); |
995 |
|
Units.add(&suEq3FreqOnCC); |
996 |
|
Units.add(&suEq1BwOnCC); |
997 |
|
Units.add(&suEq2BwOnCC); |
998 |
|
Units.add(&suEq3BwOnCC); |
999 |
|
|
1000 |
Units.add(&suVolOnCC); |
Units.add(&suVolOnCC); |
1001 |
Units.add(&suPitchOnCC); |
Units.add(&suPitchOnCC); |
1002 |
Units.add(&suCutoffOnCC); |
Units.add(&suCutoffOnCC); |
1063 |
} |
} |
1064 |
|
|
1065 |
void SfzSignalUnitRack::Reset() { |
void SfzSignalUnitRack::Reset() { |
1066 |
|
suEq1GainOnCC.RemoveAllCCs(); |
1067 |
|
suEq2GainOnCC.RemoveAllCCs(); |
1068 |
|
suEq3GainOnCC.RemoveAllCCs(); |
1069 |
|
suEq1FreqOnCC.RemoveAllCCs(); |
1070 |
|
suEq2FreqOnCC.RemoveAllCCs(); |
1071 |
|
suEq3FreqOnCC.RemoveAllCCs(); |
1072 |
|
suEq1BwOnCC.RemoveAllCCs(); |
1073 |
|
suEq2BwOnCC.RemoveAllCCs(); |
1074 |
|
suEq3BwOnCC.RemoveAllCCs(); |
1075 |
|
|
1076 |
suVolOnCC.RemoveAllCCs(); |
suVolOnCC.RemoveAllCCs(); |
1077 |
suPitchOnCC.RemoveAllCCs(); |
suPitchOnCC.RemoveAllCCs(); |
1078 |
suCutoffOnCC.RemoveAllCCs(); |
suCutoffOnCC.RemoveAllCCs(); |
1108 |
} |
} |
1109 |
} |
} |
1110 |
|
|
1111 |
|
void SfzSignalUnitRack::UpdateEqSettings(EqSupport* pEqSupport) { |
1112 |
|
if (!pEqSupport->HasSupport()) return; |
1113 |
|
if (pEqSupport->GetBandCount() < 3) { |
1114 |
|
std::cerr << "SfzSignalUnitRack::UpdateEqSettings: EQ should have at least 3 bands\n"; |
1115 |
|
return; |
1116 |
|
} |
1117 |
|
|
1118 |
|
::sfz::Region* const pRegion = pVoice->pRegion; |
1119 |
|
|
1120 |
|
float dB = (suEq1GainOnCC.Active() ? suEq1GainOnCC.GetLevel() : 0) + pRegion->eq1_gain; |
1121 |
|
pEqSupport->SetGain(0, dB); |
1122 |
|
|
1123 |
|
dB = (suEq2GainOnCC.Active() ? suEq2GainOnCC.GetLevel() : 0) + pRegion->eq2_gain; |
1124 |
|
pEqSupport->SetGain(1, dB); |
1125 |
|
|
1126 |
|
dB = (suEq3GainOnCC.Active() ? suEq3GainOnCC.GetLevel() : 0) + pRegion->eq3_gain; |
1127 |
|
pEqSupport->SetGain(2, dB); |
1128 |
|
|
1129 |
|
float freq = (suEq1FreqOnCC.Active() ? suEq1FreqOnCC.GetLevel() : 0) + pRegion->eq1_freq; |
1130 |
|
pEqSupport->SetFreq(0, freq); |
1131 |
|
|
1132 |
|
freq = (suEq2FreqOnCC.Active() ? suEq2FreqOnCC.GetLevel() : 0) + pRegion->eq2_freq; |
1133 |
|
pEqSupport->SetFreq(1, freq); |
1134 |
|
|
1135 |
|
freq = (suEq3FreqOnCC.Active() ? suEq3FreqOnCC.GetLevel() : 0) + pRegion->eq3_freq; |
1136 |
|
pEqSupport->SetFreq(2, freq); |
1137 |
|
|
1138 |
|
float bw = (suEq1BwOnCC.Active() ? suEq1BwOnCC.GetLevel() : 0) + pRegion->eq1_bw; |
1139 |
|
pEqSupport->SetBandwidth(0, bw); |
1140 |
|
|
1141 |
|
bw = (suEq2BwOnCC.Active() ? suEq2BwOnCC.GetLevel() : 0) + pRegion->eq2_bw; |
1142 |
|
pEqSupport->SetBandwidth(1, bw); |
1143 |
|
|
1144 |
|
bw = (suEq3BwOnCC.Active() ? suEq3BwOnCC.GetLevel() : 0) + pRegion->eq3_bw; |
1145 |
|
pEqSupport->SetBandwidth(2, bw); |
1146 |
|
} |
1147 |
|
|
1148 |
}} // namespace LinuxSampler::sfz |
}} // namespace LinuxSampler::sfz |