DEEPPLUCK - MASTER IMPLEMENTATION SPECIFICATION
MILESTONE V0.4.0 - TRANSIENT & NOISE ENGINE
REVISION 1

Verbindlicher Entwicklungsauftrag für Codex
Dokumentstatus: vollständig, eigenständig, copy-ready
Zielsprache des Codes: Englisch
Zielsprache der Projektdokumentation: bestehende Projektsprache beibehalten

===============================================================================
0. DOKUMENTCHARAKTER UND AUFTRAG
===============================================================================

Dieses Dokument ist die vollständige und allein maßgebliche Implementierungs-
spezifikation für DeepPluck Milestone V0.4.0 - Transient & Noise Engine. Es ist
kein Patch, kein Nachtrag und keine lose Ideensammlung. Frühere Master-Prompts
sind historische Referenzen. Bei Widersprüchen gilt die in Abschnitt 2
definierte Priorität.

Du arbeitest als verantwortlicher C++-/JUCE-Audioentwickler im vorhandenen
lokalen Git-Repository von DeepPluck. Implementiere V0.4.0 vollständig auf
Basis des tatsächlich vorgefundenen und bestätigten V0.3.0-Stands.

Ziel ist eine kompakte, musikalische per-voice Transient-/Noise-Sektion für
emotionale moderne Deep-House-Plucks:

- ein sehr kurzer, kontrollierter Attack-Transient
- ein eigenständiger, weich gefilterter Noise-Layer
- beide Layer unabhängig aktivierbar
- pro Layer genau Level, Decay/Time und Tone
- passende, artefaktarme Parameter-Smoothing- und Live-Update-Verträge
- klare Einbindung in den vorhandenen Filter-, Amp- und Voice-Signalweg

Die Sektion soll dem Pluck mehr Anschlag, Textur, Intimität und
Wiedererkennungswert geben. Sie soll nicht aus DeepPluck einen allgemeinen
Noise-, Drum- oder Sound-Design-Synthesizer machen. Wenige große Sweet Spots
sind wichtiger als viele Varianten.

Arbeite selbstständig bis zur vollständigen automatisierbaren Definition of
Done. Erfinde keine Ergebnisse. Ein nicht selbst ausgeführter Hör-, GUI- oder
Cubase-Test ist exakt als

MANUAL VERIFICATION REQUIRED

zu kennzeichnen. Behaupte niemals einen erfolgreichen Build, Test, Benchmark,
Host-Test, Hörtest oder eine Sichtprüfung, wenn er nicht tatsächlich stattfand.

Keine Systeminstallation, kein Download, kein Push und keine Änderung außerhalb
des Repositorys. JUCE nicht verändern. Das VST3 nicht automatisch in einen
Systemordner installieren. Bestehende Benutzeränderungen niemals verwerfen,
verstecken, automatisch stashen oder ungefragt überschreiben.


===============================================================================
1. PROJECT VISION UND ENTWICKLUNGSPHILOSOPHIE
===============================================================================

DeepPluck ist ein spezialisiertes Softwareinstrument für inspirierende,
hochwertige Pluck-Sounds in Deep House, Melodic House, Organic House,
Progressive House und angrenzenden Stilen.

DeepPluck ist kein allgemeiner Synthesizer und keine Technologie-Demonstration.
Die Anzahl der Features ist kein Qualitätsmerkmal. Das Instrument soll warm,
weich, fokussiert, kontrolliert, elegant, emotional, modern und sofort spielbar
wirken.

Die neue Sektion muss:

- den Anfang einer Note deutlicher und lebendiger machen, ohne zu klicken
- dem Klang eine weiche, organische Luft- und Texturkomponente geben
- den charaktertragenden Mittenbereich des bestehenden Synth-Pfads erhalten
- scharfe, spröde, gläserne oder überhypte Höhen vermeiden
- Velocity, Dynamik und konservativen Headroom erhalten
- mit dem bestehenden 24-dB-Filter musikalisch interagieren
- mit kurzen und langen Amp-Hüllkurven vorhersehbar reagieren
- in kleinen Dosierungen sofort nützlich sein
- bei Bypass einen ehrlichen, click-freien A/B-Vergleich erlauben

Jede Entscheidung muss mindestens einem dieser Ziele dienen:

- bessere musikalische Ausdruckskraft
- bessere trockene Klangqualität
- klarerer Workflow
- höhere Stabilität oder Wartbarkeit

Bei zwei technisch korrekten Lösungen gewinnt die hörbar musikalischere
Lösung, sofern Realtime-Sicherheit, Stabilität und Kompatibilität gewahrt sind.
Mathematische Eleganz allein rechtfertigt keine schlechter klingende Lösung.

Verbindliche Priorität:

1. Sicherheit und Schutz vorhandener Arbeit
2. Realtime-Sicherheit
3. musikalische Qualität und Sound Manifest
4. technische Korrektheit und Stabilität
5. Rückwärts-, Automation-, Preset- und State-Kompatibilität
6. Wartbarkeit und Lesbarkeit
7. messbare Performance
8. Feature-Wachstum

Der trockene Grundklang hat Vorrang. Transient und Noise sind Bestandteile der
Klangerzeugung, keine Effekte und kein Ersatz für einen überzeugenden
Oszillator-, Filter- oder Envelope-Pfad.


===============================================================================
2. NORMATIVE DOKUMENTE UND PRIORITÄT
===============================================================================

Vor Planung, Codeänderung oder Build vollständig lesen:

- AGENTS.md
- Docs/Sound/DeepPluck_Sound_Manifest_v1.0.md
- README.md
- ARCHITECTURE.md
- Docs/DeepPluck_V0.3.0_Filter_Engine_MasterPrompt_Rev1.txt
- Docs/DeepPluck_V0.3.0_Filter_Engine_Implementation_Report.md
- Docs/DeepPluck_V0.2.0b_MasterPrompt_Rev2.txt
- Docs/DeepPluck_V0.2.0b_Implementation_Report.md
- vorhandene ältere Master-Prompts nur als Historie
- CMakeLists.txt
- alle produktiven Dateien unter Source/
- alle vorhandenen Tests und die CTest-Registrierung
- .gitignore

Das Sound Manifest ist ein normatives Produkt- und Klangdokument. Es ist keine
optionale Inspiration. Die neue Sektion muss insbesondere dessen Vorgaben zu
Sound Identity, Dynamics, Tonal Balance, Filter, CPU, GUI, Presets, Anti-Goals
und Quality Over Quantity erfüllen.

Priorität bei echten Widersprüchen:

1. Sicherheit, aktuelle Benutzeranweisung und bindende AGENTS.md
2. Sound Manifest für Produkt-, Klang- und Musikalitätsentscheidungen
3. diese Master-Spezifikation
4. validierte bestehende Architektur und Kompatibilitätsverträge
5. lokale JUCE-9-API und vorhandener Projektstil

Wenn eine technische Detailvorgabe nachweislich nicht zur lokalen JUCE-Version
oder zur validierten Architektur passt, wähle die kleinste fachlich
gleichwertige Lösung. Abweichung, Grund, Auswirkungen und Tests müssen im
Abschlussbericht stehen. Scope-Erweiterungen sind dadurch nicht erlaubt.

Der Abschlussbericht muss ausdrücklich beantworten:

Does this make DeepPluck a better instrument for emotional Deep House plucks?


===============================================================================
3. BESTÄTIGTER AUSGANGSZUSTAND V0.3.0
===============================================================================

V0.3.0 ist technisch gebaut, automatisiert verifiziert und vom Benutzer als
funktionsfähig bestätigt. Der reale Repository-Stand ist trotzdem vor Beginn
zu prüfen. Bekannter Referenzstand:

- Implementierungscommit 880c2de - DeepPluck V0.3.0 Filter Engine
- Berichtscommit e733d53 - Document V0.3.0 Filter Engine result
- tracked Working Tree am Abschluss sauber
- bekannte untracked historische Prompts und CubaseTest/ geschützt

Der bestätigte Stand umfasst:

- JUCE-9-CMake-Projekt für Windows x64
- VST3 und Standalone
- Instrument ohne Audioeingang, Stereoausgang, MIDI-In, kein MIDI-Out
- genau 16 vorab erzeugte Stimmen und genau einen DeepPluckSound
- samplegenaue MIDI-Unterteilung
- per Stimme eine bandbegrenzte PolyBLEP-Saw
- per Stimme einen nichtlinearen resonanten 4-Pol-/24-dB-Low-Pass
- Pre-Filter Drive, Resonance, Cutoff, Key Tracking und bipolaren Env Amount
- click-freien 10-ms-Filter-Bypass bei warm gehaltenem Filterzustand
- eine Amp- und eine unabhängige Filter-DeepPluckEnvelope pro Stimme
- sofortigen Release beider Envelopes bei Note-Off aus Attack, Decay und Sustain
- live wirksame Envelope-Zeiten einschließlich laufender Releases
- musikalisches, deterministisches Voice-Stealing
- lineare Velocity-Amplitude
- 20-ms-Tune- und Output-Gain-Smoothing
- einen validierten APVTS-Parameter-Snapshot pro Audioblock
- kompatible State-Migration aus V0.1/V0.2
- vier trockene Factory-Presets mit Custom-Zustand
- lokale Debug-/Release-Artefakte
- neun CTest-Suites in Debug und Release

Bestehender per-voice Signalpfad:

PolyBLEP Saw
    -> trockener Filter-Bypass-Zweig ---------------------------+
    -> Pre-Filter Drive -> 24-dB Low-Pass ----------------------+ Crossfade
       Cutoff = Base + Key Tracking + Filter Envelope
    -> Amp Envelope -> Velocity -> 0.08 Voice Gain
Stimmensumme -> geglätteter Output Gain -> Stereo Output

Bestätigte V0.3.0-Messwerte aus dem Implementierungsbericht:

- Filterflanke: 24.2165 dB/Oktave
- isolierter Max-Filter-Stresspeak: 1.23405, finite und bounded
- Default-16-Voice-Peak: 0.435055
- Factory-Preset-Peaks: 0.157052 bis 0.413761
- 16-Voice-Filter-Stresspeak: 0.294181
- Debug und Release: erfolgreich
- neun von neun CTest-Suites in beiden Konfigurationen: erfolgreich

Bestehende neun Suites:

- DeepPluck.parameters
- DeepPluck.oscillator
- DeepPluck.envelope
- DeepPluck.filter
- DeepPluck.filter_envelope
- DeepPluck.synthesiser
- DeepPluck.sample_accuracy
- DeepPluck.matrix
- DeepPluck.smoothing_stability

Diese Angaben sind Referenz, kein Reset-Auftrag. Der reale Stand hat Vorrang,
wenn er durch Repository, Tests und Dokumentation bestätigt wird. Alle V0.3.0-
Verträge sind Regression Contracts.


===============================================================================
4. LESSONS LEARNED UND VERBINDLICHE FOLGERUNGEN
===============================================================================

1. Die vorhandene Voice-, Snapshot-, Envelope- und Filterarchitektur ist
   stabil. Sie wird lokal erweitert und nicht neu geschrieben.

2. Plugin-Laden, Automation, State-Restore, Presets und Cubase-Projekt-Rückruf
   sind öffentliche Verträge. Neue Parameter werden angehängt; alte IDs und
   ihre Reihenfolge bleiben unverändert.

3. Neue Klangquellen gehören pro Stimme vor die Amp-Envelope. Ein globales
   Noise-Signal würde Noten, Velocity und Voice-Lifecycle unmusikalisch koppeln.

4. Transient und Noise sollen den vorhandenen Hauptfilter durchlaufen. Dadurch
   reagieren sie auf Cutoff, Resonance, Drive, Key Tracking und Filter Envelope
   wie ein zusammenhängendes Instrument.

5. Alte V0.3-Projekte dürfen durch fehlende V0.4-Parameter nicht ungefragt
   anders klingen. Legacy-States erhalten deshalb einen expliziten
   kompatibilitätsorientierten Bypass der beiden neuen Layer.

6. Ein frischer V0.4-Default darf und soll die neuen Layer musikalisch nutzen.
   Fresh defaults und Legacy-Migrationsdefaults sind bewusst verschieden und
   müssen eindeutig getestet und dokumentiert werden.

