@audiofab-io/fv1-core 0.6.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 (61) 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/package.json +2 -2
@@ -1,188 +1,188 @@
1
- ---
2
- {
3
- "type": "effects.modulation.chorus4voice",
4
- "category": "Effects",
5
- "subcategory": "Modulation",
6
- "name": "4-Voice Chorus",
7
- "description": "Four-voice chorus with independent outputs",
8
- "color": "#24F2F2",
9
- "labelTemplate": "LFO ${param.lfoSel}",
10
- "inputs": [
11
- { "id": "input", "name": "Input", "type": "audio", "required": true },
12
- { "id": "rateIn", "name": "LFO Rate", "type": "control", "required": false },
13
- { "id": "widthIn", "name": "LFO Width", "type": "control", "required": false }
14
- ],
15
- "outputs": [
16
- { "id": "voice1", "name": "Voice 1", "type": "audio" },
17
- { "id": "voice2", "name": "Voice 2", "type": "audio" },
18
- { "id": "voice3", "name": "Voice 3", "type": "audio" },
19
- { "id": "voice4", "name": "Voice 4", "type": "audio" }
20
- ],
21
- "parameters": [
22
- {
23
- "id": "gain1",
24
- "name": "Input Gain",
25
- "type": "number",
26
- "min": -24,
27
- "max": 0,
28
- "default": -6,
29
- "conversion": "DBLEVEL"
30
- },
31
- {
32
- "id": "delayLength",
33
- "name": "Chorus Time",
34
- "type": "number",
35
- "default": 15,
36
- "min": 0,
37
- "max": 50,
38
- "conversion": "MS_TO_SAMPLES",
39
- "description": "Delay time in ms.",
40
- "step": 1
41
- },
42
- {
43
- "id": "tap1Center",
44
- "name": "Tap 1 Center",
45
- "type": "number",
46
- "default": 0.25,
47
- "min": 0.0,
48
- "max": 1.0,
49
- "step": 0.001
50
- },
51
- {
52
- "id": "tap2Center",
53
- "name": "Tap 2 Center",
54
- "type": "number",
55
- "default": 0.33,
56
- "min": 0.0,
57
- "max": 1.0,
58
- "step": 0.001
59
- },
60
- {
61
- "id": "tap3Center",
62
- "name": "Tap 3 Center",
63
- "type": "number",
64
- "default": 0.63,
65
- "min": 0.0,
66
- "max": 1.0,
67
- "step": 0.001
68
- },
69
- {
70
- "id": "tap4Center",
71
- "name": "Tap 4 Center",
72
- "type": "number",
73
- "default": 0.75,
74
- "min": 0.0,
75
- "max": 1.0,
76
- "step": 0.001
77
- },
78
- {
79
- "id": "rate",
80
- "name": "LFO Rate (Hz)",
81
- "type": "number",
82
- "default": 1.0,
83
- "min": 0.05,
84
- "max": 10,
85
- "conversion": "HZ_TO_LFO_RATE",
86
- "description": "Frequency of the chorus modulation in Hz.",
87
- "step": 0.01
88
- },
89
- {
90
- "id": "width",
91
- "name": "LFO Width (ms)",
92
- "type": "number",
93
- "default": 1,
94
- "min": 0,
95
- "max": 20,
96
- "conversion": "MS_TO_LFO_RANGE",
97
- "description": "The width of modulation in ms.",
98
- "step": 0.1
99
- },
100
- {
101
- "id": "lfoSel",
102
- "name": "LFO Select",
103
- "type": "select",
104
- "default": 0,
105
- "options": [
106
- { "label": "LFO 0", "value": 0 },
107
- { "label": "LFO 1", "value": 1 }
108
- ]
109
- }
110
- ],
111
- "memories": [
112
- { "id": "delayLine", "size": "${delayLength}" }
113
- ]
114
- }
115
- ---
116
- @section header
117
- ; Calculations for Centers:
118
- EQU tap1 (0.9 * ${tap1Center} * ${delayLength} + 0.05 * ${delayLength})
119
- EQU tap2 (0.9 * ${tap2Center} * ${delayLength} + 0.05 * ${delayLength})
120
- EQU tap3 (0.9 * ${tap3Center} * ${delayLength} + 0.05 * ${delayLength})
121
- EQU tap4 (0.9 * ${tap4Center} * ${delayLength} + 0.05 * ${delayLength})
122
-
123
- @if isequalto lfoSel 0
124
- @equals lfoNum SIN0
125
- @equals lfoRateReg SIN0_RATE
126
- @equals lfoRange SIN0_RANGE
127
- @else
128
- @equals lfoNum SIN1
129
- @equals lfoRateReg SIN1_RATE
130
- @equals lfoRange SIN1_RANGE
131
- @endif
132
-
133
- @section init
134
- ; Initialize LFO
135
- skp run, done_4voice_lfo
136
- wlds ${lfoNum}, ${rate}, ${width}
137
- done_4voice_lfo:
138
-
139
- @section main
140
- @if pinConnected(input)
141
-
142
- ; Validate LFO Rate
143
- @if pinConnected(rateIn)
144
- rdax ${input.rateIn}, (${rate} / 511.0)
145
- wrax ${lfoRateReg}, 0.0
146
- @endif
147
-
148
- ; Validate LFO Width
149
- @if pinConnected(widthIn)
150
- rdax ${input.widthIn}, (${width} / 16384.0)
151
- wrax ${lfoRange}, 0.0
152
- @endif
153
-
154
- ; Write input to delay line
155
- rdax ${input.input}, ${gain1}
156
- wra ${mem.delayLine}, 0.0
157
-
158
- ; Voice 1: SIN, REG|COMPC
159
- @if pinConnected(voice1)
160
- cho rda, ${lfoNum}, SIN|REG|COMPC, ${mem.delayLine} + tap1
161
- cho rda, ${lfoNum}, SIN, ${mem.delayLine} + tap1 + 1
162
- wrax ${output.voice1}, 0.0
163
- @endif
164
-
165
- ; Voice 2: SIN, REG|COMPA
166
- @if pinConnected(voice2)
167
- cho rda, ${lfoNum}, SIN|REG|COMPA, ${mem.delayLine} + tap2
168
- cho rda, ${lfoNum}, SIN|COMPC|COMPA, ${mem.delayLine} + tap2 + 1
169
- wrax ${output.voice2}, 0.0
170
- @endif
171
-
172
- ; Voice 3: COS, REG|COMPC
173
- @if pinConnected(voice3)
174
- cho rda, ${lfoNum}, COS|REG|COMPC, ${mem.delayLine} + tap3
175
- cho rda, ${lfoNum}, COS, ${mem.delayLine} + tap3 + 1
176
- wrax ${output.voice3}, 0.0
177
- @endif
178
-
179
- ; Voice 4: COS, REG|COMPA
180
- @if pinConnected(voice4)
181
- cho rda, ${lfoNum}, COS|REG|COMPA, ${mem.delayLine} + tap4
182
- cho rda, ${lfoNum}, COS|COMPC|COMPA, ${mem.delayLine} + tap4 + 1
183
- wrax ${output.voice4}, 0.0
184
- @endif
185
-
186
- @else
187
- ; 4-Voice Chorus (no input connected)
188
- @endif
1
+ ---
2
+ {
3
+ "type": "effects.modulation.chorus4voice",
4
+ "category": "Effects",
5
+ "subcategory": "Modulation",
6
+ "name": "4-Voice Chorus",
7
+ "description": "Four-voice chorus with independent outputs",
8
+ "color": "#24F2F2",
9
+ "labelTemplate": "LFO ${param.lfoSel}",
10
+ "inputs": [
11
+ { "id": "input", "name": "Input", "type": "audio", "required": true },
12
+ { "id": "rateIn", "name": "LFO Rate", "type": "control", "required": false },
13
+ { "id": "widthIn", "name": "LFO Width", "type": "control", "required": false }
14
+ ],
15
+ "outputs": [
16
+ { "id": "voice1", "name": "Voice 1", "type": "audio" },
17
+ { "id": "voice2", "name": "Voice 2", "type": "audio" },
18
+ { "id": "voice3", "name": "Voice 3", "type": "audio" },
19
+ { "id": "voice4", "name": "Voice 4", "type": "audio" }
20
+ ],
21
+ "parameters": [
22
+ {
23
+ "id": "gain1",
24
+ "name": "Input Gain",
25
+ "type": "number",
26
+ "min": -24,
27
+ "max": 0,
28
+ "default": -6,
29
+ "conversion": "DBLEVEL"
30
+ },
31
+ {
32
+ "id": "delayLength",
33
+ "name": "Chorus Time",
34
+ "type": "number",
35
+ "default": 15,
36
+ "min": 0,
37
+ "max": 50,
38
+ "conversion": "MS_TO_SAMPLES",
39
+ "description": "Delay time in ms.",
40
+ "step": 1
41
+ },
42
+ {
43
+ "id": "tap1Center",
44
+ "name": "Tap 1 Center",
45
+ "type": "number",
46
+ "default": 0.25,
47
+ "min": 0.0,
48
+ "max": 1.0,
49
+ "step": 0.001
50
+ },
51
+ {
52
+ "id": "tap2Center",
53
+ "name": "Tap 2 Center",
54
+ "type": "number",
55
+ "default": 0.33,
56
+ "min": 0.0,
57
+ "max": 1.0,
58
+ "step": 0.001
59
+ },
60
+ {
61
+ "id": "tap3Center",
62
+ "name": "Tap 3 Center",
63
+ "type": "number",
64
+ "default": 0.63,
65
+ "min": 0.0,
66
+ "max": 1.0,
67
+ "step": 0.001
68
+ },
69
+ {
70
+ "id": "tap4Center",
71
+ "name": "Tap 4 Center",
72
+ "type": "number",
73
+ "default": 0.75,
74
+ "min": 0.0,
75
+ "max": 1.0,
76
+ "step": 0.001
77
+ },
78
+ {
79
+ "id": "rate",
80
+ "name": "LFO Rate (Hz)",
81
+ "type": "number",
82
+ "default": 1.0,
83
+ "min": 0.05,
84
+ "max": 10,
85
+ "conversion": "HZ_TO_LFO_RATE",
86
+ "description": "Frequency of the chorus modulation in Hz.",
87
+ "step": 0.01
88
+ },
89
+ {
90
+ "id": "width",
91
+ "name": "LFO Width (ms)",
92
+ "type": "number",
93
+ "default": 1,
94
+ "min": 0,
95
+ "max": 20,
96
+ "conversion": "MS_TO_LFO_RANGE",
97
+ "description": "The width of modulation in ms.",
98
+ "step": 0.1
99
+ },
100
+ {
101
+ "id": "lfoSel",
102
+ "name": "LFO Select",
103
+ "type": "select",
104
+ "default": 0,
105
+ "options": [
106
+ { "label": "LFO 0", "value": 0 },
107
+ { "label": "LFO 1", "value": 1 }
108
+ ]
109
+ }
110
+ ],
111
+ "memories": [
112
+ { "id": "delayLine", "size": "${delayLength}" }
113
+ ]
114
+ }
115
+ ---
116
+ @section header
117
+ ; Calculations for Centers:
118
+ EQU tap1 (0.9 * ${tap1Center} * ${delayLength} + 0.05 * ${delayLength})
119
+ EQU tap2 (0.9 * ${tap2Center} * ${delayLength} + 0.05 * ${delayLength})
120
+ EQU tap3 (0.9 * ${tap3Center} * ${delayLength} + 0.05 * ${delayLength})
121
+ EQU tap4 (0.9 * ${tap4Center} * ${delayLength} + 0.05 * ${delayLength})
122
+
123
+ @if isequalto lfoSel 0
124
+ @equals lfoNum SIN0
125
+ @equals lfoRateReg SIN0_RATE
126
+ @equals lfoRange SIN0_RANGE
127
+ @else
128
+ @equals lfoNum SIN1
129
+ @equals lfoRateReg SIN1_RATE
130
+ @equals lfoRange SIN1_RANGE
131
+ @endif
132
+
133
+ @section init
134
+ ; Initialize LFO
135
+ skp run, done_4voice_lfo
136
+ wlds ${lfoNum}, ${rate}, ${width}
137
+ done_4voice_lfo:
138
+
139
+ @section main
140
+ @if pinConnected(input)
141
+
142
+ ; Validate LFO Rate
143
+ @if pinConnected(rateIn)
144
+ rdax ${input.rateIn}, (${rate} / 511.0)
145
+ wrax ${lfoRateReg}, 0.0
146
+ @endif
147
+
148
+ ; Validate LFO Width
149
+ @if pinConnected(widthIn)
150
+ rdax ${input.widthIn}, (${width} / 16384.0)
151
+ wrax ${lfoRange}, 0.0
152
+ @endif
153
+
154
+ ; Write input to delay line
155
+ rdax ${input.input}, ${gain1}
156
+ wra ${mem.delayLine}, 0.0
157
+
158
+ ; Voice 1: SIN, REG|COMPC
159
+ @if pinConnected(voice1)
160
+ cho rda, ${lfoNum}, SIN|REG|COMPC, ${mem.delayLine} + tap1
161
+ cho rda, ${lfoNum}, SIN, ${mem.delayLine} + tap1 + 1
162
+ wrax ${output.voice1}, 0.0
163
+ @endif
164
+
165
+ ; Voice 2: SIN, REG|COMPA
166
+ @if pinConnected(voice2)
167
+ cho rda, ${lfoNum}, SIN|REG|COMPA, ${mem.delayLine} + tap2
168
+ cho rda, ${lfoNum}, SIN|COMPC|COMPA, ${mem.delayLine} + tap2 + 1
169
+ wrax ${output.voice2}, 0.0
170
+ @endif
171
+
172
+ ; Voice 3: COS, REG|COMPC
173
+ @if pinConnected(voice3)
174
+ cho rda, ${lfoNum}, COS|REG|COMPC, ${mem.delayLine} + tap3
175
+ cho rda, ${lfoNum}, COS, ${mem.delayLine} + tap3 + 1
176
+ wrax ${output.voice3}, 0.0
177
+ @endif
178
+
179
+ ; Voice 4: COS, REG|COMPA
180
+ @if pinConnected(voice4)
181
+ cho rda, ${lfoNum}, COS|REG|COMPA, ${mem.delayLine} + tap4
182
+ cho rda, ${lfoNum}, COS|COMPC|COMPA, ${mem.delayLine} + tap4 + 1
183
+ wrax ${output.voice4}, 0.0
184
+ @endif
185
+
186
+ @else
187
+ ; 4-Voice Chorus (no input connected)
188
+ @endif