13
0

Prepare session-wide implicit monitoring overrides

This commit is contained in:
Robin Gareus 2017-01-16 19:42:04 +01:00
parent 88b3aa926a
commit 88d797bd64
5 changed files with 31 additions and 1 deletions

View File

@ -36,6 +36,7 @@ CONFIG_VARIABLE (bool, auto_return, "auto-return", false)
CONFIG_VARIABLE (bool, auto_input, "auto-input", true)
CONFIG_VARIABLE (bool, punch_in, "punch-in", false)
CONFIG_VARIABLE (bool, punch_out, "punch-out", false)
CONFIG_VARIABLE (MonitorChoice, session_monitoring, "session-monitoring", MonitorAuto)
CONFIG_VARIABLE (bool, layered_record_mode, "layered-record-mode", false)
CONFIG_VARIABLE (uint32_t, subframes_per_frame, "subframes-per-frame", 100)
CONFIG_VARIABLE (Timecode::TimecodeFormat, timecode_format, "timecode-format", Timecode::timecode_30)

View File

@ -721,6 +721,7 @@ std::istream& operator>>(std::istream& o, ARDOUR::AutoConnectOption& sf);
std::istream& operator>>(std::istream& o, ARDOUR::TracksAutoNamingRule& sf);
std::istream& operator>>(std::istream& o, ARDOUR::EditMode& sf);
std::istream& operator>>(std::istream& o, ARDOUR::MonitorModel& sf);
std::istream& operator>>(std::istream& o, ARDOUR::MonitorChoice& sf);
std::istream& operator>>(std::istream& o, ARDOUR::PFLPosition& sf);
std::istream& operator>>(std::istream& o, ARDOUR::AFLPosition& sf);
std::istream& operator>>(std::istream& o, ARDOUR::ListenPosition& sf);
@ -744,6 +745,7 @@ std::ostream& operator<<(std::ostream& o, const ARDOUR::AutoConnectOption& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::TracksAutoNamingRule& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::EditMode& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::MonitorModel& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::MonitorChoice& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::PFLPosition& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::AFLPosition& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::ListenPosition& sf);

View File

@ -833,6 +833,20 @@ std::ostream& operator<<(std::ostream& o, const TracksAutoNamingRule& var)
return o << s;
}
std::istream& operator>>(std::istream& o, MonitorChoice& var)
{
std::string s;
o >> s;
var = (MonitorChoice) string_2_enum (s, var);
return o;
}
std::ostream& operator<<(std::ostream& o, const MonitorChoice& var)
{
std::string s = enum_2_string (var);
return o << s;
}
std::istream& operator>>(std::istream& o, MonitorModel& var)
{
std::string s;

View File

@ -3907,11 +3907,13 @@ Session::config_changed (std::string p, bool ours)
} else if (p == "auto-loop") {
} else if (p == "session-monitoring") {
} else if (p == "auto-input") {
if (Config->get_monitoring_model() == HardwareMonitoring && transport_rolling()) {
/* auto-input only makes a difference if we're rolling */
set_track_monitor_input_status (!config.get_auto_input());
set_track_monitor_input_status (!config.get_auto_input());
}
} else if (p == "punch-in") {

View File

@ -929,6 +929,17 @@ Track::monitoring_state () const
return MonitoringDisk;
}
switch (_session.config.get_session_monitoring ()) {
case MonitorDisk:
return MonitoringDisk;
break;
case MonitorInput:
return MonitoringInput;
break;
default:
break;
}
/* This is an implementation of the truth table in doc/monitor_modes.pdf;
I don't think it's ever going to be too pretty too look at.
*/