summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_time_axis.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-08-11 18:21:37 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-08-11 18:21:37 +0000
commit5182f0770cca50cbb7c8fe419b2e64af02525553 (patch)
treed83afeadcc8ab51bcdae2cb993f2f8a60100e9c2 /gtk2_ardour/midi_time_axis.cc
parentfd3219bf29415006d6680fc5cf2dac97c35972bc (diff)
add a first hack at a step edit cursor (to be changed); add program+bank stubs (non-functional for the foreseeable future); fix up step edit changes propagating across all MIDI tracks; make program change "flags" change height along with track
git-svn-id: svn://localhost/ardour2/branches/3.0@7598 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_time_axis.cc')
-rw-r--r--gtk2_ardour/midi_time_axis.cc41
1 files changed, 30 insertions, 11 deletions
diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc
index 3dada95f84..00b542fd13 100644
--- a/gtk2_ardour/midi_time_axis.cc
+++ b/gtk2_ardour/midi_time_axis.cc
@@ -905,10 +905,16 @@ MidiTimeAxisView::start_step_editing ()
if (step_edit_region) {
RegionView* rv = view()->find_view (step_edit_region);
step_edit_region_view = dynamic_cast<MidiRegionView*> (rv);
+
} else {
- step_edit_region_view = 0;
- }
+ step_edit_region = add_region (step_edit_insert_position);
+ RegionView* rv = view()->find_view (step_edit_region);
+ step_edit_region_view = dynamic_cast<MidiRegionView*>(rv);
+ }
+ if (step_edit_region_view) {
+ step_edit_region_view->show_step_edit_cursor (0.0);
+ }
if (step_editor == 0) {
step_editor = new StepEntry (*this);
@@ -933,6 +939,10 @@ MidiTimeAxisView::stop_step_editing ()
if (step_editor) {
step_editor->hide ();
}
+
+ if (step_edit_region_view) {
+ step_edit_region_view->hide_step_edit_cursor();
+ }
}
void
@@ -966,16 +976,20 @@ MidiTimeAxisView::check_step_edit ()
}
int
-MidiTimeAxisView::step_add_note (uint8_t channel, uint8_t pitch, uint8_t velocity, Evoral::MusicalTime beat_duration)
+MidiTimeAxisView::step_add_bank_change (uint8_t channel, uint8_t bank)
{
+ return 0;
+}
- if (step_edit_region == 0) {
-
- step_edit_region = add_region (step_edit_insert_position);
- RegionView* rv = view()->find_view (step_edit_region);
- step_edit_region_view = dynamic_cast<MidiRegionView*>(rv);
- }
-
+int
+MidiTimeAxisView::step_add_program_change (uint8_t channel, uint8_t program)
+{
+ return 0;
+}
+
+int
+MidiTimeAxisView::step_add_note (uint8_t channel, uint8_t pitch, uint8_t velocity, Evoral::MusicalTime beat_duration)
+{
if (step_edit_region && step_edit_region_view) {
if (step_edit_beat_pos < 0.0) {
framecnt_t frames_from_start = _editor.get_preferred_edit_position() - step_edit_region->position();
@@ -1024,9 +1038,10 @@ MidiTimeAxisView::step_add_note (uint8_t channel, uint8_t pitch, uint8_t velocit
if (!_step_edit_within_chord) {
step_edit_beat_pos += beat_duration;
+ step_edit_region_view->move_step_edit_cursor (step_edit_beat_pos);
} else {
step_edit_beat_pos += 1.0/Meter::ticks_per_beat; // tiny, but no longer overlapping
- _step_edit_chord_duration = beat_duration;
+ _step_edit_chord_duration = max (_step_edit_chord_duration, beat_duration);
}
}
@@ -1062,6 +1077,7 @@ MidiTimeAxisView::step_edit_toggle_chord ()
if (_step_edit_within_chord) {
_step_edit_within_chord = false;
step_edit_beat_pos += _step_edit_chord_duration;
+ step_edit_region_view->move_step_edit_cursor (step_edit_beat_pos);
} else {
_step_edit_triplet_countdown = 0;
_step_edit_within_chord = true;
@@ -1081,6 +1097,7 @@ MidiTimeAxisView::step_edit_rest (Evoral::MusicalTime beats)
if (success) {
step_edit_beat_pos += beats;
+ step_edit_region_view->move_step_edit_cursor (step_edit_beat_pos);
}
}
@@ -1088,6 +1105,7 @@ void
MidiTimeAxisView::step_edit_beat_sync ()
{
step_edit_beat_pos = ceil (step_edit_beat_pos);
+ step_edit_region_view->move_step_edit_cursor (step_edit_beat_pos);
}
void
@@ -1101,6 +1119,7 @@ MidiTimeAxisView::step_edit_bar_sync ()
step_edit_region_view->beats_to_frames (step_edit_beat_pos);
fpos = _session->tempo_map().round_to_bar (fpos, 1);
step_edit_beat_pos = ceil (step_edit_region_view->frames_to_beats (fpos - step_edit_region->position()));
+ step_edit_region_view->move_step_edit_cursor (step_edit_beat_pos);
}
boost::shared_ptr<Region>