mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-06 13:45:43 +01:00
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
This commit is contained in:
parent
4251da6ae4
commit
de80d6b95d
5 changed files with 32 additions and 7 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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'>
|
||||
|
|
|
|||
|
|
@ -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 ();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue