@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,77 +1,77 @@
1
- ---
2
- {
3
- "type": "control.power",
4
- "category": "Control",
5
- "name": "Power",
6
- "description": "Applies a non-linear curve optionally inverted/flipped",
7
- "inputs": [
8
- {
9
- "id": "in",
10
- "name": "Input",
11
- "type": "control"
12
- }
13
- ],
14
- "outputs": [
15
- {
16
- "id": "out",
17
- "name": "Output",
18
- "type": "control"
19
- }
20
- ],
21
- "parameters": [
22
- {
23
- "id": "power",
24
- "name": "Power",
25
- "type": "number",
26
- "default": 3,
27
- "min": 1,
28
- "max": 5,
29
- "step": 1
30
- },
31
- {
32
- "id": "invert",
33
- "name": "Invert",
34
- "type": "boolean",
35
- "default": false
36
- },
37
- {
38
- "id": "flip",
39
- "name": "Flip",
40
- "type": "boolean",
41
- "default": false
42
- }
43
- ],
44
- "registers": [
45
- "value"
46
- ]
47
- }
48
- ---
49
- @section header
50
- @comment "Generated from spincad source file PowerControlCADBlock.java"
51
-
52
- @section main
53
- ; Applies a non-linear curve (square) optionally inverted/flipped
54
- rdax ${input.in}, 1.0
55
- @if ${invert} == true
56
- ; ---Invert
57
- sof -0.9990234375, 0.9990234375
58
- @endif
59
- wrax ${reg.value}, 1.0
60
-
61
- @if ${power} >= 2
62
- mulx ${reg.value}
63
- @endif
64
- @if ${power} >= 3
65
- mulx ${reg.value}
66
- @endif
67
- @if ${power} >= 4
68
- mulx ${reg.value}
69
- @endif
70
- @if ${power} >= 5
71
- mulx ${reg.value}
72
- @endif
73
- @if ${flip} == true
74
- ; ---Flip
75
- sof -0.9990234375, 0.9990234375
76
- @endif
1
+ ---
2
+ {
3
+ "type": "control.power",
4
+ "category": "Control",
5
+ "name": "Power",
6
+ "description": "Applies a non-linear curve optionally inverted/flipped",
7
+ "inputs": [
8
+ {
9
+ "id": "in",
10
+ "name": "Input",
11
+ "type": "control"
12
+ }
13
+ ],
14
+ "outputs": [
15
+ {
16
+ "id": "out",
17
+ "name": "Output",
18
+ "type": "control"
19
+ }
20
+ ],
21
+ "parameters": [
22
+ {
23
+ "id": "power",
24
+ "name": "Power",
25
+ "type": "number",
26
+ "default": 3,
27
+ "min": 1,
28
+ "max": 5,
29
+ "step": 1
30
+ },
31
+ {
32
+ "id": "invert",
33
+ "name": "Invert",
34
+ "type": "boolean",
35
+ "default": false
36
+ },
37
+ {
38
+ "id": "flip",
39
+ "name": "Flip",
40
+ "type": "boolean",
41
+ "default": false
42
+ }
43
+ ],
44
+ "registers": [
45
+ "value"
46
+ ]
47
+ }
48
+ ---
49
+ @section header
50
+ @comment "Generated from spincad source file PowerControlCADBlock.java"
51
+
52
+ @section main
53
+ ; Applies a non-linear curve (square) optionally inverted/flipped
54
+ rdax ${input.in}, 1.0
55
+ @if ${invert} == true
56
+ ; ---Invert
57
+ sof -0.9990234375, 0.9990234375
58
+ @endif
59
+ wrax ${reg.value}, 1.0
60
+
61
+ @if ${power} >= 2
62
+ mulx ${reg.value}
63
+ @endif
64
+ @if ${power} >= 3
65
+ mulx ${reg.value}
66
+ @endif
67
+ @if ${power} >= 4
68
+ mulx ${reg.value}
69
+ @endif
70
+ @if ${power} >= 5
71
+ mulx ${reg.value}
72
+ @endif
73
+ @if ${flip} == true
74
+ ; ---Flip
75
+ sof -0.9990234375, 0.9990234375
76
+ @endif
77
77
  wrax ${output.out}, 0
