diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-20 15:18:43 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-20 15:18:43 +0000 |
commit | de80d6b95d0abaea924283457c84e67c4017321a (patch) | |
tree | 473002cfe08099fe5e4e370bdeb9e97aa7dc8f1c | |
parent | 4251da6ae4187fddb20e023a820271242ec6ff6d (diff) |
make bar-setting generic; add set-tempo-from-edit-range ; change bindings to 9 for region, 0 for edit range; add binding for cycle-edit-point-with-marker (missing from non-SAE version)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2952 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/ardour.bindings.in | 4 | ||||
-rw-r--r-- | gtk2_ardour/ardour.menus | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 29 |
5 files changed, 32 insertions, 7 deletions
diff --git a/gtk2_ardour/ardour.bindings.in b/gtk2_ardour/ardour.bindings.in index 9dbbd8deff..3d488c1ec4 100644 --- a/gtk2_ardour/ardour.bindings.in +++ b/gtk2_ardour/ardour.bindings.in @@ -10,6 +10,7 @@ (gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "apostrophe") (gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-sync" "semicolon") (gtk_accel_path "<Actions>/Editor/cycle-edit-point" "grave") +(gtk_accel_path "<Actions>/Editor/cycle-edit-point-with-marker" "<%PRIMARY%>asciicircum") (gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "period") (gtk_accel_path "<Actions>/Editor/playhead-to-next-region-sync" "<%PRIMARY%>period") @@ -40,7 +41,6 @@ (gtk_accel_path "<Actions>/Editor/boost-region-gain" "asciicircum") (gtk_accel_path "<Actions>/Editor/cut-region-gain" "ampersand") -(gtk_accel_path "<Actions>/Editor/set-tempo-from-region" "asterisk") ;; letters @@ -182,6 +182,8 @@ (gtk_accel_path "<Actions>/Editor/cycle-snap-choice" "3") (gtk_accel_path "<Actions>/Transport/ToggleAutoReturn" "4") (gtk_accel_path "<Actions>/Transport/ToggleClick" "5") +(gtk_accel_path "<Actions>/Editor/set-tempo-from-region" "9") +(gtk_accel_path "<Actions>/Editor/set-tempo-from-edit-range" "0") ;; ;; unbound actions diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus index 2237a30ea0..23a803161b 100644 --- a/gtk2_ardour/ardour.menus +++ b/gtk2_ardour/ardour.menus @@ -195,6 +195,7 @@ <separator/> <menuitem action='pitch-shift-region'/> <menuitem action='set-tempo-from-region'/> + <menuitem action='set-tempo-from-edit-range'/> </menu> <menu name='View' action = 'View'> <menu name='ZoomFocus' action='ZoomFocus'> diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index ec7554bf3a..9e155dc5b9 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -983,6 +983,9 @@ class Editor : public PublicEditor void adjust_region_scale_amplitude (bool up); void use_region_as_bar (); + void use_range_as_bar (); + + void define_one_bar (nframes64_t start, nframes64_t end); void audition_region_from_region_list (); void hide_region_from_region_list (); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index 0b46253efb..4bb0d74aeb 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -361,6 +361,8 @@ Editor::register_actions () act = ActionManager::register_action (editor_actions, "set-tempo-from-region", _("Set Tempo from Region=Bar"), mem_fun(*this, &Editor::use_region_as_bar)); ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_action (editor_actions, "set-tempo-from-edit-range", _("Set Tempo from Edit Range=Bar"), mem_fun(*this, &Editor::use_range_as_bar)); + ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (editor_actions, "crop", _("Crop"), mem_fun(*this, &Editor::crop_region_to_selection)); ActionManager::session_sensitive_actions.push_back (act); diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 11917851f7..f960f27d0f 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4962,7 +4962,24 @@ Editor::use_region_as_bar () RegionView* rv = selection->regions.front(); - const Meter& m (session->tempo_map().meter_at (rv->region()->position())); + define_one_bar (rv->region()->position(), rv->region()->last_frame() + 1); +} + +void +Editor::use_range_as_bar () +{ + nframes64_t start, end; + if (get_edit_op_range (start, end)) { + define_one_bar (start, end); + } +} + +void +Editor::define_one_bar (nframes64_t start, nframes64_t end) +{ + nframes64_t length = end - start; + + const Meter& m (session->tempo_map().meter_at (start)); /* region length = 1 bar */ @@ -4974,21 +4991,21 @@ Editor::use_region_as_bar () we have frames per bar, and beats per bar, so ... */ - double frames_per_beat = rv->region()->length() / beats_per_bar; + double frames_per_beat = length / beats_per_bar; /* beats per minute = */ double beats_per_minute = (session->frame_rate() * 60.0) / frames_per_beat; - const TempoSection& t (session->tempo_map().tempo_section_at (rv->region()->position())); + const TempoSection& t (session->tempo_map().tempo_section_at (start)); begin_reversible_command (_("set tempo from region")); XMLNode& before (session->tempo_map().get_state()); - if (t.frame() == rv->region()->position()) { - session->tempo_map().change_existing_tempo_at (rv->region()->position(), beats_per_minute, t.note_type()); + if (t.frame() == start) { + session->tempo_map().change_existing_tempo_at (start, beats_per_minute, t.note_type()); } else { - session->tempo_map().add_tempo (Tempo (beats_per_minute, t.note_type()), rv->region()->position()); + session->tempo_map().add_tempo (Tempo (beats_per_minute, t.note_type()), start); } XMLNode& after (session->tempo_map().get_state()); |