mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-11 00:56:33 +01:00
Use normal Processor run_in_place interface on Meter.
git-svn-id: svn://localhost/ardour2/trunk@2714 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
2a391a677d
commit
f2aa623858
9 changed files with 35 additions and 15 deletions
|
|
@ -43,7 +43,7 @@ public:
|
||||||
bool configure_io (ChanCount in, ChanCount out);
|
bool configure_io (ChanCount in, ChanCount out);
|
||||||
|
|
||||||
/** Compute peaks */
|
/** 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) {
|
float peak_power (uint32_t n) {
|
||||||
if (n < _visible_peak_power.size()) {
|
if (n < _visible_peak_power.size()) {
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ BaseMidiPort::BaseMidiPort (const std::string& name, Flags flags)
|
||||||
, _own_buffer (false)
|
, _own_buffer (false)
|
||||||
{
|
{
|
||||||
_type = DataType::MIDI;
|
_type = DataType::MIDI;
|
||||||
reset();
|
_mixdown = default_mixdown;
|
||||||
}
|
}
|
||||||
|
|
||||||
BaseMidiPort::~BaseMidiPort()
|
BaseMidiPort::~BaseMidiPort()
|
||||||
|
|
@ -47,6 +47,7 @@ BaseMidiPort::default_mixdown (const set<Port*>& ports, MidiBuffer* dest, nframe
|
||||||
set<Port*>::const_iterator p = ports.begin();
|
set<Port*>::const_iterator p = ports.begin();
|
||||||
|
|
||||||
if (first_overwrite) {
|
if (first_overwrite) {
|
||||||
|
cout << "first overwrite" << endl;
|
||||||
dest->read_from ((dynamic_cast<BaseMidiPort*>(*p))->get_midi_buffer(), cnt, offset);
|
dest->read_from ((dynamic_cast<BaseMidiPort*>(*p))->get_midi_buffer(), cnt, offset);
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
|
|
@ -54,6 +55,7 @@ BaseMidiPort::default_mixdown (const set<Port*>& ports, MidiBuffer* dest, nframe
|
||||||
// XXX DAVE: this is just a guess
|
// XXX DAVE: this is just a guess
|
||||||
|
|
||||||
for (; p != ports.end(); ++p) {
|
for (; p != ports.end(); ++p) {
|
||||||
|
cout << "merge" << endl;
|
||||||
dest->merge (*dest, (dynamic_cast<BaseMidiPort*>(*p))->get_midi_buffer());
|
dest->merge (*dest, (dynamic_cast<BaseMidiPort*>(*p))->get_midi_buffer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -331,7 +331,7 @@ IO::just_meter_input (nframes_t start_frame, nframes_t end_frame,
|
||||||
|
|
||||||
collect_input (bufs, nframes, offset);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,13 +27,16 @@ JackMidiPort::JackMidiPort (const std::string& name, Flags flgs, MidiBuffer* buf
|
||||||
{
|
{
|
||||||
if (buf) {
|
if (buf) {
|
||||||
|
|
||||||
|
cout << name << " BUFFER" << endl;
|
||||||
|
|
||||||
_buffer = buf;
|
_buffer = buf;
|
||||||
_own_buffer = false;
|
_own_buffer = false;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
/* data space will be provided by JACK */
|
cout << name << " NO BUFFER" << endl;
|
||||||
|
|
||||||
|
/* data space will be provided by JACK */
|
||||||
_buffer = new MidiBuffer (0);
|
_buffer = new MidiBuffer (0);
|
||||||
_own_buffer = true;
|
_own_buffer = true;
|
||||||
}
|
}
|
||||||
|
|
@ -68,8 +71,8 @@ JackMidiPort::cycle_start (nframes_t nframes, nframes_t offset_ignored_but_proba
|
||||||
|
|
||||||
assert(_buffer->size() == event_count);
|
assert(_buffer->size() == event_count);
|
||||||
|
|
||||||
//if (_buffer->size() > 0)
|
if (_buffer->size() > 0)
|
||||||
// cerr << "MIDIPort got " << event_count << " events." << endl;
|
cerr << "MIDIPort got " << event_count << " events." << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace ARDOUR {
|
||||||
* be set to 0.
|
* be set to 0.
|
||||||
*/
|
*/
|
||||||
void
|
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());
|
size_t meterable = std::min((size_t)bufs.count().n_total(), _peak_power.size());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
using namespace std;
|
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)
|
: Port (name, flags)
|
||||||
, BaseMidiPort (name, flags)
|
, BaseMidiPort (name, flags)
|
||||||
, PortFacade (name, flags)
|
, PortFacade (name, flags)
|
||||||
|
|
@ -35,7 +35,9 @@ MidiPort::MidiPort (const std::string& name, Flags flags, bool publish, nframes_
|
||||||
|
|
||||||
_buffer = new MidiBuffer (bufsize);
|
_buffer = new MidiBuffer (bufsize);
|
||||||
|
|
||||||
if (!publish) {
|
cout << "MIDI port " << name << " external: " << external << endl;
|
||||||
|
|
||||||
|
if (!external) {
|
||||||
_ext_port = 0;
|
_ext_port = 0;
|
||||||
} else {
|
} else {
|
||||||
_ext_port = new JackMidiPort (name, flags, _buffer);
|
_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 */
|
/* caller must hold process lock */
|
||||||
|
|
||||||
if (_ext_port) {
|
if (_ext_port) {
|
||||||
|
// cout << "external\n";
|
||||||
_ext_port->cycle_start (nframes, offset);
|
_ext_port->cycle_start (nframes, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_flags & IsInput) {
|
if (_flags & IsInput) {
|
||||||
|
|
||||||
if (_ext_port) {
|
if (_ext_port) {
|
||||||
|
|
||||||
|
// cout << "external in\n";
|
||||||
|
|
||||||
_buffer->read_from (dynamic_cast<BaseMidiPort*>(_ext_port)->get_midi_buffer(), nframes, offset);
|
_buffer->read_from (dynamic_cast<BaseMidiPort*>(_ext_port)->get_midi_buffer(), nframes, offset);
|
||||||
|
|
||||||
|
// cout << "read " << _buffer->size() << " events." << endl;
|
||||||
|
|
||||||
if (!_connections.empty()) {
|
if (!_connections.empty()) {
|
||||||
(*_mixdown) (_connections, _buffer, nframes, offset, false);
|
(*_mixdown) (_connections, _buffer, nframes, offset, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
// cout << "internal in\n";
|
||||||
|
|
||||||
if (_connections.empty()) {
|
if (_connections.empty()) {
|
||||||
_buffer->silence (nframes, offset);
|
_buffer->silence (nframes, offset);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -89,7 +100,11 @@ MidiPort::cycle_start (nframes_t nframes, nframes_t offset)
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
// cout << "out\n";
|
||||||
|
|
||||||
_buffer->silence (nframes, offset);
|
_buffer->silence (nframes, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cout << endl;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -543,7 +543,7 @@ MidiTrack::process_output_buffers (BufferSet& bufs,
|
||||||
* Route::process_output_buffers handle everything */
|
* Route::process_output_buffers handle everything */
|
||||||
|
|
||||||
if (meter && (_meter_point == MeterInput || _meter_point == MeterPreFader)) {
|
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
|
// Run all processors
|
||||||
|
|
@ -557,7 +557,7 @@ MidiTrack::process_output_buffers (BufferSet& bufs,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meter && (_meter_point == MeterPostFader)) {
|
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
|
// Main output stage
|
||||||
|
|
|
||||||
|
|
@ -341,7 +341,7 @@ Route::process_output_buffers (BufferSet& bufs,
|
||||||
-------------------------------------------------------------------------------------------------- */
|
-------------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
if (meter && (_meter_point == MeterInput)) {
|
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)) {
|
if (!_soloed && _mute_affects_pre_fader && (mute_gain != dmg)) {
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ Send::run_in_place (BufferSet& bufs, nframes_t start_frame, nframes_t end_frame,
|
||||||
if (_io->_gain == 0) {
|
if (_io->_gain == 0) {
|
||||||
_io->_meter->reset();
|
_io->_meter->reset();
|
||||||
} else {
|
} 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue