#include "pbd/fpu.h"
#include "pbd/cpus.h"
-#include "midi++/manager.h"
-
#include "ardour/audioengine.h"
#include "ardour/dB.h"
#include "ardour/rc_configuration.h"
#include "ardour/control_protocol_manager.h"
+#include "ardour/plugin_manager.h"
#include "control_protocol/control_protocol.h"
#include "ardour_window.h"
public:
ControlSurfacesOptions (Gtk::Window& parent)
: _parent (parent)
+ , _ignore_view_change (0)
{
_store = ListStore::create (_model);
_view.set_model (_store);
- _view.append_column (_("Name"), _model.name);
+ _view.append_column (_("Control Surface Protocol"), _model.name);
_view.get_column(0)->set_resizable (true);
_view.get_column(0)->set_expand (true);
_view.append_column_editable (_("Enabled"), _model.enabled);
void protocol_status_changed (ControlProtocolInfo* cpi) {
/* find the row */
TreeModel::Children rows = _store->children();
+
for (TreeModel::Children::iterator x = rows.begin(); x != rows.end(); ++x) {
+ string n = ((*x)[_model.name]);
+
if ((*x)[_model.protocol_info] == cpi) {
+ _ignore_view_change++;
(*x)[_model.enabled] = (cpi->protocol || cpi->requested);
+ _ignore_view_change--;
break;
}
}
{
TreeModel::Row r = *i;
+ if (_ignore_view_change) {
+ return;
+ }
+
ControlProtocolInfo* cpi = r[_model.protocol_info];
if (!cpi) {
return;
bool const was_enabled = (cpi->protocol != 0);
bool const is_enabled = r[_model.enabled];
+
if (was_enabled != is_enabled) {
+
if (!was_enabled) {
- ControlProtocolManager::instance().instantiate (*cpi);
+ ControlProtocolManager::instance().activate (*cpi);
} else {
Gtk::Window* win = r[_model.editor];
if (win) {
win->hide ();
}
- ControlProtocolManager::instance().teardown (*cpi);
+ ControlProtocolManager::instance().deactivate (*cpi);
if (win) {
delete win;
+ r[_model.editor] = 0;
}
- r[_model.editor] = 0;
- cpi->requested = false;
}
}
TreeView _view;
Gtk::Window& _parent;
PBD::ScopedConnection protocol_status_connection;
+ uint32_t _ignore_view_change;
};
class VideoTimelineOptions : public OptionEditorBox
t->attach (*l, 0, 1, 1, 2, FILL);
t->attach (_video_server_url_entry, 1, 2, 1, 2, FILL);
Gtkmm2ext::UI::instance()->set_tip (_video_server_url_entry,
- _("Base URL of the video-server including http prefix. This is usually 'http://hostname.example.org:1554/' and defaults to 'http://localhost:1554/' when the video-server is runing locally"));
+ _("Base URL of the video-server including http prefix. This is usually 'http://hostname.example.org:1554/' and defaults to 'http://localhost:1554/' when the video-server is running locally"));
l = manage (new Label (_("Video Folder:")));
l->set_alignment (0, 0.5);
tsf = new BoolOption (
"seamless-loop",
- _("Do seamless looping (not possible when slaved to MTC, JACK etc)"),
+ _("Do seamless looping (not possible when slaved to MTC, LTC etc)"),
sigc::mem_fun (*_rc_config, &RCConfiguration::get_seamless_loop),
sigc::mem_fun (*_rc_config, &RCConfiguration::set_seamless_loop)
);
sigc::mem_fun (*_rc_config, &RCConfiguration::set_show_track_meters)
));
+ add_option (_("Editor"),
+ new BoolOption (
+ "show-editor-meter",
+ _("Display master-meter in the toolbar"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_show_editor_meter),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_show_editor_meter)
+ ));
+
bco = new BoolComboOption (
"use-overlap-equivalency",
_("Regions in active edit groups are edited together"),
sigc::mem_fun (*_rc_config, &RCConfiguration::set_update_editor_during_summary_drag)
));
- add_option (_("Editor"),
- new BoolOption (
- "sync-all-route-ordering",
- _("Synchronise editor and mixer track order"),
- sigc::mem_fun (*_rc_config, &RCConfiguration::get_sync_all_route_ordering),
- sigc::mem_fun (*_rc_config, &RCConfiguration::set_sync_all_route_ordering)
- ));
-
add_option (_("Editor"),
new BoolOption (
"link-editor-and-mixer-selection",
sigc::mem_fun (*_rc_config, &RCConfiguration::set_monitoring_model)
);
-#ifndef __APPLE__
- /* no JACK monitoring on CoreAudio */
- if (AudioEngine::instance()->can_request_hardware_monitoring()) {
- mm->add (HardwareMonitoring, _("JACK"));
+ if (AudioEngine::instance()->port_engine().can_monitor_input()) {
+ mm->add (HardwareMonitoring, _("via Audio Driver"));
}
-#endif
+
mm->add (SoftwareMonitoring, _("ardour"));
mm->add (ExternalMonitoring, _("audio hardware"));
/* SOLO AND MUTE */
+ add_option (_("Solo / mute"), new OptionEditorHeading (_("Solo")));
+
add_option (_("Solo / mute"),
new FaderOption (
"solo-mute-gain",
sigc::mem_fun (*_rc_config, &RCConfiguration::set_mute_affects_main_outs)
));
+ add_option (_("Solo / mute"), new OptionEditorHeading (_("Send Routing")));
+
+ add_option (_("Solo / mute"),
+ new BoolOption (
+ "link-send-and-route-panner",
+ _("Link panners of Aux and External Sends with main panner by default"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_link_send_and_route_panner),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_link_send_and_route_panner)
+ ));
+
add_option (_("MIDI"),
new BoolOption (
"send-midi-clock",
sigc::mem_fun (*_rc_config, &RCConfiguration::set_sound_midi_notes)
));
+ add_option (_("MIDI"), new OptionEditorHeading (_("Midi Audition")));
+
+ ComboOption<std::string>* audition_synth = new ComboOption<std::string> (
+ "midi-audition-synth-uri",
+ _("Midi Audition Synth (LV2)"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_midi_audition_synth_uri),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_midi_audition_synth_uri)
+ );
+
+ audition_synth->add(X_(""), _("None"));
+ PluginInfoList all_plugs;
+ PluginManager& manager (PluginManager::instance());
+#ifdef LV2_SUPPORT
+ all_plugs.insert (all_plugs.end(), manager.lv2_plugin_info().begin(), manager.lv2_plugin_info().end());
+
+ for (PluginInfoList::const_iterator i = all_plugs.begin(); i != all_plugs.end(); ++i) {
+ if (manager.get_status (*i) == PluginManager::Hidden) continue;
+ if (!(*i)->is_instrument()) continue;
+ if ((*i)->type != ARDOUR::LV2) continue;
+ audition_synth->add((*i)->unique_id, (*i)->name);
+ }
+#endif
+
+ add_option (_("MIDI"), audition_synth);
+
/* USER INTERACTION */
if (getenv ("ARDOUR_BUNDLED")) {
add_option (_("User interaction"), new KeyboardOptions);
- add_option (_("User interaction"), new OptionEditorHeading (_("Control surfaces")));
+ /* Control Surfaces */
- add_option (_("User interaction"), new ControlSurfacesOptions (*this));
+ add_option (_("Control Surfaces"), new ControlSurfacesOptions (*this));
ComboOption<RemoteModel>* rm = new ComboOption<RemoteModel> (
"remote-model",
rm->add (UserOrdered, _("assigned by user"));
rm->add (MixerOrdered, _("follows order of mixer"));
- rm->add (EditorOrdered, _("follows order of editor"));
- add_option (_("User interaction"), rm);
+ add_option (_("Control Surfaces"), rm);
/* VIDEO Timeline */
add_option (_("Video"), new VideoTimelineOptions (_rc_config));
/* INTERFACE */
- add_option (S_("GUI"),
+ add_option (S_("Preferences|GUI"),
new BoolOption (
"widget-prelight",
_("Graphically indicate mouse pointer hovering over various widgets"),
sigc::mem_fun (*_rc_config, &RCConfiguration::set_widget_prelight)
));
- add_option (S_("GUI"),
+ add_option (S_("Preferences|GUI"),
new BoolOption (
"use-tooltips",
_("Show tooltips if mouse hovers over a control"),
#ifndef GTKOSX
/* font scaling does nothing with GDK/Quartz */
- add_option (S_("GUI"), new FontScalingOptions (_rc_config));
+ add_option (S_("Preferences|GUI"), new FontScalingOptions (_rc_config));
#endif
- add_option (S_("GUI"),
- new BoolOption (
- "use-own-plugin-gui",
- string_compose (_("Use plugins' own interfaces instead of %1's"), PROGRAM_NAME),
- sigc::mem_fun (*_rc_config, &RCConfiguration::get_use_plugin_own_gui),
- sigc::mem_fun (*_rc_config, &RCConfiguration::set_use_plugin_own_gui)
- ));
add_option (S_("GUI"),
new BoolOption (
_mixer_strip_visibility.add (0, X_("MeterPoint"), _("Meter Point"));
add_option (
- S_("GUI"),
+ S_("Preferences|GUI"),
new VisibilityOption (
_("Mixer Strip"),
&_mixer_strip_visibility,
)
);
- add_option (S_("GUI"),
+ add_option (S_("Preferences|GUI"),
new BoolOption (
"default-narrow_ms",
_("Use narrow strips in the mixer by default"),
sigc::mem_fun (*_rc_config, &RCConfiguration::set_default_narrow_ms)
));
- add_option (S_("GUI"), new OptionEditorHeading (_("Metering")));
+ add_option (S_("Preferences|GUI"), new OptionEditorHeading (_("Metering")));
ComboOption<float>* mht = new ComboOption<float> (
"meter-hold",
- _("Meter hold time"),
+ _("Peak hold time"),
sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_hold),
sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_hold)
);
mht->add (MeterHoldMedium, _("medium"));
mht->add (MeterHoldLong, _("long"));
- add_option (S_("GUI"), mht);
+ add_option (S_("Preferences|GUI"), mht);
ComboOption<float>* mfo = new ComboOption<float> (
"meter-falloff",
- _("Meter fall-off"),
+ _("DPM fall-off"),
sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_falloff),
sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_falloff)
);
- mfo->add (METER_FALLOFF_OFF, _("off"));
- mfo->add (METER_FALLOFF_SLOWEST, _("slowest"));
- mfo->add (METER_FALLOFF_SLOW, _("slow"));
- mfo->add (METER_FALLOFF_MEDIUM, _("medium"));
- mfo->add (METER_FALLOFF_FAST, _("fast"));
- mfo->add (METER_FALLOFF_FASTER, _("faster"));
- mfo->add (METER_FALLOFF_FASTEST, _("fastest"));
+ mfo->add (METER_FALLOFF_OFF, _("off"));
+ mfo->add (METER_FALLOFF_SLOWEST, _("slowest [6.6dB/sec]"));
+ mfo->add (METER_FALLOFF_SLOW, _("slow [8.6dB/sec] (BBC PPM, EBU PPM)"));
+ mfo->add (METER_FALLOFF_SLOWISH, _("slowish [12.0dB/sec] (DIN)"));
+ mfo->add (METER_FALLOFF_MODERATE, _("moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)"));
+ mfo->add (METER_FALLOFF_MEDIUM, _("medium [20dB/sec]"));
+ mfo->add (METER_FALLOFF_FAST, _("fast [32dB/sec]"));
+ mfo->add (METER_FALLOFF_FASTER, _("faster [46dB/sec]"));
+ mfo->add (METER_FALLOFF_FASTEST, _("fastest [70dB/sec]"));
+
+ add_option (S_("Preferences|GUI"), mfo);
+
+ ComboOption<MeterLineUp>* mlu = new ComboOption<MeterLineUp> (
+ "meter-line-up-level",
+ _("Meter line-up level; 0dBu"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_line_up_level),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_line_up_level)
+ );
+
+ mlu->add (MeteringLineUp24, _("-24dBFS (SMPTE US: 4dBu = -20dBFS)"));
+ mlu->add (MeteringLineUp20, _("-20dBFS (SMPTE RP.0155)"));
+ mlu->add (MeteringLineUp18, _("-18dBFS (EBU, BBC)"));
+ mlu->add (MeteringLineUp15, _("-15dBFS (DIN)"));
+
+ Gtkmm2ext::UI::instance()->set_tip (mlu->tip_widget(), _("Configure meter-marks and color-knee point for dBFS scale DPM, set reference level for IEC1/Nordic, IEC2 PPM and VU meter."));
+
+ add_option (S_("Preferences|GUI"), mlu);
+
+ ComboOption<MeterLineUp>* mld = new ComboOption<MeterLineUp> (
+ "meter-line-up-din",
+ _("IEC1/DIN Meter line-up level; 0dBu"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_line_up_din),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_line_up_din)
+ );
+
+ mld->add (MeteringLineUp24, _("-24dBFS (SMPTE US: 4dBu = -20dBFS)"));
+ mld->add (MeteringLineUp20, _("-20dBFS (SMPTE RP.0155)"));
+ mld->add (MeteringLineUp18, _("-18dBFS (EBU, BBC)"));
+ mld->add (MeteringLineUp15, _("-15dBFS (DIN)"));
+
+ Gtkmm2ext::UI::instance()->set_tip (mld->tip_widget(), _("Reference level for IEC1/DIN meter."));
+
+ add_option (S_("Preferences|GUI"), mld);
+
+ ComboOption<VUMeterStandard>* mvu = new ComboOption<VUMeterStandard> (
+ "meter-vu-standard",
+ _("VU Meter standard"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_vu_standard),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_vu_standard)
+ );
+
+ mvu->add (MeteringVUfrench, _("0VU = -2dBu (France)"));
+ mvu->add (MeteringVUamerican, _("0VU = 0dBu (North America, Australia)"));
+ mvu->add (MeteringVUstandard, _("0VU = +4dBu (standard)"));
+ mvu->add (MeteringVUeight, _("0VU = +8dBu"));
+
+ add_option (S_("Preferences|GUI"), mvu);
+
+ Gtk::Adjustment *mpk = manage (new Gtk::Adjustment(0, -10, 0, .1, .1));
+ HSliderOption *mpks = new HSliderOption("meter-peak",
+ _("Peak threshold [dBFS]"),
+ mpk,
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_peak),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_peak)
+ );
+
+ Gtkmm2ext::UI::instance()->set_tip
+ (mpks->tip_widget(),
+ _("Specify the audio signal level in dbFS at and above which the meter-peak indicator will flash red."));
+
+ add_option (S_("Preferences|GUI"), mpks);
+
+ add_option (S_("Preferences|GUI"),
+ new BoolOption (
+ "meter-style-led",
+ _("LED meter style"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_style_led),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_style_led)
+ ));
- add_option (S_("GUI"), mfo);
}
void