Ejemplo n.º 1
0
 /// <summary>
 /// Marks the specified note as released
 /// </summary>
 /// <param name="note">The note to release</param>
 public void MarkKeyReleased(NoteEnum note)
 {
     if (!(note == NoteEnum.None || note == lastMouseNote))
     {
         MidiPlayer.StopNote(note);
         if (pressedNotes.ContainsKey(note))
         {
             Staff.StopAdjustingNote(pressedNotes[note]);
             pressedNotes.Remove(note);
         }
         Invalidate(GetNoteArea(note), false);
     }
     SilenceStopwatch.Restart();
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Called when a mouse button is released on the piano keyboard
 /// </summary>
 protected override void OnMouseUp(MouseEventArgs e)
 {
     base.OnMouseUp(e);
     if (e.Button == MouseButtons.Left)
     {
         leftMouseDown = false;
         if (lastMouseNote != NoteEnum.None)
         {
             MidiPlayer.StopNote(lastMouseNote);
             Staff.StopAdjustingNote(currentMouseNote);
             currentMouseNote = null;
             Invalidate(GetNoteArea(lastMouseNote), false);
             pressedNotes.Remove(lastMouseNote);
             lastMouseNote = NoteEnum.None;
         }
     }
     SilenceStopwatch.Restart();
 }
Ejemplo n.º 3
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));
             }
         }
     }
 }