[sdiy] A question about Chorus
cheater00 .
cheater00 at gmail.com
Sun Sep 1 18:55:58 CEST 2013
Hi Tom,
On 27 Aug 2013 21:08, "Tom Wiltshire" <tom at electricdruid.net> wrote:
>
> Hi All,
>
> If I've got a classic chorus effect, with a delay modulated by an LFO, what exactly is going on?
>
> The output from the delay line is a "vibrato" effect, e.g. the input signal is frequency-modulated (or the phase-modulated version anyway).
>
> So can I assume that the standard FM equations apply, if I ignore the overall delay in the signal? I'm not especially interest in the fact that it's a sampled system. That's just standard nyquist stuff. I'm not expecting discrete maths here. Assume it's analog.
>
> The reason I ask is that it just occurred to me that if a chorus is actually doing FM, then you ought to be able to mimic the effect of multiple delay lines by using more complex LFO waveforms. Each new sine wave in the modulating signal will generate a pair of sidebands in the output, won't it? Two sines modulating one delay would be equivalent to two delay lines set up for the same delay time, with two sine LFOs modulating them. The point being that that's considerably easier to implement, saving you input and output filters and a delay clock and delay line chip.
>
> I suppose that for a genuinely complex sounding chorus, the fact that there are several different delay times also helps, but it seemed to me that the need for more delay lines could be reduced by using richer modulation waveforms than the usual sine/triangle.
>
> Thanks,
> Tom
Very interesting conversation ensued, thanks. Here are the various
threads I noticed:
1. Is PM the same as FM?
2. How does a BBD differ from a buffer with read index modulation?
with write index modulation? with length modulation? Which of those
are FM, PM, or other?
3. Is sampling AM and how are the two related?
4. Can you do FM via AM?
5. What's the difference between a modulated BBD and frequency shifting?
6. How do you do a chorus without a BBD?
To answer the last three:
5. What's the difference between a modulated BBD and frequency shifting?
A BBD chorus has several copies of the same signal, where the delay
varies. When this happens, the signal slows down and speeds up
temporarily. This means that the signal is shifted in pitch - not in
frequency. The difference is that: in pitch shifting, the frequencies
of all inputted partials are multiplied by a common constant (the
pitch shift) when put out. So, when pitch shifting, you can shift "by
one octave down" but you cannot pitch shift "by 100 Hz upwards"
because that's nonsensical. On the other hand, in frequency shifting,
the frequency of every partial that is put in has a constant, called
the frequency shift, added to it. This means you can frequency shift
"by 100 Hz upwards" but cannot shift "by one octave down". Those two
definitions are very important. In the first, pitch shifting, a series
of partials that was harmonic is still harmonic after the process. In
frequency shifting, it's not, except for some lucky coincidences. To
see why in the first it's going to be harmonic, look at an example
series with partials at the following frequencies:
100, 200, 300, 400, ...
The pitch relations inside our sound are:
200:100 = 2, 300:100 = 3, 400:100 = 4, ...
Say you pitch-shift by a constant c. Then our series comes out as:
c*100, c*200, c*300, c*400, ...
The pitch relations are:
(c*200):(c*100) = (c:c) * (200:100) = 1 * 2 = 2, the same as above.
Similarly for the other relations.
This means that a series that was harmonic still is. You can easily
generalize to any series, I used concrete numbers above to make
visualization easier.
Now if you do frequency shifting: let's say we shift by a constant
frequency f. Then we get the following at the output:
100+f, 200+f, 300+f, 400+f, ...
The pitch relation for the first harmonic would be (200+f) : (100 +
f). Now let's see when this will be equal to 2, which is what we want
for the series to still be harmonic:
(200 + f) : (100 + f) = 2
200 + f = 2 * (100 + f)
200 + f = 200 + 2f
f = 2f
f = 0
So the only frequency shift which keeps harmonicity is the unique
frequency shift by 0 Hz, i.e. no shift at all.
The clones used in BBD chorus are in pitch with themselves - they are
shifted harmonically. What we want is pitch shifting.
However, let's look for a second what would happen if you used
frequency-shifting instead of pitch shifting. Suppose our input had a
partial at 100 Hz, and we did FS of +2Hz. Then, after an ideal
frequency shift, the output would have a partial at 102Hz. And
similarly, for every partial of the input, the output would have a
partial which is 2 Hz higher.
So what happens when we mix the FS clone and the original? Let's look
at what happens with the pairs of original partials and their clones.
Each partial is a sine wave. When you mix a sine wave with that same
sine wave but 2 Hz faster, what you get is a different sine wave which
beats at 2 Hz. This would happen to each partial in the input - so in
total, the whole sound would beat at 2 Hz. That's all! You'd get
beating and nothing else. So FS is great for tremolo. But this can be
done easier than using frequency shifting, because a simple ring mod
is not enough and complete frequency shifting is actually involved.
4. Can you do FM via AM?
You can frequency-shift - but you cannot pitch-shift. AM is only part
of a frequency-shifting circuit. What you need is two very fast
oscillators. One brings the original signal up by a large amount over
100 kHz, and the other brings one part of the sidebands down again.
There's a high-pass or low-pass filter between the two to select your
side bands. It's very important. To maintain a constant frequency
shift, you have to keep both local oscillators at a constant relation
in pitch. That is one of them has to always be this several Hz higher
than the other. This alone is difficult in analog electronics. Then
the brick-wall filter is going to be difficult again.
6. How do you do a chorus without a BBD?
So we have figured out we want pitch-shifting, and that amplitude/ring
modulation does not provide that. What you want is several copies of
the same signal, shifted in frequency. You could do this before the
filter in a somewhat simple manner. In your VCO, make several copies
of the oscillator core. Feed them with current mirrors. Make sure the
cores get slightly different currents. They'll switch at different
frequencies, while maintaining harmonicity. Mix them together and
you've got your chorus sound. Or don't make sure, because the cores
will be different *anyways*. Have a trim pot limiting input current to
each cap - adjust to taste. Possibly sum in a current from a 0.6 Hz
oscillator. Have fun. The important parts, such as the expo converter
or adjustment of the important "in pitch" core only have to be done
for that single core. The rest of the cores is just for effect. And
the parts seem fairly cheap. You do need separate shapers.
In fact, I am surprised more people don't mess around with multi-core
oscillators. You can do so much fun stuff with them:
- DSF synthesis for harmonic-stretched waveforms
- linear "operator" style FM
- glitch-free oscillator for FM without high-frequency tracking errors
- the "chorus" style circuit described above
- ...
You could come up with a lot of fun stuff for an oscillator that has,
say, 6 cores. If the circuits turned out to be compatible, maybe the
topology could be switched, so that one module can do all of the
above.
A mental gotcha with those multiple cores is this: If you have a BBD,
the clone will be, say, 1.2x slower/faster at the LFO peak. Does this
mean the clone core should always be 1.2x slower/faster at LFO peak
than the main core? No, it does not. The thing is, the main BBD signal
is always at a constant virtual sampling rate - the sampling rate the
BBD chip would have if the rate wasn't modulated by an LFO. The slow
down and speed up of clones relates to the frequency of that, not the
frequency of the signal going through the chorus. The signal going
through the chorus doesn't matter. So what you get is that in fact the
BBD clone slows down to a constant number of Hertz below the sampling
frequency of the main feed, and then climbs a constant number of Hertz
above it. When you have two oscillator cores fed by the same expo
converter, to have one of them always be a specific number of Hz below
the other, you just deduct a constant current. Think JH "Living VCO".
This way you have your oscillator cores beating at a constant rate
across the keyboard. Instead, if you made sure the clone VCO core
peaks out at 1.2x faster/slower than the main core, the beating speed
would change across the keyboard (think wobble bass). And it would
require another expo for each core, which makes the whole thing more
expensive. So what you do is you simply have a VCO creating a bipolar
current, and add it to a copy of the current going out of the expo,
then feed that to an oscillator core, and you have your nice constant
beating.
The one difference is that the filter resonance and following clipping
is not going to get softened by this. You usually take chorus to make
the sound softer and mushier, but this won't help. This kind of "clone
oscillator core" sound is going to be very raw, and because of
additional headroom required it's going to clip even more. It's
similar, and alternative, to a supersaw oscillator, such as in the
Arturia Minibrute.
There's an idea towards:
2. How does a BBD differ from a buffer with read index modulation?
with write index modulation? with length modulation? Which of those
are FM, PM, or other?
If you'd like to understand how a BBD works when its sampling
frequency is modulated, consider this. Don't look at the BBD changing
speed. Perform the relativity experiment with a pedestrian observing a
fast train with a clock in his hand. Sit inside the train (BBD) and
see what happens. So your BBD is constant rate and constant length,
but the world slows down and speeds up. See how that changes the way
you think about this system.
Cheers,
D.
More information about the Synth-diy
mailing list