protected ParameterCollection(XGMidiIODevice host, string name, int baseAddress) { this.Host = host; this.Name = name; this.BaseAddress = baseAddress; this.Parameters = new List<XGMidiParameter>(); }
public XGDrumParams(XGMidiIODevice host, int setup, int note) : base(host, "DRUM SETUP S" + (setup + 1) + "N" + note, 0x300000 | setup << 16 | note << 8) { this.SetupNumber = setup; this.NoteNumber = note; PitchCoarse = AddParameter("PitchCoarse", 0x00, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); PitchFine = AddParameter("PitchFine", 0x01, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); Volume = AddParameter("Volume", 0x02, 0x00, 0x7f, 0x00); AltGroup = AddParameter("AltGroup", 0x03, 0x00, 0x7f, 0x00); Pan = AddParameter("Pan", 0x04, 0x00, 0x7f, 0x40, XGMidiParameter.PanpotPM); Reverb = AddParameter("Reverb", 0x05, 0x00, 0x7f, 0x00); Chorus = AddParameter("Chorus", 0x06, 0x00, 0x7f, 0x00); Variation = AddParameter("Variation", 0x07, 0x00, 0x7f, 0x00); KeyAssign = AddParameter("KeyAssign", 0x08, 0x00, 0x7f, 0x00); RcvNoteOff = AddParameter("RcvNoteOff", 0x09, 0x00, 0x01, 0x00, XGMidiParameter.OnOff); RcvNoteOn = AddParameter("RcvNoteOn", 0x0A, 0x00, 0x01, 0x00, XGMidiParameter.OnOff); LPFCutoffFreq = AddParameter("LPFCutoffFreq", 0x0B, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); LPFResonance = AddParameter("LPFResonance", 0x0C, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EGAttackRate = AddParameter("EGAttackRate", 0x0D, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EGDecay1Rate = AddParameter("EGDecay1Rate", 0x0E, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EGDecay2Rate = AddParameter("EGDecay2Rate", 0x0F, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EQBassGain = AddParameter("EQBassGain", 0x20, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EQTrebleGain = AddParameter("EQTrebleGain", 0x21, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EQBassFreq = AddParameter("EQBassFreq", 0x24, 0x04, 0x28, 0x04, XGMidiParameter.FreqToString); EQTrebleFreq = AddParameter("EQTrebleFreq", 0x25, 0x1C, 0x3A, 0x1C, XGMidiParameter.FreqToString); HPFCutoffFreq = AddParameter("HPFCutoffFreq", 0x50, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); VelocitySensePitch = AddParameter("VelocitySensePitch", 0x60, 0x30, 0x50, 0x40, XGMidiParameter.CenterPM); VelocitySenseLPFCutoff = AddParameter("VelocitySenseLPFCutoff", 0x61, 0x30, 0x50, 0x40, XGMidiParameter.CenterPM); }
protected ParameterCollection(XGMidiIODevice host, string name, int baseAddress) { this.Host = host; this.Name = name; this.BaseAddress = baseAddress; this.Parameters = new List <XGMidiParameter>(); }
public XGMidiParameter(XGMidiIODevice host, string name, int address, int count, int min, int max, int center) { this.Host = host; this.Name = name; this.Address = address; this.Count = count; this.MinValue = min; this.MaxValue = max; this.CenterValue = center; this.ToStringConverter = DefaultToString; this.WriteValueEncoding = v => v; this.ReadValueEncoding = v => v; }
public XGPartParams(XGMidiIODevice host, int channel) : base(host, "Part[" + (channel + 1) + "]", 0x080000 | channel << 8) { Channel = channel; PartMode = AddParameter("PartMode", 0x07, 0x00, 0x05, 0x00, XGMidiParameter.MakeTableToStringFunc("N", "D", "D1", "D2", "D3", "D4")); ProgramMSB = AddParameter("ProgramMSB", 0x01, 0x00, 0x7f, 0x00); ProgramLSB = AddParameter("ProgramLSB", 0x02, 0x00, 0x7f, 0x00); ProgramNumber = AddParameter("ProgramNumber", 0x03, 0x00, 0x7f, 0x00, XGMidiParameter.ProgramNumber); Pan = AddParameter("Pan", 0x0E, 0x00, 0x7f, 0x40, XGMidiParameter.PanpotPM); Volume = AddParameter("Volume", 0x0B, 0x00, 0x7f, 0x00); Reverb = AddParameter("Reverb", 0x13, 0x00, 0x7f, 0x00); Chorus = AddParameter("Chorus", 0x12, 0x00, 0x7f, 0x00); Variation = AddParameter("Variation", 0x14, 0x00, 0x7f, 0x00); DryLevel = AddParameter("DryLevel", 0x11, 0x00, 0x7f, 0x00); LPFCutoffFreq = AddParameter("LPFCutoffFreq", 0x18, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); LPFResonance = AddParameter("LPFResonance", 0x19, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); HPFCutoffFreq = AddParameter("HPFCutoffFreq", 0x020020, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); RcvNoteMessage = AddParameter("RcvNoteMessage", 0x35, 0x00, 0x01, 0x00, XGMidiParameter.OnOff); EGAttack = AddParameter("EGAttack", 0x1A, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EGDecay = AddParameter("EGDecay", 0x1B, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EGRelease = AddParameter("EGRelease", 0x1C, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); VibRate = AddParameter("VibRate", 0x15, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); VibDepth = AddParameter("VibDepth", 0x16, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); VibDelay = AddParameter("VibDelay", 0x17, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EQBassFreq = AddParameter("EQBassFreq", 0x76, 0x04, 0x28, 0x0C, XGMidiParameter.FreqToString); EQBassGain = AddParameter("EQBassGain", 0x72, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EQTrebleFreq = AddParameter("EQTrebleFreq", 0x77, 0x1C, 0x3A, 0x36, XGMidiParameter.FreqToString); EQTrebleGain = AddParameter("EQTrebleGain", 0x73, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); MWPitchControl = AddParameter("MWPitchControl", 0x1D, 0x28, 0x58, 0x40, XGMidiParameter.CenterPM); MWLPFControl = AddParameter("MWLPFControl", 0x1E, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); MWAmpControl = AddParameter("MWAmpControl", 0x1F, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); MWLFOPModDepth = AddParameter("MWLFOPModDepth", 0x20, 0x00, 0x7f, 0x00); MWLFOFModDepth = AddParameter("MWLFOFModDepth", 0x21, 0x00, 0x7f, 0x00); MWLFOAModDepth = AddParameter("MWLFOAModDepth", 0x22, 0x00, 0x7f, 0x00); }
public MainForm() { this.Font = new System.Drawing.Font(Config.FontFace, Config.FontSize); this.Text = Util.EntryAssemblyInformation.Title; Device = new XGMidiIODevice(); Device.ResetXG(); InitializeComponent(); this.midiDeviceSelector1.SetDevice(Device); this.midiDeviceSelector1.SizeChanged += (s, e) => FitClientSize(); this.partParameterGrid1.SetDevice(Device); this.partParameterGrid1.SizeChanged += (s, e) => FitClientSize(); this.drumParameterGrid1.SetDevice(Device); this.drumParameterGrid1.SizeChanged += (s, e) => FitClientSize(); this.drumParameterGrid2.SetDevice(Device); this.drumParameterGrid2.SizeChanged += (s, e) => FitClientSize(); this.drumParameterGrid3.SetDevice(Device); this.drumParameterGrid3.SizeChanged += (s, e) => FitClientSize(); this.drumParameterGrid4.SetDevice(Device); this.drumParameterGrid4.SizeChanged += (s, e) => FitClientSize(); this.effectParameterGrid1.SetDevice(Device); this.effectParameterGrid1.SizeChanged += (s, e) => FitClientSize(); this.effectParameterGrid2.SetDevice(Device); this.effectParameterGrid2.SizeChanged += (s, e) => FitClientSize(); this.multiEQParameterGrid1.SetDevice(Device); this.multiEQParameterGrid1.SizeChanged += (s, e) => FitClientSize(); x_ = this.Size.Width - tabControl1.SelectedTab.ClientSize.Width; y_ = this.Size.Height - tabControl1.SelectedTab.ClientSize.Height; FitClientSize(); }
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 void SetDevice(XGMidiIODevice device) { Debug.Assert(this.Device == null); this.Device = device; comboBoxMidiInSelect.Items.AddRange(MidiIn.GetDeviceNames()); comboBoxMidiOutSelect.Items.AddRange(MidiOut.GetDeviceNames()); int inIndex = Array.IndexOf(MidiIn.GetDeviceNames(), Config.lastSelectedMidiIn); if (inIndex < 0) { inIndex = 0; } if (comboBoxMidiInSelect.Items.Count > 0) { comboBoxMidiInSelect.SelectedIndex = inIndex; } int outIndex = Array.IndexOf(MidiOut.GetDeviceNames(), Config.lastSelectedMidiOut); if (outIndex < 0) { outIndex = 0; } if (comboBoxMidiOutSelect.Items.Count > 0) { comboBoxMidiOutSelect.SelectedIndex = outIndex; } pictureBox1.Height = pictureBox1.Width; timer1.Interval = 10; timer1.Tick += Timer1_Tick; timer1.Enabled = true; CreateXGPControls(); }
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (Device != null) { Device.Dispose(); Device = null; } }
public XGEffectParams(XGMidiIODevice host, XGEffectBlockType type) : base(host, "Effect[" + type + "]", GetEffectBlockAddress(type)) { BlockType = type; efctParams = new XGMidiParameter[16]; int address = 0; EffectType = AddParameter("EffectType", address++, 0x00, 0x00, 0x00); EffectType.ToStringConverter = v => XGEffect.GetEffectByTypeValue(v << 1 & 0x7F00 | v & 0x7F).Name; EffectType.Count = 2; address++; bool isSystemEffect = type <= XGEffectBlockType.Variation; bool isInsEffect = type >= XGEffectBlockType.Variation; bool hasSendToRev = type == XGEffectBlockType.Chorus || type == XGEffectBlockType.Variation; bool hasSendToCho = type == XGEffectBlockType.Variation; bool hasVarConnect = type == XGEffectBlockType.Variation; for (int i = 0; i < 10; i++) { if (type != XGEffectBlockType.Variation) { efctParams[i] = AddParameter("Parameter " + i, address, 0, 127, 0); address += 1; } else { efctParams[i] = AddParameter("Parameter " + i, address, 0, 16384, 0); efctParams[i].Count = 2; address += 2; } } Return = isSystemEffect ? AddParameter("Return", address++, 0x00, 0x7f, 0x00) : null; Pan = isSystemEffect ? AddParameter("Pan", address++, 0x00, 0x7f, 0x40, XGMidiParameter.PanpotPM) : null; SendToReverb = hasSendToRev ? AddParameter("SendToReverb", address++, 0x00, 0x7f, 0x00) : null; SendToChorus = hasSendToCho ? AddParameter("SendToChorus", address++, 0x00, 0x7f, 0x00) : null; VariationConnect = hasVarConnect ? AddParameter("VariationConnect", address++, 0x00, 0x01, 0x00, v => v == 0 ? "Insertion" : v == 1 ? "System" : "? " + v) : null; if (isInsEffect) { PartNumber = AddParameter("PartNumber", address++, 0, 66, 0); PartNumber.ToStringConverter = v => v == 66 ? "OFF" : v < 64 ? (v + 1).ToString() : v == 64 ? "AD1" : v == 65 ? "AD2" : "? " + v; PartNumber.ReadValueEncoding = v => v != 127 ? v : 66; PartNumber.WriteValueEncoding = v => v != 66 ? v : 127; } for (int i = 0; i < 6; i++) { int subBlock = type == XGEffectBlockType.Reverb ? 0x10 : type == XGEffectBlockType.Chorus ? 0x10 : type == XGEffectBlockType.Variation ? 0x30 : type >= XGEffectBlockType.Insertion1 ? 0x20 : 0; efctParams[10 + i] = AddParameter("---", subBlock + i, 0, 127, 0); address += 1; } EffectParameters = new ReadOnlyCollection <XGMidiParameter>(efctParams); ReLink(); }
public XGPartParams(XGMidiIODevice host, int channel) : base(host, "Part[" + (channel + 1) + "]", 0x080000 | channel << 8) { Channel = channel; PartMode = AddParameter("PartMode", 0x07, 0x00, 0x05, 0x00, XGMidiParameter.MakeTableToStringFunc("N","D","D1","D2","D3","D4")); ProgramMSB = AddParameter("ProgramMSB", 0x01, 0x00, 0x7f, 0x00); ProgramLSB = AddParameter("ProgramLSB", 0x02, 0x00, 0x7f, 0x00); ProgramNumber = AddParameter("ProgramNumber", 0x03, 0x00, 0x7f, 0x00, XGMidiParameter.ProgramNumber); Pan = AddParameter("Pan", 0x0E, 0x00, 0x7f, 0x40, XGMidiParameter.PanpotPM); Volume = AddParameter("Volume", 0x0B, 0x00, 0x7f, 0x00); Reverb = AddParameter("Reverb", 0x13, 0x00, 0x7f, 0x00); Chorus = AddParameter("Chorus", 0x12, 0x00, 0x7f, 0x00); Variation = AddParameter("Variation", 0x14, 0x00, 0x7f, 0x00); DryLevel = AddParameter("DryLevel", 0x11, 0x00, 0x7f, 0x00); LPFCutoffFreq = AddParameter("LPFCutoffFreq", 0x18, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); LPFResonance = AddParameter("LPFResonance", 0x19, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); HPFCutoffFreq = AddParameter("HPFCutoffFreq", 0x020020, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); RcvNoteMessage = AddParameter("RcvNoteMessage", 0x35, 0x00, 0x01, 0x00, XGMidiParameter.OnOff); EGAttack = AddParameter("EGAttack", 0x1A, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EGDecay = AddParameter("EGDecay", 0x1B, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EGRelease = AddParameter("EGRelease", 0x1C, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); VibRate = AddParameter("VibRate", 0x15, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); VibDepth = AddParameter("VibDepth", 0x16, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); VibDelay = AddParameter("VibDelay", 0x17, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EQBassFreq = AddParameter("EQBassFreq", 0x76, 0x04, 0x28, 0x0C, XGMidiParameter.FreqToString); EQBassGain = AddParameter("EQBassGain", 0x72, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); EQTrebleFreq = AddParameter("EQTrebleFreq", 0x77, 0x1C, 0x3A, 0x36, XGMidiParameter.FreqToString); EQTrebleGain = AddParameter("EQTrebleGain", 0x73, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); MWPitchControl = AddParameter("MWPitchControl", 0x1D, 0x28, 0x58, 0x40, XGMidiParameter.CenterPM); MWLPFControl = AddParameter("MWLPFControl", 0x1E, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); MWAmpControl = AddParameter("MWAmpControl", 0x1F, 0x00, 0x7f, 0x40, XGMidiParameter.CenterPM); MWLFOPModDepth = AddParameter("MWLFOPModDepth", 0x20, 0x00, 0x7f, 0x00); MWLFOFModDepth = AddParameter("MWLFOFModDepth", 0x21, 0x00, 0x7f, 0x00); MWLFOAModDepth = AddParameter("MWLFOAModDepth", 0x22, 0x00, 0x7f, 0x00); }
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 XGEffectParams(XGMidiIODevice host, XGEffectBlockType type) : base(host, "Effect[" + type + "]", GetEffectBlockAddress(type)) { BlockType = type; efctParams = new XGMidiParameter[16]; int address = 0; EffectType = AddParameter("EffectType", address++, 0x00, 0x00, 0x00); EffectType.ToStringConverter = v => XGEffect.GetEffectByTypeValue(v << 1 & 0x7F00 | v & 0x7F).Name; EffectType.Count = 2; address++; bool isSystemEffect = type <= XGEffectBlockType.Variation; bool isInsEffect = type >= XGEffectBlockType.Variation; bool hasSendToRev = type == XGEffectBlockType.Chorus || type == XGEffectBlockType.Variation; bool hasSendToCho = type == XGEffectBlockType.Variation; bool hasVarConnect = type == XGEffectBlockType.Variation; for (int i = 0; i < 10; i++) { if (type != XGEffectBlockType.Variation) { efctParams[i] = AddParameter("Parameter " + i, address, 0, 127, 0); address += 1; } else { efctParams[i] = AddParameter("Parameter " + i, address, 0, 16384, 0); efctParams[i].Count = 2; address += 2; } } Return = isSystemEffect ? AddParameter("Return", address++, 0x00, 0x7f, 0x00) : null; Pan = isSystemEffect ? AddParameter("Pan", address++, 0x00, 0x7f, 0x40, XGMidiParameter.PanpotPM) : null; SendToReverb = hasSendToRev ? AddParameter("SendToReverb", address++, 0x00, 0x7f, 0x00) : null; SendToChorus = hasSendToCho ? AddParameter("SendToChorus", address++, 0x00, 0x7f, 0x00) : null; VariationConnect = hasVarConnect ? AddParameter("VariationConnect", address++, 0x00, 0x01, 0x00, v => v == 0 ? "Insertion" : v == 1 ? "System" : "? " + v) : null; if (isInsEffect) { PartNumber = AddParameter("PartNumber", address++, 0, 66, 0); PartNumber.ToStringConverter = v => v == 66 ? "OFF" : v < 64 ? (v + 1).ToString() : v == 64 ? "AD1" : v == 65 ? "AD2" : "? " + v; PartNumber.ReadValueEncoding = v => v != 127 ? v : 66; PartNumber.WriteValueEncoding = v => v != 66 ? v : 127; } for (int i = 0; i < 6; i++) { int subBlock = type == XGEffectBlockType.Reverb ? 0x10 : type == XGEffectBlockType.Chorus ? 0x10 : type == XGEffectBlockType.Variation ? 0x30 : type >= XGEffectBlockType.Insertion1 ? 0x20 : 0; efctParams[10 + i] = AddParameter("---", subBlock + i, 0, 127, 0); address += 1; } EffectParameters = new ReadOnlyCollection<XGMidiParameter>(efctParams); ReLink(); }
public void SetDevice(XGMidiIODevice device) { Debug.Assert(this.Device == null); this.Device = device; OnSetDevice(); AdjustWindowSize(); }