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

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

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

revision 2311 by persson, Sat Feb 11 11:08:09 2012 UTC revision 2317 by persson, Sun Feb 19 12:13:19 2012 UTC
# Line 108  namespace sfz Line 108  namespace sfz
108    
109      Sample* Region::GetSample(bool create)      Sample* Region::GetSample(bool create)
110      {      {
111          if(pSample == NULL && create) {          if (pSample == NULL && create) {
112              uint i = offset ? *offset : 0;              uint i = offset ? *offset : 0;
113              int e = end ? *end : -2;              Sample* sf = GetInstrument()->GetSampleManager()->FindSample(sample, i, end);
             Sample* sf = GetInstrument()->GetSampleManager()->FindSample(sample, i, e);  
114              if (sf != NULL) pSample = sf; // Reuse already created sample              if (sf != NULL) pSample = sf; // Reuse already created sample
115              else pSample = new Sample(sample, false, i, e);              else pSample = new Sample(sample, false, i, end);
116              GetInstrument()->GetSampleManager()->AddSampleConsumer(pSample, this);              GetInstrument()->GetSampleManager()->AddSampleConsumer(pSample, this);
117          }          }
118          return pSample;          return pSample;
# Line 170  namespace sfz Line 169  namespace sfz
169      }      }
170    
171      bool Region::HasLoop() {      bool Region::HasLoop() {
172          bool b = loop_mode == ::sfz::LOOP_UNSET ? pSample->GetLoops() :          bool b = loop_mode == LOOP_UNSET ? pSample->GetLoops() :
173              (loop_mode == ::sfz::LOOP_CONTINUOUS || loop_mode == ::sfz::LOOP_SUSTAIN);              (loop_mode == LOOP_CONTINUOUS || loop_mode == LOOP_SUSTAIN);
174          return b && GetLoopStart() && GetLoopEnd() && GetLoopEnd() > GetLoopStart();          return b && GetLoopEnd() > GetLoopStart();
175      }      }
176    
177      uint Region::GetLoopStart() {      uint Region::GetLoopStart() {
# Line 310  namespace sfz Line 309  namespace sfz
309          delay.unset(); delay_random.unset();          delay.unset(); delay_random.unset();
310          delay_beats.unset(); stop_beats.unset();          delay_beats.unset(); stop_beats.unset();
311          delay_samples.unset();          delay_samples.unset();
312          end.unset();          end = 0;
313          loop_crossfade.unset();          loop_crossfade.unset();
314          offset.unset(); offset_random.unset();          offset.unset(); offset_random.unset();
315          loop_mode = LOOP_UNSET;          loop_mode = LOOP_UNSET;
# Line 1021  namespace sfz Line 1020  namespace sfz
1020                          velcurve[v] = v * v / (127.0 * 127.0);                          velcurve[v] = v * v / (127.0 * 127.0);
1021                      }                      }
1022                  }                  }
   
                 // apply amp_veltrack  
                 float offset = -pRegion->amp_veltrack;  
                 if (offset <= 0) offset += 100;  
                 for (int v = 0 ; v < 128 ; v++) {  
                     velcurve[v] = (offset + pRegion->amp_veltrack * velcurve[v]) / 100;  
                 }  
1023              }              }
1024          }          }
1025    

Legend:
Removed from v.2311  
changed lines
  Added in v.2317

  ViewVC Help
Powered by ViewVC