7. Ein kurzer Transient darf kein harter Ein-Sample-Impuls sein. Attack-
   Charakter ist erwünscht; digitale Clicks, DC und unkontrollierte Peaks sind
   es nicht.

8. Noise braucht definierte, reproduzierbare per-voice Zufälligkeit. Zeit- oder
   System-Entropy im Audiothread, identische korrelierte Voice-Sequenzen und
   nicht deterministische Tests sind nicht zulässig.

9. Decay-Parameter müssen musikalisch und live reagieren. Ein Wechsel darf
   weder die One-Shot-Envelope neu triggern noch ihren Pegel springen lassen.

10. Automatisierte Messungen prüfen Zeit, Spektrum, Headroom, Determinismus und
    Stabilität. Ob der Anschlag emotional und organisch wirkt, bleibt eine
    verpflichtende Hörentscheidung.


===============================================================================
5. BESTANDSAUFNAHME UND SCHUTZREGELN
===============================================================================

Vor jeder Änderung mindestens:

- git status --short, letzte Commits, unstaged und staged Diff erfassen
- Projektstruktur außerhalb generierter Verzeichnisse erfassen
- normative Dokumente und betroffenen Code vollständig lesen
- Parameterlayout, State-Migration, Presets, Voice-Lifecycle, MIDI-Aufteilung,
  Oszillator, beide Envelopes, Filter, Synthesiser, Processor, Editor und Tests
  verstehen
- vorhandene Build- und Artefaktkonventionen prüfen
- vorhandene Debug-/Release-Tests soweit sicher als Baseline laufen lassen
- Abweichungen zwischen dieser Spezifikation und realem Code notieren

Bekannte untracked historische Dateien und Cubase-Testdaten nicht in den
Milestone aufnehmen, verändern oder löschen, sofern sie nicht ausdrücklich zum
bestätigten Scope gehören. Insbesondere bestehende CubaseTest/-Inhalte und alte
Rev1-Prompts unangetastet lassen.

Keine Benutzeränderung zurücksetzen, automatisch stashen, ungefragt formatieren
oder in einen Milestone-Commit aufnehmen. Bei Überschneidungen den kleinsten
sicheren Patch wählen. Bei einer nicht sicher lösbaren Kollision stoppen und
den konkreten Konflikt melden.

Generierte Build-Dateien und lokale Artefakte niemals als Source committen.
Keine breitflächige Formatierung und kein Architektur-Rewrite.


===============================================================================
6. PRODUKTIDENTITÄT, VERSION UND KOMPATIBILITÄT
===============================================================================

Produktname: DeepPluck
Hersteller: ToneTrax
Bundle Identifier: de.tonetrax.deeppluck
Plugin-Typ: Instrument
Formate: VST3 und Standalone
Milestone: V0.4.0 - Transient & Noise Engine

Unverändert bewahren:

- Bundle Identifier
- PLUGIN_MANUFACTURER_CODE Tntx
- PLUGIN_CODE DpV1
- Plugin-Name und Produktname DeepPluck
- VST3-Identität und alle daraus abgeleiteten IDs
- Plugin-Typ, Kategorien, Buslayout und MIDI-Vertrag
- vorhandene Format- und State-Struktur
- alle bestehenden 16 Parameter-IDs, Typen, Bereiche, Defaults und Semantik
- Reihenfolge der bestehenden 16 Parameter im APVTS-Layout
- Namen und Reihenfolge der vier Factory-Presets

Cubase muss V0.4.0 als dasselbe Plugin erkennen. Keine neue Plugin-ID, kein
Parallelprodukt und kein inkompatibler State-Schema-Neustart.

CMake erhält die numerische Version 0.4.0. Sichtbare Entwicklungskennzeichnung,
falls im Projekt vorhanden: "Development Build V0.4.0". Beschreibung sinnvoll
auf den Transient-/Noise-Stand aktualisieren, ohne Identitätsfelder zu ändern.

Die stabilen vorhandenen Parameter-IDs bleiben exakt und in dieser Reihenfolge:

1. outputGain
2. masterTune
3. ampAttack
4. ampDecay
5. ampSustain
6. ampRelease
7. filterEnabled
8. filterCutoff
9. filterResonance
10. filterDrive
11. filterKeyTracking
12. filterEnvAmount
13. filterAttack
14. filterDecay
15. filterSustain
16. filterRelease

Keine vorhandene ID umbenennen, neu verwenden, verschieben oder semantisch
brechen. Die acht V0.4-IDs aus Abschnitt 16 werden ausschließlich danach
angehängt.


===============================================================================
7. STATE-, AUTOMATION- UND LEGACY-KOMPATIBILITÄTSVERTRAG
===============================================================================

State-Kompatibilität ist bindend:

- V0.1.0-, V0.2.0- und V0.3.0-States müssen weiterhin sicher laden.
- Alle vorhandenen Werte werden exakt nach dem bestehenden Merge-Vertrag
  übernommen.
- Ein vollständiger V0.4.0-State muss alle 24 Parameter deterministisch
  speichern und rückrufen.
- Unbekannte, ungültige oder nicht-finite Werte dürfen keinen Crash, NaN oder
  unbeschränkten Zustand erzeugen.
- Die vorhandene mergeRestoredState-Strategie nur minimal und gezielt erweitern.
- Alte State-Children niemals pauschal durch neue Defaults ersetzen.

Besonders wichtig: Legacy-Sound-Erhalt.

Wenn ein gültiger geladener State keinen einzigen der acht V0.4-Parameter
enthält, gilt er als Legacy-State. Für diesen State:

- transientEnabled wird false
- noiseEnabled wird false
- die übrigen sechs neuen Parameter erhalten ihre dokumentierten V0.4-Defaults
- alle vorhandenen V0.1/V0.2/V0.3-Werte bleiben unverändert
- der resultierende Audiopfad entspricht bei beendeten internen Crossfades dem
  V0.3.0-Signal innerhalb enger numerischer Toleranz

Wenn ein State mindestens einen V0.4-Parameter enthält, ist er kein Legacy-
State. Vorhandene V0.4-Werte werden übernommen; tatsächlich fehlende neue Werte
erhalten sichere dokumentierte Defaults. Partiell beschädigte States dürfen
nicht crashen und müssen im Test klar abgedeckt sein.

Ein frischer Plugin-Start ohne geladenen State verwendet dagegen die aktiven
V0.4-Defaults aus Abschnitt 16. Diese bewusste Differenz ist kein Fehler:

- Fresh V0.4 default: neue Layer musikalisch aktiv
- restored pre-V0.4 state: neue Layer deaktiviert, alter Klang bewahrt

Parameterautomation:

- alle vorhandenen Automationsspuren bleiben durch unveränderte IDs gültig
- acht neue IDs werden angehängt, niemals dazwischen eingefügt
- kein bestehender Parameter erhält eine neue Bedeutung oder Einheit
- alle neuen Parameter sind hostautomatisierbar, speicherbar und rückrufbar
- Bool-Bypasses sind click-frei geglättet, nicht hart geschaltet
- kontinuierliche Parameter reagieren ohne Reset oder Retrigger

Die genaue Legacy-Erkennung, der Sound-Erhalt und alle Abweichungen vom
bestehenden Merge-Code sind in ARCHITECTURE.md und im Bericht zu dokumentieren.


===============================================================================
8. MILESTONE-ZIEL UND USER EXPERIENCE
===============================================================================

Ein Musiker soll DeepPluck laden und sofort einen emotionalen, trockenen Pluck
mit klarer, aber weicher Artikulation hören. Die neue Sektion muss subtil genug
sein, um den V0.3-Kern zu bewahren, und deutlich genug, dass ihr musikalischer
Nutzen im A/B-Vergleich sofort verständlich ist.

Der Musiker soll mit genau zwei kompakten Layern:

- dem Anschlag einen kurzen, kontrollierten Fokus geben
- Luft, Textur und organische Rauheit dosieren
- die Länge beider Komponenten unabhängig bestimmen
- beide Komponenten von dunkel bis hell formen
- jeden Layer unabhängig und click-frei vergleichen

Die Oberfläche soll nicht nach einem Drum-Synth, Sampler oder Modulationssystem
wirken. Jeder Layer besitzt genau vier sichtbare Controls:

- On/Off
- Level
- Decay
- Tone

Keine zusätzlichen Mode-, Color-, Seed-, Pitch-, Pan-, Width-, Velocity-
Amount-, Routing- oder Envelope-Controls in diesem Milestone.


===============================================================================
9. VERBINDLICHER SCOPE UND LIEFERUMFANG
===============================================================================

Verbindlicher Scope:

1. eine kompakte per-voice Transient-/Noise-DSP-Komponente implementieren
2. einen kurzen, deterministischen Attack-Transient pro Note implementieren
3. einen separaten per-voice Noise-Layer implementieren
4. beide Layer unabhängig click-frei bypassbar machen
5. pro Layer Level, Decay und Tone implementieren
6. beide Layer vor dem bestehenden Filterpfad in die Stimme integrieren
7. beide Layer gemeinsam durch bestehende Amp-Envelope, Velocity und Voice Gain
8. passende Parameter-Smoothing- und Live-Decay-Verträge implementieren
9. deterministische, dekorrelierte und realtime-sichere Noise-Erzeugung
10. Defaults, GUI und alle vier bestehenden Factory-Presets erweitern
11. Legacy-State, Automation, Preset- und Plugin-Kompatibilität bewahren
12. Headroom, DC-Verhalten, Spektrum und Stabilität absichern
13. automatisierte DSP-, State-, Lifecycle- und Regressionstests ergänzen
14. Listening Acceptance Tests und Cubase-Validierung definieren/ausführen
15. Dokumentation, lokale Artefakte, Git und Abschlussbericht vervollständigen

Der Milestone ist erst fertig, wenn Implementierung, Tests, Dokumentation und
ehrliche Verifikation als zusammenhängendes Ergebnis vorliegen.


===============================================================================
10. ANTI-GOALS UND NICHT-ZIELE
===============================================================================

Nicht in V0.4.0 implementieren:

- zweiten Oszillator oder eine zweite dauerhaft tonale Klangquelle
- Unison, SuperSaw, Voice-Stacking, Detune oder Stereo-Spread
- Chorus, Delay, Reverb, Phaser, Flanger oder andere Effekte
- Distortion-/Saturation-Effekt außerhalb des bestehenden Filter-Drive
- Compressor, Limiter, Exciter, Maximizer oder Hard Clipper
- Samples, Sample-Import, Multisamples oder externe Audio-Assets
- mehrere Noise-Farben, Noise-Typ-Menü oder Sample-and-Hold
- Transient-Pitch-, Tune-, Key-Track- oder Wellenformauswahl
- Noise-Pan, Width oder Stereo-Randomization
- zusätzliche Transient-/Noise-ADSRs
- Velocity-Routing-Regler oder Modulationsmatrix
- LFO, Macros, Aftertouch, MPE oder frei konfigurierbares Routing
- zusätzliche Filtermodelle oder Filtertypen
- Oversampling als neues Subsystem
- Preset-Browser, externe Preset-Dateien oder neue Presetanzahl
- GUI-Redesign, Analyzer, Meter, Visualizer oder Animationen
- Architektur-Rewrite oder parallele Engine
- generischen Synthesizer-Funktionsumfang

Interne feste Rampen, DC-Schutz, Filter oder Kalibrierungsfaktoren zur
Erfüllung der Klang- und Sicherheitsverträge sind zulässig. Sie sind keine
zusätzlichen Benutzerfeatures und müssen dokumentiert werden.

Keine versteckten Sound-Features. Wenn ein Problem nur durch ein Out-of-Scope-
Feature lösbar scheint, Ursache neu analysieren und die kleinste innerhalb des
Scopes korrekte Lösung wählen oder die Grenze dokumentieren.


===============================================================================
11. VERBINDLICHE ARCHITEKTUR UND SIGNALFLUSS
===============================================================================

Bestehende Verantwortungstrennung erhalten und lokal erweitern:

