2.3 KiB
2.3 KiB
Repository Guidelines
Project Structure & Module Organization
PluginProcessor.h/cppcontainTwoOscAudioProcessor,SimpleVoice, the APVTS layout, and factory presets—centralize DSP, parameter definitions, and state handling here.PluginEditor.h/cppmanage the UI components, parameter attachments, and layout helpers; register new parameter IDs in the processor and wire their controls in these files.- Factory presets sit in
getFactoryPatches(); keep categories organised so the preset popup remains easy to scan.
Build, Test, and Development Commands
- Make JUCE modules available (export
JUCE_MODULES_PATHor keep a JUCE checkout beside this repository). - Configure and build out-of-tree with CMake:
cmake -S . -B build -DJUCE_MODULES_PATH=$JUCE_MODULES_PATH cmake --build build --target NeuralSynthEd_Standalone cmake --build build --target NeuralSynthEd_VST3 - Leave
build/untracked and use the standalone target for smoke tests before validating in a DAW.
Coding Style & Naming Conventions
- Follow JUCE style: 4 spaces, same-line braces, and
//==============================================================================separators for major sections. - Types use PascalCase, members camelCase, parameter IDs lowerCamel (e.g.,
lfoRate,oscA); reserveautofor self-evident types. - Keep realtime code allocation-free and tuck UI-only helpers inside the editor files.
Testing Guidelines
- Manual passes in the standalone build and JUCE
AudioPluginHostcover current needs; exercise preset recall, automation, MIDI, and state persistence whenever parameters move. - Describe expected sonic or UX changes in PR notes so reviewers can mirror the checks.
Commit & Pull Request Guidelines
- Use Conventional Commits with imperative subjects; add a brief body when behaviour changes or migrations occur.
- PRs should summarise functional impact, link issues, attach audio clips or screenshots for DSP/UI tweaks, and avoid force-pushes post-review without noting the delta.
Preset & State Tips
- Gain-match new presets (master around -18 dBFS) and provide explicit LFO values to keep legacy sounds stable.
- Update APVTS defaults and editor control ranges together, refreshing browser labels if new preset categories appear.