Q-W2v: split VST god-modules — editor 8 face-axis TUs (+pure layout hoist), processor 3 TUs, component_state_io codec split (extension drops the voice engine), zone_params.h, core/wire putLE; formats frozen, 61/61 green
This commit is contained in:
+62
-31
@@ -411,9 +411,10 @@ target_include_directories(drag_out PUBLIC src)
|
||||
# TrackFX_SetPreset so a freshly-added ReaSampler 9000 plays that capture (the
|
||||
# former "vst_chunk" named-config-parm write fed REAPER raw component bytes its
|
||||
# VST3 wrapper framing cannot apply — the blank-on-drop regression). Reuses the
|
||||
# instrument's OWN serializer (sample_map::serializeComponentState) — NOT a
|
||||
# parallel byte writer — so the cross-artifact contract cannot drift; links
|
||||
# sample_map (which pulls bank_book/wav_trim/sampler_core transitively) and
|
||||
# instrument's OWN serializer (component_state_io::serializeComponentState) — NOT
|
||||
# a parallel byte writer — so the cross-artifact contract cannot drift; links
|
||||
# component_state_io (Q-W2v codec split, T4-13 ≡ T2-07: the extension no longer
|
||||
# links sampler_core/pitch_shift object code to serialize one preset blob) and
|
||||
# NEITHER SDK. The class-ID string derives from the FROZEN UID macros
|
||||
# (src/core/wire/reasampler_uid.h, SDK-free), channel-selected via the generated
|
||||
# version header — hence the generated include dir. The round-trip test parses
|
||||
@@ -422,7 +423,7 @@ target_include_directories(drag_out PUBLIC src)
|
||||
# ---------------------------------------------------------------------------
|
||||
add_library(instrument_drop STATIC src/core/wire/instrument_drop.cpp)
|
||||
target_include_directories(instrument_drop PUBLIC src ${CMAKE_CURRENT_BINARY_DIR}/generated)
|
||||
target_link_libraries(instrument_drop PUBLIC sample_map)
|
||||
target_link_libraries(instrument_drop PUBLIC component_state_io)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# 2m) Pure theme library — NO REAPER, NO SWELL, NO LICE. The Phase L (L1) palette
|
||||
@@ -547,10 +548,10 @@ target_link_libraries(card_drag PUBLIC drag_out bank_grid)
|
||||
# bounded stealing, an ADSR amplitude envelope, a key/velocity keymap with
|
||||
# (note, velocity) -> zone resolution, and repitch/interpolation from a root note
|
||||
# with loop-point-aware sustain. The mirror of bank_model / peaks / bank_book,
|
||||
# tested hard outside any host. Lives under src/vst/ (it is instrument code) but
|
||||
# tested hard outside any host. Lives under core/instrument/engine/ but
|
||||
# links NEITHER SDK — the plain-data boundary is enforced structurally: the test
|
||||
# target below links only sampler_core (+ its peaks dep for the AudioSample alias,
|
||||
# the one house precedent wav_trim also relies on). The VST3 shell (src/vst/
|
||||
# the one house precedent wav_trim also relies on). The VST3 shell (shell/instrument/
|
||||
# reasampler_processor.cpp) marshals MIDI/audio to/from it and is DAW-verified.
|
||||
# ---------------------------------------------------------------------------
|
||||
# pitch_shift (S16) — the pure duration-preserving PitchShifter (Preserve-engine DSP core).
|
||||
@@ -813,7 +814,7 @@ add_test(NAME velocity_curve_tests COMMAND velocity_curve_tests)
|
||||
# (mirror of mode_switch/bank_grid). bridge_marshal: the REAPER VST-host bridge
|
||||
# read marshalling — GetProjExtState result decode + a small JSON string-field
|
||||
# reader (mirror of capture_paths/wav_trim). Both are unit-tested outside the DAW;
|
||||
# the VST3 shell (src/vst/*) that draws/routes/invokes is DAW-verified.
|
||||
# the VST3 shell (shell/instrument/*) that draws/routes/invokes is DAW-verified.
|
||||
# ---------------------------------------------------------------------------
|
||||
add_library(editor_geometry STATIC src/core/instrument/ui/editor_geometry.cpp)
|
||||
target_include_directories(editor_geometry PUBLIC src)
|
||||
@@ -830,19 +831,28 @@ add_library(embed_strip STATIC src/core/instrument/ui/embed_strip.cpp)
|
||||
target_include_directories(embed_strip PUBLIC src)
|
||||
target_link_libraries(embed_strip PUBLIC editor_geometry)
|
||||
|
||||
# sample_map (Phase S4) — PURE mapping logic for the Tier-0 instrument: the live bank
|
||||
# blob -> selected sample (via the SHARED bank_book JSON parse, NOT a second parser),
|
||||
# interleaved->mono downmix (the Tier-0 channel policy), the Tier-0 chromatic keymap
|
||||
# build, and the selected-sample instance-state (de)serialization. Links the three pure
|
||||
# modules it composes — bank_book (shared JSON), wav_trim (shared WAV parse), and
|
||||
# sampler_core (the Keymap/SampleData it yields) — and NEITHER SDK. The VST3 shell
|
||||
# (reasampler_processor.cpp) does the bridge read + file I/O off the audio thread, then
|
||||
# calls these; the process callback stays allocation-free.
|
||||
# sample_map (Phase S4; RESOLUTION half since Q-W2v) — PURE mapping logic for the
|
||||
# instrument: the live bank blob -> selected sample (via the SHARED bank_book JSON parse,
|
||||
# NOT a second parser), interleaved->mono downmix (the channel policy), the Tier-0/zoned
|
||||
# keymap builds, and the refs/performance resolution. Links the three pure modules it
|
||||
# composes — bank_book (shared JSON), wav_trim (shared WAV parse), and sampler_core (the
|
||||
# Keymap/SampleData it yields) — and NEITHER SDK. The VST3 shell (reasampler_processor)
|
||||
# does the bridge read + file I/O off the audio thread, then calls these; the process
|
||||
# callback stays allocation-free. The ComponentState codec is component_state_io below.
|
||||
add_library(sample_map STATIC src/core/instrument/map/sample_map.cpp)
|
||||
target_include_directories(sample_map PUBLIC src)
|
||||
# master_gain: the v8 component-state master-gain field validates against the pure taper's
|
||||
# linear cap at the (de)serialization boundary (one cap, shared with the knob + the processor).
|
||||
target_link_libraries(sample_map PUBLIC bank_book wav_trim sampler_core master_gain)
|
||||
target_link_libraries(sample_map PUBLIC bank_book wav_trim sampler_core)
|
||||
|
||||
# component_state_io (Q-W2v split of sample_map, T4-13 ≡ T2-07) — the ComponentState
|
||||
# ENVELOPE + zones-payload binary codec (envelope v1..v11, zones payload v1..v7, every
|
||||
# lift preserved byte-identically). Split so the codec — which grows on every envelope
|
||||
# bump and is shared with the EXTENSION's preset-blob path (instrument_drop) — links
|
||||
# WITHOUT the voice engine: its deps are velocity_curve (the per-zone curve field) and
|
||||
# master_gain (the v8 wire cap) only; sampler_core/pitch_shift object code never enters
|
||||
# the extension binary. Its own test target linking exactly these is the structural proof.
|
||||
add_library(component_state_io STATIC src/core/instrument/map/component_state_io.cpp)
|
||||
target_include_directories(component_state_io PUBLIC src)
|
||||
target_link_libraries(component_state_io PUBLIC velocity_curve master_gain)
|
||||
|
||||
# capture_browser (Phase S10) — PURE card-grid + bank-filter-tab layout + hit-test for the
|
||||
# capture-first editor's default face. The mirror of mode_switch/editor_geometry: the fiddly
|
||||
@@ -967,13 +977,21 @@ add_executable(embed_strip_tests tests/test_embed_strip.cpp)
|
||||
target_link_libraries(embed_strip_tests PRIVATE embed_strip)
|
||||
add_test(NAME embed_strip_tests COMMAND embed_strip_tests)
|
||||
|
||||
# sample_map: the S4 mapping heart. Links ONLY sample_map (+ its pure deps) — NEITHER
|
||||
# the VST3 SDK nor the REAPER SDK — the same structural plain-data-boundary proof the
|
||||
# sampler_core test enforces.
|
||||
# sample_map: the S4 mapping heart. Links ONLY sample_map + component_state_io (+ their
|
||||
# pure deps) — NEITHER the VST3 SDK nor the REAPER SDK — the same structural
|
||||
# plain-data-boundary proof the sampler_core test enforces. (The historical suite spans
|
||||
# both halves of the Q-W2v split; the frozen-format assertions live here unmodified.)
|
||||
add_executable(sample_map_tests tests/test_sample_map.cpp)
|
||||
target_link_libraries(sample_map_tests PRIVATE sample_map)
|
||||
target_link_libraries(sample_map_tests PRIVATE sample_map component_state_io)
|
||||
add_test(NAME sample_map_tests COMMAND sample_map_tests)
|
||||
|
||||
# component_state_io (Q-W2v): the ComponentState codec's OWN target. Links ONLY
|
||||
# component_state_io (velocity_curve + master_gain transitively) — deliberately NO
|
||||
# sampler_core/pitch_shift — the structural proof the codec is engine-free (T2-07).
|
||||
add_executable(component_state_io_tests tests/test_component_state_io.cpp)
|
||||
target_link_libraries(component_state_io_tests PRIVATE component_state_io)
|
||||
add_test(NAME component_state_io_tests COMMAND component_state_io_tests)
|
||||
|
||||
add_executable(capture_browser_tests tests/test_capture_browser.cpp)
|
||||
target_link_libraries(capture_browser_tests PRIVATE capture_browser)
|
||||
add_test(NAME capture_browser_tests COMMAND capture_browser_tests)
|
||||
@@ -1209,8 +1227,22 @@ if(WIN32 AND EXISTS "${VST3_SDK}/public.sdk/source/main/pluginfactory.cpp")
|
||||
# --- 5b) The VST3 module (loadable .vst3 DLL). -------------------------------
|
||||
add_library(reasampler_vst MODULE
|
||||
src/shell/instrument/vst_entry.cpp
|
||||
src/vst/reasampler_processor.cpp
|
||||
src/vst/reasampler_editor.cpp
|
||||
# The processor family (Q-W2v, T4-12): lifecycle + process() whole (T4-29), with
|
||||
# component-state I/O and the off-thread reload/publish family in sibling TUs.
|
||||
src/shell/instrument/reasampler_processor.cpp
|
||||
src/shell/instrument/processor_state.cpp
|
||||
src/shell/instrument/processor_reload.cpp
|
||||
# The editor family (Q-W2v, T4-11): eight face-axis TUs — session/bridge state,
|
||||
# param plumbing, paint x2 (Sample | Browse+Zone), input x2 (same axis), platform;
|
||||
# the eighth (editor_layout) hoisted PURE into core/instrument/ui/editor_geometry
|
||||
# + browser_scroll (T2-06). Shared internals: editor_internal.h (no TU).
|
||||
src/shell/instrument/editor_session.cpp
|
||||
src/shell/instrument/editor_controls.cpp
|
||||
src/shell/instrument/editor_paint_sample.cpp
|
||||
src/shell/instrument/editor_paint_browse_zone.cpp
|
||||
src/shell/instrument/editor_input_sample.cpp
|
||||
src/shell/instrument/editor_input_browse_zone.cpp
|
||||
src/shell/instrument/editor_platform.cpp
|
||||
src/shell/instrument/reasampler_embed.cpp
|
||||
src/shell/instrument/reaper_bridge.cpp
|
||||
# The Phase L (L1) draw kit — the ONE source of drawing the editor + embed shells
|
||||
@@ -1228,8 +1260,8 @@ if(WIN32 AND EXISTS "${VST3_SDK}/public.sdk/source/main/pluginfactory.cpp")
|
||||
# bank->keymap mapping + state (de)ser the processor drives off the audio thread;
|
||||
# linking it pulls its pure deps (bank_book, wav_trim, sampler_core, bank_model,
|
||||
# peaks) transitively. capture_paths: the shared M4 path resolution (resolveBankFile /
|
||||
# projectDirOfRpp) the bridge + processor use. Its PUBLIC include dirs (src, src/vst)
|
||||
# give the shell TUs their headers (ext_keys.h, bank_book.h, sampler_core.h, ...).
|
||||
# projectDirOfRpp) the bridge + processor use. Its PUBLIC include dir (src)
|
||||
# gives the shell TUs their headers (ext_keys.h, bank_book.h, sampler_core.h, ...).
|
||||
# embed_strip (S6): the pure inline-strip layout + hit-test the embed shell marshals
|
||||
# into; it links editor_geometry transitively (shared Rect).
|
||||
# app_version: ext_keys.h's channel-derived namespace accessor (V4) delegates to it, so
|
||||
@@ -1264,16 +1296,15 @@ if(WIN32 AND EXISTS "${VST3_SDK}/public.sdk/source/main/pluginfactory.cpp")
|
||||
# sample_usage (pS-usage): the usage-record wire + publish plan the processor's
|
||||
# reloadInstrument publishes through the bridge (the one sanctioned VST-side write).
|
||||
target_link_libraries(reasampler_vst PRIVATE vst3_sdk editor_geometry bridge_marshal
|
||||
sample_map capture_paths embed_strip app_version capture_browser keyboard_strip
|
||||
sample_map component_state_io capture_paths embed_strip app_version capture_browser keyboard_strip
|
||||
waveform_view bank_sync browser_scroll note_entry param_slider
|
||||
theme component_geometry bank_grid trigger_seam envelope_overlay envelope_edit
|
||||
knob_deck curve_popup master_gain sample_usage file_bytes)
|
||||
# SDK_INC gives reaper_vst3_interfaces.h + reaper_plugin_functions.h for the bridge;
|
||||
# WDL_INC gives LICE for the editor. The VST3 SDK headers come from vst3_sdk PUBLIC.
|
||||
# src: the Q-W1 rooted include convention ("core/..." / "shell/..."). src/vst: the
|
||||
# two not-yet-split god TUs (reasampler_editor / reasampler_processor, Q-W2v) still
|
||||
# live there and are included flat by the shell TUs.
|
||||
target_include_directories(reasampler_vst PRIVATE src src/vst ${SDK_INC} ${WDL_INC})
|
||||
# src: the Q-W1 rooted include convention ("core/..." / "shell/..."). src/vst is GONE
|
||||
# (Q-W2v): the two former god TUs live split under shell/instrument/.
|
||||
target_include_directories(reasampler_vst PRIVATE src ${SDK_INC} ${WDL_INC})
|
||||
# A .vst3 is a DLL with a .vst3 extension and no lib-prefix. OUTPUT_NAME is the on-disk
|
||||
# product name, channel-forked (S18): reasampler_9000.vst3 (stable, byte-identical to
|
||||
# pre-S18) / reasampler_9000_beta.vst3 (beta) — driven by REASAMPLER_VST_OUTPUT_NAME set
|
||||
|
||||
Reference in New Issue
Block a user