214 lines
7.0 KiB
Plaintext
214 lines
7.0 KiB
Plaintext
<Cabbage> bounds(0, 0, 0, 0)
|
|
form caption("Amateur") size(400, 300), colour(0, 51, 153),pluginid("amat")
|
|
keyboard bounds(6, 170, 381, 95) value(53)
|
|
combobox bounds(4, 38, 110, 20) channel("osc1") text("piano", "el piano (SIN)", "e-bass", "e-organ (SAW)", "distorted", "guitar (SQR)", "organ", "oboe")
|
|
combobox bounds(172, 38, 103, 20) text("piano", "el piano (SIN)", "e-bass", "e-organ (SAW)", "distorted", "guitar (SQR)", "organ", "oboe") channel("osc2") value(2)
|
|
|
|
rslider bounds(66, 2, 36, 32) range(1, 3, 2, 1, 1) channel("osc1transpose")
|
|
rslider bounds(204, 0, 37, 33) range(1, 3, 2, 1, 1) channel("osc2transpose")
|
|
|
|
rslider bounds(122, 30, 45, 37) range(0, 1, 0.5, 1, 0.001) channel("oscmix")
|
|
|
|
label bounds(106, 8, 80, 16) text("OSC")
|
|
label bounds(36, 74, 80, 16) text("ENV")
|
|
rslider bounds(4, 96, 55, 43) range(0.01, 1, 0.01, 1, 0.001) channel("attack")
|
|
rslider bounds(94, 94, 53, 45) range(0.01, 1, 0.5, 1, 0.001) channel("decay")
|
|
checkbox bounds(64, 100, 27, 30) channel("hold") value(1)
|
|
label bounds(18, 142, 34, 16) text("A")
|
|
label bounds(100, 142, 39, 16) text("D/R")
|
|
label bounds(60, 142, 34, 16) text("S")
|
|
|
|
label bounds(298, 10, 80, 16) text("FILTER")
|
|
combobox bounds(298, 38, 80, 20) channel("filter_mode") text("none", "quack", "quack & bite")
|
|
|
|
|
|
label bounds(258, 76, 80, 16) text("FX")
|
|
rslider bounds(238, 98, 42, 40) range(0, 1, 0, 1, 0.001) channel("phaser")
|
|
label bounds(230, 142, 54, 16) text("phaser")
|
|
rslider bounds(292, 98, 46, 42) range(0, 1, 0, 1, 0.001) channel("chorus")
|
|
label bounds(286, 142, 57, 16) text("chorus")
|
|
rslider bounds(346, 98, 48, 41) range(0, 1, 0, 1, 0.001) channel("reverb")
|
|
label bounds(346, 142, 49, 16) text("reverb")
|
|
|
|
vslider bounds(152, 72, 50, 87) range(0, 1, 0.5, 1, 0.001) channel("vol")
|
|
checkbox bounds(8, 272, 18, 19) channel("wheelmix")
|
|
label bounds(32, 274, 179, 17) text("mix with modwheel?") channel("wheelmix")
|
|
</Cabbage>
|
|
<GuineaSynth>
|
|
me = act_menu()
|
|
me.add(csd_select(me, csd, "osc1", "OSC1", 0, ["piano", "el piano (SIN)", "e-bass", "e-organ (SAW)", "distorted", "guitar (SQR)", "organ", "oboe"]))
|
|
me.add(csd_select(me, csd, "osc1transpose", "OSC1 register", 1, ["lower", "middle", "upper"]))
|
|
me.add(csd_select(me, csd, "osc2", "OSC2", 1, ["piano", "el piano (SIN)", "e-bass", "e-organ (SAW)", "distorted", "guitar (SQR)", "organ", "oboe"]))
|
|
me.add(csd_select(me, csd, "osc2transpose", "OSC2 register", 1, ["lower", "middle", "upper"]))
|
|
me.add(csd_param(me, csd, "oscmix", "OSC1 / OSC2", 0.5, 0, 1));
|
|
me.add(csd_checkbox(me, csd, "wheelmix", "Wheelmix?", 0))
|
|
|
|
me.add(csd_param(me, csd, "attack", "Attack", 0.01, 0.01, 1))
|
|
me.add(csd_param(me, csd, "decay", "Decay", 0.5, 0.01, 1))
|
|
me.add(csd_checkbox(me, csd, "hold", "Hold tone?", 1))
|
|
|
|
me.add(csd_select(me, csd, "filter_mode", "Filter mode", 0, ["none", "quack", "quack & bite"]))
|
|
|
|
me.add(csd_param(me, csd, "phaser", "FX: phaser", 0, 0, 1))
|
|
me.add(csd_param(me, csd, "chorus", "FX: chorus", 0, 0, 1))
|
|
me.add(csd_param(me, csd, "reverb", "FX: reverb", 0, 0, 1))
|
|
me.add(csd_param(me, csd, "vol", "Volume", 0.5, 0, 1))
|
|
|
|
me.add(act_confirm(me, 'Reset synth?', exit))
|
|
|
|
menu(me)
|
|
</GuineaSynth>
|
|
<CsoundSynthesizer>
|
|
<CsOptions>
|
|
; silent, default DAC, PortMidi and all inputs, cps to p4, velocity to p5
|
|
-d -+rtaudio=jack -o dac -+rtmidi=PortMidi -Ma --midi-key-cps=4 --midi-velocity-amp=5
|
|
</CsOptions>
|
|
<CsInstruments>
|
|
; Initialize the global variables.
|
|
;ksmps = 32
|
|
nchnls = 2
|
|
0dbfs = 1
|
|
|
|
giWaves[] init 9
|
|
|
|
giWaves[1] ftgen 0, 0, 0, 1, "akwf/AKWF_piano_0001.wav", 0, 0, 0
|
|
giWaves[2] ftgen 0, 0, 0, 1, "akwf/AKWF_epiano_0014.wav", 0, 0, 0
|
|
giWaves[3] ftgen 0, 0, 0, 1, "akwf/AKWF_ebass_0042.wav", 0, 0, 0
|
|
giWaves[4] ftgen 0, 0, 0, 1, "akwf/AKWF_eorgan_0033.wav", 0, 0, 0
|
|
giWaves[5] ftgen 0, 0, 0, 1, "akwf/AKWF_eguitar_0011.wav", 0, 0, 0
|
|
giWaves[6] ftgen 0, 0, 0, 1, "akwf/AKWF_eguitar_0003.wav", 0, 0, 0
|
|
giWaves[7] ftgen 0, 0, 0, 1, "akwf/AKWF_eorgan_0114.wav", 0, 0, 0
|
|
giWaves[8] ftgen 0, 0, 0, 1, "akwf/AKWF_oboe_0013.wav", 0, 0, 0
|
|
|
|
giTranspose[] init 4
|
|
giTranspose[1] = 0.5
|
|
giTranspose[2] = 1
|
|
giTranspose[3] = 2
|
|
|
|
gaOut init 0
|
|
|
|
;Author: Iain McCurdy (2012)
|
|
opcode Phaser,a,akkkKki
|
|
ain,krate,kdepth,kfreq,kstages,kfback,ishape xin ;READ IN INPUT ARGUMENTS
|
|
if ishape=1 then
|
|
klfo lfo kdepth*0.5, krate, 1 ;LFO FOR THE PHASER (TRIANGULAR SHAPE)
|
|
elseif ishape=2 then
|
|
klfo lfo kdepth*0.5, krate, 0 ;LFO FOR THE PHASER (SINE SHAPE)
|
|
elseif ishape=3 then
|
|
klfo lfo kdepth*0.5, krate, 2 ;LFO FOR THE PHASER (SQUARE SHAPE)
|
|
elseif ishape=4 then
|
|
klfo lfo kdepth*0.5, krate, 4 ;LFO FOR THE PHASER (SAWTOOTH)
|
|
elseif ishape=5 then
|
|
klfo lfo kdepth*0.5, krate, 5 ;LFO FOR THE PHASER (SAWTOOTH)
|
|
elseif ishape=6 then
|
|
klfo randomi -kdepth*0.5, kdepth*0.5, krate*8 ;LFO FOR THE PHASER (RANDOMI SHAPE)
|
|
klfo portk klfo, 1/(krate*8) ;SMOOTH CHANGES OF DIRECTION
|
|
elseif ishape=7 then
|
|
klfo randomh -kdepth*0.5, kdepth*0.5, krate ;LFO FOR THE PHASER (RANDOMH SHAPE)
|
|
endif
|
|
aout phaser1 ain, cpsoct((klfo+(kdepth*0.5)+kfreq)), kstages, kfback ;PHASER1 IS APPLIED TO THE INPUT AUDIO
|
|
xout aout ;SEND AUDIO BACK TO CALLER INSTRUMENT
|
|
endop
|
|
|
|
/* ------- */
|
|
|
|
;instrument will be triggered by keyboard widget
|
|
instr 1
|
|
kbnd pchbend 0, 100
|
|
kcps = p4 + kbnd
|
|
|
|
iosc1 chnget "osc1"
|
|
iosc1_transpose chnget "osc1transpose"
|
|
aOutA poscil3 0.6, kcps * giTranspose[iosc1_transpose], giWaves[iosc1]
|
|
|
|
iosc2 chnget "osc2"
|
|
iosc2_transpose chnget "osc2transpose"
|
|
aOutB poscil3 0.6, kcps * giTranspose[iosc2_transpose], giWaves[iosc2]
|
|
|
|
iwheelmix chnget "wheelmix"
|
|
if iwheelmix==1 then
|
|
koscmix midictrl 1 , 0 , 1
|
|
printk(0.2,koscmix)
|
|
else
|
|
koscmix chnget "oscmix"
|
|
endif
|
|
aOut ntrpol aOutA, aOutB, koscmix
|
|
|
|
iattack chnget "attack"
|
|
idecay chnget "decay"
|
|
isustain chnget "hold"
|
|
|
|
if isustain == 1 then
|
|
kEnv madsr iattack, 0.0001, 1, idecay+iattack
|
|
else
|
|
kEnv linsegr 0, iattack, 1, idecay, 0, iattack+idecay, 0
|
|
endif
|
|
|
|
ifilter_mode chnget "filter_mode"
|
|
if ifilter_mode == 2 then
|
|
aOut moogladder aOut, 12000, 0
|
|
elseif ifilter_mode == 3 then
|
|
aOut moogladder aOut, 12000, 0.3
|
|
endif
|
|
|
|
gaOut += aOut*kEnv
|
|
endin
|
|
|
|
instr 2
|
|
aOut = gaOut
|
|
|
|
kphaser chnget "phaser"
|
|
aPhased Phaser aOut, 0.5, 4, 8, 8, 0.36, 1
|
|
aOut ntrpol aOut, aPhased, kphaser
|
|
|
|
aL = aOut
|
|
aR = aOut
|
|
|
|
kchorus chnget "chorus"
|
|
kchorus = kchorus / 2
|
|
|
|
; chorus
|
|
amod1 = randi:a(3,.75)+oscili(2,.35)+31
|
|
amod2 = randi:a(2,.65)+oscili(3,.55)+29
|
|
a1 = vdelay(aL*.5,amod1,35)
|
|
a2 = vdelay(aR*.5,amod2,35)
|
|
|
|
aLchorus = aL + a1
|
|
aRchorus = aR + a2
|
|
|
|
aL ntrpol aL, aLchorus, kchorus
|
|
aR ntrpol aR, aRchorus, kchorus
|
|
|
|
; reverb
|
|
kreverb chnget "reverb"
|
|
kreverb = kreverb / 3
|
|
|
|
aLreverb, aRreverb reverbsc aL, aR, 0.8, 12000
|
|
|
|
aL = aL + (aLreverb * kreverb)
|
|
aR = aR + (aRreverb * kreverb)
|
|
|
|
; volume
|
|
|
|
kVol chnget "vol"
|
|
|
|
aL clip aL*kVol, 0, 0.9
|
|
aR clip aR*kVol, 0, 0.9
|
|
|
|
outs aL, aR
|
|
gaOut = 0
|
|
endin
|
|
|
|
schedule 2, 0, -1
|
|
|
|
|
|
|
|
|
|
|
|
</CsInstruments>
|
|
<CsScore>
|
|
;causes Csound to run for about 7000 years...
|
|
f0 z
|
|
</CsScore>
|
|
</CsoundSynthesizer>
|