fill_buffers_with_input (bufs, _input, nframes);
- if (_meter_point == MeterInput) {
+ if (_meter_point == MeterInput && (_monitoring & MonitorInput)) {
_meter->run (bufs, start_frame, end_frame, nframes, true);
}
fill_buffers_with_input (bufs, _input, nframes);
- if (_meter_point == MeterInput) {
+ if (_meter_point == MeterInput && (_monitoring & MonitorInput)) {
_meter->run (bufs, start_frame, end_frame, nframes, true);
}
MeterState
Track::metering_state () const
{
- return (_diskstream->record_enabled() || _meter_point == MeterInput) ? MeteringInput : MeteringRoute;
+ bool rv;
+ if (_session.transport_rolling ()) {
+ // audio_track.cc || midi_track.cc roll() runs meter IFF:
+ rv = _meter_point == MeterInput && (_monitoring & MonitorInput);
+ } else {
+ // track no_roll() always metering if
+ rv = _meter_point == MeterInput;
+ }
+ return rv ? MeteringInput : MeteringRoute;
}