mirror of
https://codeberg.org/armin/horizont.git
synced 2026-09-01 04:10:46 +02:00
add AGENTS.md
This commit is contained in:
parent
6c0d072465
commit
b1b83104a7
1 changed files with 61 additions and 0 deletions
61
AGENTS.md
Normal file
61
AGENTS.md
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
# AGENTS.md
|
||||||
|
|
||||||
|
Guidance for working in this repository.
|
||||||
|
|
||||||
|
## Project
|
||||||
|
|
||||||
|
Horizont is a stereo algorithmic reverb audio plugin (VST3 / AU) for macOS.
|
||||||
|
It pairs a Schroeder/Moorer reverb core (diffusion allpass + parallel damped
|
||||||
|
combs, gains derived from RT60) with a granular feedback pitch-shifter loop.
|
||||||
|
Built with JUCE and C++17. See `README.md` for the full DSP description.
|
||||||
|
|
||||||
|
## Build & test
|
||||||
|
|
||||||
|
From the repo root:
|
||||||
|
|
||||||
|
```
|
||||||
|
make # fetches JUCE 8.0.15 into ./JUCE if missing, configures + builds (Release)
|
||||||
|
make install # installs into ~/Library/Audio/Plug-Ins/VST3 and .../Components
|
||||||
|
make clean # delete the build directory
|
||||||
|
```
|
||||||
|
|
||||||
|
- Build artefacts land in `build/Horizont_artefacts/Release/`.
|
||||||
|
- JUCE must be a **8.0.x release tag** — JUCE 9/master refactored the
|
||||||
|
LookAndFeel API and is not supported.
|
||||||
|
- Configure manually with `cmake -B build -DCMAKE_BUILD_TYPE=Release -DJUCE_ROOT="$(pwd)/JUCE"`.
|
||||||
|
- There are **no unit tests** in this project. Verify by building, then
|
||||||
|
loading the plugin in a host (or `auval` for the AU).
|
||||||
|
- C++17 only; avoid pre-C++17 and post-C++17 features.
|
||||||
|
|
||||||
|
## Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
CMakeLists.txt build config; new source files must be added here
|
||||||
|
Makefile one-command macOS build/install
|
||||||
|
Source/
|
||||||
|
PluginProcessor.* processor, APVTS, state save/load, host program (presets)
|
||||||
|
PluginEditor.* layout, panels, preset combo box
|
||||||
|
HorizontEngine.* reverb DSP core (allpass diffusers + comb bank + feedback loop)
|
||||||
|
PitchShifter.* granular crossfade pitch shifter
|
||||||
|
HorizontLookAndFeel.* dark teal theme, skeuomorphic rotary knobs
|
||||||
|
Knob.* knob component (slider + caption + value readout)
|
||||||
|
SpectrumDisplay.* animated wet/dry spectrum analyser (FFT, timer-driven paint)
|
||||||
|
Presets.h factory presets
|
||||||
|
```
|
||||||
|
|
||||||
|
## Conventions
|
||||||
|
|
||||||
|
- Follow JUCE style: `lowerCamelCase` methods/variables, `UpperCamelCase`
|
||||||
|
classes, leading-underscore members in some files (match the file you edit).
|
||||||
|
- Match existing brace/paren style exactly (`juce::` type usage, trailing
|
||||||
|
space, tabs for indentation).
|
||||||
|
- No dynamic allocation in audio callbacks — the processor uses pre-sized
|
||||||
|
buffers and `juce::SmoothedValue` for per-sample parameter smoothing.
|
||||||
|
- All DSP is sample-rate independent: delay lengths, filters, and grain
|
||||||
|
windows scale with the sample rate.
|
||||||
|
- Only add source files after updating `target_sources(...)` in `CMakeLists.txt`.
|
||||||
|
- Do not add comments unless they explain a non-obvious DSP decision; the
|
||||||
|
existing code is mostly self-documenting.
|
||||||
|
- The UI is a dark teal hardware-rack style; new UI code should match the
|
||||||
|
existing palette in `HorizontLookAndFeel.h` / `SpectrumDisplay.cpp` rather
|
||||||
|
than introducing new themes.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue