Skip to content

Instantly share code, notes, and snippets.

@Enkerli
Created February 19, 2020 03:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Enkerli/b7e7d52d63cf34a63660b51d554e7194 to your computer and use it in GitHub Desktop.
Save Enkerli/b7e7d52d63cf34a63660b51d554e7194 to your computer and use it in GitHub Desktop.
Simple breath-controlled lead with reverb, in Csound through Cabbage Audio
<Cabbage>
form caption("Breath Solo") size(400, 400), colour(58, 110, 182), pluginid("def1")
keyboard bounds(8, 236, 381, 95)
rslider bounds(78, 10, 70, 70), channel("porttime"), range(0, 1, 0.01, 1, 0.01), text("Portamento Time")
rslider bounds(162, 10, 70, 70), channel("cutoff"), range(0, 22000, 21000, 0.5, 0.01), text("Cutoff")
rslider bounds(246, 10, 70, 70), channel("res"), range(0, 1, 0.9, 1, 0.01), text("Resonance")
groupbox bounds(78, 94, 238, 112), text("Reverb")
rslider bounds(94, 124, 68, 70), channel("size"), range(0, 1, 0.9, 1, 0.001), text("Size"), colour(2, 132, 0, 255),
rslider bounds(208, 122, 68, 70), channel("fco"), range(1, 22000, 21000, 1, 0.001), text("Damp"), colour(2, 132, 0, 255),
</Cabbage>
<CsOptions>
-n -d -+rtmidi=NULL -M0 -m0d --midi-key-cps=4 --midi-velocity-amp=5
</CsOptions>
<CsoundSynthesizer>
<CsInstruments>
ksmps = 32
nchnls = 2
0dbfs = 1
;INITIALISE GLOBAL VARIABLES
gkcps init 0
gkCutOff init 22000
gkRes init 1
gaRvbSend init 0
instr 1
kcont init 1
midicontrolchange 2, kcont, 0, 1
kCutOff chnget "cutoff"
kRes chnget "res"
gkPortTime chnget "porttime"
gkCutOff = kcont*kCutOff
gkRes = kcont*kRes
gkcps = p4
schedkwhen 1, 0, 1, 2, 0, 3600
endin
instr 2
iRvbSendAmt=0.8
kreleaseflag release
gkNumInstr1 active 1
if gkNumInstr1!=0||kreleaseflag=1 kgoto KEEP_PLAYING
turnoff
KEEP_PLAYING:
kporttime linseg 0, .01, 1, 1, 1
kporttime = kporttime * gkPortTime
kcps portk gkcps, kporttime
kCutOff portk gkCutOff, kporttime
kRes portk gkRes, kporttime
asig vco2 0.3, kcps
aFilt moogladder asig, kCutOff, kRes
aenv linsegr 0,0.001,1,0.01,0
gaRvbSend = gaRvbSend + (aFilt * aenv)
endin
instr 3
kFdbck init 0.9
kFco init 21000
kFdbck chnget "size"
kFco chnget "fco"
aOutL, aOutR reverbsc gaRvbSend, gaRvbSend, kFdbck, kFco
outs aOutL, aOutR
clear gaRvbSend
endin
</CsInstruments>
<CsScore>
f 0 z
i3 0 z
</CsScore>
</CsoundSynthesizer>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment