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.

983 lines
47KB

  1. Saving patterns saves tables as text file to the pwd. Each save to a new pattern number creates a new text file on disk for that pattern.
  2. Saving snapshots only saves visible widgets.
  3. <Cabbage>
  4. form caption("TR-808") size(800, 400), colour("SlateGrey"), pluginID("T808")
  5. snapshot bounds( 10,373,200, 20), preset("TR-808"), master(1), items("Preset 1", "Preset 2", "Preset 3", "Preset 4", "Preset 5", "Preset 6", "Preset 7", "Preset 8", "Preset 9", "Preset 10")
  6. label bounds(220,375,250, 14), text("Author: Iain McCurdy |2012|"), colour("white")
  7. groupbox bounds( 0, 0, 50, 225), text("B.Drum"),FontColour("black"), colour(192,192,192){
  8. checkbox bounds(10, 24, 5, 5), colour("yellow"), channel("Act1"), value(0), shape("ellipse")
  9. rslider bounds( 5, 25, 45, 45), text("Level"), FontColour("black"), channel("level1"), range(0, 2, 1)
  10. rslider bounds( 5, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune1"), range(-2, 2, 0)
  11. rslider bounds( 5,125, 45, 45), text("Decay"), FontColour("black"), channel("dur1"), range(0.25, 2, 1, 0.8)
  12. rslider bounds( 5,175, 45, 45), text("Pan"), FontColour("black"),channel("pan1"), range(0, 1, 0.5)
  13. }
  14. groupbox bounds(50, 0, 50, 225), text("Snare"), FontColour("black"),colour(202,202,202){
  15. checkbox bounds(60, 24, 5, 5), colour("yellow"), channel("Act2"), value(0), shape("ellipse")
  16. rslider bounds(55, 25, 45, 45), text("Level"), FontColour("black"), channel("level2"), range(0, 2, 1)
  17. rslider bounds(55, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune2"), range(-2, 2, 0)
  18. rslider bounds(55,125, 45, 45), text("Decay"), FontColour("black"), channel("dur2"), range(0.25, 2, 1, 0.8)
  19. rslider bounds(55,175, 45, 45), text("Pan"), FontColour("black"),channel("pan2"), range(0, 1, 0.5)
  20. }
  21. groupbox bounds(100, 0, 50, 225), text("Open HH"), FontColour("black"), colour(212,212,212){
  22. checkbox bounds(110, 24, 5, 5), colour("yellow"), channel("Act3"), value(0), shape("ellipse")
  23. rslider bounds(105, 25, 45, 45), text("Level"), FontColour("black"), channel("level3"), range(0, 2, 1)
  24. rslider bounds(105, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune3"), range(-2, 2, 0)
  25. rslider bounds(105,125, 45, 45), text("Decay"), FontColour("black"),channel("dur3"), range(0.25, 2, 1, 0.8)
  26. rslider bounds(105,175, 45, 45), text("Pan"), FontColour("black"),channel("pan3"), range(0, 1, 0.5)
  27. }
  28. groupbox bounds(150, 0, 50, 225), text("Cl. HH"),FontColour("black"),colour(222,222,222){
  29. checkbox bounds(160, 24, 5, 5), colour("yellow"), channel("Act4"), value(0), shape("ellipse")
  30. rslider bounds(155, 25, 45, 45), text("Level"), FontColour("black"), channel("level4"), range(0, 2, 1)
  31. rslider bounds(155, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune4"), range(-2, 2, 0)
  32. rslider bounds(155,125, 45, 45), text("Decay"), FontColour("black"),channel("dur4"), range(0.25, 2, 1, 0.8)
  33. rslider bounds(155,175, 45, 45), text("Pan"), FontColour("black"),channel("pan4"), range(0, 1, 0.5)
  34. }
  35. groupbox bounds(200, 0, 50, 225), text("Hi Tom"), FontColour("black"),colour(232,232,232){
  36. checkbox bounds(210, 24, 5, 5), colour("yellow"), channel("Act5"), value(0), shape("ellipse")
  37. rslider bounds(205, 25, 45, 45), text("Level"), FontColour("black"), channel("level5"), range(0, 2, 1)
  38. rslider bounds(205, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune5"), range(-2, 2, 0)
  39. rslider bounds(205,125, 45, 45), text("Decay"), FontColour("black"),channel("dur5"), range(0.25, 2, 1, 0.8)
  40. rslider bounds(205,175, 45, 45), text("Pan"), FontColour("black"),channel("pan5"), range(0, 1, 0.5)
  41. }
  42. groupbox bounds(250, 0, 50, 225), text("Mid Tom"),FontColour("black"), colour(242,242,242){
  43. checkbox bounds(260, 24, 5, 5), colour("yellow"), channel("Act6"), value(0), shape("ellipse")
  44. rslider bounds(255, 25, 45, 45), text("Level"), FontColour("black"), channel("level6"), range(0, 2, 1)
  45. rslider bounds(255, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune6"), range(-2, 2, 0)
  46. rslider bounds(255,125, 45, 45), text("Decay"), FontColour("black"),channel("dur6"), range(0.25, 2, 1, 0.8)
  47. rslider bounds(255,175, 45, 45), text("Pan"), FontColour("black"),channel("pan6"), range(0, 1, 0.5)
  48. }
  49. groupbox bounds(300, 0, 50, 225), text("Low Tom"),FontColour("black"), colour(232,232,232){
  50. checkbox bounds(310, 24, 5, 5), colour("yellow"), channel("Act7"), value(0), shape("ellipse")
  51. rslider bounds(305, 25, 45, 45), text("Level"), FontColour("black"), channel("level7"), range(0, 2, 1)
  52. rslider bounds(305, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune7"), range(-2, 2, 0)
  53. rslider bounds(305,125, 45, 45), text("Decay"), FontColour("black"),channel("dur7"), range(0.25, 2, 1, 0.8)
  54. rslider bounds(305,175, 45, 45), text("Pan"), FontColour("black"),channel("pan7"), range(0, 1, 0.5)
  55. }
  56. groupbox bounds(350, 0, 50, 225), text("Cymbal"), FontColour("black"),colour(222,222,222){
  57. checkbox bounds(360, 24, 5, 5), colour("yellow"), channel("Act8"), value(0), shape("ellipse")
  58. rslider bounds(355, 25, 45, 45), text("Level"), FontColour("black"), channel("level8"), range(0, 2, 1)
  59. rslider bounds(355, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune8"), range(-2, 2, 0)
  60. rslider bounds(355,125, 45, 45), text("Decay"), FontColour("black"),channel("dur8"), range(0.25, 2, 1, 0.8)
  61. rslider bounds(355,175, 45, 45), text("Pan"), FontColour("black"),channel("pan8"), range(0, 1, 0.5)
  62. }
  63. groupbox bounds(400, 0, 50, 225), text("Rim Shot"),FontColour("black"), colour(212,212,212){
  64. checkbox bounds(410, 24, 5, 5), colour("yellow"), channel("Act9"), value(0), shape("ellipse")
  65. rslider bounds(405, 25, 45, 45), text("Level"), FontColour("black"), channel("level9"), range(0, 2, 1)
  66. rslider bounds(405, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune9"), range(-2, 2, 0)
  67. rslider bounds(405,125, 45, 45), text("Decay"), FontColour("black"),channel("dur9"), range(0.25, 2, 1, 0.8)
  68. rslider bounds(405,175, 45, 45), text("Pan"), FontColour("black"),channel("pan9"), range(0, 1, 0.5)
  69. }
  70. groupbox bounds(450, 0, 50, 225), text("Claves"), FontColour("black"),colour(202,202,202){
  71. checkbox bounds(460, 24, 5, 5), colour("yellow"), channel("Act10"), value(0), shape("ellipse")
  72. rslider bounds(455, 25, 45, 45), text("Level"), FontColour("black"), channel("level10"), range(0, 2, 1)
  73. rslider bounds(455, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune10"), range(-2, 2, 0)
  74. rslider bounds(455,125, 45, 45), text("Decay"), FontColour("black"),channel("dur10"), range(0.25, 2, 1, 0.8)
  75. rslider bounds(455,175, 45, 45), text("Pan"), FontColour("black"),channel("pan10"), range(0, 1, 0.5)
  76. }
  77. groupbox bounds(500, 0, 50, 225), text("Cowbell"),FontColour("black"), colour(192,192,192){
  78. checkbox bounds(510, 24, 5, 5), colour("yellow"), channel("Act11"), value(0), shape("ellipse")
  79. rslider bounds(505, 25, 45, 45), text("Level"), FontColour("black"), channel("level11"), range(0, 2, 1)
  80. rslider bounds(505, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune11"), range(-2, 2, 0)
  81. rslider bounds(505,125, 45, 45), text("Decay"), FontColour("black"),channel("dur11"), range(0.25, 2, 1, 0.8)
  82. rslider bounds(505,175, 45, 45), text("Pan"), FontColour("black"),channel("pan11"), range(0, 1, 0.5)
  83. }
  84. groupbox bounds(550, 0, 50, 225), text("Clap"), FontColour("black"),colour(182,182,182){
  85. checkbox bounds(560, 24, 5, 5), colour("yellow"), channel("Act12"), value(0), shape("ellipse")
  86. rslider bounds(555, 25, 45, 45), text("Level"),FontColour("black"), channel("level12"), range(0, 2, 1)
  87. rslider bounds(555, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune12"), range(-2, 2, 0)
  88. rslider bounds(555,125, 45, 45), text("Decay"), FontColour("black"), channel("dur12"), range(0.25, 2, 1, 0.8)
  89. rslider bounds(555,175, 45, 45), text("Pan"), FontColour("black"),channel("pan12"), range(0, 1, 0.5)
  90. }
  91. groupbox bounds(600, 0, 50, 225), text("Maraca"),FontColour("black"), colour(172,172,172){
  92. checkbox bounds(610, 24, 5, 5), colour("yellow"), channel("Act13"), value(0), shape("ellipse")
  93. rslider bounds(605, 25, 45, 45), text("Level"), FontColour("black"), channel("level13"), range(0, 2, 1)
  94. rslider bounds(605, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune13"), range(-2, 2, 0)
  95. rslider bounds(605,125, 45, 45), text("Decay"), FontColour("black"), channel("dur13"), range(0.25, 2, 1, 0.8)
  96. rslider bounds(605,175, 45, 45), text("Pan"), FontColour("black"),channel("pan13"), range(0, 1, 0.5)
  97. }
  98. groupbox bounds(650, 0, 50, 225), text("Hi Conga"),FontColour("black"), colour(162,162,162){
  99. checkbox bounds(660, 24, 5, 5), colour("yellow"), channel("Act14"), value(0), shape("ellipse")
  100. rslider bounds(655, 25, 45, 45), text("Level"), FontColour("black"), channel("level14"), range(0, 2, 1)
  101. rslider bounds(655, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune14"), range(-2, 2, 0)
  102. rslider bounds(655,125, 45, 45), text("Decay"), FontColour("black"),channel("dur14"), range(0.25, 2, 1, 0.8)
  103. rslider bounds(655,175, 45, 45), text("Pan"), FontColour("black"),channel("pan14"), range(0, 1, 0.5)
  104. }
  105. groupbox bounds(700, 0, 50, 225), text("Md Cnga"),FontColour("black"), colour(152,152,152){
  106. checkbox bounds(710, 24, 5, 5), colour("yellow"), channel("Act15"), value(0), shape("ellipse")
  107. rslider bounds(705, 25, 45, 45), text("Level"), FontColour("black"), channel("level15"), range(0, 2, 1)
  108. rslider bounds(705, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune15"), range(-2, 2, 0)
  109. rslider bounds(705,125, 45, 45), text("Decay"), FontColour("black"),channel("dur15"), range(0.25, 2, 1, 0.8)
  110. rslider bounds(705,175, 45, 45), text("Pan"), FontColour("black"),channel("pan15"), range(0, 1, 0.5)
  111. }
  112. groupbox bounds(750, 0, 50, 225), text("Lo Cnga"),FontColour("black"), colour(142,142,142){
  113. checkbox bounds(760, 24, 5, 5), colour("yellow"), channel("Act16"), value(0), shape("ellipse")
  114. rslider bounds(755, 25, 45, 45), text("Level"), FontColour("black"), channel("level16"), range(0, 2, 1)
  115. rslider bounds(755, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune16"), range(-2, 2, 0)
  116. rslider bounds(755,125, 45, 45), text("Decay"), FontColour("black"),channel("dur16"), range(0.25, 2, 1, 0.8)
  117. rslider bounds(755,175, 45, 45), text("Pan"), FontColour("black"),channel("pan16"), range(0, 1, 0.5)
  118. }
  119. keyboard pos(0, 225), size(800, 80)
  120. button bounds( 10,315, 80, 25), text("Stop", "Run"), channel("OnOff"), value(0)
  121. combobox bounds( 10,345, 80, 15), channel("sound"), value(1), text("Bass Drum","Snare","Open HH","Cl. HH","Hi Tom","Mid Tom","Lo Tom","Cymbal","Rimshot","Claves","Cowbell","Clap","Maraca","Hi Conga","Mid Conga","Lo Conga")
  122. button bounds(462,315, 80, 20), text("Clear","Clear"), channel("clear"), value(0)
  123. button bounds(462,338, 38, 20), text("Save","Save"), channel("save"), value(0)
  124. button bounds(502,338, 38, 20), text("Load","Load"), channel("load"), value(0)
  125. label bounds(544,328, 48, 10), text("PATTERN"), colour("black"), FontColour("black")
  126. combobox bounds(544,338, 48, 20), channel("pattern"), value(1), text("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16")
  127. rslider bounds(593,310, 60, 60), text("Accent"), FontColour("black"), channel("AccLev"), range(0, 1, 0.4)
  128. rslider bounds(643,310, 60, 60), text("Tempo"), FontColour("black"), channel("tempo"), range(10, 500, 70, 1, 1)
  129. rslider bounds(693,310, 60, 60), text("Swing"), FontColour("black"), channel("swing"), range(0, 0.5, 0)
  130. rslider bounds(743,310, 60, 60), text("Level"), FontColour("black"), channel("level"), range(0, 2, 1)
  131. label bounds(143,312, 12, 10), text("1"), colour("black"), FontColour("black")
  132. label bounds(163,312, 12, 10), text("2"), colour("black"), FontColour("black")
  133. label bounds(183,312, 12, 10), text("3"), colour("black"), FontColour("black")
  134. label bounds(203,312, 12, 10), text("4"), colour("black"), FontColour("black")
  135. label bounds(223,312, 12, 10), text("5"), colour("black"), FontColour("black")
  136. label bounds(243,312, 12, 10), text("6"), colour("black"), FontColour("black")
  137. label bounds(263,312, 12, 10), text("7"), colour("black"), FontColour("black")
  138. label bounds(283,312, 12, 10), text("8"), colour("black"), FontColour("black")
  139. label bounds(303,312, 12, 10), text("9"), colour("black"), FontColour("black")
  140. label bounds(320,312, 12, 10), text("10"), colour("black"), FontColour("black")
  141. label bounds(340,312, 12, 10), text("11"), colour("black"), FontColour("black")
  142. label bounds(360,312, 12, 10), text("12"), colour("black"), FontColour("black")
  143. label bounds(380,312, 12, 10), text("13"), colour("black"), FontColour("black")
  144. label bounds(400,312, 12, 10), text("14"), colour("black"), FontColour("black")
  145. label bounds(420,312, 12, 10), text("15"), colour("black"), FontColour("black")
  146. label bounds(440,312, 12, 10), text("16"), colour("black"), FontColour("black")
  147. label bounds(122, 325, 30, 12), text("On"), colour("black"), FontColour("black")
  148. checkbox bounds(140, 325, 12, 12), channel("On1"), value(0)
  149. checkbox bounds(160, 325, 12, 12), channel("On2"), value(0)
  150. checkbox bounds(180, 325, 12, 12), channel("On3"), value(0)
  151. checkbox bounds(200, 325, 12, 12), channel("On4"), value(0)
  152. checkbox bounds(220, 325, 12, 12), channel("On5"), value(0)
  153. checkbox bounds(240, 325, 12, 12), channel("On6"), value(0)
  154. checkbox bounds(260, 325, 12, 12), channel("On7"), value(0)
  155. checkbox bounds(280, 325, 12, 12), channel("On8"), value(0)
  156. checkbox bounds(300, 325, 12, 12), channel("On9"), value(0)
  157. checkbox bounds(320, 325, 12, 12), channel("On10"), value(0)
  158. checkbox bounds(340, 325, 12, 12), channel("On11"), value(0)
  159. checkbox bounds(360, 325, 12, 12), channel("On12"), value(0)
  160. checkbox bounds(380, 325, 12, 12), channel("On13"), value(0)
  161. checkbox bounds(400, 325, 12, 12), channel("On14"), value(0)
  162. checkbox bounds(420, 325, 12, 12), channel("On15"), value(0)
  163. checkbox bounds(440, 325, 12, 12), channel("On16"), value(0)
  164. label bounds( 98, 345, 40, 12), text("Accent"), colour("black"), FontColour("black")
  165. checkbox bounds(140, 345, 12, 12), channel("Acc1"), value(0), colour("yellow")
  166. checkbox bounds(160, 345, 12, 12), channel("Acc2"), value(0), colour("yellow")
  167. checkbox bounds(180, 345, 12, 12), channel("Acc3"), value(0), colour("yellow")
  168. checkbox bounds(200, 345, 12, 12), channel("Acc4"), value(0), colour("yellow")
  169. checkbox bounds(220, 345, 12, 12), channel("Acc5"), value(0), colour("yellow")
  170. checkbox bounds(240, 345, 12, 12), channel("Acc6"), value(0), colour("yellow")
  171. checkbox bounds(260, 345, 12, 12), channel("Acc7"), value(0), colour("yellow")
  172. checkbox bounds(280, 345, 12, 12), channel("Acc8"), value(0), colour("yellow")
  173. checkbox bounds(300, 345, 12, 12), channel("Acc9"), value(0), colour("yellow")
  174. checkbox bounds(320, 345, 12, 12), channel("Acc10"), value(0), colour("yellow")
  175. checkbox bounds(340, 345, 12, 12), channel("Acc11"), value(0), colour("yellow")
  176. checkbox bounds(360, 345, 12, 12), channel("Acc12"), value(0), colour("yellow")
  177. checkbox bounds(380, 345, 12, 12), channel("Acc13"), value(0), colour("yellow")
  178. checkbox bounds(400, 345, 12, 12), channel("Acc14"), value(0), colour("yellow")
  179. checkbox bounds(420, 345, 12, 12), channel("Acc15"), value(0), colour("yellow")
  180. checkbox bounds(440, 345, 12, 12), channel("Acc16"), value(0), colour("yellow")
  181. </Cabbage>
  182. <CsoundSynthesizer>
  183. <CsOptions>
  184. -n -+rtmidi=null -M0 -dm0
  185. </CsOptions>
  186. <CsInstruments>
  187. sr = 44100 ;SAMPLE RATE
  188. ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE
  189. nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO)
  190. 0dbfs = 1
  191. massign 0,2
  192. ;Author: Iain McCurdy (2012)
  193. gisine ftgen 0,0,1024,10,1 ;A SINE WAVE
  194. gicos ftgen 0,0,65536,9,1,1,90 ;A COSINE WAVE
  195. gkoff init 0
  196. ; 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16
  197. giOn1 ftgen 0,0,16,2, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0 ;BD
  198. giOn2 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0 ;SN
  199. giOn3 ftgen 0,0,16,2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 ;HHO
  200. giOn4 ftgen 0,0,16,2, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1 ;HHCl
  201. giOn5 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Hi Tom
  202. giOn6 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Mid Tom
  203. giOn7 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ;Lo Tom
  204. giOn8 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 ;Cym
  205. giOn9 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Rimshot
  206. giOn10 ftgen 0,0,16,2, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0 ;Claves
  207. giOn11 ftgen 0,0,16,2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1 ;Cowbell
  208. giOn12 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ;Clap
  209. giOn13 ftgen 0,0,16,2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ;Maraca
  210. giOn14 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 ;Hi Conga
  211. giOn15 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 ;Mid Conga
  212. giOn16 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 ;Lo Conga
  213. giAcc1 ftgen 0,0,16,2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;BD
  214. giAcc2 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;SN
  215. giAcc3 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;HHO
  216. giAcc4 ftgen 0,0,16,2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ;HHCl
  217. giAcc5 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Hi Tom
  218. giAcc6 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Mid Tom
  219. giAcc7 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Lo Tom
  220. giAcc8 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ;Cym
  221. giAcc9 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Rimshot
  222. giAcc10 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Claves
  223. giAcc11 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Cowbell
  224. giAcc12 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Clap
  225. giAcc13 ftgen 0,0,16,2, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ;Maraca
  226. giAcc14 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ;Hi Conga
  227. giAcc15 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ;Mid Conga
  228. giAcc16 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 ;Lo Conga
  229. giblank ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;blank
  230. instr 1 ;READ IN WIDGETS, SCAN MIDI NOTES PLAYED AND RELAY TO DRUM SOUNDS
  231. ;READ IN WIDGETS
  232. gklevel1 chnget "level1"
  233. gklevel2 chnget "level2"
  234. gklevel3 chnget "level3"
  235. gklevel4 chnget "level4"
  236. gklevel5 chnget "level5"
  237. gklevel6 chnget "level6"
  238. gklevel7 chnget "level7"
  239. gklevel8 chnget "level8"
  240. gklevel9 chnget "level9"
  241. gklevel10 chnget "level10"
  242. gklevel11 chnget "level11"
  243. gklevel12 chnget "level12"
  244. gklevel13 chnget "level13"
  245. gklevel14 chnget "level14"
  246. gklevel15 chnget "level15"
  247. gklevel16 chnget "level16"
  248. gktune1 chnget "tune1"
  249. gktune2 chnget "tune2"
  250. gktune3 chnget "tune3"
  251. gktune4 chnget "tune4"
  252. gktune5 chnget "tune5"
  253. gktune6 chnget "tune6"
  254. gktune7 chnget "tune7"
  255. gktune8 chnget "tune8"
  256. gktune9 chnget "tune9"
  257. gktune10 chnget "tune10"
  258. gktune11 chnget "tune11"
  259. gktune12 chnget "tune12"
  260. gktune13 chnget "tune13"
  261. gktune14 chnget "tune14"
  262. gktune15 chnget "tune15"
  263. gktune16 chnget "tune16"
  264. gkdur1 chnget "dur1"
  265. gkdur2 chnget "dur2"
  266. gkdur3 chnget "dur3"
  267. gkdur4 chnget "dur4"
  268. gkdur5 chnget "dur5"
  269. gkdur6 chnget "dur6"
  270. gkdur7 chnget "dur7"
  271. gkdur8 chnget "dur8"
  272. gkdur9 chnget "dur9"
  273. gkdur10 chnget "dur10"
  274. gkdur11 chnget "dur11"
  275. gkdur12 chnget "dur12"
  276. gkdur13 chnget "dur13"
  277. gkdur14 chnget "dur14"
  278. gkdur15 chnget "dur15"
  279. gkdur16 chnget "dur16"
  280. gkpan1 chnget "pan1"
  281. gkpan2 chnget "pan2"
  282. gkpan3 chnget "pan3"
  283. gkpan4 chnget "pan4"
  284. gkpan5 chnget "pan5"
  285. gkpan6 chnget "pan6"
  286. gkpan7 chnget "pan7"
  287. gkpan8 chnget "pan8"
  288. gkpan9 chnget "pan9"
  289. gkpan10 chnget "pan10"
  290. gkpan11 chnget "pan11"
  291. gkpan12 chnget "pan12"
  292. gkpan13 chnget "pan13"
  293. gkpan14 chnget "pan14"
  294. gkpan15 chnget "pan15"
  295. gkpan16 chnget "pan16"
  296. gkOnOff chnget "OnOff"
  297. gksound chnget "sound"
  298. gkOn1 chnget "On1"
  299. gkOn2 chnget "On2"
  300. gkOn3 chnget "On3"
  301. gkOn4 chnget "On4"
  302. gkOn5 chnget "On5"
  303. gkOn6 chnget "On6"
  304. gkOn7 chnget "On7"
  305. gkOn8 chnget "On8"
  306. gkOn9 chnget "On9"
  307. gkOn10 chnget "On10"
  308. gkOn11 chnget "On11"
  309. gkOn12 chnget "On12"
  310. gkOn13 chnget "On13"
  311. gkOn14 chnget "On14"
  312. gkOn15 chnget "On15"
  313. gkOn16 chnget "On16"
  314. gkAcc1 chnget "Acc1"
  315. gkAcc2 chnget "Acc2"
  316. gkAcc3 chnget "Acc3"
  317. gkAcc4 chnget "Acc4"
  318. gkAcc5 chnget "Acc5"
  319. gkAcc6 chnget "Acc6"
  320. gkAcc7 chnget "Acc7"
  321. gkAcc8 chnget "Acc8"
  322. gkAcc9 chnget "Acc9"
  323. gkAcc10 chnget "Acc10"
  324. gkAcc11 chnget "Acc11"
  325. gkAcc12 chnget "Acc12"
  326. gkAcc13 chnget "Acc13"
  327. gkAcc14 chnget "Acc14"
  328. gkAcc15 chnget "Acc15"
  329. gkAcc16 chnget "Acc16"
  330. gkclear chnget "clear"
  331. gksave chnget "save"
  332. gkload chnget "load"
  333. gkpattern chnget "pattern"
  334. gkAccLev chnget "AccLev"
  335. gktempo chnget "tempo"
  336. gkswing chnget "swing"
  337. gklevel chnget "level"
  338. ;START/STOP SEQUENCER
  339. ktrig changed gkOnOff ;if Run/Stop button is changed...
  340. if ktrig==1 then ;
  341. if gkOnOff==1 then ;...if Run/Stop has been changed to 'Run'...
  342. event "i",3,0,-1 ;...start instr 3 playing a held note
  343. else ;otherwise...
  344. event "i",-3,0,0 ;...stop instr 3 playing
  345. endif
  346. endif
  347. ;CLEAR SEQUENCES FOR ALL DRUM SOUNDS
  348. ktrig changed gkclear
  349. if ktrig==1 then
  350. tablecopy giOn1, giblank ;copy blank table over existing sequence for voice 1
  351. tablecopy giOn2, giblank ;repeat for every other voice
  352. tablecopy giOn3, giblank
  353. tablecopy giOn4, giblank
  354. tablecopy giOn5, giblank
  355. tablecopy giOn6, giblank
  356. tablecopy giOn7, giblank
  357. tablecopy giOn8, giblank
  358. tablecopy giOn9, giblank
  359. tablecopy giOn10, giblank
  360. tablecopy giOn11, giblank
  361. tablecopy giOn12, giblank
  362. tablecopy giOn13, giblank
  363. tablecopy giOn14, giblank
  364. tablecopy giOn15, giblank
  365. tablecopy giOn16, giblank
  366. tablecopy giAcc1, giblank
  367. tablecopy giAcc2, giblank
  368. tablecopy giAcc3, giblank
  369. tablecopy giAcc4, giblank
  370. tablecopy giAcc5, giblank
  371. tablecopy giAcc6, giblank
  372. tablecopy giAcc7, giblank
  373. tablecopy giAcc8, giblank
  374. tablecopy giAcc9, giblank
  375. tablecopy giAcc10, giblank
  376. tablecopy giAcc11, giblank
  377. tablecopy giAcc12, giblank
  378. tablecopy giAcc13, giblank
  379. tablecopy giAcc14, giblank
  380. tablecopy giAcc15, giblank
  381. tablecopy giAcc16, giblank
  382. endif
  383. ;STORE SEQUENCE TABLES
  384. ktrig changed gksave ;if save button is toggled...
  385. if ktrig==1 then
  386. reinit SAVE_TABLES ;begin a reinitialisation pass from label (ftsave operates only at i-time)
  387. endif
  388. SAVE_TABLES:
  389. SFileName sprintf "TR-808_pattern.%d.txt", i(gkpattern) ;create the file name (string variable) that will be used to name the text file that will contain the pattern data
  390. ftsave SFileName, 1, giOn1, giOn2, giOn3, giOn4, giOn5, giOn6, giOn7, giOn8, giOn9, giOn10, giOn11, giOn12, giOn13, giOn14, giOn15, giOn16, giAcc1, giAcc2, giAcc3, giAcc4, giAcc5, giAcc6, giAcc7, giAcc8, giAcc9, giAcc10, giAcc11, giAcc12, giAcc13, giAcc14, giAcc15, giAcc16 ;save all tables (on information and accents) to a text file in the pwd
  391. rireturn
  392. ;LOAD SEQUENCE TABLES
  393. ktrig changed gkload ;if load button is toggled...
  394. if ktrig==1 then
  395. reinit LOAD_TABLES ;begin a reinitialisation pass from label (ftload operates only at i-time)
  396. endif
  397. LOAD_TABLES:
  398. SFileName sprintf "TR-808_pattern.%d.txt", i(gkpattern) ;create the file name (string variable) that will be the name of the file from which data will be retrieved
  399. ftload SFileName, 1, giOn1, giOn2, giOn3, giOn4, giOn5, giOn6, giOn7, giOn8, giOn9, giOn10, giOn11, giOn12, giOn13, giOn14, giOn15, giOn16, giAcc1, giAcc2, giAcc3, giAcc4, giAcc5, giAcc6, giAcc7, giAcc8, giAcc9, giAcc10, giAcc11, giAcc12, giAcc13, giAcc14, giAcc15, giAcc16 ;load all tables (on information and accents) to a text file in the pwd
  400. rireturn
  401. ;UPDATE SEQUENCE DISPLAY
  402. ktrig changed gksound,gkclear,gkload
  403. if ktrig==1 then
  404. #define UPDATE_SEQUENCE(N)
  405. #
  406. kval tablekt $N-1,giOn1+gksound-1
  407. chnset kval,"On$N"
  408. kval tablekt $N-1,giAcc1+gksound-1
  409. chnset kval,"Acc$N"
  410. #
  411. $UPDATE_SEQUENCE(1)
  412. $UPDATE_SEQUENCE(2)
  413. $UPDATE_SEQUENCE(3)
  414. $UPDATE_SEQUENCE(4)
  415. $UPDATE_SEQUENCE(5)
  416. $UPDATE_SEQUENCE(6)
  417. $UPDATE_SEQUENCE(7)
  418. $UPDATE_SEQUENCE(8)
  419. $UPDATE_SEQUENCE(9)
  420. $UPDATE_SEQUENCE(10)
  421. $UPDATE_SEQUENCE(11)
  422. $UPDATE_SEQUENCE(12)
  423. $UPDATE_SEQUENCE(13)
  424. $UPDATE_SEQUENCE(14)
  425. $UPDATE_SEQUENCE(15)
  426. $UPDATE_SEQUENCE(16)
  427. endif
  428. ;UPDATE TABLE IF SEQUENCE BUTTON CHANGED
  429. #define UPDATE_TABLE(N)
  430. #
  431. ktrig changed gkOn$N
  432. if ktrig==1 then
  433. tablewkt gkOn$N,$N-1,giOn1+gksound-1
  434. endif
  435. ktrig changed gkAcc$N
  436. if ktrig==1 then
  437. tablewkt gkAcc$N,$N-1,giAcc1+gksound-1
  438. endif
  439. #
  440. $UPDATE_TABLE(1)
  441. $UPDATE_TABLE(2)
  442. $UPDATE_TABLE(3)
  443. $UPDATE_TABLE(4)
  444. $UPDATE_TABLE(5)
  445. $UPDATE_TABLE(6)
  446. $UPDATE_TABLE(7)
  447. $UPDATE_TABLE(8)
  448. $UPDATE_TABLE(9)
  449. $UPDATE_TABLE(10)
  450. $UPDATE_TABLE(11)
  451. $UPDATE_TABLE(12)
  452. $UPDATE_TABLE(13)
  453. $UPDATE_TABLE(14)
  454. $UPDATE_TABLE(15)
  455. $UPDATE_TABLE(16)
  456. endin
  457. instr 2 ;READ MIDI AND TRIGGER NOTES
  458. inum notnum ;READ IN MIDI NOTE NUMBER
  459. idb veloc -30,0 ;READ IN MIDI NOTE VELOCITY (WILL BE USED AS A DECIBEL VALUE)
  460. iinstr wrap inum,0,16 ;MAP MIDI NOTE NUMBERS (RANGE: 0 - 127) TO DRUM SOUND NUMBER (0 - 15)
  461. event_i "i",101+iinstr,0,0.001,ampdbfs(idb) ;CALL THE RELEVANT INSTRUMENT AND SEND AMPLITUDE VALUE AS p4
  462. endin
  463. instr 3 ;PLAY SEQUENCE
  464. gindx init 0
  465. ktick metro (gktempo*4)/60
  466. ;SWING
  467. kSwingBeat init 0
  468. kSwingTime = (kSwingBeat==1?(60*gkswing)/(gktempo*4):0)
  469. if ktick==1 then
  470. kSwingBeat = abs(kSwingBeat-1) ;FLIP BETWEEN ZERO AND 1
  471. endif
  472. schedkwhen ktick, 0, 0, 4, kSwingTime, 0.001
  473. endin
  474. instr 4 ;TEST FOR NOTE ON SEQUENCE STEP
  475. #define VOICE(N)
  476. #
  477. iOnOff$N table gindx, giOn$N
  478. if iOnOff$N==1 then
  479. iAcc table gindx,giAcc$N
  480. event_i "i", 100+$N, 0, 0.001, 0.4 + (iAcc*i(gkAccLev))
  481. endif
  482. #
  483. $VOICE(1)
  484. $VOICE(2)
  485. $VOICE(3)
  486. $VOICE(4)
  487. $VOICE(5)
  488. $VOICE(6)
  489. $VOICE(7)
  490. $VOICE(8)
  491. $VOICE(9)
  492. $VOICE(10)
  493. $VOICE(11)
  494. $VOICE(12)
  495. $VOICE(13)
  496. $VOICE(14)
  497. $VOICE(15)
  498. $VOICE(16)
  499. gindx wrap gindx+1, 0, 16
  500. turnoff
  501. endin
  502. instr 101 ;BASS DRUM
  503. xtratim 0.1
  504. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  505. chnset 1-krelease,"Act1" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  506. p3 = 2*i(gkdur1) ;NOTE DURATION. SCALED USING GUI 'Decay' KNOB
  507. ;SUSTAIN AND BODY OF THE SOUND
  508. kmul transeg 0.2,p3*0.5,-15,0.01, p3*0.5,0,0 ;PARTIAL STRENGTHS MULTIPLIER USED BY GBUZZ. DECAYS FROM A SOUND WITH OVERTONES TO A SINE TONE.
  509. kbend transeg 0.5,1.2,-4, 0,1,0,0 ;SLIGHT PITCH BEND AT THE START OF THE NOTE
  510. asig gbuzz 0.5,50*octave(gktune1)*semitone(kbend),20,1,kmul,gicos ;GBUZZ TONE
  511. aenv transeg 1,p3-0.004,-6,0 ;AMPLITUDE ENVELOPE FOR SUSTAIN OF THE SOUND
  512. aatt linseg 0,0.004,1 ;SOFT ATTACK
  513. asig = asig*aenv*aatt
  514. ;HARD, SHORT ATTACK OF THE SOUND
  515. aenv linseg 1,0.07,0 ;AMPLITUDE ENVELOPE (FAST DECAY)
  516. acps expsega 400,0.07,0.001,1,0.001 ;FREQUENCY OF THE ATTACK SOUND. QUICKLY GLISSES FROM 400 Hz TO SUB-AUDIO
  517. aimp oscili aenv,acps*octave(gktune1*0.25),gisine ;CREATE ATTACK SOUND
  518. amix = ((asig*0.5)+(aimp*0.35))*gklevel1*p4*gklevel ;MIX SUSTAIN AND ATTACK SOUND ELEMENTS AND SCALE USING GUI 'Level' KNOB
  519. aL,aR pan2 amix,gkpan1 ;PAN THE MONOPHONIC SOUND
  520. outs aL,aR ;SEND AUDIO TO OUTPUTS
  521. endin
  522. instr 102 ;SNARE DRUM
  523. xtratim 0.1
  524. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  525. chnset 1-krelease,"Act2" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  526. ;SOUND CONSISTS OF TWO SINE TONES, AN OCTAVE APART AND A NOISE SIGNAL
  527. ifrq = 342 ;FREQUENCY OF THE TONES
  528. iNseDur = 0.3 * i(gkdur2) ;DURATION OF THE NOISE COMPONENT
  529. iPchDur = 0.1 * i(gkdur2) ;DURATION OF THE SINE TONES COMPONENT
  530. p3 = iNseDur ;p3 DURATION TAKEN FROM NOISE COMPONENT DURATION (ALWATS THE LONGEST COMPONENT)
  531. ;SINE TONES COMPONENT
  532. aenv1 expseg 1,iPchDur,0.0001,p3-iPchDur,0.0001 ;AMPLITUDE ENVELOPE
  533. apitch1 oscili 1,ifrq*octave(gktune2),gisine ;SINE TONE 1
  534. apitch2 oscili 0.25,ifrq*0.5*octave(gktune2),gisine ;SINE TONE 2 (AN OCTAVE LOWER)
  535. apitch = (apitch1+apitch2)*0.75 ;MIX THE TWO SINE TONES
  536. ;NOISE COMPONENT
  537. aenv2 expon 1,p3,0.0005 ;AMPLITUDE ENVELOPE
  538. anoise noise 0.75,0 ;CREATE SOME NOISE
  539. anoise butbp anoise,10000*octave(gktune2),10000 ;BANDPASS FILTER THE NOISE SIGNAL
  540. anoise buthp anoise,1000 ;HIGHPASS FILTER THE NOISE SIGNAL
  541. kcf expseg 5000,0.1,3000,p3-0.2,3000 ;CUTOFF FREQUENCY FOR A LOWPASS FILTER
  542. anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL
  543. amix = ((apitch*aenv1)+(anoise*aenv2))*gklevel2*p4*gklevel ;MIX AUDIO SIGNALS AND SCALE ACCORDING TO GUI 'Level' CONTROL
  544. aL,aR pan2 amix,i(gkpan2) ;PAN THE MONOPHONIC AUDIO SIGNAL
  545. outs aL,aR ;SEND AUDIO TO OUTPUTS
  546. endin
  547. instr 103 ;OPEN HIGH HAT
  548. xtratim 0.1
  549. kFrq1 = 296*octave(gktune3) ;FREQUENCIES OF THE 6 OSCILLATORS
  550. kFrq2 = 285*octave(gktune3)
  551. kFrq3 = 365*octave(gktune3)
  552. kFrq4 = 348*octave(gktune3)
  553. kFrq5 = 420*octave(gktune3)
  554. kFrq6 = 835*octave(gktune3)
  555. p3 = 0.5*i(gkdur3) ;DURATION OF THE NOTE
  556. ;SOUND CONSISTS OF 6 PULSE OSCILLATORS MIXED WITH A NOISE COMPONENT
  557. ;PITCHED ELEMENT
  558. aenv linseg 1,p3-0.05,0.1,0.05,0 ;AMPLITUDE ENVELOPE FOR THE PULSE OSCILLATORS
  559. ipw = 0.25 ;PULSE WIDTH
  560. a1 vco2 0.5,kFrq1,2,ipw ;PULSE OSCILLATORS...
  561. a2 vco2 0.5,kFrq2,2,ipw
  562. a3 vco2 0.5,kFrq3,2,ipw
  563. a4 vco2 0.5,kFrq4,2,ipw
  564. a5 vco2 0.5,kFrq5,2,ipw
  565. a6 vco2 0.5,kFrq6,2,ipw
  566. amix sum a1,a2,a3,a4,a5,a6 ;MIX THE PULSE OSCILLATORS
  567. amix reson amix,5000*octave(gktune3),5000,1 ;BANDPASS FILTER THE MIXTURE
  568. amix buthp amix,5000 ;HIGHPASS FILTER THE SOUND...
  569. amix buthp amix,5000 ;...AND AGAIN
  570. amix = amix*aenv ;APPLY THE AMPLITUDE ENVELOPE
  571. ;NOISE ELEMENT
  572. anoise noise 0.8,0 ;GENERATE SOME WHITE NOISE
  573. aenv linseg 1,p3-0.05,0.1,0.05,0 ;CREATE AN AMPLITUDE ENVELOPE
  574. kcf expseg 20000,0.7,9000,p3-0.1,9000 ;CREATE A CUTOFF FREQ. ENVELOPE
  575. anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL
  576. anoise buthp anoise,8000 ;HIGHPASS FILTER THE NOISE SIGNAL
  577. anoise = anoise*aenv ;APPLY THE AMPLITUDE ENVELOPE
  578. ;MIX PULSE OSCILLATOR AND NOISE COMPONENTS
  579. amix = (amix+anoise)*gklevel3*p4*0.55*gklevel
  580. aL,aR pan2 amix,gkpan3 ;PAN MONOPHONIC SIGNAL
  581. outs aL,aR ;SEND TO OUTPUTS
  582. ;kactive active p1+1 ;CHECK NUMBER OF ACTIVE INSTANCES OF CLOSED HIGH HAT INSTRUMENT
  583. ;if kactive>0 then ;IF HIGH-HAT CLOSED IS ACTIVE...
  584. ; turnoff ;TURN OFF THIS INSTRUMENT
  585. ;endif
  586. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  587. chnset 1-krelease,"Act3" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  588. endin
  589. instr 104 ;CLOSED HIGH HAT
  590. xtratim 0.1
  591. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  592. chnset 1-krelease,"Act4" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  593. kFrq1 = 296*octave(gktune4) ;FREQUENCIES OF THE 6 OSCILLATORS
  594. kFrq2 = 285*octave(gktune4)
  595. kFrq3 = 365*octave(gktune4)
  596. kFrq4 = 348*octave(gktune4)
  597. kFrq5 = 420*octave(gktune4)
  598. kFrq6 = 835*octave(gktune4)
  599. idur = 0.088*i(gkdur4) ;DURATION OF THE NOTE
  600. p3 limit idur,0.1,10 ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT)
  601. iactive active p1-1 ;SENSE ACTIVITY OF PREVIOUS INSTRUMENT (OPEN HIGH HAT)
  602. if iactive>0 then ;IF 'OPEN HIGH HAT' IS ACTIVE...
  603. turnoff2 p1-1,0,0 ;TURN IT OFF (CLOSED HIGH HAT TAKES PRESIDENCE)
  604. chnset gkoff,"Act3" ;TURN OFF ACTIVE LIGHT FOR OPEN HIGH HAT
  605. endif
  606. ;PITCHED ELEMENT
  607. aenv expsega 1,idur,0.001,1,0.001 ;AMPLITUDE ENVELOPE FOR THE PULSE OSCILLATORS
  608. ipw = 0.25 ;PULSE WIDTH
  609. a1 vco2 0.5,kFrq1,2,ipw ;PULSE OSCILLATORS...
  610. a2 vco2 0.5,kFrq2,2,ipw
  611. a3 vco2 0.5,kFrq3,2,ipw
  612. a4 vco2 0.5,kFrq4,2,ipw
  613. a5 vco2 0.5,kFrq5,2,ipw
  614. a6 vco2 0.5,kFrq6,2,ipw
  615. amix sum a1,a2,a3,a4,a5,a6 ;MIX THE PULSE OSCILLATORS
  616. amix reson amix,5000*octave(gktune4),5000,1 ;BANDPASS FILTER THE MIXTURE
  617. amix buthp amix,5000 ;HIGHPASS FILTER THE SOUND...
  618. amix buthp amix,5000 ;...AND AGAIN
  619. amix = amix*aenv ;APPLY THE AMPLITUDE ENVELOPE
  620. ;NOISE ELEMENT
  621. anoise noise 0.8,0 ;GENERATE SOME WHITE NOISE
  622. aenv expsega 1,idur,0.001,1,0.001 ;CREATE AN AMPLITUDE ENVELOPE
  623. kcf expseg 20000,0.7,9000,idur-0.1,9000 ;CREATE A CUTOFF FREQ. ENVELOPE
  624. anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL
  625. anoise buthp anoise,8000 ;HIGHPASS FILTER THE NOISE SIGNAL
  626. anoise = anoise*aenv ;APPLY THE AMPLITUDE ENVELOPE
  627. ;MIX PULSE OSCILLATOR AND NOISE COMPONENTS
  628. amix = (amix+anoise)*gklevel4*p4*0.55*gklevel
  629. aL,aR pan2 amix,gkpan4 ;PAN MONOPHONIC SIGNAL
  630. outs aL,aR ;SEND TO OUTPUTS
  631. endin
  632. instr 105 ;HIGH TOM
  633. xtratim 0.1
  634. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  635. chnset 1-krelease,"Act5" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  636. ifrq = 200 * octave(i(gktune5)) ;FREQUENCY
  637. p3 = 0.5 * i(gkdur5) ;DURATION OF THIS NOTE
  638. ;SINE TONE SIGNAL
  639. aAmpEnv transeg 1,p3,-10,0.001 ;AMPLITUDE ENVELOPE FOR SINE TONE SIGNAL
  640. afmod expsega 5,0.125/ifrq,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE TONE MORE OF AN ATTACK.
  641. asig oscili -aAmpEnv*0.6,ifrq*afmod,gisine ;SINE TONE SIGNAL
  642. ;NOISE SIGNAL
  643. aEnvNse transeg 1,p3,-6,0.001 ;AMPLITUDE ENVELOPE FOR NOISE SIGNAL
  644. anoise dust2 0.4, 8000 ;GENERATE NOISE SIGNAL
  645. anoise reson anoise,400*octave(i(gktune5)),800,1 ;BANDPASS FILTER THE NOISE SIGNAL
  646. anoise buthp anoise,100*octave(i(gktune5)) ;HIGHPASS FILTER THE NOSIE SIGNAL
  647. anoise butlp anoise,1000*octave(i(gktune5)) ;LOWPASS FILTER THE NOISE SIGNAL
  648. anoise = anoise * aEnvNse ;SCALE NOISE SIGNAL WITH AMPLITUDE ENVELOPE
  649. ;MIX THE TWO SOUND COMPONENTS
  650. amix = (asig + anoise)*gklevel5*p4*gklevel
  651. aL,aR pan2 amix,gkpan5 ;PAN MONOPHONIC SIGNAL
  652. outs aL,aR ;SEND AUDIO TO OUTPUTS
  653. endin
  654. instr 106 ;MID TOM
  655. xtratim 0.1
  656. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  657. chnset 1-krelease,"Act6" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  658. ifrq = 133*octave(i(gktune6)) ;FREQUENCY
  659. p3 = 0.6 * i(gkdur6) ;DURATION OF THIS NOTE
  660. ;SINE TONE SIGNAL
  661. aAmpEnv transeg 1,p3,-10,0.001 ;AMPLITUDE ENVELOPE FOR SINE TONE SIGNAL
  662. afmod expsega 5,0.125/ifrq,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE TONE MORE OF AN ATTACK.
  663. asig oscili -aAmpEnv*0.6,ifrq*afmod,gisine ;SINE TONE SIGNAL
  664. ;NOISE SIGNAL
  665. aEnvNse transeg 1,p3,-6,0.001 ;AMPLITUDE ENVELOPE FOR NOISE SIGNAL
  666. anoise dust2 0.4, 8000 ;GENERATE NOISE SIGNAL
  667. anoise reson anoise, 400*octave(i(gktune6)),800,1 ;BANDPASS FILTER THE NOISE SIGNAL
  668. anoise buthp anoise,100*octave(i(gktune6)) ;HIGHPASS FILTER THE NOSIE SIGNAL
  669. anoise butlp anoise,600*octave(i(gktune6)) ;LOWPASS FILTER THE NOISE SIGNAL
  670. anoise = anoise * aEnvNse ;SCALE NOISE SIGNAL WITH AMPLITUDE ENVELOPE
  671. ;MIX THE TWO SOUND COMPONENTS
  672. amix = (asig + anoise)*gklevel6*p4*gklevel
  673. aL,aR pan2 amix,i(gkpan6) ;PAN MONOPHONIC SIGNAL
  674. outs aL,aR ;SEND AUDIO TO OUTPUTS
  675. endin
  676. instr 107 ;LOW TOM
  677. xtratim 0.1
  678. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  679. chnset 1-krelease,"Act7" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  680. ifrq = 90 * octave(i(gktune7)) ;FREQUENCY
  681. p3 = 0.7*i(gkdur7) ;DURATION OF THIS NOTE
  682. ;SINE TONE SIGNAL
  683. aAmpEnv transeg 1,p3,-10,0.001 ;AMPLITUDE ENVELOPE FOR SINE TONE SIGNAL
  684. afmod expsega 5,0.125/ifrq,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE TONE MORE OF AN ATTACK.
  685. asig oscili -aAmpEnv*0.6,ifrq*afmod,gisine ;SINE TONE SIGNAL
  686. ;NOISE SIGNAL
  687. aEnvNse transeg 1,p3,-6,0.001 ;AMPLITUDE ENVELOPE FOR NOISE SIGNAL
  688. anoise dust2 0.4, 8000 ;GENERATE NOISE SIGNAL
  689. anoise reson anoise,40*octave(gktune7),800,1 ;BANDPASS FILTER THE NOISE SIGNAL
  690. anoise buthp anoise,100*octave(i(gktune7)) ;HIGHPASS FILTER THE NOSIE SIGNAL
  691. anoise butlp anoise,600*octave(i(gktune7)) ;LOWPASS FILTER THE NOISE SIGNAL
  692. anoise = anoise * aEnvNse ;SCALE NOISE SIGNAL WITH AMPLITUDE ENVELOPE
  693. ;MIX THE TWO SOUND COMPONENTS
  694. amix = (asig + anoise)*gklevel7*p4*gklevel
  695. aL,aR pan2 amix,i(gkpan7) ;PAN MONOPHONIC SIGNAL
  696. outs aL,aR ;SEND AUDIO TO OUTPUTS
  697. endin
  698. instr 108 ;CYMBAL
  699. xtratim 0.1
  700. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  701. chnset 1-krelease,"Act8" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  702. kFrq1 = 296*octave(gktune8) ;FREQUENCIES OF THE 6 OSCILLATORS
  703. kFrq2 = 285*octave(gktune8)
  704. kFrq3 = 365*octave(gktune8)
  705. kFrq4 = 348*octave(gktune8)
  706. kFrq5 = 420*octave(gktune8)
  707. kFrq6 = 835*octave(gktune8)
  708. p3 = 2*i(gkdur8) ;DURATION OF THE NOTE
  709. ;SOUND CONSISTS OF 6 PULSE OSCILLATORS MIXED WITH A NOISE COMPONENT
  710. ;PITCHED ELEMENT
  711. aenv expon 1,p3,0.0001 ;AMPLITUDE ENVELOPE FOR THE PULSE OSCILLATORS
  712. ipw = 0.25 ;PULSE WIDTH
  713. a1 vco2 0.5,kFrq1,2,ipw ;PULSE OSCILLATORS...
  714. a2 vco2 0.5,kFrq2,2,ipw
  715. a3 vco2 0.5,kFrq3,2,ipw
  716. a4 vco2 0.5,kFrq4,2,ipw
  717. a5 vco2 0.5,kFrq5,2,ipw
  718. a6 vco2 0.5,kFrq6,2,ipw
  719. amix sum a1,a2,a3,a4,a5,a6 ;MIX THE PULSE OSCILLATORS
  720. amix reson amix,5000 *octave(gktune8),5000,1 ;BANDPASS FILTER THE MIXTURE
  721. amix buthp amix,10000 ;HIGHPASS FILTER THE SOUND
  722. amix butlp amix,12000 ;LOWPASS FILTER THE SOUND...
  723. amix butlp amix,12000 ;AND AGAIN...
  724. amix = amix*aenv ;APPLY THE AMPLITUDE ENVELOPE
  725. ;NOISE ELEMENT
  726. anoise noise 0.8,0 ;GENERATE SOME WHITE NOISE
  727. aenv expsega 1,0.3,0.07,p3-0.1,0.00001 ;CREATE AN AMPLITUDE ENVELOPE
  728. kcf expseg 14000,0.7,7000,p3-0.1,5000 ;CREATE A CUTOFF FREQ. ENVELOPE
  729. anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL
  730. anoise buthp anoise,8000 ;HIGHPASS FILTER THE NOISE SIGNAL
  731. anoise = anoise*aenv ;APPLY THE AMPLITUDE ENVELOPE
  732. ;MIX PULSE OSCILLATOR AND NOISE COMPONENTS
  733. amix = (amix+anoise)*gklevel8*p4*0.85*gklevel
  734. aL,aR pan2 amix,i(gkpan8) ;PAN MONOPHONIC SIGNAL
  735. outs aL,aR ;SEND TO OUTPUTS
  736. endin
  737. instr 109 ;RIM SHOT
  738. xtratim 0.1
  739. iTR808RimShot ftgenonce 0,0,1024,10, 0.971,0.269,0.041,0.054,0.011,0.013,0.08,0.0065,0.005,0.004,0.003,0.003,0.002,0.002,0.002,0.002,0.002,0.001,0.001,0.001,0.001,0.001,0.002,0.001,0.001 ;WAVEFORM FOR TR808 RIMSHOT
  740. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  741. chnset 1-krelease,"Act9" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  742. idur = 0.027*i(gkdur9) ;NOTE DURATION
  743. p3 limit idur,0.1,10 ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT)
  744. ;RING
  745. aenv1 expsega 1,idur,0.001,1,0.001 ;AMPLITUDE ENVELOPE FOR SUSTAIN ELEMENT OF SOUND
  746. ifrq1 = 1700*octave(i(gktune9)) ;FREQUENCY OF SUSTAIN ELEMENT OF SOUND
  747. aring oscili 1,ifrq1,iTR808RimShot,0 ;CREATE SUSTAIN ELEMENT OF SOUND
  748. aring butbp aring,ifrq1,ifrq1*8
  749. aring = aring*(aenv1-0.001)*0.5 ;APPLY AMPLITUDE ENVELOPE
  750. ;NOISE
  751. anoise noise 1,0 ;CREATE A NOISE SIGNAL
  752. aenv2 expsega 1, 0.002, 0.8, 0.005, 0.5, idur-0.002-0.005, 0.0001, 1, 0.0001 ;CREATE AMPLITUDE ENVELOPE
  753. anoise buthp anoise,800 ;HIGHPASS FILTER THE NOISE SOUND
  754. kcf expseg 4000,p3,20 ;CUTOFF FREQUENCY FUNCTION FOR LOWPASS FILTER
  755. anoise butlp anoise,kcf ;LOWPASS FILTER THE SOUND
  756. anoise = anoise*(aenv2-0.001) ;APPLY ENVELOPE TO NOISE SIGNAL
  757. ;MIX
  758. amix = (aring+anoise)*gklevel9*p4*0.8*gklevel
  759. aL,aR pan2 amix,gkpan9 ;PAN MONOPHONIC SIGNAL
  760. outs aL,aR ;SEND TO OUTPUTS
  761. endin
  762. instr 110 ;CLAVES
  763. xtratim 0.1
  764. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  765. chnset 1-krelease,"Act10" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  766. ifrq = 2500*octave(i(gktune10)) ;FREQUENCY OF OSCILLATOR
  767. idur = 0.045 * i(gkdur10) ;DURATION OF THE NOTE
  768. p3 limit idur,0.1,10 ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT)
  769. aenv expsega 1,idur,0.001,1,0.001 ;AMPLITUDE ENVELOPE
  770. afmod expsega 3,0.00005,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE SOUND A LITTLE MORE ATTACK.
  771. asig oscili -(aenv-0.001),ifrq*afmod,gisine,0 ;AUDIO OSCILLATOR
  772. asig = asig*0.4*gklevel10*p4*gklevel ;RESCALE AMPLITUDE
  773. aL,aR pan2 asig,gkpan10 ;PAN MONOPHONIC AUDIO SIGNAL
  774. outs aL,aR ;SEND AUDIO TO OUTPUTS
  775. endin
  776. instr 111 ;COWBELL
  777. xtratim 0.1
  778. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  779. chnset 1-krelease,"Act11" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  780. ifrq1 = 562 * octave(i(gktune11)) ;FREQUENCIES OF THE TWO OSCILLATORS
  781. ifrq2 = 845 * octave(i(gktune11)) ;
  782. ipw = 0.5 ;PULSE WIDTH OF THE OSCILLATOR
  783. idur = 0.7 ;NOTE DURATION
  784. ishp = -30
  785. idur = 0.7 ;NOTE DURATION
  786. p3 = idur*i(gkdur11) ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT)
  787. ishape = -30 ;SHAPE OF THE CURVES IN THE AMPLITUDE ENVELOPE
  788. kenv1 transeg 1,p3*0.3,ishape,0.2, p3*0.7,ishape,0.2 ;FIRST AMPLITUDE ENVELOPE - PRINCIPALLY THE ATTACK OF THE NOTE
  789. kenv2 expon 1,p3,0.0005 ;SECOND AMPLITUDE ENVELOPE - THE SUSTAIN PORTION OF THE NOTE
  790. kenv = kenv1*kenv2 ;COMBINE THE TWO ENVELOPES
  791. itype = 2 ;WAVEFORM FOR VCO2 (2=PULSE)
  792. a1 vco2 0.65,ifrq1,itype,ipw ;CREATE THE TWO OSCILLATORS
  793. a2 vco2 0.65,ifrq2,itype,ipw
  794. amix = a1+a2 ;MIX THE TWO OSCILLATORS
  795. iLPF2 = 10000 ;LOWPASS FILTER RESTING FREQUENCY
  796. kcf expseg 12000,0.07,iLPF2,1,iLPF2 ;LOWPASS FILTER CUTOFF FREQUENCY ENVELOPE
  797. alpf butlp amix,kcf ;LOWPASS FILTER THE MIX OF THE TWO OSCILLATORS (CREATE A NEW SIGNAL)
  798. abpf reson amix, ifrq2, 25 ;BANDPASS FILTER THE MIX OF THE TWO OSCILLATORS (CREATE A NEW SIGNAL)
  799. amix dcblock2 (abpf*0.06*kenv1)+(alpf*0.5)+(amix*0.9) ;MIX ALL SIGNALS AND BLOCK DC OFFSET
  800. amix buthp amix,700 ;HIGHPASS FILTER THE MIX OF ALL SIGNALS
  801. amix = amix*0.07*kenv*p4*gklevel11*gklevel ;RESCALE AMPLITUDE
  802. aL,aR pan2 amix,i(gkpan11) ;PAN THE MONOPHONIC AUDIO SIGNAL
  803. outs aL,aR ;SEND AUDIO TO OUTPUTS
  804. endin
  805. instr 112 ;CLAP
  806. ;;xtratim 0.1
  807. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  808. chnset 1-krelease,"Act12" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  809. iTimGap = 0.01 ;GAP BETWEEN EVENTS DURING ATTACK PORTION OF CLAP
  810. idur1 = 0.02 ;DURING OF THE THREE INITIAL 'CLAPS'
  811. idur2 = 2*i(gkdur12) ;DURATION OF THE FOURTH, MAIN, CLAP
  812. idens = 8000 ;DENSITY OF THE NOISE SIGNAL USED TO FORM THE CLAPS
  813. iamp1 = 0.5 ;AMPLITUDE OF AUDIO BEFORE BANDPASS FILTER IN OUTPUT
  814. iamp2 = 1 ;AMPLITUDE OF AUDIO AFTER BANDPASS FILTER IN OUTPUT
  815. if frac(p1)==0 then ;IF THIS IS THE INITIAL NOTE (p1 WILL BE AN INTEGER)
  816. ; del. dur env.shape
  817. event_i "i", p1+0.1, 0, idur1, p4 ;CALL THIS INSTRUMENT 4 TIMES. ADD A FRACTION ONTO p1 TO BE ABLE TO DIFFERENTIATE THESE SUBSEQUENT NOTES
  818. event_i "i", p1+0.1, iTimGap, idur1, p4
  819. event_i "i", p1+0.1, iTimGap*2, idur1, p4
  820. event_i "i", p1+0.1, iTimGap*3, idur2, p4
  821. else
  822. kenv transeg 1,p3,-25,0 ;AMPLITUDE ENVELOPE
  823. iamp random 0.7,1 ;SLIGHT RANDOMISATION OF AMPLITUDE
  824. anoise dust2 kenv*iamp, idens ;CREATE NOISE SIGNAL
  825. iBPF = 1100*octave(i(gktune12)) ;FREQUENCY OF THE BANDPASS FILTER
  826. ibw = 2000*octave(i(gktune12)) ;BANDWIDTH OF THE BANDPASS FILTER
  827. iHPF = 1000 ;FREQUENCY OF A HIGHPASS FILTER
  828. iLPF = 1 ;SCALER FOR FREQUENCY OF A LOWPASS FILTER
  829. kcf expseg 8000,0.07,1700,1,800,2,500,1,500 ;CREATE CUTOFF FREQUENCY ENVELOPE
  830. asig butlp anoise,kcf*iLPF ;LOWPASS FILTER THE SOUND
  831. asig buthp asig,iHPF ;HIGHPASS FILTER THE SOUND
  832. ares reson asig,iBPF,ibw,1 ;BANDPASS FILTER THE SOUND (CREATE A NEW SIGNAL)
  833. asig dcblock2 (asig*iamp1)+(ares*iamp2) ;MIX BANDPASS FILTERED AND NON-BANDPASS FILTERED SOUND ELEMENTS
  834. asig = asig*p4*i(gklevel12)*1.75*gklevel ;SCALE AMPLITUDE
  835. aL,aR pan2 asig,i(gkpan12) ;PAN MONOPHONIC SIGNAL
  836. outs aL,aR ;SEND AUDIO TO OUTPUTS
  837. endif
  838. endin
  839. instr 113 ;MARACA
  840. xtratim 0.1
  841. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  842. chnset 1-krelease,"Act13" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  843. idur = 0.07*i(gkdur13) ;DURATION 3
  844. p3 limit idur,0.1,10 ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT)
  845. iHPF limit 6000*octave(i(gktune13)),20,sr/2 ;HIGHPASS FILTER FREQUENCY
  846. iLPF limit 12000*octave(i(gktune13)),20,sr/3 ;LOWPASS FILTER FREQUENCY. (LIMIT MAXIMUM TO PREVENT OUT OF RANGE VALUES)
  847. ;AMPLITUDE ENVELOPE
  848. iBP1 = 0.4 ;BREAK-POINT 1
  849. iDur1 = 0.014*i(gkdur13) ;DURATION 1
  850. iBP2 = 1 ;BREAKPOINT 2
  851. iDur2 = 0.01 *i(gkdur13) ;DURATION 2
  852. iBP3 = 0.05 ;BREAKPOINT 3
  853. p3 limit idur,0.1,10 ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT)
  854. aenv expsega iBP1,iDur1,iBP2,iDur2,iBP3 ;CREATE AMPLITUDE ENVELOPE
  855. anoise noise 0.75,0 ;CREATE A NOISE SIGNAL
  856. anoise buthp anoise,iHPF ;HIGHPASS FILTER THE SOUND
  857. anoise butlp anoise,iLPF ;LOWPASS FILTER THE SOUND
  858. anoise = anoise*aenv*p4*gklevel13*gklevel ;SCALE THE AMPLITUDE
  859. aL,aR pan2 anoise,i(gkpan13) ;PAN THE MONOPONIC SIGNAL
  860. outs aL,aR ;SEND AUDIO TO OUTPUTS
  861. endin
  862. instr 114 ;HIGH CONGA
  863. xtratim 0.1
  864. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  865. chnset 1-krelease,"Act14" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  866. ifrq = 420*octave(i(gktune14)) ;FREQUENCY OF NOTE
  867. p3 = 0.22*i(gkdur14) ;DURATION OF NOTE
  868. aenv transeg 0.7,1/ifrq,1,1,p3,-6,0.001 ;AMPLITUDE ENVELOPE
  869. afrq expsega ifrq*3,0.25/ifrq,ifrq,1,ifrq ;FREQUENCY ENVELOPE (CREATE A SHARPER ATTACK)
  870. asig oscili -aenv*0.25,afrq,gisine ;CREATE THE AUDIO OSCILLATOR
  871. asig = asig*p4*gklevel14*gklevel ;SCALE THE AMPLITUDE
  872. aL,aR pan2 asig,gkpan14 ;PAN THE MONOPHONIC AUDIO SIGNAL
  873. outs aL,aR ;SEND AUDIO TO THE OUTPUTS
  874. endin
  875. instr 115 ;MID CONGA
  876. xtratim 0.1
  877. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  878. chnset 1-krelease,"Act15" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  879. ifrq = 310*octave(i(gktune15)) ;FREQUENCY OF NOTE
  880. p3 = 0.33*i(gkdur15) ;DURATION OF NOTE
  881. aenv transeg 0.7,1/ifrq,1,1,p3,-6,0.001 ;AMPLITUDE ENVELOPE
  882. afrq expsega ifrq*3,0.25/ifrq,ifrq,1,ifrq ;FREQUENCY ENVELOPE (CREATE A SHARPER ATTACK)
  883. asig oscili -aenv*0.25,afrq,gisine ;CREATE THE AUDIO OSCILLATOR
  884. asig = asig*p4*gklevel15*gklevel ;SCALE THE AMPLITUDE
  885. aL,aR pan2 asig,gkpan15 ;PAN THE MONOPHONIC AUDIO SIGNAL
  886. outs aL,aR ;SEND AUDIO TO THE OUTPUTS
  887. endin
  888. instr 116 ;LOW CONGA
  889. xtratim 0.1
  890. krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
  891. chnset 1-krelease,"Act16" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
  892. ifrq = 227*octave(i(gktune16)) ;FREQUENCY OF NOTE
  893. p3 = 0.41*i(gkdur16) ;DURATION OF NOTE
  894. aenv transeg 0.7,1/ifrq,1,1,p3,-6,0.001 ;AMPLITUDE ENVELOPE
  895. afrq expsega ifrq*3,0.25/ifrq,ifrq,1,ifrq ;FREQUENCY ENVELOPE (CREATE A SHARPER ATTACK)
  896. asig oscili -aenv*0.25,afrq,gisine ;CREATE THE AUDIO OSCILLATOR
  897. asig = asig*p4*gklevel16*gklevel ;SCALE THE AMPLITUDE
  898. aL,aR pan2 asig,gkpan16 ;PAN THE MONOPHONIC AUDIO SIGNAL
  899. outs aL,aR ;SEND AUDIO TO THE OUTPUTS
  900. endin
  901. </CsInstruments>
  902. <CsScore>
  903. f 0 [3600*24*7]
  904. i 1 0 [3600*24*7]
  905. </CsScore>
  906. </CsoundSynthesizer>