MIDI
  -> DeepPluckAudioProcessor
  -> DeepPluckSynthesiser, maximal 16 Stimmen
  -> DeepPluckVoice
       PolyBLEP Saw ---------------------------------------------+
       Attack Transient -> lokales Tone-Shaping -> One-Shot Env -+ Mix
       White Noise -> DC-Schutz/Tone-Filter -> One-Shot Env -----+
          jeder Layer mit eigenem Level und Bypass-Smoother
       -> trockener Hauptfilter-Zweig ----------------------------+
       -> bestehender Pre-Filter Drive -> 24-dB Low-Pass --------+ Filter Crossfade
          Cutoff = Base + Key Tracking + Filter Envelope
       -> Amp Envelope
       -> Velocity
       -> bestehender fester Voice Gain 0.08
  -> Stereo-Stimmensumme
  -> geglätteter globaler Output Gain
  -> Stereo Output

Verbindliche Routing-Aussagen:

- Transient und Noise sind per Stimme, niemals global.
- Beide werden vor dem bestehenden Dry/Filter-Branch in den Saw gemischt.
- Bei Filter On laufen Saw, Transient und Noise gemeinsam durch Drive und
  24-dB-Filter.
- Bei Filter Off läuft die komplette Quellensumme am Drive/Filter vorbei.
- Der bestehende Filter-Bypass bleibt ein Crossfade zwischen vollständiger
  trockener Quellensumme und vollständiger bearbeiteter Quellensumme.
- Die Amp-Envelope multipliziert die vollständige gefilterte/bypasste Stimme.
- Velocity und Voice Gain wirken weiterhin danach auf die vollständige Stimme.
- Kein Layer darf Amp-, Filter- oder Voice-Lifecycle umgehen.
- Kein Layer erhält einen separaten Ausgang oder globalen Post-Sum-Pfad.

Empfohlene klare Klassenverantwortung:

- Eine fokussierte Klasse wie DeepPluckTransientNoise oder zwei sehr kleine,
  klar getrennte DSP-Klassen kapseln Quellen, One-Shot-Envelopes, Tone-Shaping,
  PRNG, Bypass und Reset.
- DeepPluckVoice besitzt die per-voice Instanz(en) und orchestriert den Mix.
- DeepPluckParameters definiert IDs, Bereiche, Defaults, Cache und Snapshot.
- DeepPluckPresets enthält vollständige 24-Parameter-Zustände.
- PluginProcessor liest jeden Hostparameter höchstens einmal pro Block.
- PluginEditor zeigt und bindet Parameter, enthält aber keine DSP-Logik.

Keine generische Modulations-Engine, kein generischer Sampler und kein zweiter
Synthesiser. Kleine Wiederverwendung ist erwünscht; eine unpassende
Generalisierung der bestehenden ADSR ist nicht erforderlich.


===============================================================================
12. ATTACK-TRANSIENT - KLANG- UND DSP-VERTRAG
===============================================================================

Der Attack-Transient ist eine extrem kurze, eigenständig geformte per-voice
Anschlagskomponente. Er ist kein zweiter Oszillator und keine dauerhaft tonale
Stimme.

Klangziel:

- fokussierter Beginn statt harter Click
- organisch, weich, intim und hochwertig
- hörbar bei moderatem Level, aber nicht dominierend im Default
- mehr Definition auf kleinen Lautsprechern ohne künstliche Exciter-Höhen
- keine Snare-, Hi-Hat-, Laser-, Zap- oder Festival-EDM-Anmutung

Quellenvertrag:

- vollständig intern erzeugt; keine Samples oder externen Assets
- deterministisch für identischen vorbereiteten Testzustand
- bipolar und praktisch DC-frei
- inhärent bandbegrenzt oder fachlich ausreichend alias-arm
- kein idealer harter Ein-Sample-Deltaimpuls
- kein unbeschränkter Pegel und keine diskontinuierliche harte Kante
- keine dauerhaft hörbare periodische Tonquelle nach Ende des Decays

Bevorzugte fachliche Form ist ein kurzer bipolarer Wavelet-/Click-Burst oder
eine gleichwertige bandbegrenzte Transient-Anregung mit sehr kurzer fester
Micro-Fade-In-Phase. Eine kurze Sinus-/Bipolar-Wavelet-Struktur oder ein
gefilterter bipolarer Impuls ist zulässig. Die konkrete Form ist anhand von
Hörtest, DC-, Spektral- und Peak-Vertrag auszuwählen und zu dokumentieren.

Nicht zulässig:

- ungefilterter einzelner Full-Scale-Sampleimpuls
- ein frei laufender zweiter Oszillator
- eine neue frei stimm- oder keytrackbare Tonquelle
- zufällige Levelspitzen ohne deterministische Obergrenze
- eine harte Sample-Clamp als normale Pegelstrategie

Transient Tone:

- normalisierter musikalischer Parameter 0.0 bis 1.0
- 0.0 bedeutet dunkel/weich, 1.0 hell/präsent
- die Abbildung darf die spektrale Lage oder lokale Filterung steuern
- steigende Werte erhöhen den spektralen Schwerpunkt monoton oder klar
  fachlich nachvollziehbar
- der obere Bereich bleibt weich und darf nicht spröde oder aliasend werden
- kein zusätzlicher Hostparameter für Frequenz, Pitch oder Filtertyp

Der Transient beginnt bei jedem Note-On am exakten MIDI-Sampleoffset. Eine
kurze interne feste Micro-Fade-In-Zeit von ungefähr 0.1 bis 0.5 ms ist zulässig
und empfohlen, sofern der Anschlag klar bleibt. Ihre genaue Dauer ist kein
Hostparameter und muss dokumentiert werden.


===============================================================================
13. NOISE-LAYER - KLANG- UND DSP-VERTRAG
===============================================================================

Der Noise-Layer ist eine eigenständige per-voice Texturkomponente. Er ergänzt
Luft, organische Rauheit und Anschlagskörper. Er ist keine globale Noise-Spur
und kein Effekt.

Quellenvertrag:

- per-voice pseudozufälliges weißes Noise als Ausgangsbasis
- Samples immer finite und sicher auf einen dokumentierten Bereich begrenzt
- statistisch annähernd null Mittelwert
- keine hörbare DC-Komponente oder langsame Offset-Drift
- fester DC-Schutz/High-Pass ist zulässig und empfohlen
- lokales musikalisches Tone-Filtering vor der Hauptfiltersektion
- keine identische Samplefolge gleichzeitig klingender Stimmen
- keine Systemzeit, Random Device, Datei- oder OS-Entropy im Audiothread
- keine Stereo-Randomization; bestehender stabiler Mono-per-voice-Vertrag bleibt

Noise Tone:

- normalisierter musikalischer Parameter 0.0 bis 1.0
- 0.0 bedeutet dunkel/gedämpft, 1.0 hell/luftig
- bevorzugt steuert Tone einen stabilen ein- oder zweipoligen Low-Pass oder eine
  fachlich gleichwertige kompakte Filterung
- die interne Grenzfrequenz wird logarithmisch und sample-rate-sicher abgebildet
- empfohlener nutzbarer Bereich ungefähr 500 Hz bis 16 kHz, begrenzt durch
  min(interne Obergrenze, 0.45 * sampleRate)
- steigende Werte erhöhen den spektralen Schwerpunkt klar messbar
- auch bei Tone 1 bleiben die Höhen fein und nicht kratzig

Ein fester sehr tiefer DC-/Rumble-Schutz, zum Beispiel im Bereich 20 bis 100 Hz,
ist zulässig. Er ist kein zusätzlicher Benutzerparameter. Alle Filterzustände
müssen per Voice vorbereitet, zurückgesetzt und denormal-sicher sein.


===============================================================================
14. ONE-SHOT-ENVELOPES, DECAY-SEMANTIK UND LIVE-UPDATE
===============================================================================

Transient und Noise besitzen jeweils eine unabhängige, einfache One-Shot-
Envelope. Keine zusätzliche ADSR und kein Sustain.

Stages:

- idle
- feste interne micro attack/fade-in, falls für Click-Schutz benötigt
- decay
- finished/idle

Verbindliche Decay-Semantik:

- Der Hostparameter bezeichnet die Zeit vom vollen One-Shot-Pegel bis zu
  höchstens -60 dB Amplitude, also <= 0.001 des Ausgangspegels.
- Danach darf der Layer deterministisch auf exakt 0 gesetzt und idle werden.
- Die Zeitdefinition bleibt bei 44.1, 48 und 96 kHz innerhalb einer
  dokumentierten engen Toleranz gleich.
- Der Verlauf ist monoton fallend, weich und finite.
- Keine exp()/pow()-Neuberechnung pro Sample; Koeffizienten nur bei prepare,
  Parameterübernahme, Trigger oder erforderlichem Segmentwechsel berechnen.
- Keine Denormals und kein unendlich langer numerischer Tail.

Live-Änderung während eines aktiven Decays:

- kürzer: vom exakt aktuellen Wert aus weich schneller zu 0
- länger: vom exakt aktuellen Wert aus weich langsamer zu 0
- kein Retrigger
- kein Sprung zu 1 oder einem früheren Wert
- keine Pegelerhöhung allein durch Zeitänderung
- kein Wechsel zurück in eine Attack-Phase
- keine Diskontinuität oder NaN bei Minimal-/Maximalwert

Die Decay-Parameter werden semantisch live übernommen. Sie dürfen nicht durch
einen simplen zusätzlichen Parameter-Ramp so verschmiert werden, dass die
definierte One-Shot-Zeit unvorhersehbar wird.

Note-Off-Vertrag:

- One-Shot-Envelopes werden bei Note-Off nicht neu gestartet.
- Sie dürfen intern weiterlaufen, solange die Voice aktiv ist.
- Der hörbare Gesamtpegel folgt jedoch sofort dem bestehenden Amp-Envelope-
  Release am samplegenauen Note-Off-Offset.
- Gleichzeitig folgt der vorhandene Hauptfilter weiter seinem bestätigten
  Filter-Envelope-Release.
- Ein Layer darf Note-Off weder verzögern noch eine Voice am Leben halten.

Die Amp-Envelope bleibt alleinige Lifecycle-Autorität der Voice. Das Ende eines
Transient-/Noise-Decays darf eine Voice nicht clearen. Umgekehrt müssen Hard
Stop und Voice Reuse alle neuen Zustände sofort sicher resetten.


===============================================================================
15. INTERAKTION MIT AMP- UND FILTER-ENVELOPES
===============================================================================

Die Interaktion ist fest definiert und benötigt keine Routing-Parameter.

Amp-Envelope:

- multipliziert Saw, Transient und Noise gemeinsam
- ein sehr kurzer Amp Attack lässt den Transient klar hervortreten
- ein langer Amp Attack blendet den kurzen Transient natürlicherweise aus
- das ist beabsichtigtes musikalisches Verhalten, kein Grund für einen Bypass
  der Amp-Envelope
- Amp Decay, Sustain und Release kontrollieren den hörbaren Gesamtlifecycle
- die bestätigten Live-Update- und sofortigen Note-Off-Verträge bleiben exakt

Filter-Envelope und Hauptfilter:

- bei filterEnabled=true durchlaufen alle drei Quellen denselben Drive und
  24-dB-Filter
- die Filter Envelope moduliert dadurch Transient und Noise gemeinsam mit Saw
- positive Env Amounts dürfen den Anschlag öffnen, negative ihn schließen
- Key Tracking und Cutoff wirken auf die vollständige Quellensumme
- bei filterEnabled=false wirkt die Filter Envelope hörbar auf keine Quelle;
  die lokalen Tone-Stufen der neuen Layer bleiben jedoch aktiv
- der Filterzustand bleibt wie in V0.3 warm und click-frei

Keine doppelte Filter-Envelope pro Layer, kein eigener Main-Cutoff pro Layer und
kein Layer-Routing-Schalter. Die lokalen Tone-Controls bestimmen die
Quellenfarbe; der bestehende Hauptfilter bestimmt die gemeinsame musikalische
Formung.


===============================================================================
16. PARAMETER, BEREICHE, DEFAULTS UND STABILE IDs
===============================================================================

Alle 16 vorhandenen Parameter bleiben exakt unverändert. Folgende acht neuen
Parameter werden in exakt dieser Reihenfolge angehängt:

17. transientEnabled
    Typ: Bool
    Host-Name: Transient
    Default bei frischem V0.4-Start: true
    Legacy-State-Default: false

18. transientLevel
    Typ: Float
    Host-Name: Transient Level
    Bereich: -60.0 bis 0.0 dB
    Default: -18.0 dB
    Schrittweite: höchstens 0.1 dB

