diff options
Diffstat (limited to 'examples/genfarey-2.csd')
-rw-r--r-- | examples/genfarey-2.csd | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/examples/genfarey-2.csd b/examples/genfarey-2.csd new file mode 100644 index 0000000..7c0521a --- /dev/null +++ b/examples/genfarey-2.csd @@ -0,0 +1,98 @@ +<CsoundSynthesizer> +<CsOptions> +; Select audio/midi flags here according to platform +-odac ;;;realtime audio out +;-iadc ;;;uncomment -iadc for RT audio input as well +; For Non-realtime ouput leave only the line below: +; -o genfarey.wav -W ;;; for file output any platform +</CsOptions> +<CsInstruments> +sr = 44100 +ksmps = 32 +nchnls = 2 +0dbfs = 1 + +; GENfarey creates table gidelta. +; The table contains the delta values of Farey Sequence 7 (p5=7). +; They are used as Inter Onset Intervals (IOIs) or event durations. +; If p6 is set to 1 for IOI output then the length of the table (p3=-18) is -(|F_7| - 1) +; Remember that a negative sign is for non-power-of-2 table lengths. +; The negative sign in front of the GEN number prevents post-normalisation of its values. + +gidelta ftgen 0,0,-18,"farey",7,1 + +; Use GENfarey with p6 set to 2 to generate the denominators of fractions of F_7 +; this is used in this example as factors to create a series of pitches: +gimult ftgen 0,0,-18,"farey",7,2 + +;-------- loop and trigger instrument 901 using a Farey Sequence polyrhythm + instr 1 +kindx init 0 +kindx2 init 0 +ktrigger init 0 +ktime_unit init p6 +kstart init p4 +kloop init p5 +kinitndx init 0 +kfn_times init gidelta +knote init 60 +kbasenote init p8 +ifundam init p7 +ktrigger seqtime ktime_unit, kstart, kloop, kinitndx, kfn_times + if (ktrigger > 0 ) then + kpitch = cpspch(ifundam) + kmult tab kindx2, gimult + kpitch = kpitch * kmult + knote = kbasenote + kmult + event "i", 901, 0, .4, .10, kpitch, kpitch * .9, 0.4, 5, .75, .8, 1.0, .15, .0, .125, .125, .25, .5, 1.0, .0, .0, .0, .0, .125, .25, .25, .25, knote + kindx = kindx + 1 + kindx = kindx % kloop + kindx2 = kindx2 + 1 + kindx2 = kindx2 % kloop + endif +endin + +;------ basic 2 Operators FM algorithm ---------------- + instr 901 +inotedur = p3 +imaxamp = p4 ;ampdb(p4) +icarrfreq = p5 +imodfreq = p6 +ilowndx = p7 +indxdiff = p8-p7 +knote = p27 +aampenv linseg p9, p14*p3, p10, p15*p3, p11, p16*p3, p12, p17*p3, p13 +adevenv linseg p18, p23*p3, p19, p24*p3, p20, p25*p3, p21, p26*p3, p22 +amodosc oscili (ilowndx+indxdiff*adevenv)*imodfreq, imodfreq, 10 +acarosc oscili imaxamp*aampenv, icarrfreq+amodosc, 10 + outs acarosc, acarosc +endin +</CsInstruments> +<CsScore> +f10 0 4096 10 1 ;sine wave +; p4 kstart := index offset into the Farey Sequence +; p5 kloop := end index into Farey Seq. +; p6 timefac := time in seconds for one loop to complete +; p7 fundam := fundamental of the FM instrument +; p8 basenote:= root pitch of the midi voice output +; note that pitch structures of the midi file output are not equivalent to the +; ones used for the FM real-time synthesis. + +; start dur kstart kloop timefac fundam. basenote +i1 0.0 44 0 18 2 6.05 60 +i1 4 30 0 18 3 7.05 72 +i1 34 12 9 18 3 7.05 72 +i1 10 12 0 18 1.5 8 84 +i1 22 12 0 9 1.5 8 84 +i1 15 16 0 18 1 5 48 +i1 22 20 5 17 1.7 4 36 + +i1 46 20 3 11 2.5 7.04 71 +i1 51 20 5 13 2.5 7.06 72 + +i1 73.5 1.5 11 18 1.5 5.05 48 +i1 75 1 12 18 1 6.03 58 +e +</CsScore> +</CsoundSynthesizer> + |