2.6 KiB
Repository Guidelines
Project Structure & Module Organization
NeuralSynth is a JUCE-based synthesizer plugin. Core runtime code lives in Source/, with PluginProcessor.* orchestrating audio/MIDI flow, PluginEditor.* driving the UI, SynthVoice.* implementing per-voice DSP, and helper headers such as AudioEngine.h and NeuralSharedParams.h exposing shared state. JUCE-generated scaffolding sits in JuceLibraryCode/; regenerate it through NeuralSynth.jucer rather than editing by hand. Platform build assets are under Builds/ (for example Builds/LinuxMakefile/), and finished binaries default to Builds/LinuxMakefile/build/. Install scripting for Windows lives in NeuralSynth.iss.
Build, Test, and Development Commands
cd Builds/LinuxMakefile && make CONFIG=Debugcompiles the standalone app and VST3 with debug symbols.cd Builds/LinuxMakefile && make CONFIG=Releasebuilds optimized artefacts for distribution.cd Builds/LinuxMakefile && make cleanremoves intermediate objects when builds misbehave../Builds/LinuxMakefile/build/NeuralSynthlaunches the standalone target; VST3 binaries appear inBuilds/LinuxMakefile/NeuralSynth.vst3and copy into~/.vst3when the Makefile post-build step runs.
Coding Style & Naming Conventions
C++ sources use 4-space indentation, brace-on-new-line functions, and JUCE’s juce:: namespace types. Prefer PascalCase for classes (e.g., NeuralSynthAudioProcessor), camelCase for methods and members (prepareToPlay, audioEngine), and suffix queues/collectors clearly (AudioBufferQueue, ScopeDataCollector). Match existing lambda formatting in SynthVoice.cpp, keep includes sorted locally, and avoid editing generated files under JuceLibraryCode/.
Testing Guidelines
Automated tests are not yet configured; rely on manual validation in the standalone app or a DAW host. After each change, rebuild and audition key features: oscillator switching, chorus/delay/reverb chains, parameter automation, and MIDI input. For DSP tweaks, monitor the oscilloscope components linked to the buffer queues to confirm signal stability. Document ad-hoc test coverage in your pull request until formal tests are added.
Commit & Pull Request Guidelines
Follow the existing concise, imperative commit style (Add chorus modulation, Fix voice detune). Scope each commit to a logical change and format messages as a single summary line. Pull requests should describe the motivation, outline testing performed, and link issues when relevant. Include platform notes (Linux, Windows installer) and screenshots or audio clips for UI-affecting or sonic changes so reviewers can assess impact quickly.