summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-03-22 03:22:28 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-03-22 03:22:28 +0000
commit7689d72875e77e15c87f6c49e8a509cd37925435 (patch)
tree1738a38887a4274870c3a826a61dfbe48279b50b
parent814f2fbd8f88299110a7b2bbc49d85d1e121f1e1 (diff)
put the issue of using a monitor section into ~/.config/ardour.rc, not the session file. probably not totally right yet. provide startup dialog choice page to let first time users make the decision when first trying ardour (needs rewording)
git-svn-id: svn://localhost/ardour2/branches/3.0@6780 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/ardour_ui.cc4
-rw-r--r--gtk2_ardour/ardour_ui.h1
-rw-r--r--gtk2_ardour/startup.cc70
-rw-r--r--gtk2_ardour/startup.h15
-rw-r--r--libs/ardour/ardour/rc_configuration_vars.h1
-rw-r--r--libs/ardour/ardour/session.h1
-rw-r--r--libs/ardour/session.cc5
7 files changed, 58 insertions, 39 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 716a6820b8..1a5daf08c3 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -2321,7 +2321,6 @@ ARDOUR_UI::build_session_from_nsd (const Glib::ustring& session_path, const Glib
if (build_session (session_path,
session_name,
- _startup->create_control_bus(),
mchns,
iconnect,
oconnect,
@@ -2634,7 +2633,6 @@ ARDOUR_UI::load_session (const Glib::ustring& path, const Glib::ustring& snap_na
int
ARDOUR_UI::build_session (const Glib::ustring& path, const Glib::ustring& snap_name,
- bool with_monitor,
uint32_t master_channels,
AutoConnectOption input_connect,
AutoConnectOption output_connect,
@@ -2663,7 +2661,7 @@ ARDOUR_UI::build_session (const Glib::ustring& path, const Glib::ustring& snap_n
try {
new_session = new Session (*engine, path, snap_name, input_connect, output_connect,
- with_monitor, master_channels, nphysin, nphysout, initial_length);
+ master_channels, nphysin, nphysout, initial_length);
}
catch (...) {
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 0ae904678d..47be382f46 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -125,7 +125,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
int load_session (const Glib::ustring& path, const Glib::ustring& snapshot, Glib::ustring mix_template = Glib::ustring());
bool session_loaded;
int build_session (const Glib::ustring& path, const Glib::ustring& snapshot,
- bool with_monitor,
uint32_t master_chns,
ARDOUR::AutoConnectOption input_connect,
ARDOUR::AutoConnectOption output_connect,
diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc
index 456cb4922e..62f57e140c 100644
--- a/gtk2_ardour/startup.cc
+++ b/gtk2_ardour/startup.cc
@@ -44,11 +44,12 @@ ArdourStartup::ArdourStartup ()
, monitor_via_hardware_button (_("Use an external mixer or the hardware mixer of your audio interface.\n\
Ardour will play NO role in monitoring"))
, monitor_via_ardour_button (string_compose (_("Ask %1 to playback material as it is being recorded"), PROGRAM_NAME))
+ , use_monitor_section_button (_("Use a monitor bus in new sessions (more complex, more control)"))
+ , no_monitor_section_button (_("Just use the master out bus (simpler, less control)"))
, new_folder_chooser (FILE_CHOOSER_ACTION_SELECT_FOLDER)
, more_new_session_options_button (_("I'd like more options for this session"))
, _output_limit_count_adj (1, 0, 100, 1, 10, 0)
, _input_limit_count_adj (1, 0, 100, 1, 10, 0)
- , _control_bus_channel_count_adj (2, 0, 100, 1, 10, 0)
, _master_bus_channel_count_adj (2, 0, 100, 1, 10, 0)
{
@@ -100,6 +101,7 @@ Ardour will play NO role in monitoring"))
setup_new_user_page ();
setup_first_time_config_page ();
setup_monitoring_choice_page ();
+ setup_monitor_section_choice_page ();
if (need_audio_setup) {
setup_audio_page ();
@@ -319,7 +321,7 @@ signal as well as record it. This is called \"monitoring\". There are\n\
different ways to do this depending on the equipment you have and the\n\
configuration of that equipment. The two most common are presented here.\n\
Please choose whichever one is right for your setup.\n\n\
-<i>(You can change this preference at any time, via the Options menu)</i>");
+<i>(You can change this preference at any time, via the Preferences dialog)</i>");
monitor_label.set_alignment (0.0, 0.0);
vbox->set_spacing (6);
@@ -344,6 +346,48 @@ Please choose whichever one is right for your setup.\n\n\
}
void
+ArdourStartup::setup_monitor_section_choice_page ()
+{
+ mon_sec_vbox.set_spacing (18);
+ mon_sec_vbox.set_border_width (24);
+
+ HBox* hbox = manage (new HBox);
+ VBox* vbox = manage (new VBox);
+ RadioButton::Group g (use_monitor_section_button.get_group());
+ no_monitor_section_button.set_group (g);
+
+ monitor_section_label.set_markup("\
+When connecting speakers to Ardour, would you prefer to use a monitor bus,\n\
+which will offer various kinds of control at the last stage of output\n\
+or would you prefer to just connect directly to the master outs?\n\n\
+Most home studio users will probably want to start <i>without</i> a monitor bus.\n\
+Those with experience of traditional mixing consoles may prefer to use one.\n\
+Please choose whichever one is right for your setup.\n\n\
+<i>(You can change this preference at any time, via the Preferences dialog)</i>");
+ monitor_section_label.set_alignment (0.0, 0.0);
+
+ vbox->set_spacing (6);
+
+ vbox->pack_start (no_monitor_section_button, false, true);
+ vbox->pack_start (use_monitor_section_button, false, true);
+ hbox->pack_start (*vbox, true, true, 8);
+ mon_sec_vbox.pack_start (monitor_section_label, false, false);
+ mon_sec_vbox.pack_start (*hbox, false, false);
+
+ mon_sec_vbox.show_all ();
+
+ monitor_section_page_index = append_page (mon_sec_vbox);
+ set_page_title (mon_sec_vbox, _("Monitor Section"));
+ set_page_header_image (mon_sec_vbox, icon_pixbuf);
+
+ /* user could just click on "Forward" if default
+ * choice is correct.
+ */
+
+ set_page_complete (mon_sec_vbox, true);
+}
+
+void
ArdourStartup::setup_initial_choice_page ()
{
ic_vbox.set_spacing (6);
@@ -834,13 +878,6 @@ ArdourStartup::setup_more_options_page ()
input_label.set_markup (_("<b>Inputs</b>"));
output_label.set_markup (_("<b>Outputs</b>"));
- _create_control_bus.set_label (_("Create monitor bus"));
- _create_control_bus.set_flags(Gtk::CAN_FOCUS);
- _create_control_bus.set_relief(Gtk::RELIEF_NORMAL);
- _create_control_bus.set_mode(true);
- _create_control_bus.set_active(false);
- _create_control_bus.set_border_width(0);
-
_master_bus_channel_count.set_flags(Gtk::CAN_FOCUS);
_master_bus_channel_count.set_update_policy(Gtk::UPDATE_ALWAYS);
_master_bus_channel_count.set_numeric(true);
@@ -895,7 +932,6 @@ ArdourStartup::setup_more_options_page ()
bus_table.attach (_create_master_bus, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
bus_table.attach (_master_bus_channel_count, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
bus_table.attach (chan_count_label_1, 2, 3, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 6, 0);
- bus_table.attach (_create_control_bus, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
input_port_limit_hbox.pack_start(_limit_input_ports, Gtk::PACK_SHRINK, 6);
input_port_limit_hbox.pack_start(_input_limit_count, Gtk::PACK_SHRINK, 0);
@@ -992,7 +1028,6 @@ ArdourStartup::setup_more_options_page ()
_limit_input_ports.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::limit_inputs_clicked));
_limit_output_ports.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::limit_outputs_clicked));
_create_master_bus.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::master_bus_button_clicked));
- _create_control_bus.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::monitor_bus_button_clicked));
/* note that more_options_vbox is NOT visible by
* default. this is entirely by design - this page
@@ -1017,12 +1052,6 @@ ArdourStartup::master_channel_count() const
}
bool
-ArdourStartup::create_control_bus() const
-{
- return _create_control_bus.get_active();
-}
-
-bool
ArdourStartup::connect_inputs() const
{
return _connect_inputs.get_active();
@@ -1112,13 +1141,6 @@ ArdourStartup::master_bus_button_clicked ()
bool yn = _create_master_bus.get_active();
_master_bus_channel_count.set_sensitive(yn);
- _create_control_bus.set_sensitive (yn);
-}
-
-void
-ArdourStartup::monitor_bus_button_clicked ()
-{
- /* relax */
}
void
diff --git a/gtk2_ardour/startup.h b/gtk2_ardour/startup.h
index 01fdd853f2..ae4b17b163 100644
--- a/gtk2_ardour/startup.h
+++ b/gtk2_ardour/startup.h
@@ -44,8 +44,6 @@ class ArdourStartup : public Gtk::Assistant {
bool create_master_bus() const;
int master_channel_count() const;
- bool create_control_bus() const;
-
bool connect_inputs() const;
bool limit_inputs_used_for_connection() const;
int input_limit_count() const;
@@ -105,6 +103,14 @@ class ArdourStartup : public Gtk::Assistant {
Gtk::RadioButton monitor_via_ardour_button;
void setup_monitoring_choice_page ();
+ /* monitor section choices */
+
+ Gtk::VBox mon_sec_vbox;
+ Gtk::Label monitor_section_label;
+ Gtk::RadioButton use_monitor_section_button;
+ Gtk::RadioButton no_monitor_section_button;
+ void setup_monitor_section_choice_page ();
+
/* session page (could be new or existing) */
void setup_session_page ();
@@ -208,8 +214,6 @@ class ArdourStartup : public Gtk::Assistant {
Gtk::CheckButton _create_master_bus;
Gtk::SpinButton _master_bus_channel_count;
- Gtk::CheckButton _create_control_bus;
-
Gtk::CheckButton _connect_inputs;
Gtk::CheckButton _limit_input_ports;
Gtk::SpinButton _input_limit_count;
@@ -224,7 +228,6 @@ class ArdourStartup : public Gtk::Assistant {
Gtk::Adjustment _output_limit_count_adj;
Gtk::Adjustment _input_limit_count_adj;
- Gtk::Adjustment _control_bus_channel_count_adj;
Gtk::Adjustment _master_bus_channel_count_adj;
void connect_inputs_clicked ();
@@ -232,7 +235,6 @@ class ArdourStartup : public Gtk::Assistant {
void limit_inputs_clicked ();
void limit_outputs_clicked ();
void master_bus_button_clicked ();
- void monitor_bus_button_clicked ();
void setup_more_options_page ();
/* final page */
@@ -250,6 +252,7 @@ class ArdourStartup : public Gtk::Assistant {
gint new_user_page_index;
gint default_folder_page_index;
gint monitoring_page_index;
+ gint monitor_section_page_index;
gint session_page_index;
gint initial_choice_index;
gint final_page_index;
diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h
index 823fb4e7f2..31f4b96620 100644
--- a/libs/ardour/ardour/rc_configuration_vars.h
+++ b/libs/ardour/ardour/rc_configuration_vars.h
@@ -79,6 +79,7 @@ CONFIG_VARIABLE (bool, mute_affects_control_outs, "mute-affects-control-outs", t
CONFIG_VARIABLE (bool, mute_affects_main_outs, "mute-affects-main-outs", true)
CONFIG_VARIABLE (MonitorModel, monitoring_model, "monitoring-model", ExternalMonitoring)
CONFIG_VARIABLE (ListenPosition, listen_position, "listen-position", AfterFaderListen)
+CONFIG_VARIABLE (bool, use_monitor_bus, "use-monitor-bus", false)
CONFIG_VARIABLE (bool, solo_control_is_listen_control, "solo-control-is-listen-control", false)
CONFIG_VARIABLE (bool, solo_latched, "solo-latched", true)
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index cb62decafc..57332babf3 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -142,7 +142,6 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
std::string snapshot_name,
AutoConnectOption input_auto_connect,
AutoConnectOption output_auto_connect,
- bool with_monitor,
uint32_t master_out_channels,
uint32_t n_physical_in,
uint32_t n_physical_out,
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 20e88756ea..b2f6f7412f 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -206,7 +206,6 @@ Session::Session (AudioEngine &eng,
string snapshot_name,
AutoConnectOption input_ac,
AutoConnectOption output_ac,
- bool with_monitor,
uint32_t master_out_channels,
uint32_t requested_physical_in,
uint32_t requested_physical_out,
@@ -295,7 +294,7 @@ Session::Session (AudioEngine &eng,
output_ac = AutoConnectOption (output_ac & ~AutoConnectMaster);
}
- if (with_monitor) {
+ if (Config->get_use_monitor_bus()) {
ChanCount count(DataType::AUDIO, master_out_channels);
Route* rt = new Route (*this, _("monitor"), Route::ControlOut, DataType::AUDIO);
boost_debug_shared_ptr_mark_interesting (rt, "Route");
@@ -814,8 +813,6 @@ Session::hookup_io (bool new_session)
} else {
- cerr << "Connecting route " << (*x)->name() << " to control outs\n";
-
(*x)->listen_via (_control_out,
(Config->get_listen_position() == AfterFaderListen ? PostFader : PreFader),
false, false);