RetroWaveLab Developer Manual
Source-backed build-from-zero documentation for plugin developers, with explicit coverage mapping.
Goal
Hand this site to a developer who has never seen the codebase, and they should be able to implement a stable plugin from scratch.
Canonical Terms
- Sample: one channel value.
- Frame: all channel samples at one instant.
- Channel: lane in a buffer (L/R/etc).
- Selection:
[start, endExclusive)in frames. - Buffer:
SampleBuffer.
Project Rules (Non-Negotiable)
- Use host APIs via
IHostContext; do not call other plugins directly. - Do not mutate WinForms controls off UI thread; use
BeginInvoke. - Do not run heavy DSP in drag/mouse-move handlers; commit on drag end or apply.
- Use
IDocumentServicefor edits andIPresetStorefor presets. - Preview and bypass are runtime UI state; do not persist them in presets.
Coverage
This manual fully maps all public APIs from src/RetroWaveLab.Core.Abstractions and the shared graph engine contracts from src/RetroWaveLab.UI.Graphing, and also includes a solution project inventory.
See Source Index for exact file-to-page mapping and project-level coverage status.