aboutsummaryrefslogtreecommitdiff
path: root/BUG6
diff options
context:
space:
mode:
Diffstat (limited to 'BUG6')
-rw-r--r--BUG6/BUG6.csd139
-rw-r--r--BUG6/bid.udo150
-rw-r--r--BUG6/bid_source.udo158
-rw-r--r--BUG6/bussing.udo17
-rw-r--r--BUG6/instruments.udo11
5 files changed, 333 insertions, 142 deletions
diff --git a/BUG6/BUG6.csd b/BUG6/BUG6.csd
index 076d5f2..c9cbea4 100644
--- a/BUG6/BUG6.csd
+++ b/BUG6/BUG6.csd
@@ -9,7 +9,7 @@
http://git.1bpm.net/csd-unfixedbugs1/about/
- By Richard Knight 2021
+ By Richard Knight 2021, 2023, 2024
http://1bpm.net
q@1bpm.net
@@ -18,14 +18,14 @@
sr = 44100
ksmps = 64
nchnls = 2
-0dbfs = 1
+0dbfs = 1.1
seed 0
#define NOFILEIO ## ; file IO with readfi not supported on all platforms: disables bid_loadfile
gkmastergain init 1 ; master gain
gkpump = 0 ; kick ducking control
-gksection init -1
+gksection init 1
#include "wavetables.udo" ; general waveforms
#include "bussing.udo" ; global audio bussing
@@ -95,19 +95,13 @@ instr global_delay3
bus_mix("master", aLdel, aRdel)
endin
-/*
- Master audio output
-*/
-instr global_master
- igain = 1
- aL, aR bus_read "master"
- awindex phasor giglitchsamples/sr
- tablew aL, awindex*giglitchsamples, giglitchbufferL
- tablew aR, awindex*giglitchsamples, giglitchbufferR
-
- if (gksection == 1) then
- ilen = tab_i(1, gibid_sectionlengths) * gibid_beattime
+instr section_bus
+ isection = p4
+ ilen = p3
+ aL, aR bus_read "section_bus_send"
+
+ if (isection == 1) then
khpf linseg 0, ilen*0.5, 0, ilen*0.3, 100, ilen*0.1, 200, ilen*0.1, 900
knoiseamp linseg 0, ilen*0.8, 0.04, ilen*0.1, 0.1, ilen*0.1, 0.6
anL = noise(0.5, 0.2)
@@ -119,8 +113,7 @@ instr global_master
aR += resony(anR, kfreq*4, 8, 24, 4) * 0.01 * knoiseamp
aL butterhp aL, khpf
aR butterhp aR, khpf
- elseif (gksection == 3) then
- ilen = tab_i(3, gibid_sectionlengths) * gibid_beattime
+ elseif (isection == 3 || isection == 8 || isection == 12) then
anL = noise(0.5, 0.5)
anR = noise(0.5, 0.5)
knoiseamp linseg 0, ilen*0.7, 0.1, ilen*0.1, 0.2, ilen*0.2, 0.9
@@ -129,34 +122,37 @@ instr global_master
kfreq linseg ifreq1, ilen*0.8, ifreq1, ilen*0.2, ifreq2
aL += resony(anL, kfreq*4, 3, 24, 4) * 0.005 * knoiseamp
aR += resony(anR, kfreq*4, 3, 24, 4) * 0.005 * knoiseamp
- bus_mix("delay1", aL*knoiseamp*0.5, aR*knoiseamp*0.5)
+ bus_mix("delay1", aL*knoiseamp*0.3, aR*knoiseamp*0.3)
khpf expseg 1, ilen*0.4, 300, ilen*0.4, 600, ilen*0.1, 20, ilen*0.1, 20
aL butterhp aL, khpf
aR butterhp aR, khpf
endif
- aL limit aL*0.5, -1, 1
- aR limit aR*0.5, -1, 1
- outs aL*gkmastergain*igain, aR*gkmastergain*igain
-endin
+ bus_set("section_bus_return", aL, aR)
+endin
/*
- Print notification of performance time since last notification
- or if isection is -1, print completion notification
+ Master audio output
*/
-gitimetrack times
-instr notify_change
- isection = p4
- itime times
- if (isection == -1) then
- tt_notify(sprintf"Complete, runtime: %s", tt_parsetime(itime)))
- exitnow
- else
- isectiontime = itime - gitimetrack
- tt_notify(sprintf("%s : section %d complete in %s", tt_parsetime(itime), isection, tt_parsetime(isectiontime)))
- gitimetrack = itime
+instr global_master
+ igain = 1
+ aL, aR bus_read "master"
+
+ awindex phasor giglitchsamples/sr
+ tablew aL, awindex*giglitchsamples, giglitchbufferL
+ tablew aR, awindex*giglitchsamples, giglitchbufferR
+
+ if (changed:k(gksection) == 1) then
+ schedulek("section_bus", 0, tab:k(gksection, gibid_sectionlengths) * gibid_beattime, gksection)
endif
- turnoff
+
+ bus_set("section_bus_send", aL, aR)
+ aL, aR bus_read "section_bus_return"
+
+
+ aL limit aL*0.5, -1, 1
+ aR limit aR*0.5, -1, 1
+ outs aL*gkmastergain*igain, aR*gkmastergain*igain
endin
@@ -170,77 +166,22 @@ instr parseandrun
bid_loadtext(SBID)
tt_notify("Running sequencer")
- event_i "i", "sequencer", 0, 3600
+ schedule("sequencer", 0, 3600)
turnoff
endin
-instr endfade
- exitnow
-endin
-
-
instr sequencer
isection = 1
- event_i "i", "bid_setcurrentchord", 0, 1, isection, 0
- event_i "i", "global_master", 0, p3
- event_i "i", "global_delay1", 0, p3
- event_i "i", "global_delay2", 0, p3
- event_i "i", "global_delay3", 0, p3
- kmetro metro (gibid_tempo / 60) * 4
- kpos init 0
- kposabs init 0
- ksection init isection
- kposchord init 0
- gksection = ksection
- if (kmetro == 1) then
- if (ksection > gibid_maxsection) then
- ;event "i", "endfade", 0, gibid_beattime*8
- event "i", "notify_change", p3, 1, -1
- turnoff
- endif
-
- bid_seq "kick", kpos, ksection
- bid_seq "kick2", kpos, ksection
- bid_seq "clap", kpos, ksection
- bid_seq "303", kpos, ksection
- bid_seq "hat1", kpos, ksection
- bid_seq "snare", kpos, ksection
- bid_seq "hat2", kpos, ksection
- bid_seq "303b", kpos, ksection
- bid_seq "glitchread", kpos, ksection
- bid_seq "blip", kpos, ksection
- bid_seq "shaker", kpos, ksection
-
-
- kpos = (kpos < 31) ? kpos + 1 : 0
- ksection16ths = bid_getsectionlength(ksection) * 4
-
- if (kposabs+1 < ksection16ths) then
- kposabs += 1
- else
- event "i", "notify_change", 0, 1, ksection
- ;event "i", "play_crash", 0, gibid_beattime*4
- ksection += 1
- kposchord = 0
- kpos = 0
- kposabs = 0
- event "i", "bid_setcurrentchord", 0, 1, ksection, 1
- endif
-
-
- if (kposchord+1 < gkbid_chordlength*4) then
- kposchord += 1
- else
- kposchord = 0
- event "i", "bid_setcurrentchord", 0, 1, ksection, 1
- endif
-
-
- endif
-
+ schedule "bid_setcurrentchord", 0, 1, isection, 0
+ schedule "global_master", 0, p3
+ schedule "global_delay1", 0, p3
+ schedule "global_delay2", 0, p3
+ schedule "global_delay3", 0, p3
+ gksection bid_seq_all isection
endin
+
</CsInstruments>
<CsScore>
i"parseandrun" 0 1
diff --git a/BUG6/bid.udo b/BUG6/bid.udo
index 17e9be2..05f5372 100644
--- a/BUG6/bid.udo
+++ b/BUG6/bid.udo
@@ -9,7 +9,7 @@
*/
-#define BID_VERSION #1.1#
+#define BID_VERSION #1.2#
#include "txt_tools.udo"
@@ -118,37 +118,6 @@ opcode _bid_parserowitems, i, Siii
endop
-/*
- Read BID data for specified element and trigger accordingly.
-
- bid_seq Splayer, kposition, ksection
-
- Splayer name of BID element
- kposition position in pattern provided by master sequencer
- ksection section in composition provided by master sequencer
-
-*/
-opcode bid_seq, 0, Skk
- Splayer, kpos, ksection xin
- Sinstrument = sprintf("play_%s", Splayer)
- instrindex = _bid_gettextindex(Splayer)
- kdata = gibid_sections[ksection][instrindex]
-
- if (kdata != -1) then ; null section
- kon = tablekt:k(kpos, gibid_sectiondata[kdata][0])
-
- if (kon == 1) then
- kchance = tablekt:k(kpos, gibid_sectiondata[kdata][3])
- if (random:k(0, 1) < kchance) then
- ktime = (kpos % 2 == 0) ? 0 : gibid_swingtime
- kdur = tablekt:k(kpos, gibid_sectiondata[kdata][1]) * gibid_beattime
- ;kamp = tablekt:k(kpos, gisectiondata[kdata][2])
- event "i", Sinstrument, ktime, kdur, kpos, kdata
- endif
- endif
- endif
-endop
-
/*
Get a parameter for the specified pattern position.
@@ -345,6 +314,123 @@ complete:
endop
+
+/*
+ Read BID data for specified element and trigger accordingly.
+
+ bid_seq Splayer, kposition, ksection
+
+ Splayer name of BID element
+ kposition position in pattern provided by master sequencer
+ ksection section in composition provided by master sequencer
+
+*/
+opcode bid_seq, 0, Skk
+ Splayer, kpos, ksection xin
+ Sinstrument = sprintf("play_%s", Splayer)
+ instrindex = _bid_gettextindex(Splayer)
+ kdata = gibid_sections[ksection][instrindex]
+
+ if (kdata != -1) then ; null section
+ kon = tablekt:k(kpos, gibid_sectiondata[kdata][0])
+
+ if (kon == 1) then
+ kchance = tablekt:k(kpos, gibid_sectiondata[kdata][3])
+ if (random:k(0, 1) < kchance) then
+ ktime = (kpos % 2 == 0) ? 0 : gibid_swingtime
+ kdur = tablekt:k(kpos, gibid_sectiondata[kdata][1]) * gibid_beattime
+ ;kamp = tablekt:k(kpos, gisectiondata[kdata][2])
+ event "i", Sinstrument, ktime, kdur, kpos, kdata
+ endif
+ endif
+ endif
+endop
+
+
+instr _bid_exit
+ exitnow
+endin
+
+/*
+ Print notification of performance time since last notification
+ or if isection is -1, print completion notification
+*/
+gibid_timetrack times
+instr bid_notify_change
+ isection = p4
+ itime times
+ if (isection == -1) then
+ tt_notify(sprintf"Complete, runtime: %s", tt_parsetime(itime)))
+ exitnow
+ else
+ isectiontime = itime - gibid_timetrack
+ tt_notify(sprintf("%s : section %d complete in %s", tt_parsetime(itime), isection, tt_parsetime(isectiontime)))
+ gibid_timetrack = itime
+ endif
+ turnoff
+endin
+
+
+opcode bid_seq_all, k, oo
+ istartsection, index xin
+ ksection init istartsection
+ kpos init 0
+ kposabs init 0
+ kposchord init 0
+ imaxinstruments = lenarray(gSbid_sequenced)
+
+ kmetro metro (gibid_tempo / 60) * 4
+
+ if (kmetro == 1) then
+ if (ksection > gibid_maxsection) then
+ schedulek("bid_notify_change", 0, 1, -1)
+ endif
+
+ kindex = 0
+ while (kindex < imaxinstruments) do
+ kdata = gibid_sections[ksection][kindex]
+ if (kdata != -1) then ; null section
+ kon = tablekt:k(kpos, gibid_sectiondata[kdata][0])
+
+ if (kon == 1) then
+ kchance = tablekt:k(kpos, gibid_sectiondata[kdata][3])
+ if (random:k(0, 1) < kchance) then
+ ktime = (kpos % 2 == 0) ? 0 : gibid_swingtime
+ kdur = tablekt:k(kpos, gibid_sectiondata[kdata][1]) * gibid_beattime
+ ;kamp = tablekt:k(kpos, gisectiondata[kdata][2])
+ schedulek(sprintfk("play_%s", gSbid_sequenced[kindex]), ktime, kdur, kpos, kdata)
+ endif
+ endif
+ endif
+ kindex += 1
+ od
+
+ kpos = (kpos < 31) ? kpos + 1 : 0
+ ksection16ths = bid_getsectionlength(ksection) * 4
+
+ if (kposabs + 1 < ksection16ths) then
+ kposabs += 1
+ else
+ schedulek("bid_notify_change", 0, 1, ksection)
+ ksection += 1
+ kposchord = 0
+ kpos = 0
+ kposabs = 0
+ schedulek("bid_setcurrentchord", 0, 1, ksection, 1)
+ endif
+
+ if (kposchord + 1 < gkbid_chordlength * 4) then
+ kposchord += 1
+ else
+ kposchord = 0
+ schedulek("bid_setcurrentchord", 0, 1, ksection, 1)
+ endif
+ endif
+ xout ksection
+endop
+
+
+
/*
Parse a Bug Infested Directive Format string to global arrays, ftables and variables.
Handles patterns, tempo, chord groups and sections etc accordingly.
diff --git a/BUG6/bid_source.udo b/BUG6/bid_source.udo
index 76d508a..05b9fff 100644
--- a/BUG6/bid_source.udo
+++ b/BUG6/bid_source.udo
@@ -1,5 +1,5 @@
/*
- Debugger - Unfixed Bugs : BUG #4
+ Debugger - Unfixed Bugs : BUG #6
Bug Infested Directives source
Provided as a string due to readfi not being available on all platforms.
@@ -7,8 +7,8 @@
*/
SBID = {{
-; Bug Infested Directives : Debugger - Unfixed Bugs : BUG #4
-v 1.1
+; Bug Infested Directives : Debugger - Unfixed Bugs : BUG #6
+v 1.2
; tempo, swing percent
b 128, 40
@@ -25,8 +25,16 @@ c 2
s 1, 64, 1
s 2, 64, 1
s 3, 8, 2
-s 4, 56, 1
-s 5, 32, 2
+s 4, 52, 1
+s 5, 4, 2
+s 6, 64, 1
+s 7, 60, 1
+s 8, 4, 2
+s 9, 64, 1
+s 10, 28, 1
+s 11, 4, 2
+s 12, 32, 1
+s 13, 1, 1
i glitchread, 1, -1
i glitchread, 2, -1
@@ -38,6 +46,14 @@ i glitchread, 4
1, 1, 1, 1, 1,.9, 1,.8, 1, 1, 1,.9, 1,.8,.6, 1, 1, 1, 1, 1, 1,.9, 1,.8, 1, 1, 1,.9, 1,.8, 1, 1
1, 1, 1,.8, 1,.8, 1,.8, 1,.8, 1,.8, 1,.8,.3, 1, 1, 1, 1,.8, 1,.8, 1,.8, 1,.8, 1,.8, 1,.8, 1, 1
i glitchread, 5, -1
+i glitchread, 6, 4
+i glitchread, 7, -1
+i glitchread, 8, 4
+i glitchread, 9, -1
+i glitchread, 10, 4
+i glitchread, 11, 4
+i glitchread, 12, 4
+i glitchread, 13, -1
i 303, 1, -1
@@ -55,6 +71,19 @@ i 303, 5
.1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.3,.1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+i 303, 6
+; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1
+ .1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.1,.3,.1,.1,.3,.1
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+i 303, 7, 2
+i 303, 8, -1
+i 303, 9, 2
+i 303, 10, -1
+i 303, 11, -1
+i 303, 12, -1
+i 303, 13, -1
i 303b, 1
@@ -72,6 +101,15 @@ i 303b, 5
.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+i 303b, 6, 5
+i 303b, 7, 5
+i 303b, 8, 5
+i 303b, 9, 1
+i 303b, 10, 1
+i 303b, 11, 5
+i 303b, 12, -1
+i 303b, 13, -1
+
i blip, 1
; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
@@ -88,6 +126,25 @@ i blip, 5
.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+i blip, 6, -1
+i blip, 7
+; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
+ 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0
+ .1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6,.6
+i blip, 8, 1
+i blip, 9, 1
+i blip, 10, 1
+i blip, 11, 1
+i blip, 12, -1
+i blip, 13
+; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ .1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,.6, 1, 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,.6, 1,.4, 1, 1, 1, 1, 1, 1, 1, 1
+
i clap, 1, -1
i clap, 2
@@ -104,6 +161,19 @@ i clap, 3
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
i clap, 4, 2
i clap, 5, 3
+i clap, 6
+; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
+ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
+ 0, 0, 0, 0,.1, 0, 0,.1, 0, 0, 0, 0,.1, 0, 0, 0, 0,.1, 0, 0,.1, 1, 0, 0, 0, 0, 0, 0,.1, 0, 0, 1
+ 1, 1, 1, 1, 1, 1, 1,.6, 1, 1, 1, 1, 1, 1, 1, 1, 1,.6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1, 1,.4, 1, 1, 1, 1, 1, 1, 1, 1, 1,.4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+i clap, 7, 6
+i clap, 8, -1
+i clap, 9, 6
+i clap, 10, 6
+i clap, 11, -1
+i clap, 12, -1
+i clap, 13, -1
i snare, 1
@@ -121,6 +191,19 @@ i snare, 3
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,.3, 1, 1,.3,.3, 1, 1, 1, 1, 1, 1, 1, 1, 1,.3, 1,.3, 1,.3,.3,.3
i snare, 4, 1
i snare, 5, 3
+i snare, 6, -1
+i snare, 7, 1
+i snare, 8
+; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ .1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1,.1
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,.3, 1, 1,.3,.3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+i snare, 9, -1
+i snare, 10, 1
+i snare, 11, 8
+i snare, 12, -1
+i snare, 13, -1
i hat1, 1
@@ -133,6 +216,19 @@ i hat1, 2, 1
i hat1, 3, 1
i hat1, 4, 1
i hat1, 5, 1
+i hat1, 6
+; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
+ 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+i hat1, 7, 6
+i hat1, 8, -1
+i hat1, 9, 1
+i hat1, 10, -1
+i hat1, 11, -1
+i hat1, 12, -1
+i hat1, 13, -1
i hat2, 1, -1
@@ -152,6 +248,20 @@ i hat2, 3
1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
i hat2, 4, 2
i hat2, 5, 2
+i hat2, 6
+; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1, 1,.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,.5, 1,.5, 1, 1, 1, 1, 1, 1
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+i hat2, 7, 6
+i hat2, 8, -1
+i hat2, 9, 2
+i hat2, 10, -1
+i hat2, 11, -1
+i hat2, 12, -1
+i hat2, 13, -1
i shaker, 1
@@ -164,6 +274,20 @@ i shaker, 2, 1
i shaker, 3, 1
i shaker, 4, 1
i shaker, 5, -1
+i shaker, 6
+; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
+ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1, 1,.6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,.6, 1,.6, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1, 1,.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,.5, 1,.5, 1, 1, 1, 1, 1, 1
+i shaker, 7, 6
+i shaker, 8, -1
+i shaker, 9, 1
+i shaker, 10, 1
+i shaker, 11, -1
+i shaker, 12, -1
+i shaker, 13, -1
+
i kick, 1
; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
@@ -184,7 +308,21 @@ i kick, 5
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0
.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.3
1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1
- 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1
+ 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.4, 1, 1, 1,.1, 1
+i kick, 6
+; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
+ 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0
+ .4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.4,.3
+ 1, 0,.8, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0,.8, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0,.7,.6
+ 1, 1,.1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,.1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,.4,.2
+i kick, 7, 6
+i kick, 8, -1
+i kick, 9, 1
+i kick, 10, 1
+i kick, 11, -1
+i kick, 12, 1
+i kick, 13, -1
+
i kick2, 1
; 1 - - - 2 - - - 3 - - - 4 - - - 5 - - - 6 - - - 7 - - - 8 - - -
@@ -196,4 +334,12 @@ i kick2, 2, 1
i kick2, 3, 1
i kick2, 4, 1
i kick2, 5, 1
+i kick2, 6, -1
+i kick2, 7, 1
+i kick2, 8, -1
+i kick2, 9, 1
+i kick2, 10, 1
+i kick2, 11, -1
+i kick2, 12, -1
+i kick2, 13, -1
}}
diff --git a/BUG6/bussing.udo b/BUG6/bussing.udo
index 78755ce..56ea46a 100644
--- a/BUG6/bussing.udo
+++ b/BUG6/bussing.udo
@@ -36,6 +36,7 @@ endop
+
/*
Read from a stereo bus, and then clear the bus
@@ -57,6 +58,22 @@ opcode bus_read, aa, S
endop
+/*
+ Set to a stereo bus
+
+ bus_set Sbus, aL, aR
+
+ Sbus bus name
+ aL left channel
+ aR right channel
+*/
+opcode bus_set, 0, Saa
+ Sbus, aL, aR xin
+ SbusL, SbusR bus_name Sbus
+ chnset aL, SbusL
+ chnset aR, SbusR
+endop
+
#end
diff --git a/BUG6/instruments.udo b/BUG6/instruments.udo
index a6d3458..0b91a1e 100644
--- a/BUG6/instruments.udo
+++ b/BUG6/instruments.udo
@@ -78,10 +78,10 @@ endin
instr play_blip
iamp = bid_getparameter(p4, p5, 2)
- inote1 = table(p4+3, gibid_chordfn, 0, 0, 1) +12
- inote2 = table(p4+5, gibid_chordfn, 0, 0, 1) +12
- a1 oscil 1, cpsmidinn(inote1)
- a2 oscil 1, cpsmidinn(inote2)
+ inote1 = table(p4+3, gibid_chordfn, 0, 0, 1) + 12
+ inote2 = table(p4+5, gibid_chordfn, 0, 0, 1) + 12
+ a1 oscil 1.2, cpsmidinn(inote1)
+ a2 oscil 1.2, cpsmidinn(inote2)
kamp linseg 1, p3*0.2, 0, p3*0.8, 0
aL = a1 * kamp
aR = a2 * kamp
@@ -160,7 +160,8 @@ instr play_hat2
aout = a808 * aenv * iamp * 1.1
aL delay aout, idel1
aR delay aout, idel2
- if (i(gksection) == 1 && random(0, 1) > 0.7) then
+ isection = i(gksection)
+ if ((isection == 1 || isection == 9) && random(0, 1) > 0.7) then
bus_mix("delay2", aL*0.4, aR*0.4)
endif
bus_mix("master", aL, aR)