Subject: Re: [ecasound] gate (-gc) retriggering?
From: Kai Vehmanen (k_AT_eca.cx)
Date: Wed Aug 21 2002 - 21:55:00 EEST
On 21 Aug 2002, Nathan Stewart wrote:
> Ok - another question of EFFECT_AMPLIFY::process vs GATE_BASE::process.
> GATE_BASE::process() does not appear to advance the sample iterator,
> while EFFECT_AMPLIFY::process does. Yet, they're both chain ops. Looking
The iterators are private to operaters. The iterators are used as an
abstraction between processing logic and the audio data. In most audio
apps audio processing algorithms directly read and write to buffers of
audio data. LADSPA is again good example. In ecasound chainops use the
iterator objects to access the audio data. The biggest benefit of this
approach is that there is no need to rewrite chainop code if the physical
layout of audio data changes.
But as for gate ops, iterators are just a mechanism to access the sample
buffers. Current gate ops don't use them as they don't need direct access
to audio data. The time crop gate only need information about current
position. The threshold gate uses already existing utility functions
(defined in libecasound/samplebuffer_functions.h) to analyze the sample
> at TIME_CROP_GATE::analyze and THRESHOLD_GATE::analyze() - they don't
> advance either, which might lead you to think that
> CHAIN_OPERATOR::process is being called once per sample, but that's not
> how EFFECT_AMPLIFY works and seems wasteful.
process() is always called once per sample buffer (object of type
SAMPLE_BUFFER). And these buffers are -b:xxx sample frame long (default is
-- http://www.eca.cx Audio software for Linux!
-- To unsubscribe send message 'unsubscribe' in the body of the message to <ecasound-list-request_AT_wakkanet.fi>.
This archive was generated by hypermail 2b28 : Wed Aug 21 2002 - 21:43:59 EEST