summaryrefslogtreecommitdiff
path: root/examples/tablecopy.csd
diff options
context:
space:
mode:
Diffstat (limited to 'examples/tablecopy.csd')
-rw-r--r--examples/tablecopy.csd68
1 files changed, 68 insertions, 0 deletions
diff --git a/examples/tablecopy.csd b/examples/tablecopy.csd
new file mode 100644
index 0000000..af8a1a2
--- /dev/null
+++ b/examples/tablecopy.csd
@@ -0,0 +1,68 @@
+<CsoundSynthesizer>
+<CsOptions>
+; Select audio/midi flags here according to platform
+-odac ;;;realtime audio out
+;-iadc ;;;uncomment -iadc if realtime audio input is needed too
+; For Non-realtime ouput leave only the line below:
+; -o tablecopy.wav -W ;;; for file output any platform
+</CsOptions>
+<CsInstruments>
+
+sr = 44100
+ksmps = 32
+nchnls = 2
+0dbfs = 1
+;after an example from Jonathan Murphy
+
+gilen = 7
+gilist ftgen 1, 0, gilen + 1, -2, 2, 3, 4, 5, 6, 7 ;only 6 elements, so 1 is doubled
+gitmp ftgen 2, 0, gilen + 1, -2, 0 ;empty table
+gkmax init gilen
+
+seed 0 ;each time different
+
+instr 1
+
+ktrig metro 3 ;trigger values
+krnd random 0, gkmax
+
+if (ktrig == 1) then
+ kval table krnd, gilist
+ tablew 0, krnd, gilist
+ kread = 0
+ kwrite = 0
+start:
+ knew table kread, gilist
+if (knew != 0) then
+ tablew knew, kwrite, gitmp
+ kwrite = kwrite + 1
+endif
+ kread = kread + 1
+if (kread <= gilen) kgoto start
+ tablecopy gilist, gitmp ;fill with zeroes
+ gkmax = gkmax - 1
+endif
+
+printk2 kval
+
+if (gkmax < 0) then
+ event "i", 2, 0, 1/kr ;when ready, then stop
+endif
+
+asig vco2 .5, 40*kval ;sound generation
+outs asig, asig
+
+endin
+
+instr 2
+
+exitnow
+
+endin
+</CsInstruments>
+<CsScore>
+i1 0 5
+e
+</CsScore>
+</CsoundSynthesizer>
+