X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fmidi_track.cc;h=f1344e7697640eac1d85cf604d8ada3f00a7f584;hb=d92686afb4105b84b014372b6feb0ccc454a5171;hp=6402d9057c437e02cfd6712371cb26e49e391457;hpb=e0ff70cf86c01c42f98faf8b0eaf1a8ccf867946;p=ardour.git diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 6402d9057c..f1344e7697 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -54,7 +54,7 @@ #include "ardour/session_playlists.h" #include "ardour/utils.h" -#include "i18n.h" +#include "pbd/i18n.h" namespace ARDOUR { class InterThreadInfo; @@ -396,16 +396,6 @@ MidiTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame return dret; } - if (_mute_control->list() && _mute_control->automation_playback()) { - bool valid = false; - const float mute = _mute_control->list()->rt_safe_eval(transport_frame, valid); - if (mute >= 0.5 && !muted()) { - _mute_control->set_value_unchecked(1.0); // mute - } else if (mute < 0.5 && muted()) { - _mute_control->set_value_unchecked(0.0); // unmute - } - } - BufferSet& bufs = _session.get_route_buffers (n_process_buffers()); fill_buffers_with_input (bufs, _input, nframes); @@ -414,7 +404,7 @@ MidiTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame _capture_filter.filter (bufs); if (_meter_point == MeterInput && ((_monitoring_control->monitoring_choice() & MonitorInput) || _diskstream->record_enabled())) { - _meter->run (bufs, start_frame, end_frame, nframes, true); + _meter->run (bufs, start_frame, end_frame, 1.0 /*speed()*/, nframes, true); } @@ -454,12 +444,7 @@ MidiTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame process_output_buffers (bufs, start_frame, end_frame, nframes, declick, (!diskstream->record_enabled() && !_session.transport_stopped())); - for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) { - boost::shared_ptr d = boost::dynamic_pointer_cast (*i); - if (d) { - d->flush_buffers (nframes); - } - } + flush_processor_buffers_locked (nframes); need_butler = diskstream->commit (playback_distance); @@ -716,6 +701,7 @@ MidiTrack::set_parameter_automation_state (Evoral::Parameter param, AutoState st case MidiPgmChangeAutomation: case MidiPitchBenderAutomation: case MidiChannelPressureAutomation: + case MidiNotePressureAutomation: case MidiSystemExclusiveAutomation: /* The track control for MIDI parameters is for immediate events to act as a control surface, write/touch for them is not currently @@ -772,6 +758,12 @@ MidiTrack::MidiControl::actually_set_value (double val, PBD::Controllable::Group ev[1] = int(val); break; + case MidiNotePressureAutomation: + ev[0] += MIDI_CMD_NOTE_PRESSURE; + ev[1] = parameter.id(); + ev[2] = int(val); + break; + case MidiPitchBenderAutomation: ev[0] += MIDI_CMD_BENDER; ev[1] = 0x7F & int(val);