@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,74 +1,74 @@
1
- ---
2
- {
3
- "type": "effects.bit_mangler",
4
- "name": "The Bit-Mangler",
5
- "category": "Effects",
6
- "subcategory": "Lo-Fi",
7
- "description": "An enveloped sample-rate reducer (Fixed: Namespaced labels and gain staging).",
8
- "color": "#6f24f2",
9
- "inputs": [
10
- { "id": "input", "name": "Audio In", "type": "audio" },
11
- { "id": "sensCV", "name": "Sensitivity", "type": "control", "required": false, "parameter": "sens" },
12
- { "id": "mixCV", "name": "Mix", "type": "control", "required": false, "parameter": "mix" }
13
- ],
14
- "outputs": [
15
- { "id": "out", "name": "Audio Out", "type": "audio" }
16
- ],
17
- "parameters": [
18
- { "id": "base_rate", "name": "Crush Step", "type": "number", "default": 0.05, "min": 0, "max": 0.5, "step": 0.001 },
19
- { "id": "sens", "name": "Env Sensitivity", "type": "number", "default": 0.1, "min": 0, "max": 1, "step": 0.01 },
20
- { "id": "mix", "name": "Dry/Wet Mix", "type": "number", "default": 1.0, "min": 0, "max": 1, "step": 0.01 }
21
- ],
22
- "registers": [ "env", "counter", "held", "temp_mix", "dry_val" ]
23
- }
24
- ---
25
- ; The Bit-Mangler - Namespaced SRR
26
- ; Fixes jump collisions and hardware register leakage (Register 0).
27
-
28
- @section main
29
- @if pinConnected(input)
30
- ; 0. Initialization (First Run only)
31
- skp run, ${local.SKIP_INIT}
32
- rdax ${input.input}, 1.0
33
- wrax ${reg.held}, 0.0
34
- ${local.SKIP_INIT}:
35
-
36
- ; 1. Envelope Follower
37
- clr
38
- rdax ${input.input}, 1.0
39
- absa
40
- rdfx ${reg.env}, 0.001
41
- wrax ${reg.env}, 0.0
42
-
43
- ; 2. S&H Counter
44
- ; Increment = base_rate + (env * sens)
45
- @cv sensCV ; ACC = sensCV
46
- mulx ${reg.env} ; ACC = sensCV * env
47
- rdax ${reg.counter}, 1.0 ; ACC = (sensCV * env) + counter
48
- sof 1.0, ${param.base_rate} ; ACC = (sensCV * env) + counter + base_rate
49
- wrax ${reg.counter}, 1.0
50
-
51
- ; 3. Check for Sample Event (trigger at 0.99)
52
- sof 1.0, -0.99
53
- skp neg, ${local.SKIP_SAMPLE}
54
-
55
- ; --- Sample Block (Runs only on Trigger) ---
56
- clr ; MUST clear ACC to avoid using the 'counter-0.95' residual!
57
- rdax ${input.input}, 1.0
58
- wrax ${reg.held}, 0.0 ; Update S&H value
59
- sof 0.0, 0.0
60
- wrax ${reg.counter}, 0.0 ; Reset counter
61
-
62
- ${local.SKIP_SAMPLE}:
63
- ; 4. Final Output Mix: Out = Dry + (Wet - Dry) * Mix
64
- clr ; Clear ACC after skip to avoid counter pollution
65
- @cv mixCV ; Load mix value (0 to 1)
66
- wrax ${reg.temp_mix}, 0.0
67
-
68
- rdax ${input.input}, 1.0 ; Dry signal
69
- wrax ${reg.dry_val}, -1.0 ; dry_val = dry, ACC = -dry
70
- rdax ${reg.held}, 1.0 ; ACC = wet - dry
71
- mulx ${reg.temp_mix} ; ACC = (wet - dry) * mix
72
- rdax ${reg.dry_val}, 1.0 ; ACC = dry + (wet - dry) * mix
73
- wrax ${output.out}, 0.0
74
- @endif
1
+ ---
2
+ {
3
+ "type": "effects.bit_mangler",
4
+ "name": "The Bit-Mangler",
5
+ "category": "Effects",
6
+ "subcategory": "Lo-Fi",
7
+ "description": "An enveloped sample-rate reducer (Fixed: Namespaced labels and gain staging).",
8
+ "color": "#6f24f2",
9
+ "inputs": [
10
+ { "id": "input", "name": "Audio In", "type": "audio" },
11
+ { "id": "sensCV", "name": "Sensitivity", "type": "control", "required": false, "parameter": "sens" },
12
+ { "id": "mixCV", "name": "Mix", "type": "control", "required": false, "parameter": "mix" }
13
+ ],
14
+ "outputs": [
15
+ { "id": "out", "name": "Audio Out", "type": "audio" }
16
+ ],
17
+ "parameters": [
18
+ { "id": "base_rate", "name": "Crush Step", "type": "number", "default": 0.05, "min": 0, "max": 0.5, "step": 0.001 },
19
+ { "id": "sens", "name": "Env Sensitivity", "type": "number", "default": 0.1, "min": 0, "max": 1, "step": 0.01 },
20
+ { "id": "mix", "name": "Dry/Wet Mix", "type": "number", "default": 1.0, "min": 0, "max": 1, "step": 0.01 }
21
+ ],
22
+ "registers": [ "env", "counter", "held", "temp_mix", "dry_val" ]
23
+ }
24
+ ---
25
+ ; The Bit-Mangler - Namespaced SRR
26
+ ; Fixes jump collisions and hardware register leakage (Register 0).
27
+
28
+ @section main
29
+ @if pinConnected(input)
30
+ ; 0. Initialization (First Run only)
31
+ skp run, ${local.SKIP_INIT}
32
+ rdax ${input.input}, 1.0
33
+ wrax ${reg.held}, 0.0
34
+ ${local.SKIP_INIT}:
35
+
36
+ ; 1. Envelope Follower
37
+ clr
38
+ rdax ${input.input}, 1.0
39
+ absa
40
+ rdfx ${reg.env}, 0.001
41
+ wrax ${reg.env}, 0.0
42
+
43
+ ; 2. S&H Counter
44
+ ; Increment = base_rate + (env * sens)
45
+ @cv sensCV ; ACC = sensCV
46
+ mulx ${reg.env} ; ACC = sensCV * env
47
+ rdax ${reg.counter}, 1.0 ; ACC = (sensCV * env) + counter
48
+ sof 1.0, ${param.base_rate} ; ACC = (sensCV * env) + counter + base_rate
49
+ wrax ${reg.counter}, 1.0
50
+
51
+ ; 3. Check for Sample Event (trigger at 0.99)
52
+ sof 1.0, -0.99
53
+ skp neg, ${local.SKIP_SAMPLE}
54
+
55
+ ; --- Sample Block (Runs only on Trigger) ---
56
+ clr ; MUST clear ACC to avoid using the 'counter-0.95' residual!
57
+ rdax ${input.input}, 1.0
58
+ wrax ${reg.held}, 0.0 ; Update S&H value
59
+ sof 0.0, 0.0
60
+ wrax ${reg.counter}, 0.0 ; Reset counter
61
+
62
+ ${local.SKIP_SAMPLE}:
63
+ ; 4. Final Output Mix: Out = Dry + (Wet - Dry) * Mix
64
+ clr ; Clear ACC after skip to avoid counter pollution
65
+ @cv mixCV ; Load mix value (0 to 1)
66
+ wrax ${reg.temp_mix}, 0.0
67
+
68
+ rdax ${input.input}, 1.0 ; Dry signal
69
+ wrax ${reg.dry_val}, -1.0 ; dry_val = dry, ACC = -dry
70
+ rdax ${reg.held}, 1.0 ; ACC = wet - dry
71
+ mulx ${reg.temp_mix} ; ACC = (wet - dry) * mix
72
+ rdax ${reg.dry_val}, 1.0 ; ACC = dry + (wet - dry) * mix
73
+ wrax ${output.out}, 0.0
74
+ @endif