AlphaSynth.Bank.Patch.Sf2Patch.LoadGen C# (CSharp) Method

LoadGen() private method

private LoadGen ( AlphaSynth.Sf2.Sf2Region region, AssetManager assets ) : void
region AlphaSynth.Sf2.Sf2Region
assets AssetManager
return void
        private void LoadGen(Sf2Region region, AssetManager assets)
        {
            SampleDataAsset sda = assets.SampleAssets[region.Generators[(int)GeneratorEnum.SampleID]];
            gen = new SampleGenerator();
            gen.EndPhase = sda.End + region.Generators[(int)GeneratorEnum.EndAddressOffset] + 32768 * region.Generators[(int)GeneratorEnum.EndAddressCoarseOffset];
            gen.Frequency = sda.SampleRate;
            gen.KeyTrack = region.Generators[(int)GeneratorEnum.ScaleTuning];
            gen.LoopEndPhase = sda.LoopEnd + region.Generators[(int)GeneratorEnum.EndLoopAddressOffset] + 32768 * region.Generators[(int)GeneratorEnum.EndLoopAddressCoarseOffset];
            switch (region.Generators[(int)GeneratorEnum.SampleModes] & 0x3)
            {
                case 0x0:
                case 0x2:
                    gen.LoopMode = LoopMode.NoLoop;
                    break;
                case 0x1:
                    gen.LoopMode = LoopMode.Continuous;
                    break;
                case 0x3:
                    gen.LoopMode = LoopMode.LoopUntilNoteOff;
                    break;
            }
            gen.LoopStartPhase = sda.LoopStart + region.Generators[(int)GeneratorEnum.StartLoopAddressOffset] + 32768 * region.Generators[(int)GeneratorEnum.StartLoopAddressCoarseOffset];
            gen.Offset = 0;
            gen.Period = 1.0;
            if (region.Generators[(int)GeneratorEnum.OverridingRootKey] > -1)
                gen.RootKey = region.Generators[(int)GeneratorEnum.OverridingRootKey];
            else
                gen.RootKey = sda.RootKey;
            gen.StartPhase = sda.Start + region.Generators[(int)GeneratorEnum.StartAddressOffset] + 32768 * region.Generators[(int)GeneratorEnum.StartAddressCoarseOffset];
            gen.Tune = (short)(sda.Tune + region.Generators[(int)GeneratorEnum.FineTune] + 100 * region.Generators[(int)GeneratorEnum.CoarseTune]);
            gen.VelocityTrack = 0;
            ((SampleGenerator)gen).Samples = sda.SampleData;
        }