+ void note_dropped(ArdourCanvas::CanvasNoteEvent* ev, double d_pixels, uint8_t d_note);
+
+ /** Return true iff the note is within the currently visible range */
+ bool note_in_visible_range(const boost::shared_ptr<NoteType> note) const;
+
+ /** Get the region position in pixels relative to session. */
+ double get_position_pixels();
+
+ /** Begin resizing of some notes.
+ * Called by CanvasMidiNote when resizing starts.
+ * @param note_end which end of the note, NOTE_ON or NOTE_OFF
+ */
+ void begin_resizing(ArdourCanvas::CanvasNote::NoteEnd note_end);
+
+ /** Update resizing notes while user drags.
+ * @param note_end which end of the note, NOTE_ON or NOTE_OFF
+ * @param x the difference in mouse motion, ie the motion difference if relative=true
+ * or the absolute mouse position (track-relative) if relative is false
+ * @param relative true if relative resizing is taking place, false if absolute resizing
+ */
+ void update_resizing(ArdourCanvas::CanvasNote::NoteEnd note_end, double x, bool relative);
+
+ /** Finish resizing notes when the user releases the mouse button.
+ * @param note_end which end of the note, NOTE_ON or NOTE_OFF
+ * @param event_x the absolute mouse position (track-relative)
+ * @param relative true if relative resizing is taking place, false if absolute resizing
+ */
+ void commit_resizing(ArdourCanvas::CanvasNote::NoteEnd note_end, double event_x, bool relative);
+
+ /** Adjust the velocity on a note, and the selection if applicable.
+ * @param velocity the relative or absolute velocity
+ * @param relative whether velocity is relative or absolute
+ */
+ void change_velocity(ArdourCanvas::CanvasNoteEvent* ev, int8_t velocity, bool relative=false);