Csound Csound-dev Csound-tekno Search About

Re: Frequency Shifting & Hilbert Transforms

Date1999-03-15 09:51
FromJens Groh
SubjectRe: Frequency Shifting & Hilbert Transforms
Hello list!
Here is the frequency shifter instrument I announced.
Jens Groh






gisin      ftgen      0,0,65536,10,1

instr 1

; input signal:
awvin      =          .....

;------ begin "third method" SSB modulation

ifs4       =          sr * 0.25

; frequency shift (+/-) in Hertz:
kfrqshf    =          .....

; shift mode: 0.0 ... 1.0 
; 1.0 -> "normal" SSB, spectral components shifted off [0,sr/2] are mirrored and overlap.
; 0.0 -> components shifted off [0,sr/2] are cut, the other end is augmented by mirror image, no overlap.
kshfmod    =          .....

; first quadrature oscillator:
ko1frq     =          ifs4 - (1.0 - kshfmod) * kfrqshf
aqo1r      oscil      1.0, ko1frq, gisin, 0.25
aqo1i      oscil      1.0, ko1frq, gisin, 0.0

; first modulator:
awq1r      =          awvin * aqo1r
awq1i      =          awvin * aqo1i

; filter coefficients (6th order elliptical filter, fc=sr/4):
ifc0       =          0.051532459925
ifb01      =          1.0
ifb11      =          1.6375276435
ifb21      =          1.0
ifa01      =          1.0
ifa11      =          -0.93027644018
ifa21      =          0.37171017225
ifb02      =          1.0
ifb12      =          0.56037176307
ifb22      =          1.0
ifa02      =          1.0
ifa12      =          -0.40320752514
ifa22      =          0.73736786626
ifb03      =          1.0
ifb13      =          0.19165327787
ifb23      =          1.0
ifa03      =          1.0
ifa13      =          -0.15398586410
ifa23      =          0.94001488557

; lowpass filters:
awf1r      biquad     awq1r, ifb01, ifb11, ifb21, ifa01, ifa11, ifa21
awf2r      biquad     awf1r, ifb02, ifb12, ifb22, ifa02, ifa12, ifa22
awf3r      biquad     awf2r, ifb03, ifb13, ifb23, ifa03, ifa13, ifa23
aw1fr      =          awf3r * ifc0
awf1i      biquad     awq1i, ifb01, ifb11, ifb21, ifa01, ifa11, ifa21
awf2i      biquad     awf1i, ifb02, ifb12, ifb22, ifa02, ifa12, ifa22
awf3i      biquad     awf2i, ifb03, ifb13, ifb23, ifa03, ifa13, ifa23
aw1fi      =          awf3i * ifc0

; second quadrature oscillator:
ko2frq     =          ifs4 + kshfmod * kfrqshf
aqo2r      oscil      1.0, ko2frq, gisin, 0.25
aqo2i      oscil      1.0, ko2frq, gisin, 0.0

; second modulator:
awq2r      =          aw1fr * aqo2r
awq2i      =          aw1fi * aqo2i

; summing up:
awvout     =          awq2r + awq2i

;------ end "third method" SSB modulation

           out        awvout

endin