Professional Documents
Culture Documents
aˆ = 2 cos(θ ) − b
bˆ = a
aˆ 2 cos(θ ) − 1 a
= ⋅
bˆ 1 0 b
aˆ = a ⋅ cos(θ ) − b ⋅ sin(θ )
ˆb = b ⋅ cos(θ ) + a ⋅ sin(θ )
aˆ cos(θ ) − sin(θ ) a
= ⋅
bˆ sin(θ ) cos(θ ) b
aˆ α11 α12 a
= ⋅
bˆ α 21 α 22 b
n
aˆ α 11 α 12 a
= ⋅
bˆ n
α 21 α 22 b 0
Det ( A) = 1
A period
=I
(c) 2010 Clay S. Turner
Barkhausen’s 1st Criterion
• If we think of the two state variables as
components of a vector, then Barkhausen’s 1st
Criterion relates to length preservation. I.e., this
says the length of the vector is unchanged by
rotation.
α11α 22 − α12α 21 = 1
α11 + α 22 < 2
± jθ α11 + α 22
λ =e where θ = cos −1
2
(c) 2010 Clay S. Turner
Oscillator Step Angle
• The angle theta is the step angle per iteration
of the oscillator.
• Thus the oscillator frequency is determined
wholly by the trace (delta) of the matrix!
∆ = 2 cos(θ )
α 12 α 21 < 0
φ = arg
2α12
α 22 − α11 π
φ = cos −1
+ (sgn(α12 ) − 1)
2 − α12α 21 2
− α 21
ψ=
α12
α12 = −α 21
jθ −1
1 1 e 0 1 1
A= jφ − jφ
⋅ ⋅ jφ − jφ
ψe ψe 0 e − jθ
ψe ψe
jnθ −1
1 1 e 0 1 1
A =
n
jφ − jφ
⋅ ⋅ jφ − jφ
ψe ψe 0 e − jnθ ψe ψe
a 1
=
b ψ cos(φ )
a cos(nθ )
=
b n
ψ cos(nθ + φ )
2
b a ⋅ b ⋅ cos(φ )
a +
2
−2
ψ ψ
E=
sin (φ )
2
3 1
G = −E E0 =
2 2
3− E
G= E0 = 1
2
(c) 2010 Clay S. Turner
Digital Waveguide Osc.
• Single Multiply, Quadrature Oscilator
k k −1
A=
k +1 k
k 1− k 2
A=
−1 k
ˆ
b = α ⋅ a + β ⋅b
ˆ
aˆ = γ ⋅ a + δ ⋅ b
(c) 2010 Clay S. Turner
Staggered Update - Derivation
• So now we insert the 1st update into the 2nd
equation and we get the following matrix form:
γ + αδ βδ
A=
α β
1
+ αδ βδ
A= β
α β
α = − βδ
1
− βδ 2
βδ
A= β
− βδ β
(c) 2010 Clay S. Turner
EquiAmp-Staggered Update
• Now we can substitute some simple values for
the parameters and get a couple of neat
oscillators.
• First we will set:
β =1
1− δ 2
δ
−δ 1
ˆ
b = b −δ ⋅a
ˆa = a + δ ⋅ bˆ
βδ = 1
0 1
A=
−1 β
bˆ = β ⋅ b − a
1 ˆ
aˆ = ⋅ b + a
β
( )
β =1 δ =1
1+ α 1 bˆ = α ⋅ a + b
A=
α 1 α = a+b
ˆ ˆ
x0
y0 =
0
(c) 2010 Clay S. Turner
The Generalized Goertzel
Algorithm (Step 2)
• Recursive computation with all input data. “A” is
the oscillator matrix. For
xi
i ∈ {1,2,3,..., N − 1}, yi = A ⋅ yi −1 +
0
y N = A ⋅ y N −1
cos(φ )
1 −
ck ψ
= ⋅ [yN ]
sk sin(φ )
0
ψ
E =c +s 2
k
2
k
2
b cos(φ )
E=a + 2
− 2ab
ψ ψ
(c) 2010 Clay S. Turner
Improving Goertzel
• Some choices of oscillator design will yield
better numerical accuracy than others.
• For comparison, we show the Biquad,
Reinsch, and Magic Circle Oscillators and
how they perform in Goertzel.
• For this test. N=1000 points