forest-all-around/@sampler/Audio_SdFat.latest/examples/Effects/Flange/effects_info.h

55 lines
2.3 KiB
C
Executable file

/*
CHORUS and FLANGE effects
Both effects use a delay line to hold previous samples. This allows
the current sample to be combined in some way with a sample that
occurred in the past. An obvious effect this would allow would be
an echo where the current sample is combined with a sample from,
say, 250 milliseconds ago. The chorus and flange effects do this
as well but they combine samples from only about 50ms (or less) ago.
CHORUS EFFECT
This combines one or more samples up to about 50ms ago. In this
library, the additional samples are evenly spread through the
supplied delay line.
E.G. If the number of voices is specified as 2 then the effect
combines the current sample and the oldest sample (the last one in
the delay line). If the number of voices is 3 then the effect
combines the most recent sample, the oldest sample and the sample
in the middle of the delay line.
For two voices the effect can be represented as:
result = (sample(0) + sample(dt))/2
where sample(0) represents the current sample and sample(dt) is
the sample in the delay line from dt milliseconds ago.
FLANGE EFFECT
This combines only one sample from the delay line but the position
of that sample varies sinusoidally.
In this case the effect can be represented as:
result = sample(0) + sample(dt + depth*sin(2*PI*Fe))
The value of the sine function is always a number from -1 to +1
and so the result of depth*(sinFe) is always a number from
-depth to +depth. Thus, the delayed sample will be selected from
the range (dt-depth) to (dt+depth). This selection will vary
at whatever rate is specified as the frequency of the effect Fe.
Try these settings:
#define FLANGE_DELAY_LENGTH (2*AUDIO_BLOCK_SAMPLES)
and
int s_idx = 2*FLANGE_DELAY_LENGTH/4;
int s_depth = FLANGE_DELAY_LENGTH/4;
double s_freq = 3;
The flange effect can also produce a chorus effect if a longer
delay line is used with a slower rate, for example try:
#define FLANGE_DELAY_LENGTH (12*AUDIO_BLOCK_SAMPLES)
and
int s_idx = 3*FLANGE_DELAY_LENGTH/4;
int s_depth = FLANGE_DELAY_LENGTH/8;
double s_freq = .0625;
When trying out these effects with recorded music as input, it is
best to use those where there is a solo voice which is clearly
"in front" of the accompaniment. Tracks which already contain
flange or chorus effects don't work well.
*/