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.

433 lines
15KB

  1. <Cabbage>
  2. form size(835, 445), caption("MIDI outbox"), pluginID("plu1")
  3. groupbox bounds(4, 4, 820, 400), colour(2, 2, 2), fontcolour("cornflowerblue"), text("Step Sequencer"), plant("8x16"){
  4. checkbox bounds(11, 25, 49, 30), channel("AA")
  5. checkbox bounds(11, 60, 49, 30), channel("BA")
  6. checkbox bounds(11, 95, 49, 30), channel("CA")
  7. checkbox bounds(11, 130, 49, 30), channel("DA")
  8. checkbox bounds(11, 165, 49, 30), channel("EA")
  9. checkbox bounds(11, 200, 49, 30), channel("FA")
  10. checkbox bounds(11, 235, 49, 30), channel("GA")
  11. checkbox bounds(11, 270, 49, 30), channel("HA")
  12. checkbox bounds(60, 25, 49, 30), channel("AB")
  13. checkbox bounds(60, 60, 49, 30), channel("BB")
  14. checkbox bounds(60, 95, 49, 30), channel("CB")
  15. checkbox bounds(60, 130, 49, 30), channel("DB")
  16. checkbox bounds(60, 165, 49, 30), channel("EB")
  17. checkbox bounds(60, 200, 49, 30), channel("FB")
  18. checkbox bounds(60, 235, 49, 30), channel("GB")
  19. checkbox bounds(60, 270, 49, 30), channel("HB")
  20. checkbox bounds(109, 25, 49, 30), channel("AC")
  21. checkbox bounds(109, 60, 49, 30), channel("BC")
  22. checkbox bounds(109, 95, 49, 30), channel("CC")
  23. checkbox bounds(109, 130, 49, 30), channel("DC")
  24. checkbox bounds(109, 165, 49, 30), channel("EC")
  25. checkbox bounds(109, 200, 49, 30), channel("FC")
  26. checkbox bounds(109, 235, 49, 30), channel("GC")
  27. checkbox bounds(109, 270, 49, 30), channel("HC")
  28. checkbox bounds(160, 25, 49, 30), channel("AD")
  29. checkbox bounds(160, 60, 49, 30), channel("BD")
  30. checkbox bounds(160, 95, 49, 30), channel("CD")
  31. checkbox bounds(160, 130, 49, 30), channel("DD")
  32. checkbox bounds(160, 165, 49, 30), channel("ED")
  33. checkbox bounds(160, 200, 49, 30), channel("FD")
  34. checkbox bounds(160, 235, 49, 30), channel("GD")
  35. checkbox bounds(160, 270, 49, 30), channel("HD")
  36. checkbox bounds(209, 25, 49, 30), channel("AE")
  37. checkbox bounds(209, 60, 49, 30), channel("BE")
  38. checkbox bounds(209, 95, 49, 30), channel("CE")
  39. checkbox bounds(209, 130, 49, 30), channel("DE")
  40. checkbox bounds(209, 165, 49, 30), channel("EE")
  41. checkbox bounds(209, 200, 49, 30), channel("FE")
  42. checkbox bounds(209, 235, 49, 30), channel("GE")
  43. checkbox bounds(209, 270, 49, 30), channel("HE")
  44. checkbox bounds(259, 25, 49, 30), channel("AF")
  45. checkbox bounds(259, 60, 49, 30), channel("BF")
  46. checkbox bounds(259, 95, 49, 30), channel("CF")
  47. checkbox bounds(259, 130, 49, 30), channel("DF")
  48. checkbox bounds(259, 165, 49, 30), channel("EF")
  49. checkbox bounds(259, 200, 49, 30), channel("FF")
  50. checkbox bounds(259, 235, 49, 30), channel("GF")
  51. checkbox bounds(259, 270, 49, 30), channel("HF")
  52. checkbox bounds(308, 25, 49, 30), channel("AG")
  53. checkbox bounds(308, 60, 49, 30), channel("BG")
  54. checkbox bounds(308, 95, 49, 30), channel("CG")
  55. checkbox bounds(308, 130, 49, 30), channel("DG")
  56. checkbox bounds(308, 165, 49, 30), channel("EG")
  57. checkbox bounds(308, 200, 49, 30), channel("FG")
  58. checkbox bounds(308, 235, 49, 30), channel("GG")
  59. checkbox bounds(308, 270, 49, 30), channel("HG")
  60. checkbox bounds(357, 25, 49, 30), channel("AH")
  61. checkbox bounds(357, 60, 49, 30), channel("BH")
  62. checkbox bounds(357, 95, 49, 30), channel("CH")
  63. checkbox bounds(357, 130, 49, 30), channel("DH")
  64. checkbox bounds(357, 165, 49, 30), channel("EH")
  65. checkbox bounds(357, 200, 49, 30), channel("FH")
  66. checkbox bounds(357, 235, 49, 30), channel("GH")
  67. checkbox bounds(357, 270, 49, 30), channel("HH")
  68. checkbox bounds(406, 25, 49, 30), channel("AI")
  69. checkbox bounds(406, 60, 49, 30), channel("BI")
  70. checkbox bounds(406, 95, 49, 30), channel("CI")
  71. checkbox bounds(406, 130, 49, 30), channel("DI")
  72. checkbox bounds(406, 165, 49, 30), channel("EI")
  73. checkbox bounds(406, 200, 49, 30), channel("FI")
  74. checkbox bounds(406, 235, 49, 30), channel("GI")
  75. checkbox bounds(406, 270, 49, 30), channel("HI")
  76. checkbox bounds(455, 25, 49, 30), channel("AJ")
  77. checkbox bounds(455, 60, 49, 30), channel("BJ")
  78. checkbox bounds(455, 95, 49, 30), channel("CJ")
  79. checkbox bounds(455, 130, 49, 30), channel("DJ")
  80. checkbox bounds(455, 165, 49, 30), channel("EJ")
  81. checkbox bounds(455, 200, 49, 30), channel("FJ")
  82. checkbox bounds(455, 235, 49, 30), channel("GJ")
  83. checkbox bounds(455, 270, 49, 30), channel("HJ")
  84. checkbox bounds(506, 25, 49, 30), channel("AK")
  85. checkbox bounds(506, 60, 49, 30), channel("BK")
  86. checkbox bounds(506, 95, 49, 30), channel("CK")
  87. checkbox bounds(506, 130, 49, 30), channel("DK")
  88. checkbox bounds(506, 165, 49, 30), channel("EK")
  89. checkbox bounds(506, 200, 49, 30), channel("FK")
  90. checkbox bounds(506, 235, 49, 30), channel("GK")
  91. checkbox bounds(506, 270, 49, 30), channel("HK")
  92. checkbox bounds(555, 25, 49, 30), channel("AL")
  93. checkbox bounds(555, 60, 49, 30), channel("BL")
  94. checkbox bounds(555, 95, 49, 30), channel("CL")
  95. checkbox bounds(555, 130, 49, 30), channel("DL")
  96. checkbox bounds(555, 165, 49, 30), channel("EL")
  97. checkbox bounds(555, 200, 49, 30), channel("FL")
  98. checkbox bounds(555, 235, 49, 30), channel("GL")
  99. checkbox bounds(555, 270, 49, 30), channel("HL")
  100. checkbox bounds(605, 25, 49, 30), channel("AM")
  101. checkbox bounds(605, 60, 49, 30), channel("BM")
  102. checkbox bounds(605, 95, 49, 30), channel("CM")
  103. checkbox bounds(605, 130, 49, 30), channel("DM")
  104. checkbox bounds(605, 165, 49, 30), channel("EM")
  105. checkbox bounds(605, 200, 49, 30), channel("FM")
  106. checkbox bounds(605, 235, 49, 30), channel("GM")
  107. checkbox bounds(605, 270, 49, 30), channel("HM")
  108. checkbox bounds(654, 25, 49, 30), channel("AN")
  109. checkbox bounds(654, 60, 49, 30), channel("BN")
  110. checkbox bounds(654, 95, 49, 30), channel("CN")
  111. checkbox bounds(654, 130, 49, 30), channel("DN")
  112. checkbox bounds(654, 165, 49, 30), channel("EN")
  113. checkbox bounds(654, 200, 49, 30), channel("FN")
  114. checkbox bounds(654, 235, 49, 30), channel("GN")
  115. checkbox bounds(654, 270, 49, 30), channel("HN")
  116. checkbox bounds(703, 25, 49, 30), channel("AO")
  117. checkbox bounds(703, 60, 49, 30), channel("BO")
  118. checkbox bounds(703, 95, 49, 30), channel("CO")
  119. checkbox bounds(703, 130, 49, 30), channel("DO")
  120. checkbox bounds(703, 165, 49, 30), channel("EO")
  121. checkbox bounds(703, 200, 49, 30), channel("FO")
  122. checkbox bounds(703, 235, 49, 30), channel("GO")
  123. checkbox bounds(703, 270, 49, 30), channel("HO")
  124. checkbox bounds(752, 25, 49, 30), channel("AP")
  125. checkbox bounds(752, 60, 49, 30), channel("BP")
  126. checkbox bounds(752, 95, 49, 30), channel("CP")
  127. checkbox bounds(752, 130, 49, 30), channel("DP")
  128. checkbox bounds(752, 165, 49, 30), channel("EP")
  129. checkbox bounds(752, 200, 49, 30), channel("FP")
  130. checkbox bounds(752, 235, 49, 30), channel("GP")
  131. checkbox bounds(752, 270, 49, 30), channel("HP")
  132. line bounds(4, 302, 800, 2) colour("lime")
  133. checkbox bounds(11, 310, 49, 30), channel("step1"), colour("yellow")
  134. checkbox bounds(60, 310, 49, 30), channel("step2"), colour("yellow")
  135. checkbox bounds(109, 310, 49, 30), channel("step3"), colour("yellow")
  136. checkbox bounds(160, 310, 49, 30), channel("step4"), colour("yellow")
  137. checkbox bounds(209, 310, 49, 30), channel("step5"), colour("yellow")
  138. checkbox bounds(259, 310, 49, 30), channel("step6"), colour("yellow")
  139. checkbox bounds(308, 310, 49, 30), channel("step7"), colour("yellow")
  140. checkbox bounds(357, 310, 49, 30), channel("step8"), colour("yellow")
  141. checkbox bounds(406, 310, 49, 30), channel("step9"), colour("yellow")
  142. checkbox bounds(455, 310, 49, 30), channel("step10"), colour("yellow")
  143. checkbox bounds(506, 310, 49, 30), channel("step11"), colour("yellow")
  144. checkbox bounds(555, 310, 49, 30), channel("step12"), colour("yellow")
  145. checkbox bounds(605, 310, 49, 30), channel("step13"), colour("yellow")
  146. checkbox bounds(654, 310, 49, 30), channel("step14"), colour("yellow")
  147. checkbox bounds(703, 310, 49, 30), channel("step15"), colour("yellow")
  148. checkbox bounds(752, 310, 49, 30), channel("step16"), colour("yellow")
  149. checkbox bounds(688, 355, 164, 30), colour("green"), fontcolour("white"), text("Enable"), channel("enable")
  150. hslider bounds(360, 350, 311, 40), text("BPM"), textbox(1), range(10, 260, 180, 1, 1), channel("bpm")
  151. hslider bounds(16, 350, 328, 40), text("Duration"), textbox(1), range(0.1, 10, 2), channel("duration")
  152. }
  153. </Cabbage>
  154. <CsoundSynthesizer>
  155. <CsOptions>
  156. -n -d -+rtmidi=NULL -m0d -M0 -Q0
  157. </CsOptions>
  158. <CsInstruments>
  159. sr = 44100
  160. ksmps = 64
  161. nchnls = 2
  162. 0dbfs=1
  163. ;freq 2 midi udo
  164. opcode F2M, i, i
  165. ifq xin
  166. inotenum = round(12 * (log(ifq/220)/log(2)) + 57)
  167. xout inotenum
  168. endop
  169. ;simple UDO to toggle the 16 check boxes
  170. opcode toggleCheckBoxes, k, kSSSSSSSSSSSSSSSS
  171. kindex, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16 xin
  172. kOn = 1
  173. kOff = 0
  174. ;turn off all check boxes first..
  175. chnset kOff, S1
  176. chnset kOff, S2
  177. chnset kOff, S3
  178. chnset kOff, S4
  179. chnset kOff, S5
  180. chnset kOff, S6
  181. chnset kOff, S7
  182. chnset kOff, S8
  183. chnset kOff, S9
  184. chnset kOff, S10
  185. chnset kOff, S11
  186. chnset kOff, S12
  187. chnset kOff, S13
  188. chnset kOff, S14
  189. chnset kOff, S15
  190. chnset kOff, S16
  191. if(kindex==0) then
  192. chnset kOn, S1
  193. elseif(kindex==1) then
  194. chnset kOn, S2
  195. elseif(kindex==2) then
  196. chnset kOn, S3
  197. elseif(kindex==3) then
  198. chnset kOn, S4
  199. elseif(kindex==4) then
  200. chnset kOn, S5
  201. elseif(kindex==5) then
  202. chnset kOn, S6
  203. elseif(kindex==6) then
  204. chnset kOn, S7
  205. elseif(kindex==7) then
  206. chnset kOn, S8
  207. elseif(kindex==8) then
  208. chnset kOn, S9
  209. elseif(kindex==9) then
  210. chnset kOn, S10
  211. elseif(kindex==10) then
  212. chnset kOn, S11
  213. elseif(kindex==11) then
  214. chnset kOn, S12
  215. elseif(kindex==12) then
  216. chnset kOn, S13
  217. elseif(kindex==13) then
  218. chnset kOn, S14
  219. elseif(kindex==14) then
  220. chnset kOn, S15
  221. elseif(kindex==15) then
  222. chnset kOn, S16
  223. endif
  224. xout kindex
  225. endop
  226. ;init tables to hold hits, for sampler tables see the score
  227. gif1 ftgen 100, 0, 16, 2, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1 , 0, 0, 0, 0
  228. gif2 ftgen 101, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  229. gif3 ftgen 102, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  230. gif4 ftgen 103, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  231. gif5 ftgen 104, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  232. gif6 ftgen 105, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  233. gif7 ftgen 106, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  234. gif8 ftgen 107, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  235. gif9 ftgen 108, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  236. gif10 ftgen 109, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  237. gif11 ftgen 110, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  238. gif12 ftgen 111, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  239. gif13 ftgen 112, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  240. gif14 ftgen 113, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  241. gif15 ftgen 114, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  242. gif16 ftgen 115, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  243. instr 1000
  244. kAA chnget "AA"
  245. kBA chnget "BA"
  246. kCA chnget "CA"
  247. kDA chnget "DA"
  248. kEA chnget "EA"
  249. kFA chnget "FA"
  250. kGA chnget "GA"
  251. kHA chnget "HA"
  252. kAB chnget "AB"
  253. kBB chnget "BB"
  254. kCB chnget "CB"
  255. kDB chnget "DB"
  256. kEB chnget "EB"
  257. kFB chnget "FB"
  258. kGB chnget "GB"
  259. kHB chnget "HB"
  260. kAC chnget "AC"
  261. kBC chnget "BC"
  262. kCC chnget "CC"
  263. kDC chnget "DC"
  264. kEC chnget "EC"
  265. kFC chnget "FC"
  266. kGC chnget "GC"
  267. kHC chnget "HC"
  268. kAD chnget "AD"
  269. kBD chnget "BD"
  270. kCD chnget "CD"
  271. kDD chnget "DD"
  272. kED chnget "ED"
  273. kFD chnget "FD"
  274. kGD chnget "GD"
  275. kHD chnget "HD"
  276. kAE chnget "AE"
  277. kBE chnget "BE"
  278. kCE chnget "CE"
  279. kDE chnget "DE"
  280. kEE chnget "EE"
  281. kFE chnget "FE"
  282. kGE chnget "GE"
  283. kHE chnget "HE"
  284. kAF chnget "AF"
  285. kBF chnget "BF"
  286. kCF chnget "CF"
  287. kDF chnget "DF"
  288. kEF chnget "EF"
  289. kFF chnget "FF"
  290. kGF chnget "GF"
  291. kHF chnget "HF"
  292. kAG chnget "AG"
  293. kBG chnget "BG"
  294. kCG chnget "CG"
  295. kDG chnget "DG"
  296. kEG chnget "EG"
  297. kFG chnget "FG"
  298. kGG chnget "GG"
  299. kHG chnget "HG"
  300. kAH chnget "AH"
  301. kBH chnget "BH"
  302. kCH chnget "CH"
  303. kDH chnget "DH"
  304. kEH chnget "EH"
  305. kFH chnget "FH"
  306. kGH chnget "GH"
  307. kHH chnget "HH"
  308. kAI chnget "AI"
  309. kBI chnget "BI"
  310. kCI chnget "CI"
  311. kDI chnget "DI"
  312. kEI chnget "EI"
  313. kFI chnget "FI"
  314. kGI chnget "GI"
  315. kHI chnget "HI"
  316. kAJ chnget "AJ"
  317. kBJ chnget "BJ"
  318. kCJ chnget "CJ"
  319. kDJ chnget "DJ"
  320. kEJ chnget "EJ"
  321. kFJ chnget "FJ"
  322. kGJ chnget "GJ"
  323. kHJ chnget "HJ"
  324. kAK chnget "AK"
  325. kBK chnget "BK"
  326. kCK chnget "CK"
  327. kDK chnget "DK"
  328. kEK chnget "EK"
  329. kFK chnget "FK"
  330. kGK chnget "GK"
  331. kHK chnget "HK"
  332. kAL chnget "AL"
  333. kBL chnget "BL"
  334. kCL chnget "CL"
  335. kDL chnget "DL"
  336. kEL chnget "EL"
  337. kFL chnget "FL"
  338. kGL chnget "GL"
  339. kHL chnget "HL"
  340. kAM chnget "AM"
  341. kBM chnget "BM"
  342. kCM chnget "CM"
  343. kDM chnget "DM"
  344. kEM chnget "EM"
  345. kFM chnget "FM"
  346. kGM chnget "GM"
  347. kHM chnget "HM"
  348. kAN chnget "AN"
  349. kBN chnget "BN"
  350. kCN chnget "CN"
  351. kDN chnget "DN"
  352. kEN chnget "EN"
  353. kFN chnget "FN"
  354. kGN chnget "GN"
  355. kHN chnget "HN"
  356. kAO chnget "AO"
  357. kBO chnget "BO"
  358. kCO chnget "CO"
  359. kDO chnget "DO"
  360. kEO chnget "EO"
  361. kFO chnget "FO"
  362. kGO chnget "GO"
  363. kHO chnget "HO"
  364. kAP chnget "AP"
  365. kBP chnget "BP"
  366. kCP chnget "CP"
  367. kDP chnget "DP"
  368. kEP chnget "EP"
  369. kFP chnget "FP"
  370. kGP chnget "GP"
  371. kHP chnget "HP"
  372. event "f", 100, 0, 16, 2, kAA, kAB, kAC, kAD, kAE, kAF, kAG, kAH, kAI, kAJ, kAK, kAL, kAM, kAN, kAO, kAP
  373. event "f", 101, 0, 16, 2, kBA, kBB, kBC, kBD, kBE, kBF, kBG, kBH, kBI, kBJ, kBK, kBL, kBM, kBN, kBO, kBP
  374. event "f", 102, 0, 16, 2, kCA, kCB, kCC, kCD, kCE, kCF, kCG, kCH, kCI, kCJ, kCK, kCL, kCM, kCN, kCO, kCP
  375. event "f", 103, 0, 16, 2, kDA, kDB, kDC, kDD, kDE, kDF, kDG, kDH, kDI, kDJ, kDK, kDL, kDM, kDN, kDO, kDP
  376. event "f", 104, 0, 16, 2, kEA, kEB, kEC, kED, kEE, kEF, kEG, kEH, kEI, kEJ, kEK, kEL, kEM, kEN, kEO, kEP
  377. event "f", 105, 0, 16, 2, kFA, kFB, kFC, kFD, kFE, kFF, kFG, kFH, kFI, kFJ, kFK, kFL, kFM, kFN, kFO, kFP
  378. event "f", 106, 0, 16, 2, kGA, kGB, kGC, kGD, kGE, kGF, kGG, kGH, kGI, kGJ, kGK, kGL, kGM, kGN, kGO, kGP
  379. event "f", 107, 0, 16, 2, kHA, kHB, kHC, kHD, kHE, kHF, kHG, kHH, kHI, kHJ, kHK, kHL, kHM, kHN, kHO, kHP
  380. endin
  381. instr 2000
  382. kGO chnget "enable"
  383. if(kGO==1) then
  384. iNumTables = 8
  385. kIndex, kIncr, kNoteTable init 0
  386. ktempo chnget "bpm"
  387. kDuration chnget "duration"
  388. kTrig metro ktempo/60 ;trig notes every 1/5 of a second
  389. if(kTrig==1) then
  390. Main_Loop:
  391. k1 tablekt kIncr, kIndex+100
  392. event "i", 1, 0, kDuration, k1, kIndex
  393. loop_lt kIndex, 1, iNumTables, Main_Loop
  394. kDummy toggleCheckBoxes, kIncr, "step1", "step2", "step3", "step4", "step5", "step6", "step7", "step8", "step9", "step10", "step11", "step12", "step13", "step14", "step15", "step16"
  395. kIncr = (kIncr>14 ? 0 : kIncr+1)
  396. kIndex=0
  397. endif
  398. endif
  399. endin
  400. instr 1
  401. if(p4!=0)then
  402. iNote tab_i p5, 1
  403. iMIDINote F2M cpspch(iNote+8)
  404. noteondur 1, iMIDINote, 20, p3
  405. ;midiout 176, 1, 1, 1
  406. endif
  407. endin
  408. </CsInstruments>
  409. <CsScore>
  410. f1 0 8 -2 1 .11 .09 .07 .05 .04 .02 .00
  411. i1000 1 1000
  412. i2000 1 1000
  413. </CsScore>
  414. </CsoundSynthesizer>