X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fmidi_track.cc;h=f1344e7697640eac1d85cf604d8ada3f00a7f584;hb=d92686afb4105b84b014372b6feb0ccc454a5171;hp=97ddb43f6f257d490f8853d80a0a8d52d82de0fd;hpb=a223b96725c68a4e41c9f2f5675756c274730889;p=ardour.git diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 97ddb43f6f..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; @@ -404,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); } @@ -444,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); @@ -706,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 @@ -762,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);