@@ -1,122 +1,122 @@
1
- ---
2
- {
3
- "type": "control.ramp_lfo",
4
- "name": "Ramp LFO",
5
- "category": "Control",
6
- "description": "Ramp LFO generator with adjustable rate, amplitude, slope, and dual outputs (Ramp / Triangle).",
7
- "color": "#f2b824",
8
- "labelTemplate": "${param.lfoSel == 0 ? 'RMP0' : 'RMP1'}",
9
- "inputs": [
10
- {
11
- "id": "speed",
12
- "name": "Speed",
13
- "type": "control"
14
- },
15
- {
16
- "id": "width",
17
- "name": "Level (Width)",
18
- "type": "control"
19
- }
20
- ],
21
- "outputs": [
22
- {
23
- "id": "ramp",
24
- "name": "Ramp Out",
25
- "type": "control"
26
- },
27
- {
28
- "id": "triangle",
29
- "name": "Triangle Out",
30
- "type": "control"
31
- }
32
- ],
33
- "parameters": [
34
- {
35
- "id": "lfoSel",
36
- "name": "LFO Selection",
37
- "type": "select",
38
- "default": 0,
39
- "options": [
40
- { "value": 0, "label": "RMP0" },
41
- { "value": 1, "label": "RMP1" }
42
- ],
43
- "description": "Which LFO oscillator to use (0 or 1)."
44
- },
45
- {
46
- "id": "speed",
47
- "name": "Speed",
48
- "type": "number",
49
- "default": 6.25,
50
- "min": -32,
51
- "max": 64,
52
- "step": 0.01,
53
- "description": "Base LFO rate (used if Speed control is not connected)."
54
- },
55
- {
56
- "id": "amplitude",
57
- "name": "Base Amplitude",
58
- "type": "select",
59
- "default": 4096,
60
- "options": [
61
- { "value": 4096, "label": "Full (4096)" },
62
- { "value": 2048, "label": "Half (2048)" },
63
- { "value": 1024, "label": "Quarter (1024)" },
64
- { "value": 512, "label": "Eighth (512)" }
65
- ],
66
- "description": "Internal amplitude limit of the WLDR instruction."
67
- }
68
- ]
69
- }
70
- ---
71
- @if ${param.lfoSel} == 0
72
- @equals lfoNum RMP0
73
- @equals lfoRateReg RMP0_RATE
74
- @else
75
- @equals lfoNum RMP1
76
- @equals lfoRateReg RMP1_RATE
77
- @endif
78
-
79
- ; Ramp LFO generator
80
- @section init
81
- ; WLDR accepts discrete amplitudes: 512, 1024, 2048, 4096.
82
- ; Negative frequencies slope Upwards natively. Positive frequencies slope Downwards.
83
- wldr ${lfoNum}, ${param.speed} * 512, ${param.amplitude}
84
-
85
- @section main
86
-
87
- ; Speed modulation (-1.0 to 1.0 covers -32768 to 32767 natively)
88
- @if pinConnected(speed)
89
- rdax ${input.speed}, 1.0
90
- wrax ${lfoRateReg}, 0.0
91
- @endif
92
-
93
- ; Ramp output
94
- @if pinConnected(ramp)
95
- cho rdal, ${lfoNum}
96
-
97
- ; Apply width CV scale if connected
98
- @if pinConnected(width)
99
- mulx ${input.width}
100
- @endif
101
-
102
- wrax ${output.ramp}, 0.0
103
- @endif
104
-
105
- ; Triangle output
106
- @if pinConnected(triangle)
107
- cho rdal, ${lfoNum}
108
-
109
- ; SpinCAD derivation: scale by 1.999 to stretch 0..1 to 0..2
110
- ; Shift down by exactly half the internal WLDR amplitude ratio
111
- ; Then apply ABSA to fold it back into a Triangle!
112
- @equals amp_ratio ${param.amplitude} / 4096.0
113
- sof 1.999, -0.5 * ${amp_ratio}
114
- absa
115
-
116
- ; Apply width CV scale if connected
117
- @if pinConnected(width)
118
- mulx ${input.width}
119
- @endif
120
-
121
- wrax ${output.triangle}, 0.0
122
- @endif
1
+ ---
2
+ {
3
+ "type": "control.ramp_lfo",
4
+ "name": "Ramp LFO",
5
+ "category": "Control",
6
+ "description": "Ramp LFO generator with adjustable rate, amplitude, slope, and dual outputs (Ramp / Triangle).",
7
+ "color": "#f2b824",
8
+ "labelTemplate": "${param.lfoSel == 0 ? 'RMP0' : 'RMP1'}",
9
+ "inputs": [
10
+ {
11
+ "id": "speed",
12
+ "name": "Speed",
13
+ "type": "control"
14
+ },
15
+ {
16
+ "id": "width",
17
+ "name": "Level (Width)",
18
+ "type": "control"
19
+ }
20
+ ],
21
+ "outputs": [
22
+ {
23
+ "id": "ramp",
24
+ "name": "Ramp Out",
25
+ "type": "control"
26
+ },
27
+ {
28
+ "id": "triangle",
29
+ "name": "Triangle Out",
30
+ "type": "control"
31
+ }
32
+ ],
33
+ "parameters": [
34
+ {
35
+ "id": "lfoSel",
36
+ "name": "LFO Selection",
37
+ "type": "select",
38
+ "default": 0,
39
+ "options": [
40
+ { "value": 0, "label": "RMP0" },
41
+ { "value": 1, "label": "RMP1" }
42
+ ],
43
+ "description": "Which LFO oscillator to use (0 or 1)."
44
+ },
45
+ {
46
+ "id": "speed",
47
+ "name": "Speed",
48
+ "type": "number",
49
+ "default": 6.25,
50
+ "min": -32,
51
+ "max": 64,
52
+ "step": 0.01,
53
+ "description": "Base LFO rate (used if Speed control is not connected)."
54
+ },
55
+ {
56
+ "id": "amplitude",
57
+ "name": "Base Amplitude",
58
+ "type": "select",
59
+ "default": 4096,
60
+ "options": [
61
+ { "value": 4096, "label": "Full (4096)" },
62
+ { "value": 2048, "label": "Half (2048)" },
63
+ { "value": 1024, "label": "Quarter (1024)" },
64
+ { "value": 512, "label": "Eighth (512)" }
65
+ ],
66
+ "description": "Internal amplitude limit of the WLDR instruction."
67
+ }
68
+ ]
69
+ }
70
+ ---
71
+ @if ${param.lfoSel} == 0
72
+ @equals lfoNum RMP0
73
+ @equals lfoRateReg RMP0_RATE
74
+ @else
75
+ @equals lfoNum RMP1
76
+ @equals lfoRateReg RMP1_RATE
77
+ @endif
78
+
79
+ ; Ramp LFO generator
80
+ @section init
81
+ ; WLDR accepts discrete amplitudes: 512, 1024, 2048, 4096.
82
+ ; Negative frequencies slope Upwards natively. Positive frequencies slope Downwards.
83
+ wldr ${lfoNum}, ${param.speed} * 512, ${param.amplitude}
84
+
85
+ @section main
86
+
87
+ ; Speed modulation (-1.0 to 1.0 covers -32768 to 32767 natively)
88
+ @if pinConnected(speed)
89
+ rdax ${input.speed}, 1.0
90
+ wrax ${lfoRateReg}, 0.0
91
+ @endif
92
+
93
+ ; Ramp output
94
+ @if pinConnected(ramp)
95
+ cho rdal, ${lfoNum}
96
+
97
+ ; Apply width CV scale if connected
98
+ @if pinConnected(width)
99
+ mulx ${input.width}
100
+ @endif
101
+
102
+ wrax ${output.ramp}, 0.0
103
+ @endif
104
+
105
+ ; Triangle output
106
+ @if pinConnected(triangle)
107
+ cho rdal, ${lfoNum}
108
+
109
+ ; SpinCAD derivation: scale by 1.999 to stretch 0..1 to 0..2
110
+ ; Shift down by exactly half the internal WLDR amplitude ratio
111
+ ; Then apply ABSA to fold it back into a Triangle!
112
+ @equals amp_ratio ${param.amplitude} / 4096.0
113
+ sof 1.999, -0.5 * ${amp_ratio}
114
+ absa
115
+
116
+ ; Apply width CV scale if connected
117
+ @if pinConnected(width)
118
+ mulx ${input.width}
119
+ @endif
120
+
121
+ wrax ${output.triangle}, 0.0
122
+ @endif
@@ -1,84 +1,84 @@
1
- ---
2
- {
3
- "type": "control.scale_offset",
4
- "name": "Scale/Offset",
5
- "category": "Control",
6
- "description": "Scale and offset a control signal to remap input range to output range.",
7
- "color": "#f2b824",
8
- "width": 180,
9
- "inputs": [
10
- {
11
- "id": "ctrl_in",
12
- "name": "Control",
13
- "type": "control",
14
- "required": true
15
- }
16
- ],
17
- "outputs": [
18
- {
19
- "id": "ctrl_out",
20
- "name": "Control",
21
- "type": "control"
22
- }
23
- ],
24
- "parameters": [
25
- {
26
- "id": "inLow",
27
- "name": "Input Low",
28
- "type": "number",
29
- "default": 0,
30
- "min": 0,
31
- "max": 1,
32
- "step": 0.01,
33
- "description": "Minimum value of input range (0.0-1.0)."
34
- },
35
- {
36
- "id": "inHigh",
37
- "name": "Input High",
38
- "type": "number",
39
- "default": 1,
40
- "min": 0,
41
- "max": 1,
42
- "step": 0.01,
43
- "description": "Maximum value of input range (0.0-1.0)."
44
- },
45
- {
46
- "id": "outLow",
47
- "name": "Output Low",
48
- "type": "number",
49
- "default": 0,
50
- "min": -2,
51
- "max": 1,
52
- "step": 0.01,
53
- "description": "Minimum value of output range (-2.0 to 1.0)."
54
- },
55
- {
56
- "id": "outHigh",
57
- "name": "Output High",
58
- "type": "number",
59
- "default": 0.75,
60
- "min": -2,
61
- "max": 1,
62
- "step": 0.01,
63
- "description": "Maximum value of output range (-2.0 to 1.0)."
64
- }
65
- ]
66
- }
67
- ---
68
- ; Scale/Offset
69
- @section main
70
-
71
- @if pinConnected(ctrl_in)
72
- @minusDouble outRange outHigh outLow
73
- @minusDouble inRange inHigh inLow
74
- @divideDouble scale outRange inRange
75
- @multiplyDouble inLowScale inLow scale
76
- @minusDouble offset outLow inLowScale
77
-
78
- @assert inRange > 0, "Scale/Offset: Input range is invalid."
79
- @assert outRange > 0, "Scale/Offset: Output range is invalid."
80
-
81
- rdax ${input.ctrl_in}, 1.0
82
- sof ${scale}, ${offset}
83
- wrax ${output.ctrl_out}, 0.0
84
- @endif
1
+ ---
2
+ {
3
+ "type": "control.scale_offset",
4
+ "name": "Scale/Offset",
5
+ "category": "Control",
6
+ "description": "Scale and offset a control signal to remap input range to output range.",
7
+ "color": "#f2b824",
8
+ "width": 180,
9
+ "inputs": [
10
+ {
11
+ "id": "ctrl_in",
12
+ "name": "Control",
13
+ "type": "control",
14
+ "required": true
15
+ }
16
+ ],
17
+ "outputs": [
18
+ {
19
+ "id": "ctrl_out",
20
+ "name": "Control",
21
+ "type": "control"
22
+ }
23
+ ],
24
+ "parameters": [
25
+ {
26
+ "id": "inLow",
27
+ "name": "Input Low",
28
+ "type": "number",
29
+ "default": 0,
30
+ "min": 0,
31
+ "max": 1,
32
+ "step": 0.01,
33
+ "description": "Minimum value of input range (0.0-1.0)."
34
+ },
35
+ {
36
+ "id": "inHigh",
37
+ "name": "Input High",
38
+ "type": "number",
39
+ "default": 1,
40
+ "min": 0,
41
+ "max": 1,
42
+ "step": 0.01,
43
+ "description": "Maximum value of input range (0.0-1.0)."
44
+ },
45
+ {
46
+ "id": "outLow",
47
+ "name": "Output Low",
48
+ "type": "number",
49
+ "default": 0,
50
+ "min": -2,
51
+ "max": 1,
52
+ "step": 0.01,
53
+ "description": "Minimum value of output range (-2.0 to 1.0)."
54
+ },
55
+ {
56
+ "id": "outHigh",
57
+ "name": "Output High",
58
+ "type": "number",
59
+ "default": 0.75,
60
+ "min": -2,
61
+ "max": 1,
62
+ "step": 0.01,
63
+ "description": "Maximum value of output range (-2.0 to 1.0)."
64
+ }
65
+ ]
66
+ }
67
+ ---
68
+ ; Scale/Offset
69
+ @section main
70
+
71
+ @if pinConnected(ctrl_in)
72
+ @minusDouble outRange outHigh outLow
73
+ @minusDouble inRange inHigh inLow
74
+ @divideDouble scale outRange inRange
75
+ @multiplyDouble inLowScale inLow scale
76
+ @minusDouble offset outLow inLowScale
77
+
78
+ @assert inRange > 0, "Scale/Offset: Input range is invalid."
79
+ @assert outRange > 0, "Scale/Offset: Output range is invalid."
80
+
81
+ rdax ${input.ctrl_in}, 1.0
82
+ sof ${scale}, ${offset}
83
+ wrax ${output.ctrl_out}, 0.0
84
+ @endif