/[svn]/linuxsampler/trunk/src/engines/sf2/Voice.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/sf2/Voice.cpp

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

revision 2175 by persson, Mon Apr 25 08:12:36 2011 UTC revision 2203 by persson, Sat Jul 9 16:44:27 2011 UTC
# Line 72  namespace LinuxSampler { namespace sf2 { Line 72  namespace LinuxSampler { namespace sf2 {
72          ::sf2::Preset* preset = GetSf2EngineChannel()->pInstrument;          ::sf2::Preset* preset = GetSf2EngineChannel()->pInstrument;
73          for (int i = 0; i < preset->GetRegionCount(); i++) { // TODO: some optimization?          for (int i = 0; i < preset->GetRegionCount(); i++) { // TODO: some optimization?
74              if (preset->GetRegion(i)->pInstrument == pRegion->GetParentInstrument()) {              if (preset->GetRegion(i)->pInstrument == pRegion->GetParentInstrument()) {
75                  reg = preset->GetRegion(i); // TODO: Can the instrument belongs to more than one preset regions?                  reg = preset->GetRegion(i); // TODO: Can the instrument belong to more than one preset region?
76                  break;                  break;
77              }              }
78          }          }
79                    pPresetRegion = reg;
80    
81          RegionInfo ri;          RegionInfo ri;
82          ri.UnityNote = pRegion->GetUnityNote();          ri.UnityNote = pRegion->GetUnityNote();
83          ri.FineTune  = pRegion->GetFineTune(reg) + (pRegion->GetCoarseTune(reg) * 100);          ri.FineTune  = pRegion->GetFineTune(reg) + (pRegion->GetCoarseTune(reg) * 100);
84          ri.Pan       = pRegion->GetPan(reg);          ri.Pan       = pRegion->GetPan(reg);
85          ri.SampleStartOffset = pRegion->startAddrsOffset + pRegion->startAddrsCoarseOffset;          ri.SampleStartOffset = pRegion->startAddrsOffset + pRegion->startAddrsCoarseOffset;
86    
         // sample amplitude  
         ri.EG1PreAttack        = 1000;  
         ri.EG1Attack           = pRegion->GetEG1Attack(reg);  
         ri.EG1Hold             = pRegion->GetEG1Hold(reg);  
         ri.EG1Decay1           = pRegion->GetEG1Decay(reg);  
         ri.EG1Decay2           = pRegion->GetEG1Decay(reg);  
         ri.EG1Sustain          = pRegion->GetEG1Sustain(reg);  
         ri.EG1InfiniteSustain  = true;  
         ri.EG1Release          = pRegion->GetEG1Release(reg);  
   
87          // filter cutoff frequency          // filter cutoff frequency
88          ri.EG2PreAttack        = 1000;          ri.EG2PreAttack        = 1000;
89          ri.EG2Attack           = pRegion->GetEG2Attack(reg);          ri.EG2Attack           = pRegion->GetEG2Attack(reg);
# Line 218  namespace LinuxSampler { namespace sf2 { Line 209  namespace LinuxSampler { namespace sf2 {
209      }      }
210    
211      void Voice::TriggerEG1(const EGInfo& egInfo, double velrelease, double velocityAttenuation, uint sampleRate, uint8_t velocity) {      void Voice::TriggerEG1(const EGInfo& egInfo, double velrelease, double velocityAttenuation, uint sampleRate, uint8_t velocity) {
212          EG1.trigger(uint(RgnInfo.EG1PreAttack),          EG1.trigger(0,
213                      RgnInfo.EG1Attack * egInfo.Attack,                      pRegion->GetEG1Attack(pPresetRegion),
214                      RgnInfo.EG1Hold,                      pRegion->GetEG1Hold(pPresetRegion),
215                      RgnInfo.EG1Decay1 * egInfo.Decay * velrelease,                      pRegion->GetEG1Decay(pPresetRegion),
216                      RgnInfo.EG1Decay2 * egInfo.Decay * velrelease,                      uint(pRegion->GetEG1Sustain(pPresetRegion)),
217                      RgnInfo.EG1InfiniteSustain,                      pRegion->GetEG1Release(pPresetRegion),
                     uint(RgnInfo.EG1Sustain),  
                     RgnInfo.EG1Release * egInfo.Release * velrelease,  
                     velocityAttenuation,  
218                      sampleRate / CONFIG_DEFAULT_SUBFRAGMENT_SIZE);                      sampleRate / CONFIG_DEFAULT_SUBFRAGMENT_SIZE);
219      }      }
220    

Legend:
Removed from v.2175  
changed lines
  Added in v.2203

  ViewVC Help
Powered by ViewVC