1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
#ifndef UDO_CS81Z
#define UDO_CS81Z ##
/*
license required! GPL
*/
#include "wavetables.udo"
gitx_AR ftgen 0, 0, 32, -2, 0,647829,452377,322874,225473,160445,112801,80602,56434,40244,28328,20297,14152,10306,7237,5231,3687,2601,1765,1417,1000,822,572,440,400,380,310,278,165,135,130,125
gitx_D1R ftgen 0,0,32,-2, -1000,3116605,2179104,1547622,1086731,778176,542607,389089,272208,450000,137953,98004,69000,48235,34239,24524,36000,27000,13859,5774,4387,3254,2040,1573,955,925,575,475,200,125,1,1
gitx_D2R ftgen 0,0,32,-2, -1000,3101310,2168831,1551896,1084546,771475,541448,387275,270054,192173,134025,96252,67545,47431,34174,24459,17359,11987,8775,6000,4302,2885,2136,1415,1000,700,677,355,331,254,1,1
gitx_RR ftgen 0,0,16,-2,0,1559542,779813,386094,192749,97322,48481,24041,11808,6038,2957,1570,858,350,118,1
gitx_D1L ftgen 0,0,16,-2, 0,0.007943,0.01122,0.015849,0.022387,0.031623,0.044668,0.063096,0.089125,0.125893,0.177828,0.251189,0.358922,0.506991,0.716143,1
gitx_alg[][] init 13, 10 ; ALGORITHMIC MATRIX CONNECTIONS
gitx_alg fillarray 1,0,0,1,0,1,0, 0,0,0,
1,0,0,1,1,0,0, 0,0,0,
1,0,1,1,0,0,0, 0,0,0,
1,1,0,0,0,1,0, 0,0,0,
1,0,0,0,0,1,0, 0,1,0,
0,0,1,0,1,1,0, 1,1,0,
0,0,0,0,0,1,0, 1,1,0,
0,0,0,0,0,0,0, 1,1,1,
1,0,0,0,0,0,0, 0,0,0, ; only OP2 -> OP1
0,0,0,0,0,0,0, 0,0,0, ; only OP1
1,0,0,0,1,0,0, 0,0,0, ; OP4 -> OP2 -> OP1
1,0,0,0,1,0,1, 0,0,0, ; FD(OP4) -> OP2 -> OP1
1,0,0,1,1,0,1, 0,0,0 ; LATELY
opcode _tx_envelope, k, iiiii
iAR,iD1R,iD1L,iD2R,iRR xin
iAR table iAR, gitx_AR
iD1R table iD1R, gitx_D1R
iD1L table iD1L, gitx_D1L
iD2R table iD2R, gitx_D2R
iRR table iRR, gitx_RR
iAR /= 96000
iD1R /= 96000
iD2R /= 96000
iRR /= 96000
kRR = iRR
xtratim iRR
kRel release
kEnv init 0
kSta init 0
kAdd transeg 0, 0.01, -8 ,1
if kRel > 0 kgoto Release
if kSta != 0 goto Next
kEnv += 1/(iAR*kr)
kEnv limit kEnv, 0, 1
if kEnv != 1 goto Out
kSta = 1
Next:
if kSta != 1 goto Next2
if iD1R >= 0 goto Next1
goto Out
Next1:
kEnv -= (1/(iD1R*kr))
kEnv limit kEnv, iD1L, 1
if kEnv != iD1L goto Out
kSta = 2
Next2:
if iD2R >= 0 goto Next3
goto Out
Next3:
kEnv -= 1/(iD2R*kr)
kEnv limit kEnv, 0, iD1L
goto Out
Release:
kEnv -= 1/(kRR*kr)
kEnv limit kEnv, 0, 1
Out:
xout kEnv^6.6*kAdd
endop
opcode _tx_lp, a, a
;setksmps 1
aL xin
aD0 init 0
aD1 init 0
iA1 = -0.5100490981424427
iB0 = 1
iB1 = 1
aD2 = aD1
aD1 = aD0
aD0 = aL-aD1*iA1
aout = aD0*iB0+aD1*iB1
xout aout*0.24497545092877862
endop
opcode _tx_hp, a, a
;setksmps 1
aL xin
aD0 init 0
aD1 init 0
iA1 = -0.99869495948492626
iB0 = 1
iB1 = -1
aD2 = aD1
aD1 = aD0
aD0 = aL-aD1*iA1
aout=aD0*iB0+aD1*iB1
xout aout*0.99934747974246307
endop
opcode _tx_filter, a, a
ain xin
xout _tx_lp(_tx_hp(ain))
endop
; instr tx_tbconstruct ; TABLE CONSTRUCTOR from 81z-hold
opcode _tx_op, a, akiiiiiik
;setksmps 1
; iKVS - veloc sensivity level 0...7
aMod, kCarFreq,i1,i2,i3,i4,i5, iWave,kamp xin
aCarFreq = a(kCarFreq)
kEnv _tx_envelope i1,i2,i3,i4,i5
aPhase phasor aCarFreq
aCar tablei aPhase+aMod, iWave, 1, 0, 1
xout aCar * kEnv * kamp
endop
opcode tx_synth, a, k[]k[]ii[]k[]k[]i[]i[]i[]i[]i[]
kfreqs[], kamps[], ialgorithm, iwaves[], kindexmod[], kfdbk[], iattack[], id1rel[], id1lev[], id2rel[], id2lev[] xin
aOP4 init 0
; ===4 OP ======
; OP parameters:
; mod in, car freq X, att, D1 rel, D1 lev, D2 rel, rel, Wave,KVS
aOP1 init 0
ain4 = aOP4*gitx_alg[ialgorithm][6]*kfdbk[3]
aOP4 _tx_op ain4,.5*kfreqs[0], iattack[0], id1rel[0], id1lev[0], id2rel[0], id2lev[0], iwaves[0],kamps[0]
aOP4 = aOP4*kindexmod[2]
ain3 = aOP4*gitx_alg[ialgorithm][5]*kfdbk[2]
aOP3 _tx_op ain3, kfreqs[1], iattack[1], id1rel[1], id1lev[1], id2rel[1], id2lev[1], iwaves[1],kamps[1] ;0.996
aOP3 = aOP3*kindexmod[1]
ain2 = (aOP3*gitx_alg[ialgorithm][3] + aOP4*gitx_alg[ialgorithm][4])*kfdbk[1]
aOP2 _tx_op ain2,kfreqs[2], iattack[2], id1rel[2], id1lev[2], id2rel[2], id2lev[2], iwaves[2],kamps[2]
aOP2 = aOP2*kindexmod[0]
ain1 = (aOP2*gitx_alg[ialgorithm][0] + aOP3*gitx_alg[ialgorithm][1] + aOP4*gitx_alg[ialgorithm][2])*kfdbk[0]
aOP1 _tx_op ain1,kfreqs[3], iattack[3], id1rel[3], id1lev[3], id2rel[3], id2lev[3], iwaves[3],kamps[3]
a0 = aOP1 + aOP2*gitx_alg[ialgorithm][7] + aOP3*gitx_alg[ialgorithm][8] + aOP4*gitx_alg[ialgorithm][9]
xout _tx_filter(a0)
endop
/*
instr 1
if (gicount > 20) then
gifreqs[] chordmidicpsbyindex int(random(0, lenarray(gSchords)-1)), int(random:i(55, 70))
gicount = 0
else
gicount += 1
endif
imults[] fillarray 0.25, 0.5, 1, 1.5, 2
ibasefreq = gifreqs[int(random(0, lenarray(gifreqs)-1))]
iwaves[] fillarray wavetable_random(), wavetable_random(), wavetable_random(), wavetable_random()
kindexmod[] fillarray random(0, 3), random(0, 3), random(0, 3)
kfdbk[] fillarray random(0, 3), random(0, 3), random(0, 3), random(0, 3)
kfreqs[] fillarray ibasefreq*imults[int(random(0, lenarray(imults)-1))], ibasefreq*imults[int(random(0, lenarray(imults)-1))], ibasefreq*imults[int(random(0, lenarray(imults)-1))], ibasefreq*imults[int(random(0, lenarray(imults)-1))]
kamps[] fillarray random(0.5, 2), random(0.5, 2), random(0.5, 2), random(0.5, 2)
iattack[] fillarray random(0, 31), random(0, 31), random(0, 31), random(0, 31)
id1rel[] fillarray random(0, 31), random(0, 31), random(0, 31), random(0, 31)
id1lev[] fillarray random(0, 31), random(0, 31), random(0, 31), random(0, 31)
id2rel[] fillarray random(0, 15), random(0, 15), random(0, 15), random(0, 15)
id2lev[] fillarray random(0, 15), random(0, 15), random(0, 15), random(0, 15)
a1 tx_synth kfreqs, kamps, 4, iwaves, kindexmod, kfdbk, iattack, id1rel, id1lev, id2rel, id2lev
kamp linseg 1, p3*0.8, 1, p3*0.2, 0
kpan line random(0, 1), p3, random(0, 1)
outs a1*kamp*0.1*kpan, a1*kamp*0.1*(1-kpan)
endin
instr sched
krate random 0.2, 5
k1 metro krate
schedkwhen k1, 0, 0, 1, random:k(0, 2), random:k(1, 6)
endin
*.
*/
#end
|