Ejemplo n.º 1
0
        /// <summary>
        /// Collects title, time, and key signature information from the Create New Score popup
        /// and uses them to create a new Score object and load it in the viewer.
        /// Called when the 'Start' button is clicked on the popup.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void createNew(object sender, RoutedEventArgs e)
        {
            // Close the popup
            isLoaded                       = false;
            KeyCover.Visibility            = Visibility.Hidden;
            ScoreCreationWindow.Visibility = Visibility.Hidden;

            //make keys, music sheet, notes and keyboard control visible
            Print.Visibility = Visibility.Visible;
            Piano_KeyBoard_layout.Visibility = Visibility.Visible;
            Piano_White_Keys.Visibility      = Visibility.Visible;
            Piano_Black_Keys.Visibility      = Visibility.Visible;
            MusicSheet.Visibility            = Visibility.Visible;
            Notes_Rest.Visibility            = Visibility.Visible;
            Keyboard_Controls.Visibility     = Visibility.Hidden;
            WorkingButtons.Visibility        = Visibility.Visible;

            //reset note selection to quarter note
            NoteSelectionReset();

            // Calculate key signature based on selected value from array
            Console.WriteLine(MusicTitle);
            MusicNameLabel.Content = MusicTitle;

            // Calculate key signature
            int keyIndex = (KeySignatureCombo.SelectedIndex < 13) ? KeySignatureCombo.SelectedIndex - 1 : 12 - KeySignatureCombo.SelectedIndex;

            Manufaktura.Controls.Model.Key key = new Manufaktura.Controls.Model.Key(keyIndex);
            model.KeySig = new Manufaktura.Controls.Model.Key(keyIndex);

            // Calculate time signature
            TimeSignature timeSig = new TimeSignature(TimeSignatureType.Numbers, beatsPerMeasure, beatLength);

            model.TimeSig = new TimeSignature(TimeSignatureType.Numbers, beatsPerMeasure, beatLength);

            // Create a single staff score
            model.FileName = "";
            model.createNew(key, timeSig);
            Viewer.ScoreSource = model.Data;
            model.ResetPlayer();
        }