@audiofab-io/fv1-core 0.5.0 → 0.6.1
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.
- package/blocks/ATL_DEVELOPER_REFERENCE.md +156 -156
- package/blocks/control/constant.atl +36 -36
- package/blocks/control/entropy_lfo.atl +74 -74
- package/blocks/control/envelope.atl +120 -120
- package/blocks/control/invert.atl +33 -33
- package/blocks/control/pot.atl +149 -149
- package/blocks/control/power.atl +76 -76
- package/blocks/control/ramp_lfo.atl +122 -122
- package/blocks/control/scale_offset.atl +84 -84
- package/blocks/control/sincos_lfo.atl +126 -126
- package/blocks/control/smoother.atl +48 -48
- package/blocks/control/tremolizer.atl +54 -54
- package/blocks/effects/delay/micro_stutter.atl +77 -77
- package/blocks/effects/delay/mn3011.atl +280 -280
- package/blocks/effects/delay/simple_delay.atl +96 -96
- package/blocks/effects/delay/triple_tap_delay.atl +176 -176
- package/blocks/effects/lo-fi/bit_mangler.atl +74 -74
- package/blocks/effects/lo-fi/chiptune.atl +311 -311
- package/blocks/effects/lo-fi/tape_degrade.atl +181 -181
- package/blocks/effects/modulation/chorus.atl +141 -141
- package/blocks/effects/modulation/chorus_4voice.atl +188 -188
- package/blocks/effects/modulation/flanger.atl +184 -184
- package/blocks/effects/modulation/harmonic_trem.atl +129 -129
- package/blocks/effects/modulation/phaser.atl +299 -299
- package/blocks/effects/pitch/octave_up_down.atl +80 -80
- package/blocks/effects/pitch/pitch_offset.atl +149 -149
- package/blocks/effects/pitch/pitch_offset_dual.atl +197 -197
- package/blocks/effects/pitch/pitch_shift.atl +115 -115
- package/blocks/effects/pitch/sub_octave.atl +100 -100
- package/blocks/effects/reverb/ducking_reverb.atl +145 -145
- package/blocks/effects/reverb/min_reverb.atl +132 -132
- package/blocks/effects/reverb/plate_reverb.atl +344 -344
- package/blocks/effects/reverb/room_reverb.atl +293 -293
- package/blocks/effects/reverb/smear.atl +90 -90
- package/blocks/effects/reverb/spring_reverb.atl +353 -353
- package/blocks/filter/1p_high_pass.atl +62 -62
- package/blocks/filter/1p_low_pass.atl +58 -58
- package/blocks/filter/auto_wah.atl +207 -207
- package/blocks/filter/bbd_loss.atl +79 -79
- package/blocks/filter/shelving_high_pass.atl +76 -76
- package/blocks/filter/shelving_low_pass.atl +76 -76
- package/blocks/filter/svf_2p.atl +116 -116
- package/blocks/gain_mix/crossfade.atl +93 -93
- package/blocks/gain_mix/crossfade2.atl +86 -86
- package/blocks/gain_mix/crossfade3.atl +71 -71
- package/blocks/gain_mix/gainboost.atl +54 -54
- package/blocks/gain_mix/mixer2.atl +76 -76
- package/blocks/gain_mix/mixer3.atl +109 -109
- package/blocks/gain_mix/mixer4.atl +151 -151
- package/blocks/gain_mix/volume.atl +50 -50
- package/blocks/io/adc.atl +53 -53
- package/blocks/io/dac.atl +61 -61
- package/blocks/other/stickynote.atl +24 -24
- package/blocks/other/tone_gen_adjustable.atl +137 -137
- package/blocks/other/tone_gen_fixed.atl +109 -109
- package/dist/blockDiagram/builtinBlocks.js +107 -107
- package/dist/blockDiagram/builtinBlocks.js.map +1 -1
- package/dist/blockDiagram/compiler/BlockTemplate.d.ts.map +1 -1
- package/dist/blockDiagram/compiler/BlockTemplate.js +18 -0
- package/dist/blockDiagram/compiler/BlockTemplate.js.map +1 -1
- package/dist/spnbank/index.d.ts +49 -7
- package/dist/spnbank/index.d.ts.map +1 -1
- package/dist/spnbank/index.js +99 -15
- package/dist/spnbank/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,281 +1,281 @@
|
|
|
1
|
-
---
|
|
2
|
-
{
|
|
3
|
-
"type": "effects.delay.mn3011",
|
|
4
|
-
"name": "MN3011 Multitap BBD Delay",
|
|
5
|
-
"category": "Effects",
|
|
6
|
-
"subcategory": "Delay",
|
|
7
|
-
"description": "Simulation of the classic MN3011 mult-tap BBD delay chip",
|
|
8
|
-
"color": "#6060c4",
|
|
9
|
-
"width": 230,
|
|
10
|
-
"inputs": [
|
|
11
|
-
{
|
|
12
|
-
"id": "in",
|
|
13
|
-
"name": "Audio In",
|
|
14
|
-
"type": "audio",
|
|
15
|
-
"required": true
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"id": "fb_in",
|
|
19
|
-
"name": "Feedback",
|
|
20
|
-
"type": "audio",
|
|
21
|
-
"required": false
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"id": "time_cv",
|
|
25
|
-
"name": "Delay Time",
|
|
26
|
-
"type": "control",
|
|
27
|
-
"required": false,
|
|
28
|
-
"parameter": "time"
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"id": "fb_level_cv",
|
|
32
|
-
"name": "Feedback Level",
|
|
33
|
-
"type": "control",
|
|
34
|
-
"required": false,
|
|
35
|
-
"parameter": "fb_level"
|
|
36
|
-
}
|
|
37
|
-
],
|
|
38
|
-
"outputs": [
|
|
39
|
-
{
|
|
40
|
-
"id": "mix",
|
|
41
|
-
"name": "Mix Out",
|
|
42
|
-
"type": "audio"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"id": "tap6",
|
|
46
|
-
"name": "Tap 6 Out",
|
|
47
|
-
"type": "audio"
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
"parameters": [
|
|
51
|
-
{
|
|
52
|
-
"id": "input_gain",
|
|
53
|
-
"name": "Input Gain",
|
|
54
|
-
"type": "number",
|
|
55
|
-
"min": -24,
|
|
56
|
-
"max": 0,
|
|
57
|
-
"default": -6,
|
|
58
|
-
"conversion": "DBLEVEL",
|
|
59
|
-
"description": "Gain of the dry signal entering the delay line."
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"id": "fb_level",
|
|
63
|
-
"name": "Feedback Level",
|
|
64
|
-
"type": "number",
|
|
65
|
-
"min": 0,
|
|
66
|
-
"max": 1,
|
|
67
|
-
"default": 0.5,
|
|
68
|
-
"step": 0.01,
|
|
69
|
-
"description": "Amount of feedback signal mixed in."
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"id": "fbk_gain",
|
|
73
|
-
"name": "Feedback Gain",
|
|
74
|
-
"type": "number",
|
|
75
|
-
"min": -24,
|
|
76
|
-
"max": 0,
|
|
77
|
-
"default": -6,
|
|
78
|
-
"conversion": "DBLEVEL",
|
|
79
|
-
"description": "Master gain coefficient for the feedback loop."
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"id": "time",
|
|
83
|
-
"name": "Delay Time (Scaling)",
|
|
84
|
-
"type": "number",
|
|
85
|
-
"min": 0,
|
|
86
|
-
"max": 1,
|
|
87
|
-
"default": 1.0,
|
|
88
|
-
"step": 0.01,
|
|
89
|
-
"description": "Global time scaling for all BBD taps (simulates clock rate)."
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"id": "max_delay",
|
|
93
|
-
"name": "Max BBD Clock (ms)",
|
|
94
|
-
"type": "number",
|
|
95
|
-
"min": 1,
|
|
96
|
-
"max": 1000,
|
|
97
|
-
"default": 1000,
|
|
98
|
-
"conversion": "LENGTHTOTIME",
|
|
99
|
-
"description": "Maximum possible delay of the longest tap (3328 stages)."
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
"id": "tap1_gain",
|
|
103
|
-
"name": "Tap 1 Gain",
|
|
104
|
-
"type": "number",
|
|
105
|
-
"min": -24,
|
|
106
|
-
"max": 0,
|
|
107
|
-
"default": -6,
|
|
108
|
-
"conversion": "DBLEVEL"
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
"id": "tap2_gain",
|
|
112
|
-
"name": "Tap 2 Gain",
|
|
113
|
-
"type": "number",
|
|
114
|
-
"min": -24,
|
|
115
|
-
"max": 0,
|
|
116
|
-
"default": -6,
|
|
117
|
-
"conversion": "DBLEVEL"
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"id": "tap3_gain",
|
|
121
|
-
"name": "Tap 3 Gain",
|
|
122
|
-
"type": "number",
|
|
123
|
-
"min": -24,
|
|
124
|
-
"max": 0,
|
|
125
|
-
"default": -6,
|
|
126
|
-
"conversion": "DBLEVEL"
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
"id": "tap4_gain",
|
|
130
|
-
"name": "Tap 4 Gain",
|
|
131
|
-
"type": "number",
|
|
132
|
-
"min": -24,
|
|
133
|
-
"max": 0,
|
|
134
|
-
"default": -6,
|
|
135
|
-
"conversion": "DBLEVEL"
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
"id": "tap5_gain",
|
|
139
|
-
"name": "Tap 5 Gain",
|
|
140
|
-
"type": "number",
|
|
141
|
-
"min": -24,
|
|
142
|
-
"max": 0,
|
|
143
|
-
"default": -6,
|
|
144
|
-
"conversion": "DBLEVEL"
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
"id": "tap6_gain",
|
|
148
|
-
"name": "Tap 6 Gain",
|
|
149
|
-
"type": "number",
|
|
150
|
-
"min": -24,
|
|
151
|
-
"max": 0,
|
|
152
|
-
"default": -6,
|
|
153
|
-
"conversion": "DBLEVEL"
|
|
154
|
-
}
|
|
155
|
-
],
|
|
156
|
-
"registers": [
|
|
157
|
-
"pot_val",
|
|
158
|
-
"mix_acc",
|
|
159
|
-
"tap_out"
|
|
160
|
-
],
|
|
161
|
-
"memories": [
|
|
162
|
-
{
|
|
163
|
-
"id": "buffer",
|
|
164
|
-
"size": "max_delay"
|
|
165
|
-
}
|
|
166
|
-
]
|
|
167
|
-
}
|
|
168
|
-
---
|
|
169
|
-
@section header
|
|
170
|
-
; MN3011 Target Ratios (stage / 3328)
|
|
171
|
-
equ t1_ratio 0.118990 ; 396/3328
|
|
172
|
-
equ t2_ratio 0.198918 ; 662/3328
|
|
173
|
-
equ t3_ratio 0.358774 ; 1194/3328
|
|
174
|
-
equ t4_ratio 0.518630 ; 1726/3328
|
|
175
|
-
equ t5_ratio 0.838341 ; 2790/3328
|
|
176
|
-
equ t6_ratio 1.0 ; 3328/3328
|
|
177
|
-
|
|
178
|
-
@section main
|
|
179
|
-
; 1. Feedback Processing
|
|
180
|
-
@if pinConnected(fb_in)
|
|
181
|
-
rdax ${input.fb_in}, 1.0
|
|
182
|
-
@mulcv fb_level_cv
|
|
183
|
-
sof ${param.fbk_gain}, 0.0
|
|
184
|
-
@else
|
|
185
|
-
clr
|
|
186
|
-
@endif
|
|
187
|
-
|
|
188
|
-
; 2. Input Summing & Write
|
|
189
|
-
rdax ${input.in}, ${param.input_gain}
|
|
190
|
-
wra ${mem.buffer}, 0.0
|
|
191
|
-
|
|
192
|
-
; 3. Multitap Summation
|
|
193
|
-
@if pinConnected(time_cv)
|
|
194
|
-
; --- Dynamic Time (ADDR_PTR mode) ---
|
|
195
|
-
@cv time_cv
|
|
196
|
-
wrax ${reg.pot_val}, 0.0
|
|
197
|
-
|
|
198
|
-
; Tap 6 (processed first for fb_out convenience)
|
|
199
|
-
rdax ${reg.pot_val}, 1.0
|
|
200
|
-
sof t6_ratio, 0
|
|
201
|
-
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
202
|
-
wrax ADDR_PTR, 0
|
|
203
|
-
rmpa 1.0
|
|
204
|
-
@if pinConnected(tap6)
|
|
205
|
-
wrax ${output.tap6}, 1.0
|
|
206
|
-
@endif
|
|
207
|
-
sof ${param.tap6_gain}, 0.0
|
|
208
|
-
wrax ${reg.mix_acc}, 0.0
|
|
209
|
-
|
|
210
|
-
; Tap 1
|
|
211
|
-
rdax ${reg.pot_val}, 1.0
|
|
212
|
-
sof t1_ratio, 0
|
|
213
|
-
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
214
|
-
wrax ADDR_PTR, 0
|
|
215
|
-
rmpa ${param.tap1_gain}
|
|
216
|
-
rdax ${reg.mix_acc}, 1.0
|
|
217
|
-
wrax ${reg.mix_acc}, 0.0
|
|
218
|
-
|
|
219
|
-
; Tap 2
|
|
220
|
-
rdax ${reg.pot_val}, 1.0
|
|
221
|
-
sof t2_ratio, 0
|
|
222
|
-
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
223
|
-
wrax ADDR_PTR, 0
|
|
224
|
-
rmpa ${param.tap2_gain}
|
|
225
|
-
rdax ${reg.mix_acc}, 1.0
|
|
226
|
-
wrax ${reg.mix_acc}, 0.0
|
|
227
|
-
|
|
228
|
-
; Tap 3
|
|
229
|
-
rdax ${reg.pot_val}, 1.0
|
|
230
|
-
sof t3_ratio, 0
|
|
231
|
-
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
232
|
-
wrax ADDR_PTR, 0
|
|
233
|
-
rmpa ${param.tap3_gain}
|
|
234
|
-
rdax ${reg.mix_acc}, 1.0
|
|
235
|
-
wrax ${reg.mix_acc}, 0.0
|
|
236
|
-
|
|
237
|
-
; Tap 4
|
|
238
|
-
rdax ${reg.pot_val}, 1.0
|
|
239
|
-
sof t4_ratio, 0
|
|
240
|
-
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
241
|
-
wrax ADDR_PTR, 0
|
|
242
|
-
rmpa ${param.tap4_gain}
|
|
243
|
-
rdax ${reg.mix_acc}, 1.0
|
|
244
|
-
wrax ${reg.mix_acc}, 0.0
|
|
245
|
-
|
|
246
|
-
; Tap 5
|
|
247
|
-
rdax ${reg.pot_val}, 1.0
|
|
248
|
-
sof t5_ratio, 0
|
|
249
|
-
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
250
|
-
wrax ADDR_PTR, 0
|
|
251
|
-
rmpa ${param.tap5_gain}
|
|
252
|
-
rdax ${reg.mix_acc}, 1.0
|
|
253
|
-
|
|
254
|
-
@else
|
|
255
|
-
; --- Static Time (Fixed RDA mode) ---
|
|
256
|
-
|
|
257
|
-
; Tap 6
|
|
258
|
-
rda ${mem.buffer} + (${max_delay} * ${param.time} * t6_ratio), 1.0
|
|
259
|
-
@if pinConnected(tap6)
|
|
260
|
-
wrax ${output.tap6}, 1.0
|
|
261
|
-
@endif
|
|
262
|
-
sof ${param.tap6_gain}, 0.0
|
|
263
|
-
|
|
264
|
-
; Tap 5
|
|
265
|
-
rda ${mem.buffer} + (${max_delay} * ${param.time} * t5_ratio), ${param.tap5_gain}
|
|
266
|
-
|
|
267
|
-
; Tap 4
|
|
268
|
-
rda ${mem.buffer} + (${max_delay} * ${param.time} * t4_ratio), ${param.tap4_gain}
|
|
269
|
-
|
|
270
|
-
; Tap 3
|
|
271
|
-
rda ${mem.buffer} + (${max_delay} * ${param.time} * t3_ratio), ${param.tap3_gain}
|
|
272
|
-
|
|
273
|
-
; Tap 2
|
|
274
|
-
rda ${mem.buffer} + (${max_delay} * ${param.time} * t2_ratio), ${param.tap2_gain}
|
|
275
|
-
|
|
276
|
-
; Tap 1
|
|
277
|
-
rda ${mem.buffer} + (${max_delay} * ${param.time} * t1_ratio), ${param.tap1_gain}
|
|
278
|
-
@endif
|
|
279
|
-
|
|
280
|
-
; 4. Export Final Mix
|
|
1
|
+
---
|
|
2
|
+
{
|
|
3
|
+
"type": "effects.delay.mn3011",
|
|
4
|
+
"name": "MN3011 Multitap BBD Delay",
|
|
5
|
+
"category": "Effects",
|
|
6
|
+
"subcategory": "Delay",
|
|
7
|
+
"description": "Simulation of the classic MN3011 mult-tap BBD delay chip",
|
|
8
|
+
"color": "#6060c4",
|
|
9
|
+
"width": 230,
|
|
10
|
+
"inputs": [
|
|
11
|
+
{
|
|
12
|
+
"id": "in",
|
|
13
|
+
"name": "Audio In",
|
|
14
|
+
"type": "audio",
|
|
15
|
+
"required": true
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "fb_in",
|
|
19
|
+
"name": "Feedback",
|
|
20
|
+
"type": "audio",
|
|
21
|
+
"required": false
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "time_cv",
|
|
25
|
+
"name": "Delay Time",
|
|
26
|
+
"type": "control",
|
|
27
|
+
"required": false,
|
|
28
|
+
"parameter": "time"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "fb_level_cv",
|
|
32
|
+
"name": "Feedback Level",
|
|
33
|
+
"type": "control",
|
|
34
|
+
"required": false,
|
|
35
|
+
"parameter": "fb_level"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"outputs": [
|
|
39
|
+
{
|
|
40
|
+
"id": "mix",
|
|
41
|
+
"name": "Mix Out",
|
|
42
|
+
"type": "audio"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "tap6",
|
|
46
|
+
"name": "Tap 6 Out",
|
|
47
|
+
"type": "audio"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"parameters": [
|
|
51
|
+
{
|
|
52
|
+
"id": "input_gain",
|
|
53
|
+
"name": "Input Gain",
|
|
54
|
+
"type": "number",
|
|
55
|
+
"min": -24,
|
|
56
|
+
"max": 0,
|
|
57
|
+
"default": -6,
|
|
58
|
+
"conversion": "DBLEVEL",
|
|
59
|
+
"description": "Gain of the dry signal entering the delay line."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "fb_level",
|
|
63
|
+
"name": "Feedback Level",
|
|
64
|
+
"type": "number",
|
|
65
|
+
"min": 0,
|
|
66
|
+
"max": 1,
|
|
67
|
+
"default": 0.5,
|
|
68
|
+
"step": 0.01,
|
|
69
|
+
"description": "Amount of feedback signal mixed in."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "fbk_gain",
|
|
73
|
+
"name": "Feedback Gain",
|
|
74
|
+
"type": "number",
|
|
75
|
+
"min": -24,
|
|
76
|
+
"max": 0,
|
|
77
|
+
"default": -6,
|
|
78
|
+
"conversion": "DBLEVEL",
|
|
79
|
+
"description": "Master gain coefficient for the feedback loop."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "time",
|
|
83
|
+
"name": "Delay Time (Scaling)",
|
|
84
|
+
"type": "number",
|
|
85
|
+
"min": 0,
|
|
86
|
+
"max": 1,
|
|
87
|
+
"default": 1.0,
|
|
88
|
+
"step": 0.01,
|
|
89
|
+
"description": "Global time scaling for all BBD taps (simulates clock rate)."
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "max_delay",
|
|
93
|
+
"name": "Max BBD Clock (ms)",
|
|
94
|
+
"type": "number",
|
|
95
|
+
"min": 1,
|
|
96
|
+
"max": 1000,
|
|
97
|
+
"default": 1000,
|
|
98
|
+
"conversion": "LENGTHTOTIME",
|
|
99
|
+
"description": "Maximum possible delay of the longest tap (3328 stages)."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "tap1_gain",
|
|
103
|
+
"name": "Tap 1 Gain",
|
|
104
|
+
"type": "number",
|
|
105
|
+
"min": -24,
|
|
106
|
+
"max": 0,
|
|
107
|
+
"default": -6,
|
|
108
|
+
"conversion": "DBLEVEL"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "tap2_gain",
|
|
112
|
+
"name": "Tap 2 Gain",
|
|
113
|
+
"type": "number",
|
|
114
|
+
"min": -24,
|
|
115
|
+
"max": 0,
|
|
116
|
+
"default": -6,
|
|
117
|
+
"conversion": "DBLEVEL"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "tap3_gain",
|
|
121
|
+
"name": "Tap 3 Gain",
|
|
122
|
+
"type": "number",
|
|
123
|
+
"min": -24,
|
|
124
|
+
"max": 0,
|
|
125
|
+
"default": -6,
|
|
126
|
+
"conversion": "DBLEVEL"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"id": "tap4_gain",
|
|
130
|
+
"name": "Tap 4 Gain",
|
|
131
|
+
"type": "number",
|
|
132
|
+
"min": -24,
|
|
133
|
+
"max": 0,
|
|
134
|
+
"default": -6,
|
|
135
|
+
"conversion": "DBLEVEL"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"id": "tap5_gain",
|
|
139
|
+
"name": "Tap 5 Gain",
|
|
140
|
+
"type": "number",
|
|
141
|
+
"min": -24,
|
|
142
|
+
"max": 0,
|
|
143
|
+
"default": -6,
|
|
144
|
+
"conversion": "DBLEVEL"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "tap6_gain",
|
|
148
|
+
"name": "Tap 6 Gain",
|
|
149
|
+
"type": "number",
|
|
150
|
+
"min": -24,
|
|
151
|
+
"max": 0,
|
|
152
|
+
"default": -6,
|
|
153
|
+
"conversion": "DBLEVEL"
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
"registers": [
|
|
157
|
+
"pot_val",
|
|
158
|
+
"mix_acc",
|
|
159
|
+
"tap_out"
|
|
160
|
+
],
|
|
161
|
+
"memories": [
|
|
162
|
+
{
|
|
163
|
+
"id": "buffer",
|
|
164
|
+
"size": "max_delay"
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
---
|
|
169
|
+
@section header
|
|
170
|
+
; MN3011 Target Ratios (stage / 3328)
|
|
171
|
+
equ t1_ratio 0.118990 ; 396/3328
|
|
172
|
+
equ t2_ratio 0.198918 ; 662/3328
|
|
173
|
+
equ t3_ratio 0.358774 ; 1194/3328
|
|
174
|
+
equ t4_ratio 0.518630 ; 1726/3328
|
|
175
|
+
equ t5_ratio 0.838341 ; 2790/3328
|
|
176
|
+
equ t6_ratio 1.0 ; 3328/3328
|
|
177
|
+
|
|
178
|
+
@section main
|
|
179
|
+
; 1. Feedback Processing
|
|
180
|
+
@if pinConnected(fb_in)
|
|
181
|
+
rdax ${input.fb_in}, 1.0
|
|
182
|
+
@mulcv fb_level_cv
|
|
183
|
+
sof ${param.fbk_gain}, 0.0
|
|
184
|
+
@else
|
|
185
|
+
clr
|
|
186
|
+
@endif
|
|
187
|
+
|
|
188
|
+
; 2. Input Summing & Write
|
|
189
|
+
rdax ${input.in}, ${param.input_gain}
|
|
190
|
+
wra ${mem.buffer}, 0.0
|
|
191
|
+
|
|
192
|
+
; 3. Multitap Summation
|
|
193
|
+
@if pinConnected(time_cv)
|
|
194
|
+
; --- Dynamic Time (ADDR_PTR mode) ---
|
|
195
|
+
@cv time_cv
|
|
196
|
+
wrax ${reg.pot_val}, 0.0
|
|
197
|
+
|
|
198
|
+
; Tap 6 (processed first for fb_out convenience)
|
|
199
|
+
rdax ${reg.pot_val}, 1.0
|
|
200
|
+
sof t6_ratio, 0
|
|
201
|
+
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
202
|
+
wrax ADDR_PTR, 0
|
|
203
|
+
rmpa 1.0
|
|
204
|
+
@if pinConnected(tap6)
|
|
205
|
+
wrax ${output.tap6}, 1.0
|
|
206
|
+
@endif
|
|
207
|
+
sof ${param.tap6_gain}, 0.0
|
|
208
|
+
wrax ${reg.mix_acc}, 0.0
|
|
209
|
+
|
|
210
|
+
; Tap 1
|
|
211
|
+
rdax ${reg.pot_val}, 1.0
|
|
212
|
+
sof t1_ratio, 0
|
|
213
|
+
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
214
|
+
wrax ADDR_PTR, 0
|
|
215
|
+
rmpa ${param.tap1_gain}
|
|
216
|
+
rdax ${reg.mix_acc}, 1.0
|
|
217
|
+
wrax ${reg.mix_acc}, 0.0
|
|
218
|
+
|
|
219
|
+
; Tap 2
|
|
220
|
+
rdax ${reg.pot_val}, 1.0
|
|
221
|
+
sof t2_ratio, 0
|
|
222
|
+
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
223
|
+
wrax ADDR_PTR, 0
|
|
224
|
+
rmpa ${param.tap2_gain}
|
|
225
|
+
rdax ${reg.mix_acc}, 1.0
|
|
226
|
+
wrax ${reg.mix_acc}, 0.0
|
|
227
|
+
|
|
228
|
+
; Tap 3
|
|
229
|
+
rdax ${reg.pot_val}, 1.0
|
|
230
|
+
sof t3_ratio, 0
|
|
231
|
+
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
232
|
+
wrax ADDR_PTR, 0
|
|
233
|
+
rmpa ${param.tap3_gain}
|
|
234
|
+
rdax ${reg.mix_acc}, 1.0
|
|
235
|
+
wrax ${reg.mix_acc}, 0.0
|
|
236
|
+
|
|
237
|
+
; Tap 4
|
|
238
|
+
rdax ${reg.pot_val}, 1.0
|
|
239
|
+
sof t4_ratio, 0
|
|
240
|
+
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
241
|
+
wrax ADDR_PTR, 0
|
|
242
|
+
rmpa ${param.tap4_gain}
|
|
243
|
+
rdax ${reg.mix_acc}, 1.0
|
|
244
|
+
wrax ${reg.mix_acc}, 0.0
|
|
245
|
+
|
|
246
|
+
; Tap 5
|
|
247
|
+
rdax ${reg.pot_val}, 1.0
|
|
248
|
+
sof t5_ratio, 0
|
|
249
|
+
sof (${max_delay} / 32768.0), ((${mem.buffer} + 1) / 32768.0)
|
|
250
|
+
wrax ADDR_PTR, 0
|
|
251
|
+
rmpa ${param.tap5_gain}
|
|
252
|
+
rdax ${reg.mix_acc}, 1.0
|
|
253
|
+
|
|
254
|
+
@else
|
|
255
|
+
; --- Static Time (Fixed RDA mode) ---
|
|
256
|
+
|
|
257
|
+
; Tap 6
|
|
258
|
+
rda ${mem.buffer} + (${max_delay} * ${param.time} * t6_ratio), 1.0
|
|
259
|
+
@if pinConnected(tap6)
|
|
260
|
+
wrax ${output.tap6}, 1.0
|
|
261
|
+
@endif
|
|
262
|
+
sof ${param.tap6_gain}, 0.0
|
|
263
|
+
|
|
264
|
+
; Tap 5
|
|
265
|
+
rda ${mem.buffer} + (${max_delay} * ${param.time} * t5_ratio), ${param.tap5_gain}
|
|
266
|
+
|
|
267
|
+
; Tap 4
|
|
268
|
+
rda ${mem.buffer} + (${max_delay} * ${param.time} * t4_ratio), ${param.tap4_gain}
|
|
269
|
+
|
|
270
|
+
; Tap 3
|
|
271
|
+
rda ${mem.buffer} + (${max_delay} * ${param.time} * t3_ratio), ${param.tap3_gain}
|
|
272
|
+
|
|
273
|
+
; Tap 2
|
|
274
|
+
rda ${mem.buffer} + (${max_delay} * ${param.time} * t2_ratio), ${param.tap2_gain}
|
|
275
|
+
|
|
276
|
+
; Tap 1
|
|
277
|
+
rda ${mem.buffer} + (${max_delay} * ${param.time} * t1_ratio), ${param.tap1_gain}
|
|
278
|
+
@endif
|
|
279
|
+
|
|
280
|
+
; 4. Export Final Mix
|
|
281
281
|
wrax ${output.mix}, 0.0
|