diff options
Diffstat (limited to 'examples/hilbert_barberpole.csd')
-rw-r--r-- | examples/hilbert_barberpole.csd | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/examples/hilbert_barberpole.csd b/examples/hilbert_barberpole.csd new file mode 100644 index 0000000..fa77094 --- /dev/null +++ b/examples/hilbert_barberpole.csd @@ -0,0 +1,75 @@ +<CsoundSynthesizer> +<CsOptions> +; Select audio/midi flags here according to platform +; Audio out Audio in No messages +-odac -iadc -d ;;;RT audio I/O +; For Non-realtime ouput leave only the line below: +; -o hilbert_barberpole.wav -W ;;; for file output any platform +</CsOptions> +<CsInstruments> + +; Initialize the global variables. +sr = 44100 +; kr must equal sr for the barberpole effect to work. +kr = 44100 +ksmps = 1 +nchnls = 2 + +; Instrument #1 +instr 1 + idur = p3 + ibegshift = p4 + iendshift = p5 + + ; sawtooth wave, not bandlimited + asaw phasor 100 + ; add offset to center phasor amplitude between -.5 and .5 + asaw = asaw - .5 + ; sawtooth wave, with amplitude of 10000 + ain = asaw * 20000 + + ; The envelope of the frequency shift. + kfreq linseg ibegshift, idur, iendshift + + ; Phase quadrature output derived from input signal. + areal, aimag hilbert ain + + ; The quadrature oscillator. + asin oscili 1, kfreq, 1 + acos oscili 1, kfreq, 1, .25 + + ; Based on trignometric identities. + amod1 = areal * acos + amod2 = aimag * asin + + ; Calculate the up-shift and down-shift. + aupshift = (amod1 + amod2) * 0.7 + adownshift = (amod1 - amod2) * 0.7 + + ; Mix in the original signal to achieve the barberpole effect. + amix1 = aupshift + ain + amix2 = aupshift + ain + + ; Make sure the output doesn't get louder than the original signal. + aout1 balance amix1, ain + aout2 balance amix2, ain + + outs aout1, aout2 +endin + + +</CsInstruments> +<CsScore> + +; Table 1: A sine wave for the quadrature oscillator. +f 1 0 16384 10 1 + +; The score. +; p4 = frequency shifter, starting frequency. +; p5 = frequency shifter, ending frequency. +i 1 0 6 -10 10 +e + + +</CsScore> +</CsoundSynthesizer> |