jevstrudel.git / packages / csound / presets.orc
presets.orc96 lines · 2.0 KB · raw
1; returns value of given key in given "string map"
2; keymap("freq", "note/c3/freq/220/gain/0.5")
3; yields "220"
4opcode keymap, S, SS
5  Skey, Smap xin
6  idelimiter = strindex(Smap, strcat(Skey, "/"))
7  ifrom = idelimiter + strlen(Skey) + 1
8  Svalue = strsub(Smap, ifrom, strlen(Smap))
9  Svalue = strsub(Svalue, 0, strindex(Svalue, "/"))
10  xout Svalue
11endop
12
13; TODO add incredibly dope synths
14instr organ
15    iduration = p3
16    ifreq = p4
17    igain = p5
18    ioct = octcps(ifreq)
19
20    asig = vco2(igain, ifreq, 12, .5) ; my edit
21    kpwm = oscili(.1, 5)
22    asig = vco2(igain, ifreq, 4, .5 + kpwm)
23    asig += vco2(igain/4, ifreq * 2)
24
25    ; filter
26    ; idepth = 2
27    ; acut = transegr:a(0, .005, 0, idepth, .06, -4.2, 0.001, .01, -4.2, 0) ; filter envelope
28    ; asig = zdf_2pole(asig, cpsoct(ioct + acut), 0.5)
29
30    ; amp envelope
31    iattack = .001
32    irelease = .05
33    asig *= linsegr:a(0, iattack, 1, iduration, 1, irelease, 0)
34
35    out(asig, asig)
36
37endin
38
39instr triangle
40  iduration = p3
41  ifreq = p4
42  igain = p5
43  ioct = octcps(ifreq)
44  
45  asig = vco2(igain, ifreq, 12, .5)
46  
47  ; amp envelope
48  iattack = .001
49  irelease = .05
50  asig *= linsegr:a(0, iattack, 1, iduration, 1, irelease, 0)
51  
52  out(asig, asig)
53endin
54
55instr pad
56    iduration = p3
57    ifreq = p4
58    igain = p5
59    ioct = octcps(ifreq)
60
61    asig = vco2(igain, ifreq, 0)
62
63    ; amp envelope
64    iattack = .5
65    irelease = .1
66    asig *= linsegr:a(0, iattack, 1, iduration, 1, irelease, 0)
67    
68    idepth = 2
69    acut = transegr:a(0, .005, 0, idepth, .06, -4.2, 0.001, .01, -4.2, 0)
70    asig = zdf_2pole(asig, 1000, 2)
71
72    out(asig, asig)
73endin
74
75
76gisine	ftgen	0, 0, 4096, 10, 1
77
78instr bow
79    kpres = 2
80    krat = 0.16
81    kvibf = 6.12723
82    
83    kvib  linseg 0, 0.5, 0, 1, 1, p3-0.5, 1	
84    kvamp = kvib * 0.01
85    asig  wgbow .7, p4, kpres, krat, kvibf, kvamp, gisine
86    asig = asig*p5
87    outs asig, asig
88endin
89
90
91instr Meta
92    Smap = strget(p6)
93    Sinstrument = keymap("s", Smap)
94    schedule(Sinstrument, 0, p3, p4, p5)
95    ; TODO find a way to pipe Sinstrument through effects
96endin