19. transientDecay
    Typ: Float
    Host-Name: Transient Decay
    Bereich: 0.001 bis 0.100 s
    Default: 0.012 s
    GUI-/Host-Skalierung: musikalisch sinnvoll logarithmisch/skewed
    Semantik: Zeit bis <= -60 dB Envelope-Amplitude

20. transientTone
    Typ: Float
    Host-Name: Transient Tone
    Bereich: 0.0 bis 1.0
    Default: 0.55
    Anzeige: 0 bis 100 Prozent

21. noiseEnabled
    Typ: Bool
    Host-Name: Noise
    Default bei frischem V0.4-Start: true
    Legacy-State-Default: false

22. noiseLevel
    Typ: Float
    Host-Name: Noise Level
    Bereich: -60.0 bis 0.0 dB
    Default: -27.0 dB
    Schrittweite: höchstens 0.1 dB

23. noiseDecay
    Typ: Float
    Host-Name: Noise Decay
    Bereich: 0.005 bis 1.500 s
    Default: 0.120 s
    GUI-/Host-Skalierung: musikalisch sinnvoll logarithmisch/skewed
    Semantik: Zeit bis <= -60 dB Envelope-Amplitude

24. noiseTone
    Typ: Float
    Host-Name: Noise Tone
    Bereich: 0.0 bis 1.0
    Default: 0.35
    Anzeige: 0 bis 100 Prozent

Parameterregeln:

- IDs exakt wie angegeben, englisch, camelCase und dauerhaft stabil
- ParameterID-Version wie im bestehenden Layout beibehalten
- alle Parameter hostautomatisierbar, speicherbar und rückrufbar
- keine IDs für interne Fade-Zeit, PRNG-Seed, Filterfrequenzen,
  Kalibrierungsfaktoren oder Voice Gain
- Parameterpointer außerhalb des Hot Path binden
- jeden Hostparameter pro Audioblock höchstens einmal atomar laden
- Snapshot bleibt vollständig validiert und trivial kopierbar
- nicht-finite Werte sicher ersetzen und technische Grenzen clampen
- neue IDs ausschließlich nach filterRelease anhängen
- alte Automationsindizes und IDs nicht verschieben

Level-Semantik:

- 0 dB bedeutet maximalen kalibrierten Layer-Pegel, nicht zwingend numerische
  Unity gegenüber der Saw.
- -60 dB ist sehr leise, aber der Bool-Bypass ist der garantierte exakte Mute.
- Quellen müssen intern auf einen dokumentierten, bounded Bereich kalibriert
  werden.
- Kalibrierung darf musikalisches Gain-Staging sichern, aber den gesamten
  Reglerbereich nicht unhörbar machen.
- Kein automatischer Makeup Gain oder Lautheitsnormalizer.

Die Defaults sind verbindliche Startwerte. Kleine Hörkorrekturen innerhalb der
festen Bereiche sind nur zulässig, wenn APVTS-Defaults, Deep Pluck, Presets,
Dokumentation und Tests gemeinsam aktualisiert und im Bericht begründet werden.
IDs und Bereiche dürfen nicht informell geändert werden.


===============================================================================
17. PARAMETER-SMOOTHING, BYPASS UND AUTOMATION
===============================================================================

Kontinuierliche Parameter dürfen bei GUI-Bedienung, Presetwechsel oder
Automation keine Clicks, Zipper-Geräusche oder ungebremsten Pegelsprünge
erzeugen.

Verbindliche Zielzeiten:

- transientEnabled: 5 ms interner Layer-Crossfade
- transientLevel: 10 ms, Zielgain aus dB außerhalb der Sample-Hot-Loop bilden
- transientTone: 10 ms im fachlich richtigen Frequenz-/Klangraum
- noiseEnabled: 5 ms interner Layer-Crossfade
- noiseLevel: 20 ms, Zielgain aus dB außerhalb der Sample-Hot-Loop bilden
- noiseTone: 20 ms, bei Filterfrequenz im logarithmischen Raum
- transientDecay: Live-One-Shot-Vertrag aus Abschnitt 14
- noiseDecay: Live-One-Shot-Vertrag aus Abschnitt 14

Bestehende Smoothing-Zeiten für Filter, Tune und Output bleiben unverändert.

Bypass-Vertrag pro Layer:

- Off bedeutet nach beendetem 5-ms-Fade exakt keinen Beitrag dieses Layers.
- On bedeutet den vollständig berechneten Layerbeitrag.
- Umschalten erzeugt keinen Click oder harten Pegelsprung.
- mehrfaches schnelles Umschalten setzt vom aktuellen Mixwert fort.
- Einschalten während einer laufenden Note retriggert den Layer nicht.
- Wenn die One-Shot-Envelope bereits beendet ist, bleibt Einschalten bis zum
  nächsten Note-On still.
- Wenn sie noch aktiv ist, wird nur der aktuelle Rest des Layers eingeblendet.
- Bypass ändert weder Amp-/Filter-Envelope noch Voice-Lifecycle.
- Layerzustände dürfen zur kohärenten Reaktivierung auch bei Off intern
  weiterlaufen; dies ist die bevorzugte einfache Lösung.

Smoothing-Verträge:

- prepare setzt Current und Target deterministisch auf den aktuellen Parameter
- Fresh Start und Legacy Restore initialisieren Bypass-Zustände ohne ungewollten
  Start-Click oder unnötigen Übergang vom falschen Zustand
- Note-On darf keinen alten Ramp-Zustand der vorherigen Voice übernehmen
- aktive Stimmen reagieren auf Automation ohne Quell-, Filter- oder Envelope-
  Reset
- neue Stimmen starten mit dem aktuellen globalen Parameterzustand
- schnelle Automation bleibt finite und bounded
- Zeitkonstanten sind in Sekunden und sample-rate-unabhängig
- Blockgrößenänderungen verändern die Zeiten nicht
- keine atomare Parameterabfrage pro Sample

Host-samplegenaue Parameterautomation wird nicht neu erfunden, wenn die
vorhandene Architektur Parameter pro Block liefert. MIDI bleibt wie bisher
samplegenau. Diese Grenze ehrlich dokumentieren.


===============================================================================
18. DETERMINISTISCHE NOISE-ERZEUGUNG UND SEEDING
===============================================================================

Verwende einen kleinen, hochwertigen, bounded und allokationsfreien PRNG, zum
Beispiel xorshift/PCG oder fachlich gleichwertig. Kein std::random_device und
keine Systemzeit im Audiothread.

Seed-Vertrag:

- jede der 16 Voices besitzt eigenen PRNG-Zustand
- Seed ist niemals der verbotene Nullzustand des gewählten Algorithmus
- gleichzeitige Stimmen erhalten unterschiedliche Sequenzen
- der Seed darf Voice-Index, MIDI-Note und einen bounded Note-On-Zähler mischen
- nach prepare/reset ist ein definierter Test-Render reproduzierbar
- wiederholte reale Note-Ons dürfen musikalisch variieren, bleiben aber aus
  dem internen Zustand heraus deterministisch
- Voice-Stealing und Reuse übernehmen keinen uninitialisierten Fremdzustand
- keine globale mutable PRNG-Instanz mit Race- oder Kopplungsrisiko

Qualitätsverträge:

- ausreichend lange Testsequenz hat Mittelwert nahe 0
- RMS/Energie ist finite und in dokumentierter Toleranz stabil
- zwei gleichzeitig klingende Voices sind nicht sampleidentisch
- ihre normierte Korrelation bleibt unter einer fachlich begründeten Schwelle
- Tone-Filterung und Decay dürfen keinen relevanten DC-Offset erzeugen

Der PRNG ist kein Benutzerfeature. Kein Seed-Parameter und keine Randomize-
Schaltfläche in V0.4.0.


===============================================================================
19. VOICE-LIFECYCLE, RESET, RETRIGGER UND VOICE-STEALING
===============================================================================

Die bestehende 16-Voice-Architektur und das musikalische Voice-Stealing bleiben
erhalten.

Bei prepare:

- alle sample-rate-abhängigen Filter, Envelopes und Smoother vorbereiten
- PRNGs deterministisch und voice-spezifisch initialisieren
- alle Layerzustände finite, idle und still setzen
- Current/Target der Parameter fachlich korrekt initialisieren

Bei Note-On am exakten MIDI-Offset:

- Oszillator wie bisher starten
- bestehenden Hauptfilterzustand wie bisher resetten
- Amp- und Filter-Envelope wie bisher triggern
- Transient- und Noise-One-Shot exakt an diesem Offset triggern
- lokale Tone-Filter in einen definierten Zustand bringen
- aktuelle Parameterwerte ohne alten Smoother-Rest übernehmen
- keinen Layerzustand einer gestohlenen oder früheren Note übernehmen

Bei normalem Note-Off:

- Amp- und Filter-Envelope wie bestätigt sofort in Release schicken
- Transient/Noise nicht neu triggern und keine Voice verlängern
- vollständige Stimme folgt sofort dem Amp-Release
- Voice erst clearen, wenn der bestehende Amp-Lifecycle beendet ist

Bei Hard Stop oder allNotesOff ohne Tail:

- beide ADSRs, beide One-Shots, Tone-Filter, PRNG-relevante aktuelle
  Ausgabewerte, Bypass-Smoother und Hauptfilter sicher resetten
- bestehende click-arme Residual-Tail-Strategie erhalten
- keine hängenden Stimmen oder Noise-Reste

Voice-Stealing-Priorität und deterministischer Tie-Break bleiben unverändert.
Der neue hörbare Layerbeitrag darf für die bestehende Residual-Tail-Strategie
berücksichtigt werden, wenn dies notwendig ist. Jede Änderung am Stealing muss
minimal, begründet und separat regressionsgetestet sein.


===============================================================================
20. HEADROOM, PEGEL, DC UND DYNAMIK
===============================================================================

Transient und Noise dürfen den bestätigten dynamischen und konservativen
Charakter nicht zerstören.

Verträge:

- kein Limiter, Compressor, Hard Clipper oder versteckter Maximizer
- bestehender fester Voice Gain 0.08 bleibt grundsätzlich unverändert
- eine Änderung dieses Gains ist nur bei nachgewiesener Unvermeidbarkeit,
  vollständiger Re-Kalibrierung und dokumentiertem Regressionstest zulässig
- Velocity bleibt ungefähr linear im gemeinsamen Amp-Pfad
- Output Gain und sein 20-ms-Smoothing bleiben erhalten
- Fresh Default und alle V0.4-Factory-Presets: 16-Voice-Peak <= 0.95
- Legacy-State mit beiden Layern Off reproduziert V0.3-Headroom und -Signal
- keine NaN/Inf bei Maximalparametern oder Stress-Sequenzen
- keine unbegründete globale Pegelanhebung
- Transient darf Attack-Energie erhöhen, aber keinen unkontrollierten Spike
  erzeugen
- Noise darf den RMS-Pegel erhöhen, aber nicht den Saw-/Mittenkern verdecken
- jede Einzelquelle und die Quellensumme bleiben bounded
- DC-Mittelwert jeder neuen Quelle und des Gesamtoutputs bleibt innerhalb einer
  fachlich engen, dokumentierten Toleranz

Factory-Headroom und technischer Extrem-Stress sind getrennte Tests. Bei allen
neuen Levels auf 0 dB, maximalem Noise Decay, hellstem Tone, maximaler
Filterresonanz/Drive und 16 Stimmen muss das Ergebnis finite und bounded bleiben.
Eine dokumentierte technische Stressgrenze darf über 0.95 liegen, darf aber
keine instabile Engine oder harte Clamp verdecken.

Die Layerquellen dürfen intern mit festen, dokumentierten Kalibrierungsfaktoren
normalisiert werden. Diese Faktoren müssen aus Peak/RMS, Hörbalance und
Headroom begründet werden, nicht aus dem Wunsch nach künstlicher Lautheit.


===============================================================================
21. FACTORY-PRESETS UND DEFAULT SOUND
===============================================================================

Die vier bestehenden Factory-Presets bleiben in Name, Reihenfolge und allen 16
V0.3-Parameterwerten unverändert:

