Files
renato97 b08dcccca2 feat: reascript-first — built-in REAPER plugin insertion via ReaScript API
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.
2026-05-04 09:38:58 -03:00

1.9 KiB

Tasks: ReaScript-First Built-in Plugin Configuration

Phase 1: Foundation (schema + commands)

  • 1.1 Add builtin: bool = False to PluginDef in src/core/schema.py
  • 1.2 Extend ReaScriptCommand.action to str | list[str], add plugins_to_add: list[dict] in commands.py
  • 1.3 Add added_plugins: list[dict] to ReaScriptResult; update write_command/read_result in commands.py

Phase 2: Core Implementation

  • 2.1 Add _add_plugins_src() generating TrackFX_AddByName + verification block in __init__.py
  • 2.2 Add _configure_fx_params_src() generating TrackFX_SetParam loop in __init__.py
  • 2.3 Refactor _build_script(): normalize action to list, emit dispatch loop calling per-action blocks in __init__.py
  • 2.4 Make _api_check_src() adaptive: require FX APIs only when add_plugins/configure_fx_params present in __init__.py
  • 2.5 Extract REAPER_BUILTINS frozenset + get_builtin_plugins(song) export in src/reaper_builder/__init__.py
  • 2.6 Skip VST element generation for builtin=True plugins in _build_fx_chain() in src/reaper_builder/__init__.py

Phase 3: Integration

  • 3.1 Add --plugins-config flag; derive plugins_to_add from song, normalize action to list in scripts/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_api requires FX APIs only with add_plugins; backward compat for string action
  • 4.3 Unit: plugins_to_add/added_plugins JSON round-trip serialization in test_reaper_scripting.py
  • 4.4 Integration: builtin=True PluginDef skipped in RPP .rpp output, listed in command in test_reaper_scripting.py
  • 4.5 Regression: run full pytest suite; all 317 tests pass (298 existing + 19 new)