/// <summary>
        /// Make controls reflect current settings.
        /// </summary>
        private void UpdateControls()
        {
            // Populate MIDI devices groupbox
            midiDeviceNames = MidiMonitor.GetMidiDevices();

            if (midiDeviceNames != null)
            {
                this.MidiDevicesComboBox.Items.AddRange(midiDeviceNames);
                if (Properties.Settings.Default.MidiDeviceNumber < 1 ||
                    Properties.Settings.Default.MidiDeviceNumber >= midiDeviceNames.Length)
                {
                    this.MidiDevicesComboBox.SelectedIndex = 0;
                }
                else
                {
                    this.MidiDevicesComboBox.SelectedIndex = Properties.Settings.Default.MidiDeviceNumber;
                }
            }

            // Set the remaining controls
            this.DelimiterTextBox.Text           = Properties.Settings.Default.ImportDelimiter.ToString();
            this.DecimalMarkTextBox.Text         = Properties.Settings.Default.ImportDecimalMark.ToString();
            this.FrequenciesPerLineNumeric.Value = Properties.Settings.Default.FrequenciesPerLine;
            this.LatencyNumeric.Value            = Properties.Settings.Default.Latency;
            this.BaseNoteComboBox.SelectedItem   = Properties.Settings.Default.BaseNote;
            this.BaseOctaveNumeric.Value         = Properties.Settings.Default.BaseOctave;
        }
        /// <summary>
        /// Occurs when the user clicks the OK button. Write settings back to calling MainWindow and close this window.
        /// </summary>
        /// <param name="sender">Calling control.</param>
        /// <param name="e">Arguments passed.</param>
        private void OKButton_Click(object sender, System.EventArgs e)
        {
            // Check for errors
            if (DelimiterTextBox.Text == DecimalMarkTextBox.Text)
            {
                MessageBox.Show("Delimiter and decimal mark must be different characters!",
                                "Error!",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return;
            }

            // Did we loose (or gain) any MIDI devices while this window was open?
            int  selectedDevice;
            bool devicesChanged = false;

            string[] devices = MidiMonitor.GetMidiDevices();

            if (devices == null && midiDeviceNames == null)
            {
                devicesChanged = false;
            }
            else if ((devices == null && midiDeviceNames != null) ||
                     (devices != null && midiDeviceNames == null))
            {
                devicesChanged = true;
            }
            else
            {
                devicesChanged = !devices.SequenceEqual(midiDeviceNames);
            }

            if (devicesChanged)
            {
                MessageBox.Show("MIDI device list changed! Selecting none.",
                                "Warning!",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                selectedDevice = -1;
            }
            else
            {
                selectedDevice = MidiDevicesComboBox.SelectedIndex;
            }

            // Save settings
            Properties.Settings.Default.MidiDeviceNumber   = selectedDevice;
            Properties.Settings.Default.ImportDelimiter    = Convert.ToChar(this.DelimiterTextBox.Text);
            Properties.Settings.Default.ImportDecimalMark  = Convert.ToChar(this.DecimalMarkTextBox.Text);
            Properties.Settings.Default.FrequenciesPerLine = (int)this.FrequenciesPerLineNumeric.Value;
            Properties.Settings.Default.Latency            = (int)this.LatencyNumeric.Value;
            Properties.Settings.Default.BaseNote           = this.BaseNoteComboBox.SelectedItem.ToString();
            Properties.Settings.Default.BaseOctave         = (int)this.BaseOctaveNumeric.Value;
            Properties.Settings.Default.Save();

            this.Close();
        }
Exemple #3
0
        /// <summary>
        /// Initialize a new instance of the MainWindow class. The user controls the application from within this window.
        /// </summary>
        public MainWindow()
        {
            InitializeComponent();

            // If a device is found, begin listening for incoming MIDI messages.
            midiInMonitor = new MidiMonitor();
            if (midiInMonitor.SelectedDevice != null)
            {
                Properties.Settings.Default.MidiDeviceNumber     = (int)midiInMonitor.SelectedDevice;
                this.midiInMonitor.MidiInDevice.MessageReceived += new EventHandler <MidiInMessageEventArgs>(MidiInDevice_messageHandler);
                this.midiInMonitor.StartMidiMonitoring();
            }
            else
            {
                Properties.Settings.Default.MidiDeviceNumber = -1;
            }

            // Init audio
            this.sinePlayer = new SineSumSampleProvider(44100, 1);
            this.InitializeAudio();
        }