diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2014-01-02 09:16:28 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-01-02 09:16:28 -0500 |
commit | e7c47747286c16aa575456b07120e1e8e8271bd5 (patch) | |
tree | 7b74a91fcf5685271f2b90d57a3658c4051dbe84 /libs/ardour | |
parent | 393ff4015349318b404d9e799292ce194645df09 (diff) | |
parent | b439b79813a562278e5fc9ac088e4ca1fbf9f6cb (diff) |
Merge branch 'master' into cairocanvas
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/iec1ppmdsp.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/iec2ppmdsp.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/kmeterdsp.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin_insert.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/vumeterdsp.h | 4 | ||||
-rw-r--r-- | libs/ardour/audioregion.cc | 2 | ||||
-rw-r--r-- | libs/ardour/iec1ppmdsp.cc | 2 | ||||
-rw-r--r-- | libs/ardour/iec2ppmdsp.cc | 2 | ||||
-rw-r--r-- | libs/ardour/kmeterdsp.cc | 2 | ||||
-rw-r--r-- | libs/ardour/meter.cc | 6 | ||||
-rw-r--r-- | libs/ardour/midi_port.cc | 6 | ||||
-rw-r--r-- | libs/ardour/plugin_insert.cc | 19 | ||||
-rw-r--r-- | libs/ardour/test/control_surfaces_test.cc | 4 | ||||
-rw-r--r-- | libs/ardour/vumeterdsp.cc | 4 |
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; } |