Register colour aliases for tempo curve.
[ardour.git] / gtk2_ardour / midi_region_view.cc
index 1ef0086f92aa3b4e8f0dcb96187dd79929a9dc87..9e271cc3987af4b2925263ceeb903473ce19f45c 100644 (file)
@@ -271,12 +271,12 @@ MidiRegionView::init (bool wfd)
 
        RegionView::init (false);
 
-       set_height (trackview.current_height());
+       //set_height (trackview.current_height());
 
        region_muted ();
        region_sync_changed ();
        region_resized (ARDOUR::bounds_change);
-       region_locked ();
+       //region_locked ();
 
        set_colors ();
 
@@ -928,6 +928,11 @@ MidiRegionView::create_note_at (framepos_t t, double y, Evoral::Beats length, bo
 
        MidiTimeAxisView* const mtv  = dynamic_cast<MidiTimeAxisView*>(&trackview);
        MidiStreamView* const   view = mtv->midi_view();
+       boost::shared_ptr<MidiRegion> mr  = boost::dynamic_pointer_cast<MidiRegion> (_region);
+
+       if (!mr) {
+               return;
+       }
 
        // Start of note in frames relative to region start
        if (snap_t) {
@@ -935,9 +940,8 @@ MidiRegionView::create_note_at (framepos_t t, double y, Evoral::Beats length, bo
                t = snap_frame_to_grid_underneath (t, grid_frames);
        }
 
-       const MidiModel::TimeType beat_time = region_frames_to_region_beats(
-               t + _region->start());
-
+       const MidiModel::TimeType beat_time = Evoral::Beats (trackview.session()->tempo_map().beat_at_frame (_region->position() + t)
+                                                            - (mr->beat() - mr->start_beats().to_double()));
        const double  note     = view->y_to_note(y);
        const uint8_t chan     = mtv->get_channel_for_add();
        const uint8_t velocity = get_velocity_for_add(beat_time);
@@ -1191,10 +1195,9 @@ MidiRegionView::redisplay_model()
 
                        if (!empty_when_starting && (cne = find_canvas_note (note)) != 0) {
 
-                               cne->validate ();
-                               update_note (cne);
-
                                if (visible) {
+                                       cne->validate ();
+                                       update_note (cne);
                                        cne->show ();
                                } else {
                                        cne->hide ();
@@ -1401,15 +1404,12 @@ MidiRegionView::~MidiRegionView ()
 void
 MidiRegionView::region_resized (const PropertyChange& what_changed)
 {
-       RegionView::region_resized(what_changed);
+       RegionView::region_resized(what_changed); // calls RegionView::set_duration()
 
        if (what_changed.contains (ARDOUR::Properties::position)) {
                _region_relative_time_converter.set_origin_b(_region->position());
                _region_relative_time_converter_double.set_origin_b(_region->position());
-               set_duration(_region->length(), 0);
-               if (_enable_display) {
-                       redisplay_model();
-               }
+               /* reset_width dependent_items() redisplays model */
        }
 
        if (what_changed.contains (ARDOUR::Properties::start) ||
@@ -3232,7 +3232,7 @@ MidiRegionView::nudge_notes (bool forward, bool fine)
        if (!fine) {
 
                /* non-fine, move by 1 bar regardless of snap */
-               delta = Evoral::Beats(trackview.session()->tempo_map().meter_at(ref_point).divisions_per_bar());
+               delta = Evoral::Beats(trackview.session()->tempo_map().meter_at_frame (ref_point).divisions_per_bar());
 
        } else if (trackview.editor().snap_mode() == Editing::SnapOff) {
 
@@ -3335,9 +3335,8 @@ void
 MidiRegionView::patch_entered (PatchChange* p)
 {
        ostringstream s;
-       /* XXX should get patch name if we can */
        s << _("Bank ") << (p->patch()->bank() + MIDI_BP_ZERO) << '\n'
-         << _("Program ") << ((int) p->patch()->program()) + MIDI_BP_ZERO << '\n'
+         << instrument_info().get_patch_name_without (p->patch()->bank(), p->patch()->program(), p->patch()->channel()) << '\n'
          << _("Channel ") << ((int) p->patch()->channel() + 1);
        show_verbose_cursor (s.str(), 10, 20);
        p->item().grab_focus();
@@ -3830,6 +3829,7 @@ MidiRegionView::color_handler ()
 void
 MidiRegionView::enable_display (bool yn)
 {
+
        RegionView::enable_display (yn);
        if (yn) {
                redisplay_model ();
@@ -3879,7 +3879,9 @@ MidiRegionView::set_step_edit_cursor_width (Evoral::Beats beats)
        _step_edit_cursor_width = beats;
 
        if (_step_edit_cursor) {
-               _step_edit_cursor->set_x1 (_step_edit_cursor->x0() + trackview.editor().sample_to_pixel (region_beats_to_region_frames (beats)));
+               _step_edit_cursor->set_x1 (_step_edit_cursor->x0() + trackview.editor().sample_to_pixel (
+                                                  region_beats_to_region_frames (_step_edit_cursor_position + beats)
+                                                  - region_beats_to_region_frames (_step_edit_cursor_position)));
        }
 }