You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

380 lines
9.9KB

  1. <Cabbage>
  2. form caption("Jean Claude Risset collection") size(552, 330), colour("black"),pluginID("jea1")
  3. rslider bounds(15, 10, 100, 100) channel("spread"), range(0,1,.5), caption("Spread"), colour("tomato"), midictrl(1, 1)
  4. rslider bounds(120, 10, 100, 100) channel("semi"), range(-24,12,-12), caption("Coarse"), colour("tomato")
  5. rslider bounds(225, 10, 100, 100) channel("detune"), range(-2,2,0), caption("Detune"), colour("tomato")
  6. rslider bounds(330, 10, 100, 100) channel("vibamp"), range(0,20,0), caption("Vib Amp"), colour("tomato")
  7. rslider bounds(435, 10, 100, 100) channel("vibrate"), range(0,20,0), caption("Vib rate"), colour("tomato")
  8. groupbox bounds(15, 120, 240, 100), text("ADSR amplitude"), plant("ADSR"){
  9. rslider bounds(.0, .3, .6, .6), text("A"), colour("orange"), channel("att"), range(0.01,3, .5)
  10. rslider bounds(.25, .3, .6, .6), text("D"), colour("orange"), channel("dec"), range(0,1, .5)
  11. rslider bounds(.5, .3, .6, .6), text("S"), colour("orange"), channel("sus"), range(0,1,.8)
  12. rslider bounds(.75, .3, .6, .6), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2)
  13. }
  14. ;RissClar RissDrum RissFlute RissHarmon RissNoise RissOctave RissRing
  15. combobox bounds(280,120, 160, 20), channel("select"), value(1), text("clar","snare", "flute","harmon","noise","octave","ring")
  16. rslider bounds(280,150, 60, 60), text("Rev level"), colour("tomato"), channel("level"), range(0,1,.8)
  17. rslider bounds(350, 150, 60, 60), text("Rev size"), colour("tomato"), channel("size"), range(.1,.99,.7)
  18. checkbox bounds(420,150, 160, 30),channel("onoff"), text("Reverb On/Off"), value(0)
  19. keyboard pos(1, 240), size(550, 60)
  20. </Cabbage>
  21. <CsoundSynthesizer>
  22. <CsOptions>
  23. -d -n -+rtmidi=null -M0 -b1024 -m0d
  24. </CsOptions>
  25. <CsInstruments>
  26. sr = 44100
  27. ksmps = 16
  28. nchnls = 2
  29. 0dbfs = 1
  30. ;Author: Giorgio Zucco (2012)
  31. ga1 init 0
  32. ga2 init 0
  33. ;Risset opcodes
  34. ;**************************************************
  35. opcode RissClar,a,kk
  36. gisine1 ftgen 0 ,0 ,512, 7, -1, 200, -.5, 112, .5 ,200, 1
  37. gisine3 ftgen 0 , 0, 512, 9, 1, 1, 0
  38. kveloc,knote xin
  39. kgate linenr kveloc,0,.2,.01
  40. a1 linen 255,.085,.75,100
  41. a1 poscil a1,knote,gisine3
  42. a1 table a1+256,gisine1
  43. xout a1*kgate
  44. endop
  45. ;**************************************************
  46. opcode RissDrum,a,kk
  47. gitemp1 ftgen 0 , 0 ,512, 9 ,1, 1, 0
  48. gitemp2 ftgen 0 , 0, 512, 5 ,4096 ,512, 1
  49. gitemp3 ftgen 0 , 0, 512, 9 ,10 ,1 ,0, 16, 1.5, 0 ,22, 2 ,0, 23 ,1.5, 0
  50. gitemp4 ftgen 0 , 0, 512, 9, 1, 1, 0
  51. gitemp5 ftgen 0 , 0, 512, 5, 256, 512, 1
  52. kveloc,knote xin
  53. kgate linenr kveloc/2, 0, .2, .01
  54. i1 = 6000*.3
  55. i2 = 500*.1
  56. i3 = 1
  57. i4 = 6000*.8
  58. i5 = 500
  59. a1 randi 6000,4000
  60. a1 poscil a1,i3,gitemp2
  61. a1 poscil a1,3000,gitemp1
  62. a2 poscil i1,i3,gitemp2
  63. a2 poscil a2,knote*.01,gitemp3
  64. a3 poscil i4,i3,gitemp5
  65. a3 poscil a3,knote,gitemp4
  66. aout = (a1+a2+a3)*.0001
  67. xout aout*kgate
  68. endop
  69. ;**************************************************
  70. opcode RissGliss,a,ik
  71. gitemp1 ftgen 0 ,0, 8192, 10, 1
  72. iamp,kfreq xin
  73. irise = .5
  74. kenv1 expseg .01, irise, iamp*1200,1000-irise,1
  75. k1 randi kfreq*.05, 1, .2/(1000)
  76. k2 randi kfreq*.25, .1, .3/(1000)
  77. a1 poscil kenv1, kfreq+k1+k2, gitemp1
  78. kenv11 expseg .01, irise, iamp*.83*1200,1000-irise,1
  79. k11 randi kfreq*.05*1.154, 1, .2/(1000)
  80. k12 randi kfreq*.25*1.154, .1, .3/(1000)
  81. a11 poscil kenv11, kfreq*1.154+k11+k12, gitemp1
  82. kenv21 expseg .01, irise, iamp*.33*1200,1000-irise,1
  83. k21 randi kfreq*.051*.417, 1, .2/(1000)
  84. k22 randi kfreq*.25*1.417, .1, .3/(1000)
  85. a21 poscil kenv21, kfreq*1.417+k21+k22, gitemp1
  86. kenv31 expseg .01, irise, iamp*.67*1200,1000-irise,1
  87. k31 randi kfreq*.05*1.604, 1, .2/(1000)
  88. k32 randi kfreq*.25*1.604, .1, .3/(1000)
  89. a31 poscil kenv31, kfreq*1.604+k31+k32, gitemp1
  90. kenv41 expseg .01, irise, iamp*1200,1000-irise,1
  91. k41 randi kfreq*.05*2.521, 1, .2/(1000)
  92. k42 randi kfreq*.25*2.521, .1, .3/(1000)
  93. a41 poscil kenv41, kfreq*2.521+k41+k42, gitemp1
  94. kenv51 expseg .01, irise, iamp*.33*1200,1000-irise,1
  95. k51 randi kfreq*.05*2.792, 1, .2/(1000)
  96. k52 randi kfreq*.25*2.792, .1, .3/(1000)
  97. a51 poscil kenv51, kfreq*2.792+k51+k52, gitemp1
  98. kenv61 expseg .01, irise, iamp*.33*1200,1000-irise,1
  99. k61 randi kfreq*.05*3.383, 1, .2/(1000)
  100. k62 randi kfreq*.25*3.383, .1, .3/(1000)
  101. a61 poscil kenv61, kfreq*3.383+k61+k62,gitemp1
  102. a1=(a1+a11+a21+a31+a41+a51+a61)*.01
  103. ;kenv71 expseg .01, irise, 1, 100*.5, 1, 100*.5-irise, 1
  104. ;kdeclick linsegr 0,.1,1,.3,.5,0.001,.01
  105. kdeclick linsegr 0.01, 0.01, 1, 0.33*1, 0
  106. xout ((a1)*kdeclick)*.02 ; write output
  107. endop
  108. ;**************************************************
  109. opcode RissFlute,a,kk
  110. gitemp1 ftgen 0 ,0, 512, 9 ,1 ,.26,0
  111. gitemp2 ftgen 0 , 0, 512, 10, 1, .4, .2, .1, .1, .05
  112. kamp,kfreq xin
  113. k1 randi (kamp*.01),5
  114. k1 = k1 + kamp
  115. k2 poscil k1,1/.24,gitemp1
  116. k2 = k2 + .74
  117. a1 poscil k2,kfreq,gitemp2
  118. kdeclick linsegr 0.1, 0.01, 1, 0.33*1, 0
  119. xout a1*kdeclick
  120. endop
  121. ;**************************************************
  122. opcode RissHarmon,a,kk
  123. gisine ftgen 0 , 0, 1024, 10, 1 ,0, 0 ,0 , .7, .7, .7, .7 ,.7, .7
  124. kveloc,knote xin
  125. kgate linenr kveloc,1,2,.01
  126. i1 = .03
  127. i2 = 2*.03
  128. i3 = 3*.03
  129. i4 = 4*.03
  130. ampenv linenr 9,.01,1,.01
  131. a1 poscil ampenv,knote,gisine
  132. a2 poscil ampenv,knote+i1,gisine
  133. a3 poscil ampenv,knote+i2,gisine
  134. a4 poscil ampenv,knote+i3,gisine
  135. a5 poscil ampenv,knote+i4,gisine
  136. a6 poscil ampenv,knote-i1,gisine
  137. a7 poscil ampenv,knote-i2,gisine
  138. a8 poscil ampenv,knote-i3,gisine
  139. a9 poscil ampenv,knote-i4,gisine
  140. aout = ((a1+a2+a3+a4+a5+a6+a7+a8+a9)*kgate)*.05
  141. xout aout
  142. endop
  143. ;**************************************************
  144. opcode RissNoise,a,ik
  145. gitemp1 ftgen 0 ,0, 8192, 10, 1
  146. gitemp2 ftgen 0 ,0, 8192, 7, -1, 8192, 1
  147. gitemp3 ftgen 0 ,0, 8192, 7, 1, 4096, 1, 0, -1, 4096, -1
  148. gitemp4 ftgen 0 ,0, 8192, 21, 1
  149. iveloc,knote xin
  150. kenv linsegr 0,.01,iveloc, 1, iveloc,2,iveloc*.2,.25, 0
  151. aosc poscil kenv, 440, gitemp4
  152. kenv expon 2, 1, .01
  153. aosc2 butterbp aosc, knote, knote * kenv
  154. aosc2 butterbp aosc2, knote, knote * kenv
  155. aosc balance aosc2, aosc
  156. aosc = aosc * .7
  157. xout aosc
  158. endop
  159. ;**************************************************
  160. opcode RissOctave,a,kk
  161. gitemp2 ftgen 0 ,0, 128, 8, 0, .5, 0, 63.5, 1, 63.5, 0, .5 ,0
  162. gisine ftgen 0 ,0, 4096,10,1
  163. kamp,kfreq xin
  164. krate = .1
  165. iphsoff = (65/5)*.01
  166. ka1 = kamp
  167. iph1 = 0
  168. kamp1 poscil ka1,krate,gitemp2,iph1
  169. kfreq1 = kfreq
  170. asig1 poscil kamp1,kfreq1,gisine
  171. ka2 = kamp
  172. iph2 = iph1+iphsoff
  173. kamp2 poscil ka2,krate,gitemp2,iph2
  174. kfreq2 = kfreq*2
  175. asig2 poscil kamp2,kfreq2,gisine
  176. ka3 = kamp
  177. iph3 = iph2+iphsoff
  178. kamp3 poscil ka3,krate,gitemp2,iph3
  179. kfreq3 = kfreq*3
  180. asig3 poscil kamp3,kfreq3,gisine
  181. ka4 = kamp
  182. iph4 = iph3+iphsoff
  183. kamp4 poscil ka4,krate,gitemp2,iph4
  184. kfreq4 = kfreq*4
  185. asig4 poscil kamp4,kfreq4,gisine
  186. ka5 = kamp
  187. iph5 = iph4+iphsoff
  188. kamp5 poscil ka5,krate,gitemp2,iph5
  189. kfreq5 = kfreq*5
  190. asig5 poscil kamp5,kfreq5,gisine
  191. add = asig1+asig2+asig3+asig4+asig5
  192. ;kenv linseg 0,p3/2,1,p3/2,0
  193. aout = add
  194. kdeclick linsegr 0.01, 0.01, 1, 0.33*1, 0
  195. xout (aout*.5)*kdeclick
  196. endop
  197. ;**************************************************
  198. opcode RissRing,a,kk
  199. gitemp2 ftgen 0 ,0, 512, 7, 0, 43, 1, 171, 1, 84, -1, 171, -1, 43, 0
  200. gitemp3 ftgen 0 ,0, 512, 9, 1, 1, 0
  201. kveloc,knote xin
  202. kgate linenr kveloc/2, 0, .2, .01
  203. a1 expseg .2,2.3,1,1-.01,.001
  204. a1 poscil a1,knote,gitemp3
  205. a2 poscil 10000,1500,gitemp2
  206. aout = (a1*a2)*.001
  207. xout aout*kgate
  208. endop
  209. ;**************************************************
  210. instr 1
  211. ;kselect init 1
  212. ;channel
  213. ;kmodfreq chnget "mod"
  214. ksemi1 chnget "semi"
  215. kdetune chnget "detune"
  216. kspread chnget "spread"
  217. iatt chnget "att"
  218. idec chnget "dec"
  219. isus chnget "sus"
  220. irel chnget "rel"
  221. klfoamp chnget "vibamp"
  222. klforate chnget "vibrate"
  223. kselect chnget "select"
  224. ;midi
  225. imidinn notnum
  226. iamp ampmidi 1
  227. kbend pchbend 0,2 ;pitch bend
  228. ;lfo
  229. klfo lfo klfoamp,klforate,2
  230. kfreq1 = cpsmidinn(imidinn+kbend+int(ksemi1)) ;controllo midi
  231. kfreq2 = cpsmidinn(imidinn+kbend+kdetune+int(ksemi1))
  232. if kselect = 1 then
  233. ariss1 RissClar iamp,kfreq1+klfo
  234. ariss2 RissClar iamp,kfreq2+klfo
  235. elseif kselect = 2 then
  236. ariss1 RissDrum iamp,kfreq1+klfo
  237. ariss2 RissDrum iamp,kfreq2+klfo
  238. elseif kselect = 3 then
  239. ariss1 RissFlute iamp,kfreq1+klfo
  240. ariss2 RissFlute iamp,kfreq2+klfo
  241. elseif kselect = 4 then
  242. ariss1 RissHarmon iamp,kfreq1+klfo
  243. ariss2 RissHarmon iamp,kfreq2+klfo
  244. elseif kselect = 5 then
  245. ariss1 RissNoise iamp,kfreq1+klfo
  246. ariss2 RissNoise iamp,kfreq2+klfo
  247. elseif kselect = 6 then
  248. ariss1 RissOctave iamp,kfreq1+klfo
  249. ariss2 RissOctave iamp,kfreq2+klfo
  250. elseif kselect = 7 then
  251. ariss1 RissRing iamp,kfreq1+klfo
  252. ariss2 RissRing iamp,kfreq2+klfo
  253. endif
  254. ktrig changed kselect
  255. if ktrig = 1 then
  256. reinit play
  257. endif
  258. play:
  259. ;master
  260. aL clip ariss1,0,0dbfs
  261. aR clip ariss2,0,0dbfs
  262. aoutL = ((aL * kspread) + (aR * (1 - kspread))) *.5
  263. aoutR = ((aL * (1-kspread)) + (aR * kspread)) *.5
  264. kadsr mxadsr iatt,idec,isus,irel
  265. outs (aoutL*kadsr),(aoutR*kadsr)
  266. vincr ga1,aoutL*kadsr
  267. vincr ga2,aoutR*kadsr
  268. endin
  269. instr 10 ;reverb
  270. ktrig chnget "onoff"
  271. klevel chnget "level"
  272. ksize chnget "size"
  273. if ktrig = 1 then
  274. al,ar reverbsc ga1,ga2,ksize,16000,sr,0
  275. asum1 dcblock2 al
  276. asum2 dcblock2 ar
  277. else
  278. asum1 = 0
  279. asum2 = 0
  280. endif
  281. outs asum1*klevel,asum2*klevel
  282. clear ga1,ga2
  283. endin
  284. </CsInstruments>
  285. <CsScore>
  286. f1 0 16384 10 1
  287. ;f0 3600
  288. i1 0 36000
  289. i10 0 36000
  290. </CsScore>
  291. </CsoundSynthesizer>