summaryrefslogtreecommitdiff
path: root/libs/ardour/track.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-12-19 01:20:37 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-12-19 01:20:37 +0000
commit99c848455aca397335c3d57e85c3f7c82f5b0a9d (patch)
treecd0b6396e746de976fd94f5896e06e89225b6ae4 /libs/ardour/track.cc
parent844ce9f359255a5109fb481dd7d727618f2cde1a (diff)
prevent MIDI tracks from ever being in MonitoringSilence state, allows use of piano roll whether rolling or not
git-svn-id: svn://localhost/ardour2/branches/3.0@13679 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/track.cc')
-rw-r--r--libs/ardour/track.cc21
1 files changed, 18 insertions, 3 deletions
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc
index c7cff72fd3..52a960fce6 100644
--- a/libs/ardour/track.cc
+++ b/libs/ardour/track.cc
@@ -370,19 +370,34 @@ Track::no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame,
into the route.
*/
be_silent = true;
+
} else {
+
MonitorState const s = monitoring_state ();
/* we are not rolling, so be silent even if we are monitoring disk, as there
will be no disk data coming in.
*/
- be_silent = (s == MonitoringSilence || s == MonitoringDisk);
+ switch (s) {
+ case MonitoringSilence:
+ /* if there is an instrument, be_silent should always
+ be false
+ */
+ be_silent = (the_instrument_unlocked() == 0);
+ break;
+ case MonitoringDisk:
+ be_silent = true;
+ break;
+ case MonitoringInput:
+ be_silent = false;
+ break;
+ }
}
-
+
if (!_have_internal_generator && metering_state() == MeteringInput) {
_input->process_input (_meter, start_frame, end_frame, nframes);
}
- _amp->apply_gain_automation(false);
+ _amp->apply_gain_automation (false);
/* if have_internal_generator, or .. */
//_input->process_input (_meter, start_frame, end_frame, nframes);