summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-01-02 09:16:28 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2014-01-02 09:16:28 -0500
commite7c47747286c16aa575456b07120e1e8e8271bd5 (patch)
tree7b74a91fcf5685271f2b90d57a3658c4051dbe84 /libs/ardour
parent393ff4015349318b404d9e799292ce194645df09 (diff)
parentb439b79813a562278e5fc9ac088e4ca1fbf9f6cb (diff)
Merge branch 'master' into cairocanvas
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/iec1ppmdsp.h4
-rw-r--r--libs/ardour/ardour/iec2ppmdsp.h4
-rw-r--r--libs/ardour/ardour/kmeterdsp.h2
-rw-r--r--libs/ardour/ardour/plugin_insert.h3
-rw-r--r--libs/ardour/ardour/vumeterdsp.h4
-rw-r--r--libs/ardour/audioregion.cc2
-rw-r--r--libs/ardour/iec1ppmdsp.cc2
-rw-r--r--libs/ardour/iec2ppmdsp.cc2
-rw-r--r--libs/ardour/kmeterdsp.cc2
-rw-r--r--libs/ardour/meter.cc6
-rw-r--r--libs/ardour/midi_port.cc6
-rw-r--r--libs/ardour/plugin_insert.cc19
-rw-r--r--libs/ardour/test/control_surfaces_test.cc4
-rw-r--r--libs/ardour/vumeterdsp.cc4
14 files changed, 36 insertions, 28 deletions
diff --git a/libs/ardour/ardour/iec1ppmdsp.h b/libs/ardour/ardour/iec1ppmdsp.h
index 3e0637716d..b6f1501db7 100644
--- a/libs/ardour/ardour/iec1ppmdsp.h
+++ b/libs/ardour/ardour/iec1ppmdsp.h
@@ -29,11 +29,11 @@ public:
Iec1ppmdsp (void);
~Iec1ppmdsp (void);
- void process (float *p, int n);
+ void process (float const *p, int n);
float read (void);
void reset ();
- static void init (float fsamp);
+ static void init (float fsamp);
private:
diff --git a/libs/ardour/ardour/iec2ppmdsp.h b/libs/ardour/ardour/iec2ppmdsp.h
index aa5a90cdb9..6a3852da1d 100644
--- a/libs/ardour/ardour/iec2ppmdsp.h
+++ b/libs/ardour/ardour/iec2ppmdsp.h
@@ -29,11 +29,11 @@ public:
Iec2ppmdsp (void);
~Iec2ppmdsp (void);
- void process (float *p, int n);
+ void process (float const *p, int n);
float read (void);
void reset ();
- static void init (float fsamp);
+ static void init (float fsamp);
private:
diff --git a/libs/ardour/ardour/kmeterdsp.h b/libs/ardour/ardour/kmeterdsp.h
index 374afff50e..7fe2b9d11b 100644
--- a/libs/ardour/ardour/kmeterdsp.h
+++ b/libs/ardour/ardour/kmeterdsp.h
@@ -29,7 +29,7 @@ public:
Kmeterdsp (void);
~Kmeterdsp (void);
- void process (float *p, int n);
+ void process (float const *p, int n);
float read ();
void reset ();
diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h
index 51e1356d12..627c847513 100644
--- a/libs/ardour/ardour/plugin_insert.h
+++ b/libs/ardour/ardour/plugin_insert.h
@@ -123,8 +123,7 @@ class LIBARDOUR_API PluginInsert : public Processor
}
PBD::Signal2<void,BufferSet*, BufferSet*> AnalysisDataGathered;
- /** Emitted when the return value of splitting () has changed */
- PBD::Signal0<void> SplittingChanged;
+ PBD::Signal0<void> PluginIoReConfigure;
/** Enumeration of the ways in which we can match our insert's
* IO to that of the plugin(s).
diff --git a/libs/ardour/ardour/vumeterdsp.h b/libs/ardour/ardour/vumeterdsp.h
index f8abc7fa93..1271276d68 100644
--- a/libs/ardour/ardour/vumeterdsp.h
+++ b/libs/ardour/ardour/vumeterdsp.h
@@ -29,11 +29,11 @@ public:
Vumeterdsp (void);
~Vumeterdsp (void);
- void process (float *p, int n);
+ void process (float const *p, int n);
float read (void);
void reset ();
- static void init (float fsamp);
+ static void init (float fsamp);
private:
diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc
index 0909140f91..331de043cd 100644
--- a/libs/ardour/audioregion.cc
+++ b/libs/ardour/audioregion.cc
@@ -744,7 +744,7 @@ AudioRegion::read_from_sources (SourceList const & srcs, framecnt_t limit, Sampl
/* copy an existing channel's data in for this non-existant one */
- uint32_t channel = n_channels() % chan_n;
+ uint32_t channel = chan_n % n_channels();
boost::shared_ptr<AudioSource> src = boost::dynamic_pointer_cast<AudioSource> (srcs[channel]);
if (src->read (buf, _start + internal_offset, to_read) != to_read) {
diff --git a/libs/ardour/iec1ppmdsp.cc b/libs/ardour/iec1ppmdsp.cc
index 79a572da1c..842d33b8b5 100644
--- a/libs/ardour/iec1ppmdsp.cc
+++ b/libs/ardour/iec1ppmdsp.cc
@@ -41,7 +41,7 @@ Iec1ppmdsp::~Iec1ppmdsp (void)
}
-void Iec1ppmdsp::process (float *p, int n)
+void Iec1ppmdsp::process (float const *p, int n)
{
float z1, z2, m, t;
diff --git a/libs/ardour/iec2ppmdsp.cc b/libs/ardour/iec2ppmdsp.cc
index caca744c52..d65f51b3fa 100644
--- a/libs/ardour/iec2ppmdsp.cc
+++ b/libs/ardour/iec2ppmdsp.cc
@@ -41,7 +41,7 @@ Iec2ppmdsp::~Iec2ppmdsp (void)
}
-void Iec2ppmdsp::process (float *p, int n)
+void Iec2ppmdsp::process (float const *p, int n)
{
float z1, z2, m, t;
diff --git a/libs/ardour/kmeterdsp.cc b/libs/ardour/kmeterdsp.cc
index 35c95c2daf..add026797d 100644
--- a/libs/ardour/kmeterdsp.cc
+++ b/libs/ardour/kmeterdsp.cc
@@ -42,7 +42,7 @@ void Kmeterdsp::init (int fsamp)
_omega = 9.72f / fsamp; // ballistic filter coefficient
}
-void Kmeterdsp::process (float *p, int n)
+void Kmeterdsp::process (float const *p, int n)
{
// Called by JACK's process callback.
//
diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc
index 5310fd747b..ec736fef69 100644
--- a/libs/ardour/meter.cc
+++ b/libs/ardour/meter.cc
@@ -107,7 +107,11 @@ PeakMeter::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*end_fr
// Meter audio in to the rest of the peaks
for (uint32_t i = 0; i < n_audio; ++i, ++n) {
- _peak_signal[n] = compute_peak (bufs.get_audio(i).data(), nframes, _peak_signal[n]);
+ if (bufs.get_audio(i).silent()) {
+ _peak_signal[n] = .0f;
+ } else {
+ _peak_signal[n] = compute_peak (bufs.get_audio(i).data(), nframes, _peak_signal[n]);
+ }
if (_meter_type & (MeterKrms | MeterK20 | MeterK14 | MeterK12)) {
_kmeter[i]->process(bufs.get_audio(i).data(), nframes);
}
diff --git a/libs/ardour/midi_port.cc b/libs/ardour/midi_port.cc
index ae168356b6..55280eb942 100644
--- a/libs/ardour/midi_port.cc
+++ b/libs/ardour/midi_port.cc
@@ -158,13 +158,13 @@ MidiPort::resolve_notes (void* port_buffer, MidiBuffer::TimeType when)
*/
if (port_engine.midi_event_put (port_buffer, when, ev, 3) != 0) {
- cerr << "failed to deliver sustain-zero on channel " << channel << " on port " << name() << endl;
+ cerr << "failed to deliver sustain-zero on channel " << (int)channel << " on port " << name() << endl;
}
ev[1] = MIDI_CTL_ALL_NOTES_OFF;
if (port_engine.midi_event_put (port_buffer, 0, ev, 3) != 0) {
- cerr << "failed to deliver ALL NOTES OFF on channel " << channel << " on port " << name() << endl;
+ cerr << "failed to deliver ALL NOTES OFF on channel " << (int)channel << " on port " << name() << endl;
}
}
}
@@ -205,7 +205,7 @@ MidiPort::flush_buffers (pframes_t nframes)
<< ev.time() << " > " << _global_port_buffer_offset + _port_buffer_offset << endl;
}
} else {
- cerr << "drop flushed event on the floor, time " << ev
+ cerr << "drop flushed event on the floor, time " << ev.time()
<< " to early for " << _global_port_buffer_offset
<< " + " << _port_buffer_offset << endl;
}
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc
index b3517531aa..c25f8962ac 100644
--- a/libs/ardour/plugin_insert.cc
+++ b/libs/ardour/plugin_insert.cc
@@ -346,9 +346,8 @@ PluginInsert::connect_and_run (BufferSet& bufs, pframes_t nframes, framecnt_t of
/* XXX: audio only */
uint32_t first_idx = in_map.get (DataType::AUDIO, 0, &valid);
if (valid) {
- Sample const * mono = bufs.get_audio (first_idx).data (offset);
for (uint32_t i = in_streams.n_audio(); i < natural_input_streams().n_audio(); ++i) {
- memcpy (bufs.get_audio (in_map.get (DataType::AUDIO, i, &valid)).data (offset), mono, sizeof (Sample) * nframes);
+ bufs.get_audio(in_map.get (DataType::AUDIO, i, &valid)).read_from(bufs.get_audio(first_idx), nframes, offset, offset);
}
}
}
@@ -490,8 +489,9 @@ PluginInsert::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*end
/* not active, but something has make up for any channel count increase */
- for (uint32_t n = out - in; n < out; ++n) {
- memcpy (bufs.get_audio (n).data(), bufs.get_audio(in - 1).data(), sizeof (Sample) * nframes);
+ // TODO: option round-robin (n % in) or silence additional buffers ??
+ for (uint32_t n = in; n < out; ++n) {
+ bufs.get_audio(n).read_from(bufs.get_audio(in - 1), nframes);
}
}
@@ -650,6 +650,8 @@ bool
PluginInsert::configure_io (ChanCount in, ChanCount out)
{
Match old_match = _match;
+ ChanCount old_in = input_streams ();
+ ChanCount old_out = output_streams ();
/* set the matching method and number of plugins that we will use to meet this configuration */
_match = private_can_support_io_configuration (in, out);
@@ -657,9 +659,12 @@ PluginInsert::configure_io (ChanCount in, ChanCount out)
return false;
}
- /* a signal needs emitting if we start or stop splitting */
- if (old_match.method != _match.method && (old_match.method == Split || _match.method == Split)) {
- SplittingChanged (); /* EMIT SIGNAL */
+ if ( (old_match.method != _match.method && (old_match.method == Split || _match.method == Split))
+ || old_in != in
+ || old_out != out
+ )
+ {
+ PluginIoReConfigure (); /* EMIT SIGNAL */
}
/* configure plugins */
diff --git a/libs/ardour/test/control_surfaces_test.cc b/libs/ardour/test/control_surfaces_test.cc
index f82945c3ce..63c5e33c6f 100644
--- a/libs/ardour/test/control_surfaces_test.cc
+++ b/libs/ardour/test/control_surfaces_test.cc
@@ -35,7 +35,7 @@ ControlSurfacesTest::instantiateAndTeardownTest ()
ControlProtocolManager& m = ControlProtocolManager::instance ();
for (list<ControlProtocolInfo*>::iterator i = m.control_protocol_info.begin(); i != m.control_protocol_info.end(); ++i) {
- m.instantiate (**i);
- m.teardown (**i);
+ m.activate (**i);
+ m.deactivate (**i);
}
}
diff --git a/libs/ardour/vumeterdsp.cc b/libs/ardour/vumeterdsp.cc
index a3d0ec23c1..edd9fa5831 100644
--- a/libs/ardour/vumeterdsp.cc
+++ b/libs/ardour/vumeterdsp.cc
@@ -39,7 +39,7 @@ Vumeterdsp::~Vumeterdsp (void)
}
-void Vumeterdsp::process (float *p, int n)
+void Vumeterdsp::process (float const *p, int n)
{
float z1, z2, m, t1, t2;
@@ -86,6 +86,6 @@ void Vumeterdsp::reset ()
void Vumeterdsp::init (float fsamp)
{
- _w = 11.1f / fsamp;
+ _w = 11.1f / fsamp;
_g = 1.5f * 1.571f;
}