diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-08-11 18:21:37 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-08-11 18:21:37 +0000 |
commit | 5182f0770cca50cbb7c8fe419b2e64af02525553 (patch) | |
tree | d83afeadcc8ab51bcdae2cb993f2f8a60100e9c2 /gtk2_ardour/midi_time_axis.cc | |
parent | fd3219bf29415006d6680fc5cf2dac97c35972bc (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.cc | 41 |
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> |