1. Deep Pluck
   Existing V0.3 values:
   output -3.0 dB, tune 440 Hz
   Amp 0.003 / 0.320 / 0.000 / 0.180 s
   Filter On, 1800 Hz, resonance 0.18, drive 3.0 dB,
   key tracking 0.35, env amount +2.50 oct
   Filter Env 0.002 / 0.280 / 0.000 / 0.180 s

   New V0.4 values:
   Transient On, level -18.0 dB, decay 0.012 s, tone 0.55
   Noise On, level -27.0 dB, decay 0.120 s, tone 0.35

2. Soft Pluck
   Existing V0.3 values:
   output -3.0 dB, tune 440 Hz
   Amp 0.012 / 0.450 / 0.020 / 0.280 s
   Filter On, 1100 Hz, resonance 0.12, drive 2.0 dB,
   key tracking 0.30, env amount +1.75 oct
   Filter Env 0.008 / 0.420 / 0.020 / 0.280 s

   New V0.4 values:
   Transient On, level -24.0 dB, decay 0.020 s, tone 0.35
   Noise On, level -25.0 dB, decay 0.220 s, tone 0.25

3. Tight Pluck
   Existing V0.3 values:
   output -2.5 dB, tune 440 Hz
   Amp 0.001 / 0.160 / 0.000 / 0.075 s
   Filter On, 2400 Hz, resonance 0.22, drive 4.0 dB,
   key tracking 0.45, env amount +3.20 oct
   Filter Env 0.001 / 0.140 / 0.000 / 0.075 s

   New V0.4 values:
   Transient On, level -13.0 dB, decay 0.006 s, tone 0.72
   Noise On, level -32.0 dB, decay 0.055 s, tone 0.48

4. Long Pluck
   Existing V0.3 values:
   output -4.0 dB, tune 440 Hz
   Amp 0.006 / 0.700 / 0.030 / 0.450 s
   Filter On, 1500 Hz, resonance 0.25, drive 3.5 dB,
   key tracking 0.40, env amount +2.20 oct
   Filter Env 0.006 / 0.650 / 0.030 / 0.450 s

   New V0.4 values:
   Transient On, level -21.0 dB, decay 0.016 s, tone 0.48
   Noise On, level -24.0 dB, decay 0.320 s, tone 0.30

Preset-Verträge:

- keine neuen Presetnamen und keine geänderte Reihenfolge
- vorhandene 16 Werte exakt bewahren
- acht neue Werte pro Preset explizit und vollständig setzen
- Deep Pluck entspricht exakt allen Fresh-V0.4-APVTS-Defaults
- Presetwechsel setzt alle 24 Parameter, nie nur eine Teilmenge
- Änderung eines beliebigen der 24 Parameter setzt Auswahl auf Custom
- vollständiger Factory-Zustand wird wieder als passendes Preset erkannt
- ein Legacy-V0.3-State mit Layern Off darf korrekt als Custom erscheinen,
  weil er nicht dem neuen vollständigen Factory-Zustand entspricht
- Presetwechsel während Audio bleibt click-frei, finite und ohne Retrigger
- alle Presets bleiben trocken, dynamisch und ohne versteckte Lautheitstricks
- alle erfüllen den definierten Factory-Headroom

Finale kleine Hörkorrekturen der acht neuen Werte sind nur nach tatsächlicher
Hörabnahme zulässig. Sie müssen gemeinsam in Defaults, Presetcode,
Dokumentation und Tests aktualisiert und im Bericht begründet werden. Die 16
bestehenden V0.3-Werte bleiben unverändert.


===============================================================================
22. GUI-ANFORDERUNGEN
===============================================================================

Die bestehende ruhige Entwicklungs-GUI minimal und kompakt erweitern. Kein
Redesign.

Neue Gruppe: TRANSIENT & NOISE

Transient-Zeile:

- On/Off
- Level
- Decay
- Tone

Noise-Zeile:

- On/Off
- Level
- Decay
- Tone

Anforderungen:

- ausschließlich APVTS-Attachments; keine DSP-Logik im Editor
- bestehende Output-, Amp-, Filter-, Filter-Env- und Preset-Controls erhalten
- beide Layer visuell getrennt, aber als eine kompakte Sektion gruppiert
- verständliche Labels, dB-/s-/Prozent-Anzeigen
- Decay musikalisch/logarithmisch bedienbar
- Bypass-Zustand visuell ruhig als inaktiv erkennbar
- Controls bei Bypass weiterhin gebunden und editierbar; keine Werte löschen
- Preset-Custom-Verhalten korrekt
- keine Mode-Menüs, Unterseiten oder Advanced-Sektion
- keine Animation, kein Analyzer, kein Meter und kein dekoratives Feature
- keine unnötige Vergrößerung oder visuelle Überlastung
- bei üblichen Windows-DPI-Skalierungen vollständig sichtbar und bedienbar

Die sichtbare GUI muss manuell geprüft werden. Ein erfolgreicher Build ersetzt
keine Sichtprüfung.


===============================================================================
23. REALTIME-, C++20- UND CODEQUALITÄTSREGELN
===============================================================================

Im Audiothread und in jeder Sample-Schleife verboten:

- dynamische Speicherallokation oder Freigabe
- Locks, Mutexes, Waits oder blockierende Aufrufe
- Datei-, Netzwerk-, Logging- oder Konsolenzugriff
- ValueTree-Suche oder Stringarbeit
- Parameter-Lookup nach ID
- std::random_device, Systemzeit oder OS-Entropy
- Exceptions als Kontrollfluss
- unbeschränkte Schleifen
- wiederholte Atomics pro Parameter und Sample
- Aufbau, Wachstum oder Reallokation von Containern

Verbindlich:

- C++20 und vorhandener Code-Stil
- offizielle JUCE-9-CMake-API
- RAII, klare Ownership und kleine Verantwortungsbereiche
- noexcept für geeignete DSP-Hot-Path-Funktionen
- feste, vorab erzeugte Voice-/DSP-Strukturen
- Parameter-Cache und Block-Snapshot erweitern, nicht umgehen
- nicht-finite Eingaben defensiv behandeln
- Denormals verhindern oder sicher flushen
- keine unnötigen Kopien großer Buffer
- keine UB, Out-of-bounds-Zugriffe oder Race Conditions
- Debug und Release ohne neue relevante Warnungen
- Kommentare erklären Gründe, Gleichungen, Seeding und nicht offensichtliche
  Verträge, nicht triviale Syntax

Transzendentale oder Koeffizientenberechnungen nur bei prepare, Snapshot-
Änderung, Trigger oder Segmentgrenze, soweit hörbar möglich. Per-Sample-Arbeit
muss bounded und direkt klanglich begründet sein.


===============================================================================
24. AUTOMATISIERTE TESTS
===============================================================================

Alle bestehenden neun Suites und Assertions bleiben aktiv. Tests nicht
abschwächen, löschen oder durch großzügige Toleranzen bedeutungslos machen.

Mindestens zwei neue einzeln selektierbare Suites registrieren:

- DeepPluck.transient_noise
- DeepPluck.transient_noise_integration

Damit werden mindestens elf Suites in Debug und Release erwartet, sofern der
reale Testaufbau nicht nachweislich eine gleich klare andere Aufteilung verlangt.

Mindestens folgende Verträge automatisiert prüfen:

A. Parameter und Layout

- alle 16 alten IDs existieren unverändert, in unveränderter Reihenfolge
- acht neue IDs existieren exakt einmal und sind hinten angehängt
- Typen, Bereiche, Defaults, Skews, Anzeigen und Einheiten stimmen
- Cache ist vollständig gültig
- Snapshot ist trivial kopierbar, finite und korrekt geclamped
- Fresh APVTS defaults entsprechen exakt dem neuen Deep Pluck

B. State und Legacy-Migration

- synthetische V0.1-/V0.2-/V0.3-States laden alte Werte korrekt
- State ohne alle V0.4-IDs wird als Legacy erkannt
- beide neuen Enabled-Werte werden bei Legacy false
- die übrigen neuen Werte erhalten dokumentierte Defaults
- Legacy-Render entspricht dem V0.3-Pfad innerhalb enger Toleranz
- vollständiger V0.4-State round-tript alle 24 Parameter
- partieller V0.4-State bleibt sicher und übernimmt vorhandene Werte
- unbekannte Properties/Children crashen nicht
- invalider Tree wird sicher abgelehnt
- Preset- und Custom-Erkennung bleiben korrekt

C. Transient-Grundfunktion

- reset/idle liefert deterministische Stille
- Note-On am Sampleoffset startet erst exakt dort
- Ausgang bleibt finite und bounded
- Quelle ist bipolar und besitzt keinen relevanten DC-Offset
- kein einzelner unkontrollierter Full-Scale-Deltaimpuls
- Energie ist klar im Anfang der Note konzentriert
- nach transientDecay ist Envelope <= 0.001 und wird deterministisch still
- Decay-Zeit stimmt bei 44.1, 48 und 96 kHz
- Tone hoch verschiebt spektralen Schwerpunkt klar nach oben
- Tone niedrig bleibt hörbar dunkler, nicht lediglich leiser
- Level folgt dB-Verhältnis innerhalb sinnvoller Toleranz

D. Noise-Grundfunktion

- PRNG-Sequenz ist nach definiertem prepare/reset reproduzierbar
- unterschiedliche Voices liefern nicht identische Sequenzen
- Mittelwert einer ausreichend langen Sequenz liegt nahe 0
- RMS/Peak bleiben finite und bounded
- DC-Schutz verhindert relevante Offset-/Rumble-Akkumulation
- nach noiseDecay ist Envelope <= 0.001 und wird deterministisch still
- Decay-Zeit stimmt bei 44.1, 48 und 96 kHz
- Tone hoch besitzt höheren spektralen Schwerpunkt als Tone niedrig
- Tone-Filter bleibt bei allen Sample Rates stabil
- Level folgt dB-Verhältnis innerhalb sinnvoller Toleranz

E. Live-Decay-Verträge

- kürzeres Transient Decay verkürzt einen laufenden One-Shot
- längeres Transient Decay verlängert den noch aktiven Rest
- dasselbe für Noise Decay
- keine Pegelerhöhung, kein Retrigger und kein Sprung
- Minimum/Maximum und nicht-finite Eingaben bleiben sicher

F. Bypass und Smoothing

- jeder Layer Off ergibt nach 5 ms exakt keinen Layerbeitrag
- beide Layer Off erhalten den vollständigen V0.3-Signalpfad
- On/Off-Übergänge dauern die dokumentierte Zeit
- schnelles mehrfaches Umschalten bleibt stetig und finite
- Einschalten retriggert keine laufende oder beendete Quelle
- Level- und Tone-Sprünge rampen statt hart zu springen
- Smoothing-Zeiten bleiben über Sample Rates und Blockgrößen konsistent

G. Amp-/Filter-Interaktion

- Amp-Envelope skaliert die vollständige Summe einschließlich neuer Layer
- langer Amp Attack unterdrückt den sehr kurzen Transient erwartungsgemäß
- Filter On formt Saw, Transient und Noise gemeinsam
- Filter Off erhält lokale Tone-Formung, umgeht aber Haupt-Drive/Filter
- positive/negative Filter Envelope moduliert die vollständige Quellensumme
- neue Layer beeinflussen Amp-/Filter-Envelope-State nicht
- Filter- und Layer-Bypasses bleiben voneinander unabhängig

H. Per-Voice, MIDI und Lifecycle

- zwei Stimmen besitzen unabhängige Quellen, Envelopes, Filter und PRNGs
- Note-On an nichtnull Offset startet beide neuen One-Shots exakt dort
- Samples vor Event bleiben unverändert
- Note-Off bleibt für Amp/Filter am exakten Offset sofort wirksam
- Layer verlängern oder clearen keine Voice
- Hard Stop und Reuse hinterlassen keine alten Noise-/Tone-/Envelope-Zustände
- genau 16 Voices bleiben erhalten
- Voice-Stealing bleibt deterministisch und click-arm

I. Presets

- vier Namen und Reihenfolge unverändert
- alle 24 Werte jedes Presets entsprechen der Spezifikation
- die vorhandenen 16 Werte sind bit-/wertgleich zum V0.3-Code
- Deep Pluck entspricht Fresh Defaults
- Änderung jedes einzelnen neuen Parameters erzeugt Custom
- Presetwechsel während Render bleibt finite und artefaktarm

J. Headroom, DC und Stress

