midi velocity [fader] automation
authorRobin Gareus <robin@gareus.org>
Sat, 25 Apr 2015 20:02:02 +0000 (22:02 +0200)
committerRobin Gareus <robin@gareus.org>
Sat, 25 Apr 2015 20:02:02 +0000 (22:02 +0200)
libs/ardour/amp.cc

index c94b09536f08fe0c30ef7c443830301963b0bb2d..efe776af2495d99afda90b945c5399636e2f8f54 100644 (file)
@@ -90,7 +90,19 @@ Amp::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*end_frame*/,
                        gain_t* gab = _gain_automation_buffer;
                        assert (gab);
 
-                       // TODO automated midi gain
+                       if (_midi_amp) {
+                               for (BufferSet::midi_iterator i = bufs.midi_begin(); i != bufs.midi_end(); ++i) {
+                                       MidiBuffer& mb (*i);
+                                       for (MidiBuffer::iterator m = mb.begin(); m != mb.end(); ++m) {
+                                               Evoral::MIDIEvent<MidiBuffer::TimeType> ev = *m;
+                                               if (ev.is_note_on()) {
+                                                       assert(ev.time() >= 0 && ev.time() < nframes);
+                                                       ev.scale_velocity (gab[ev.time()]);
+                                               }
+                                       }
+                               }
+                       }
+
 
                        const float a = 62.78 / _session.nominal_frame_rate(); // 10 Hz LPF
                        float lpf = _current_gain;