mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-12 01:26:31 +01:00
When creating notes with the pencil tool, make them 1 frame shorter than the grid subdivision to prevent overlaps. Fixes #3237.
git-svn-id: svn://localhost/ardour2/branches/3.0@7281 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
6c19e1c7ea
commit
c4e6b368ae
2 changed files with 11 additions and 5 deletions
|
|
@ -348,7 +348,7 @@ MidiRegionView::button_release (GdkEventButton* ev)
|
||||||
if (!success) {
|
if (!success) {
|
||||||
beats = 1;
|
beats = 1;
|
||||||
}
|
}
|
||||||
create_note_at (event_x, event_y, beats);
|
create_note_at (event_x, event_y, beats, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
@ -369,7 +369,7 @@ MidiRegionView::button_release (GdkEventButton* ev)
|
||||||
const double length = trackview.editor().pixel_to_frame
|
const double length = trackview.editor().pixel_to_frame
|
||||||
(_drag_rect->property_x2() - _drag_rect->property_x1());
|
(_drag_rect->property_x2() - _drag_rect->property_x1());
|
||||||
|
|
||||||
create_note_at (x, _drag_rect->property_y1(), frames_to_beats(length));
|
create_note_at (x, _drag_rect->property_y1(), frames_to_beats(length), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete _drag_rect;
|
delete _drag_rect;
|
||||||
|
|
@ -650,9 +650,11 @@ MidiRegionView::show_list_editor ()
|
||||||
/** Add a note to the model, and the view, at a canvas (click) coordinate.
|
/** Add a note to the model, and the view, at a canvas (click) coordinate.
|
||||||
* \param x horizontal position in pixels
|
* \param x horizontal position in pixels
|
||||||
* \param y vertical position in pixels
|
* \param y vertical position in pixels
|
||||||
* \param length duration of the note in beats */
|
* \param length duration of the note in beats, which will be snapped to the grid
|
||||||
|
* \param sh true to make the note 1 frame shorter than the snapped version of \a length.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
MidiRegionView::create_note_at(double x, double y, double length)
|
MidiRegionView::create_note_at(double x, double y, double length, bool sh)
|
||||||
{
|
{
|
||||||
MidiTimeAxisView* const mtv = dynamic_cast<MidiTimeAxisView*>(&trackview);
|
MidiTimeAxisView* const mtv = dynamic_cast<MidiTimeAxisView*>(&trackview);
|
||||||
MidiStreamView* const view = mtv->midi_view();
|
MidiStreamView* const view = mtv->midi_view();
|
||||||
|
|
@ -672,6 +674,10 @@ MidiRegionView::create_note_at(double x, double y, double length)
|
||||||
|
|
||||||
assert (length != 0);
|
assert (length != 0);
|
||||||
|
|
||||||
|
if (sh) {
|
||||||
|
length = frames_to_beats (beats_to_frames (length) - 1);
|
||||||
|
}
|
||||||
|
|
||||||
const boost::shared_ptr<NoteType> new_note(new NoteType(0,
|
const boost::shared_ptr<NoteType> new_note(new NoteType(0,
|
||||||
frames_to_beats(start_frames + _region->start()), length,
|
frames_to_beats(start_frames + _region->start()), length,
|
||||||
(uint8_t)note, 0x40));
|
(uint8_t)note, 0x40));
|
||||||
|
|
|
||||||
|
|
@ -169,7 +169,7 @@ class MidiRegionView : public RegionView
|
||||||
void end_write();
|
void end_write();
|
||||||
void extend_active_notes();
|
void extend_active_notes();
|
||||||
|
|
||||||
void create_note_at(double x, double y, double length);
|
void create_note_at(double x, double y, double length, bool);
|
||||||
|
|
||||||
void display_model(boost::shared_ptr<ARDOUR::MidiModel> model);
|
void display_model(boost::shared_ptr<ARDOUR::MidiModel> model);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue