# Frequency shifter

Christopher_List at Sonymusic.Com Christopher_List at Sonymusic.Com
Tue Jan 7 18:38:52 CET 1997

```

> Re: Chris - heard you're building a frequency shifter from EN.
> Hey I did one of those, cool box man.
> Anyway here's some testing tips (if I may).

{stuff deleted}

Yes, I built it and got it working. It's pretty easy to test piece by piece
and I was actually testing parts before I had the whole thing built. The
90' phase network was a real drag just because if you screw up one resistor
or cap you get very strange results. I came up with a protoboard layout
that's very compact and uses 3 quad opamps and no jumpers for the whole
90PDN, so it wasn't really that hard to construct. It's also symmetrical,
so I could notice a mis-soldered lead just by comparing the two sides.

I tested it by running a sine wave in and varying it from low to high
frequency - that way I could get a feel for where it was screwing up - near
the bottom, middle, or top. I did the Lissijous (sp?) pattern thing (it was
all laid out in the EN PCC article).

I might as well get into the long description here....

1. You run your input signal (the thing you want to shift) into a big (12
opamp) 90' phase difference network (90PDN) this creates the sine and
cosine of any input signal. We'll call the output of this part of the
circuit S1 and C1.

2. There a 20kHz fixed sine wave oscillator that goes through a really
simple 90PDN tuned to 20kHz - this creates a sine and cosine (call it S2
and C2).

3. You run a variable sine wave in - this is your carrier, it should vary
around 20kHz (call it S3). I used the output of a tri-square VCO for this
(it has a sinewave output).

4. You multiply the input sinewave by S2 and C2 - using two multipliers (I
used AD633s) this creates sums and differences so that if f(S3) = 21kHz,
the output will be 1kHz and 41kHz. You filter both of the outputs - the
filters have a cut off of 5kHz. You now have S2a and C2a - a sine and
cosine wave in a frequency range 5kHz - 0Hz - 5kHz that varies as S3 varies
between 15kHz and 25kHz.

5. You multiply (two more AD633s) S1 by S2a and C1 by C2a.

6. You use an opamp to get the difference of these - (S1 x S2a) - (C1 x
C2a) the result is your frequency shifted signal.

Bode describes the whole theory in his patent, I think the number is
3,000,088.

You can add an envelope follower on the signal input and a VCA on the
output, but I didn't bother, since I'm not using it stand alone and I've
got that stuff in my modular.

It is a really cool thing. I must say that I was a little disappointed with
the amount of carrier feed though - I was hoping it would be lower. I
didn't trim the AD633's and that might have something to do with it - I
just grounded the other side of the differential inputs. Using it on
complex input signals is a very fun thing - things like voices and drums
sound wild pitching up and down. Note that this is <<frequency shifting>>
as opposed to <<pitch shifting>> - and the effect is much more subtle and
down-homey than a digital pitch shifter.

The output is 90' off from the input, so there's really no easy way to feed
the output back to the input. I did try it though! It just makes it break
up more and does weird things - which could be cool under some
circumstances. I suppose you could build ANOTHER 90PDN and then run it
through - but I don't know if feedback without delay would really be that
interesting.

I definitely need to make a dedicated VCO for this thing. Exponential
control is so sensitive in the 15-25kHz range that it's unusable, I was
controlling the VCO via the linear FM input and it was STILL very
sensitive. A simple sine wave VCO, tuned to 20kHz with only a linear FM
input would be much better.

Speaking of which, the EN article <<seemed>> to say that you could get a 0
to lock up with the S2 wave and create a true 0 Hz flat output - but I got
close enough. The only thing is that S2a and C2a wave get really unstable
in the 0Hz range and jump around a lot.

Sorry this is so sloppy - I'm in a big rush and very busy - I'll write more
later....

- CList

```