예제 #1
0
 /// <summary>
 /// Called when a mouse button is release on the music note
 /// </summary>
 public void MarkMouseUp(MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Left)
     {
         leftButtonDown = false;
         Keyboard.MarkKeyReleased(pitch);
     }
     else if (e.Button == MouseButtons.Right)
     {
         Staff.StopAdjustingNote(this);
     }
     Highlighted = false;
 }
예제 #2
0
 /// <summary>
 /// Called when the mouse is moved on the piano keyboard
 /// </summary>
 protected override void OnMouseMove(MouseEventArgs e)
 {
     base.OnMouseMove(e);
     if (leftMouseDown)
     {
         Stopwatch stopwatch = Stopwatch.StartNew();
         lastCursorLocation = e.Location;
         NoteEnum currentNote = GetNoteAtPoint(e.Location);
         NoteEnum oldNote     = lastMouseNote;
         if (!pressedNotes.ContainsKey(currentNote))
         {
             lastMouseNote = currentNote;
             if (oldNote != NoteEnum.None)
             {
                 MidiPlayer.StopNote(oldNote);
             }
             if (currentNote != NoteEnum.None)
             {
                 MidiPlayer.PlayNote(currentNote);
             }
             if (oldNote != NoteEnum.None)
             {
                 Staff.StopAdjustingNote(currentMouseNote);
                 currentMouseNote = null;
                 pressedNotes.Remove(oldNote);
                 Invalidate(GetNoteArea(oldNote));
             }
             if (currentNote != NoteEnum.None)
             {
                 currentMouseNote = Staff.AddNote(currentNote, NoteLength.HemiDemiSemiQuaver);
                 pressedNotes.Add(currentNote, currentMouseNote);
                 Staff.StartAdjustingNote(currentMouseNote, stopwatch);
                 Invalidate(GetNoteArea(currentNote));
             }
         }
     }
 }