diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-19 21:13:45 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-19 21:13:45 +0000 |
commit | 89d564186d0b41469cf56ca3f400f98d3ddcfce8 (patch) | |
tree | 3824c6fb6d96a26a00346d848309ff982e852297 /gtk2_ardour | |
parent | 95a24f9707c342ea1764eb8d1de0a9c73eda84df (diff) |
fixes and bindings for region gain control; set-tempo-from-region implementation : please test and look for tempo/meter related bugs
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2950 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour.bindings.in | 14 | ||||
-rw-r--r-- | gtk2_ardour/ardour.menus | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 65 |
5 files changed, 68 insertions, 17 deletions
diff --git a/gtk2_ardour/ardour.bindings.in b/gtk2_ardour/ardour.bindings.in index 1efdb1cdd4..9dbbd8deff 100644 --- a/gtk2_ardour/ardour.bindings.in +++ b/gtk2_ardour/ardour.bindings.in @@ -38,6 +38,10 @@ (gtk_accel_path "<Actions>/Editor/set-punch-from-edit-range" "bracketleft") (gtk_accel_path "<Actions>/Editor/set-punch-from-region" "<%SECONDARY%>bracketleft") +(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 ;; TOP ROW @@ -50,6 +54,7 @@ (gtk_accel_path "<Actions>/Editor/select-all-before-edit-cursor" "<%PRIMARY%>e") (gtk_accel_path "<Actions>/Editor/show-editor-mixer" "<%TERTIARY%>e") (gtk_accel_path "<Actions>/Common/goto-editor" "<%WINDOW%>e") +(gtk_accel_path "<Actions>/Editor/select-all-after-edit-cursor" "<%TERTIARY%><%PRIMARY%>e") (gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-range" "r") (gtk_accel_path "<Actions>/Editor/redo" "<%PRIMARY%>r") (gtk_accel_path "<Actions>/Transport/Record" "<%TERTIARY%>r") @@ -62,22 +67,19 @@ (gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<%WINDOW%>o") (gtk_accel_path "<Actions>/Editor/set-playhead" "p") (gtk_accel_path "<Actions>/Editor/select-all-before-playhead" "<%PRIMARY%>p") +(gtk_accel_path "<Actions>/Editor/select-all-after-playhead" "<%TERTIARY%><%PRIMARY%>p") ;; MIDDLE ROW (gtk_accel_path "<Actions>/Editor/align-regions-sync-relative" "a") -(gtk_accel_path "<Actions>/Editor/align-regions-start-relative" "<%PRIMARY%>a") +(gtk_accel_path "<Actions>/Editor/select-all" "<%PRIMARY%>a") (gtk_accel_path "<Actions>/Editor/align-regions-end" "<%SECONDARY%>a") (gtk_accel_path "<Actions>/Editor/align-regions-sync" "<%TERTIARY%>a") +(gtk_accel_path "<Actions>/Editor/align-regions-start-relative" "<%LEVEL4%>a") (gtk_accel_path "<Actions>/Editor/split-region" "s") (gtk_accel_path "<Actions>/Common/Save" "<%PRIMARY%>s") (gtk_accel_path "<Actions>/Editor/duplicate-region" "d") (gtk_accel_path "<Actions>/Editor/select-all-in-punch-range" "<%PRIMARY%>d") - -(gtk_accel_path "<Actions>/Editor/select-all" "<%PRIMARY%>a") -(gtk_accel_path "<Actions>/Editor/select-all-after-playhead" "<%TERTIARY%><%PRIMARY%>p") -(gtk_accel_path "<Actions>/Editor/select-all-after-edit-cursor" "<%TERTIARY%><%PRIMARY%>e") - (gtk_accel_path "<Actions>/Editor/toggle-follow-playhead" "f") (gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-gain" "g") (gtk_accel_path "<Actions>/Editor/play-selected-regions" "h") diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus index 73768f3cf4..2237a30ea0 100644 --- a/gtk2_ardour/ardour.menus +++ b/gtk2_ardour/ardour.menus @@ -194,6 +194,7 @@ <menuitem action='trim-region-to-punch'/> <separator/> <menuitem action='pitch-shift-region'/> + <menuitem action='set-tempo-from-region'/> </menu> <menu name='View' action = 'View'> <menu name='ZoomFocus' action='ZoomFocus'> diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index ac67f9015f..ec7554bf3a 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -982,6 +982,8 @@ class Editor : public PublicEditor void denormalize_region (); void adjust_region_scale_amplitude (bool up); + void use_region_as_bar (); + void audition_region_from_region_list (); void hide_region_from_region_list (); void remove_region_from_region_list (); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index ce33a0177e..0b46253efb 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -359,6 +359,9 @@ Editor::register_actions () act = ActionManager::register_action (editor_actions, "cut-region-gain", _("Cut Region Gain"), bind (mem_fun(*this, &Editor::adjust_region_scale_amplitude), false)); ActionManager::session_sensitive_actions.push_back (act); + 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, "crop", _("Crop"), mem_fun(*this, &Editor::crop_region_to_selection)); ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (editor_actions, "insert-chunk", _("Insert Chunk"), bind (mem_fun(*this, &Editor::paste_named_selection), 1.0f)); diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 51a6d294cd..11917851f7 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4119,7 +4119,7 @@ Editor::adjust_region_scale_amplitude (bool up) return; } - ExclusiveRegionSelection (*this, entered_regionview); + ExclusiveRegionSelection esr (*this, entered_regionview); if (selection->regions.empty()) { return; @@ -4135,10 +4135,6 @@ Editor::adjust_region_scale_amplitude (bool up) double fraction = gain_to_slider_position (arv->audio_region()->scale_amplitude ()); - cerr << "slider pos for " << arv->audio_region()->scale_amplitude () - << " = " << fraction - << endl; - if (up) { fraction += 0.05; fraction = min (fraction, 1.0); @@ -4151,16 +4147,14 @@ Editor::adjust_region_scale_amplitude (bool up) continue; } - if (up && fraction >= 1.0) { - continue; - } - fraction = slider_position_to_gain (fraction); fraction = coefficient_to_dB (fraction); fraction = dB_to_coefficient (fraction); - - cerr << "set scale amp for " << arv->audio_region()->name() << " to " << fraction << endl; + if (up && fraction >= 2.0) { + continue; + } + arv->audio_region()->set_scale_amplitude (fraction); session->add_command (new MementoCommand<Region>(*(arv->region().get()), &before, &arv->region()->get_state())); } @@ -4953,3 +4947,52 @@ Editor::pitch_shift_regions () pitch_shift (selection->regions, 1.2); } +void +Editor::use_region_as_bar () +{ + if (!session) { + return; + } + + ExclusiveRegionSelection esr (*this, entered_regionview); + + if (selection->regions.empty()) { + return; + } + + RegionView* rv = selection->regions.front(); + + const Meter& m (session->tempo_map().meter_at (rv->region()->position())); + + /* region length = 1 bar */ + + /* 1 bar = how many beats per bar */ + + double beats_per_bar = m.beats_per_bar(); + + /* now we want frames per beat. + we have frames per bar, and beats per bar, so ... + */ + + double frames_per_beat = rv->region()->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())); + + 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()); + } else { + session->tempo_map().add_tempo (Tempo (beats_per_minute, t.note_type()), rv->region()->position()); + } + + XMLNode& after (session->tempo_map().get_state()); + + session->add_command (new MementoCommand<TempoMap>(session->tempo_map(), &before, &after)); + commit_reversible_command (); +} |