fix: real preset data for all VST2/VST3 plugins, template system with ground-truth registry

- Extracted preset data from all_plugins_v2.rpp for 14 previously broken plugins
- Fixed PLUGIN_REGISTRY entries: Kontakt 7, Gullfoss, ValhallaDelay, VC 160/76, The Glue
- Template parser falls back to PLUGIN_PRESETS when source RPP has fake data
- Substitute Transient Master (not installed) with FabFilter Pro-C 2
- All 25 plugins now load correctly in REAPER
- Added template generator scripts and ground truth references
- Cleaned up temp/debug files from output/
This commit is contained in:
renato97
2026-05-03 18:54:40 -03:00
parent 3444006411
commit 8562bfbed1
23 changed files with 99316 additions and 688 deletions

View File

@@ -55,22 +55,22 @@ class TestVST3Effects:
from scripts.compose import _VST3_EFFECTS
# Fruity Parametric EQ 2 normalizes to Pro-Q 3
registry_key, filename = _VST3_EFFECTS["Pro-Q 3"]
assert registry_key == "FabFilter Pro-Q 3"
assert filename == "FabFilter Pro-Q 3.vst3"
assert registry_key == "Pro-Q_3"
assert filename == "FabFilter"
def test_fruity_compressor_maps_to_proc2(self):
"""Fruity Compressor → FabFilter Pro-C 2 via normalization."""
from scripts.compose import _VST3_EFFECTS
registry_key, filename = _VST3_EFFECTS["Pro-C 2"]
assert registry_key == "FabFilter Pro-C 2"
assert filename == "FabFilter Pro-C 2.vst3"
assert registry_key == "Pro-C_2"
assert filename == "FabFilter"
def test_pro_r_maps_to_pror2(self):
"""Pro-R 2 → FabFilter Pro-R 2."""
from scripts.compose import _VST3_EFFECTS
registry_key, filename = _VST3_EFFECTS["Pro-R 2"]
assert registry_key == "FabFilter Pro-R 2"
assert filename == "FabFilter Pro-R 2.vst3"
assert registry_key == "Pro-R_2"
assert filename == "FabFilter"
def test_unknown_effect_returns_none(self):
"""Unknown effect names return no VST3 info."""
@@ -96,11 +96,11 @@ class TestBuildFxChain:
}
plugins = build_fx_chain("drums", genre_config, [])
assert len(plugins) == 2
# Fruity Parametric EQ 2 → Pro-Q 3
assert "FabFilter" in plugins[0].name
assert ".vst3" in plugins[0].path
# Pro-Q 3 via alias
assert plugins[0].name in ("Pro-Q_3", "FabFilter_Pro-Q_3")
assert plugins[0].path in ("FabFilter", "FabFilter Pro-Q 3.vst3")
# Fruity Compressor → Pro-C 2
assert "FabFilter" in plugins[1].name
assert plugins[1].name in ("Pro-C_2", "FabFilter_Pro-C_2")
def test_build_fx_chain_bass(self):
"""build_fx_chain returns PluginDef list for bass role."""
@@ -188,7 +188,7 @@ class TestCreateReturnTracks:
reverb = tracks[0]
assert len(reverb.plugins) == 1
assert "FabFilter" in reverb.plugins[0].name
assert ".vst3" in reverb.plugins[0].path
assert reverb.plugins[0].path in ("FabFilter", "FabFilter_Pro_R_2.vst3")
def test_delay_track_has_timeless3(self):
"""Delay return track has FabFilter Timeless 3 plugin."""
@@ -198,7 +198,7 @@ class TestCreateReturnTracks:
delay = tracks[1]
assert len(delay.plugins) == 1
assert "Timeless" in delay.plugins[0].name
assert ".vst3" in delay.plugins[0].path
assert delay.plugins[0].path in ("FabFilter", "FabFilter_Timeless_3.vst3")
def test_return_tracks_have_volume_0_7(self):
"""Return tracks have volume 0.7."""