Subject: Re: [linux-audio-dev] New LADSPA Version - Issues Resolved?
From: Kai Vehmanen (kaiv_AT_wakkanet.fi)
Date: ke maalis 08 2000 - 20:49:13 EST
On Wed, 8 Mar 2000, Richard W.E. Furse wrote:
> I think this version meets basic requirements for a simple plugin API. It
> still only supports float types, but I think that's sensible at this level.
Yep, looks good to me. Btw; is someone working on a C++ LADSPA class (or
intents to write one)?
I'm still trying to come up with a efficient way to mix these C-algorithms
with ecasound's higher level effect interface. In ecasound, chain operators
(=effects) don't handle the sample buffers directly. Instead, they
use special iterator objects for audio input/output. Here's a sample:
--cut--
void EFFECT_AMPLIFY::process(void) {
i.begin();
while(!i.end()) {
*i.current() = *i.current() * multiplier;
i.next();
}
}
--cut--
'i' is an object of class SAMPLE_ITERATOR. This iterates through
all samples (of possibly multi-channel stream). Iterator class
makes sure, that samples are iterated as efficiently as possible
(depending on channel layout, etc). Other iterator types are
SAMPLE_ITERATOR_CHANNEL (iterate samples of one specific channel),
SAMPLE_ITERATOR_CHANNELS (iterate through all samples, channel
at a time) and SAMPLE_ITERATOR_INTERLEAVED (iterate through all
samples, sample frame at a time).
All variables are typedef'ed floats. The actual sample data is
stored into STL vectors. Member functions are of course all
inlined (and no virtual functions). But, but, writing a wrapper
for LADPSA plugins isn't going to be an easy task. I basicly have
to write an intermediate buffering layer that communicates with
the plugins.
-- Kai Vehmanen <kaiv_AT_wakkanet.fi> -------- CS, University of Turku, Finland . http://www.wakkanet.fi/ecasound/ - linux multitrack audio processing . http://www.wakkanet.fi/sculpscape/ - ambient-idm-rock-... mp3/ra/wav
This archive was generated by hypermail 2b28 : su maalis 12 2000 - 09:14:05 EST