public MidiCom() { this.context = SynchronizationContext.Current; this.builder = new ChannelMessageBuilder(); this.m_Timer = new System.Timers.Timer(1000.0); this.m_Timer.Elapsed += (ElapsedEventHandler)((sender, e) => MidiCom.MyElapsedMethod(sender, e, this)); this.m_Timer.Enabled = true; }
private static void MyElapsedMethod(object sender, ElapsedEventArgs e, MidiCom Reference) { Reference.context.Post((SendOrPostCallback)(dummy => Reference.TimerTick()), (object)null); }
public Form1() { Logger.CreateLogSpace(); Logger.Log("Starting Code Editor"); Form1.CurrentForm1 = this; this.InitializeComponent(); this.tooltip = new ToolTip(); this.ClientSize = new Size(1264, 728); this.FormBorderStyle = FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.m_DraggingKnobIndex = -1; this.m_PushingButton = -1; Form1.MidiEnabled = false; this.AllowDrop = true; this.DragEnter += new DragEventHandler(this.Form1_DragEnter); this.DragDrop += new DragEventHandler(this.Form1_DragDrop); this.Text = "CODE Patch Editor"; this.DoubleBuffered = true; this.Paint += new PaintEventHandler(this.Form1_Paint); Form1.m_CurrentPatch = new Patch(); this.openFileDialog1.Title = "Browse MCE Files"; this.openFileDialog1.DefaultExt = "mce"; this.openFileDialog1.CheckFileExists = true; this.openFileDialog1.CheckPathExists = true; this.openFileDialog1.Filter = "MCE files (*.mce)|*.mce|All files (*.*)|*.*"; this.saveFileDialog1.Title = "Save MCE File"; this.saveFileDialog1.DefaultExt = "mce"; this.saveFileDialog1.Filter = "MCE files (*.mce)|*.mce|All files (*.*)|*.*"; this.m_OnOffButtons = new OnOffButton[7]; for (int index = 0; index < 7; ++index) { this.m_OnOffButtons[index] = new OnOffButton(); } this.m_AllKnobs = new ButtonControl[23]; for (int index = 0; index < 23; ++index) { this.m_AllKnobs[index] = new ButtonControl(); } this.m_BitmapButtons = new BitmapButton[13]; for (int index = 0; index < 13; ++index) { this.m_BitmapButtons[index] = new BitmapButton(); } this.m_TextSelectors = new TextSelector[11]; for (int index = 0; index < 11; ++index) { this.m_TextSelectors[index] = new TextSelector(); } this.m_ImageSelectors = new ImageSelector[3]; for (int index = 0; index < 3; ++index) { this.m_ImageSelectors[index] = new ImageSelector(); } this.m_OnOffButtons[0].Initialize(new Ref <bool>((Func <bool>)(() => Form1.m_CurrentPatch.m_OnOffValues[0]), (Action <bool>)(v => Form1.m_CurrentPatch.m_OnOffValues[0] = v)), 443, 143); this.m_OnOffButtons[1].Initialize(new Ref <bool>((Func <bool>)(() => Form1.m_CurrentPatch.m_OnOffValues[1]), (Action <bool>)(v => Form1.m_CurrentPatch.m_OnOffValues[1] = v)), 64, 321); this.m_OnOffButtons[2].Initialize(new Ref <bool>((Func <bool>)(() => Form1.m_CurrentPatch.m_OnOffValues[2]), (Action <bool>)(v => Form1.m_CurrentPatch.m_OnOffValues[2] = v)), 65, 502); this.m_OnOffButtons[3].Initialize(new Ref <bool>((Func <bool>)(() => Form1.m_CurrentPatch.m_OnOffValues[3]), (Action <bool>)(v => Form1.m_CurrentPatch.m_OnOffValues[3] = v)), 844, 144); this.m_OnOffButtons[4].Initialize(new Ref <bool>((Func <bool>)(() => Form1.m_CurrentPatch.m_OnOffValues[4]), (Action <bool>)(v => Form1.m_CurrentPatch.m_OnOffValues[4] = v)), 844, 324); this.m_OnOffButtons[5].Initialize(new Ref <bool>((Func <bool>)(() => Form1.m_CurrentPatch.m_OnOffValues[5]), (Action <bool>)(v => Form1.m_CurrentPatch.m_OnOffValues[5] = v)), 840, 517); this.m_OnOffButtons[6].Initialize(new Ref <bool>((Func <bool>)(() => Form1.m_CurrentPatch.m_OnOffValues[6]), (Action <bool>)(v => Form1.m_CurrentPatch.m_OnOffValues[6] = v)), 556, 505); Ref <bool> ref1 = Form1.m_CurrentPatch.GetRef(Form1.OnOff.PREAMP); Ref <bool> ref2 = Form1.m_CurrentPatch.GetRef(Form1.OnOff.PREFX); Ref <bool> ref3 = Form1.m_CurrentPatch.GetRef(Form1.OnOff.MOD); Ref <bool> ref4 = Form1.m_CurrentPatch.GetRef(Form1.OnOff.DELAY); Ref <bool> ref5 = Form1.m_CurrentPatch.GetRef(Form1.OnOff.REV); Ref <bool> ref6 = Form1.m_CurrentPatch.GetRef(Form1.OnOff.POWER); Ref <bool> _OnOffButton = Form1.m_CurrentPatch.GetRef(Form1.OnOff.CAB); this.m_AllKnobs[0].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.PREAMP_GAIN), 378, 358, "GAIN", ref1); this.m_AllKnobs[1].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.PREAMP_VOLUME), 450, 358, "VOLUME", ref1); this.m_AllKnobs[2].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.PREAMP_THRESHOLD), 540, 358, "THRESHOLD", ref1); this.m_AllKnobs[3].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.PREAMP_BASS), 628, 358, "BASS", ref1); this.m_AllKnobs[4].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.PREAMP_MIDDLE), 700, 358, "MIDDLE", ref1); this.m_AllKnobs[5].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.PREAMP_TREBLE), 772, 358, "TREBLE", ref1); this.m_AllKnobs[6].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.PREFX_PARAM1), 577, 177, "MODE", ref2); this.m_AllKnobs[7].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.PREFX_PARAM2), 644, 177, "DRIVE", ref2); this.m_AllKnobs[8].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.PREFX_PARAM3), 711, 177, "TONE", ref2); this.m_AllKnobs[9].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.PREFX_PARAM4), 777, 177, "LEVEL", ref2); this.m_AllKnobs[10].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.MOD_SPEED), 1045, 177, "SPEED", ref3); this.m_AllKnobs[11].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.MOD_DEPTH), 1112, 177, "DEPTH", ref3); this.m_AllKnobs[12].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.MOD_TONE), 1178, 177, "TONE", ref3); this.m_AllKnobs[13].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.DEL_TIME), 978, 366, "TIME", ref4); this.m_AllKnobs[14].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.DEL_FEEDBACK), 1045, 366, "FEEDBACK", ref4); this.m_AllKnobs[15].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.DEL_AGE), 1112, 366, "AGE", ref4); this.m_AllKnobs[16].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.DEL_LEVEL), 1178, 366, "LEVEL", ref4); this.m_AllKnobs[17].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.REV_DECAY), 977, 558, "DECAY", ref5); this.m_AllKnobs[18].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.REV_PREDELAY), 1044, 558, "PRE-DELAY", ref5); this.m_AllKnobs[19].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.REV_TONE), 1111, 558, "TONE", ref5); this.m_AllKnobs[20].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.REV_LEVEL), 1177, 558, "LEVEL", ref5); this.m_AllKnobs[21].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.POWER_PRESENCE), 373, 546, "PRESENCE", ref6); this.m_AllKnobs[22].Initialize(Form1.m_CurrentPatch.GetRef(Form1.Knobs.POWER_RESONANCE), 455, 546, "RESONANCE", ref6); this.m_AllKnobs[6].EraseIfNotActive = true; this.m_AllKnobs[6].EraseRect = new Rectangle(545, 143, 66, 133); this.m_AllKnobs[13].m_bFloat = false; this.m_AllKnobs[13].m_RangeMul = 1f; this.m_AllKnobs[13].MaxValue = 4000f; this.m_AllKnobs[13].m_FontSize = 15; this.m_AllKnobs[13].m_TextOffset = 3; this.m_AllKnobs[15].EraseIfNotActive = true; this.m_AllKnobs[15].EraseRect = new Rectangle(1112, 366, 66, 133); this.m_AllKnobs[15].EraseIfNotActive = true; this.m_AllKnobs[15].EraseRect = new Rectangle(1081, 332, 66, 133); this.m_BitmapButtons[0].Initialize(140, 210, 76, 65, BitmapList.Import); this.m_BitmapButtons[1].Initialize(217, 210, 76, 65, BitmapList.Export); this.m_BitmapButtons[2].Initialize(188, (int)sbyte.MaxValue, 30, 30, BitmapList.Prev); this.m_BitmapButtons[3].Initialize(228, (int)sbyte.MaxValue, 30, 30, BitmapList.Next); this.m_BitmapButtons[4].Initialize(369, 143, 44, 34, BitmapList.ButtonOff); this.m_BitmapButtons[5].Initialize(369, 203, 44, 34, BitmapList.ButtonOff); this.m_BitmapButtons[6].Initialize(1180, 30, 25, 25, BitmapList.Help); this.m_BitmapButtons[6].m_EraseBack = false; this.m_BitmapButtons[7].Initialize(899, 124, 13, 19, BitmapList.ImportSmall); this.m_BitmapButtons[8].Initialize(498, 123, 13, 19, BitmapList.ImportSmall); this.m_BitmapButtons[9].Initialize(895, 507, 13, 19, BitmapList.ImportSmall); this.m_BitmapButtons[10].Initialize(74, 371, 13, 19, BitmapList.ImportSmall); this.m_BitmapButtons[11].Initialize(899, 314, 13, 19, BitmapList.ImportSmall); this.m_BitmapButtons[12].Initialize(75, 552, 13, 19, BitmapList.ImportSmall); this.m_BitmapButtons[0].m_TooltipText = "Imports patch from amplifier from selected patch number"; this.m_BitmapButtons[1].m_TooltipText = "Exports patch to amplifier to selected patch number"; this.m_BitmapButtons[2].m_TooltipText = "Previous patch"; this.m_BitmapButtons[3].m_TooltipText = "Next patch"; this.m_BitmapButtons[7].m_TooltipText = "Imports MOD settings from saved file"; this.m_BitmapButtons[8].m_TooltipText = "Imports Pre-FX settings from saved file"; this.m_BitmapButtons[9].m_TooltipText = "Imports Reverb settings from saved file"; this.m_BitmapButtons[10].m_TooltipText = "Imports Preamp settings from saved file"; this.m_BitmapButtons[11].m_TooltipText = "Imports Delay settings from saved file"; this.m_BitmapButtons[12].m_TooltipText = "Imports Power Amp settings from saved file"; Bitmap[] BitmapArray1 = new Bitmap[15] { BitmapList.jtm45, BitmapList.dsl, BitmapList.american, BitmapList.jvm, BitmapList.acoustic, BitmapList.bluesbreaker, BitmapList.plexi, BitmapList.american, BitmapList.jcm800, BitmapList.english, BitmapList.jvm, BitmapList.dsl, BitmapList.american, BitmapList.jubilee, BitmapList.natural }; string[] NameArray1 = new string[15] { "Clean JTM45", "Clean DSL", "Clean American", "Clean JVM", "Acoustic Simulator", "Bluesbreaker", "Plexi", "Crunch American", "JCM800", "'50s British", "OD JVM", "OD DSL", "OD American", "OD Silver Jubilee", "Natural (No FX)" }; this.m_ImageSelectors[0].Initialize(ref BitmapArray1, ref NameArray1, new Rectangle((int)sbyte.MaxValue, 312, 200, 150), Form1.m_CurrentPatch.GetRef(Form1.ImgSelectorList.Preamp), ref1); Bitmap[] BitmapArray2 = new Bitmap[8] { BitmapList.cab_1960, BitmapList.cab_1960, BitmapList.cab_1960, BitmapList.cab_1960, BitmapList.cab_1936, BitmapList.cab_1936, BitmapList.cab_1912, BitmapList.cab_1974 }; string[] NameArray2 = new string[8] { "1960", "1960V", "1960AX", "1960HW", "1936", "1936V", "1912", "1974CX" }; this.m_ImageSelectors[1].Initialize(ref BitmapArray2, ref NameArray2, new Rectangle(620, 488, 170, 170), Form1.m_CurrentPatch.GetRef(Form1.ImgSelectorList.Cab), _OnOffButton); this.m_ImageSelectors[1].m_TextOffset = 60; this.m_ImageSelectors[1].m_FontSize = 24; Bitmap[] BitmapArray3 = new Bitmap[4] { BitmapList.pow_jcm, BitmapList.pow_30w, BitmapList.pow_english, BitmapList.pow_american }; string[] NameArray3 = new string[4] { "Classic 100w", "Vintage 30 watts", "British Class A", "American Class A/B" }; this.m_ImageSelectors[2].Initialize(ref BitmapArray3, ref NameArray3, new Rectangle(121, 498, 175, 140), Form1.m_CurrentPatch.GetRef(Form1.ImgSelectorList.Power), ref6); this.m_ImageSelectors[2].m_TextOffset = 30; this.m_ImageSelectors[2].m_FontSize = 14; string[] NameArray4 = new string[4] { "Compressor", "Distortion", "Auto Wah", "Pitch Shifter" }; this.m_TextSelectors[0].Initialize(ref NameArray4, new Rectangle(440, 190, 86, 86), Form1.m_CurrentPatch.GetRef(Form1.TextSelectorList.PreFX), ref2); string[] NameArray5 = new string[4] { "Chorus", "Flanger", "Phaser", "Tremolo" }; this.m_TextSelectors[3].Initialize(ref NameArray5, new Rectangle(840, 190, 86, 86), Form1.m_CurrentPatch.GetRef(Form1.TextSelectorList.Mod), ref3); string[] NameArray6 = new string[4] { "Studio", "Vintage", "Multi", "Reverse" }; this.m_TextSelectors[8].Initialize(ref NameArray6, new Rectangle(840, 375, 86, 86), Form1.m_CurrentPatch.GetRef(Form1.TextSelectorList.DelayType), ref4); string[] NameArray7 = new string[4] { "Room", "Hall", "Spring", "Stadium" }; this.m_TextSelectors[9].Initialize(ref NameArray7, new Rectangle(840, 566, 86, 86), Form1.m_CurrentPatch.GetRef(Form1.TextSelectorList.ReverbType), ref5); string[] NameArray8 = new string[4] { "1 tap", "2 taps", "3 taps", "4 taps" }; this.m_TextSelectors[10].Initialize(ref NameArray8, new Rectangle(1089, 340, 50, 88), Form1.m_CurrentPatch.GetRef(Form1.TextSelectorList.MultitapType), ref4); this.m_TextSelectors[10].Active = false; string[] NameArray9 = new string[3] { "GUV", "ODR", "DIST" }; this.m_TextSelectors[1].Initialize(ref NameArray9, new Rectangle(545, 180, 60, 66), Form1.m_CurrentPatch.GetRef(Form1.TextSelectorList.DistortionType), ref2); this.m_TextSelectors[1].Active = false; string[] NameArray10 = new string[2] { "ENV", "LFO" }; this.m_TextSelectors[2].Initialize(ref NameArray10, new Rectangle(545, 180, 60, 66), Form1.m_CurrentPatch.GetRef(Form1.TextSelectorList.WahType), ref2); this.m_TextSelectors[2].Active = false; this.m_TextSelectors[2].m_TextOffset = 10; string[] NameArray11 = new string[2] { "CLS", "VIB" }; this.m_TextSelectors[4].Initialize(ref NameArray11, new Rectangle(945, 180, 60, 66), Form1.m_CurrentPatch.GetRef(Form1.TextSelectorList.ChorusType), ref3); this.m_TextSelectors[4].Active = false; this.m_TextSelectors[4].m_TextOffset = 10; string[] NameArray12 = new string[2] { "JET", "MET" }; this.m_TextSelectors[5].Initialize(ref NameArray12, new Rectangle(945, 180, 60, 66), Form1.m_CurrentPatch.GetRef(Form1.TextSelectorList.FlangerType), ref3); this.m_TextSelectors[5].Active = false; this.m_TextSelectors[5].m_TextOffset = 10; string[] NameArray13 = new string[2] { "CLS", "VBE" }; this.m_TextSelectors[6].Initialize(ref NameArray13, new Rectangle(945, 180, 60, 66), Form1.m_CurrentPatch.GetRef(Form1.TextSelectorList.PhaserType), ref3); this.m_TextSelectors[6].Active = false; this.m_TextSelectors[6].m_TextOffset = 10; string[] NameArray14 = new string[2] { "VLV", "SQR" }; this.m_TextSelectors[7].Initialize(ref NameArray14, new Rectangle(945, 180, 60, 66), Form1.m_CurrentPatch.GetRef(Form1.TextSelectorList.TremoloType), ref3); this.m_TextSelectors[7].Active = false; this.m_TextSelectors[7].m_TextOffset = 10; Form1.m_CurrentPatch.m_PatchNumber = 0; Form1.m_CurrentPatch.m_PatchName = "-- no name --"; for (int i = 0; i < 11; ++i) { this.UpdateSelectorLists(i); } this.m_NameLCD = new LcdEdit(18, (Action <Rectangle>)(v => this.Invalidate(v)), (Action <string>)(v => { Form1.m_CurrentPatch.m_PatchName = v; Form1.m_CurrentPatch.SaveCurrent(); }), "-- no name --", (Func <char, bool>)(v => v >= ' ' && v <= '~'), ' ', (Func <string, int, char, string>)((str, siz, p) => str.PadRight(siz, p))); this.m_NameLCD.SetText(Form1.m_CurrentPatch.m_PatchName); Form1.m_CurrentPatch.m_PatchName = this.m_NameLCD.GetText(); this.m_NameLCD.Initialize((int)sbyte.MaxValue, 171, 201, 20); this.m_PatchNumLCD = new LcdEdit(2, (Action <Rectangle>)(v => this.Invalidate(v)), (Action <string>)(v => { int num = int.Parse(v); Form1.m_CurrentPatch.m_PatchNumber = num; Form1.m_CurrentPatch.SaveCurrent(); }), "00", (Func <char, bool>)(v => v >= '0' && v <= '9'), '0', (Func <string, int, char, string>)((str, siz, p) => str.PadLeft(siz, p))); this.m_PatchNumLCD.InsertionMode = false; this.m_PatchNumLCD.SetText(Form1.m_CurrentPatch.m_PatchNumber.ToString()); this.m_PatchNumLCD.Initialize(137, 134, 27, 20); this.KeyPreview = true; this.KeyPress += new KeyPressEventHandler(this.Form1_KeyPress); this.m_Midi = new MidiCom(); this.m_Midi.Connect(); Form1.m_CurrentPatch.FillPatchFromEdit(); byte[] msg = new byte[75] { (byte)240, (byte)0, (byte)33, (byte)21, (byte)48, (byte)16, (byte)0, (byte)114, (byte)3, (byte)0, (byte)80, (byte)108, (byte)101, (byte)120, (byte)105, (byte)32, (byte)82, (byte)111, (byte)99, (byte)107, (byte)32, (byte)32, (byte)32, (byte)32, (byte)32, (byte)32, (byte)32, (byte)32, (byte)0, (byte)70, (byte)40, (byte)50, (byte)70, (byte)50, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)1, (byte)6, (byte)30, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)1, (byte)0, (byte)3, (byte)66, (byte)10, (byte)10, (byte)40, (byte)1, (byte)0, (byte)20, (byte)20, (byte)50, (byte)50, (byte)1, (byte)0, (byte)1, (byte)1, (byte)50, (byte)40, (byte)12, (byte)13, (byte)26, (byte)27, (byte)28, (byte)29, (byte)247 }; Form1.m_CurrentPatch.m_GETRequestWaiting = true; Form1.m_CurrentPatch.DecodeSysexData(ref msg); Form1.m_CurrentPatch.LoadCurrent(); this.m_PatchNumLCD.SetText(Form1.m_CurrentPatch.m_PatchNumber.ToString()); if (Registry.CurrentUser.OpenSubKey("SOFTWARE\\CodePatchEditor") != null) { return; } Registry.CurrentUser.CreateSubKey("SOFTWARE\\CodePatchEditor"); this.About(); }