- Fresh Default bei 16 Stimmen und maximaler Velocity <= 0.95 Peak
- jedes Factory-Preset erfüllt denselben Headroom-Test
- Einzelquellen und Mix bleiben DC-arm
- Worst-Case-Matrix mit beiden Levels 0 dB, maximalen Decays/Tones,
  maximaler Filterresonanz/Drive und 16 Stimmen bleibt finite und bounded
- lange Automation, schnelle MIDI-Folgen und Voice-Stealing bleiben stabil
- Stille ohne aktive Stimmen ist exakt oder innerhalb bestehender Toleranz still

K. Regression

- alle neun bisherigen Suites weiterhin erfolgreich
- Filterflanken-, Resonanz-, Bypass- und Envelope-Verträge bleiben bestehen
- PolyBLEP-Alias- und Amp-Live-Verträge bleiben bestehen
- Tune-/Output-Smoothing bleibt bestehen
- VST3-/Standalone-Verträge und Artefaktstruktur bleiben bestehen

Messmethoden müssen deterministisch sein. FFT-Fenster, Renderdauer,
Einschwingzeit, Frequenzen, Toleranzen und Gründe dokumentieren. Keine fragile
Assertion auf einzelne Noise-Samples, wenn Energie-, Mittelwert-, Korrelation-
oder Spektralmessung fachlich besser ist.

Tests in Debug und Release über CTest registrieren und einzeln selektierbar
halten. Jede neue Suite und wichtige Messwerte im Bericht aufführen.


===============================================================================
25. LISTENING ACCEPTANCE TESTS
===============================================================================

Listening Tests sind Pflicht. Mit guten Kopfhörern oder Monitoren bei
kontrollierter Lautstärke durchführen. Sample Rate, Buffer Size, Build und
Testumgebung im Bericht festhalten.

Wenn nicht tatsächlich gehört wurde, jeden Punkt als

MANUAL VERIFICATION REQUIRED

ausweisen.

1. Fresh Default First Impression

- Plugin frisch laden und Deep Pluck spielen
- einzelne Noten und einfache Deep-House-Akkorde in tiefer, mittlerer und hoher
  Lage
- Erwartung: Anschlag lebendiger und definierter als V0.3, dennoch warm,
  rund, emotional und trocken überzeugend
- kein Click, Zischen, scharfer Peak oder überbetonter Noise-Eindruck

2. Legacy A/B

- bestätigten V0.3-State laden
- Erwartung: beide neuen Layer Off und alter Klang erhalten
- beide Layer einzeln aktivieren und musikalischen Mehrwert beurteilen

3. Transient Bypass

- Noise Off, Transient mehrfach On/Off
- einzelne Noten, Akkorde und schnelle Repeats
- Erwartung: klarer, kurzer Fokus bei On; kein Click beim Umschalten

4. Transient Level

- -60 bis 0 dB durchfahren
- Erwartung: kontinuierlich von praktisch unhörbar bis klar präsent
- Maximum kontrolliert, nicht schmerzhaft, nicht wie digitaler Fehler

5. Transient Decay

- Minimum, Default und Maximum vergleichen
- Erwartung: von sehr knappem Anschlag bis kurzem Körper
- auch 100 ms bleibt eindeutig Transient, kein zweiter Sustained Oscillator

6. Transient Tone

- 0, Default und 100 Prozent vergleichen
- Erwartung: hörbar dunkel bis hell bei ähnlicher funktionaler Rolle
- obere Lage bleibt seidig, nicht spröde oder aliasartig

7. Noise Bypass

- Transient Off, Noise mehrfach On/Off
- Erwartung: organische Luft/Textur bei On, kein globales Hiss bei inaktiven
  Stimmen und kein Click beim Umschalten

8. Noise Level und Decay

- Level und Zeit über den Bereich testen
- Erwartung: kurzer softer Anschlag bis längere atmende Textur
- Default subtil; Maximum kreativ nutzbar, aber nicht instabil

9. Noise Tone

- dunkel, Default und hell vergleichen
- Erwartung: klare Filterwirkung, kontrollierter Low-End-Bereich und weiche
  Höhen ohne kratziges Weißrauschen

10. Beide Layer gemeinsam

- beide Defaults, beide Off und jeweils nur einen Layer vergleichen
- Erwartung: Rollen sind getrennt verständlich und ergänzen sich
- der V0.3 Saw-/Filter-Kern bleibt erkennbar

11. Amp-Envelope-Interaktion

- sehr kurzer und sehr langer Amp Attack
- kurze/lange Amp Decays und Releases
- Erwartung: langer Attack blendet den kurzen Transient natürlich aus;
  Note-Off folgt sofort dem Amp Release; keine Layer hängen nach

12. Hauptfilter-Interaktion

- Cutoff-, Resonanz- und Drive-Sweeps mit neuen Layern
- positive und negative Filter Envelope
- Filter On/Off
- Erwartung: gemeinsame, kohärente Formung; kein separater aufgeklebt wirkender
  Noise-Pfad; Filter Off bleibt click-frei

13. Live-Automation

- beide Levels, Tones, Decays und Bypasses während Wiedergabe bewegen
- Erwartung: keine Zipper, Clicks, Retrigger oder Pegelsprünge
- aktive One-Shots reagieren auf kürzeres/längeres Decay musikalisch

14. Velocity, Polyphony und Voice-Stealing

- niedrige bis maximale Velocity, 1/4/8/16 Stimmen und 17. Note
- Erwartung: Ausdruck bleibt lebendig, Noise korreliert nicht auffällig,
  keine Clicks, Hänger oder unkontrollierte Summenpeaks

15. Factory-Presets

- alle vier Presets über mehrere Register spielen
- Erwartung: vorhandene Rollen bleiben erkennbar und werden sinnvoll ergänzt
- Soft bleibt weich, Tight kurz, Long emotional, Deep ausgewogen

16. Mono und Tonal Balance

- Stereo und Mono vergleichen
- Erwartung: keine neue Phasenschwäche; Mitte bleibt stabil
- Höhen weich, Mitten präsent, Bass kontrolliert

17. Manifest-Abnahme

Explizit protokollieren:

- warm, soft, rounded, musical, elegant, emotional, modern
- Attack lebendig, aber nicht aggressiv
- Noise organisch, aber nicht schmutzig oder dominant
- Höhen fein und seidig
- Mitten charaktertragend
- Low End kontrolliert
- Dynamik und Velocity erhalten
- keine sterile, kalte, spröde oder überdigitalisierte Tendenz


===============================================================================
26. CUBASE-VALIDIERUNG
===============================================================================

Cubase-Validierung ist eine eigene Abnahmestufe. CubaseTest/-Daten nicht
ungefragt verändern oder committen. Systemweite Plugininstallation nicht
automatisieren. Falls der Benutzer das lokale VST3 manuell bereitstellt, exakt
diesen Build validieren.

Wenn Cubase nicht tatsächlich ausgeführt und beobachtet wurde, jeden Punkt als

MANUAL VERIFICATION REQUIRED

ausweisen.

Pflichtprüfungen:

1. Plugin Discovery und Identität

- Cubase erkennt V0.4.0 als dasselbe DeepPluck-Plugin
- kein doppelter Eintrag durch geänderte IDs
- Instrument lädt ohne Blacklist, Fehlerdialog oder Crash

2. Legacy-Projektkompatibilität

- bestehendes V0.3.0-Projekt mit DeepPluck öffnen
- alle 16 alten Parameter und ihre Automation bleiben erhalten
- Transient und Noise sind für Legacy-State Off
- Klang entspricht dem alten Projekt, soweit praktisch im A/B überprüfbar
- Projekt speichern, schließen, erneut öffnen; V0.4-State bleibt identisch

3. Fresh Default und Presets

- neue Instanz laden: beide Layer nutzen die Fresh Defaults
- alle vier Factory-Presets wählen
- vorhandene Klangrollen und neue Layerwerte prüfen
- neuen Parameter ändern -> Custom
- Factory- und Custom-Zustand speichern/rückrufen

4. Automation

- beide Enabled-, Level-, Decay- und Tone-Parameter automatisieren
- Write, Read, Touch und Latch soweit unterstützt prüfen
- Loop-Grenzen, Stop/Start und schnelle Richtungswechsel prüfen
- keine Clicks, Zipper, Retrigger, NaNs oder verlorenen Werte
- bestehende 16 Automationsparameter regressionsprüfen

5. MIDI und Timing

- Note-On/Off an verschiedenen Positionen, kurze und lange Noten
- schnelle Repeats, Akkorde, Sustain-Pedal und Voice-Stealing
- Transient/Noise beginnen samplegerecht und hängen nicht nach
- Amp-/Filter-Note-Off-Verträge bleiben hörbar korrekt

6. GUI

- alle 24 Controls sichtbar, lesbar und erreichbar
- DPI-/Windows-Skalierung prüfen
- beide Layergruppen und Bypasses eindeutig
- keine Überlappungen, abgeschnittenen Labels oder falschen Attachments

7. Audioqualität

- Realtime- und Offline-Export vergleichen
- Layer-A/B, Tone-/Decay-Sweeps, Presetwechsel und Hauptfilter-Automation
- keine Clicks, Zipper, unerwartete Stille, DC oder Pegelspitzen

8. Mehrfachinstanzen und Lifecycle

- 1, 2 und 4 Instanzen laden, spielen, speichern und entfernen
- unterschiedliche Presets/States je Instanz
- Sample-Rate-/Audio-Device-Wechsel soweit praktikabel
- Projekt schließen und Cubase regulär beenden
- keine Crashes, hängenden Prozesse oder gekoppelte Noise-Seeds

Im Abschlussbericht Cubase-Version, VST3-Artefakt/Pfad, Sample Rate, Buffer Size
und tatsächliche Einzelbefunde nennen. Keine pauschale Aussage "Cubase getestet".


===============================================================================
27. PERFORMANCE- UND STABILITÄTSPRÜFUNG
===============================================================================

Audioqualität kommt zuerst, unnötige CPU-Arbeit ist dennoch kein
Qualitätsmerkmal.

Mindestens prüfen und dokumentieren:

- 1, 4, 8 und 16 aktive Stimmen
- 44.1, 48 und 96 kHz
- Blockgrößen 1, 32, 64, 127 und 512
- beide Layer Off, einzeln On und gemeinsam On
- Fresh Default und alle Factory-Presets
- beide Level 0 dB und maximale Decays/Tones
- hohe Filterresonanz/Drive und schnelle Filter-/Layer-Automation
- schnelle Repeats, lange Läufe und Voice-Stealing

Verwende nach Möglichkeit eine reproduzierbare lokale Messung oder einen
deterministischen Render-Benchmark. Absolute CPU-Prozentwerte ohne stabile
Messumgebung nicht überinterpretieren. Hardware, Buildtyp, Sample Rate,
Blockgröße, Stimmenzahl, Laufzeit und Methode dokumentieren.

Akzeptanz:

- keine Echtzeit-Aussetzer im normalen manuellen Test
- Laufzeit wächst nachvollziehbar mit Stimmenzahl
- keine Speicherzunahme oder ungebundene Arbeit
- PRNG und Tone-Filter sind klar bounded
- Layer Off darf optimiert sein, muss aber Bypass-/State-Verträge erfüllen
- keine extreme Debug-/Release-Diskrepanz als Hinweis auf UB
- hörbare Qualität nicht für einen kosmetischen Benchmark opfern

Wenn kein belastbarer Host-CPU-Benchmark möglich ist, dies als bekannte
Verifikationsgrenze dokumentieren. Realtime-Code-Review und Stress-Tests bleiben
trotzdem Pflicht.


===============================================================================
28. DOKUMENTATION
===============================================================================

Mindestens aktualisieren:

README.md

- Milestone/Version V0.4.0
- kompakte Transient-/Noise-Funktionen und Signalrolle
- acht neue Parameter und Fresh-/Legacy-Verhalten
- vier bestehende Presets und Custom-Verhalten
- Build-, Test- und lokale Artefakthinweise aktuell halten

ARCHITECTURE.md

