-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdance_ir_ptz_l.spn
215 lines (179 loc) · 3.84 KB
/
dance_ir_ptz_l.spn
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
209
210
211
212
213
214
215
;disco mixer program
;pot0 = infinite reverb
;pot1 = pitch to zero
;pot2 = 4 pole low pass filter
equ krt reg0
equ kin reg1
equ kmix reg2
equ lpal reg4
equ lpbl reg5
equ lpar reg6
equ lpbr reg7
equ stop reg8
equ pbyp reg9
equ pol reg10
equ por reg11
equ kfl reg12
equ temp reg13
equ rmixl reg14
equ rmixr reg15
equ lbyp reg16
mem ap1 502
mem ap2 821
mem dap1a 2204
mem dap1b 2701
mem del1 4456
mem dap2a 2532
mem dap2b 2201
mem del2 6325
mem pdelr 4096
mem pdell 4096
mem dtemp 1
equ kap 0.6
equ kql -0.2
;prepare pots to affect control variables:
;pot0 controls reverb time, but also affects input drive level;
;reveb time is moderate up to about mid position, then increases
;to infinity (or nearly) at full position.
;input drive is constant, but decreases at the full pot0 position.
;output mix is varied over the first half of pot0, then remains
;high to the end of pot0's range.
rdax pot0,1.999 ;get pot0, clip the upper half of pot0's range.
wrax kmix,0 ;write the output mix value
rdax pot0,-1 ;get pot0 again, 0 to -1
sof 1,0.999 ;now +1 to 0
sof 1.999,0 ;now +1 until midpint, then decreases to 0
wrax kin,0 ;write the input attenuator value
rdax pot0,1 ;get pot0 again
wrax krt,1 ;save in krt, keep in ACC
sof 1,-0.5 ;subtract 1/2
skp gez,2 ;skp if pot is in upper half of range
sof 0,0.5 ;load accumulator with +0.5
wrax krt,0 ;overwrite if pot is in lower half of range
;now prepare pot1 for pitch to zero.
;counter clockwise is full stop, clockwise is normal run
clr ;clr ACC from previous skp op
rdax pot1,0.5
sof 1,-0.5 ;(pot cannot go to full 1.0) -0.5 to 0
wrax rmp0_rate,0
;prepare stop signal, which shuts off the signal at the
;stop end of the pot range:
rdax pot1,1.999
sof -2,0
sof -2,0
wrax stop,0
;and a bypass value at norm pitch:
rdax pot1,1
sof 1,-1
exp 1,0
wrax pbyp,0
;prepare pot2 for low pass frequency control:
rdax pot2,1 ;get pot2
sof 0.35,-0.35 ;ranges -0.3 to 0
exp 1,0
wrax kfl,0 ;write to LP filter control
;now derive filter bypass function (at open condition)
rdax pot2,1 ;read pot2 (LP) again
mulx pot2
mulx pot2
mulx pot2
mulx pot2
wrax lbyp,0
;now do reverb, simple, twin loop, mono drive:
rdax adcl,0.25
rdax adcr,0.25 ;get inputs, leave headroom
mulx kin ;scale by input attenuator
rda ap1#,kap ;4 all passes:
wrap ap1,-kap
rda ap2#,kap
wrap ap2,-kap
wrax temp,0 ;write ap output to temp reg
rda del2#,1
mulx krt
rdax temp,1
rda dap1a#,kap
wrap dap1a,-kap
rda dap1b#,kap
wrap dap1b,-kap
wra del1,0
rda del1#,1
mulx krt
rdax temp,1
rda dap2a#,kap
wrap dap2a,-kap
rda dap2b#,kap
wrap dap2b,-kap
wra del2,0
;now mix the inputs with the reverb:
rdax adcl,-1
rda del1,1.9
mulx pot0
rdax adcl,1
wrax rmixl,0
rdax adcr,-1
rda del2,1.9
mulx pot0
rdax adcr,1
wrax rmixr,0
;Reverb outputs are at rmixl and rmixr.
;now do pitch to zero:
skp run,1
wldr 0,0,4096
rdax rmixl,1
wra pdell,0
cho rda,rmp0,reg|compc,pdell
cho rda,rmp0,0,pdell+1
wra dtemp,0
cho rda,rmp0,rptr2|compc,pdell
cho rda,rmp0,rptr2,pdell+1
cho sof,rmp0,na|compc,0
cho rda,rmp0,na,dtemp
mulx stop
wrax temp,-1
rdax rmixl,1
mulx pbyp
rdax temp,1
wrax pol,0
rdax rmixr,1
wra pdelr,0
cho rda,rmp0,reg|compc,pdelr
cho rda,rmp0,0,pdelr+1
wra dtemp,0
cho rda,rmp0,rptr2|compc,pdelr
cho rda,rmp0,rptr2,pdelr+1
cho sof,rmp0,na|compc,0
cho rda,rmp0,na,dtemp
mulx stop
wrax temp,-1
rdax rmixr,1
mulx pbyp
rdax temp,1
wrax por,0
rdax lpal,1
mulx kfl
rdax lpbl,1
wrax lpbl,-1
rdax lpal,kql
rdax pol,1
mulx kfl
rdax lpal,1
wrax lpal,0
rdax lpar,1
mulx kfl
rdax lpbr,1
wrax lpbr,-1
rdax lpar,kql
rdax por,1
mulx kfl
rdax lpar,1
wrax lpar,0
rdax lpbl,-1
rdax pol,1
mulx lbyp
rdax lpbl,1
wrax dacl,0
rdax lpbr,-1
rdax por,1
mulx lbyp
rdax lpbr,1
wrax dacr,0