Hybrid pipeline: RPPBuilder writes VST3/MIDI/audio skeleton, ReaScript handles built-in plugins (ReaEQ, ReaComp) via TrackFX_AddByName + TrackFX_SetParam with multi-action dispatch, adaptive API check, and builtin plugin auto-detection from PLUGIN_REGISTRY. 326 tests (298 existing + 28 new), 12/12 spec scenarios compliant.
1.9 KiB
1.9 KiB
Tasks: ReaScript-First Built-in Plugin Configuration
Phase 1: Foundation (schema + commands)
- 1.1 Add
builtin: bool = FalsetoPluginDefinsrc/core/schema.py - 1.2 Extend
ReaScriptCommand.actiontostr | list[str], addplugins_to_add: list[dict]incommands.py - 1.3 Add
added_plugins: list[dict]toReaScriptResult; updatewrite_command/read_resultincommands.py
Phase 2: Core Implementation
- 2.1 Add
_add_plugins_src()generatingTrackFX_AddByName+ verification block in__init__.py - 2.2 Add
_configure_fx_params_src()generatingTrackFX_SetParamloop in__init__.py - 2.3 Refactor
_build_script(): normalizeactionto list, emit dispatch loop calling per-action blocks in__init__.py - 2.4 Make
_api_check_src()adaptive: require FX APIs only whenadd_plugins/configure_fx_paramspresent in__init__.py - 2.5 Extract
REAPER_BUILTINSfrozenset +get_builtin_plugins(song)export insrc/reaper_builder/__init__.py - 2.6 Skip VST element generation for
builtin=Trueplugins in_build_fx_chain()insrc/reaper_builder/__init__.py
Phase 3: Integration
- 3.1 Add
--plugins-configflag; deriveplugins_to_addfrom song, normalize action to list inscripts/run_in_reaper.py
Phase 4: Testing
- 4.1 Unit: multi-action dispatch generates correct per-action functions (parametrized action lists) in
test_reaper_scripting.py - 4.2 Unit: adaptive
check_apirequires FX APIs only withadd_plugins; backward compat for string action - 4.3 Unit:
plugins_to_add/added_pluginsJSON round-trip serialization intest_reaper_scripting.py - 4.4 Integration:
builtin=TruePluginDef skipped in RPP.rppoutput, listed in command intest_reaper_scripting.py - 4.5 Regression: run full
pytestsuite; all 317 tests pass (298 existing + 19 new)