- neuer per-voice Signalfluss vor Hauptfilter und Amp-Envelope
- Klassen, Ownership und Zustände
- genaue Transient-Quelle, Tone-Abbildung und Alias-/DC-Strategie
- PRNG-Algorithmus, Seeding und Dekorrelation
- Noise-Tone-Filter und sample-rate-abhängige Grenzen
- One-Shot-Gleichungen und -60-dB-Decay-Semantik
- Live-Decay-Verhalten
- Layer-Bypass, Level-/Tone-Smoothing und Zeiten
- Interaktion mit Hauptfilter, Filter Envelope und Amp Envelope
- Fresh-/Legacy-State-Migration
- Reset, Voice-Stealing, Headroom und Realtime-Review

Sound Manifest

- normativen Inhalt nicht beiläufig umschreiben
- nur ändern, wenn eine echte notwendige Korrektur vorliegt und klar begründet
- normalerweise bleibt das Manifest unverändert

Master-Prompt

- dieses Dokument unverändert als
  Docs/DeepPluck_V0.4.0_Transient_Noise_MasterPrompt_Rev1.txt
  in das Repository übernehmen, sofern es dort noch nicht identisch vorhanden
  ist

Finaler Bericht

- als Docs/DeepPluck_V0.4.0_Transient_Noise_Implementation_Report.md
- Struktur gemäß Abschnitt 33
- ausgeführte und manuelle Prüfungen strikt trennen

Dokumentation darf keine geplanten Werte als gemessene Ergebnisse darstellen.


===============================================================================
29. BUILD, ARTEFAKTE UND VERIFIKATIONSABLAUF
===============================================================================

Bestätigte Referenzumgebung gemäß AGENTS.md:

- Windows 11 x64
- Visual Studio 2026
- MSVC 19.51
- Windows SDK 10.0.26100.0
- CMake 4.4.3
- JUCE 9.0.1
- C++20
- Visual Studio 18 2026 x64 CMake-Generator

Andere Toolchain-Versionen sind ungetestet. Vorhandene CMake-/JUCE-Architektur
verwenden. Keine neue Toolchain, kein Projucer und keine Systeminstallation.

Verbindliche Reihenfolge:

1. Bestandsaufnahme, Dokumentlektüre und Git-Schutzprüfung
2. vorhandenen Debug-/Release-Teststand als Baseline ausführen
3. kleinsten Architekturplan für per-voice Quellen, Envelopes und Routing
4. Transient-Quelle isoliert mit Tests implementieren
5. PRNG, Noise-Tone und DC-Schutz isoliert mit Tests implementieren
6. One-Shot-Decays und Live-Update-Verträge testen
7. per-voice Mix, Filter-/Amp-Interaktion und Bypasses integrieren
8. Parameter, State-Migration, Presets und GUI erweitern
9. Headroom-, DC-, Matrix-, Stress- und Regressionstests vervollständigen
10. frische/validierte CMake-Konfiguration prüfen
11. vollständigen Debug Build und Debug CTest ausführen
12. vollständigen Release Build und Release CTest ausführen
13. Warnungen, Realtime-Hot-Path und Artefakte prüfen
14. VST3-Bundle-Struktur und Standalone-Artefakt prüfen
15. Standalone-Smoke-Test soweit sicher automatisierbar ausführen
16. Listening Acceptance und Cubase tatsächlich ausführen oder exakt manuell
    ausweisen
17. Dokumentation, Diff, Git-Status und Definition of Done prüfen
18. erst danach fokussierte Commits erstellen

Referenzbefehle, an den realen Buildstand angepasst:

cmake --fresh -S . -B build -G "Visual Studio 18 2026" -A x64
cmake --build build --config Debug --parallel
ctest --test-dir build -C Debug --output-on-failure
cmake --build build --config Release --parallel
ctest --test-dir build -C Release --output-on-failure

Lokale Artefaktkonvention erhalten:

- Artifacts/Debug/DeepPluck.vst3 als vollständiges Bundle
- Artifacts/Debug/DeepPluck.exe
- Artifacts/Release/DeepPluck.vst3 als vollständiges Bundle
- Artifacts/Release/DeepPluck.exe

COPY_PLUGIN_AFTER_BUILD bleibt false. Keine Artefakte in System-VST3-
Verzeichnisse kopieren. Keine generierten Artefakte committen.

Nach jeder relevanten DSP-Korrektur betroffene Tests erneut ausführen. Vor
Abschluss immer vollständige Debug- und Release-Suites wiederholen.


===============================================================================
30. GIT-WORKFLOW
===============================================================================

Vor Arbeitsbeginn:

- git status --short
- git log --oneline in sinnvollem Umfang
- git diff und git diff --cached
- vorhandene untracked Dateien erfassen

Während der Arbeit:

- nur Scope-Dateien ändern
- Benutzeränderungen und bekannte untracked historische Dateien unangetastet
  lassen
- keine Rebases, Resets, automatischen Stashes oder destruktiven Clean-Befehle
- keine fremden Änderungen in eigene Commits aufnehmen
- keine Buildverzeichnisse oder Binärartefakte committen
- JUCE/ niemals verändern
- keine Pushes

Empfohlene fokussierte Commit-Struktur nach vollständiger automatisierbarer
Verifikation:

1. Implementierungscommit
   Beispiel: feat: add per-voice transient and noise engine

2. Abschlussbericht-Commit
   Beispiel: docs: add V0.4.0 transient and noise report

Wenn der reale kleine Diff einen einzigen sauberen Commit fachlich besser
rechtfertigt, ist dies zulässig und im Bericht zu erklären. Keine künstliche
Commit-Zerlegung.

Vor jedem Commit Diff und Staging-Liste prüfen. Nach dem letzten Commit finalen
Status nennen, einschließlich absichtlich untracked gebliebener Dateien.


===============================================================================
31. REGRESSION POLICY
===============================================================================

Keines der folgenden V0.3.0-Merkmale darf regressieren:

- Plugin-Identität und Cubase-Erkennung
- VST3- und Standalone-Build
- genau 16 Voices und ein DeepPluckSound
- samplegenaue MIDI-Verarbeitung
- PolyBLEP-Saw und bestätigte Aliasreduktion
- Amp-Envelope-Kurven, Timing und Live-Updates
- sofortiger Amp Release bei Note-Off aus Attack/Decay/Sustain
- Kürzen und Verlängern laufender Amp-Releases
- per-voice 24-dB-Filter und gemessener Flankenvertrag
- Resonanz-, Drive-, Cutoff- und Key-Tracking-Verhalten
- bipolare Filter-Envelope und ihre Live-Updates
- sofortiger Filter Release bei Note-Off
- click-freier Filter-Bypass und warm gehaltener Zustand
- musikalisches Voice-Stealing
- lineare Velocity-Reaktion
- Tune-Smoothing ohne Phasenreset
- Output-Gain-Smoothing nach der Stimmsumme
- State-Migration älterer Versionen
- vier Factory-Presets und Custom-Erkennung
- deterministische Stille ohne aktive Stimmen
- alle neun vorhandenen Testsuites
- lokale Artefaktkonvention

Zusätzlicher V0.4-Kompatibilitätsvertrag:

- Beide neue Layer Off müssen den V0.3.0-Audiopfad innerhalb enger Toleranz
  bewahren.
- Ein Legacy-State ohne V0.4-IDs muss automatisch genau diesen Zustand laden.
- Die 16 bestehenden Presetwerte dürfen nicht zur Kompensation neuer Layer
  verändert werden.
- Headroom wird über Layerkalibrierung und neue Presetwerte gelöst, nicht durch
  heimliche Änderung alter Parameter oder Limiting.

Wenn ein alter Audiotest wegen aktiven Fresh-V0.4-Defaults nicht mehr denselben
Wert erwarten kann, Test nicht löschen. Seine Regression-Aussage auf dem
Legacy-/beide-Layer-Off-Pfad erhalten und die neue Default-Erwartung separat
testen.


===============================================================================
32. STRENGTHENED DEFINITION OF DONE
===============================================================================

V0.4.0 ist nur fertig, wenn alle zutreffenden Punkte erfüllt sind:

Repository und Scope

[ ] realen Ausgangsstand und Benutzeränderungen geprüft
[ ] normative Dokumente vollständig gelesen
[ ] ausschließlich V0.4.0-Scope implementiert
[ ] Oscillator 2, Unison und Effekte nicht implementiert
[ ] keine Samples, Noise-Modi oder zusätzliche Modulationsfeatures
[ ] alte untracked Dateien und CubaseTest/ unangetastet, soweit vorgefunden

Kompatibilität

[ ] Produkt-, Bundle-, Hersteller- und Plugin-IDs unverändert
[ ] bestehende 16 Parameter-IDs, Reihenfolge, Bereiche und Defaults unverändert
[ ] acht neue IDs exakt wie spezifiziert hinten angehängt
[ ] alte Automation bleibt gültig
[ ] Legacy-States laden mit beiden Layern Off und bewahren alten Klang
[ ] Fresh V0.4-Start verwendet aktive dokumentierte Defaults
[ ] vollständiger V0.4-State round-tript alle 24 Parameter
[ ] vier Presetnamen/-reihenfolge und alle 16 alten Werte unverändert
[ ] Cubase erkennt dasselbe Plugin oder Prüfung ist manuell ausgewiesen

Transient DSP

[ ] per-voice, kurz, bipolar, DC-arm und bounded
[ ] kein harter Ein-Sample-Deltaimpuls
[ ] Level, Decay und Tone vollständig wirksam
[ ] Tone besitzt klaren musikalischen Spektraleffekt
[ ] nach definierter Decay-Zeit <= -60 dB und deterministisch still
[ ] kein zweiter dauerhafter Oszillator entstanden

Noise DSP

[ ] per-voice PRNG realtime-sicher und deterministisch
[ ] Stimmen besitzen unterschiedliche, nicht identische Sequenzen
[ ] Noise ist DC-arm, finite und bounded
[ ] Tone-Filter sample-rate-sicher und musikalisch
[ ] Level, Decay und Tone vollständig wirksam
[ ] nach definierter Decay-Zeit <= -60 dB und deterministisch still

Routing und Lifecycle

[ ] beide Quellen vor Hauptfilter/Drive korrekt gemischt
[ ] beide folgen gemeinsamer Amp-Envelope, Velocity und Voice Gain
[ ] Hauptfilter/Filter Envelope formen die vollständige Quellensumme
[ ] Amp-/Filter-Note-Off-Verträge unverändert samplegenau
[ ] neue Layer clearen oder verlängern keine Voice
[ ] Hard Stop, Reuse und Voice-Stealing hinterlassen keine Altzustände

Automation und Bypass

[ ] beide Layer unabhängig über 5 ms click-frei bypassbar
[ ] Einschalten retriggert keinen One-Shot
[ ] Levels und Tones fachlich geglättet
[ ] laufende Decays reagieren auf kürzere und längere Zeit
[ ] Automation resetet keine Quelle, Envelope oder Filter

Musikalität

[ ] Fresh Default ist trocken sofort als emotionaler Deep-House-Pluck brauchbar
[ ] Transient verbessert Fokus ohne digitalen Click oder Aggression
[ ] Noise verbessert Textur ohne Hiss-Dominanz oder kratzige Höhen
[ ] V0.3-Kern bleibt deutlich erkennbar
[ ] alle vier Presets behalten ihre Rolle und gewinnen musikalisch
[ ] Sound Manifest wurde explizit beurteilt

Headroom, DC und Realtime

[ ] Fresh Default-16-Voice-Peak <= 0.95
[ ] alle Factory-Presets <= 0.95 im definierten Test
[ ] Worst-Case-Stresstest finite und bounded
[ ] neue Quellen und Gesamtoutput DC-arm
[ ] keine Allokationen, Locks, Entropy- oder String-/Tree-Arbeit im Audiothread
[ ] CPU-/Realtime-Plausibilität geprüft und dokumentiert
[ ] kein Limiter/Clipper kaschiert Pegel- oder Stabilitätsprobleme

Build und Tests

[ ] Debug Build erfolgreich
[ ] vollständiger Debug CTest erfolgreich
[ ] Release Build erfolgreich
[ ] vollständiger Release CTest erfolgreich
[ ] alle neun bestehenden Suites weiterhin erfolgreich
[ ] mindestens zwei neue passende Suites registriert und erfolgreich
[ ] Standalone-Smoke-Test erfolgreich oder manuell ausgewiesen
[ ] lokale Debug-/Release-Artefakte vollständig
[ ] keine neuen relevanten Compilerwarnungen

