@audiofab-io/fv1-core 0.6.1 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/blocks/ATL_DEVELOPER_REFERENCE.md +156 -156
  2. package/blocks/control/constant.atl +36 -36
  3. package/blocks/control/entropy_lfo.atl +74 -74
  4. package/blocks/control/envelope.atl +120 -120
  5. package/blocks/control/invert.atl +33 -33
  6. package/blocks/control/pot.atl +149 -149
  7. package/blocks/control/power.atl +76 -76
  8. package/blocks/control/ramp_lfo.atl +122 -122
  9. package/blocks/control/scale_offset.atl +84 -84
  10. package/blocks/control/sincos_lfo.atl +126 -126
  11. package/blocks/control/smoother.atl +48 -48
  12. package/blocks/control/tremolizer.atl +54 -54
  13. package/blocks/effects/delay/micro_stutter.atl +77 -77
  14. package/blocks/effects/delay/mn3011.atl +280 -280
  15. package/blocks/effects/delay/simple_delay.atl +96 -96
  16. package/blocks/effects/delay/triple_tap_delay.atl +176 -176
  17. package/blocks/effects/lo-fi/bit_mangler.atl +74 -74
  18. package/blocks/effects/lo-fi/chiptune.atl +311 -311
  19. package/blocks/effects/lo-fi/tape_degrade.atl +181 -181
  20. package/blocks/effects/modulation/chorus.atl +141 -141
  21. package/blocks/effects/modulation/chorus_4voice.atl +188 -188
  22. package/blocks/effects/modulation/flanger.atl +184 -184
  23. package/blocks/effects/modulation/harmonic_trem.atl +129 -129
  24. package/blocks/effects/modulation/phaser.atl +299 -299
  25. package/blocks/effects/pitch/octave_up_down.atl +80 -80
  26. package/blocks/effects/pitch/pitch_offset.atl +149 -149
  27. package/blocks/effects/pitch/pitch_offset_dual.atl +197 -197
  28. package/blocks/effects/pitch/pitch_shift.atl +115 -115
  29. package/blocks/effects/pitch/sub_octave.atl +100 -100
  30. package/blocks/effects/reverb/ducking_reverb.atl +145 -145
  31. package/blocks/effects/reverb/min_reverb.atl +132 -132
  32. package/blocks/effects/reverb/plate_reverb.atl +344 -344
  33. package/blocks/effects/reverb/room_reverb.atl +293 -293
  34. package/blocks/effects/reverb/smear.atl +90 -90
  35. package/blocks/effects/reverb/spring_reverb.atl +353 -353
  36. package/blocks/filter/1p_high_pass.atl +62 -62
  37. package/blocks/filter/1p_low_pass.atl +58 -58
  38. package/blocks/filter/auto_wah.atl +207 -207
  39. package/blocks/filter/bbd_loss.atl +79 -79
  40. package/blocks/filter/shelving_high_pass.atl +76 -76
  41. package/blocks/filter/shelving_low_pass.atl +76 -76
  42. package/blocks/filter/svf_2p.atl +116 -116
  43. package/blocks/gain_mix/crossfade.atl +93 -93
  44. package/blocks/gain_mix/crossfade2.atl +86 -86
  45. package/blocks/gain_mix/crossfade3.atl +71 -71
  46. package/blocks/gain_mix/gainboost.atl +54 -54
  47. package/blocks/gain_mix/mixer2.atl +76 -76
  48. package/blocks/gain_mix/mixer3.atl +109 -109
  49. package/blocks/gain_mix/mixer4.atl +151 -151
  50. package/blocks/gain_mix/volume.atl +50 -50
  51. package/blocks/io/adc.atl +53 -53
  52. package/blocks/io/dac.atl +61 -61
  53. package/blocks/other/stickynote.atl +24 -24
  54. package/blocks/other/tone_gen_adjustable.atl +137 -137
  55. package/blocks/other/tone_gen_fixed.atl +109 -109
  56. package/dist/blockDiagram/builtinBlocks.js +107 -107
  57. package/dist/blockDiagram/builtinBlocks.js.map +1 -1
  58. package/dist/simulator/FV1Simulator.d.ts +12 -0
  59. package/dist/simulator/FV1Simulator.d.ts.map +1 -1
  60. package/dist/simulator/FV1Simulator.js +47 -1
  61. package/dist/simulator/FV1Simulator.js.map +1 -1
  62. package/package.json +1 -1
