summaryrefslogtreecommitdiff
path: root/examples/hilbert_barberpole.csd
diff options
context:
space:
mode:
Diffstat (limited to 'examples/hilbert_barberpole.csd')
-rw-r--r--examples/hilbert_barberpole.csd75
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>