aboutsummaryrefslogtreecommitdiff
path: root/examples/example5.csd
diff options
context:
space:
mode:
Diffstat (limited to 'examples/example5.csd')
-rw-r--r--examples/example5.csd112
1 files changed, 112 insertions, 0 deletions
diff --git a/examples/example5.csd b/examples/example5.csd
new file mode 100644
index 0000000..d30629b
--- /dev/null
+++ b/examples/example5.csd
@@ -0,0 +1,112 @@
+/*
+ csound-json example 5
+
+ fill JSON object with various data at init time
+
+*/
+<CsoundSynthesizer>
+<CsLicence>
+ Released into the public domain under the Unlicense license
+ http://unlicense.org/
+</CsLicence>
+<CsOptions>
+-d
+-m0
+</CsOptions>
+<CsInstruments>
+sr = 44100
+ksmps = 64
+nchnls = 2
+0dbfs = 1
+
+
+/*
+ Create a random alphabetic string
+*/
+opcode randstring, S, 0
+ Soutput = sprintf("%c%c%c%c%c%c", \
+ random(97, 122), random(97, 122),\
+ random(97, 122), random(97, 122),\
+ random(97, 122), random(97, 122)\
+ )
+ xout Soutput
+endop
+
+
+instr boot
+ iJson1 jsoninit
+ iJson2 jsoninit
+ schedule "run1", 0, 5, iJson1
+ schedule "run2", 5, 5, iJson2
+ schedule "process", 10, 1, iJson1, iJson2
+ turnoff
+endin
+
+
+instr run1
+ iJson = p4
+ kdata[] init 4
+ kindex init 1
+ kmetro metro 5
+
+ ; add random numeric values with incremental key names
+ if (kmetro == 1) then
+ Skey = sprintfk("sound%03d", kindex)
+ kdata[0] = random:k(0, 1)
+ kdata[1] = random:k(0, 1)
+ kdata[2] = random:k(0, 1)
+ kdata[3] = random:k(0, 1)
+ jsoninsertvalk iJson, Skey, kdata
+ kindex += 1
+ endif
+endin
+
+
+instr run2
+ iJson = p4
+ Skeys[] init 3
+ Svalues[] init 3
+
+ ; add random key/value strings
+ index = 0
+ while (index < 10) do
+ Skeys[0] randstring
+ Skeys[1] randstring
+ Skeys[2] randstring
+ Svalues[0] randstring
+ Svalues[1] randstring
+ Svalues[2] randstring
+ jsoninsertval iJson, Skeys, Svalues
+ index += 1
+ od
+endin
+
+
+instr process
+
+ ; populated objects
+ iJsons[] fillarray p4, p5
+
+ ; load file
+ iJson jsonload "supplement.json"
+
+ ; insert as array of objects under "added" key
+ jsoninsert iJson, "added", iJsons
+
+ ; add f-table sine wave points
+ ipoints[] tab2array 1
+ jsoninsertval iJson, "sine", ipoints
+
+ ; show and write output
+ prints sprintf("%s\n\n", jsondumps(iJson))
+ jsondump iJson, "example_output.json"
+endin
+
+
+
+</CsInstruments>
+<CsScore>
+f1 0 64 10 1 ; sine
+i"boot" 0 15
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file