mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-17 12:16:30 +01:00
add global region fade toggle; fixup (?) reload of MIDI config state (both ported from 2.X)
git-svn-id: svn://localhost/ardour2/branches/3.0@3897 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
7002aebbda
commit
757c1c1026
12 changed files with 76 additions and 23 deletions
|
|
@ -212,7 +212,8 @@
|
|||
<menuitem action='boost-region-gain'/>
|
||||
<menuitem action='cut-region-gain'/>
|
||||
<menuitem action='pitch-shift-region'/>
|
||||
|
||||
<separator/>
|
||||
<menuitem action='toggle-region-fades'/>
|
||||
</menu>
|
||||
|
||||
<menu name='View' action = 'View'>
|
||||
|
|
|
|||
|
|
@ -548,6 +548,7 @@
|
|||
<menuitem action='link-region-and-track-selection'/>
|
||||
<menuitem action='RubberbandingSnapsToGrid'/>
|
||||
<menuitem action='AutoAnalyseAudio'/>
|
||||
<menuitem action='toggle-region-fades'/>
|
||||
</menu>
|
||||
</menu>
|
||||
<menu name='Help' action='Help'>
|
||||
|
|
|
|||
|
|
@ -304,8 +304,6 @@ ARDOUR_UI::create_engine ()
|
|||
void
|
||||
ARDOUR_UI::post_engine ()
|
||||
{
|
||||
extern int setup_midi ();
|
||||
|
||||
/* Things to be done once we create the AudioEngine
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -335,8 +335,10 @@ class Editor : public PublicEditor
|
|||
void update_smpte_mode();
|
||||
void update_video_pullup();
|
||||
void update_subframes_per_frame ();
|
||||
/* xfades */
|
||||
|
||||
/* fades/xfades */
|
||||
|
||||
void toggle_region_fades ();
|
||||
void toggle_auto_xfade ();
|
||||
void toggle_xfades_active ();
|
||||
void toggle_xfade_visibility ();
|
||||
|
|
|
|||
|
|
@ -118,6 +118,8 @@ Editor::register_actions ()
|
|||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_toggle_action (editor_actions, "toggle-auto-xfades", _("Created Automatically"), mem_fun(*this, &Editor::toggle_auto_xfade));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_toggle_action (editor_actions, "toggle-region-fades", _("Active Region Fades"), mem_fun(*this, &Editor::toggle_region_fades));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "playhead-to-next-region-boundary", _("Playhead to Next Region Boundary"), bind (mem_fun(*this, &Editor::cursor_to_next_region_boundary), playhead_cursor));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
|
@ -1656,6 +1658,12 @@ Editor::subframes_per_frame_chosen (uint32_t sfpf)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
Editor::toggle_region_fades ()
|
||||
{
|
||||
ActionManager::toggle_config_state ("Editor", "toggle-region-fades", &Configuration::set_use_region_fades, &Configuration::get_use_region_fades);
|
||||
}
|
||||
|
||||
void
|
||||
Editor::toggle_auto_xfade ()
|
||||
{
|
||||
|
|
@ -1708,6 +1716,8 @@ Editor::parameter_changed (const char* parameter_name)
|
|||
} else if (PARAM_IS ("xfades-visible")) {
|
||||
ActionManager::map_some_state ("Editor", "toggle-xfades-visible", &Configuration::get_xfades_visible);
|
||||
update_xfade_visibility ();
|
||||
} else if (PARAM_IS ("use-region-fades")) {
|
||||
ActionManager::map_some_state ("Editor", "toggle-region-fades", &Configuration::get_use_region_fades);
|
||||
} else if (PARAM_IS ("auto-xfade")) {
|
||||
ActionManager::map_some_state ("Editor", "toggle-auto-xfades", &Configuration::get_auto_xfade);
|
||||
} else if (PARAM_IS ("xfade-model")) {
|
||||
|
|
|
|||
|
|
@ -95,6 +95,8 @@ OptionEditor::OptionEditor (ARDOUR_UI& uip, PublicEditor& ed, Mixer_UI& mixui)
|
|||
mmc_send_device_id_adjustment (0.0, 0.0, (double) 0x7f, 1.0, 16.0),
|
||||
mmc_send_device_id_spinner (mmc_send_device_id_adjustment),
|
||||
add_midi_port_button (_("Add new MIDI port")),
|
||||
initial_program_change_adjustment (0.0, -1.0, (double) 0x7f, 1.0, 16.0),
|
||||
initial_program_change_spinner (initial_program_change_adjustment),
|
||||
|
||||
/* Click */
|
||||
|
||||
|
|
@ -528,9 +530,26 @@ OptionEditor::setup_midi_options ()
|
|||
|
||||
mmc_send_device_id_spinner.set_value(Config->get_mmc_send_device_id ());
|
||||
|
||||
hbox = manage (new HBox);
|
||||
hbox->set_border_width (6);
|
||||
hbox->set_spacing (6);
|
||||
label = (manage (new Label (_("Startup program change"))));
|
||||
hbox->pack_start (initial_program_change_spinner, false, false);
|
||||
hbox->pack_start (*label, false, false);
|
||||
midi_packer.pack_start (*hbox, false, false);
|
||||
|
||||
initial_program_change_spinner.set_value (Config->get_initial_program_change());
|
||||
initial_program_change_adjustment.signal_value_changed().connect (mem_fun (*this, &OptionEditor::initial_program_change_adjusted));
|
||||
|
||||
add_midi_port_button.signal_clicked().connect (mem_fun (*this, &OptionEditor::add_midi_port));
|
||||
}
|
||||
|
||||
void
|
||||
OptionEditor::initial_program_change_adjusted ()
|
||||
{
|
||||
Config->set_initial_program_change (((int32_t) floor (initial_program_change_adjustment.get_value())) & 0x7f);
|
||||
}
|
||||
|
||||
void
|
||||
OptionEditor::redisplay_midi_ports ()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -137,6 +137,8 @@ class OptionEditor : public ArdourDialog
|
|||
Gtk::Adjustment mmc_send_device_id_adjustment;
|
||||
Gtk::SpinButton mmc_send_device_id_spinner;
|
||||
Gtk::Button add_midi_port_button;
|
||||
Gtk::Adjustment initial_program_change_adjustment;
|
||||
Gtk::SpinButton initial_program_change_spinner;
|
||||
|
||||
void add_midi_port ();
|
||||
void remove_midi_port (MIDI::Port*);
|
||||
|
|
@ -155,6 +157,8 @@ class OptionEditor : public ArdourDialog
|
|||
void mmc_receive_device_id_adjusted ();
|
||||
void mmc_send_device_id_adjusted ();
|
||||
|
||||
void initial_program_change_adjusted ();
|
||||
|
||||
void map_port_online (MIDI::Port*, Gtk::ToggleButton*);
|
||||
|
||||
void setup_midi_options();
|
||||
|
|
|
|||
|
|
@ -82,14 +82,14 @@ namespace ARDOUR {
|
|||
static const double SHUTTLE_FRACT_SPEED1=0.48412291827; /* derived from A1,A2 */
|
||||
|
||||
void setup_fpu ();
|
||||
|
||||
extern MIDI::Port* default_mmc_port;
|
||||
extern MIDI::Port* default_mtc_port;
|
||||
extern MIDI::Port* default_midi_port;
|
||||
extern MIDI::Port *default_midi_clock_port;
|
||||
|
||||
int setup_midi ();
|
||||
}
|
||||
|
||||
/* how do we make these be within the Ardour namespace? */
|
||||
|
||||
extern MIDI::Port* default_mmc_port;
|
||||
extern MIDI::Port* default_mtc_port;
|
||||
extern MIDI::Port* default_midi_port;
|
||||
extern MIDI::Port *default_midi_clock_port;
|
||||
|
||||
#endif /* __ardour_ardour_h__ */
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ CONFIG_VARIABLE (bool, midi_clock_control, "midi-clock-control", false)
|
|||
CONFIG_VARIABLE (bool, midi_feedback, "midi-feedback", false)
|
||||
CONFIG_VARIABLE (uint8_t, mmc_receive_device_id, "mmc-receive-device-id", 0)
|
||||
CONFIG_VARIABLE (uint8_t, mmc_send_device_id, "mmc-send-device-id", 0)
|
||||
CONFIG_VARIABLE (int32_t, initial_program_change, "initial-program-change", -1)
|
||||
|
||||
/* control surfaces */
|
||||
|
||||
|
|
@ -63,7 +64,7 @@ CONFIG_VARIABLE (bool, auto_analyse_audio, "auto-analyse-audio", false)
|
|||
CONFIG_VARIABLE (uint32_t, osc_port, "osc-port", 3819)
|
||||
CONFIG_VARIABLE (bool, use_osc, "use-osc", false)
|
||||
|
||||
/* crossfades */
|
||||
/* fades, crossfades */
|
||||
|
||||
CONFIG_VARIABLE (CrossfadeModel, xfade_model, "xfade-model", FullCrossfade)
|
||||
CONFIG_VARIABLE (bool, auto_xfade, "auto-xfade", true)
|
||||
|
|
@ -71,6 +72,7 @@ CONFIG_VARIABLE (float, short_xfade_seconds, "short-xfade-seconds", 0.015)
|
|||
CONFIG_VARIABLE (bool, xfades_active, "xfades-active", true)
|
||||
CONFIG_VARIABLE (bool, xfades_visible, "xfades-visible", true)
|
||||
CONFIG_VARIABLE (uint32_t, destructive_xfade_msecs, "destructive-xfade-msecs", 2)
|
||||
CONFIG_VARIABLE (bool, use_region_fades, "use-region-fades", true)
|
||||
|
||||
/* editing related */
|
||||
|
||||
|
|
|
|||
|
|
@ -395,7 +395,7 @@ AudioRegion::_read_at (const SourceList& srcs, nframes_t limit,
|
|||
|
||||
if (!raw) {
|
||||
|
||||
if (_flags & FadeIn) {
|
||||
if ((_flags & FadeIn) && Config->get_use_region_fades()) {
|
||||
|
||||
nframes_t fade_in_length = (nframes_t) _fade_in->back()->when;
|
||||
|
||||
|
|
@ -417,7 +417,7 @@ AudioRegion::_read_at (const SourceList& srcs, nframes_t limit,
|
|||
|
||||
/* fade out */
|
||||
|
||||
if (_flags & FadeOut) {
|
||||
if ((_flags & FadeOut) && Config->get_use_region_fades()) {
|
||||
|
||||
/* see if some part of this read is within the fade out */
|
||||
|
||||
|
|
|
|||
|
|
@ -92,10 +92,10 @@ using namespace ARDOUR;
|
|||
using namespace std;
|
||||
using namespace PBD;
|
||||
|
||||
MIDI::Port *default_mmc_port = 0;
|
||||
MIDI::Port *default_mtc_port = 0;
|
||||
MIDI::Port *default_midi_port = 0;
|
||||
MIDI::Port *default_midi_clock_port = 0;
|
||||
MIDI::Port *ARDOUR::default_mmc_port = 0;
|
||||
MIDI::Port *ARDOUR::default_mtc_port = 0;
|
||||
MIDI::Port *ARDOUR::default_midi_port = 0;
|
||||
MIDI::Port *ARDOUR::default_midi_clock_port = 0;
|
||||
|
||||
Change ARDOUR::StartChanged = ARDOUR::new_change ();
|
||||
Change ARDOUR::LengthChanged = ARDOUR::new_change ();
|
||||
|
|
@ -131,7 +131,7 @@ setup_osc ()
|
|||
#endif
|
||||
|
||||
int
|
||||
setup_midi ()
|
||||
ARDOUR::setup_midi ()
|
||||
{
|
||||
if (Config->midi_ports.size() == 0) {
|
||||
warning << _("no MIDI ports specified: no MMC or MTC control possible") << endmsg;
|
||||
|
|
|
|||
|
|
@ -872,6 +872,12 @@ Session::load_options (const XMLNode& node)
|
|||
|
||||
Config->set_variables (node, ConfigVariableBase::Session);
|
||||
|
||||
/* now reset MIDI ports because the session can have its own
|
||||
MIDI configuration.
|
||||
*/
|
||||
|
||||
setup_midi ();
|
||||
|
||||
if ((child = find_named_node (node, "end-marker-is-free")) != 0) {
|
||||
if ((prop = child->property ("val")) != 0) {
|
||||
_end_location_is_free = (prop->value() == "yes");
|
||||
|
|
@ -1204,10 +1210,10 @@ Session::set_state (const XMLNode& node)
|
|||
|
||||
/* Object loading order:
|
||||
|
||||
MIDI Control
|
||||
Path
|
||||
extra
|
||||
Options/Config
|
||||
MIDI Control // relies on data from Options/Config
|
||||
Metadata
|
||||
Locations
|
||||
Sources
|
||||
|
|
@ -1221,9 +1227,6 @@ Session::set_state (const XMLNode& node)
|
|||
ControlProtocols
|
||||
*/
|
||||
|
||||
if (use_config_midi_ports ()) {
|
||||
}
|
||||
|
||||
if ((child = find_named_node (node, "extra")) != 0) {
|
||||
_extra_xml = new XMLNode (*child);
|
||||
}
|
||||
|
|
@ -1236,6 +1239,9 @@ Session::set_state (const XMLNode& node)
|
|||
error << _("Session: XML state has no options section") << endmsg;
|
||||
}
|
||||
|
||||
if (use_config_midi_ports ()) {
|
||||
}
|
||||
|
||||
if ((child = find_named_node (node, "Metadata")) == 0) {
|
||||
warning << _("Session: XML state has no metadata section (2.0 session?)") << endmsg;
|
||||
} else if (_metadata->set_state (*child)) {
|
||||
|
|
@ -3252,6 +3258,16 @@ Session::config_changed (const char* parameter_name)
|
|||
set_history_depth (Config->get_history_depth());
|
||||
} else if (PARAM_IS ("sync-all-route-ordering")) {
|
||||
sync_order_keys ();
|
||||
} else if (PARAM_IS ("initial-program-change")) {
|
||||
|
||||
if (_mmc_port && Config->get_initial_program_change() >= 0) {
|
||||
MIDI::byte buf[2];
|
||||
|
||||
buf[0] = MIDI::program; // channel zero by default
|
||||
buf[1] = (Config->get_initial_program_change() & 0x7f);
|
||||
|
||||
_mmc_port->midimsg (buf, sizeof (buf), 0);
|
||||
}
|
||||
}
|
||||
|
||||
set_dirty ();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue