@audiofab-io/fv1-core 0.6.1 → 0.6.2
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.
- package/blocks/ATL_DEVELOPER_REFERENCE.md +156 -156
- package/blocks/control/constant.atl +36 -36
- package/blocks/control/entropy_lfo.atl +74 -74
- package/blocks/control/envelope.atl +120 -120
- package/blocks/control/invert.atl +33 -33
- package/blocks/control/pot.atl +149 -149
- package/blocks/control/power.atl +76 -76
- package/blocks/control/ramp_lfo.atl +122 -122
- package/blocks/control/scale_offset.atl +84 -84
- package/blocks/control/sincos_lfo.atl +126 -126
- package/blocks/control/smoother.atl +48 -48
- package/blocks/control/tremolizer.atl +54 -54
- package/blocks/effects/delay/micro_stutter.atl +77 -77
- package/blocks/effects/delay/mn3011.atl +280 -280
- package/blocks/effects/delay/simple_delay.atl +96 -96
- package/blocks/effects/delay/triple_tap_delay.atl +176 -176
- package/blocks/effects/lo-fi/bit_mangler.atl +74 -74
- package/blocks/effects/lo-fi/chiptune.atl +311 -311
- package/blocks/effects/lo-fi/tape_degrade.atl +181 -181
- package/blocks/effects/modulation/chorus.atl +141 -141
- package/blocks/effects/modulation/chorus_4voice.atl +188 -188
- package/blocks/effects/modulation/flanger.atl +184 -184
- package/blocks/effects/modulation/harmonic_trem.atl +129 -129
- package/blocks/effects/modulation/phaser.atl +299 -299
- package/blocks/effects/pitch/octave_up_down.atl +80 -80
- package/blocks/effects/pitch/pitch_offset.atl +149 -149
- package/blocks/effects/pitch/pitch_offset_dual.atl +197 -197
- package/blocks/effects/pitch/pitch_shift.atl +115 -115
- package/blocks/effects/pitch/sub_octave.atl +100 -100
- package/blocks/effects/reverb/ducking_reverb.atl +145 -145
- package/blocks/effects/reverb/min_reverb.atl +132 -132
- package/blocks/effects/reverb/plate_reverb.atl +344 -344
- package/blocks/effects/reverb/room_reverb.atl +293 -293
- package/blocks/effects/reverb/smear.atl +90 -90
- package/blocks/effects/reverb/spring_reverb.atl +353 -353
- package/blocks/filter/1p_high_pass.atl +62 -62
- package/blocks/filter/1p_low_pass.atl +58 -58
- package/blocks/filter/auto_wah.atl +207 -207
- package/blocks/filter/bbd_loss.atl +79 -79
- package/blocks/filter/shelving_high_pass.atl +76 -76
- package/blocks/filter/shelving_low_pass.atl +76 -76
- package/blocks/filter/svf_2p.atl +116 -116
- package/blocks/gain_mix/crossfade.atl +93 -93
- package/blocks/gain_mix/crossfade2.atl +86 -86
- package/blocks/gain_mix/crossfade3.atl +71 -71
- package/blocks/gain_mix/gainboost.atl +54 -54
- package/blocks/gain_mix/mixer2.atl +76 -76
- package/blocks/gain_mix/mixer3.atl +109 -109
- package/blocks/gain_mix/mixer4.atl +151 -151
- package/blocks/gain_mix/volume.atl +50 -50
- package/blocks/io/adc.atl +53 -53
- package/blocks/io/dac.atl +61 -61
- package/blocks/other/stickynote.atl +24 -24
- package/blocks/other/tone_gen_adjustable.atl +137 -137
- package/blocks/other/tone_gen_fixed.atl +109 -109
- package/dist/blockDiagram/builtinBlocks.js +107 -107
- package/dist/blockDiagram/builtinBlocks.js.map +1 -1
- package/dist/simulator/FV1Simulator.js +1 -1
- 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
|