public static SteinbergFrequency ToSteinbergFrequency(this FabfilterProQ3 eq) { var frequency = new SteinbergFrequency(); // Frequency only support lowcut on the 1st band and highcut on the 8th band bool hasLowCutBand = eq.Bands.Any(band => band.Shape == ProQ3Shape.LowCut); bool hasHighCutBand = eq.Bands.Any(band => band.Shape == ProQ3Shape.HighCut); // get remaining bands that are not lowcut or highcut and sort by frequency var band2To7 = eq.Bands.Where(b => b.Enabled) .Where(b => b.Shape != ProQ3Shape.LowCut) .Where(b => b.Shape != ProQ3Shape.HighCut) .OrderBy(s => s.Frequency); if (hasLowCutBand) { int bandNumber = 1; var lowCutBand = eq.Bands.Where(band => band.Shape == ProQ3Shape.LowCut) .OrderBy(s => s.Frequency).ElementAt(0); SetBand(lowCutBand, bandNumber, frequency); } if (hasHighCutBand) { int bandNumber = 8; var highCutBand = eq.Bands.Where(band => band.Shape == ProQ3Shape.HighCut) .OrderByDescending(s => s.Frequency).ElementAt(0); SetBand(highCutBand, bandNumber, frequency); } // rest of the bands (2-7) int startIndex = hasLowCutBand ? 2 : 1; int endIndex = hasHighCutBand ? 7 : 8; int index = 0; for (int bandNumber = startIndex; bandNumber <= endIndex; bandNumber++, index++) { var band = band2To7.ElementAtOrDefault(index); SetBand(band, bandNumber, frequency); } return(frequency); }
/// <summary> /// Initialize a VstPreset using a file /// </summary> /// <param name="file">filename</param> /// <returns>a VstPreset object</returns> public static T GetVstPreset <T>(string file) where T : VstPreset { VstPreset vstPreset = new SteinbergVstPreset(file); VstPreset preset = null; switch (vstPreset.Vst3ID) { case VstPreset.VstIDs.SteinbergCompressor: preset = new SteinbergCompressor(); preset.Parameters = vstPreset.Parameters; preset.FXP = vstPreset.FXP; break; case VstPreset.VstIDs.SteinbergFrequency: preset = new SteinbergFrequency(); preset.Parameters = vstPreset.Parameters; preset.FXP = vstPreset.FXP; break; case VstPreset.VstIDs.SteinbergREVerence: preset = new SteinbergREVerence(); preset.Parameters = vstPreset.Parameters; preset.FXP = vstPreset.FXP; // init wave paths and images from the parameters var reverence = preset as SteinbergREVerence; reverence.InitFromParameters(); break; case VstPreset.VstIDs.FabFilterProQ: case VstPreset.VstIDs.FabFilterProQx64: preset = new FabfilterProQ(); preset.Parameters = vstPreset.Parameters; preset.FXP = vstPreset.FXP; // init variables from the parameters or FXP object var fabFilterProQ = preset as FabfilterProQ; fabFilterProQ.InitFromParameters(); break; case VstPreset.VstIDs.FabFilterProQ2: case VstPreset.VstIDs.FabFilterProQ2x64: preset = new FabfilterProQ2(); preset.Parameters = vstPreset.Parameters; preset.FXP = vstPreset.FXP; // init variables from the parameters or FXP object var fabFilterProQ2 = preset as FabfilterProQ2; fabFilterProQ2.InitFromParameters(); break; case VstPreset.VstIDs.FabFilterProQ3: preset = new FabfilterProQ3(); preset.Parameters = vstPreset.Parameters; preset.FXP = vstPreset.FXP; // init variables from the parameters or FXP object var fabFilterProQ3 = preset as FabfilterProQ3; fabFilterProQ3.InitFromParameters(); break; case VstPreset.VstIDs.WavesSSLChannelStereo: VstPreset.Parameter sslChannelXml = null; vstPreset.Parameters.TryGetValue("XmlContent", out sslChannelXml); if (sslChannelXml != null && sslChannelXml.String != null) { List <WavesSSLChannel> channelPresetList = WavesPreset.ParseXml <WavesSSLChannel>(sslChannelXml.String); // a single vstpreset likely (?) only contain one waves ssl preset, use the first preset = channelPresetList.FirstOrDefault(); preset.Parameters = vstPreset.Parameters; preset.FXP = vstPreset.FXP; } break; case VstPreset.VstIDs.WavesSSLCompStereo: VstPreset.Parameter sslCompXml = null; vstPreset.Parameters.TryGetValue("XmlContent", out sslCompXml); if (sslCompXml != null && sslCompXml.String != null) { List <WavesSSLComp> channelPresetList = WavesPreset.ParseXml <WavesSSLComp>(sslCompXml.String); // a single vstpreset likely (?) only contain one waves ssl preset, use the first preset = channelPresetList.FirstOrDefault(); preset.Parameters = vstPreset.Parameters; preset.FXP = vstPreset.FXP; } break; case VstPreset.VstIDs.NIKontakt5: preset = new NIKontakt5(); preset.Parameters = vstPreset.Parameters; preset.FXP = vstPreset.FXP; break; case VstPreset.VstIDs.EastWestPlay: preset = new EastWestPlay(); preset.Parameters = vstPreset.Parameters; preset.FXP = vstPreset.FXP; break; default: preset = vstPreset; break; } preset.Vst3ID = vstPreset.Vst3ID; return(preset as T); }