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

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

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

revision 1700 by persson, Sun Feb 17 12:40:59 2008 UTC revision 1748 by persson, Sun Jun 22 14:46:46 2008 UTC
# Line 781  namespace LinuxSampler { namespace gig { Line 781  namespace LinuxSampler { namespace gig {
781          RTList<Event>::Iterator itCCEvent = pEngineChannel->pEvents->first();          RTList<Event>::Iterator itCCEvent = pEngineChannel->pEvents->first();
782          RTList<Event>::Iterator itNoteEvent = pEngineChannel->pMIDIKeyInfo[MIDIKey].pEvents->first();          RTList<Event>::Iterator itNoteEvent = pEngineChannel->pMIDIKeyInfo[MIDIKey].pEvents->first();
783    
784          if (Skip) { // skip events that happened before this voice was triggered          if (itTriggerEvent) { // skip events that happened before this voice was triggered
785              while (itCCEvent && itCCEvent->FragmentPos() <= Skip) ++itCCEvent;              while (itCCEvent && itCCEvent->FragmentPos() <= Skip) ++itCCEvent;
786              while (itNoteEvent && itNoteEvent->FragmentPos() <= Skip) ++itNoteEvent;              while (itNoteEvent && itNoteEvent->FragmentPos() <= Skip) ++itNoteEvent;
787          }          }
788    
789          uint killPos;          uint killPos;
790          if (itKillEvent) killPos = RTMath::Min(itKillEvent->FragmentPos(), pEngine->MaxFadeOutPos);          if (itKillEvent) {
791                int maxFadeOutPos = Samples - pEngine->MinFadeOutSamples;
792                if (maxFadeOutPos < 0) {
793                    // There's not enough space in buffer to do a fade out
794                    // from max volume (this can only happen for audio
795                    // drivers that use Samples < MaxSamplesPerCycle).
796                    // End the EG1 here, at pos 0, with a shorter max fade
797                    // out time.
798                    EG1.enterFadeOutStage(Samples / CONFIG_DEFAULT_SUBFRAGMENT_SIZE);
799                    itKillEvent = Pool<Event>::Iterator();
800                } else {
801                    killPos = RTMath::Min(itKillEvent->FragmentPos(), maxFadeOutPos);
802                }
803            }
804    
805          uint i = Skip;          uint i = Skip;
806          while (i < Samples) {          while (i < Samples) {

Legend:
Removed from v.1700  
changed lines
  Added in v.1748

  ViewVC Help
Powered by ViewVC