mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 14:54:56 +01:00
Add region polarity invert to Region menu
This commit is contained in:
parent
9819cdb117
commit
0f949bc02b
5 changed files with 50 additions and 0 deletions
|
|
@ -385,6 +385,7 @@
|
||||||
<menuitem action='cut-region-gain'/>
|
<menuitem action='cut-region-gain'/>
|
||||||
<menuitem action='reset-region-gain'/>
|
<menuitem action='reset-region-gain'/>
|
||||||
<menuitem action='reset-region-gain-envelopes'/>
|
<menuitem action='reset-region-gain-envelopes'/>
|
||||||
|
<menuitem action='toggle-region-polarity'/>
|
||||||
<menuitem action='toggle-region-gain-envelope-active'/>
|
<menuitem action='toggle-region-gain-envelope-active'/>
|
||||||
</menu>
|
</menu>
|
||||||
<menu action='RegionMenuPosition'>
|
<menu action='RegionMenuPosition'>
|
||||||
|
|
@ -931,6 +932,7 @@
|
||||||
<menuitem action='cut-region-gain'/>
|
<menuitem action='cut-region-gain'/>
|
||||||
<menuitem action='reset-region-gain'/>
|
<menuitem action='reset-region-gain'/>
|
||||||
<menuitem action='reset-region-gain-envelopes'/>
|
<menuitem action='reset-region-gain-envelopes'/>
|
||||||
|
<menuitem action='toggle-region-polarity'/>
|
||||||
<menuitem action='toggle-region-gain-envelope-active'/>
|
<menuitem action='toggle-region-gain-envelope-active'/>
|
||||||
</menu>
|
</menu>
|
||||||
<menu action='RegionMenuFades'>
|
<menu action='RegionMenuFades'>
|
||||||
|
|
|
||||||
|
|
@ -2314,6 +2314,7 @@ private:
|
||||||
void set_gain_envelope_visibility ();
|
void set_gain_envelope_visibility ();
|
||||||
void set_region_gain_visibility (RegionView*);
|
void set_region_gain_visibility (RegionView*);
|
||||||
void toggle_gain_envelope_active ();
|
void toggle_gain_envelope_active ();
|
||||||
|
void toggle_region_polarity ();
|
||||||
void reset_region_gain_envelopes ();
|
void reset_region_gain_envelopes ();
|
||||||
|
|
||||||
void session_state_saved (std::string);
|
void session_state_saved (std::string);
|
||||||
|
|
|
||||||
|
|
@ -1911,6 +1911,8 @@ Editor::register_region_actions ()
|
||||||
|
|
||||||
register_toggle_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "toggle-region-gain-envelope-active", _("Envelope Active"), sigc::mem_fun (*this, &Editor::toggle_gain_envelope_active));
|
register_toggle_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "toggle-region-gain-envelope-active", _("Envelope Active"), sigc::mem_fun (*this, &Editor::toggle_gain_envelope_active));
|
||||||
|
|
||||||
|
register_toggle_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "toggle-region-polarity", _("Invert Polarity"), sigc::mem_fun (*this, &Editor::toggle_region_polarity));
|
||||||
|
|
||||||
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "quantize-region", _("Quantize..."), sigc::mem_fun (*this, &Editor::quantize_region));
|
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "quantize-region", _("Quantize..."), sigc::mem_fun (*this, &Editor::quantize_region));
|
||||||
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "legatize-region", _("Legatize"), sigc::bind(sigc::mem_fun (*this, &Editor::legatize_region), false));
|
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "legatize-region", _("Legatize"), sigc::bind(sigc::mem_fun (*this, &Editor::legatize_region), false));
|
||||||
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "deinterlace-midi", _("Deinterlace Into Layers"), sigc::mem_fun (*this, &Editor::deinterlace_selected_midi_regions));
|
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "deinterlace-midi", _("Deinterlace Into Layers"), sigc::mem_fun (*this, &Editor::deinterlace_selected_midi_regions));
|
||||||
|
|
|
||||||
|
|
@ -6409,6 +6409,41 @@ Editor::set_gain_envelope_visibility ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Editor::toggle_region_polarity ()
|
||||||
|
{
|
||||||
|
if (_ignore_region_action) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RegionSelection rs = get_regions_from_selection_and_entered ();
|
||||||
|
|
||||||
|
if (!_session || rs.empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool in_command = false;
|
||||||
|
|
||||||
|
for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) {
|
||||||
|
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
|
||||||
|
if (arv) {
|
||||||
|
arv->region()->clear_changes ();
|
||||||
|
gain_t scale_amplitude = arv->audio_region()->scale_amplitude ();
|
||||||
|
arv->audio_region()->set_scale_amplitude (-1 * scale_amplitude);
|
||||||
|
|
||||||
|
if (!in_command) {
|
||||||
|
begin_reversible_command (_("region polarity invery"));
|
||||||
|
in_command = true;
|
||||||
|
}
|
||||||
|
_session->add_command (new StatefulDiffCommand (arv->region()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_command) {
|
||||||
|
commit_reversible_command ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Editor::toggle_gain_envelope_active ()
|
Editor::toggle_gain_envelope_active ()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1428,6 +1428,8 @@ Editor::sensitize_the_right_region_actions (bool because_canvas_crossing)
|
||||||
bool have_active_fade_in = false;
|
bool have_active_fade_in = false;
|
||||||
bool have_active_fade_out = false;
|
bool have_active_fade_out = false;
|
||||||
bool have_transients = false;
|
bool have_transients = false;
|
||||||
|
bool have_inverted_polarity = false;
|
||||||
|
bool have_non_inverted_polarity = false;
|
||||||
|
|
||||||
for (list<RegionView*>::const_iterator i = rs.begin(); i != rs.end(); ++i) {
|
for (list<RegionView*>::const_iterator i = rs.begin(); i != rs.end(); ++i) {
|
||||||
|
|
||||||
|
|
@ -1509,6 +1511,9 @@ Editor::sensitize_the_right_region_actions (bool because_canvas_crossing)
|
||||||
} else {
|
} else {
|
||||||
have_inactive_fade_out = true;
|
have_inactive_fade_out = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
have_inverted_polarity = ar->scale_amplitude () < 0;
|
||||||
|
have_non_inverted_polarity = ar->scale_amplitude () >= 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1565,6 +1570,10 @@ Editor::sensitize_the_right_region_actions (bool because_canvas_crossing)
|
||||||
// Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-gain-envelope-active"))->set_inconsistent ();
|
// Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-gain-envelope-active"))->set_inconsistent ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (have_inverted_polarity && !have_non_inverted_polarity) {
|
||||||
|
Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-polarity"))->set_active ();
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
_region_actions->get_action("loudness-analyze-region")->set_sensitive (false);
|
_region_actions->get_action("loudness-analyze-region")->set_sensitive (false);
|
||||||
|
|
@ -1574,6 +1583,7 @@ Editor::sensitize_the_right_region_actions (bool because_canvas_crossing)
|
||||||
_region_actions->get_action("pitch-shift-region")->set_sensitive (false);
|
_region_actions->get_action("pitch-shift-region")->set_sensitive (false);
|
||||||
_region_actions->get_action("strip-region-silence")->set_sensitive (false);
|
_region_actions->get_action("strip-region-silence")->set_sensitive (false);
|
||||||
_region_actions->get_action("show-rhythm-ferret")->set_sensitive (false);
|
_region_actions->get_action("show-rhythm-ferret")->set_sensitive (false);
|
||||||
|
_region_actions->get_action("toggle-region-polarity")->set_sensitive (false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue