diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-10-09 14:15:45 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-10-09 14:15:45 +0000 |
commit | 757c1c1026ffad4e56b0c4b5073d3925468c0a21 (patch) | |
tree | 9f2b15bd6c33d04dd1451e15e68d55d9610a88a0 | |
parent | 7002aebbda78b11ddc006c3f5863916ce5992bfc (diff) |
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
-rw-r--r-- | gtk2_ardour/ardour-sae.menus | 3 | ||||
-rw-r--r-- | gtk2_ardour/ardour.menus | 1 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/option_editor.cc | 19 | ||||
-rw-r--r-- | gtk2_ardour/option_editor.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/ardour.h | 14 | ||||
-rw-r--r-- | libs/ardour/ardour/configuration_vars.h | 4 | ||||
-rw-r--r-- | libs/ardour/audioregion.cc | 4 | ||||
-rw-r--r-- | libs/ardour/globals.cc | 10 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 24 |
12 files changed, 76 insertions, 23 deletions
diff --git a/gtk2_ardour/ardour-sae.menus b/gtk2_ardour/ardour-sae.menus index c2721f2a29..01482d61a3 100644 --- a/gtk2_ardour/ardour-sae.menus +++ b/gtk2_ardour/ardour-sae.menus @@ -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'> diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus index 13468a5633..c56abbbcee 100644 --- a/gtk2_ardour/ardour.menus +++ b/gtk2_ardour/ardour.menus @@ -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'> diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index bf1a5bb5b4..694eb9b52b 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -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 */ diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index e3dd1050fc..81dad3c244 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -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 (); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index 06e4b2c91f..fb5c8d04f4 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -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); @@ -1657,6 +1659,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 () { ActionManager::toggle_config_state ("Editor", "toggle-auto-xfades", &Configuration::set_auto_xfade, &Configuration::get_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")) { diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc index 9ddf9999b9..ca598a363f 100644 --- a/gtk2_ardour/option_editor.cc +++ b/gtk2_ardour/option_editor.cc @@ -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,10 +530,27 @@ 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 () { MIDI::Manager::PortMap::const_iterator i; diff --git a/gtk2_ardour/option_editor.h b/gtk2_ardour/option_editor.h index bb12698041..1aff7f2bcf 100644 --- a/gtk2_ardour/option_editor.h +++ b/gtk2_ardour/option_editor.h @@ -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(); diff --git a/libs/ardour/ardour/ardour.h b/libs/ardour/ardour/ardour.h index fd873f9a6f..635e8a31ca 100644 --- a/libs/ardour/ardour/ardour.h +++ b/libs/ardour/ardour/ardour.h @@ -82,14 +82,14 @@ namespace ARDOUR { static const double SHUTTLE_FRACT_SPEED1=0.48412291827; /* derived from A1,A2 */ void setup_fpu (); -} - -/* 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; + 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 (); +} #endif /* __ardour_ardour_h__ */ diff --git a/libs/ardour/ardour/configuration_vars.h b/libs/ardour/ardour/configuration_vars.h index 1f455dc308..f84a39067a 100644 --- a/libs/ardour/ardour/configuration_vars.h +++ b/libs/ardour/ardour/configuration_vars.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 */ diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc index d7ade04bc4..c5c04bc33d 100644 --- a/libs/ardour/audioregion.cc +++ b/libs/ardour/audioregion.cc @@ -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 */ diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index 3401d8c48a..04b4543b71 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -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; diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 0975d4dc8a..099b926fa7 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -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 (); |