/[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 2021 by iliev, Fri Oct 30 16:36:20 2009 UTC revision 2027 by iliev, Tue Nov 3 19:27:42 2009 UTC
# Line 66  namespace LinuxSampler { namespace sf2 { Line 66  namespace LinuxSampler { namespace sf2 {
66      }      }
67    
68      Voice::RegionInfo Voice::GetRegionInfo() {      Voice::RegionInfo Voice::GetRegionInfo() {
69            ::sf2::Region* reg = NULL;
70            ::sf2::Preset* preset = GetSf2EngineChannel()->pInstrument;
71            for (int i = 0; i < preset->GetRegionCount(); i++) { // TODO: some optimization?
72                if (preset->GetRegion(i)->pInstrument == pRegion->GetParentInstrument()) {
73                    reg = preset->GetRegion(i); // TODO: Can the instrument belongs to more than one preset regions?
74                    break;
75                }
76            }
77            
78          RegionInfo ri;          RegionInfo ri;
79          ri.UnityNote = pRegion->GetUnityNote();          ri.UnityNote = pRegion->GetUnityNote();
80          ri.FineTune  = pRegion->fineTune;          ri.FineTune  = pRegion->GetFineTune(reg) + (pRegion->GetCoarseTune(reg) * 100);
81          ri.Pan       = pRegion->pan;          ri.Pan       = pRegion->GetPan(reg);
82          ri.SampleStartOffset = pRegion->startAddrsOffset + pRegion->startAddrsCoarseOffset;          ri.SampleStartOffset = pRegion->startAddrsOffset + pRegion->startAddrsCoarseOffset;
83    
84            // sample amplitude
85          ri.EG1PreAttack        = 1000;          ri.EG1PreAttack        = 1000;
86          ri.EG1Attack           = pRegion->EG1Attack;          ri.EG1Attack           = pRegion->GetEG1Attack(reg);
87          ri.EG1Hold             = pRegion->EG1Hold;          ri.EG1Hold             = pRegion->GetEG1Hold(reg);
88          ri.EG1Decay1           = pRegion->EG1Decay;          ri.EG1Decay1           = pRegion->GetEG1Decay(reg);
89          ri.EG1Decay2           = pRegion->EG1Decay;          ri.EG1Decay2           = pRegion->GetEG1Decay(reg);
90          ri.EG1Sustain          = pRegion->EG1Sustain;          ri.EG1Sustain          = pRegion->GetEG1Sustain(reg);
91          ri.EG1InfiniteSustain  = true;          ri.EG1InfiniteSustain  = true;
92          ri.EG1Release          = pRegion->EG1Release;          ri.EG1Release          = pRegion->GetEG1Release(reg);
93    
94            // filter cutoff frequency
95          ri.EG2PreAttack        = 1000;          ri.EG2PreAttack        = 1000;
96          ri.EG2Attack           = pRegion->EG2Attack;          ri.EG2Attack           = pRegion->GetEG2Attack(reg);
97          //ri.EG2Hold             = pRegion->EG2Hold; // TODO:          //ri.EG2Hold             = pRegion->EG2Hold; // TODO:
98          ri.EG2Decay1           = pRegion->EG2Decay;          ri.EG2Decay1           = pRegion->GetEG2Decay(reg);
99          ri.EG2Decay2           = pRegion->EG2Decay;          ri.EG2Decay2           = pRegion->GetEG2Decay(reg);
100          ri.EG2Sustain          = pRegion->EG2Sustain;          ri.EG2Sustain          = pRegion->GetEG2Sustain(reg);
101          ri.EG2InfiniteSustain  = true;          ri.EG2InfiniteSustain  = true;
102          ri.EG2Release          = pRegion->EG2Release;          ri.EG2Release          = pRegion->GetEG2Release(reg);
103    
104            // sample pitch
105          ri.EG3Attack     = 0; // TODO:          ri.EG3Attack     = 0; // TODO:
106          ri.EG3Depth      = 0; // TODO:          ri.EG3Depth      = 0; // TODO:
107          ri.VCFEnabled    = false; // TODO:          ri.VCFEnabled    = false; // TODO:

Legend:
Removed from v.2021  
changed lines
  Added in v.2027

  ViewVC Help
Powered by ViewVC