/[svn]/linuxsampler/trunk/src/engines/sfz/SfzSignalUnitRack.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/sfz/SfzSignalUnitRack.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2222 by iliev, Thu Jul 28 18:24:12 2011 UTC revision 2224 by iliev, Mon Aug 1 19:08:09 2011 UTC
# Line 104  namespace LinuxSampler { namespace sfz { Line 104  namespace LinuxSampler { namespace sfz {
104                    
105          SignalUnit::Increment();          SignalUnit::Increment();
106                    
107          Level = lfo.render();          Level = pLFO->Render();
108      }      }
109            
110      void LFOUnit::Trigger() {      void LFOUnit::Trigger() {
# Line 126  namespace LinuxSampler { namespace sfz { Line 126  namespace LinuxSampler { namespace sfz {
126          lfo.update(0);          lfo.update(0);
127      }      }
128            
129        
130        LFOv2Unit::LFOv2Unit(SfzSignalUnitRack* rack)
131            : LFOUnit(rack), lfos(8), lfo0(1200.0f), lfo1(1200.0f), lfo2(1200.0f),
132              lfo3(1200.0f), lfo4(1200.0f), lfo5(1200.0f), lfo6(1200.0f), lfo7(1200.0f)
133        {
134            lfos.add(&lfo0);
135            lfos.add(&lfo1);
136            lfos.add(&lfo2);
137            lfos.add(&lfo3);
138            lfos.add(&lfo4);
139            lfos.add(&lfo5);
140            lfos.add(&lfo6);
141            lfos.add(&lfo7);
142        }
143        
144      void LFOv2Unit::Trigger() {      void LFOv2Unit::Trigger() {
145          LFOUnit::Trigger();          LFOUnit::Trigger();
146                    
147          lfo.trigger (          if (pLfoInfo->wave < 0 || pLfoInfo->wave >= lfos.size()) pLFO = &lfo0;
148            else pLFO = lfos[pLfoInfo->wave];
149            
150            pLFO->Trigger (
151              pLfoInfo->freq,              pLfoInfo->freq,
152              start_level_mid,              start_level_mid,
153              1, 0, false, GetSampleRate()              1, 0, false, GetSampleRate()
154          );          );
155          lfo.update(0);          pLFO->Update(0);
156      }      }
157            
158      void AmpLFOUnit::Trigger() {      void AmpLFOUnit::Trigger() {
# Line 163  namespace LinuxSampler { namespace sfz { Line 181  namespace LinuxSampler { namespace sfz {
181                    
182          LFOv1Unit::Trigger();          LFOv1Unit::Trigger();
183      }      }
184        
185        CCUnit::CCUnit(SfzSignalUnitRack* rack): CCSignalUnit(rack) { }
186        
187        void CCUnit::Trigger() {
188            for (int i = 0; i < Ctrls.size(); i++) {
189                Ctrls[i].Value = pVoice->GetControllerValue(Ctrls[i].Controller);
190            }
191            CCSignalUnit::Trigger();
192        }
193        
194         void CCUnit::SetCCs(::sfz::Array<int>& cc) {
195             RemoveAllCCs();
196             for (int i = 0; i < 128; i++) {
197                 if (cc[i] != 0) AddCC(i, cc[i]);
198             }
199         }
200    
201    
202      EndpointUnit::EndpointUnit(SfzSignalUnitRack* rack): EndpointSignalUnit(rack) {      EndpointUnit::EndpointUnit(SfzSignalUnitRack* rack): EndpointSignalUnit(rack) {
# Line 229  namespace LinuxSampler { namespace sfz { Line 263  namespace LinuxSampler { namespace sfz {
263          p = u->Active() ? RTMath::CentsToFreqRatioUnlimited(u->GetLevel() * u->depth) : 1;          p = u->Active() ? RTMath::CentsToFreqRatioUnlimited(u->GetLevel() * u->depth) : 1;
264                    
265          PitchLFOUnit* u2 = &(GetRack()->suPitchLFO);          PitchLFOUnit* u2 = &(GetRack()->suPitchLFO);
266          p *= u2->Active() ? RTMath::CentsToFreqRatioUnlimited(u2->GetLevel() * u2->pLfoInfo->pitch) : 1;          CCSignalUnit* u3 = &(GetRack()->suPitchLFO.suDepthCC);
267                    float f = u3->Active() ? u3->GetLevel() : 0;
268            p *= u2->Active() ? RTMath::CentsToFreqRatioUnlimited(u2->GetLevel() * (u2->pLfoInfo->pitch + f)) : 1;
269          return p;          return p;
270      }      }
271            
# Line 272  namespace LinuxSampler { namespace sfz { Line 307  namespace LinuxSampler { namespace sfz {
307      {      {
308          suEndpoint.pVoice = suVolEG.pVoice = suFilEG.pVoice = suPitchEG.pVoice = voice;          suEndpoint.pVoice = suVolEG.pVoice = suFilEG.pVoice = suPitchEG.pVoice = voice;
309          suAmpLFO.pVoice = suPitchLFO.pVoice = suFilLFO.pVoice = voice;          suAmpLFO.pVoice = suPitchLFO.pVoice = suFilLFO.pVoice = voice;
310            suPitchLFO.suDepthCC.pVoice = voice;
311                    
312          for (int i = 0; i < EGs.capacity(); i++) {          for (int i = 0; i < EGs.capacity(); i++) {
313              EGs[i] = new EGv2Unit(this);              EGs[i] = new EGv2Unit(this);
# Line 352  namespace LinuxSampler { namespace sfz { Line 388  namespace LinuxSampler { namespace sfz {
388              }              }
389          }          }
390                    
391            suPitchLFO.suDepthCC.SetCCs(pRegion->pitchlfo_depthcc);
392            
393          Units.clear();          Units.clear();
394                    
395          Units.add(&suVolEG);          Units.add(&suVolEG);
396          Units.add(&suFilEG);          Units.add(&suFilEG);
397          Units.add(&suPitchEG);          Units.add(&suPitchEG);
398          Units.add(&suPitchLFO);          Units.add(&suPitchLFO);
399            Units.add(&suPitchLFO.suDepthCC);
400          Units.add(&suAmpLFO);          Units.add(&suAmpLFO);
401          Units.add(&suFilLFO);          Units.add(&suFilLFO);
402                    

Legend:
Removed from v.2222  
changed lines
  Added in v.2224

  ViewVC Help
Powered by ViewVC