/// <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; }
/// <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)); } } } }