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
This commit is contained in:
Paul Davis 2010-03-22 03:22:28 +00:00
parent 814f2fbd8f
commit 7689d72875
7 changed files with 58 additions and 39 deletions

View File

@ -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 (...) {

View File

@ -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,

View File

@ -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);
@ -343,6 +345,48 @@ Please choose whichever one is right for your setup.\n\n\
set_page_complete (mon_vbox, true);
}
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 ()
{
@ -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
@ -1016,12 +1051,6 @@ ArdourStartup::master_channel_count() const
return _master_bus_channel_count.get_value_as_int();
}
bool
ArdourStartup::create_control_bus() const
{
return _create_control_bus.get_active();
}
bool
ArdourStartup::connect_inputs() const
{
@ -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

View File

@ -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;

View File

@ -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)

View File

@ -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,

View File

@ -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);