chore: land janitor round 1 and graft integration

Round 1 findings and fixes, all previously uncommitted:
- FXProcessor per-slot DSP history repair (HEAD does not compile without it)
- SynthVoice::getModulationValue, editor control-lock guard
- ExactCompare.h naming the deliberate exact float comparisons
- KnobLookAndFeel replacing the never-installed SerumLookAndFeel
- 55 first-party compiler warnings to 0
- AGENT.md renamed to AGENTS.md across Source/
- graft repository context graph and its hooks
- JANITOR_TASKS.md and UI_UX_AUDIT.md records
This commit is contained in:
biggy committed 2026-10-06 08:50:45 +02:00
1 parent 5c942cad0c
commit e4cea300db
63 files changed
+2360 -805

No files matched your search

+7 -3
View File
@@ -25,6 +25,12 @@ public:
void prepare (double sampleRate, int blockSize, juce::AudioProcessorValueTreeState& apvts);
void reset();
// Ask for the DSP state to be cleared before the next block is rendered.
// Safe to call from the message thread while controlLock is held: the audio
// thread performs the reset in captureControls, so the DSP objects are only
// ever touched by the audio thread.
void requestReset() noexcept;
void processBlock (juce::AudioBuffer<float>& buffer,
juce::MidiBuffer& midi,
juce::AudioProcessorValueTreeState& apvts,
@@ -43,8 +49,6 @@ public:
const WavetableLibrary& getWavetables() const { return wavetables; }
void setLfoShapeData (int index, const std::vector<float>& data, int steps);
int getActiveVoiceCount() const { return activeVoiceCount.load (std::memory_order_relaxed); }
private:
std::array<SynthVoice, kNumVoices> voices;
std::array<LFO, kNumLfos> lfos, controlLfos;
@@ -53,6 +57,7 @@ private:
ModulationMatrix matrix, audioMatrix;
MacroControls macros, audioMacros;
juce::CriticalSection controlLock;
bool resetRequested = false; // guarded by controlLock
struct ParameterValue
{
@@ -67,7 +72,6 @@ private:
float pitchBend = 0.0f;
float modWheel = 0.0f;
juce::uint64 noteCounter = 0;
std::atomic<int> activeVoiceCount { 0 };
juce::AudioBuffer<float> mixBuffer;