/// <summary> /// 返回指定国家频段的最大值 /// </summary> /// <param name="country">国家</param> /// <returns></returns> public static double GetMaxFrequency(FrequencyBand country) { BandParameter para = band.Where(c => c.Country == country).First(); double minFre = para.MinFrequency; double intervalCount = para.IntervalCount; double interval = para.Interval; return(minFre + intervalCount * interval); }
/// <summary> /// 获取频率范围,用于设置读写器工作频率,必须两个参数同时使用才能知晓是哪个频段 /// </summary> /// <param name="MaxFre">表示最小频率的一个字节</param> /// <param name="MinFre">表示最大频率的一个字节</param> /// <returns></returns> public static Tuple <double, double> GetFrequencyRange(byte MinFre, byte MaxFre) { byte bandByte = (byte)((MaxFre & 0xC0) >> 4 | MinFre >> 6); FrequencyBand country = (FrequencyBand)bandByte; int max = MaxFre & 0x3F; int min = MinFre & 0x3F; BandParameter para = band.Where(c => c.Country == country).First(); double maxF = para.MinFrequency + max * para.Interval; double minF = para.MinFrequency + min * para.Interval; return(Tuple.Create(minF, maxF)); }
public XGMultiEQParams(XGMidiIODevice host) : base(host, "MULTI EQ", 0x024000) { bandParams = new BandParameter[5]; ToStringDelegate dBStringFunc = XGMidiParameter.MakePlusMinusToStringFunc("-", "dB", "+0dB", "+", "dB", null); ToStringDelegate QStringFunc = v => (v * 0.1).ToString("0.0"); Type = AddParameter("Type", 0, 0, 4, 0, XGMidiParameter.MakeTableToStringFunc("FLAT", "JAZZ", "POPS", "ROCK", "CLASSIC")); Gain1 = AddParameter("Gain1", 1, 0x34, 0x4C, 0x40, dBStringFunc); Freq1 = AddParameter("Freq1", 2, 0x04, 0x28, 0x04, XGMidiParameter.FreqToString); Q1 = AddParameter("Q1", 3, 0x01, 0x78, 0x07, QStringFunc); Shape1 = AddParameter("Shape1", 4, 0, 1, 0, XGMidiParameter.MakeTableToStringFunc("SHELVING", "PEAKING")); bandParams[0] = new BandParameter(Gain1, Freq1, Q1, Shape1, null); Gain2 = AddParameter("Gain2", 5, 0x34, 0x4C, 0x40, dBStringFunc); Freq2 = AddParameter("Freq2", 6, 0x0E, 0x36, 0x0E, XGMidiParameter.FreqToString); Q2 = AddParameter("Q2", 7, 0x01, 0x78, 0x07, QStringFunc); bandParams[1] = new BandParameter(Gain2, Freq2, Q2, null, null); Gain3 = AddParameter("Gain3", 9, 0x34, 0x4C, 0x40, dBStringFunc); Freq3 = AddParameter("Freq3", 10, 0x0E, 0x36, 0x0E, XGMidiParameter.FreqToString); Q3 = AddParameter("Q3", 11, 0x01, 0x78, 0x07, QStringFunc); bandParams[2] = new BandParameter(Gain3, Freq3, Q3, null, null); Gain4 = AddParameter("Gain4", 13, 0x34, 0x4C, 0x40, dBStringFunc); Freq4 = AddParameter("Freq4", 14, 0x0E, 0x36, 0x0E, XGMidiParameter.FreqToString); Q4 = AddParameter("Q4", 15, 0x01, 0x78, 0x07, QStringFunc); bandParams[3] = new BandParameter(Gain4, Freq4, Q4, null, null); Gain5 = AddParameter("Gain5", 17, 0x34, 0x4C, 0x40, dBStringFunc); Freq5 = AddParameter("Freq5", 18, 0x1C, 0x3A, 0x1C, XGMidiParameter.FreqToString); Q5 = AddParameter("Q5", 19, 0x01, 0x78, 0x07, QStringFunc); Shape5 = AddParameter("Shape5", 20, 0, 1, 0, XGMidiParameter.MakeTableToStringFunc("SHELVING", "PEAKING")); bandParams[4] = new BandParameter(Gain5, Freq5, Q5, null, Shape5); Bands = new ReadOnlyCollection <BandParameter>(bandParams); }
public XGMultiEQParams(XGMidiIODevice host) : base(host, "MULTI EQ", 0x024000) { bandParams = new BandParameter[5]; ToStringDelegate dBStringFunc = XGMidiParameter.MakePlusMinusToStringFunc("-", "dB", "+0dB", "+", "dB", null); ToStringDelegate QStringFunc = v => (v * 0.1).ToString("0.0"); Type = AddParameter("Type", 0, 0, 4, 0, XGMidiParameter.MakeTableToStringFunc("FLAT", "JAZZ", "POPS", "ROCK", "CLASSIC")); Gain1 = AddParameter("Gain1", 1, 0x34, 0x4C, 0x40, dBStringFunc); Freq1 = AddParameter("Freq1", 2, 0x04, 0x28, 0x04, XGMidiParameter.FreqToString); Q1 = AddParameter("Q1", 3, 0x01, 0x78, 0x07, QStringFunc); Shape1 = AddParameter("Shape1", 4, 0, 1, 0, XGMidiParameter.MakeTableToStringFunc("SHELVING", "PEAKING")); bandParams[0] = new BandParameter(Gain1, Freq1, Q1, Shape1, null); Gain2 = AddParameter("Gain2", 5, 0x34, 0x4C, 0x40, dBStringFunc); Freq2 = AddParameter("Freq2", 6, 0x0E, 0x36, 0x0E, XGMidiParameter.FreqToString); Q2 = AddParameter("Q2", 7, 0x01, 0x78, 0x07, QStringFunc); bandParams[1] = new BandParameter(Gain2, Freq2, Q2, null, null); Gain3 = AddParameter("Gain3", 9, 0x34, 0x4C, 0x40, dBStringFunc); Freq3 = AddParameter("Freq3", 10, 0x0E, 0x36, 0x0E, XGMidiParameter.FreqToString); Q3 = AddParameter("Q3", 11, 0x01, 0x78, 0x07, QStringFunc); bandParams[2] = new BandParameter(Gain3, Freq3, Q3, null, null); Gain4 = AddParameter("Gain4", 13, 0x34, 0x4C, 0x40, dBStringFunc); Freq4 = AddParameter("Freq4", 14, 0x0E, 0x36, 0x0E, XGMidiParameter.FreqToString); Q4 = AddParameter("Q4", 15, 0x01, 0x78, 0x07, QStringFunc); bandParams[3] = new BandParameter(Gain4, Freq4, Q4, null, null); Gain5 = AddParameter("Gain5", 17, 0x34, 0x4C, 0x40, dBStringFunc); Freq5 = AddParameter("Freq5", 18, 0x1C, 0x3A, 0x1C, XGMidiParameter.FreqToString); Q5 = AddParameter("Q5", 19, 0x01, 0x78, 0x07, QStringFunc); Shape5 = AddParameter("Shape5", 20, 0, 1, 0, XGMidiParameter.MakeTableToStringFunc("SHELVING", "PEAKING")); bandParams[4] = new BandParameter(Gain5, Freq5, Q5, null, Shape5); Bands = new ReadOnlyCollection<BandParameter>(bandParams); }