@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,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