Manuelle Abnahme

[ ] Listening Acceptance tatsächlich durchgeführt oder jeder offene Punkt exakt
    mit MANUAL VERIFICATION REQUIRED markiert
[ ] GUI sichtbar geprüft oder exakt manuell ausgewiesen
[ ] Cubase vollständig validiert oder jeder offene Punkt exakt manuell
    ausgewiesen
[ ] keine nicht ausgeführte Prüfung als erfolgreich behauptet

Dokumentation und Git

[ ] README.md aktuell
[ ] ARCHITECTURE.md mit Algorithmen, Routing, Seeding und State-Vertrag aktuell
[ ] Master-Prompt im Docs-Verzeichnis vorhanden
[ ] vollständiger Implementierungsbericht erstellt
[ ] finalen Diff und Git-Status geprüft
[ ] fokussierte Commits ohne Benutzerdateien erstellt
[ ] keine generierten Artefakte committed
[ ] kein Push ausgeführt

Ein grüner Build allein erfüllt diese Definition of Done nicht. Automatisierte
Vollständigkeit und musikalische Abnahme sind getrennt auszuweisen.


===============================================================================
33. FINAL IMPLEMENTATION REPORT
===============================================================================

Erstelle:

Docs/DeepPluck_V0.4.0_Transient_Noise_Implementation_Report.md

Pflichtstruktur:

1. Overall Result
   - Status: complete, partial oder blocked
   - knappe belastbare Zusammenfassung

2. Starting Point
   - realer Commit/Branch/Status
   - vorhandene Benutzeränderungen und Schutzmaßnahmen
   - ausgeführte Baseline-Tests

3. Scope
   - umgesetzt
   - bewusst nicht umgesetzt

4. Files
   - neu, geändert und absichtlich unangetastet

5. Architecture and Signal Flow
   - per-voice Ownership und Mixposition
   - Interaktion mit Hauptfilter, Filter Envelope und Amp Envelope
   - Parameter-Snapshot und Lifecycle

6. Transient Algorithm
   - Quelle/Wavelet, Gleichungen und Micro-Fade
   - Tone-Abbildung, Bandbegrenzung, DC- und Peak-Strategie
   - musikalische Begründung

7. Noise Algorithm
   - PRNG, Seeding und Dekorrelation
   - Werteabbildung, DC-Schutz und Tone-Filter
   - musikalische Begründung

8. One-Shot Envelopes
   - Gleichung und -60-dB-Zeitdefinition
   - Live kürzere/längere Decays
   - Trigger, Note-Off, Reset und Finished-Verhalten

9. Bypass and Smoothing
   - Crossfade-Form und Zeit je Layer
   - Level-/Tone-Smoothing und Initialisierung
   - Verhalten bei Preset-/Automation-Wechsel

10. Parameters, State and Compatibility
    - alle acht IDs, Bereiche und finale Defaults
    - Fresh-vs-Legacy-Verhalten
    - alte Migration, V0.4-Roundtrip und unveränderte Plugin-Identität
    - Automation/Reihenfolge

11. Presets and GUI
    - 16 unveränderte alte plus acht neue Werte je Preset
    - Custom-Verhalten
    - GUI-Status und Sichtprüfung

12. Gain Staging, DC and Headroom
    - Quellenkalibrierung
    - Default-/Preset-/Worst-Case-Peaks
    - DC-Messwerte und Verzicht auf Limiting

13. Realtime Review
    - Hot-Path-Audit, Allokationen, Locks, Atomics, PRNG und Denormals

14. Builds and Artifacts
    - genaue Debug-/Release-Befehle und Ergebnisse
    - vollständige lokale Artefaktpfade

15. Automated Tests
    - jede Suite einzeln
    - Pass/Fail in Debug und Release
    - wichtige Zeit-, Spektral-, Korrelation-, DC- und Peak-Messwerte

16. Listening Acceptance
    - jeden Test einzeln mit tatsächlichem Befund
    - offene Tests exakt MANUAL VERIFICATION REQUIRED

17. Cubase Validation
    - Version, Sample Rate, Buffer, Artefakt und Einzelbefunde
    - offene Tests exakt MANUAL VERIFICATION REQUIRED

18. Performance and Stability
    - Methode, Stimmen/Sample Rates/Blockgrößen und Ergebnisse
    - Host-CPU-Grenzen ehrlich benennen

19. Sound Manifest Review
    - warm/soft/rounded/musical/emotional
    - Attack, Noise, Höhen, Mitten, Bass und Dynamik
    - Antwort auf Mandatory Development Question

20. Regression Review
    - alle Verträge aus Abschnitt 31

21. Known Limitations and Technical Debt
    - konkret, priorisiert und ohne versteckte Scope-Erweiterung

22. Git
    - finale Commits, finaler Status, ausgeschlossene Benutzerdateien, kein Push

23. Design Review
    - Did the implementation improve musical quality?
    - Did complexity increase, and was it justified?
    - Does it follow the Sound Manifest?
    - Would a musician immediately hear or feel the improvement?
    - Keep, refactor, or revert?

24. Next Milestone Recommendation
    - genau eine fokussierte Empfehlung
    - keine ungefragte Implementierung

Der Bericht trennt Fakten, Messwerte, subjektive Hörbefunde und offene manuelle
Prüfungen. Keine erfundenen Erfolge und keine pauschalen Sammelaussagen.


===============================================================================
34. FEHLERBEHANDLUNG UND ZULÄSSIGE ABWEICHUNGEN
===============================================================================

Bei Build-, Test- oder DSP-Fehlern:

1. vollständige relevante Fehlermeldung lesen
2. Ursache bestimmen
3. kleinste fachlich korrekte Änderung vornehmen
4. betroffenen Test erneut ausführen
5. vollständige relevante Debug-/Release-Prüfung wiederholen

Keine Tests deaktivieren, Assertions entfernen, Grenzwerte willkürlich erhöhen
oder Fehler durch Output-Clamping verstecken.

Zulässige Abweichungen betreffen nur technische Details, wenn:

- die lokale JUCE-9-API oder reale Architektur die beschriebene Form nicht
  unterstützt
- die Alternative denselben hörbaren und technischen Vertrag erfüllt
- Scope und Kompatibilität unverändert bleiben
- automatisierte Tests die Gleichwertigkeit belegen
- Abweichung, Grund und Auswirkung im Bericht dokumentiert sind

Zulässige Detailwahl mit Dokumentationspflicht:

- konkrete bandbegrenzte Transient-Quelle
- genaue Micro-Fade-Dauer innerhalb des definierten Korridors
- kompakter PRNG-Algorithmus und Seed-Mischung
- ein- oder zweipolige lokale Tone-Filterung
- exakte interne Tone-Kurve und Quellenkalibrierung
- technische Stresstestgrenze oberhalb der Factory-Headroom-Grenze

Nicht zulässige Abweichungen:

- globaler statt per-voice Noise-/Transient-Pfad
- neue Layer nach der Amp-Envelope
- Umgehung des Hauptfilters bei Filter On
- harte, ungesmoothte Bypasses
- statische Note-On-Snapshots für aktive Decay-Zeiten
- nicht deterministische OS-/Zeit-Seeds im Audiothread
- geänderte Plugin-ID oder gebrochene alte Automation/States
- Änderung der bestehenden 16 Parameter oder Presetwerte
- zweiter Oszillator, Unison oder Effekte
- zusätzliche sichtbare Layerparameter


===============================================================================
35. DEEPPLUCK STANDARD UND GOLDEN RULES
===============================================================================

1. DeepPluck ist ein Musikinstrument, keine Technologie-Demo.
2. Sound before features.
3. Musicality before spectacle.
4. Quality before quantity.
5. Realtime safety is absolute.
6. The Sound Manifest is mandatory.
7. One focused transient is better than a menu of click types.
8. One musical noise color control is better than many noise modes.
9. Every control must have an audible musical purpose.
10. New sources remain per voice and obey the instrument lifecycle.
11. Amp and Filter Envelope contracts are permanent.
12. Live controls feel alive, never frozen or retriggered accidentally.
13. Bypass is a trustworthy, click-free A/B comparison.
14. Noise must add emotion and texture, not mask the source sound.
15. Attack energy must be controlled through design, not limiting.
16. Defaults and presets retain dynamics and headroom.
17. Plugin IDs, parameter IDs, automation and legacy states are public data.
18. Musical errors are real errors even when unit tests are green.
19. Oscillator 2, Unison and effects remain outside V0.4.0.
20. DeepPluck is not designed to make every sound. It is designed to make the
    right sound exceptionally well.


===============================================================================
36. ABSCHLIESSENDE ARBEITSANWEISUNG
===============================================================================

Implementiere DeepPluck V0.4.0 - Transient & Noise Engine vollständig,
fokussiert und musikalisch. Beginne mit dem realen Repository-Stand und schütze
vorhandene Benutzerarbeit. Bewahre alle Plugin-IDs, die bestehenden 16
Parameter, ihre Automation, die vier Presets und die State-Kompatibilität.

Baue genau zwei neue per-voice Quellen:

PolyBLEP Saw
  + kurzer bandbegrenzter, click-armer Attack-Transient
  + gefiltertes, DC-armes, deterministisches per-voice Noise
  -> bestehender click-frei bypassbarer Drive/24-dB-Filter
  -> bestehende Amp Envelope
  -> Velocity und Voice Gain
  -> globale Summe und Output Gain

Jeder neue Layer besitzt genau On/Off, Level, Decay und Tone. Beide Bypasses
sind click-frei. Beide One-Shot-Decays reagieren live auf kürzere und längere
Zeiten, ohne Pegelsprung oder Retrigger. Der bestehende Hauptfilter und seine
Envelope formen bei Filter On die vollständige Quellensumme. Die Amp-Envelope
bleibt die gemeinsame hörbare und lifecycle-bestimmende Hüllkurve.

Fresh V0.4 verwendet die musikalisch aktiven Defaults. Ein geladener State ohne
V0.4-Parameter wird als Legacy behandelt und erhält beide Layer Off, damit der
V0.3-Klang erhalten bleibt. Diese Unterscheidung ist verpflichtend und muss
automatisiert getestet werden.

Betrachte den Milestone als fehlgeschlagen, wenn einer dieser Fälle vorliegt:

1. Transient oder Noise ist global statt per Stimme.
2. Ein neuer Layer umgeht Amp-Envelope, Velocity oder Voice-Lifecycle.
3. Filter On formt nicht die vollständige Quellensumme.
4. Transient ist ein harter unkontrollierter Ein-Sample-Click.
5. Noise-Sequenzen sind zwischen Stimmen identisch oder im Audiothread mit
   Systemzeit/OS-Entropy erzeugt.
6. Decay-Änderungen retriggern, springen oder sind bei aktiven One-Shots
   eingefroren.
7. Bypass oder Automation clickt, zippert oder setzt Quellen/Envelopes zurück.
8. Beide Layer Off bewahren den V0.3-Pfad nicht.
9. Alte States laden die neuen Layer ungefragt aktiv und verändern den Klang.
10. Alte Parameter, Automation, Presetwerte oder Plugin-Identität werden
    gebrochen.
11. Headroom wird durch Limiting oder harte Sample-Clamps erreicht.
12. Default klingt harsch, dominant noisy oder verliert den V0.3-Kern.
13. Oscillator 2, Unison, Effekte oder weitere Layeroptionen werden umgesetzt.
14. Manuelle Prüfungen werden erfunden oder als erfolgreich behauptet.

Arbeite bis alle automatisierbaren Punkte der Definition of Done erfüllt sind.
Führe Listening-, GUI- und Cubase-Prüfungen tatsächlich aus oder kennzeichne
jeden offenen Punkt exakt mit MANUAL VERIFICATION REQUIRED. Erstelle lokale
Debug-/Release-Artefakte, vollständige Tests, aktualisierte Dokumentation,
fokussierte Git-Commits und den finalen Implementierungsbericht.

Die abschließende Produktfrage lautet:

Does this make DeepPluck a better instrument for emotional Deep House plucks?

Wenn die ehrliche Antwort nicht klar "yes" ist, ist V0.4.0 noch nicht fertig.

===============================================================================
ENDE DER MASTER-SPEZIFIKATION
===============================================================================
