|
- 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.
- Saving snapshots only saves visible widgets.
-
- <Cabbage>
- form caption("TR-808") size(800, 400), colour("SlateGrey"), pluginID("T808")
-
- 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")
- label bounds(220,375,250, 14), text("Author: Iain McCurdy |2012|"), colour("white")
-
- groupbox bounds( 0, 0, 50, 225), text("B.Drum"),FontColour("black"), colour(192,192,192){
- checkbox bounds(10, 24, 5, 5), colour("yellow"), channel("Act1"), value(0), shape("ellipse")
- rslider bounds( 5, 25, 45, 45), text("Level"), FontColour("black"), channel("level1"), range(0, 2, 1)
- rslider bounds( 5, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune1"), range(-2, 2, 0)
- rslider bounds( 5,125, 45, 45), text("Decay"), FontColour("black"), channel("dur1"), range(0.25, 2, 1, 0.8)
- rslider bounds( 5,175, 45, 45), text("Pan"), FontColour("black"),channel("pan1"), range(0, 1, 0.5)
- }
- groupbox bounds(50, 0, 50, 225), text("Snare"), FontColour("black"),colour(202,202,202){
- checkbox bounds(60, 24, 5, 5), colour("yellow"), channel("Act2"), value(0), shape("ellipse")
- rslider bounds(55, 25, 45, 45), text("Level"), FontColour("black"), channel("level2"), range(0, 2, 1)
- rslider bounds(55, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune2"), range(-2, 2, 0)
- rslider bounds(55,125, 45, 45), text("Decay"), FontColour("black"), channel("dur2"), range(0.25, 2, 1, 0.8)
- rslider bounds(55,175, 45, 45), text("Pan"), FontColour("black"),channel("pan2"), range(0, 1, 0.5)
- }
- groupbox bounds(100, 0, 50, 225), text("Open HH"), FontColour("black"), colour(212,212,212){
- checkbox bounds(110, 24, 5, 5), colour("yellow"), channel("Act3"), value(0), shape("ellipse")
- rslider bounds(105, 25, 45, 45), text("Level"), FontColour("black"), channel("level3"), range(0, 2, 1)
- rslider bounds(105, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune3"), range(-2, 2, 0)
- rslider bounds(105,125, 45, 45), text("Decay"), FontColour("black"),channel("dur3"), range(0.25, 2, 1, 0.8)
- rslider bounds(105,175, 45, 45), text("Pan"), FontColour("black"),channel("pan3"), range(0, 1, 0.5)
- }
- groupbox bounds(150, 0, 50, 225), text("Cl. HH"),FontColour("black"),colour(222,222,222){
- checkbox bounds(160, 24, 5, 5), colour("yellow"), channel("Act4"), value(0), shape("ellipse")
- rslider bounds(155, 25, 45, 45), text("Level"), FontColour("black"), channel("level4"), range(0, 2, 1)
- rslider bounds(155, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune4"), range(-2, 2, 0)
- rslider bounds(155,125, 45, 45), text("Decay"), FontColour("black"),channel("dur4"), range(0.25, 2, 1, 0.8)
- rslider bounds(155,175, 45, 45), text("Pan"), FontColour("black"),channel("pan4"), range(0, 1, 0.5)
- }
- groupbox bounds(200, 0, 50, 225), text("Hi Tom"), FontColour("black"),colour(232,232,232){
- checkbox bounds(210, 24, 5, 5), colour("yellow"), channel("Act5"), value(0), shape("ellipse")
- rslider bounds(205, 25, 45, 45), text("Level"), FontColour("black"), channel("level5"), range(0, 2, 1)
- rslider bounds(205, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune5"), range(-2, 2, 0)
- rslider bounds(205,125, 45, 45), text("Decay"), FontColour("black"),channel("dur5"), range(0.25, 2, 1, 0.8)
- rslider bounds(205,175, 45, 45), text("Pan"), FontColour("black"),channel("pan5"), range(0, 1, 0.5)
- }
- groupbox bounds(250, 0, 50, 225), text("Mid Tom"),FontColour("black"), colour(242,242,242){
- checkbox bounds(260, 24, 5, 5), colour("yellow"), channel("Act6"), value(0), shape("ellipse")
- rslider bounds(255, 25, 45, 45), text("Level"), FontColour("black"), channel("level6"), range(0, 2, 1)
- rslider bounds(255, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune6"), range(-2, 2, 0)
- rslider bounds(255,125, 45, 45), text("Decay"), FontColour("black"),channel("dur6"), range(0.25, 2, 1, 0.8)
- rslider bounds(255,175, 45, 45), text("Pan"), FontColour("black"),channel("pan6"), range(0, 1, 0.5)
- }
- groupbox bounds(300, 0, 50, 225), text("Low Tom"),FontColour("black"), colour(232,232,232){
- checkbox bounds(310, 24, 5, 5), colour("yellow"), channel("Act7"), value(0), shape("ellipse")
- rslider bounds(305, 25, 45, 45), text("Level"), FontColour("black"), channel("level7"), range(0, 2, 1)
- rslider bounds(305, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune7"), range(-2, 2, 0)
- rslider bounds(305,125, 45, 45), text("Decay"), FontColour("black"),channel("dur7"), range(0.25, 2, 1, 0.8)
- rslider bounds(305,175, 45, 45), text("Pan"), FontColour("black"),channel("pan7"), range(0, 1, 0.5)
- }
- groupbox bounds(350, 0, 50, 225), text("Cymbal"), FontColour("black"),colour(222,222,222){
- checkbox bounds(360, 24, 5, 5), colour("yellow"), channel("Act8"), value(0), shape("ellipse")
- rslider bounds(355, 25, 45, 45), text("Level"), FontColour("black"), channel("level8"), range(0, 2, 1)
- rslider bounds(355, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune8"), range(-2, 2, 0)
- rslider bounds(355,125, 45, 45), text("Decay"), FontColour("black"),channel("dur8"), range(0.25, 2, 1, 0.8)
- rslider bounds(355,175, 45, 45), text("Pan"), FontColour("black"),channel("pan8"), range(0, 1, 0.5)
- }
- groupbox bounds(400, 0, 50, 225), text("Rim Shot"),FontColour("black"), colour(212,212,212){
- checkbox bounds(410, 24, 5, 5), colour("yellow"), channel("Act9"), value(0), shape("ellipse")
- rslider bounds(405, 25, 45, 45), text("Level"), FontColour("black"), channel("level9"), range(0, 2, 1)
- rslider bounds(405, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune9"), range(-2, 2, 0)
- rslider bounds(405,125, 45, 45), text("Decay"), FontColour("black"),channel("dur9"), range(0.25, 2, 1, 0.8)
- rslider bounds(405,175, 45, 45), text("Pan"), FontColour("black"),channel("pan9"), range(0, 1, 0.5)
- }
- groupbox bounds(450, 0, 50, 225), text("Claves"), FontColour("black"),colour(202,202,202){
- checkbox bounds(460, 24, 5, 5), colour("yellow"), channel("Act10"), value(0), shape("ellipse")
- rslider bounds(455, 25, 45, 45), text("Level"), FontColour("black"), channel("level10"), range(0, 2, 1)
- rslider bounds(455, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune10"), range(-2, 2, 0)
- rslider bounds(455,125, 45, 45), text("Decay"), FontColour("black"),channel("dur10"), range(0.25, 2, 1, 0.8)
- rslider bounds(455,175, 45, 45), text("Pan"), FontColour("black"),channel("pan10"), range(0, 1, 0.5)
- }
- groupbox bounds(500, 0, 50, 225), text("Cowbell"),FontColour("black"), colour(192,192,192){
- checkbox bounds(510, 24, 5, 5), colour("yellow"), channel("Act11"), value(0), shape("ellipse")
- rslider bounds(505, 25, 45, 45), text("Level"), FontColour("black"), channel("level11"), range(0, 2, 1)
- rslider bounds(505, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune11"), range(-2, 2, 0)
- rslider bounds(505,125, 45, 45), text("Decay"), FontColour("black"),channel("dur11"), range(0.25, 2, 1, 0.8)
- rslider bounds(505,175, 45, 45), text("Pan"), FontColour("black"),channel("pan11"), range(0, 1, 0.5)
- }
- groupbox bounds(550, 0, 50, 225), text("Clap"), FontColour("black"),colour(182,182,182){
- checkbox bounds(560, 24, 5, 5), colour("yellow"), channel("Act12"), value(0), shape("ellipse")
- rslider bounds(555, 25, 45, 45), text("Level"),FontColour("black"), channel("level12"), range(0, 2, 1)
- rslider bounds(555, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune12"), range(-2, 2, 0)
- rslider bounds(555,125, 45, 45), text("Decay"), FontColour("black"), channel("dur12"), range(0.25, 2, 1, 0.8)
- rslider bounds(555,175, 45, 45), text("Pan"), FontColour("black"),channel("pan12"), range(0, 1, 0.5)
- }
- groupbox bounds(600, 0, 50, 225), text("Maraca"),FontColour("black"), colour(172,172,172){
- checkbox bounds(610, 24, 5, 5), colour("yellow"), channel("Act13"), value(0), shape("ellipse")
- rslider bounds(605, 25, 45, 45), text("Level"), FontColour("black"), channel("level13"), range(0, 2, 1)
- rslider bounds(605, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune13"), range(-2, 2, 0)
- rslider bounds(605,125, 45, 45), text("Decay"), FontColour("black"), channel("dur13"), range(0.25, 2, 1, 0.8)
- rslider bounds(605,175, 45, 45), text("Pan"), FontColour("black"),channel("pan13"), range(0, 1, 0.5)
- }
- groupbox bounds(650, 0, 50, 225), text("Hi Conga"),FontColour("black"), colour(162,162,162){
- checkbox bounds(660, 24, 5, 5), colour("yellow"), channel("Act14"), value(0), shape("ellipse")
- rslider bounds(655, 25, 45, 45), text("Level"), FontColour("black"), channel("level14"), range(0, 2, 1)
- rslider bounds(655, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune14"), range(-2, 2, 0)
- rslider bounds(655,125, 45, 45), text("Decay"), FontColour("black"),channel("dur14"), range(0.25, 2, 1, 0.8)
- rslider bounds(655,175, 45, 45), text("Pan"), FontColour("black"),channel("pan14"), range(0, 1, 0.5)
- }
- groupbox bounds(700, 0, 50, 225), text("Md Cnga"),FontColour("black"), colour(152,152,152){
- checkbox bounds(710, 24, 5, 5), colour("yellow"), channel("Act15"), value(0), shape("ellipse")
- rslider bounds(705, 25, 45, 45), text("Level"), FontColour("black"), channel("level15"), range(0, 2, 1)
- rslider bounds(705, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune15"), range(-2, 2, 0)
- rslider bounds(705,125, 45, 45), text("Decay"), FontColour("black"),channel("dur15"), range(0.25, 2, 1, 0.8)
- rslider bounds(705,175, 45, 45), text("Pan"), FontColour("black"),channel("pan15"), range(0, 1, 0.5)
- }
- groupbox bounds(750, 0, 50, 225), text("Lo Cnga"),FontColour("black"), colour(142,142,142){
- checkbox bounds(760, 24, 5, 5), colour("yellow"), channel("Act16"), value(0), shape("ellipse")
- rslider bounds(755, 25, 45, 45), text("Level"), FontColour("black"), channel("level16"), range(0, 2, 1)
- rslider bounds(755, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune16"), range(-2, 2, 0)
- rslider bounds(755,125, 45, 45), text("Decay"), FontColour("black"),channel("dur16"), range(0.25, 2, 1, 0.8)
- rslider bounds(755,175, 45, 45), text("Pan"), FontColour("black"),channel("pan16"), range(0, 1, 0.5)
- }
-
- keyboard pos(0, 225), size(800, 80)
-
- button bounds( 10,315, 80, 25), text("Stop", "Run"), channel("OnOff"), value(0)
- 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")
- button bounds(462,315, 80, 20), text("Clear","Clear"), channel("clear"), value(0)
- button bounds(462,338, 38, 20), text("Save","Save"), channel("save"), value(0)
- button bounds(502,338, 38, 20), text("Load","Load"), channel("load"), value(0)
- label bounds(544,328, 48, 10), text("PATTERN"), colour("black"), FontColour("black")
- 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")
- rslider bounds(593,310, 60, 60), text("Accent"), FontColour("black"), channel("AccLev"), range(0, 1, 0.4)
- rslider bounds(643,310, 60, 60), text("Tempo"), FontColour("black"), channel("tempo"), range(10, 500, 70, 1, 1)
- rslider bounds(693,310, 60, 60), text("Swing"), FontColour("black"), channel("swing"), range(0, 0.5, 0)
- rslider bounds(743,310, 60, 60), text("Level"), FontColour("black"), channel("level"), range(0, 2, 1)
-
- label bounds(143,312, 12, 10), text("1"), colour("black"), FontColour("black")
- label bounds(163,312, 12, 10), text("2"), colour("black"), FontColour("black")
- label bounds(183,312, 12, 10), text("3"), colour("black"), FontColour("black")
- label bounds(203,312, 12, 10), text("4"), colour("black"), FontColour("black")
- label bounds(223,312, 12, 10), text("5"), colour("black"), FontColour("black")
- label bounds(243,312, 12, 10), text("6"), colour("black"), FontColour("black")
- label bounds(263,312, 12, 10), text("7"), colour("black"), FontColour("black")
- label bounds(283,312, 12, 10), text("8"), colour("black"), FontColour("black")
- label bounds(303,312, 12, 10), text("9"), colour("black"), FontColour("black")
- label bounds(320,312, 12, 10), text("10"), colour("black"), FontColour("black")
- label bounds(340,312, 12, 10), text("11"), colour("black"), FontColour("black")
- label bounds(360,312, 12, 10), text("12"), colour("black"), FontColour("black")
- label bounds(380,312, 12, 10), text("13"), colour("black"), FontColour("black")
- label bounds(400,312, 12, 10), text("14"), colour("black"), FontColour("black")
- label bounds(420,312, 12, 10), text("15"), colour("black"), FontColour("black")
- label bounds(440,312, 12, 10), text("16"), colour("black"), FontColour("black")
-
- label bounds(122, 325, 30, 12), text("On"), colour("black"), FontColour("black")
- checkbox bounds(140, 325, 12, 12), channel("On1"), value(0)
- checkbox bounds(160, 325, 12, 12), channel("On2"), value(0)
- checkbox bounds(180, 325, 12, 12), channel("On3"), value(0)
- checkbox bounds(200, 325, 12, 12), channel("On4"), value(0)
- checkbox bounds(220, 325, 12, 12), channel("On5"), value(0)
- checkbox bounds(240, 325, 12, 12), channel("On6"), value(0)
- checkbox bounds(260, 325, 12, 12), channel("On7"), value(0)
- checkbox bounds(280, 325, 12, 12), channel("On8"), value(0)
- checkbox bounds(300, 325, 12, 12), channel("On9"), value(0)
- checkbox bounds(320, 325, 12, 12), channel("On10"), value(0)
- checkbox bounds(340, 325, 12, 12), channel("On11"), value(0)
- checkbox bounds(360, 325, 12, 12), channel("On12"), value(0)
- checkbox bounds(380, 325, 12, 12), channel("On13"), value(0)
- checkbox bounds(400, 325, 12, 12), channel("On14"), value(0)
- checkbox bounds(420, 325, 12, 12), channel("On15"), value(0)
- checkbox bounds(440, 325, 12, 12), channel("On16"), value(0)
-
- label bounds( 98, 345, 40, 12), text("Accent"), colour("black"), FontColour("black")
- checkbox bounds(140, 345, 12, 12), channel("Acc1"), value(0), colour("yellow")
- checkbox bounds(160, 345, 12, 12), channel("Acc2"), value(0), colour("yellow")
- checkbox bounds(180, 345, 12, 12), channel("Acc3"), value(0), colour("yellow")
- checkbox bounds(200, 345, 12, 12), channel("Acc4"), value(0), colour("yellow")
- checkbox bounds(220, 345, 12, 12), channel("Acc5"), value(0), colour("yellow")
- checkbox bounds(240, 345, 12, 12), channel("Acc6"), value(0), colour("yellow")
- checkbox bounds(260, 345, 12, 12), channel("Acc7"), value(0), colour("yellow")
- checkbox bounds(280, 345, 12, 12), channel("Acc8"), value(0), colour("yellow")
- checkbox bounds(300, 345, 12, 12), channel("Acc9"), value(0), colour("yellow")
- checkbox bounds(320, 345, 12, 12), channel("Acc10"), value(0), colour("yellow")
- checkbox bounds(340, 345, 12, 12), channel("Acc11"), value(0), colour("yellow")
- checkbox bounds(360, 345, 12, 12), channel("Acc12"), value(0), colour("yellow")
- checkbox bounds(380, 345, 12, 12), channel("Acc13"), value(0), colour("yellow")
- checkbox bounds(400, 345, 12, 12), channel("Acc14"), value(0), colour("yellow")
- checkbox bounds(420, 345, 12, 12), channel("Acc15"), value(0), colour("yellow")
- checkbox bounds(440, 345, 12, 12), channel("Acc16"), value(0), colour("yellow")
-
- </Cabbage>
-
- <CsoundSynthesizer>
-
- <CsOptions>
- -n -+rtmidi=null -M0 -dm0
- </CsOptions>
-
- <CsInstruments>
-
- sr = 44100 ;SAMPLE RATE
- ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE
- nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO)
- 0dbfs = 1
- massign 0,2
-
- ;Author: Iain McCurdy (2012)
-
- gisine ftgen 0,0,1024,10,1 ;A SINE WAVE
- gicos ftgen 0,0,65536,9,1,1,90 ;A COSINE WAVE
- gkoff init 0
- ; 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16
- giOn1 ftgen 0,0,16,2, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0 ;BD
- giOn2 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0 ;SN
- giOn3 ftgen 0,0,16,2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 ;HHO
- giOn4 ftgen 0,0,16,2, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1 ;HHCl
- giOn5 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Hi Tom
- giOn6 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Mid Tom
- giOn7 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ;Lo Tom
- giOn8 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 ;Cym
- giOn9 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Rimshot
- giOn10 ftgen 0,0,16,2, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0 ;Claves
- giOn11 ftgen 0,0,16,2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1 ;Cowbell
- giOn12 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ;Clap
- giOn13 ftgen 0,0,16,2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ;Maraca
- giOn14 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 ;Hi Conga
- giOn15 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 ;Mid Conga
- giOn16 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 ;Lo Conga
- giAcc1 ftgen 0,0,16,2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;BD
- giAcc2 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;SN
- giAcc3 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;HHO
- giAcc4 ftgen 0,0,16,2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ;HHCl
- giAcc5 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Hi Tom
- giAcc6 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Mid Tom
- giAcc7 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Lo Tom
- giAcc8 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ;Cym
- giAcc9 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Rimshot
- giAcc10 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Claves
- giAcc11 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Cowbell
- giAcc12 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Clap
- giAcc13 ftgen 0,0,16,2, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ;Maraca
- giAcc14 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ;Hi Conga
- giAcc15 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ;Mid Conga
- giAcc16 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 ;Lo Conga
- giblank ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;blank
-
- instr 1 ;READ IN WIDGETS, SCAN MIDI NOTES PLAYED AND RELAY TO DRUM SOUNDS
- ;READ IN WIDGETS
- gklevel1 chnget "level1"
- gklevel2 chnget "level2"
- gklevel3 chnget "level3"
- gklevel4 chnget "level4"
- gklevel5 chnget "level5"
- gklevel6 chnget "level6"
- gklevel7 chnget "level7"
- gklevel8 chnget "level8"
- gklevel9 chnget "level9"
- gklevel10 chnget "level10"
- gklevel11 chnget "level11"
- gklevel12 chnget "level12"
- gklevel13 chnget "level13"
- gklevel14 chnget "level14"
- gklevel15 chnget "level15"
- gklevel16 chnget "level16"
- gktune1 chnget "tune1"
- gktune2 chnget "tune2"
- gktune3 chnget "tune3"
- gktune4 chnget "tune4"
- gktune5 chnget "tune5"
- gktune6 chnget "tune6"
- gktune7 chnget "tune7"
- gktune8 chnget "tune8"
- gktune9 chnget "tune9"
- gktune10 chnget "tune10"
- gktune11 chnget "tune11"
- gktune12 chnget "tune12"
- gktune13 chnget "tune13"
- gktune14 chnget "tune14"
- gktune15 chnget "tune15"
- gktune16 chnget "tune16"
- gkdur1 chnget "dur1"
- gkdur2 chnget "dur2"
- gkdur3 chnget "dur3"
- gkdur4 chnget "dur4"
- gkdur5 chnget "dur5"
- gkdur6 chnget "dur6"
- gkdur7 chnget "dur7"
- gkdur8 chnget "dur8"
- gkdur9 chnget "dur9"
- gkdur10 chnget "dur10"
- gkdur11 chnget "dur11"
- gkdur12 chnget "dur12"
- gkdur13 chnget "dur13"
- gkdur14 chnget "dur14"
- gkdur15 chnget "dur15"
- gkdur16 chnget "dur16"
- gkpan1 chnget "pan1"
- gkpan2 chnget "pan2"
- gkpan3 chnget "pan3"
- gkpan4 chnget "pan4"
- gkpan5 chnget "pan5"
- gkpan6 chnget "pan6"
- gkpan7 chnget "pan7"
- gkpan8 chnget "pan8"
- gkpan9 chnget "pan9"
- gkpan10 chnget "pan10"
- gkpan11 chnget "pan11"
- gkpan12 chnget "pan12"
- gkpan13 chnget "pan13"
- gkpan14 chnget "pan14"
- gkpan15 chnget "pan15"
- gkpan16 chnget "pan16"
- gkOnOff chnget "OnOff"
- gksound chnget "sound"
- gkOn1 chnget "On1"
- gkOn2 chnget "On2"
- gkOn3 chnget "On3"
- gkOn4 chnget "On4"
- gkOn5 chnget "On5"
- gkOn6 chnget "On6"
- gkOn7 chnget "On7"
- gkOn8 chnget "On8"
- gkOn9 chnget "On9"
- gkOn10 chnget "On10"
- gkOn11 chnget "On11"
- gkOn12 chnget "On12"
- gkOn13 chnget "On13"
- gkOn14 chnget "On14"
- gkOn15 chnget "On15"
- gkOn16 chnget "On16"
- gkAcc1 chnget "Acc1"
- gkAcc2 chnget "Acc2"
- gkAcc3 chnget "Acc3"
- gkAcc4 chnget "Acc4"
- gkAcc5 chnget "Acc5"
- gkAcc6 chnget "Acc6"
- gkAcc7 chnget "Acc7"
- gkAcc8 chnget "Acc8"
- gkAcc9 chnget "Acc9"
- gkAcc10 chnget "Acc10"
- gkAcc11 chnget "Acc11"
- gkAcc12 chnget "Acc12"
- gkAcc13 chnget "Acc13"
- gkAcc14 chnget "Acc14"
- gkAcc15 chnget "Acc15"
- gkAcc16 chnget "Acc16"
- gkclear chnget "clear"
- gksave chnget "save"
- gkload chnget "load"
- gkpattern chnget "pattern"
- gkAccLev chnget "AccLev"
- gktempo chnget "tempo"
- gkswing chnget "swing"
- gklevel chnget "level"
-
- ;START/STOP SEQUENCER
- ktrig changed gkOnOff ;if Run/Stop button is changed...
- if ktrig==1 then ;
- if gkOnOff==1 then ;...if Run/Stop has been changed to 'Run'...
- event "i",3,0,-1 ;...start instr 3 playing a held note
- else ;otherwise...
- event "i",-3,0,0 ;...stop instr 3 playing
- endif
- endif
-
- ;CLEAR SEQUENCES FOR ALL DRUM SOUNDS
- ktrig changed gkclear
- if ktrig==1 then
- tablecopy giOn1, giblank ;copy blank table over existing sequence for voice 1
- tablecopy giOn2, giblank ;repeat for every other voice
- tablecopy giOn3, giblank
- tablecopy giOn4, giblank
- tablecopy giOn5, giblank
- tablecopy giOn6, giblank
- tablecopy giOn7, giblank
- tablecopy giOn8, giblank
- tablecopy giOn9, giblank
- tablecopy giOn10, giblank
- tablecopy giOn11, giblank
- tablecopy giOn12, giblank
- tablecopy giOn13, giblank
- tablecopy giOn14, giblank
- tablecopy giOn15, giblank
- tablecopy giOn16, giblank
- tablecopy giAcc1, giblank
- tablecopy giAcc2, giblank
- tablecopy giAcc3, giblank
- tablecopy giAcc4, giblank
- tablecopy giAcc5, giblank
- tablecopy giAcc6, giblank
- tablecopy giAcc7, giblank
- tablecopy giAcc8, giblank
- tablecopy giAcc9, giblank
- tablecopy giAcc10, giblank
- tablecopy giAcc11, giblank
- tablecopy giAcc12, giblank
- tablecopy giAcc13, giblank
- tablecopy giAcc14, giblank
- tablecopy giAcc15, giblank
- tablecopy giAcc16, giblank
- endif
-
- ;STORE SEQUENCE TABLES
- ktrig changed gksave ;if save button is toggled...
- if ktrig==1 then
- reinit SAVE_TABLES ;begin a reinitialisation pass from label (ftsave operates only at i-time)
- endif
- SAVE_TABLES:
- 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
- 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
- rireturn
-
- ;LOAD SEQUENCE TABLES
- ktrig changed gkload ;if load button is toggled...
- if ktrig==1 then
- reinit LOAD_TABLES ;begin a reinitialisation pass from label (ftload operates only at i-time)
- endif
- LOAD_TABLES:
- 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
- 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
- rireturn
-
- ;UPDATE SEQUENCE DISPLAY
- ktrig changed gksound,gkclear,gkload
- if ktrig==1 then
- #define UPDATE_SEQUENCE(N)
- #
- kval tablekt $N-1,giOn1+gksound-1
- chnset kval,"On$N"
- kval tablekt $N-1,giAcc1+gksound-1
- chnset kval,"Acc$N"
- #
- $UPDATE_SEQUENCE(1)
- $UPDATE_SEQUENCE(2)
- $UPDATE_SEQUENCE(3)
- $UPDATE_SEQUENCE(4)
- $UPDATE_SEQUENCE(5)
- $UPDATE_SEQUENCE(6)
- $UPDATE_SEQUENCE(7)
- $UPDATE_SEQUENCE(8)
- $UPDATE_SEQUENCE(9)
- $UPDATE_SEQUENCE(10)
- $UPDATE_SEQUENCE(11)
- $UPDATE_SEQUENCE(12)
- $UPDATE_SEQUENCE(13)
- $UPDATE_SEQUENCE(14)
- $UPDATE_SEQUENCE(15)
- $UPDATE_SEQUENCE(16)
- endif
-
- ;UPDATE TABLE IF SEQUENCE BUTTON CHANGED
- #define UPDATE_TABLE(N)
- #
- ktrig changed gkOn$N
- if ktrig==1 then
- tablewkt gkOn$N,$N-1,giOn1+gksound-1
- endif
- ktrig changed gkAcc$N
- if ktrig==1 then
- tablewkt gkAcc$N,$N-1,giAcc1+gksound-1
- endif
- #
- $UPDATE_TABLE(1)
- $UPDATE_TABLE(2)
- $UPDATE_TABLE(3)
- $UPDATE_TABLE(4)
- $UPDATE_TABLE(5)
- $UPDATE_TABLE(6)
- $UPDATE_TABLE(7)
- $UPDATE_TABLE(8)
- $UPDATE_TABLE(9)
- $UPDATE_TABLE(10)
- $UPDATE_TABLE(11)
- $UPDATE_TABLE(12)
- $UPDATE_TABLE(13)
- $UPDATE_TABLE(14)
- $UPDATE_TABLE(15)
- $UPDATE_TABLE(16)
- endin
-
- instr 2 ;READ MIDI AND TRIGGER NOTES
- inum notnum ;READ IN MIDI NOTE NUMBER
- idb veloc -30,0 ;READ IN MIDI NOTE VELOCITY (WILL BE USED AS A DECIBEL VALUE)
- iinstr wrap inum,0,16 ;MAP MIDI NOTE NUMBERS (RANGE: 0 - 127) TO DRUM SOUND NUMBER (0 - 15)
- event_i "i",101+iinstr,0,0.001,ampdbfs(idb) ;CALL THE RELEVANT INSTRUMENT AND SEND AMPLITUDE VALUE AS p4
- endin
-
- instr 3 ;PLAY SEQUENCE
- gindx init 0
- ktick metro (gktempo*4)/60
-
- ;SWING
- kSwingBeat init 0
- kSwingTime = (kSwingBeat==1?(60*gkswing)/(gktempo*4):0)
- if ktick==1 then
- kSwingBeat = abs(kSwingBeat-1) ;FLIP BETWEEN ZERO AND 1
- endif
-
- schedkwhen ktick, 0, 0, 4, kSwingTime, 0.001
- endin
-
- instr 4 ;TEST FOR NOTE ON SEQUENCE STEP
- #define VOICE(N)
- #
- iOnOff$N table gindx, giOn$N
- if iOnOff$N==1 then
- iAcc table gindx,giAcc$N
- event_i "i", 100+$N, 0, 0.001, 0.4 + (iAcc*i(gkAccLev))
- endif
- #
- $VOICE(1)
- $VOICE(2)
- $VOICE(3)
- $VOICE(4)
- $VOICE(5)
- $VOICE(6)
- $VOICE(7)
- $VOICE(8)
- $VOICE(9)
- $VOICE(10)
- $VOICE(11)
- $VOICE(12)
- $VOICE(13)
- $VOICE(14)
- $VOICE(15)
- $VOICE(16)
- gindx wrap gindx+1, 0, 16
- turnoff
- endin
-
- instr 101 ;BASS DRUM
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act1" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
-
- p3 = 2*i(gkdur1) ;NOTE DURATION. SCALED USING GUI 'Decay' KNOB
-
- ;SUSTAIN AND BODY OF THE SOUND
- 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.
- kbend transeg 0.5,1.2,-4, 0,1,0,0 ;SLIGHT PITCH BEND AT THE START OF THE NOTE
- asig gbuzz 0.5,50*octave(gktune1)*semitone(kbend),20,1,kmul,gicos ;GBUZZ TONE
- aenv transeg 1,p3-0.004,-6,0 ;AMPLITUDE ENVELOPE FOR SUSTAIN OF THE SOUND
- aatt linseg 0,0.004,1 ;SOFT ATTACK
- asig = asig*aenv*aatt
-
- ;HARD, SHORT ATTACK OF THE SOUND
- aenv linseg 1,0.07,0 ;AMPLITUDE ENVELOPE (FAST DECAY)
- acps expsega 400,0.07,0.001,1,0.001 ;FREQUENCY OF THE ATTACK SOUND. QUICKLY GLISSES FROM 400 Hz TO SUB-AUDIO
- aimp oscili aenv,acps*octave(gktune1*0.25),gisine ;CREATE ATTACK SOUND
-
- amix = ((asig*0.5)+(aimp*0.35))*gklevel1*p4*gklevel ;MIX SUSTAIN AND ATTACK SOUND ELEMENTS AND SCALE USING GUI 'Level' KNOB
-
- aL,aR pan2 amix,gkpan1 ;PAN THE MONOPHONIC SOUND
- outs aL,aR ;SEND AUDIO TO OUTPUTS
- endin
-
- instr 102 ;SNARE DRUM
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act2" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
-
- ;SOUND CONSISTS OF TWO SINE TONES, AN OCTAVE APART AND A NOISE SIGNAL
- ifrq = 342 ;FREQUENCY OF THE TONES
- iNseDur = 0.3 * i(gkdur2) ;DURATION OF THE NOISE COMPONENT
- iPchDur = 0.1 * i(gkdur2) ;DURATION OF THE SINE TONES COMPONENT
- p3 = iNseDur ;p3 DURATION TAKEN FROM NOISE COMPONENT DURATION (ALWATS THE LONGEST COMPONENT)
-
- ;SINE TONES COMPONENT
- aenv1 expseg 1,iPchDur,0.0001,p3-iPchDur,0.0001 ;AMPLITUDE ENVELOPE
- apitch1 oscili 1,ifrq*octave(gktune2),gisine ;SINE TONE 1
- apitch2 oscili 0.25,ifrq*0.5*octave(gktune2),gisine ;SINE TONE 2 (AN OCTAVE LOWER)
- apitch = (apitch1+apitch2)*0.75 ;MIX THE TWO SINE TONES
-
- ;NOISE COMPONENT
- aenv2 expon 1,p3,0.0005 ;AMPLITUDE ENVELOPE
- anoise noise 0.75,0 ;CREATE SOME NOISE
- anoise butbp anoise,10000*octave(gktune2),10000 ;BANDPASS FILTER THE NOISE SIGNAL
- anoise buthp anoise,1000 ;HIGHPASS FILTER THE NOISE SIGNAL
- kcf expseg 5000,0.1,3000,p3-0.2,3000 ;CUTOFF FREQUENCY FOR A LOWPASS FILTER
- anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL
- amix = ((apitch*aenv1)+(anoise*aenv2))*gklevel2*p4*gklevel ;MIX AUDIO SIGNALS AND SCALE ACCORDING TO GUI 'Level' CONTROL
- aL,aR pan2 amix,i(gkpan2) ;PAN THE MONOPHONIC AUDIO SIGNAL
- outs aL,aR ;SEND AUDIO TO OUTPUTS
- endin
-
- instr 103 ;OPEN HIGH HAT
- xtratim 0.1
- kFrq1 = 296*octave(gktune3) ;FREQUENCIES OF THE 6 OSCILLATORS
- kFrq2 = 285*octave(gktune3)
- kFrq3 = 365*octave(gktune3)
- kFrq4 = 348*octave(gktune3)
- kFrq5 = 420*octave(gktune3)
- kFrq6 = 835*octave(gktune3)
- p3 = 0.5*i(gkdur3) ;DURATION OF THE NOTE
-
- ;SOUND CONSISTS OF 6 PULSE OSCILLATORS MIXED WITH A NOISE COMPONENT
- ;PITCHED ELEMENT
- aenv linseg 1,p3-0.05,0.1,0.05,0 ;AMPLITUDE ENVELOPE FOR THE PULSE OSCILLATORS
- ipw = 0.25 ;PULSE WIDTH
- a1 vco2 0.5,kFrq1,2,ipw ;PULSE OSCILLATORS...
- a2 vco2 0.5,kFrq2,2,ipw
- a3 vco2 0.5,kFrq3,2,ipw
- a4 vco2 0.5,kFrq4,2,ipw
- a5 vco2 0.5,kFrq5,2,ipw
- a6 vco2 0.5,kFrq6,2,ipw
- amix sum a1,a2,a3,a4,a5,a6 ;MIX THE PULSE OSCILLATORS
- amix reson amix,5000*octave(gktune3),5000,1 ;BANDPASS FILTER THE MIXTURE
- amix buthp amix,5000 ;HIGHPASS FILTER THE SOUND...
- amix buthp amix,5000 ;...AND AGAIN
- amix = amix*aenv ;APPLY THE AMPLITUDE ENVELOPE
-
- ;NOISE ELEMENT
- anoise noise 0.8,0 ;GENERATE SOME WHITE NOISE
- aenv linseg 1,p3-0.05,0.1,0.05,0 ;CREATE AN AMPLITUDE ENVELOPE
- kcf expseg 20000,0.7,9000,p3-0.1,9000 ;CREATE A CUTOFF FREQ. ENVELOPE
- anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL
- anoise buthp anoise,8000 ;HIGHPASS FILTER THE NOISE SIGNAL
- anoise = anoise*aenv ;APPLY THE AMPLITUDE ENVELOPE
-
- ;MIX PULSE OSCILLATOR AND NOISE COMPONENTS
- amix = (amix+anoise)*gklevel3*p4*0.55*gklevel
- aL,aR pan2 amix,gkpan3 ;PAN MONOPHONIC SIGNAL
- outs aL,aR ;SEND TO OUTPUTS
- ;kactive active p1+1 ;CHECK NUMBER OF ACTIVE INSTANCES OF CLOSED HIGH HAT INSTRUMENT
- ;if kactive>0 then ;IF HIGH-HAT CLOSED IS ACTIVE...
- ; turnoff ;TURN OFF THIS INSTRUMENT
- ;endif
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act3" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- endin
-
- instr 104 ;CLOSED HIGH HAT
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act4" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- kFrq1 = 296*octave(gktune4) ;FREQUENCIES OF THE 6 OSCILLATORS
- kFrq2 = 285*octave(gktune4)
- kFrq3 = 365*octave(gktune4)
- kFrq4 = 348*octave(gktune4)
- kFrq5 = 420*octave(gktune4)
- kFrq6 = 835*octave(gktune4)
- idur = 0.088*i(gkdur4) ;DURATION OF THE NOTE
- 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)
-
- iactive active p1-1 ;SENSE ACTIVITY OF PREVIOUS INSTRUMENT (OPEN HIGH HAT)
- if iactive>0 then ;IF 'OPEN HIGH HAT' IS ACTIVE...
- turnoff2 p1-1,0,0 ;TURN IT OFF (CLOSED HIGH HAT TAKES PRESIDENCE)
- chnset gkoff,"Act3" ;TURN OFF ACTIVE LIGHT FOR OPEN HIGH HAT
- endif
-
- ;PITCHED ELEMENT
- aenv expsega 1,idur,0.001,1,0.001 ;AMPLITUDE ENVELOPE FOR THE PULSE OSCILLATORS
- ipw = 0.25 ;PULSE WIDTH
- a1 vco2 0.5,kFrq1,2,ipw ;PULSE OSCILLATORS...
- a2 vco2 0.5,kFrq2,2,ipw
- a3 vco2 0.5,kFrq3,2,ipw
- a4 vco2 0.5,kFrq4,2,ipw
- a5 vco2 0.5,kFrq5,2,ipw
- a6 vco2 0.5,kFrq6,2,ipw
- amix sum a1,a2,a3,a4,a5,a6 ;MIX THE PULSE OSCILLATORS
- amix reson amix,5000*octave(gktune4),5000,1 ;BANDPASS FILTER THE MIXTURE
- amix buthp amix,5000 ;HIGHPASS FILTER THE SOUND...
- amix buthp amix,5000 ;...AND AGAIN
- amix = amix*aenv ;APPLY THE AMPLITUDE ENVELOPE
-
- ;NOISE ELEMENT
- anoise noise 0.8,0 ;GENERATE SOME WHITE NOISE
- aenv expsega 1,idur,0.001,1,0.001 ;CREATE AN AMPLITUDE ENVELOPE
- kcf expseg 20000,0.7,9000,idur-0.1,9000 ;CREATE A CUTOFF FREQ. ENVELOPE
- anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL
- anoise buthp anoise,8000 ;HIGHPASS FILTER THE NOISE SIGNAL
- anoise = anoise*aenv ;APPLY THE AMPLITUDE ENVELOPE
-
- ;MIX PULSE OSCILLATOR AND NOISE COMPONENTS
- amix = (amix+anoise)*gklevel4*p4*0.55*gklevel
- aL,aR pan2 amix,gkpan4 ;PAN MONOPHONIC SIGNAL
- outs aL,aR ;SEND TO OUTPUTS
- endin
-
- instr 105 ;HIGH TOM
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act5" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- ifrq = 200 * octave(i(gktune5)) ;FREQUENCY
- p3 = 0.5 * i(gkdur5) ;DURATION OF THIS NOTE
-
- ;SINE TONE SIGNAL
- aAmpEnv transeg 1,p3,-10,0.001 ;AMPLITUDE ENVELOPE FOR SINE TONE SIGNAL
- afmod expsega 5,0.125/ifrq,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE TONE MORE OF AN ATTACK.
- asig oscili -aAmpEnv*0.6,ifrq*afmod,gisine ;SINE TONE SIGNAL
-
- ;NOISE SIGNAL
- aEnvNse transeg 1,p3,-6,0.001 ;AMPLITUDE ENVELOPE FOR NOISE SIGNAL
- anoise dust2 0.4, 8000 ;GENERATE NOISE SIGNAL
- anoise reson anoise,400*octave(i(gktune5)),800,1 ;BANDPASS FILTER THE NOISE SIGNAL
- anoise buthp anoise,100*octave(i(gktune5)) ;HIGHPASS FILTER THE NOSIE SIGNAL
- anoise butlp anoise,1000*octave(i(gktune5)) ;LOWPASS FILTER THE NOISE SIGNAL
- anoise = anoise * aEnvNse ;SCALE NOISE SIGNAL WITH AMPLITUDE ENVELOPE
-
- ;MIX THE TWO SOUND COMPONENTS
- amix = (asig + anoise)*gklevel5*p4*gklevel
- aL,aR pan2 amix,gkpan5 ;PAN MONOPHONIC SIGNAL
- outs aL,aR ;SEND AUDIO TO OUTPUTS
- endin
-
- instr 106 ;MID TOM
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act6" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- ifrq = 133*octave(i(gktune6)) ;FREQUENCY
- p3 = 0.6 * i(gkdur6) ;DURATION OF THIS NOTE
-
- ;SINE TONE SIGNAL
- aAmpEnv transeg 1,p3,-10,0.001 ;AMPLITUDE ENVELOPE FOR SINE TONE SIGNAL
- afmod expsega 5,0.125/ifrq,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE TONE MORE OF AN ATTACK.
- asig oscili -aAmpEnv*0.6,ifrq*afmod,gisine ;SINE TONE SIGNAL
-
- ;NOISE SIGNAL
- aEnvNse transeg 1,p3,-6,0.001 ;AMPLITUDE ENVELOPE FOR NOISE SIGNAL
- anoise dust2 0.4, 8000 ;GENERATE NOISE SIGNAL
- anoise reson anoise, 400*octave(i(gktune6)),800,1 ;BANDPASS FILTER THE NOISE SIGNAL
- anoise buthp anoise,100*octave(i(gktune6)) ;HIGHPASS FILTER THE NOSIE SIGNAL
- anoise butlp anoise,600*octave(i(gktune6)) ;LOWPASS FILTER THE NOISE SIGNAL
- anoise = anoise * aEnvNse ;SCALE NOISE SIGNAL WITH AMPLITUDE ENVELOPE
-
- ;MIX THE TWO SOUND COMPONENTS
- amix = (asig + anoise)*gklevel6*p4*gklevel
- aL,aR pan2 amix,i(gkpan6) ;PAN MONOPHONIC SIGNAL
- outs aL,aR ;SEND AUDIO TO OUTPUTS
- endin
-
- instr 107 ;LOW TOM
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act7" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- ifrq = 90 * octave(i(gktune7)) ;FREQUENCY
- p3 = 0.7*i(gkdur7) ;DURATION OF THIS NOTE
-
- ;SINE TONE SIGNAL
- aAmpEnv transeg 1,p3,-10,0.001 ;AMPLITUDE ENVELOPE FOR SINE TONE SIGNAL
- afmod expsega 5,0.125/ifrq,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE TONE MORE OF AN ATTACK.
- asig oscili -aAmpEnv*0.6,ifrq*afmod,gisine ;SINE TONE SIGNAL
-
- ;NOISE SIGNAL
- aEnvNse transeg 1,p3,-6,0.001 ;AMPLITUDE ENVELOPE FOR NOISE SIGNAL
- anoise dust2 0.4, 8000 ;GENERATE NOISE SIGNAL
- anoise reson anoise,40*octave(gktune7),800,1 ;BANDPASS FILTER THE NOISE SIGNAL
- anoise buthp anoise,100*octave(i(gktune7)) ;HIGHPASS FILTER THE NOSIE SIGNAL
- anoise butlp anoise,600*octave(i(gktune7)) ;LOWPASS FILTER THE NOISE SIGNAL
- anoise = anoise * aEnvNse ;SCALE NOISE SIGNAL WITH AMPLITUDE ENVELOPE
-
- ;MIX THE TWO SOUND COMPONENTS
- amix = (asig + anoise)*gklevel7*p4*gklevel
- aL,aR pan2 amix,i(gkpan7) ;PAN MONOPHONIC SIGNAL
- outs aL,aR ;SEND AUDIO TO OUTPUTS
- endin
-
- instr 108 ;CYMBAL
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act8" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- kFrq1 = 296*octave(gktune8) ;FREQUENCIES OF THE 6 OSCILLATORS
- kFrq2 = 285*octave(gktune8)
- kFrq3 = 365*octave(gktune8)
- kFrq4 = 348*octave(gktune8)
- kFrq5 = 420*octave(gktune8)
- kFrq6 = 835*octave(gktune8)
- p3 = 2*i(gkdur8) ;DURATION OF THE NOTE
-
- ;SOUND CONSISTS OF 6 PULSE OSCILLATORS MIXED WITH A NOISE COMPONENT
- ;PITCHED ELEMENT
- aenv expon 1,p3,0.0001 ;AMPLITUDE ENVELOPE FOR THE PULSE OSCILLATORS
- ipw = 0.25 ;PULSE WIDTH
- a1 vco2 0.5,kFrq1,2,ipw ;PULSE OSCILLATORS...
- a2 vco2 0.5,kFrq2,2,ipw
- a3 vco2 0.5,kFrq3,2,ipw
- a4 vco2 0.5,kFrq4,2,ipw
- a5 vco2 0.5,kFrq5,2,ipw
- a6 vco2 0.5,kFrq6,2,ipw
- amix sum a1,a2,a3,a4,a5,a6 ;MIX THE PULSE OSCILLATORS
- amix reson amix,5000 *octave(gktune8),5000,1 ;BANDPASS FILTER THE MIXTURE
- amix buthp amix,10000 ;HIGHPASS FILTER THE SOUND
- amix butlp amix,12000 ;LOWPASS FILTER THE SOUND...
- amix butlp amix,12000 ;AND AGAIN...
- amix = amix*aenv ;APPLY THE AMPLITUDE ENVELOPE
-
- ;NOISE ELEMENT
- anoise noise 0.8,0 ;GENERATE SOME WHITE NOISE
- aenv expsega 1,0.3,0.07,p3-0.1,0.00001 ;CREATE AN AMPLITUDE ENVELOPE
- kcf expseg 14000,0.7,7000,p3-0.1,5000 ;CREATE A CUTOFF FREQ. ENVELOPE
- anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL
- anoise buthp anoise,8000 ;HIGHPASS FILTER THE NOISE SIGNAL
- anoise = anoise*aenv ;APPLY THE AMPLITUDE ENVELOPE
-
- ;MIX PULSE OSCILLATOR AND NOISE COMPONENTS
- amix = (amix+anoise)*gklevel8*p4*0.85*gklevel
- aL,aR pan2 amix,i(gkpan8) ;PAN MONOPHONIC SIGNAL
- outs aL,aR ;SEND TO OUTPUTS
- endin
-
- instr 109 ;RIM SHOT
- xtratim 0.1
- 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
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act9" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- idur = 0.027*i(gkdur9) ;NOTE DURATION
- 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)
-
- ;RING
- aenv1 expsega 1,idur,0.001,1,0.001 ;AMPLITUDE ENVELOPE FOR SUSTAIN ELEMENT OF SOUND
- ifrq1 = 1700*octave(i(gktune9)) ;FREQUENCY OF SUSTAIN ELEMENT OF SOUND
- aring oscili 1,ifrq1,iTR808RimShot,0 ;CREATE SUSTAIN ELEMENT OF SOUND
- aring butbp aring,ifrq1,ifrq1*8
- aring = aring*(aenv1-0.001)*0.5 ;APPLY AMPLITUDE ENVELOPE
-
- ;NOISE
- anoise noise 1,0 ;CREATE A NOISE SIGNAL
- aenv2 expsega 1, 0.002, 0.8, 0.005, 0.5, idur-0.002-0.005, 0.0001, 1, 0.0001 ;CREATE AMPLITUDE ENVELOPE
- anoise buthp anoise,800 ;HIGHPASS FILTER THE NOISE SOUND
- kcf expseg 4000,p3,20 ;CUTOFF FREQUENCY FUNCTION FOR LOWPASS FILTER
- anoise butlp anoise,kcf ;LOWPASS FILTER THE SOUND
- anoise = anoise*(aenv2-0.001) ;APPLY ENVELOPE TO NOISE SIGNAL
-
- ;MIX
- amix = (aring+anoise)*gklevel9*p4*0.8*gklevel
- aL,aR pan2 amix,gkpan9 ;PAN MONOPHONIC SIGNAL
- outs aL,aR ;SEND TO OUTPUTS
- endin
-
- instr 110 ;CLAVES
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act10" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- ifrq = 2500*octave(i(gktune10)) ;FREQUENCY OF OSCILLATOR
- idur = 0.045 * i(gkdur10) ;DURATION OF THE NOTE
- 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)
- aenv expsega 1,idur,0.001,1,0.001 ;AMPLITUDE ENVELOPE
- afmod expsega 3,0.00005,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE SOUND A LITTLE MORE ATTACK.
- asig oscili -(aenv-0.001),ifrq*afmod,gisine,0 ;AUDIO OSCILLATOR
- asig = asig*0.4*gklevel10*p4*gklevel ;RESCALE AMPLITUDE
- aL,aR pan2 asig,gkpan10 ;PAN MONOPHONIC AUDIO SIGNAL
- outs aL,aR ;SEND AUDIO TO OUTPUTS
- endin
-
- instr 111 ;COWBELL
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act11" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- ifrq1 = 562 * octave(i(gktune11)) ;FREQUENCIES OF THE TWO OSCILLATORS
- ifrq2 = 845 * octave(i(gktune11)) ;
- ipw = 0.5 ;PULSE WIDTH OF THE OSCILLATOR
- idur = 0.7 ;NOTE DURATION
- ishp = -30
- idur = 0.7 ;NOTE DURATION
- 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)
- ishape = -30 ;SHAPE OF THE CURVES IN THE AMPLITUDE ENVELOPE
- kenv1 transeg 1,p3*0.3,ishape,0.2, p3*0.7,ishape,0.2 ;FIRST AMPLITUDE ENVELOPE - PRINCIPALLY THE ATTACK OF THE NOTE
- kenv2 expon 1,p3,0.0005 ;SECOND AMPLITUDE ENVELOPE - THE SUSTAIN PORTION OF THE NOTE
- kenv = kenv1*kenv2 ;COMBINE THE TWO ENVELOPES
- itype = 2 ;WAVEFORM FOR VCO2 (2=PULSE)
- a1 vco2 0.65,ifrq1,itype,ipw ;CREATE THE TWO OSCILLATORS
- a2 vco2 0.65,ifrq2,itype,ipw
- amix = a1+a2 ;MIX THE TWO OSCILLATORS
- iLPF2 = 10000 ;LOWPASS FILTER RESTING FREQUENCY
- kcf expseg 12000,0.07,iLPF2,1,iLPF2 ;LOWPASS FILTER CUTOFF FREQUENCY ENVELOPE
- alpf butlp amix,kcf ;LOWPASS FILTER THE MIX OF THE TWO OSCILLATORS (CREATE A NEW SIGNAL)
- abpf reson amix, ifrq2, 25 ;BANDPASS FILTER THE MIX OF THE TWO OSCILLATORS (CREATE A NEW SIGNAL)
- amix dcblock2 (abpf*0.06*kenv1)+(alpf*0.5)+(amix*0.9) ;MIX ALL SIGNALS AND BLOCK DC OFFSET
- amix buthp amix,700 ;HIGHPASS FILTER THE MIX OF ALL SIGNALS
- amix = amix*0.07*kenv*p4*gklevel11*gklevel ;RESCALE AMPLITUDE
- aL,aR pan2 amix,i(gkpan11) ;PAN THE MONOPHONIC AUDIO SIGNAL
- outs aL,aR ;SEND AUDIO TO OUTPUTS
- endin
-
- instr 112 ;CLAP
- ;;xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act12" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- iTimGap = 0.01 ;GAP BETWEEN EVENTS DURING ATTACK PORTION OF CLAP
- idur1 = 0.02 ;DURING OF THE THREE INITIAL 'CLAPS'
- idur2 = 2*i(gkdur12) ;DURATION OF THE FOURTH, MAIN, CLAP
- idens = 8000 ;DENSITY OF THE NOISE SIGNAL USED TO FORM THE CLAPS
- iamp1 = 0.5 ;AMPLITUDE OF AUDIO BEFORE BANDPASS FILTER IN OUTPUT
- iamp2 = 1 ;AMPLITUDE OF AUDIO AFTER BANDPASS FILTER IN OUTPUT
- if frac(p1)==0 then ;IF THIS IS THE INITIAL NOTE (p1 WILL BE AN INTEGER)
- ; del. dur env.shape
- 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
- event_i "i", p1+0.1, iTimGap, idur1, p4
- event_i "i", p1+0.1, iTimGap*2, idur1, p4
- event_i "i", p1+0.1, iTimGap*3, idur2, p4
- else
- kenv transeg 1,p3,-25,0 ;AMPLITUDE ENVELOPE
- iamp random 0.7,1 ;SLIGHT RANDOMISATION OF AMPLITUDE
- anoise dust2 kenv*iamp, idens ;CREATE NOISE SIGNAL
-
- iBPF = 1100*octave(i(gktune12)) ;FREQUENCY OF THE BANDPASS FILTER
- ibw = 2000*octave(i(gktune12)) ;BANDWIDTH OF THE BANDPASS FILTER
- iHPF = 1000 ;FREQUENCY OF A HIGHPASS FILTER
- iLPF = 1 ;SCALER FOR FREQUENCY OF A LOWPASS FILTER
- kcf expseg 8000,0.07,1700,1,800,2,500,1,500 ;CREATE CUTOFF FREQUENCY ENVELOPE
- asig butlp anoise,kcf*iLPF ;LOWPASS FILTER THE SOUND
- asig buthp asig,iHPF ;HIGHPASS FILTER THE SOUND
- ares reson asig,iBPF,ibw,1 ;BANDPASS FILTER THE SOUND (CREATE A NEW SIGNAL)
- asig dcblock2 (asig*iamp1)+(ares*iamp2) ;MIX BANDPASS FILTERED AND NON-BANDPASS FILTERED SOUND ELEMENTS
- asig = asig*p4*i(gklevel12)*1.75*gklevel ;SCALE AMPLITUDE
- aL,aR pan2 asig,i(gkpan12) ;PAN MONOPHONIC SIGNAL
- outs aL,aR ;SEND AUDIO TO OUTPUTS
- endif
- endin
-
- instr 113 ;MARACA
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act13" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- idur = 0.07*i(gkdur13) ;DURATION 3
- 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)
- iHPF limit 6000*octave(i(gktune13)),20,sr/2 ;HIGHPASS FILTER FREQUENCY
- iLPF limit 12000*octave(i(gktune13)),20,sr/3 ;LOWPASS FILTER FREQUENCY. (LIMIT MAXIMUM TO PREVENT OUT OF RANGE VALUES)
- ;AMPLITUDE ENVELOPE
- iBP1 = 0.4 ;BREAK-POINT 1
- iDur1 = 0.014*i(gkdur13) ;DURATION 1
- iBP2 = 1 ;BREAKPOINT 2
- iDur2 = 0.01 *i(gkdur13) ;DURATION 2
- iBP3 = 0.05 ;BREAKPOINT 3
- 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)
- aenv expsega iBP1,iDur1,iBP2,iDur2,iBP3 ;CREATE AMPLITUDE ENVELOPE
- anoise noise 0.75,0 ;CREATE A NOISE SIGNAL
- anoise buthp anoise,iHPF ;HIGHPASS FILTER THE SOUND
- anoise butlp anoise,iLPF ;LOWPASS FILTER THE SOUND
- anoise = anoise*aenv*p4*gklevel13*gklevel ;SCALE THE AMPLITUDE
- aL,aR pan2 anoise,i(gkpan13) ;PAN THE MONOPONIC SIGNAL
- outs aL,aR ;SEND AUDIO TO OUTPUTS
- endin
-
- instr 114 ;HIGH CONGA
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act14" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- ifrq = 420*octave(i(gktune14)) ;FREQUENCY OF NOTE
- p3 = 0.22*i(gkdur14) ;DURATION OF NOTE
- aenv transeg 0.7,1/ifrq,1,1,p3,-6,0.001 ;AMPLITUDE ENVELOPE
- afrq expsega ifrq*3,0.25/ifrq,ifrq,1,ifrq ;FREQUENCY ENVELOPE (CREATE A SHARPER ATTACK)
- asig oscili -aenv*0.25,afrq,gisine ;CREATE THE AUDIO OSCILLATOR
- asig = asig*p4*gklevel14*gklevel ;SCALE THE AMPLITUDE
- aL,aR pan2 asig,gkpan14 ;PAN THE MONOPHONIC AUDIO SIGNAL
- outs aL,aR ;SEND AUDIO TO THE OUTPUTS
- endin
-
- instr 115 ;MID CONGA
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act15" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- ifrq = 310*octave(i(gktune15)) ;FREQUENCY OF NOTE
- p3 = 0.33*i(gkdur15) ;DURATION OF NOTE
- aenv transeg 0.7,1/ifrq,1,1,p3,-6,0.001 ;AMPLITUDE ENVELOPE
- afrq expsega ifrq*3,0.25/ifrq,ifrq,1,ifrq ;FREQUENCY ENVELOPE (CREATE A SHARPER ATTACK)
- asig oscili -aenv*0.25,afrq,gisine ;CREATE THE AUDIO OSCILLATOR
- asig = asig*p4*gklevel15*gklevel ;SCALE THE AMPLITUDE
- aL,aR pan2 asig,gkpan15 ;PAN THE MONOPHONIC AUDIO SIGNAL
- outs aL,aR ;SEND AUDIO TO THE OUTPUTS
- endin
-
- instr 116 ;LOW CONGA
- xtratim 0.1
- krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)
- chnset 1-krelease,"Act16" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS
- ifrq = 227*octave(i(gktune16)) ;FREQUENCY OF NOTE
- p3 = 0.41*i(gkdur16) ;DURATION OF NOTE
- aenv transeg 0.7,1/ifrq,1,1,p3,-6,0.001 ;AMPLITUDE ENVELOPE
- afrq expsega ifrq*3,0.25/ifrq,ifrq,1,ifrq ;FREQUENCY ENVELOPE (CREATE A SHARPER ATTACK)
- asig oscili -aenv*0.25,afrq,gisine ;CREATE THE AUDIO OSCILLATOR
- asig = asig*p4*gklevel16*gklevel ;SCALE THE AMPLITUDE
- aL,aR pan2 asig,gkpan16 ;PAN THE MONOPHONIC AUDIO SIGNAL
- outs aL,aR ;SEND AUDIO TO THE OUTPUTS
- endin
-
- </CsInstruments>
-
- <CsScore>
- f 0 [3600*24*7]
- i 1 0 [3600*24*7]
- </CsScore>
-
- </CsoundSynthesizer>
|