falco/cabbages/rychta.csd

338 lines
13 KiB
Plaintext

; RYCHTA
;
; drum sequencer made out of necessity
;
; use with WaggonBAU or Sitala
;
; (s) Severák 2019
; licensed with MIT license
<Cabbage>
bounds(0, 0, 0, 0)
form caption("Rychta") size(700, 370), colour(58, 110, 182), pluginid("rych")
; UI was generated using profi method called copy&paste
texteditor bounds(6, 10, 100, 30) channel("r1name")
checkbox bounds(114, 10, 30, 30) channel("r1c1")
checkbox bounds(148, 10, 30, 30) channel("r1c2")
checkbox bounds(182, 10, 30, 30) channel("r1c3")
checkbox bounds(216, 10, 30, 30) channel("r1c4")
checkbox bounds(250, 10, 30, 30) channel("r1c5")
checkbox bounds(284, 10, 30, 30) channel("r1c6")
checkbox bounds(318, 10, 30, 30) channel("r1c7")
checkbox bounds(352, 10, 30, 30) channel("r1c8")
checkbox bounds(386, 10, 30, 30) channel("r1c9")
checkbox bounds(420, 10, 30, 30) channel("r1c10")
checkbox bounds(454, 10, 30, 30) channel("r1c11")
checkbox bounds(488, 10, 30, 30) channel("r1c12")
checkbox bounds(522, 10, 30, 30) channel("r1c13")
checkbox bounds(556, 10, 30, 30) channel("r1c14")
checkbox bounds(590, 10, 30, 30) channel("r1c15")
checkbox bounds(624, 10, 30, 30) channel("r1c16")
nslider bounds(658, 10, 30, 30) range(1, 127, 0, 1, 1) velocity(1) channel("r1note")
;---
texteditor bounds(6, 44, 100, 30) channel("r2name")
checkbox bounds(114, 44, 30, 30) channel("r2c1")
checkbox bounds(148, 44, 30, 30) channel("r2c2")
checkbox bounds(182, 44, 30, 30) channel("r2c3")
checkbox bounds(216, 44, 30, 30) channel("r2c4")
checkbox bounds(250, 44, 30, 30) channel("r2c5")
checkbox bounds(284, 44, 30, 30) channel("r2c6")
checkbox bounds(318, 44, 30, 30) channel("r2c7")
checkbox bounds(352, 44, 30, 30) channel("r2c8")
checkbox bounds(386, 44, 30, 30) channel("r2c9")
checkbox bounds(420, 44, 30, 30) channel("r2c10")
checkbox bounds(454, 44, 30, 30) channel("r2c11")
checkbox bounds(488, 44, 30, 30) channel("r2c12")
checkbox bounds(522, 44, 30, 30) channel("r2c13")
checkbox bounds(556, 44, 30, 30) channel("r2c14")
checkbox bounds(590, 44, 30, 30) channel("r2c15")
checkbox bounds(624, 44, 30, 30) channel("r2c16")
nslider bounds(658, 44, 30, 30) range(1, 127, 0, 1, 1) velocity(1) channel("r2note")
;---
texteditor bounds(6, 78, 100, 30) channel("r3name")
checkbox bounds(114, 78, 30, 30) channel("r3c1")
checkbox bounds(148, 78, 30, 30) channel("r3c2")
checkbox bounds(182, 78, 30, 30) channel("r3c3")
checkbox bounds(216, 78, 30, 30) channel("r3c4")
checkbox bounds(250, 78, 30, 30) channel("r3c5")
checkbox bounds(284, 78, 30, 30) channel("r3c6")
checkbox bounds(318, 78, 30, 30) channel("r3c7")
checkbox bounds(352, 78, 30, 30) channel("r3c8")
checkbox bounds(386, 78, 30, 30) channel("r3c9")
checkbox bounds(420, 78, 30, 30) channel("r3c10")
checkbox bounds(454, 78, 30, 30) channel("r3c11")
checkbox bounds(488, 78, 30, 30) channel("r3c12")
checkbox bounds(522, 78, 30, 30) channel("r3c13")
checkbox bounds(556, 78, 30, 30) channel("r3c14")
checkbox bounds(590, 78, 30, 30) channel("r3c15")
checkbox bounds(624, 78, 30, 30) channel("r3c16")
nslider bounds(658, 78, 30, 30) range(1, 127, 0, 1, 1) velocity(1) channel("r3note")
;---
texteditor bounds(6, 112, 100, 30) channel("r4name")
checkbox bounds(114, 112, 30, 30) channel("r4c1")
checkbox bounds(148, 112, 30, 30) channel("r4c2")
checkbox bounds(182, 112, 30, 30) channel("r4c3")
checkbox bounds(216, 112, 30, 30) channel("r4c4")
checkbox bounds(250, 112, 30, 30) channel("r4c5")
checkbox bounds(284, 112, 30, 30) channel("r4c6")
checkbox bounds(318, 112, 30, 30) channel("r4c7")
checkbox bounds(352, 112, 30, 30) channel("r4c8")
checkbox bounds(386, 112, 30, 30) channel("r4c9")
checkbox bounds(420, 112, 30, 30) channel("r4c10")
checkbox bounds(454, 112, 30, 30) channel("r4c11")
checkbox bounds(488, 112, 30, 30) channel("r4c12")
checkbox bounds(522, 112, 30, 30) channel("r4c13")
checkbox bounds(556, 112, 30, 30) channel("r4c14")
checkbox bounds(590, 112, 30, 30) channel("r4c15")
checkbox bounds(624, 112, 30, 30) channel("r4c16")
nslider bounds(658, 112, 30, 30) range(1, 127, 0, 1, 1) velocity(1) channel("r4note")
;---
texteditor bounds(6, 146, 100, 30) channel("r5name")
checkbox bounds(114, 146, 30, 30) channel("r5c1")
checkbox bounds(148, 146, 30, 30) channel("r5c2")
checkbox bounds(182, 146, 30, 30) channel("r5c3")
checkbox bounds(216, 146, 30, 30) channel("r5c4")
checkbox bounds(250, 146, 30, 30) channel("r5c5")
checkbox bounds(284, 146, 30, 30) channel("r5c6")
checkbox bounds(318, 146, 30, 30) channel("r5c7")
checkbox bounds(352, 146, 30, 30) channel("r5c8")
checkbox bounds(386, 146, 30, 30) channel("r5c9")
checkbox bounds(420, 146, 30, 30) channel("r5c10")
checkbox bounds(454, 146, 30, 30) channel("r5c11")
checkbox bounds(488, 146, 30, 30) channel("r5c12")
checkbox bounds(522, 146, 30, 30) channel("r5c13")
checkbox bounds(556, 146, 30, 30) channel("r5c14")
checkbox bounds(590, 146, 30, 30) channel("r5c15")
checkbox bounds(624, 146, 30, 30) channel("r5c16")
nslider bounds(658, 146, 30, 30) range(1, 127, 0, 1, 1) velocity(1) channel("r5note")
;---
texteditor bounds(6, 180, 100, 30) channel("r6name")
checkbox bounds(114, 180, 30, 30) channel("r6c1")
checkbox bounds(148, 180, 30, 30) channel("r6c2")
checkbox bounds(182, 180, 30, 30) channel("r6c3")
checkbox bounds(216, 180, 30, 30) channel("r6c4")
checkbox bounds(250, 180, 30, 30) channel("r6c5")
checkbox bounds(284, 180, 30, 30) channel("r6c6")
checkbox bounds(318, 180, 30, 30) channel("r6c7")
checkbox bounds(352, 180, 30, 30) channel("r6c8")
checkbox bounds(386, 180, 30, 30) channel("r6c9")
checkbox bounds(420, 180, 30, 30) channel("r6c10")
checkbox bounds(454, 180, 30, 30) channel("r6c11")
checkbox bounds(488, 180, 30, 30) channel("r6c12")
checkbox bounds(522, 180, 30, 30) channel("r6c13")
checkbox bounds(556, 180, 30, 30) channel("r6c14")
checkbox bounds(590, 180, 30, 30) channel("r6c15")
checkbox bounds(624, 180, 30, 30) channel("r6c16")
nslider bounds(658, 180, 30, 30) range(1, 127, 0, 1, 1) velocity(1) channel("r6note")
;---
texteditor bounds(6, 214, 100, 30) channel("r7name")
checkbox bounds(114, 214, 30, 30) channel("r7c1")
checkbox bounds(148, 214, 30, 30) channel("r7c2")
checkbox bounds(182, 214, 30, 30) channel("r7c3")
checkbox bounds(216, 214, 30, 30) channel("r7c4")
checkbox bounds(250, 214, 30, 30) channel("r7c5")
checkbox bounds(284, 214, 30, 30) channel("r7c6")
checkbox bounds(318, 214, 30, 30) channel("r7c7")
checkbox bounds(352, 214, 30, 30) channel("r7c8")
checkbox bounds(386, 214, 30, 30) channel("r7c9")
checkbox bounds(420, 214, 30, 30) channel("r7c10")
checkbox bounds(454, 214, 30, 30) channel("r7c11")
checkbox bounds(488, 214, 30, 30) channel("r7c12")
checkbox bounds(522, 214, 30, 30) channel("r7c13")
checkbox bounds(556, 214, 30, 30) channel("r7c14")
checkbox bounds(590, 214, 30, 30) channel("r7c15")
checkbox bounds(624, 214, 30, 30) channel("r7c16")
nslider bounds(658, 214, 30, 30) range(1, 127, 0, 1, 1) velocity(1) channel("r7note")
;---
label bounds(114, 248, 30, 30) text("1") identchannel("s1")
label bounds(148, 248, 30, 30) text("2") identchannel("s2")
label bounds(182, 248, 30, 30) text("3") identchannel("s3")
label bounds(216, 248, 30, 30) text("4") identchannel("s4")
label bounds(250, 248, 30, 30) text("5") identchannel("s5")
label bounds(284, 248, 30, 30) text("6") identchannel("s6")
label bounds(318, 248, 30, 30) text("7") identchannel("s7")
label bounds(352, 248, 30, 30) text("8") identchannel("s8")
label bounds(386, 248, 30, 30) text("9") identchannel("s9")
label bounds(420, 252, 30, 24) text("10") identchannel("s10") fontcolour(192, 192, 192, 255)
label bounds(454, 252, 32, 24) text("11") identchannel("s11")
label bounds(488, 252, 30, 24) text("12") identchannel("s12")
label bounds(522, 252, 30, 25) text("13") identchannel("s13")
label bounds(556, 252, 30, 24) text("14") identchannel("s14")
label bounds(590, 252, 30, 24) text("15") identchannel("s15")
label bounds(624, 250, 30, 25) text("16") identchannel("s16")
label bounds(14, 280, 166, 39) text("RYCHTA")
label bounds(14, 322, 166, 18) text("drum sequencer")
checkbox bounds(288, 334, 126, 30) text("external clock") channel("extclock")
rslider bounds(186, 286, 95, 55) range(1, 500, 120, 1, 1) text("BPM") channel("bpm") identchannel("bpmw")
button bounds(288, 288, 80, 40) text("RUN", "STOP") channel("running") identchannel("runningw")
label bounds(378, 298, 292, 17) text("there will be more features in 2020")
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-n -d -+rtmidi=NULL -M0 -m0d -Q0
</CsOptions>
<CsInstruments>
; Initialize the global variables.
ksmps = 32
nchnls = 2
0dbfs = 1
;instrument will be triggered by keyboard widget
instr GUI
kstep init 0
kextclock chnget "extclock"
if kextclock==1 then
kbpm chnget "HOST_BPM"
kbpm limit kbpm,1,2000
krunning chnget "IS_PLAYING"
chnset kbpm, "bpm"
chnset krunning, "running"
else
krunning chnget "running"
kbpm chnget "bpm"
endif
if changed:k(kextclock)==1 then
if kextclock==1 then
; we display native clock values and disable buttons
chnset "active(0)", "runningw"
chnset "active(0)", "bpmw"
else
; we enable buttons
chnset "active(1)", "runningw"
chnset "active(1)", "bpmw"
endif
endif
kcps = kbpm / 15
ktrig metro kcps
if changed:k(krunning)==1 then
kstep = 0
endif
if krunning==1 && ktrig==1 then
Stepiden sprintfk "s%d", (kstep+1)
chnset " fontcolour(255, 255, 0, 255)", Stepiden
if kstep==0 then
Stepidenprev sprintfk "s%d", 16
else
Stepidenprev sprintfk "s%d", kstep
endif
chnset " fontcolour(192, 192, 192, 255)", Stepidenprev
; another massive copypasta section:
krow = 1
Snoteiden sprintfk "r%dnote", krow
Scheckiden sprintfk "r%dc%d", krow, (kstep+1)
knote chnget Snoteiden
kchecked chnget Scheckiden
if knote>1 && kchecked==1 then
;printks "midiout kstatus=%d, kchan=%d, kdata1=%d, kdata2=%d\n", 0, 144, 10, knote, 100
midiout 144, 10, knote, 100
endif
krow = 2
Snoteiden sprintfk "r%dnote", krow
Scheckiden sprintfk "r%dc%d", krow, (kstep+1)
knote chnget Snoteiden
kchecked chnget Scheckiden
if knote>1 && kchecked==1 then
;printks "midiout kstatus=%d, kchan=%d, kdata1=%d, kdata2=%d\n", 0, 144, 10, knote, 100
midiout 144, 10, knote, 100
endif
krow = 3
Snoteiden sprintfk "r%dnote", krow
Scheckiden sprintfk "r%dc%d", krow, (kstep+1)
knote chnget Snoteiden
kchecked chnget Scheckiden
if knote>1 && kchecked==1 then
;printks "midiout kstatus=%d, kchan=%d, kdata1=%d, kdata2=%d\n", 0, 144, 10, knote, 100
midiout 144, 10, knote, 100
endif
krow = 4
Snoteiden sprintfk "r%dnote", krow
Scheckiden sprintfk "r%dc%d", krow, (kstep+1)
knote chnget Snoteiden
kchecked chnget Scheckiden
if knote>1 && kchecked==1 then
;printks "midiout kstatus=%d, kchan=%d, kdata1=%d, kdata2=%d\n", 0, 144, 10, knote, 100
midiout 144, 10, knote, 100
endif
krow = 5
Snoteiden sprintfk "r%dnote", krow
Scheckiden sprintfk "r%dc%d", krow, (kstep+1)
knote chnget Snoteiden
kchecked chnget Scheckiden
if knote>1 && kchecked==1 then
;printks "midiout kstatus=%d, kchan=%d, kdata1=%d, kdata2=%d\n", 0, 144, 10, knote, 100
midiout 144, 10, knote, 100
endif
krow = 6
Snoteiden sprintfk "r%dnote", krow
Scheckiden sprintfk "r%dc%d", krow, (kstep+1)
knote chnget Snoteiden
kchecked chnget Scheckiden
if knote>1 && kchecked==1 then
;printks "midiout kstatus=%d, kchan=%d, kdata1=%d, kdata2=%d\n", 0, 144, 10, knote, 100
midiout 144, 10, knote, 100
endif
krow = 7
Snoteiden sprintfk "r%dnote", krow
Scheckiden sprintfk "r%dc%d", krow, (kstep+1)
knote chnget Snoteiden
kchecked chnget Scheckiden
if knote>1 && kchecked==1 then
;printks "midiout kstatus=%d, kchan=%d, kdata1=%d, kdata2=%d\n", 0, 144, 10, knote, 100
midiout 144, 10, knote, 100
endif
;printks "step = %d\n", 0, (kstep+1)
kstep = (kstep + 1) % 16
endif
endin
</CsInstruments>
<CsScore>
i "GUI" 0 3600
</CsScore>
</CsoundSynthesizer>