Use normal Processor run_in_place interface on Meter.
authorDavid Robillard <d@drobilla.net>
Mon, 26 Nov 2007 01:29:11 +0000 (01:29 +0000)
committerDavid Robillard <d@drobilla.net>
Mon, 26 Nov 2007 01:29:11 +0000 (01:29 +0000)
git-svn-id: svn://localhost/ardour2/trunk@2714 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/meter.h
libs/ardour/base_midi_port.cc
libs/ardour/io.cc
libs/ardour/jack_midi_port.cc
libs/ardour/meter.cc
libs/ardour/midi_port.cc
libs/ardour/midi_track.cc
libs/ardour/route.cc
libs/ardour/send.cc

index c78cdebfb013a44aba46614e77a157edf4cc6506..e19c0a51ca33e95509b2219ddbf9b19b577368d8 100644 (file)
@@ -43,7 +43,7 @@ public:
        bool configure_io (ChanCount in, ChanCount out);
        
        /** Compute peaks */
-       void run (BufferSet& bufs, nframes_t start_frame, nframes_t end_frame, nframes_t nframes, nframes_t offset);
+       void run_in_place (BufferSet& bufs, nframes_t start_frame, nframes_t end_frame, nframes_t nframes, nframes_t offset);
        
        float peak_power (uint32_t n) { 
                if (n < _visible_peak_power.size()) {
index e1014610b3db248b6a65e54f84bcdbb32ad24cc0..49d748dd20bcb6871c5d783519c8dab1521a9297 100644 (file)
@@ -31,7 +31,7 @@ BaseMidiPort::BaseMidiPort (const std::string& name, Flags flags)
        , _own_buffer (false)
 {
        _type = DataType::MIDI;
-       reset();
+       _mixdown = default_mixdown;
 }
 
 BaseMidiPort::~BaseMidiPort()
@@ -47,6 +47,7 @@ BaseMidiPort::default_mixdown (const set<Port*>& ports, MidiBuffer* dest, nframe
        set<Port*>::const_iterator p = ports.begin();
 
        if (first_overwrite) {
+               cout << "first overwrite" << endl;
                dest->read_from ((dynamic_cast<BaseMidiPort*>(*p))->get_midi_buffer(), cnt, offset);
                p++;
        }
@@ -54,6 +55,7 @@ BaseMidiPort::default_mixdown (const set<Port*>& ports, MidiBuffer* dest, nframe
        // XXX DAVE: this is just a guess
 
        for (; p != ports.end(); ++p) {
+               cout << "merge" << endl;
                dest->merge (*dest, (dynamic_cast<BaseMidiPort*>(*p))->get_midi_buffer());
        }
 }
index fdb2e0f5cd7bc05d2b57029bd88a17eac828e898..89c342e9cf6064c1e13f61153b5bb28611009f69 100644 (file)
@@ -331,7 +331,7 @@ IO::just_meter_input (nframes_t start_frame, nframes_t end_frame,
 
        collect_input (bufs, nframes, offset);
 
-       _meter->run(bufs, start_frame, end_frame, nframes, offset);
+       _meter->run_in_place(bufs, start_frame, end_frame, nframes, offset);
 }
 
 
index e943a6a190ac2270ea8f997410743f2871324a51..7dbb8655f69745b2ce84aeeb702f5bd9c81ad0c0 100644 (file)
@@ -27,13 +27,16 @@ JackMidiPort::JackMidiPort (const std::string& name, Flags flgs, MidiBuffer* buf
 {
        if (buf) {
 
+               cout << name << " BUFFER" << endl;
+
                _buffer = buf;
                _own_buffer = false;
 
        } else {
 
-               /* data space will be provided by JACK */
+               cout << name << " NO BUFFER" << endl;
 
+               /* data space will be provided by JACK */
                _buffer = new MidiBuffer (0);
                _own_buffer = true;
        }
@@ -68,8 +71,8 @@ JackMidiPort::cycle_start (nframes_t nframes, nframes_t offset_ignored_but_proba
 
        assert(_buffer->size() == event_count);
 
-       //if (_buffer->size() > 0)
-       //      cerr << "MIDIPort got " << event_count << " events." << endl;
+       if (_buffer->size() > 0)
+               cerr << "MIDIPort got " << event_count << " events." << endl;
 }
 
 void
index 6ea5a30920a8ddafc82edba8907e58718644034c..d108374ba07d57e3f48e773ddc209a2a8a363b8e 100644 (file)
@@ -33,7 +33,7 @@ namespace ARDOUR {
  * be set to 0.
  */
 void
-PeakMeter::run (BufferSet& bufs, nframes_t start_frame, nframes_t end_frame, nframes_t nframes, nframes_t offset)
+PeakMeter::run_in_place (BufferSet& bufs, nframes_t start_frame, nframes_t end_frame, nframes_t nframes, nframes_t offset)
 {
        size_t meterable = std::min((size_t)bufs.count().n_total(), _peak_power.size());
 
index 8fb66255d81350b54fdcf614edfb287cd142f725..7590c42e0bbafcbaae63ed6a7f63326265d00447 100644 (file)
@@ -26,7 +26,7 @@
 using namespace ARDOUR;
 using namespace std;
 
-MidiPort::MidiPort (const std::string& name, Flags flags, bool publish, nframes_t bufsize)
+MidiPort::MidiPort (const std::string& name, Flags flags, bool external, nframes_t bufsize)
        : Port (name, flags)
        , BaseMidiPort (name, flags)
        , PortFacade (name, flags)
@@ -35,7 +35,9 @@ MidiPort::MidiPort (const std::string& name, Flags flags, bool publish, nframes_
 
        _buffer = new MidiBuffer (bufsize);
 
-       if (!publish) {
+       cout << "MIDI port "  << name << " external: " << external << endl;
+
+       if (!external) {
                _ext_port = 0;
        } else {
                _ext_port = new JackMidiPort (name, flags, _buffer);
@@ -68,19 +70,28 @@ MidiPort::cycle_start (nframes_t nframes, nframes_t offset)
        /* caller must hold process lock */
        
        if (_ext_port) {
+               // cout << "external\n";
                _ext_port->cycle_start (nframes, offset);
        }
-
+       
        if (_flags & IsInput) {
-
+                       
                if (_ext_port) {
+               
+                       // cout << "external in\n";
+
                        _buffer->read_from (dynamic_cast<BaseMidiPort*>(_ext_port)->get_midi_buffer(), nframes, offset);
+
+                       // cout << "read " << _buffer->size() << " events." << endl;
+
                        if (!_connections.empty()) {
                                (*_mixdown) (_connections, _buffer, nframes, offset, false);
                        }
 
                } else {
                
+                       // cout << "internal in\n";
+
                        if (_connections.empty()) {
                                _buffer->silence (nframes, offset);
                        } else {
@@ -89,7 +100,11 @@ MidiPort::cycle_start (nframes_t nframes, nframes_t offset)
                }
 
        } else {
+                       
+               // cout << "out\n";
                
                _buffer->silence (nframes, offset);
        }
+
+       // cout << endl;
 }
index d81f1f2cefd063b3a56385bf7fed00a68b62d1f7..7307ff220dad44aa6a589fc88a3e8aa02c50f016 100644 (file)
@@ -543,7 +543,7 @@ MidiTrack::process_output_buffers (BufferSet& bufs,
         * Route::process_output_buffers handle everything */
        
        if (meter && (_meter_point == MeterInput || _meter_point == MeterPreFader)) {
-               _meter->run(bufs, start_frame, end_frame, nframes, offset);
+               _meter->run_in_place(bufs, start_frame, end_frame, nframes, offset);
        }
 
        // Run all processors
@@ -557,7 +557,7 @@ MidiTrack::process_output_buffers (BufferSet& bufs,
        }
        
        if (meter && (_meter_point == MeterPostFader)) {
-               _meter->run(bufs, start_frame, end_frame, nframes, offset);
+               _meter->run_in_place(bufs, start_frame, end_frame, nframes, offset);
        }
        
        // Main output stage
index be7dfb846973aa67c1c49016d84e8d4f3e420d0d..8193d4ed77ae38929c502dd5f710e254e3ebe301 100644 (file)
@@ -341,7 +341,7 @@ Route::process_output_buffers (BufferSet& bufs,
           -------------------------------------------------------------------------------------------------- */
 
        if (meter && (_meter_point == MeterInput)) {
-               _meter->run(bufs, start_frame, end_frame, nframes, offset);
+               _meter->run_in_place(bufs, start_frame, end_frame, nframes, offset);
        }
 
        if (!_soloed && _mute_affects_pre_fader && (mute_gain != dmg)) {
index 52184dece1e07551d47f70998155af77d8f890ec..736a443c721137e91a9e9237518d1d73f455cb94 100644 (file)
@@ -131,7 +131,7 @@ Send::run_in_place (BufferSet& bufs, nframes_t start_frame, nframes_t end_frame,
                        if (_io->_gain == 0) {
                                _io->_meter->reset();
                        } else {
-                               _io->_meter->run(_io->output_buffers(), start_frame, end_frame, nframes, offset);
+                               _io->_meter->run_in_place(_io->output_buffers(), start_frame, end_frame, nframes, offset);
                        }
                }