@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.
Files changed (65) 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/blockDiagram/compiler/BlockTemplate.d.ts.map +1 -1
  59. package/dist/blockDiagram/compiler/BlockTemplate.js +18 -0
  60. package/dist/blockDiagram/compiler/BlockTemplate.js.map +1 -1
  61. package/dist/spnbank/index.d.ts +49 -7
  62. package/dist/spnbank/index.d.ts.map +1 -1
  63. package/dist/spnbank/index.js +99 -15
  64. package/dist/spnbank/index.js.map +1 -1
  65. package/package.json +2 -2
@@ -1,96 +1,96 @@
1
- ---
2
- {
3
- "type": "effects.delay.simple",
4
- "name": "Simple Delay",
5
- "category": "Effects",
6
- "subcategory": "Delay",
7
- "description": "Simple delay line with variable time and mix control",
8
- "color": "#6060c4",
9
- "width": 180,
10
- "inputs": [
11
- {
12
- "id": "audio_input",
13
- "name": "Audio Input",
14
- "type": "audio",
15
- "required": true
16
- },
17
- {
18
- "id": "delay_time",
19
- "name": "Delay Time",
20
- "type": "control",
21
- "required": false,
22
- "parameter": "delayLength"
23
- },
24
- {
25
- "id": "mix_ctrl",
26
- "name": "Mix",
27
- "type": "control",
28
- "required": false,
29
- "parameter": "mix"
30
- }
31
- ],
32
- "outputs": [
33
- {
34
- "id": "audio_output",
35
- "name": "Audio Output",
36
- "type": "audio"
37
- }
38
- ],
39
- "parameters": [
40
- {
41
- "id": "delayLength",
42
- "name": "Delay Length (ms)",
43
- "type": "number",
44
- "default": 500,
45
- "min": 1,
46
- "max": 1000,
47
- "conversion": "MS_TO_SAMPLES",
48
- "description": "The delay time in milliseconds. Determines the maximum possible delay time when controlled via a control signal.",
49
- "step": 1
50
- },
51
- {
52
- "id": "mix",
53
- "name": "Mix",
54
- "type": "number",
55
- "default": 0.5,
56
- "min": 0,
57
- "max": 1,
58
- "step": 0.01,
59
- "description": "Dry/Wet mix balance. 0.0 is pure dry, 1.0 is pure wet."
60
- }
61
- ],
62
- "memories": [
63
- {
64
- "id": "delayl",
65
- "size": "delayLength"
66
- }
67
- ],
68
- "registers": [
69
- "dry",
70
- "wet"
71
- ]
72
- }
73
- ---
74
- ; Simple Delay with Mix
75
- ; Store dry signal and write to delay
76
- rdax ${input.audio_input}, 1.0
77
- wrax ${reg.dry}, 1.0
78
- wra ${mem.delayl}, 0.0
79
-
80
- ; Calculate Delay Pointer (ADDR_PTR is an absolute address in delay RAM)
81
- @cv delay_time
82
- ; Control sweeps from [base] to [base + size]
83
- sof ${delayLength}/${Fs}, (${mem.delayl} + 1)/${Fs}
84
- wrax ADDR_PTR, 0.0
85
-
86
- ; Read wet signal
87
- rmpa 1.0
88
-
89
- ; Mixing logic: dry + mix * (wet - dry)
90
- rdax ${reg.dry}, -0.999 ; ACC now equals (wet - dry)
91
- wrax ${reg.wet}, 0.0 ; Store wet-dry in reg.wet temporarily
92
-
93
- @cv mix_ctrl
94
- mulx ${reg.wet}
95
- rdax ${reg.dry}, 1.0
96
- wrax ${output.audio_output}, 0.0
1
+ ---
2
+ {
3
+ "type": "effects.delay.simple",
4
+ "name": "Simple Delay",
5
+ "category": "Effects",
6
+ "subcategory": "Delay",
7
+ "description": "Simple delay line with variable time and mix control",
8
+ "color": "#6060c4",
9
+ "width": 180,
10
+ "inputs": [
11
+ {
12
+ "id": "audio_input",
13
+ "name": "Audio Input",
14
+ "type": "audio",
15
+ "required": true
16
+ },
17
+ {
18
+ "id": "delay_time",
19
+ "name": "Delay Time",
20
+ "type": "control",
21
+ "required": false,
22
+ "parameter": "delayLength"
23
+ },
24
+ {
25
+ "id": "mix_ctrl",
26
+ "name": "Mix",
27
+ "type": "control",
28
+ "required": false,
29
+ "parameter": "mix"
30
+ }
31
+ ],
32
+ "outputs": [
33
+ {
34
+ "id": "audio_output",
35
+ "name": "Audio Output",
36
+ "type": "audio"
37
+ }
38
+ ],
39
+ "parameters": [
40
+ {
41
+ "id": "delayLength",
42
+ "name": "Delay Length (ms)",
43
+ "type": "number",
44
+ "default": 500,
45
+ "min": 1,
46
+ "max": 1000,
47
+ "conversion": "MS_TO_SAMPLES",
48
+ "description": "The delay time in milliseconds. Determines the maximum possible delay time when controlled via a control signal.",
49
+ "step": 1
50
+ },
51
+ {
52
+ "id": "mix",
53
+ "name": "Mix",
54
+ "type": "number",
55
+ "default": 0.5,
56
+ "min": 0,
57
+ "max": 1,
58
+ "step": 0.01,
59
+ "description": "Dry/Wet mix balance. 0.0 is pure dry, 1.0 is pure wet."
60
+ }
61
+ ],
62
+ "memories": [
63
+ {
64
+ "id": "delayl",
65
+ "size": "delayLength"
66
+ }
67
+ ],
68
+ "registers": [
69
+ "dry",
70
+ "wet"
71
+ ]
72
+ }
73
+ ---
74
+ ; Simple Delay with Mix
75
+ ; Store dry signal and write to delay
76
+ rdax ${input.audio_input}, 1.0
77
+ wrax ${reg.dry}, 1.0
78
+ wra ${mem.delayl}, 0.0
79
+
80
+ ; Calculate Delay Pointer (ADDR_PTR is an absolute address in delay RAM)
81
+ @cv delay_time
82
+ ; Control sweeps from [base] to [base + size]
83
+ sof ${delayLength}/${Fs}, (${mem.delayl} + 1)/${Fs}
84
+ wrax ADDR_PTR, 0.0
85
+
86
+ ; Read wet signal
87
+ rmpa 1.0
88
+
89
+ ; Mixing logic: dry + mix * (wet - dry)
90
+ rdax ${reg.dry}, -0.999 ; ACC now equals (wet - dry)
91
+ wrax ${reg.wet}, 0.0 ; Store wet-dry in reg.wet temporarily
92
+
93
+ @cv mix_ctrl
94
+ mulx ${reg.wet}
95
+ rdax ${reg.dry}, 1.0
96
+ wrax ${output.audio_output}, 0.0
@@ -1,176 +1,176 @@
1
- ---
2
- {
3
- "type": "fx.delay.tripletap",
4
- "name": "ThreeTap",
5
- "category": "Effects",
6
- "subcategory": "Delay",
7
- "description": "Triple tap delay with independent outputs and CV modulation",
8
- "color": "#6060c4",
9
- "width": 200,
10
- "inputs": [
11
- {
12
- "id": "in",
13
- "name": "Input",
14
- "type": "audio",
15
- "required": true
16
- },
17
- {
18
- "id": "feedback",
19
- "name": "Feedback",
20
- "type": "audio",
21
- "required": false
22
- },
23
- {
24
- "id": "delay_time_1",
25
- "name": "Delay Time 1",
26
- "type": "control",
27
- "required": false,
28
- "parameter": "tap1Time"
29
- },
30
- {
31
- "id": "delay_time_2",
32
- "name": "Delay Time 2",
33
- "type": "control",
34
- "required": false,
35
- "parameter": "tap2Time"
36
- },
37
- {
38
- "id": "delay_time_3",
39
- "name": "Delay Time 3",
40
- "type": "control",
41
- "required": false,
42
- "parameter": "tap3Time"
43
- },
44
- {
45
- "id": "fbk_ctrl",
46
- "name": "Feedback Gain",
47
- "type": "control",
48
- "required": false,
49
- "parameter": "fbkGain"
50
- }
51
- ],
52
- "outputs": [
53
- {
54
- "id": "tap1",
55
- "name": "Tap 1 Out",
56
- "type": "audio"
57
- },
58
- {
59
- "id": "tap2",
60
- "name": "Tap 2 Out",
61
- "type": "audio"
62
- },
63
- {
64
- "id": "tap3",
65
- "name": "Tap 3 Out",
66
- "type": "audio"
67
- }
68
- ],
69
- "parameters": [
70
- {
71
- "id": "inputGain",
72
- "name": "Input Gain (dB)",
73
- "type": "number",
74
- "default": 0,
75
- "min": -24,
76
- "max": 0,
77
- "conversion": "DBLEVEL",
78
- "step": 0.01
79
- },
80
- {
81
- "id": "fbkGain",
82
- "name": "Feedback Gain (dB)",
83
- "type": "number",
84
- "default": -6,
85
- "min": -24,
86
- "max": 0,
87
- "conversion": "DBLEVEL",
88
- "step": 0.01
89
- },
90
- {
91
- "id": "delayTime",
92
- "name": "Total Delay (ms)",
93
- "type": "number",
94
- "default": 1000,
95
- "min": 10,
96
- "max": 1000,
97
- "conversion": "MS_TO_SAMPLES",
98
- "description": "The total delay memory allocated in ms.",
99
- "step": 1
100
- },
101
- {
102
- "id": "tap1Time",
103
- "name": "Tap 1 Time",
104
- "type": "number",
105
- "default": 0.85,
106
- "min": 0.0,
107
- "max": 1.0,
108
- "step": 0.01
109
- },
110
- {
111
- "id": "tap2Time",
112
- "name": "Tap 2 Time",
113
- "type": "number",
114
- "default": 0.60,
115
- "min": 0.0,
116
- "max": 1.0,
117
- "step": 0.01
118
- },
119
- {
120
- "id": "tap3Time",
121
- "name": "Tap 3 Time",
122
- "type": "number",
123
- "default": 0.45,
124
- "min": 0.0,
125
- "max": 1.0,
126
- "step": 0.01
127
- }
128
- ],
129
- "memories": [
130
- {
131
- "id": "delayl",
132
- "size": "delayTime"
133
- }
134
- ],
135
- "registers": [
136
- "temp"
137
- ]
138
- }
139
- ---
140
- ; ThreeTap Delay
141
- @if pinConnected(feedback)
142
- rdax ${input.feedback}, 1.0 ; Read at unity — @cv fbk_ctrl applies the gain scaling below
143
- wrax ${reg.temp}, 0.0
144
- @cv fbk_ctrl ; ACC = fbkGain_linear * pot (or just fbkGain_linear if unconnected)
145
- mulx ${reg.temp} ; ACC = feedback * fbkGain [* pot]
146
- @endif
147
- rdax ${input.in}, ${inputGain}
148
- wra ${mem.delayl}, 0.0
149
-
150
- @if pinConnected(tap1)
151
- ; Tap 1
152
- @cv delay_time_1
153
- sof (${delayTime} / ${Fs}), ((${mem.delayl} + 1.0) / ${Fs})
154
- wrax ADDR_PTR, 0.0
155
- rmpa 1.0
156
- wrax ${output.tap1}, 0.0
157
- @endif
158
-
159
- @if pinConnected(tap2)
160
- ; Tap 2
161
- @cv delay_time_2
162
- sof (${delayTime} / ${Fs}), ((${mem.delayl} + 1.0) / ${Fs})
163
- wrax ADDR_PTR, 0.0
164
- rmpa 1.0
165
- wrax ${output.tap2}, 0.0
166
- @endif
167
-
168
- @if pinConnected(tap3)
169
- ; Tap 3
170
- @cv delay_time_3
171
- sof (${delayTime} / ${Fs}), ((${mem.delayl} + 1.0) / ${Fs})
172
- wrax ADDR_PTR, 0.0
173
- rmpa 1.0
174
- wrax ${output.tap3}, 0.0
175
- @endif
176
-
1
+ ---
2
+ {
3
+ "type": "fx.delay.tripletap",
4
+ "name": "ThreeTap",
5
+ "category": "Effects",
6
+ "subcategory": "Delay",
7
+ "description": "Triple tap delay with independent outputs and CV modulation",
8
+ "color": "#6060c4",
9
+ "width": 200,
10
+ "inputs": [
11
+ {
12
+ "id": "in",
13
+ "name": "Input",
14
+ "type": "audio",
15
+ "required": true
16
+ },
17
+ {
18
+ "id": "feedback",
19
+ "name": "Feedback",
20
+ "type": "audio",
21
+ "required": false
22
+ },
23
+ {
24
+ "id": "delay_time_1",
25
+ "name": "Delay Time 1",
26
+ "type": "control",
27
+ "required": false,
28
+ "parameter": "tap1Time"
29
+ },
30
+ {
31
+ "id": "delay_time_2",
32
+ "name": "Delay Time 2",
33
+ "type": "control",
34
+ "required": false,
35
+ "parameter": "tap2Time"
36
+ },
37
+ {
38
+ "id": "delay_time_3",
39
+ "name": "Delay Time 3",
40
+ "type": "control",
41
+ "required": false,
42
+ "parameter": "tap3Time"
43
+ },
44
+ {
45
+ "id": "fbk_ctrl",
46
+ "name": "Feedback Gain",
47
+ "type": "control",
48
+ "required": false,
49
+ "parameter": "fbkGain"
50
+ }
51
+ ],
52
+ "outputs": [
53
+ {
54
+ "id": "tap1",
55
+ "name": "Tap 1 Out",
56
+ "type": "audio"
57
+ },
58
+ {
59
+ "id": "tap2",
60
+ "name": "Tap 2 Out",
61
+ "type": "audio"
62
+ },
63
+ {
64
+ "id": "tap3",
65
+ "name": "Tap 3 Out",
66
+ "type": "audio"
67
+ }
68
+ ],
69
+ "parameters": [
70
+ {
71
+ "id": "inputGain",
72
+ "name": "Input Gain (dB)",
73
+ "type": "number",
74
+ "default": 0,
75
+ "min": -24,
76
+ "max": 0,
77
+ "conversion": "DBLEVEL",
78
+ "step": 0.01
79
+ },
80
+ {
81
+ "id": "fbkGain",
82
+ "name": "Feedback Gain (dB)",
83
+ "type": "number",
84
+ "default": -6,
85
+ "min": -24,
86
+ "max": 0,
87
+ "conversion": "DBLEVEL",
88
+ "step": 0.01
89
+ },
90
+ {
91
+ "id": "delayTime",
92
+ "name": "Total Delay (ms)",
93
+ "type": "number",
94
+ "default": 1000,
95
+ "min": 10,
96
+ "max": 1000,
97
+ "conversion": "MS_TO_SAMPLES",
98
+ "description": "The total delay memory allocated in ms.",
99
+ "step": 1
100
+ },
101
+ {
102
+ "id": "tap1Time",
103
+ "name": "Tap 1 Time",
104
+ "type": "number",
105
+ "default": 0.85,
106
+ "min": 0.0,
107
+ "max": 1.0,
108
+ "step": 0.01
109
+ },
110
+ {
111
+ "id": "tap2Time",
112
+ "name": "Tap 2 Time",
113
+ "type": "number",
114
+ "default": 0.60,
115
+ "min": 0.0,
116
+ "max": 1.0,
117
+ "step": 0.01
118
+ },
119
+ {
120
+ "id": "tap3Time",
121
+ "name": "Tap 3 Time",
122
+ "type": "number",
123
+ "default": 0.45,
124
+ "min": 0.0,
125
+ "max": 1.0,
126
+ "step": 0.01
127
+ }
128
+ ],
129
+ "memories": [
130
+ {
131
+ "id": "delayl",
132
+ "size": "delayTime"
133
+ }
134
+ ],
135
+ "registers": [
136
+ "temp"
137
+ ]
138
+ }
139
+ ---
140
+ ; ThreeTap Delay
141
+ @if pinConnected(feedback)
142
+ rdax ${input.feedback}, 1.0 ; Read at unity — @cv fbk_ctrl applies the gain scaling below
143
+ wrax ${reg.temp}, 0.0
144
+ @cv fbk_ctrl ; ACC = fbkGain_linear * pot (or just fbkGain_linear if unconnected)
145
+ mulx ${reg.temp} ; ACC = feedback * fbkGain [* pot]
146
+ @endif
147
+ rdax ${input.in}, ${inputGain}
148
+ wra ${mem.delayl}, 0.0
149
+
150
+ @if pinConnected(tap1)
151
+ ; Tap 1
152
+ @cv delay_time_1
153
+ sof (${delayTime} / ${Fs}), ((${mem.delayl} + 1.0) / ${Fs})
154
+ wrax ADDR_PTR, 0.0
155
+ rmpa 1.0
156
+ wrax ${output.tap1}, 0.0
157
+ @endif
158
+
159
+ @if pinConnected(tap2)
160
+ ; Tap 2
161
+ @cv delay_time_2
162
+ sof (${delayTime} / ${Fs}), ((${mem.delayl} + 1.0) / ${Fs})
163
+ wrax ADDR_PTR, 0.0
164
+ rmpa 1.0
165
+ wrax ${output.tap2}, 0.0
166
+ @endif
167
+
168
+ @if pinConnected(tap3)
169
+ ; Tap 3
170
+ @cv delay_time_3
171
+ sof (${delayTime} / ${Fs}), ((${mem.delayl} + 1.0) / ${Fs})
172
+ wrax ADDR_PTR, 0.0
173
+ rmpa 1.0
174
+ wrax ${output.tap3}, 0.0
175
+ @endif
176
+