public void Load(Sf2Region region, AssetManager assets) { this.exGroup = region.Generators[(int)GeneratorEnum.ExclusiveClass]; this.exTarget = exGroup; iniFilterFc = region.Generators[(int)GeneratorEnum.InitialFilterCutoffFrequency]; filterQ = SynthHelper.DBtoLinear(region.Generators[(int)GeneratorEnum.InitialFilterQ] / 10.0); initialAttn = -region.Generators[(int)GeneratorEnum.InitialAttenuation] / 10f; keyOverride = region.Generators[(int)GeneratorEnum.KeyNumber]; velOverride = region.Generators[(int)GeneratorEnum.Velocity]; keynumToModEnvHold = region.Generators[(int)GeneratorEnum.KeyNumberToModulationEnvelopeHold]; keynumToModEnvDecay = region.Generators[(int)GeneratorEnum.KeyNumberToModulationEnvelopeDecay]; keynumToVolEnvHold = region.Generators[(int)GeneratorEnum.KeyNumberToVolumeEnvelopeHold]; keynumToVolEnvDecay = region.Generators[(int)GeneratorEnum.KeyNumberToVolumeEnvelopeDecay]; pan = new PanComponent(region.Generators[(int)GeneratorEnum.Pan] / 500f, PanFormulaEnum.Neg3dBCenter); modLfoToPitch = region.Generators[(int)GeneratorEnum.ModulationLFOToPitch]; vibLfoToPitch = region.Generators[(int)GeneratorEnum.VibratoLFOToPitch]; modEnvToPitch = region.Generators[(int)GeneratorEnum.ModulationEnvelopeToPitch]; modLfoToFilterFc = region.Generators[(int)GeneratorEnum.ModulationLFOToFilterCutoffFrequency]; modEnvToFilterFc = region.Generators[(int)GeneratorEnum.ModulationEnvelopeToFilterCutoffFrequency]; modLfoToVolume = region.Generators[(int)GeneratorEnum.ModulationLFOToVolume] / 10f; LoadGen(region, assets); LoadEnvelopes(region); LoadLfos(region); LoadFilter(region); }
public override void Load(DescriptorList description, AssetManager assets) { //read in sfz params CustomDescriptor sfzConfig = description.FindCustomDescriptor("sfzi"); exTarget = (int)sfzConfig.Objects[0]; exGroup = (int)sfzConfig.Objects[1]; sfzVolume = (float)sfzConfig.Objects[2]; sfzPan = new PanComponent((float)sfzConfig.Objects[3], PanFormulaEnum.Neg3dBCenter); ampKeyTrack = (float)sfzConfig.Objects[4]; ampRootKey = (byte)sfzConfig.Objects[5]; ampVelTrack = (float)sfzConfig.Objects[6]; //read in the generator info GeneratorDescriptor gdes = description.GenDescriptions[0]; if (gdes.SamplerType != WaveformEnum.SampleData) throw new Exception("Sfz can only support sample data generators."); gen = gdes.ToGenerator(assets); //read in the envelope info ptch_env = description.EnvelopeDescriptions[0]; fltr_env = description.EnvelopeDescriptions[1]; amp_env = description.EnvelopeDescriptions[2]; //read in the lfo info ptch_lfo = description.LfoDescriptions[0]; fltr_lfo = description.LfoDescriptions[1]; amp_lfo = description.LfoDescriptions[2]; //read in the filter info fltr = description.FilterDescriptions[0]; }