# Repository Guidelines ## Project Structure & Module Organization - `PluginProcessor.h/cpp` contain `TwoOscAudioProcessor`, `SimpleVoice`, the APVTS layout, and factory presets—centralize DSP, parameter definitions, and state handling here. - `PluginEditor.h/cpp` manage 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_PATH` or keep a JUCE checkout beside this repository). - Configure and build out-of-tree with CMake: ```bash 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`); reserve `auto` for 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 `AudioPluginHost` cover 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.