//Detects if a Key is released, if one that is released is usuable by a sampler, it calls a "releaseKey" function on that instance of Sampler Data private void Form1_KeyUp(object sender, KeyEventArgs e) { char key = Convert.ToChar(e.KeyCode); if (key > 96 && key < 106) { m_samples[key - 96].releaseKey(); if (isMIDIRecording) { MIDIKeyFrame note = new MIDIKeyFrame(MIDITimer.Elapsed, false, (key - 96)); MIDIRecording.Add(note); } } }
//Detects if a Key is pressed, if one that is pressed is usuable by a sampler, it calls a "pressKey" function on that instance of Sampler Data private void Form1_KeyDown(object sender, KeyEventArgs e) { char key = Convert.ToChar(e.KeyCode); if (key > 96 && key < 106) { m_samples[key - 96].pressKey(); if (isMIDIRecording) { MIDIKeyFrame note = new MIDIKeyFrame(MIDITimer.Elapsed, true, (key - 96)); MIDIRecording.Add(note); } } else if (key == 35) { for (int i = 1; i <= 9; ++i) { m_samples[i].stopNow(); } } }
private void btn_MIDI_RECSTOP_Click(object sender, EventArgs e) { if (!isMIDIRecording) { isMIDIRecording = true; MIDITimer.Start(); btn_MIDI_RECSTOP.Text = "STOP"; } else { isMIDIRecording = false; MIDIKeyFrame EndNote = new MIDIKeyFrame(MIDITimer.Elapsed, true, 10); MIDIRecording.Add(EndNote); MIDITimer.Stop(); btn_MIDI_RECSTOP.Text = "REC"; XmlSerializer serialiser = new XmlSerializer(typeof(SaveData)); SaveFileDialog save = new SaveFileDialog(); save.InitialDirectory = @"C:\Users\s182378\Documents\Code\repositories\AIE2018\Intro to C#\SoundTool\SoundTool\MIDIFiles"; save.Filter = "XML File *.xml|*.xml;"; if (save.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } string saveName = save.FileName; TextWriter writer = new StreamWriter(saveName); SaveData saveData = new SaveData(); saveData.data = MIDIRecording.ToArray(); serialiser.Serialize(writer, saveData); writer.Close(); } }