WIP: MS20 clone
This commit is contained in:
parent
ece3169302
commit
03e26685f9
|
@ -0,0 +1,154 @@
|
|||
; this is beast is very crude Korg MS-20 clone
|
||||
; by Severak
|
||||
; not Behringer
|
||||
<Cabbage>
|
||||
form caption("MS20") size(1024, 500), colour(0, 51, 153), pluginid("ms20")
|
||||
image bounds(0, 0, 1024, 343) file("ms20.png")
|
||||
combobox bounds(6, 58, 64, 23) channel("vco1wave") text("triangle", "saw", "pulse", "noise")
|
||||
combobox bounds(74, 58, 66, 23) channel("vco2wave") text("saw", "square")
|
||||
rslider bounds(16, 116, 38, 37) range(0.1, 0.9, 0.1, 1, 0.001) channel("vco1pw")
|
||||
rslider bounds(86, 116, 39, 35) range(-1, 1, 0, 1, 0.001) channel("vco2pitch")
|
||||
rslider bounds(10, 176, 50, 51) range(-2, 2, 0, 1, 1.001) channel("vco1offset")
|
||||
rslider bounds(82, 174, 48, 50) range(-2, 2, 0, 1, 1.001) channel("vco2offset")
|
||||
rslider bounds(152, 50, 40, 39) range(0, 1, 1, 1, 0.001) channel("vco1mix")
|
||||
rslider bounds(152, 122, 40, 39) range(0, 1, 0, 1, 0.001) channel("vco2mix")
|
||||
rslider bounds(214, 46, 45, 47) range(0, 1, 0, 0.5, 0.001) channel("hpffreq")
|
||||
rslider bounds(274, 46, 47, 50) range(0, 1, 1, 1, 0.001) channel("lpffreq")
|
||||
rslider bounds(216, 120, 39, 40) range(0, 1, 0, 1, 0.001) channel("hpfres")
|
||||
rslider bounds(276, 120, 43, 39) range(0, 1, 0, 1, 0.001) channel("lpfres")
|
||||
combobox bounds(330, 218, 61, 22) channel("lfotype") text("triangle", "square")
|
||||
rslider bounds(342, 260, 38, 37) range(0, 20, 1, 0.2, 0.001) channel("lfofreq")
|
||||
rslider bounds(874, 34, 49, 55) range(0, 1, 0.1, 1, 0.001) channel("vol")
|
||||
rslider bounds(408, 208, 40, 36) range(0.001, 1, 0.01, 1, 0.01) channel("env1att")
|
||||
rslider bounds(404, 260, 38, 36) range(0.001, 1, 0.01, 1, 0.01) channel("env1rel")
|
||||
rslider bounds(470, 110, 36, 39) range(0.001, 1, 0.01, 1, 0.01) channel("env2att")
|
||||
rslider bounds(470, 158, 33, 33) range(0.001, 1, 0.01, 1, 0.01) channel("env2dec")
|
||||
rslider bounds(472, 210, 31, 31) range(0.001, 1, 1.01, 1, 0.01) channel("env2sus")
|
||||
rslider bounds(472, 260, 32, 35) range(0.001, 1, 0.01, 1, 0.01) channel("env2rel")
|
||||
keyboard bounds(32, 354, 400, 100)
|
||||
label bounds(436, 350, 574, 43) text("Korg MS20 clone by Severak")
|
||||
label bounds(708, 402, 310, 29) text("(not by Behringer)")
|
||||
label bounds(344, 468, 676, 22) text("this is actually batshit crazy project and I am already regretting it")
|
||||
rslider bounds(216, 208, 37, 41) range(0, 1, 0, 1, 0.001) channel("hpfmodenv")
|
||||
rslider bounds(216, 262, 36, 33) range(0, 1, 0, 1, 0.001) channel("hpfmodlfo")
|
||||
rslider bounds(276, 208, 42, 37) range(0, 1, 0, 1, 0.001) channel("lpfmodenv")
|
||||
rslider bounds(278, 262, 40, 33) range(0, 1, 0, 1, 0.001) channel("lpfmodlfo")
|
||||
</Cabbage>
|
||||
<CsoundSynthesizer>
|
||||
<CsOptions>
|
||||
-n -d -+rtmidi=NULL -M0 -m0d --midi-key-cps=4 --midi-velocity-amp=5
|
||||
</CsOptions>
|
||||
<CsInstruments>
|
||||
; Initialize the global variables.
|
||||
ksmps = 32
|
||||
nchnls = 2
|
||||
0dbfs = 1
|
||||
|
||||
gkLFO init 0
|
||||
gkLastNote init 0
|
||||
|
||||
|
||||
;instrument will be triggered by keyboard widget
|
||||
instr 1
|
||||
gkLastNote init p4
|
||||
|
||||
if gkLastNote != 0 && gkLastNote != p4 then
|
||||
; this is monophonic synth
|
||||
turnoff
|
||||
endif
|
||||
|
||||
inotnum notnum
|
||||
|
||||
; ENV 1
|
||||
|
||||
ienv1att chnget "env1att"
|
||||
ienv1rel chnget "env1rel"
|
||||
kenv1 madsr ienv1att, 0.0001, 1, ienv1rel
|
||||
|
||||
|
||||
; VCO 1
|
||||
kvco1offset chnget "vco1offset"
|
||||
kcps1 = cpsmidinn(inotnum) * octave(kvco1offset)
|
||||
|
||||
kvco1pw chnget "vco1pw"
|
||||
|
||||
ivco1waves[] fillarray -1, 12, 0, 2, -1 ; last one is noise
|
||||
ivco1wave chnget "vco1wave"
|
||||
|
||||
aVco1 vco2 kenv1, kcps1, ivco1waves[ivco1wave], kvco1pw
|
||||
|
||||
; VCO 2
|
||||
kvco2offset chnget "vco2offset"
|
||||
kvco2pitch chnget "vco2pitch"
|
||||
kcps2 = cpsmidinn(inotnum) * octave(kvco2offset) * cent(kvco2pitch*100)
|
||||
|
||||
ivco2waves[] fillarray -1, 0, 10
|
||||
ivco2wave chnget "vco2wave"
|
||||
|
||||
aVco2 vco2 kenv1, kcps2, ivco2waves[ivco2wave]
|
||||
|
||||
; MIX
|
||||
kvco1mix chnget "vco1mix"
|
||||
kvco2mix chnget "vco2mix"
|
||||
|
||||
aMix = aVco1 * kvco1mix + aVco2 * kvco2mix
|
||||
|
||||
; ENV2
|
||||
ienv2att chnget "env2att"
|
||||
ienv2dec chnget "env2dec"
|
||||
ienv2sus chnget "env2sus"
|
||||
ienv2rel chnget "env2rel"
|
||||
kenv2 madsr ienv2att, ienv2dec, ienv2sus, ienv2rel
|
||||
|
||||
|
||||
; HPF
|
||||
khpffreq chnget "hpffreq"
|
||||
khpfres chnget "hpfres"
|
||||
|
||||
khpfmodenv chnget "hpfmodenv"
|
||||
|
||||
; TODO - faktory
|
||||
|
||||
aMix K35_hpf aMix, khpffreq * 22000 * 1, khpfres
|
||||
|
||||
; LPF
|
||||
klpffreq chnget "lpffreq"
|
||||
klpfres chnget "lpfres"
|
||||
|
||||
klpfmodenv chnget "lpfmodenv"
|
||||
klpfmodlfo chnget "lpfmodlfo"
|
||||
|
||||
|
||||
klpfmodenvF = 1 - (klpfmodenv * kenv2)
|
||||
klpfmodlfoF = 1 - (klpfmodlfo * abs(gkLFO))
|
||||
|
||||
aMix K35_lpf aMix, klpffreq * 22000 * klpfmodlfoF * klpfmodenvF, klpfres
|
||||
|
||||
; VCA
|
||||
|
||||
; it seems that VCA is driven by something from outside
|
||||
; aMix = aMix * kenv2
|
||||
|
||||
; OUT
|
||||
kvol chnget "vol"
|
||||
|
||||
; to prevent disasters
|
||||
aMix clip aMix, 1, 1
|
||||
outs aMix * kvol, aMix * kvol
|
||||
endin
|
||||
|
||||
instr 2
|
||||
klfofreq chnget "lfofreq"
|
||||
ilfotype chnget "lfotype"
|
||||
ilfotypes[] fillarray -1, 1, 2
|
||||
|
||||
gkLFO lfo 1, klfofreq / 2, ilfotypes[ilfotype]
|
||||
endin
|
||||
|
||||
</CsInstruments>
|
||||
<CsScore>
|
||||
;causes Csound to run for about 7000 years...
|
||||
f0 z
|
||||
i2 0 3600 ; LFO 1 hour
|
||||
</CsScore>
|
||||
</CsoundSynthesizer>
|
Binary file not shown.
After Width: | Height: | Size: 282 KiB |
Loading…
Reference in New Issue