Somewhat finished Organik.

This commit is contained in:
severak 2020-06-27 23:26:31 +02:00
parent 3ea7a69169
commit 8cb25b643f
1 changed files with 43 additions and 13 deletions

View File

@ -1,18 +1,28 @@
; Horowitz Organik - an 70s style string machine
;
; frequency multiplier scheme based on the code by Victor Lazzarini
;
; (s) Severák 2020
; licensed with MIT license
<Cabbage> bounds(0, 0, 0, 0)
form caption("Horowitz Organik") size(400, 300), colour(0, 51, 153), pluginid("horg")
keyboard bounds(8, 152, 381, 101)
vslider bounds(16, 12, 28, 107) range(0.1, 1, 0.1, 1, 0.001) channel("attack")
vslider bounds(52, 12, 31, 108) range(0.1, 1, 0.1, 1, 0.001) channel("decay")
vslider bounds(118, 10, 30, 108) range(0, 0.3, 0, 1, 0.001) channel("cello")
vslider bounds(166, 8, 33, 109) range(0, 0.3, 0.3, 1, 0.001) channel("viola")
vslider bounds(218, 10, 34, 109) range(0, 1, 0, 1, 0.001) channel("violin")
vslider bounds(304, 10, 36, 109) range(4000, 22000, 22000, 1, 0.001) channel("tone")
vslider bounds(104, 12, 30, 108) range(0, 0.3, 0, 1, 0.001) channel("cello")
vslider bounds(152, 10, 33, 109) range(0, 0.3, 0.3, 1, 0.001) channel("viola")
vslider bounds(198, 10, 34, 109) range(0, 1, 0, 1, 0.001) channel("violin")
vslider bounds(260, 10, 36, 109) range(2800, 22000, 22000, 1, 0.001) channel("tone")
label bounds(8, 124, 80, 16) text("crescendo")
label bounds(110, 124, 44, 16) text("cello")
label bounds(160, 124, 44, 16) text("viola")
label bounds(212, 124, 50, 16) text("violin")
label bounds(300, 124, 45, 16) text("tone")
label bounds(100, 124, 44, 16) text("cello")
label bounds(144, 124, 44, 16) text("viola")
label bounds(190, 124, 50, 16) text("violin")
label bounds(256, 124, 45, 16) text("tone")
label bounds(12, 260, 363, 32) text("Horowitz Organik")
vslider bounds(306, 10, 33, 108) range(0, 1, 0, 1, 0.001) channel("reverb")
vslider bounds(348, 10, 33, 108) range(0, 1, 0, 1, 0.001) channel("chorus")
label bounds(302, 124, 43, 16) text("rev")
label bounds(348, 124, 52, 16) text("chorus")
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
@ -80,16 +90,20 @@ indx = round(frac(p5)*100)
ioct = int(p5)
itab = ioct < 4 ? 4 : (ioct > 12 ? 12 : ioct)
if ioct>5 then
a1 = tablei:a(gaphs[indx]*2^(ioct-1),itab-1,1,0,1) * kcello
gasig += a1*linenr:a(.2,0,idec+0.1,.01)
endif
if ioct<12 then
a2 = tablei:a(gaphs[indx]*2^ioct,itab,1,0,1) * kviola
gasig += a2*linenr:a(.2,0,idec+0.1,.01)
endif
if ioct<11 then
a3 = tablei:a(gaphs[indx]*2^(ioct+1),itab+1,1,0,1) * kviolin
gasig += a3*linenr:a(.2,0,idec+0.1,.01)
endif
endin
@ -115,15 +129,31 @@ schedule(3,0,-1)
instr 4
ktone chnget "tone"
asig moogladder2 gasig, ktone, 0
kreverb chnget "reverb"
kchorus chnget "chorus"
asig zdf_2pole gasig, ktone, 0.5
aLreverb, aRreverb reverbsc asig, asig, 0.7, 10000
aL ntrpol asig, aLreverb, kreverb
aR ntrpol asig, aRreverb, kreverb
aL, aR reverbsc asig, asig, 0.8, 10000
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)
out((aL + a1),(aR + a2))
aLchorus = aL + a1
aRchorus = aR + a2
aL ntrpol aL, aLchorus, kchorus
aR ntrpol aR, aRchorus, kchorus
out aL, aR
gasig = 0
endin
schedule(4,0,-1)