@@ -1,344 +1,344 @@
1
- ---
2
- {
3
- "type": "effects.platereverb",
4
- "name": "Plate Reverb",
5
- "category": "Effects",
6
- "subcategory": "Reverb",
7
- "description": "High-quality plate reverb",
8
- "color": "#7100FC",
9
- "width": 180,
10
- "inputs": [
11
- {
12
- "id": "in",
13
- "name": "Input",
14
- "type": "audio"
15
- },
16
- {
17
- "id": "dampingCV",
18
- "name": "Damping",
19
- "type": "control",
20
- "parameter": "damping"
21
- },
22
- {
23
- "id": "decayTimeCV",
24
- "name": "Decay Time",
25
- "type": "control",
26
- "parameter": "decayTime"
27
- }
28
- ],
29
- "outputs": [
30
- {
31
- "id": "outL",
32
- "name": "Left",
33
- "type": "audio"
34
- },
35
- {
36
- "id": "outR",
37
- "name": "Right",
38
- "type": "audio"
39
- }
40
- ],
41
- "parameters": [
42
- {
43
- "id": "damping",
44
- "name": "Damping",
45
- "type": "number",
46
- "default": 0.5,
47
- "min": 0,
48
- "max": 1,
49
- "description": "High-frequency damping in the reverb tanks (0.0 to 1.0 feedback coefficient).",
50
- "step": 0.01
51
- },
52
- {
53
- "id": "decayTime",
54
- "name": "Decay Time",
55
- "type": "number",
56
- "default": 0.5,
57
- "min": 0,
58
- "max": 1,
59
- "description": "Reverb decay length (T60/feedback coefficient 0.0 to 1.0).",
60
- "step": 0.01
61
- },
62
- {
63
- "id": "preDelay",
64
- "name": "Pre-Delay (ms)",
65
- "type": "number",
66
- "default": 20,
67
- "min": 0,
68
- "max": 100,
69
- "conversion": "MS_TO_SAMPLES",
70
- "description": "Initial delay before reverb onset in ms. This is the only parameter that affects memory allocation.",
71
- "step": 0.1
72
- },
73
- {
74
- "id": "density",
75
- "name": "Density",
76
- "type": "select",
77
- "default": "High",
78
- "options": [
79
- {
80
- "value": "High",
81
- "label": "High (4-stage diffusion, 14 taps)"
82
- },
83
- {
84
- "value": "Standard",
85
- "label": "Standard (2-stage diffusion, 8 taps)"
86
- },
87
- {
88
- "value": "Economy",
89
- "label": "Economy (1-stage diffusion, 4 taps)"
90
- }
91
- ],
92
- "description": "Adjusts complexity to save instructions. Economy uses ~70, High uses ~110."
93
- }
94
- ],
95
- "memories": [
96
- {
97
- "id": "predelay",
98
- "size": "preDelay"
99
- },
100
- {
101
- "id": "ap13_14",
102
- "size": 156
103
- },
104
- {
105
- "id": "ap19_20",
106
- "size": 117
107
- },
108
- {
109
- "id": "ap15_16",
110
- "size": 417
111
- },
112
- {
113
- "id": "ap21_22",
114
- "size": 305
115
- },
116
- {
117
- "id": "ap23_24",
118
- "size": 748
119
- },
120
- {
121
- "id": "del24_30",
122
- "size": 4903
123
- },
124
- {
125
- "id": "ap31_33",
126
- "size": 1990
127
- },
128
- {
129
- "id": "del33_39",
130
- "size": 4096
131
- },
132
- {
133
- "id": "ap46_48",
134
- "size": 1008
135
- },
136
- {
137
- "id": "del48_54",
138
- "size": 4643
139
- },
140
- {
141
- "id": "ap55_59",
142
- "size": 2932
143
- },
144
- {
145
- "id": "del59_63",
146
- "size": 3483
147
- }
148
- ],
149
- "registers": [
150
- "decay",
151
- "decay_diffusion_2",
152
- "damping_reg",
153
- "one_minus_dmpg",
154
- "lp_inp",
155
- "lp30_31",
156
- "lp54_55",
157
- "mono",
158
- "diffuse_in",
159
- "temp",
160
- "temp2"
161
- ]
162
- }
163
- ---
164
- @section header
165
- @equals decayLimit 0.8
166
- @equals c0_35 0.35
167
- @equals c0_10 0.10
168
- @equals c0_25 0.25
169
- @equals c0_99 0.99
170
- @equals c0_999 0.9990234375
171
- @equals inputDiff1 0.75
172
- @equals inputDiff2 0.625
173
- @equals decayDiff1 0.70
174
- @equals bandwidth 0.31852 ; 1 - 0.68148
175
- @equals tap0_6 0.6
176
- @equals tapNeg0_6 -0.6
177
- @equals 8 8
178
-
179
- @section init
180
- ; Plate Reverb init
181
- skp run, done
182
- wlds SIN0, 27, 8
183
- wlds SIN1, 23, 8
184
- done:
185
-
186
- @section main
187
- ; Calculate decay time
188
- @cv decayTimeCV
189
- sof ${decayLimit}, 0.0
190
- wrax ${reg.decay}, 1.0
191
-
192
- ; Calculate decay_diffusion_2
193
- sof 1.0, -${c0_35}
194
- skp neg, 1
195
- clr
196
- sof 1.0, ${c0_35}
197
- sof 1.0, -${c0_10}
198
- skp gez, 1
199
- clr
200
- sof 1.0, ${c0_25}
201
- wrax ${reg.decay_diffusion_2}, 0.0
202
-
203
- ; Damping
204
- @cv dampingCV
205
- sof -1.0, ${c0_99}
206
- wrax ${reg.damping_reg}, -1.0
207
- sof 1.0, ${c0_999}
208
- wrax ${reg.one_minus_dmpg}, 0.0
209
-
210
- ; Mono sum and pre-delay
211
- rdax ${input.in}, 1.0
212
- wrax ${reg.mono}, 1.0
213
- wra ${mem.predelay}, 0.0
214
-
215
- ; Input low-pass
216
- rda ${mem.predelay}#, ${bandwidth}
217
- rdax ${reg.lp_inp}, 1.0-${bandwidth}
218
- wrax ${reg.lp_inp}, 1.0
219
-
220
- ; Input diffusion
221
- rda ${mem.ap13_14}#, -${inputDiff1}
222
- wrap ${mem.ap13_14}, ${inputDiff1}
223
-
224
- @if density != 'Economy'
225
- rda ${mem.ap15_16}#, -${inputDiff2}
226
- wrap ${mem.ap15_16}, ${inputDiff2}
227
- @endif
228
-
229
- @if density == 'High'
230
- rda ${mem.ap19_20}#, -${inputDiff1}
231
- wrap ${mem.ap19_20}, ${inputDiff1}
232
- rda ${mem.ap21_22}#, -${inputDiff2}
233
- wrap ${mem.ap21_22}, ${inputDiff2}
234
- @endif
235
-
236
- wrax ${reg.diffuse_in}, 0.0
237
-
238
- ; Left Tank
239
- rda ${mem.del59_63}#, 1.0
240
- mulx ${reg.decay}
241
- rdax ${reg.diffuse_in}, 1.0
242
- wrax ${reg.temp}, 0.0
243
-
244
- cho rda, SIN0, SIN|REG|COMPC, ${mem.ap23_24}#-8-1
245
- cho rda, SIN0, SIN, ${mem.ap23_24}#-8
246
- wrax ${reg.temp2}, ${decayDiff1}
247
- rdax ${reg.temp}, 1.0
248
- wra ${mem.ap23_24}, -${decayDiff1}
249
- rdax ${reg.temp2}, 1.0
250
-
251
- wra ${mem.del24_30}, 0.0
252
- rda ${mem.del24_30}#, 1.0
253
-
254
- ; Tank LP
255
- mulx ${reg.one_minus_dmpg}
256
- wrax ${reg.temp}, 0.0
257
- rdax ${reg.lp30_31}, 1.0
258
- mulx ${reg.damping_reg}
259
- rdax ${reg.temp}, 1.0
260
- wrax ${reg.lp30_31}, 1.0
261
- mulx ${reg.decay}
262
- wrax ${reg.temp}, 0.0
263
-
264
- cho rda, SIN1, COS|REG|COMPC, ${mem.ap31_33}#-8-1
265
- cho rda, SIN1, COS, ${mem.ap31_33}#-8
266
- wrax ${reg.temp2}, -1.0
267
- mulx ${reg.decay_diffusion_2}
268
- rdax ${reg.temp}, 1.0
269
- wra ${mem.ap31_33}, 1.0
270
- mulx ${reg.decay_diffusion_2}
271
- rdax ${reg.temp2}, 1.0
272
-
273
- wra ${mem.del33_39}, 0.0
274
- rda ${mem.del33_39}#, 1.0
275
-
276
- ; Right Tank
277
- mulx ${reg.decay}
278
- rdax ${reg.diffuse_in}, 1.0
279
- wrax ${reg.temp}, 0.0
280
-
281
- cho rda, SIN0, COS|REG|COMPC, ${mem.ap46_48}#-8-1
282
- cho rda, SIN0, COS, ${mem.ap46_48}#-8
283
- wrax ${reg.temp2}, ${decayDiff1}
284
- rdax ${reg.temp}, 1.0
285
- wra ${mem.ap46_48}, -${decayDiff1}
286
- rdax ${reg.temp2}, 1.0
287
-
288
- wra ${mem.del48_54}, 0.0
289
- rda ${mem.del48_54}#, 1.0
290
-
291
- mulx ${reg.one_minus_dmpg}
292
- wrax ${reg.temp}, 0.0
293
- rdax ${reg.lp54_55}, 1.0
294
- mulx ${reg.damping_reg}
295
- rdax ${reg.temp}, 1.0
296
- wrax ${reg.lp54_55}, 1.0
297
- mulx ${reg.decay}
298
- wrax ${reg.temp}, 0.0
299
-
300
- cho rda, SIN1, SIN|REG|COMPC, ${mem.ap55_59}#-8-1
301
- cho rda, SIN1, SIN, ${mem.ap55_59}#-8
302
- wrax ${reg.temp2}, -1.0
303
- mulx ${reg.decay_diffusion_2}
304
- rdax ${reg.temp}, 1.0
305
- wra ${mem.ap55_59}, 1.0
306
- mulx ${reg.decay_diffusion_2}
307
- rdax ${reg.temp2}, 1.0
308
-
309
- wra ${mem.del59_63}, 0.0
310
-
311
- ; Left Output Taps
312
- rda ${mem.del48_54}+292, ${tap0_6}
313
- rda ${mem.del24_30}+2192, ${tapNeg0_6}
314
-
315
- @if density != 'Economy'
316
- rda ${mem.del48_54}+3274, ${tap0_6}
317
- rda ${mem.del33_39}+1174, ${tapNeg0_6}
318
- @endif
319
-
320
- @if density == 'High'
321
- rda ${mem.ap55_59}+2107, ${tapNeg0_6}
322
- rda ${mem.del59_63}+2198, ${tap0_6}
323
- rda ${mem.ap31_33}+205, ${tapNeg0_6}
324
- @endif
325
-
326
- wrax ${output.outL}, 0.0
327
-
328
- ; Right Output Taps
329
- rda ${mem.del24_30}+389, ${tap0_6}
330
- rda ${mem.del59_63}+133, ${tapNeg0_6}
331
-
332
- @if density != 'Economy'
333
- rda ${mem.del24_30}+3993, ${tap0_6}
334
- rda ${mem.del48_54}+2325, ${tapNeg0_6}
335
- @endif
336
-
337
- @if density == 'High'
338
- rda ${mem.ap31_33}+1352, ${tapNeg0_6}
339
- rda ${mem.del33_39}+2943, ${tap0_6}
340
- rda ${mem.ap55_59}+369, ${tapNeg0_6}
341
- @endif
342
-
343
- wrax ${output.outR}, 0.0
344
-
1
+ ---
2
+ {
3
+ "type": "effects.platereverb",
4
+ "name": "Plate Reverb",
5
+ "category": "Effects",
6
+ "subcategory": "Reverb",
7
+ "description": "High-quality plate reverb",
8
+ "color": "#7100FC",
9
+ "width": 180,
10
+ "inputs": [
11
+ {
12
+ "id": "in",
13
+ "name": "Input",
14
+ "type": "audio"
15
+ },
16
+ {
17
+ "id": "dampingCV",
18
+ "name": "Damping",
19
+ "type": "control",
20
+ "parameter": "damping"
21
+ },
22
+ {
23
+ "id": "decayTimeCV",
24
+ "name": "Decay Time",
25
+ "type": "control",
26
+ "parameter": "decayTime"
27
+ }
28
+ ],
29
+ "outputs": [
30
+ {
31
+ "id": "outL",
32
+ "name": "Left",
33
+ "type": "audio"
34
+ },
35
+ {
36
+ "id": "outR",
37
+ "name": "Right",
38
+ "type": "audio"
39
+ }
40
+ ],
41
+ "parameters": [
42
+ {
43
+ "id": "damping",
44
+ "name": "Damping",
45
+ "type": "number",
46
+ "default": 0.5,
47
+ "min": 0,
48
+ "max": 1,
49
+ "description": "High-frequency damping in the reverb tanks (0.0 to 1.0 feedback coefficient).",
50
+ "step": 0.01
51
+ },
52
+ {
53
+ "id": "decayTime",
54
+ "name": "Decay Time",
55
+ "type": "number",
56
+ "default": 0.5,
57
+ "min": 0,
58
+ "max": 1,
59
+ "description": "Reverb decay length (T60/feedback coefficient 0.0 to 1.0).",
60
+ "step": 0.01
61
+ },
62
+ {
63
+ "id": "preDelay",
64
+ "name": "Pre-Delay (ms)",
65
+ "type": "number",
66
+ "default": 20,
67
+ "min": 0,
68
+ "max": 100,
69
+ "conversion": "MS_TO_SAMPLES",
70
+ "description": "Initial delay before reverb onset in ms. This is the only parameter that affects memory allocation.",
71
+ "step": 0.1
72
+ },
73
+ {
74
+ "id": "density",
75
+ "name": "Density",
76
+ "type": "select",
77
+ "default": "High",
78
+ "options": [
79
+ {
80
+ "value": "High",
81
+ "label": "High (4-stage diffusion, 14 taps)"
82
+ },
83
+ {
84
+ "value": "Standard",
85
+ "label": "Standard (2-stage diffusion, 8 taps)"
86
+ },
87
+ {
88
+ "value": "Economy",
89
+ "label": "Economy (1-stage diffusion, 4 taps)"
90
+ }
91
+ ],
92
+ "description": "Adjusts complexity to save instructions. Economy uses ~70, High uses ~110."
93
+ }
94
+ ],
95
+ "memories": [
96
+ {
97
+ "id": "predelay",
98
+ "size": "preDelay"
99
+ },
100
+ {
101
+ "id": "ap13_14",
102
+ "size": 156
103
+ },
104
+ {
105
+ "id": "ap19_20",
106
+ "size": 117
107
+ },
108
+ {
109
+ "id": "ap15_16",
110
+ "size": 417
111
+ },
112
+ {
113
+ "id": "ap21_22",
114
+ "size": 305
115
+ },
116
+ {
117
+ "id": "ap23_24",
118
+ "size": 748
119
+ },
120
+ {
121
+ "id": "del24_30",
122
+ "size": 4903
123
+ },
124
+ {
125
+ "id": "ap31_33",
126
+ "size": 1990
127
+ },
128
+ {
129
+ "id": "del33_39",
130
+ "size": 4096
131
+ },
132
+ {
133
+ "id": "ap46_48",
134
+ "size": 1008
135
+ },
136
+ {
137
+ "id": "del48_54",
138
+ "size": 4643
139
+ },
140
+ {
141
+ "id": "ap55_59",
142
+ "size": 2932
143
+ },
144
+ {
145
+ "id": "del59_63",
146
+ "size": 3483
147
+ }
148
+ ],
149
+ "registers": [
150
+ "decay",
151
+ "decay_diffusion_2",
152
+ "damping_reg",
153
+ "one_minus_dmpg",
154
+ "lp_inp",
155
+ "lp30_31",
156
+ "lp54_55",
157
+ "mono",
158
+ "diffuse_in",
159
+ "temp",
160
+ "temp2"
161
+ ]
162
+ }
163
+ ---
164
+ @section header
165
+ @equals decayLimit 0.8
166
+ @equals c0_35 0.35
167
+ @equals c0_10 0.10
168
+ @equals c0_25 0.25
169
+ @equals c0_99 0.99
170
+ @equals c0_999 0.9990234375
171
+ @equals inputDiff1 0.75
172
+ @equals inputDiff2 0.625
173
+ @equals decayDiff1 0.70
174
+ @equals bandwidth 0.31852 ; 1 - 0.68148
175
+ @equals tap0_6 0.6
176
+ @equals tapNeg0_6 -0.6
177
+ @equals 8 8
178
+
179
+ @section init
180
+ ; Plate Reverb init
181
+ skp run, done
182
+ wlds SIN0, 27, 8
183
+ wlds SIN1, 23, 8
184
+ done:
185
+
186
+ @section main
187
+ ; Calculate decay time
188
+ @cv decayTimeCV
189
+ sof ${decayLimit}, 0.0
190
+ wrax ${reg.decay}, 1.0
191
+
192
+ ; Calculate decay_diffusion_2
193
+ sof 1.0, -${c0_35}
194
+ skp neg, 1
195
+ clr
196
+ sof 1.0, ${c0_35}
197
+ sof 1.0, -${c0_10}
198
+ skp gez, 1
199
+ clr
200
+ sof 1.0, ${c0_25}
201
+ wrax ${reg.decay_diffusion_2}, 0.0
202
+
203
+ ; Damping
204
+ @cv dampingCV
205
+ sof -1.0, ${c0_99}
206
+ wrax ${reg.damping_reg}, -1.0
207
+ sof 1.0, ${c0_999}
208
+ wrax ${reg.one_minus_dmpg}, 0.0
209
+
210
+ ; Mono sum and pre-delay
211
+ rdax ${input.in}, 1.0
212
+ wrax ${reg.mono}, 1.0
213
+ wra ${mem.predelay}, 0.0
214
+
215
+ ; Input low-pass
216
+ rda ${mem.predelay}#, ${bandwidth}
217
+ rdax ${reg.lp_inp}, 1.0-${bandwidth}
218
+ wrax ${reg.lp_inp}, 1.0
219
+
220
+ ; Input diffusion
221
+ rda ${mem.ap13_14}#, -${inputDiff1}
222
+ wrap ${mem.ap13_14}, ${inputDiff1}
223
+
224
+ @if density != 'Economy'
225
+ rda ${mem.ap15_16}#, -${inputDiff2}
226
+ wrap ${mem.ap15_16}, ${inputDiff2}
227
+ @endif
228
+
229
+ @if density == 'High'
230
+ rda ${mem.ap19_20}#, -${inputDiff1}
231
+ wrap ${mem.ap19_20}, ${inputDiff1}
232
+ rda ${mem.ap21_22}#, -${inputDiff2}
233
+ wrap ${mem.ap21_22}, ${inputDiff2}
234
+ @endif
235
+
236
+ wrax ${reg.diffuse_in}, 0.0
237
+
238
+ ; Left Tank
239
+ rda ${mem.del59_63}#, 1.0
240
+ mulx ${reg.decay}
241
+ rdax ${reg.diffuse_in}, 1.0
242
+ wrax ${reg.temp}, 0.0
243
+
244
+ cho rda, SIN0, SIN|REG|COMPC, ${mem.ap23_24}#-8-1
245
+ cho rda, SIN0, SIN, ${mem.ap23_24}#-8
246
+ wrax ${reg.temp2}, ${decayDiff1}
247
+ rdax ${reg.temp}, 1.0
248
+ wra ${mem.ap23_24}, -${decayDiff1}
249
+ rdax ${reg.temp2}, 1.0
250
+
251
+ wra ${mem.del24_30}, 0.0
252
+ rda ${mem.del24_30}#, 1.0
253
+
254
+ ; Tank LP
255
+ mulx ${reg.one_minus_dmpg}
256
+ wrax ${reg.temp}, 0.0
257
+ rdax ${reg.lp30_31}, 1.0
258
+ mulx ${reg.damping_reg}
259
+ rdax ${reg.temp}, 1.0
260
+ wrax ${reg.lp30_31}, 1.0
261
+ mulx ${reg.decay}
262
+ wrax ${reg.temp}, 0.0
263
+
264
+ cho rda, SIN1, COS|REG|COMPC, ${mem.ap31_33}#-8-1
265
+ cho rda, SIN1, COS, ${mem.ap31_33}#-8
266
+ wrax ${reg.temp2}, -1.0
267
+ mulx ${reg.decay_diffusion_2}
268
+ rdax ${reg.temp}, 1.0
269
+ wra ${mem.ap31_33}, 1.0
270
+ mulx ${reg.decay_diffusion_2}
271
+ rdax ${reg.temp2}, 1.0
272
+
273
+ wra ${mem.del33_39}, 0.0
274
+ rda ${mem.del33_39}#, 1.0
275
+
276
+ ; Right Tank
277
+ mulx ${reg.decay}
278
+ rdax ${reg.diffuse_in}, 1.0
279
+ wrax ${reg.temp}, 0.0
280
+
281
+ cho rda, SIN0, COS|REG|COMPC, ${mem.ap46_48}#-8-1
282
+ cho rda, SIN0, COS, ${mem.ap46_48}#-8
283
+ wrax ${reg.temp2}, ${decayDiff1}
284
+ rdax ${reg.temp}, 1.0
285
+ wra ${mem.ap46_48}, -${decayDiff1}
286
+ rdax ${reg.temp2}, 1.0
287
+
288
+ wra ${mem.del48_54}, 0.0
289
+ rda ${mem.del48_54}#, 1.0
290
+
291
+ mulx ${reg.one_minus_dmpg}
292
+ wrax ${reg.temp}, 0.0
293
+ rdax ${reg.lp54_55}, 1.0
294
+ mulx ${reg.damping_reg}
295
+ rdax ${reg.temp}, 1.0
296
+ wrax ${reg.lp54_55}, 1.0
297
+ mulx ${reg.decay}
298
+ wrax ${reg.temp}, 0.0
299
+
300
+ cho rda, SIN1, SIN|REG|COMPC, ${mem.ap55_59}#-8-1
301
+ cho rda, SIN1, SIN, ${mem.ap55_59}#-8
302
+ wrax ${reg.temp2}, -1.0
303
+ mulx ${reg.decay_diffusion_2}
304
+ rdax ${reg.temp}, 1.0
305
+ wra ${mem.ap55_59}, 1.0
306
+ mulx ${reg.decay_diffusion_2}
307
+ rdax ${reg.temp2}, 1.0
308
+
309
+ wra ${mem.del59_63}, 0.0
310
+
311
+ ; Left Output Taps
312
+ rda ${mem.del48_54}+292, ${tap0_6}
313
+ rda ${mem.del24_30}+2192, ${tapNeg0_6}
314
+
315
+ @if density != 'Economy'
316
+ rda ${mem.del48_54}+3274, ${tap0_6}
317
+ rda ${mem.del33_39}+1174, ${tapNeg0_6}
318
+ @endif
319
+
320
+ @if density == 'High'
321
+ rda ${mem.ap55_59}+2107, ${tapNeg0_6}
322
+ rda ${mem.del59_63}+2198, ${tap0_6}
323
+ rda ${mem.ap31_33}+205, ${tapNeg0_6}
324
+ @endif
325
+
326
+ wrax ${output.outL}, 0.0
327
+
328
+ ; Right Output Taps
329
+ rda ${mem.del24_30}+389, ${tap0_6}
330
+ rda ${mem.del59_63}+133, ${tapNeg0_6}
331
+
332
+ @if density != 'Economy'
333
+ rda ${mem.del24_30}+3993, ${tap0_6}
334
+ rda ${mem.del48_54}+2325, ${tapNeg0_6}
335
+ @endif
336
+
337
+ @if density == 'High'
338
+ rda ${mem.ap31_33}+1352, ${tapNeg0_6}
339
+ rda ${mem.del33_39}+2943, ${tap0_6}
340
+ rda ${mem.ap55_59}+369, ${tapNeg0_6}
341
+ @endif
342
+
343
+ wrax ${output.outR}, 0.0
344
+