===============================================================================
DEEPPLUCK / "JUST A LIL' PLUCKSYNTH"
V0.14.0 - SCALE-AWARE VOICING ENGINE
VERBINDLICHER IMPLEMENTIERUNGS-MASTERPROMPT - REVISION 1
===============================================================================

Repository:
D:\0A_VST_Development

Zielversion:
0.14.0

Verbindliche Spezifikation:
D:\0A_VST_Development\Docs\
DeepPluck_V0.14.0_Scale_Aware_Voicing_Engine_Specification_Rev1.txt

Erforderlicher Implementierungsbericht:
D:\0A_VST_Development\Docs\
DeepPluck_V0.14.0_Scale_Aware_Voicing_Engine_Implementation_Report.md

Erforderliche Testdokumentation:
D:\0A_VST_Development\Tests\ScaleAwareVoicingEngine.md

===============================================================================
DOKUMENTGRENZE
===============================================================================

Dieser Text ist die später direkt auszuführende Implementation Order.

Bei seiner späteren Ausführung ist V0.14.0 vollständig gemäß der verbindlichen
Spezifikation umzusetzen, zu prüfen und zu dokumentieren. Die Erstellung dieser
Datei ist ausdrücklich:

- keine Implementierungsfreigabe,
- keine Quellcodeänderung,
- keine Versionsänderung,
- kein Build,
- kein Testlauf,
- kein Artifact-Lauf,
- kein Git-Commit.

Erst ein separater ausdrücklicher Ausführungsauftrag des Benutzers, zum Beispiel
"los", autorisiert die Arbeit aus diesem Masterprompt.

===============================================================================
0. EXECUTION CONTRACT
===============================================================================

Arbeite ausschließlich im vorhandenen Repository und auf Basis des beim Start
tatsächlich vorhandenen legitimen Git-Stands.

Verbindlich:

1. Lies vor Planung und Implementierung AGENTS.md vollständig.
2. Lies danach Docs/Sound/DeepPluck_Sound_Manifest_v1.0.md vollständig.
3. Lies danach die verbindliche V0.14.0-Spezifikation vollständig.
4. Lies anschließend alle Authoritative Inputs aus Abschnitt 1.
5. Führe vor dem ersten V0.14.0-Schreibzugriff das Initial Audit und das
   Reconciliation Gate aus.
6. Verwende den realen aktuellen Stand. Erzwinge keinen historischen Commit.
7. Setze nichts zurück. Verwende weder reset, clean, checkout alter Dateien,
   Rebase noch Stash, um den Arbeitsstand zu vereinfachen.
8. Bewahre jede legitime neuere Arbeit.
9. Verändere, verschiebe, lösche, stage oder committe keine geschützte
   untracked oder ignored Benutzerdatei.
10. Verändere niemals Dateien innerhalb JUCE/.
11. Verwende C++20 und die offizielle JUCE-9-CMake-API. Erzeuge kein
    Projucer-Projekt.
12. Schütze den Audiothread: keine Allokation, Sperre, Datei-/Netzwerkzugriffe,
    Logs, GUI-Zugriffe oder APVTS-/String-Lookups im Hot Path.
13. Installiere oder aktualisiere keine Abhängigkeit, Toolchain, Anwendung oder
    Systemkomponente.
14. COPY_PLUGIN_AFTER_BUILD bleibt FALSE.
15. Installiere oder kopiere VST3 oder EXE niemals automatisch in System- oder
    Benutzer-Anwendungsordner. Nur projektlokale Artifacts sind zulässig.
16. Entferne, umgehe oder schwäche keine bestehenden Tests, Grenzwerte,
    Warnungsregeln oder Kompatibilitätsprüfungen.
17. Ändere keine bestehende DSP-, Oszillator-, Filter-, Envelope-, Unison-,
    Transient-, Noise-, Modulations-, FX- oder Output-Funktionalität.
18. Bewahre exakt 16 vorallokierte Synthesizerstimmen.
19. Bewahre Plugin-IDs, Class-IDs, Buslayout, MIDI-I/O-Vertrag und alle
    bisherigen State-, Automation- und Presetverträge.
20. Stelle keine Cubase-, Standalone-, Hör- oder sonstige manuelle Abnahme als
    bestanden dar, bevor der Benutzer sie tatsächlich bestätigt hat.
21. Stoppe nur bei einem echten externen Blocker, einem ungelösten schweren
    Fehler oder einer erforderlichen neuen Produktentscheidung. Dokumentiere
    dann konkrete Evidenz und die genau fehlende Entscheidung.
22. Keine Funktion aus späteren Milestones vorwegnehmen.

Der Sound-Manifest-Prüfsatz für jede Entscheidung lautet:

"Macht dies DeepPluck zu einem besseren Instrument für emotionale Deep-House-
Plucks?"

Wenn die Antwort nein ist, nicht implementieren.

===============================================================================
1. AUTHORITATIVE INPUTS AND PRECEDENCE
===============================================================================

Vor der Implementierung vollständig lesen:

1. AGENTS.md
2. Docs/Sound/DeepPluck_Sound_Manifest_v1.0.md
3. Docs/DeepPluck_V0.14.0_Scale_Aware_Voicing_Engine_
   Specification_Rev1.txt
4. diesen Masterprompt
5. README.md
6. ARCHITECTURE.md
7. CMakeLists.txt, .gitignore und .gitattributes
8. Source/Parameters/DeepPluckParameters.h/.cpp
9. Source/Parameters/DeepPluckParameterState.h/.cpp
10. Source/PluginProcessor.h/.cpp
11. Source/PluginEditor.h/.cpp
12. Source/GUI/DeepPluckEditorComponents.h/.cpp
13. Source/GUI/DeepPluckGuiSupport.h/.cpp
14. Source/GUI/DeepPluckStandaloneKeyboard.h/.cpp
15. Source/Synth/DeepPluckSynthesiser.h/.cpp
16. Source/Synth/DeepPluckVoice.h/.cpp
17. alle übrigen Source/Synth-Dateien, soweit sie den MIDI-, Voice-, Reset-
    oder Controllerpfad berühren
18. Source/Presets/*
19. Source/Randomization/*
20. Presets/Factory/catalog.json und alle katalogisierten Factory-Presets
21. Tests/TestMain.cpp und alle aktuellen Test-, Smoke- und Verification-Dateien
22. Tests/PresetMenuHotfix.md
23. Tests/ReleaseCandidate.md
24. Tests/StandaloneVirtualMidiKeyboard.md
25. Docs/DeepPluck_V0.11.0_Parameter_Review_Compatibility_Freeze_
    Implementation_Report.md
26. Docs/DeepPluck_V0.12.0_Factory_Presets_Implementation_Report.md
27. Docs/DeepPluck_V0.12.75_Standalone_Virtual_MIDI_Keyboard_
    Implementation_Report.md
28. Docs/DeepPluck_V0.13.0_Release_Candidate_Implementation_Report.md
29. Docs/DeepPluck_V0.13.1_Preset_Menu_Hotfix_Implementation_Report.md
30. Git-Historie und alle beim Start vorhandenen neueren legitimen Dokumente

Konfliktpriorität:

1. ausdrückliche spätere Benutzeranweisung;
2. verbindliche V0.14.0-Spezifikation;
3. AGENTS.md und der eingefrorene V0.11.0-Kompatibilitätsvertrag;
4. Sound Manifest;
5. tatsächliche neueste legitime Repository-Architektur;
6. dieser Masterprompt;
7. frühere Dokumentation.

Eine spätere Benutzeranweisung überschreibt die Spezifikation nur dann, wenn sie
die abweichende Produktentscheidung eindeutig und ausdrücklich trifft. Jede
solche Abweichung zuerst in einer neuen Spezifikationsrevision dokumentieren.
Nicht stillschweigend improvisieren.

===============================================================================
2. CREATION SNAPSHOT - PROVENIENZ, KEIN CHECKOUT-ZIEL
===============================================================================

Bei Erstellung dieses Masterprompts wurde am 2026-09-11 read-only festgestellt:

- Repository: D:\0A_VST_Development
- Branch: master
- HEAD: 4a4bf0ee1aff453ebc27bf91718ffa3216fa74c4
- HEAD-Betreff: DeepPluck V0.13.1 Preset Menu Hotfix
- project(... VERSION ...): 0.13.1
- COPY_PLUGIN_AFTER_BUILD: FALSE
- Windows-Referenzumgebung:
  - 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
- öffentlicher Parametervertrag: exakt 62 Parameter, Index 0..61
- aktive Factory Library: exakt 116 freigegebene Presets
- Instrument: kein Audio-Input, Stereo-Output, MIDI-Input, kein MIDI-Output
- genau 16 vorallokierte Stimmen
- VST3-GUI: fest 1536 x 900
- Standalone-GUI: fest 1536 x 980 einschließlich Keyboard-Strip
- vorhandene untracked Benutzerdateien sind geschützt
- die Spezifikations- und Masterprompt-Datei sind autorisierte
  V0.14.0-Planungsdokumente

Alle Angaben beim späteren Start neu prüfen. Der Snapshot ist ausdrücklich kein
Checkout-, Reset- oder Clean-Ziel. Neuere legitime Arbeit hat Vorrang und wird
bewahrt.

===============================================================================
3. INITIAL AUDIT
===============================================================================

Vor dem ersten V0.14.0-Schreibzugriff:

[ ] Repository-Pfad, Branch, vollständigen HEAD und Betreff erfassen.
[ ] Vollständigen Git-Status einschließlich staged, unstaged, untracked und
    relevanter ignored Dateien erfassen.
[ ] Jeden vorhandenen tracked Diff vollständig lesen.
[ ] Untracked Einträge als autorisierte Projektarbeit oder geschützte
    Benutzerdatei klassifizieren; im Zweifel geschützt.
[ ] Geschützte Dateien mit Pfad, Größe und SHA-256 inventarisieren.
[ ] JUCE-Status und JUCE-Version prüfen.
[ ] build/ und Artifacts/ mit check-ignore prüfen.
[ ] COPY_PLUGIN_AFTER_BUILD prüfen.
[ ] Git-Historie seit dem Creation Snapshot prüfen.
[ ] Alle Authoritative Inputs vollständig lesen.
[ ] Aktuelle zentrale Projektversion erfassen.
[ ] Plugin-/Host-/Class-Identität und Bus-/MIDI-Vertrag erfassen.
[ ] Exaktes 62-Parameter-Istmanifest aus Code, Architektur und Tests erfassen.
[ ] State-, Migration-, Automation-, Preset-, Random-, Lock- und Undo-Verträge
    erfassen.
[ ] Factory-Katalog, 116 Dateien, Kategorien, IDs, Werte und Hashes prüfen.
[ ] Aktuelle MIDI-, Synthesizer-, Voice-Stealing-, Sustain-, Reset- und
    Standalone-Keyboard-Pfade nachvollziehen.
[ ] GUI-Attachmentzahl, Focus Order, Component IDs und MODULATION-Geometrie
    erfassen.
[ ] Registrierte Debug-/Release-Tests und externe Smokes inventarisieren.
[ ] Gültige V0.13.1-Build-/Artifact-/Testevidence identifizieren.
[ ] Reale Toolchain ermitteln.

Das Initial Audit ist read-only. Fehlende Informationen suchen, nicht erfinden.

===============================================================================
4. PRE-MILESTONE RECONCILIATION GATE
===============================================================================

Wenn tracked und staged unverändert sind:

1. ursprünglichen Branch, HEAD und Status dokumentieren;
2. geschützte untracked/ignored Dateien dokumentieren;
3. bestätigen, dass kein Reconciliation-Commit nötig ist;
4. den realen HEAD als V0.14.0 Start-HEAD verwenden.

Wenn tracked oder staged Änderungen vorhanden sind:

1. nichts resetten, stashen, verwerfen oder überschreiben;
2. vollständigen Status und Diff erfassen;
3. jede Änderung einer legitimen Arbeit oder unbekannter Benutzerarbeit
   zuordnen;
4. abgeschlossene, valide Vorarbeit nur mit expliziten Pfaden und klarer
   Commit-Nachricht sichern, sofern dafür bereits Autorisierung besteht;
5. unvollständige Vorarbeit zuerst sicher abschließen;
6. bei unbekannter oder überlappender Benutzerarbeit nicht raten, sondern die
   konkrete Kollision melden und die eine nötige Entscheidung anfordern.

Schutz:

- kein git add .;
- kein git add -A;
- keine geschützte Benutzerdatei;
- keine JUCE-Datei;
- kein build/ oder Artifacts/;
- vor jedem späteren Commit staged Dateiliste und staged Diff prüfen.

Nach dem Gate den eindeutigen V0.14.0 Start-HEAD dokumentieren.

===============================================================================
5. UNVERÄNDERTE V0.13.1-REFERENZ SICHERN
===============================================================================

Vor jeder Klang-, MIDI- oder Processoränderung eine echte unveränderte
V0.13.1-Referenz sichern.

Mindestens erfassen:

- Start-HEAD;
- Source- und CMake-Hashes;
- Toolchain und Konfiguration;
- Parameter- und Factory-Manifeste;
- repräsentative rohe Audio-Referenzrenders des vollständigen Processors;
- zugehörige MIDI-Inputs, Sample Rate, Buffergröße, Preset/State und Seed;
- Hashes und Provenienz.

Evidence ausschließlich projektlokal unter einem eindeutigen ignorierten
Artifacts/V0.14.0-Baseline-Pfad ablegen. Keine Systeminstallation.

Die Engine-Off-Abnahme muss später gegen diese echte Vorher-Referenz erfolgen.
Eine nach der Implementierung aus dem Kandidaten erzeugte Ersatzreferenz ist
unzulässig.

Wenn eine gültige, identisch rekonstruierbare V0.13.1-Referenz bereits vorhanden
ist, darf sie nach belegter Vergleichbarkeit wiederverwendet werden. Historische
Evidence nicht als neuen Lauf ausgeben.

===============================================================================
6. PRODUKTZIEL
===============================================================================

Eine einzelne eingehende MIDI-Note erzeugt bei aktivierter Engine abhängig von
vom Benutzer gewähltem Root und Scale automatisch den harmonisch korrekten
diatonischen Dreiklang oder Septakkord.

Die Akkordqualität ergibt sich aus der Skalenstufe. Es gibt keinen globalen
Major-/Minor-Schalter und keine vorgetäuschte automatische Tonarterkennung.

Die Funktion dient fokussiert dem schnellen Spielen warmer, emotionaler,
musikalischer Deep-, Melodic-, Organic- und Progressive-House-Pluck-Folgen.
Sie ist kein Arranger, keine Begleitautomatik und keine Erweiterung zu einem
Allzweck-Synthesizer.

===============================================================================
7. FESTER FUNKTIONSUMFANG UND DEFAULTS
===============================================================================

Exakt sechs neue Controls:

1. On
2. Root
3. Scale
4. Chord
5. Inversion
6. Voicing

Choices:

- Root: C, C#, D, D#, E, F, F#, G, G#, A, A#, B
- Scale: Major, Natural Minor, Dorian, Harmonic Minor
- Chord: Triad, Seventh
- Inversion: Root, 1st, 2nd, 3rd / +8ve
- Voicing: Close, Open, Deep

Defaults:

- On = Off
- Root = C
- Scale = Major
- Chord = Seventh
- Inversion = Root
- Voicing = Open

On = Off ist migrations- und klangkompatibel. Ein neuer oder alter Zustand
behält zunächst exakt das bisherige V0.13.1-Spielverhalten.

===============================================================================
8. SKALENFREMDE NOTEN - VERBINDLICHE ENTSCHEIDUNG
===============================================================================

Eine Pitch Class außerhalb der gewählten Skala wird exakt als einzelne
unveränderte Note durchgereicht.

Verboten:

- Scale Snap;
- Verschieben zur nächsten Skalennote;
- Quantisieren;
- Verwerfen;
- automatische Major-/Minor-Deutung;
- zusätzliche Akkordtöne.

Beispiel C Major:

- C erzeugt den gewählten C-Akkord.
- C# bleibt genau eine C#-Note.
- D erzeugt den passenden D-Minor-Akkord.

Keine bewusst gespielte chromatische Note wird heimlich verändert.

===============================================================================
9. TRIGGER-, PRIORITY- UND OWNERSHIP-MODELL
===============================================================================

Bei Engine On arbeitet V0.14.0 als monophone Ein-Finger-Voicing-Engine mit
Last-Note-Priority:

- genau ein eingehender Trigger besitzt zu einem Zeitpunkt den aktiven Akkord;
- eine neue Note ersetzt den vorherigen Akkord samplegenau;
- alte generierte Note-Offs stehen an derselben Sampleposition vor neuen
  generierten Note-Ons;
- wird die aktive Taste losgelassen, kehrt die Engine zur zuletzt noch
  physisch gehaltenen Taste zurück;
- dafür werden deren gelatchte Velocity, Kanal und Akkorddefinition verwendet;
- sind keine Trigger mehr gehalten, endet der aktive Akkord vollständig;
- wiederholte gleiche Note-Ons und out-of-order Note-Offs verwenden feste
  deterministische Zähl- und Ownership-Regeln.

Engine Off bewahrt die bisherige polyphone Spielweise unverändert.

Mehrere gleichzeitig unabhängige Ein-Finger-Akkorde sind nicht Teil von
V0.14.0. Keine halbfertige polyphone Chord-Ownership vorwegnehmen.

Root, Scale, Chord, Inversion und Voicing werden beim Trigger gelatcht.
Parameteränderungen verändern keinen bereits klingenden Akkord. Sie gelten ab
dem nächsten Trigger.

Umschalten:

- Off -> On: gehaltene Noten nicht rückwirkend erweitern.
- On -> Off: alle von der Engine gehaltenen Akkordnoten sicher beenden.
- Eine weiterhin physisch gehaltene Triggernote nicht künstlich neu anschlagen.
- Der nächste Note-On verwendet den normalen Pfad.

Velocity-0-Note-On wie Note-Off behandeln.

Sustain/CC64, All Notes Off, All Sound Off, Panic, Host-Stop, State Load,
prepare/release resources und Plugin-Reset dürfen keine hängende oder falsch
zugeordnete Note hinterlassen.

===============================================================================
10. SKALEN- UND AKKORDTABELLEN
===============================================================================

Skalenintervalle relativ zum Root:

Scale             Degree 1  2  3  4  5  6  7
Major                    0  2  4  5  7  9 11
Natural Minor            0  2  3  5  7  8 10
Dorian                   0  2  3  5  7  9 10
Harmonic Minor           0  2  3  5  7  8 11

Akkordqualitäten:

Maj       [0, 4, 7]
Min       [0, 3, 7]
Dim       [0, 3, 6]
Aug       [0, 4, 8]
Maj7      [0, 4, 7, 11]
Min7      [0, 3, 7, 10]
Dom7      [0, 4, 7, 10]
HalfDim7  [0, 3, 6, 10]
Dim7      [0, 3, 6, 9]
MinMaj7   [0, 3, 7, 11]
AugMaj7   [0, 4, 8, 11]

Major:

Degree  Triad                 Seventh
I       Maj  [0,4,7]          Maj7     [0,4,7,11]
ii      Min  [0,3,7]          Min7     [0,3,7,10]
iii     Min  [0,3,7]          Min7     [0,3,7,10]
IV      Maj  [0,4,7]          Maj7     [0,4,7,11]
V       Maj  [0,4,7]          Dom7     [0,4,7,10]
vi      Min  [0,3,7]          Min7     [0,3,7,10]
vii     Dim  [0,3,6]          HalfDim7 [0,3,6,10]

Natural Minor:

Degree  Triad                 Seventh
i       Min  [0,3,7]          Min7     [0,3,7,10]
ii      Dim  [0,3,6]          HalfDim7 [0,3,6,10]
III     Maj  [0,4,7]          Maj7     [0,4,7,11]
iv      Min  [0,3,7]          Min7     [0,3,7,10]
v       Min  [0,3,7]          Min7     [0,3,7,10]
VI      Maj  [0,4,7]          Maj7     [0,4,7,11]
VII     Maj  [0,4,7]          Dom7     [0,4,7,10]

Dorian:

Degree  Triad                 Seventh
i       Min  [0,3,7]          Min7     [0,3,7,10]
ii      Min  [0,3,7]          Min7     [0,3,7,10]
III     Maj  [0,4,7]          Maj7     [0,4,7,11]
IV      Maj  [0,4,7]          Dom7     [0,4,7,10]
v       Min  [0,3,7]          Min7     [0,3,7,10]
vi      Dim  [0,3,6]          HalfDim7 [0,3,6,10]
VII     Maj  [0,4,7]          Maj7     [0,4,7,11]

Harmonic Minor:

Degree  Triad                 Seventh
i       Min  [0,3,7]          MinMaj7  [0,3,7,11]
ii      Dim  [0,3,6]          HalfDim7 [0,3,6,10]
III     Aug  [0,4,8]          AugMaj7  [0,4,8,11]
iv      Min  [0,3,7]          Min7     [0,3,7,10]
V       Maj  [0,4,7]          Dom7     [0,4,7,10]
VI      Maj  [0,4,7]          Maj7     [0,4,7,11]
vii     Dim  [0,3,6]          Dim7     [0,3,6,9]

Die spannungsreicheren Augmented-, Diminished- und Minor-Major-Seventh-Fälle
sind beabsichtigt. Sie werden getestet und gehört, nicht stillschweigend durch
harmonisch falsche Akkorde ersetzt.

===============================================================================
11. EXAKTE MAPPING-REGEL
===============================================================================

Für eingehende MIDI-Note n und Root Pitch Class r:

pitchClass = n modulo 12
relativePitchClass = (pitchClass - r + 12) modulo 12

1. relativePitchClass in der gewählten Skalentabelle suchen.
2. Kein Treffer: n als einzelne unveränderte Note ausgeben.
3. Treffer: Tabellenindex bestimmt Degree 1..7.
4. Passende Triad- oder Seventh-Intervalle wählen.
5. Intervalle zur originalen MIDI-Note n addieren.
6. Inversion anwenden.
7. Voicing anwenden.
8. Oktavlage ausschließlich in 12-Halbton-Schritten nach 0..127 falten.
9. Aufsteigend sortieren.
10. Nur eventuell entstandene exakte Duplikate entfernen.

Die gespielte Note bestimmt Akkordgrundnote und Oktavlage. Root und Scale
bestimmen die diatonische Qualität.

===============================================================================
12. INVERSION UND VOICING
===============================================================================

Ausgangspunkt ist die aufsteigend sortierte Close-Grundstellung.

Inversion:

- Root: unverändert.
- 1st: tiefste Akkordnote +12, danach sortieren.
- 2nd: zwei ursprünglich tiefste Akkordnoten jeweils +12, danach sortieren.
- 3rd / +8ve:
  - Seventh: drei ursprünglich tiefste Akkordnoten jeweils +12; echte dritte
    Umkehrung.
  - Triad: alle drei Akkordnoten +12; Root Position +8ve, keine vorgetäuschte
    dritte Dreiklangsumkehrung.

Voicing nach Inversion:

- Close: unverändert.
- Open: zweithöchste Akkordnote -12, danach sortieren.
- Deep: Open anwenden, dann die nun tiefste Note nochmals -12.

MIDI-Grenzen:

- unter 0 oder über 127 ausschließlich oktavweise in den gültigen Bereich
  falten;
- Pitch Class und Akkordqualität bewahren;
- sortieren und exakte Duplikate entfernen;
- niemals mehrere auf 0 oder 127 geclampte Noten erzeugen.

Die tatsächliche Notenzahl nach Grenzfaltung und Deduplizierung bestimmt die
Velocity-Skalierung und Ownership.

===============================================================================
13. VELOCITY, DYNAMIK UND HEADROOM
===============================================================================

Für N tatsächlich erzeugte Noten:

generatedVelocity = inputVelocity / sqrt(N)

- Alle Akkordtöne erhalten denselben skalierten Float-Velocity-Wert.
- Nur auf den gültigen Bereich begrenzen.
- Velocity bleibt hörbar und musikalisch dynamisch.
- Kein Kompressor, Limiter, Clipper oder automatischer Master Gain.
- Kein verstecktes Maskieren von Clipping oder Instabilität.

Die Regel durch Peak-, Finite-, Dynamik-, Vergleichs- und Hörtests bestätigen.
Den Exponenten nicht eigenmächtig ändern. Eine Änderung verlangt eine
ausdrücklich genehmigte Spezifikationsrevision.

===============================================================================
14. APPEND-ONLY PARAMETERVERTRAG
===============================================================================

Der eingefrorene öffentliche Block 0..61 bleibt in jeder Eigenschaft
unverändert:

- Index;
- ID;
- Hostname;
- konkreter Parametertyp;
- Version Hint;
- Range;
- Intervall oder Choice-Reihenfolge;
- Default;
- Skew/Mapping;
- Raw Unit/Meaning;
- Text- und Parsersemantik;
- Automation.

Neue Parameter ausschließlich hinter Index 61 anhängen:

Index  ID              Hostname          Typ/Choices                    Default  Hint
62     chordEnabled    Chord Engine      Bool                           Off      2
63     chordRoot       Chord Root        C,C#,D,D#,E,F,F#,G,G#,A,A#,B   C        2
64     chordScale      Chord Scale       Major,Natural Minor,Dorian,    Major    2
                                         Harmonic Minor
65     chordSize       Chord             Triad,Seventh                  Seventh  2
66     chordInversion  Chord Inversion   Root,1st,2nd,3rd / +8ve        Root     2
67     chordVoicing    Chord Voicing     Close,Open,Deep                Open     2

V0.14.0 besitzt exakt 68 Hostparameter.

Implementierungsregeln:

- diskrete bool/choice Parameter;
- kein Audio-Gain-Smoothing;
- Raw-Pointer außerhalb des Hot Paths binden;
- einmal validierter, begrenzter Snapshot pro Block;
- keine APVTS-ID-/String-Suche im Voice- oder Samplepfad;
- fehlende, ungültige, nichtfinite oder außerhalb des Choice-Bereichs liegende
  Werte deterministisch kanonisieren.

===============================================================================
15. HOST STATE, MIGRATION UND AUTOMATION
===============================================================================

- Host State speichert und restauriert alle 68 Parameter.
- V0.13.1- und ältere States erhalten für fehlende Chord-Werte exakt die
  definierten Defaults, insbesondere chordEnabled = Off.
- Der bestehende 62er-Soundzustand bleibt raw-identisch.
- Plugin-IDs, Manufacturer/Plugin Codes, Bundle ID und VST3-Class-IDs bleiben
  unverändert.
- Kein Audio-Input, Stereo-Output, MIDI-Input und kein MIDI-Output bleiben
  unverändert.
- Alte Automationsspuren bleiben an ihren bisherigen Indizes und IDs wirksam.
- Die sechs neuen Automationsparameter erscheinen ausschließlich an 62..67.
- Parameteränderungen innerhalb eines klingenden Akkords gelten erst beim
  nächsten Trigger.

State-Load beendet aktive Engine-Ownership sicher, bevor der neue Zustand
wirksam wird. Keine Note darf über einen State-Wechsel hängen bleiben.

===============================================================================
16. SOUND-PRESET- UND RANDOM-VERTRAG
===============================================================================

Die Scale-Aware Voicing Engine ist ein projektbezogenes Performance-Werkzeug,
kein Teil eines DeepPluck-Sound-Presets.

Verbindlich:

- Factory-, User-, Pack- und Imported-Presets enthalten weiter exakt die
  eingefrorenen 62 Soundwerte.
- JustALilPluckPreset schemaVersion 1 bleibt unverändert.
- Kein Factory-Preset und kein catalog.json ändern.
- Die 116 aktiven Factory-Presets bleiben in Name, ID, Kategorie, Werten,
  Reihenfolge und Hash unverändert.
- Preset Load, Save, Save As, Delete, Refresh und Folder-Funktionen bewahren
  alle sechs Chord-Werte.
- Presetwechsel setzt On, Root, Scale, Chord, Inversion oder Voicing nicht
  zurück.
- Factory-Fingerprint und Custom-Erkennung vergleichen nur die 62 Soundwerte.
- Alte Presetdateien bleiben unverändert lesbar.
- User Save/Save As schreibt genau 62 Soundwerte, niemals 68.
- Master Random, Module Random, Amount, Locks und Random Undo verändern keinen
  der sechs Chord-Werte.
- Für ausgeschlossene Chord-Werte werden keine zusätzlichen RNG-Ziehungen
  konsumiert.
- Kein neues RandomizationModule.
- Kein Random-/Lock-Paar im Chord-Panel.

Den 62-Werte-Soundzustand explizit vom vollständigen 68-Parameter-Hostzustand
trennen. Keine bestehende Preset-Struktur unbemerkt auf 68 erweitern.

===============================================================================
17. ARCHITEKTUR UND REALTIME-SICHERHEIT
===============================================================================

Bevorzugte Architektur:

- fokussierte neue Klasse, beispielsweise DeepPluckScaleAwareVoicingEngine;
- eigene kleine Header-/CPP-Dateien in einem passenden Source-Unterordner;
- Skalen-/Akkordtabellen, Triggerstack, Sustainzustand, Mapping und Ownership
  liegen in dieser Klasse;
- Processor orchestriert;
- Editor besitzt keine musikalische Logik;
- Transformation liegt im MIDI-Pfad vor der bestehenden
  DeepPluckSynthesiser-Eventverarbeitung;
- Standalone-Keyboard und externer MIDI-Eingang laufen durch denselben Pfad;
- kein MIDI-Ausgang.

Engine Off:

- ursprünglichen MIDI-Pfad direkt und ohne Transformation verwenden;
- keine Klangänderung;
- bitidentischer vollständiger Audioausgang;
- keine relevante CPU-Regression.

Realtime:

- feste Arrays, Bitsets oder andere vollständig bounded Strukturen;
- kein Heapwachstum und keine Collection Growth im Audiothread;
- keine Locks;
- keine Datei-/Netzwerkzugriffe;
- kein Logging;
- kein GUI-Zugriff;
- keine APVTS-Stringsuche;
- keine unbounded Schleife;
- deterministischer maximaler Aufwand.

MIDI-Events:

- Original-Sampleoffset, Kanal und Velocity bewahren;
- generierte Note-Offs vor Note-Ons an gleicher Position;
- generierte Note-Ons deterministisch aufsteigend sortieren;
- Controllerdaten unverändert weiterreichen;
- Overflow-Vertrag explizit implementieren und testen;
- bei Kapazitätsgrenze Note-Off, All Notes Off und Reset immer priorisieren;
- neue Note-Ons bei Bedarf kontrolliert unterdrücken;
- niemals still dynamisch reallokieren;
- niemals eine hängende Note riskieren.

Vorhandene DSP-Klassen bleiben unverändert, sofern kein reproduzierbarer
Integrationsfehler zwingend eine minimale Korrektur erfordert. Eine solche
Abweichung zuerst dokumentieren und gegen Engine-Off-Nullvergleich prüfen.

===============================================================================
18. GUI
===============================================================================

Auf der MODULATION-Seite die absichtlich freie untere Fläche verwenden.

Neues Panel:

CHORD VOICING

Controls:

- On Toggle
- Root Choice
- Scale Choice
- Chord Choice
- Inversion Choice
- Voicing Choice

Anforderungen:

- vorhandene VST3- und Standalone-Fenstergröße unverändert;
- keine neue Hauptseite;
- kein Popup-Editor;
- kein GUI-Redesign;
- ruhige, klare, streng ausgerichtete Reihe oder gleichmäßiges Raster;
- bestehendes Look-and-Feel, Teal/Amber-Hierarchie und 3D-Reglerstil;
- genau sechs neue Attachments;
- eindeutige Component IDs;
- vollständiger Hover Help;
- Tastaturfokus und logische Focus Order;
- sichtbare Auswahlwerte;
- korrekte Disabled-/Dimmed-Darstellung;
- fünf abhängige Controls dürfen bei On = Off gedimmt sein, bleiben aber
  einstellbar;
- Inversion Hover Help erklärt Triad 3rd / +8ve und echte Seventh 3rd;
- keine Random-/Lock-Buttons;
- kein Live-Akkordname und kein Notendisplay.

Alle bisherigen MODULATION-, FX-, MAIN-, SETTINGS-, Header-, Footer-,
Preset- und Outputmeter-Geometrien und Funktionen bewahren.

===============================================================================
19. TEST-FIRST-IMPLEMENTIERUNGSSTRATEGIE
===============================================================================

Die Implementierung erfolgt in kleinen, nachweisbaren Schritten.

Phase A - Schutz und reine Musiklogik:

1. eingefrorenes 0..61-Manifest als unveränderte Baseline prüfen;
2. exakte Tabellen-/Mappingtests hinzufügen;
3. kleine reine Mappingklasse implementieren;
4. 672 Grundabbildungen und Transpositionsinvarianz grün machen;
5. Out-of-scale-Pass-through vollständig testen;
6. Inversion, Voicing, MIDI-Grenzen und Deduplizierung testen.

Phase B - Realtime-MIDI und Ownership:

1. fixed-capacity Trigger-/Ownershipstruktur testen;
2. Note-On/Off, Last-Note-Priority und Restore-Verhalten implementieren;
3. Sustain, wiederholte Notes, Kanäle, Reset und Overflow implementieren;
4. Eventorder und Sampleposition exakt testen;
5. keine Processor-/GUI-Integration vor bestandener Kernlogik.

Phase C - Parameter, State und Presets:

1. sechs Parameter ausschließlich 62..67 anhängen;
2. vollständigen 68er-Manifesttest hinzufügen;
3. Raw-Pointer und validierten Blocksnapshot ergänzen;
4. Host-State-Migration testen;
5. 62er-Presetgrenze explizit absichern;
6. Factory-/Random-/Undo-Nichtbeeinflussung testen.

Phase D - Processor und Audio:

1. Engine vor Synth-MIDI-Verarbeitung integrieren;
2. Engine-Off-Direktpfad erhalten;
3. Standalone-Keyboard und externen MIDI-Pfad gemeinsam prüfen;
4. Engine-Off-Nullvergleich ausführen;
5. Engine-On gegen manuell eingespielte Referenznoten prüfen;
6. Headroom, Finite, Dynamik und CPU prüfen.

Phase E - GUI und Dokumentation:

1. Panel in der freien MODULATION-Fläche ergänzen;
2. genau sechs Attachments und IDs prüfen;
3. Hover, Focus, Auswahltexte und Geometry testen;
4. README, ARCHITECTURE, Testdokumentation und Report synchronisieren.

Nach jedem Schritt nur die kleinste relevante Testmenge ausführen. Vollständige
Debug-/Release-Abnahme erst nach stabilem Integrationsstand.

===============================================================================
20. AUTOMATISIERTE TESTMATRIX
===============================================================================

20.1 Tabellen

[ ] 12 Roots x 4 Scales x 7 Degrees x 2 Chord Sizes = 672 exakte Mappings.
[ ] Alle Maj/Min/Dim/Aug/Maj7/Min7/Dom7/HalfDim7/Dim7/MinMaj7/AugMaj7-Fälle.
[ ] Mod-12-Transpositionsinvarianz aller Roots.
[ ] Alle skalenfremden Pitch Classes in allen 48 Root/Scale-Kombinationen:
    genau eine unveränderte Note.

20.2 Inversion und Voicing

[ ] Root, 1st, 2nd und 3rd / +8ve für Triad.
[ ] Root, 1st, 2nd und 3rd für Seventh.
[ ] Close, Open und Deep.
[ ] Repräsentative tiefe, mittlere und hohe Lagen.
[ ] MIDI 0, 1, 11, 12, 60, 116, 126 und 127.
[ ] Pitch Classes korrekt.
[ ] Alle Ausgaben 0..127.
[ ] Stabile Sortierung.
[ ] Keine geclampte Mehrfachnote.
[ ] Korrekte Deduplizierung.

20.3 Events und Ownership

[ ] Sampleoffset exakt erhalten.
[ ] MIDI-Kanal exakt erhalten.
[ ] Velocityregel exakt.
[ ] Alte Offs vor neuen Ons bei gleicher Sampleposition.
[ ] Aufsteigende deterministische Note-On-Reihenfolge.
[ ] Velocity-0-Note-On als Note-Off.
[ ] Last-Note-Priority.
[ ] Rückkehr zur zuletzt gehaltenen Taste.
[ ] Wiederholte gleiche Note-Ons.
[ ] Out-of-order Note-Offs.
[ ] Mehrere MIDI-Kanäle.
[ ] Leere Blocks und Blockgrenzen.
[ ] Sustain Down/Up.
[ ] All Notes Off.
[ ] All Sound Off.
[ ] Panic.
[ ] Host Stop.
[ ] State Load.
[ ] prepare/release.
[ ] Engine On/Off bei gehaltenen Noten.
[ ] Kein falscher Owner.
[ ] Keine hängende Note oder unendliche Stimme.
[ ] Bounded Overflow ohne Heapwachstum.

20.4 Parameter und State

[ ] Exakt 68 Hostparameter.
[ ] 0..61 Feld für Feld identisch zum eingefrorenen Manifest.
[ ] 62..67 exakt gemäß Abschnitt 14.
[ ] Alte V0.13.1- und ältere States: Engine Off, alter Sound unverändert.
[ ] Neuer State restauriert alle sechs Werte.
[ ] Fehlende, ungültige und nichtfinite Werte sicher kanonisiert.
[ ] Identity, Class-IDs, Buslayout und MIDI-I/O unverändert.

20.5 Presets und Random

[ ] Exakt 116 Factory-Presets unverändert.
[ ] Namen, IDs, Kategorien, Werte, Reihenfolge und Hashes unverändert.
[ ] Factory/User/Pack/Imported Load bewahrt sechs Chord-Werte.
[ ] Save/Save As schreibt genau 62 Soundwerte.
[ ] Alte User-Presets laden unverändert.
[ ] Custom/Fingerprint ignoriert Chord-Werte.
[ ] Random/Amount/Locks/Undo bewahren Chord-Werte.
[ ] RNG-Sequenz der bisherigen 60 randomisierten Soundwerte unverändert.

20.6 Audio

[ ] Engine Off: vollständiger Nullvergleich gegen echte V0.13.1-Referenz.
[ ] Engine On: identisch zum manuell eingespielten Notensatz mit identisch
    skalierten Velocities.
[ ] Finite-Ausgang über Scales, Sizes, Inversions und Voicings.
[ ] 44.1, 48 und 96 kHz.
[ ] Repräsentative Buffergrößen einschließlich klein und normal.
[ ] Peak/Headroom bei Velocity 1.0, Unison 4, beiden Oszillatoren,
    Transient/Noise und aktivem FX-Rack.
[ ] Kein versteckter Limiter oder Clipper.
[ ] Velocity 0.2, 0.5, 0.8 und 1.0 sinnvoll dynamisch geordnet.
[ ] Engine Off ohne relevante CPU-Regression.
[ ] Engine On in Typical, Dense und Worst Case bounded.

20.7 GUI

[ ] Unveränderte Hauptgeometrien.
[ ] Genau sechs neue Controls und Attachments.
[ ] Eindeutige Component IDs.
[ ] Exakte Choices und Defaults.
[ ] Hover Help und Focus Order.
[ ] Disabled/Dimmed-Verhalten.
[ ] Page Switch verändert keine Parameter.
[ ] Bestehende GUI-Funktionen und Preset-Untermenüs unverändert.

===============================================================================
21. BUILD-, TEST- UND ARTIFACT-ABNAHME
===============================================================================

Nach stabilem Code- und Dokumentationsstand:

1. Toolchain-Preflight.
2. Frischer Configure:

   cmake --fresh -S . -B build -G "Visual Studio 18 2026" -A x64

3. Debug:

   cmake --build build --config Debug --parallel
   ctest --test-dir build -C Debug --output-on-failure

4. Release:

   cmake --build build --config Release --parallel
   ctest --test-dir build -C Release --output-on-failure

5. Bestehende externe relevante Tests und Smokes ausführen.
6. Neue Scale-Aware-Tests in beiden Konfigurationen ausführen.
7. Artifact-Version- und Copy-Checks für beide Konfigurationen.
8. Native VST3-Factory-Smokes.
9. Standalone Start/Normal-Close-Smokes.

Erforderlich:

- keine Compilerfehler;
- keine neuen Compilerwarnungen;
- alle registrierten CTests Debug/Release bestanden;
- Debug VST3 vorhanden;
- Debug Standalone vorhanden;
- Release VST3 vorhanden;
- Release Standalone vorhanden;
- lokale Kopien unter Artifacts vorhanden und gültig;
- alle echten Ziele melden exakt Version 0.14.0;
- project(... VERSION ...) bleibt einzige aktuelle Versionsquelle;
- COPY_PLUGIN_AFTER_BUILD FALSE;
- keine automatische Systeminstallation;
- build/ und Artifacts/ ignoriert und unstaged;
- JUCE/ unverändert;
- geschützte Benutzerdateien unverändert.

Wenn nach einem finalen Lauf Source, Testlogik, CMake oder produktrelevante
Dokumentation geändert wird, betroffene finale Gates wiederholen.

===============================================================================
22. MANUELLE HÖRREFERENZEN
===============================================================================

In Cubase und soweit sinnvoll im Standalone mit einzelnen Triggernoten prüfen:

C Major, Seventh:

C - A - F - G
Erwartung: Cmaj7 - Am7 - Fmaj7 - G7

A Natural Minor, Seventh:

A - F - C - G
Erwartung: Am7 - Fmaj7 - Cmaj7 - G7

D Dorian, Seventh:

D - G - C - D
Erwartung: Dm7 - G7 - Cmaj7 - Dm7

A Harmonic Minor, Seventh:

A - D - E - A
Erwartung: AmMaj7 - Dm7 - E7 - AmMaj7

Chromatik C Major:

C - C# - D
Erwartung: C-Akkord, einzelne unveränderte C#-Note, D-Minor-Akkord.

Zusätzlich:

[ ] Triads und Sevenths.
[ ] Alle Inversions und Voicings.
[ ] Tiefe, mittlere und hohe Lagen.
[ ] Langsame und schnelle Folgen.
[ ] Überlappende gehaltene Tasten.
[ ] Rückkehr per Last-Note-Priority.
[ ] Sustain und wiederholte Noten.
[ ] Keine hängenden Noten, Klicks oder verlorenen Note-Offs.
[ ] Musikalische Lautheitsbalance zum Einzelnotenmodus.
[ ] Genügend Headroom.
[ ] Warm, kontrolliert und DeepPluck-typisch.
[ ] Aug/Dim/MinMaj7/AugMaj7 musikalisch bewusst geprüft.

Mathematische Korrektheit allein ist keine Hörfreigabe.

===============================================================================
23. MANUELLE CUBASE-VALIDIERUNG
===============================================================================

[ ] VST3 wird erkannt und lädt.
[ ] Alte V0.13.1-Projekte öffnen unverändert mit Engine Off.
[ ] Alte Presets und Automation bleiben wirksam.
[ ] Automation zeigt zuerst unverändert 0..61, danach genau 62..67.
[ ] Alle sechs neuen Parameter automatisierbar.
[ ] Projekt Save/Close/Reopen restauriert alle sechs Chord-Werte.
[ ] Presetwechsel bewahrt Chord-Einstellungen.
[ ] Factory-, User-, Pack- und Imported-Presets funktionieren.
[ ] MIDI-Keyboard und MIDI-Clips.
[ ] Samplegenaue schnelle Retrigger.
[ ] Überlappende Trigger und Last-Note-Restore.
[ ] Sustain-Pedal.
[ ] Stop/Start, Loop, Locate und Transportwechsel.
[ ] All Notes Off/Panic.
[ ] Instanz entfernen während gehaltener Noten.
[ ] Kein Hänger, Crash, Klick oder falsches Note-Off.
[ ] Keine unerwartete Pegel- oder CPU-Regression.
[ ] Hörreferenzen aus Abschnitt 22 bestätigt.

Die manuelle Cubase-Abnahme bleibt OPEN, bis der Benutzer sie ausdrücklich
bestätigt.

===============================================================================
24. MANUELLE STANDALONE-VALIDIERUNG
===============================================================================

[ ] Standalone startet und schließt normal.
[ ] Virtuelles Keyboard erzeugt dieselben Akkorde.
[ ] Externer MIDI-Eingang erzeugt dieselben Akkorde.
[ ] Weiße und schwarze Tasten.
[ ] Mouse Note On/Off und Drag.
[ ] Octave -/+ einschließlich Grenzen.
[ ] Engine On/Off bei gehaltenen Tasten.
[ ] Panic/Reset.
[ ] Audio-/MIDI-Gerätewechsel.
[ ] Presetwechsel bewahrt Chord-Einstellungen.
[ ] Keine hängende Note beim Schließen.
[ ] Fenstergeometrie unverändert und Panel vollständig sichtbar.

Automatischer Start/Close-Smoke ersetzt keine manuelle Audio-/MIDI-Abnahme.

===============================================================================
25. DOKUMENTATION
===============================================================================

Synchron aktualisieren:

- README.md
- ARCHITECTURE.md
- Tests/ScaleAwareVoicingEngine.md
- Docs/DeepPluck_V0.14.0_Scale_Aware_Voicing_Engine_
  Implementation_Report.md
- weitere tatsächlich betroffene Test-/Workflowdokumente

Dokumentieren:

- Produktzweck und bewusste Grenzen;
- vollständige Choices und Defaults;
- skalenfremdes Pass-through;
- monophone Last-Note-Priority;
- Skalen-/Akkordtabellen;
- Inversion und Voicing;
- Velocity-/Headroom-Regel;
- Parameter 62..67;
- 0..61-Freeze;
- Host-State-Migration;
- 62er-Sound-Presetgrenze;
- Random-Ausschluss;
- Architektur und Realtime-Sicherheit;
- GUI-Platzierung;
- Tests und reale Resultate;
- Engine-Off-Nullvergleich;
- Build-/Artifact-Ergebnisse;
- manuelle PASS/FAIL/OPEN-Punkte;
- bekannte Einschränkungen;
- Git- und Schutzstatus.

Keine geplante Funktion als vorhanden darstellen. Keine manuelle Prüfung
erfinden.

===============================================================================
26. VERSIONIERUNG
===============================================================================

Die zentrale Projektversion erst dann von 0.13.1 auf 0.14.0 setzen, wenn:

- Kernlogik und Integration stabil sind;
- Parameter- und Migrationsvertrag implementiert ist;
- gezielte Tests bestanden sind;
- keine grundlegende Architekturfrage mehr offen ist.

project(... VERSION ...) bleibt die einzige aktuelle Versionsquelle.

Danach alle generierten Versionen prüfen:

- VST3;
- Standalone;
- Windows VERSIONINFO;
- About;
- Footer;
- lokale Debug-/Release-Kopien.

Keine hart codierte konkurrierende aktuelle Versionsquelle einführen.

===============================================================================
27. OUT OF SCOPE
===============================================================================

Nicht implementieren:

- Strumming;
- zeitversetzte Akkordtöne;
- automatisches Voice Leading;
- automatische Tonart- oder Akkorderkennung;
- Cubase Chord Track;
- MIDI-Ausgabe;
- MPE oder per-note Expression;
- frei programmierbare Akkordintervalle;
- Chord Learn oder Chord Memory;
- Arpeggiator;
- Sequencer;
- Scale Snap;
- polyphone unabhängige Chord Trigger;
- Randomisierung der Chord Engine;
- neue Factory-Presets;
- Änderungen vorhandener Factory-Sounds;
- Live-Akkordname oder Notendisplay;
- neue Effekte;
- neue Oszillatoren;
- neue Modulationsziele;
- GUI-Redesign;
- Responsive Layout oder Resizing;
- Installer, Updater, Signierung, Upload, Tag oder Push.

Strumming und Voice Leading frühestens in einem separat spezifizierten
V0.14.1-Milestone.

===============================================================================
28. BINDING IMPLEMENTATION ORDER
===============================================================================

1. Authoritative Inputs vollständig lesen.
2. Initial Audit read-only abschließen.
3. Reconciliation Gate abschließen.
4. eindeutigen V0.14.0 Start-HEAD dokumentieren.
5. geschützte Dateien und JUCE-Basis inventarisieren.
6. echte V0.13.1-Audio-/Kompatibilitätsreferenz sichern.
7. Tabellen-, Mapping-, Inversions- und Pass-through-Tests ergänzen.
8. reine, fokussierte Mappinglogik implementieren.
9. fixed-capacity Trigger-/Ownershiptests ergänzen.
10. Last-Note-, Sustain-, Reset-, Eventorder- und Overflowlogik implementieren.
11. exakten 0..61-Freeze maschinell absichern.
12. Parameter 62..67 append-only ergänzen.
13. Host-State-Migration und Kanonisierung implementieren.
14. 62er-Preset-/Factory-/Random-Grenzen absichern.
15. Engine in den Processor-MIDI-Pfad vor dem Synth integrieren.
16. Engine-Off-Direktpfad und Nullvergleich absichern.
17. Engine-On-Audiovergleich und Headroomtests ergänzen.
18. CHORD VOICING Panel in der freien MODULATION-Fläche ergänzen.
19. GUI-Attachments, IDs, Hover, Focus und Geometry testen.
20. Fast-/Targeted-Tests nach jedem betroffenen Schritt ausführen.
21. Version zentral auf 0.14.0 setzen, sobald der Kandidat stabil ist.
22. README, ARCHITECTURE, Testdokument und Report aktualisieren.
23. Realtime- und Ownership-Code-Review durchführen.
24. frischen Visual-Studio-2026-x64-Configure ausführen.
25. vollständigen Debug Build und Debug CTests ausführen.
26. vollständigen Release Build und Release CTests ausführen.
27. Artifact-, Version-, VST3- und Standalone-Smokes ausführen.
28. vollständigen Implementation Report schreiben.
29. Schutz-, JUCE-, Ignore- und Git-Status prüfen.
30. Automatable DoD ehrlich entscheiden.
31. Manuelle Cubase-/Standalone-/Hörpunkte als OPEN übergeben.
32. Nach Benutzerabnahme Report aktualisieren und erforderliche Dokuchecks
    wiederholen.
33. Erst nach vollständigem DoD und ausdrücklicher Commit-Freigabe explizite
    V0.14.0-Dateien stagen, staged Diff prüfen und committen.
34. Kein Push.

===============================================================================
29. AUTOMATABLE DEFINITION OF DONE
===============================================================================

Repository und Schutz:

[ ] Initial Audit vollständig.
[ ] Reconciliation Gate vollständig.
[ ] eindeutiger V0.14.0 Start-HEAD.
[ ] keine Benutzerarbeit verloren oder überschrieben.
[ ] JUCE/ unverändert.
[ ] geschützte untracked/ignored Dateien unverändert.
[ ] build/ und Artifacts/ ignoriert und unstaged.
[ ] COPY_PLUGIN_AFTER_BUILD FALSE.
[ ] keine Systeminstallation.

Kompatibilität:

[ ] 0..61 vollständig unverändert.
[ ] genau sechs neue Parameter ausschließlich 62..67.
[ ] exakt 68 Hostparameter.
[ ] Plugin-/Class-/Bus-/MIDI-Identität unverändert.
[ ] alte State-/Automation-Kompatibilität bestanden.
[ ] neue State-Restaurierung bestanden.
[ ] alte States starten mit Engine Off.
[ ] exakt 16 Stimmen.

Musiklogik und MIDI:

[ ] alle 672 Grundabbildungen bestanden.
[ ] alle skalenfremden Fälle unverändert durchgereicht.
[ ] alle Inversions-/Voicing-/MIDI-Grenztests bestanden.
[ ] Last-Note-Priority und Restore bestanden.
[ ] Sustain, Reset, Toggle und Overflow bestanden.
[ ] keine hängenden Noten.
[ ] deterministisch und realtime-sicher.

Presets und Random:

[ ] exakt 116 Factory-Presets unverändert.
[ ] Presetdateien weiter exakt 62 Soundwerte.
[ ] Factory/User/Pack/Imported bestanden.
[ ] Chord-Werte bleiben bei Presetvorgängen erhalten.
[ ] Random/Amount/Locks/Undo unverändert.

Audio und Performance:

[ ] Engine Off bitidentisch zur echten V0.13.1-Referenz.
[ ] Engine On entspricht manuellen Akkordnoten.
[ ] keine NaNs/Infs.
[ ] Peak-/Headroomtests bestanden.
[ ] Velocity-Dynamik bestanden.
[ ] kein Limiter/Clipper hinzugefügt.
[ ] keine relevante Engine-Off-CPU-Regression.
[ ] Engine-On-Last bounded.

GUI:

[ ] Panel vollständig und ruhig integriert.
[ ] Fenstergrößen unverändert.
[ ] genau sechs Controls/Attachments.
[ ] IDs, Hover, Focus und Disabled States bestanden.
[ ] keine Regression auf anderen Seiten.

Builds und Tests:

[ ] Debug Build bestanden.
[ ] Release Build bestanden.
[ ] keine Compilerfehler.
[ ] keine neuen Compilerwarnungen.
[ ] vollständige Debug CTest Suite bestanden.
[ ] vollständige Release CTest Suite bestanden.
[ ] VST3- und Standalone-Smokes bestanden.
[ ] Artifact-/Versionschecks bestanden.
[ ] Debug/Release VST3 und Standalone vorhanden.
[ ] lokale Kopien vorhanden und gültig.

Dokumentation:

[ ] README aktuell.
[ ] ARCHITECTURE aktuell.
[ ] Testdokument aktuell.
[ ] Implementation Report vollständig.
[ ] bekannte Einschränkungen ehrlich.
[ ] manuelle Punkte nicht als bestanden erfunden.

Automatable-complete bedeutet nicht automatisch manuell abgenommen.

===============================================================================
30. VOLLSTÄNDIGE MILESTONE DEFINITION OF DONE
===============================================================================

V0.14.0 ist vollständig abgeschlossen, wenn zusätzlich zur Automatable DoD:

[ ] Cubase-Validierung vom Benutzer bestätigt.
[ ] Standalone-Audio-/MIDI-Validierung bestätigt.
[ ] harmonische Tabellen und Hörreferenzen bestätigt.
[ ] Lautheitsbalance und Headroom praktisch bestätigt.
[ ] keine hängenden Noten oder auffälligen Fehler festgestellt.
[ ] Implementation Report enthält die reale manuelle Bestätigung.
[ ] Git-Status zeigt nur beabsichtigte Projektänderungen.
[ ] Benutzer hat den Commit ausdrücklich freigegeben.
[ ] nur explizite V0.14.0-Pfade wurden gestaged.
[ ] staged Diff wurde vollständig geprüft.
[ ] lokaler V0.14.0-Commit erstellt und Hash dokumentiert.
[ ] kein Push.

Ein offener manueller Punkt bleibt OPEN. Er darf nicht als PASS formuliert
werden und verhindert die Aussage "V0.14.0 vollständig abgeschlossen".

===============================================================================
31. IMPLEMENTATION REPORT REQUIREMENTS
===============================================================================

Der Report enthält mindestens:

Git und Baseline:

1. Datum und Zeitzone.
2. ursprünglicher Branch, HEAD, Betreff und Status.
3. staged/unstaged/untracked/ignored Klassifikation.
4. geschützte Dateien und Vorher-/Nachher-Nachweis.
5. Reconciliation-Ergebnis.
6. V0.14.0 Start-HEAD.
7. V0.13.1-Referenzprovenienz.

Implementierung:

8. betroffene Dateien und Verantwortung.
9. Skalen-/Akkordtabellen.
10. Mapping-, Inversions- und Voicingregeln.
11. Out-of-scale-Pass-through.
12. Trigger-/Ownership-/Sustain-/Reset-Architektur.
13. Velocity-/Headroom-Regel.
14. Parameter 62..67.
15. 0..61-Freeze-Nachweis.
16. State-/Migration-/Automation-Verhalten.
17. Preset-/Factory-/Random-Grenze.
18. Processor- und Standalone-Integration.
19. GUI-Panel und Attachments.
20. Realtime-Code-Review.
21. begründete Abweichungen oder keine Abweichung.

Tests:

22. alle Targeted-/Fast-Testläufe.
23. 672-Matrix-Ergebnis.
24. Ownership-/Sustain-/Overflow-Ergebnis.
25. Parameter-/State-/Preset-/Random-Ergebnis.
26. Engine-Off-Nullvergleich mit Hash/Provenienz.
27. Engine-On-Manuellvergleich.
28. Headroom-/Finite-/Dynamikergebnis.
29. CPU-Vergleich.
30. finaler Fresh Configure.
31. Debug Build und vollständige CTest-Anzahl.
32. Release Build und vollständige CTest-Anzahl.
33. Warnungsbilanz.
34. VST3-/Standalone-Smokes.
35. Artifact-/Versionschecks.
36. reale Artifact-Pfade, Größen, Hashes und Versionen.

Manuell:

37. Cubase PASS/FAIL/OPEN.
38. Standalone PASS/FAIL/OPEN.
39. Harmonische Hörreferenzen PASS/FAIL/OPEN.
40. Lautheit/Headroom PASS/FAIL/OPEN.
41. keine erfundene Benutzerabnahme.

Abschluss:

42. JUCE unchanged.
43. protected files unchanged.
44. build/Artifacts ignored and unstaged.
45. COPY_PLUGIN_AFTER_BUILD FALSE.
46. no system install.
47. no push.
48. automatable DoD Entscheidung.
49. vollständige Milestone-DoD Entscheidung.
50. Commit-Hash erst nach tatsächlichem Commit.

Wesentliche Evidence-Ergebnisse müssen lesbar im Report stehen und dürfen nicht
ausschließlich in ignorierten Dateien verborgen sein.

===============================================================================
32. COMMIT-REGELN
===============================================================================

- Kein automatischer Milestone-Commit vor vollständiger DoD.
- Kein Commit vor Benutzerbestätigung der manuellen Abnahme.
- Kein Commit ohne ausdrückliche Commit-Freigabe.
- Kein git add . und kein git add -A.
- Nur ausdrücklich autorisierte V0.14.0-Projektpfade stagen.
- Spezifikation und Masterprompt sind autorisierte V0.14.0-Dokumente.
- Andere historische untracked Masterprompts, Screenshots, Cubase-Projekte und
  Benutzerdateien bleiben geschützt und unstaged.
- Vor Commit staged Dateiliste und staged Diff vollständig prüfen.
- Empfohlene Commit-Nachricht:

  DeepPluck V0.14.0 Scale-Aware Voicing Engine

- Nach Commit vollständigen Hash und Endstatus erfassen.
- Kein Push, Tag oder Upload.

Wenn ein automatisches Pflichtgate fehlschlägt, keinen Abschlusscommit und keine
Erfolgsmeldung erzeugen.

===============================================================================
33. FINAL HANDOFF FORMAT
===============================================================================

Nach der automatisierten Implementierung berichten:

1. Status
   - automatable-complete oder BLOCKED/INCOMPLETE
   - manuelle Abnahme OPEN/PASS/FAIL

2. Implementierung
   - neue Engine und GUI
   - Parameter 62..67
   - State-/Preset-/Random-Verhalten
   - Out-of-scope eingehalten

3. Kompatibilität
   - 0..61 unverändert
   - Engine-Off-Nullvergleich
   - Identity/State/Automation
   - 116 Factory-Presets

4. Tests
   - Mapping/Ownership/State/Preset/Audio
   - Debug Build und CTests
   - Release Build und CTests
   - Warnungen
   - Realtime/CPU/Headroom

5. Artifacts
   - Debug/Release VST3
   - Debug/Release Standalone
   - projektlokale Kopien
   - Version 0.14.0
   - keine Systeminstallation

6. Git und Schutz
   - Start-HEAD
   - Endstatus
   - JUCE/protected/build/Artifacts
   - noch kein Commit, solange manuelle Abnahme oder Freigabe offen ist

7. Verbleibende manuelle Prüfungen
   - Cubase
   - Standalone
   - harmonische Folgen
   - Lautheit und Headroom

Nach späterer Benutzerbestätigung:

- Report mit echter Bestätigung aktualisieren;
- erforderliche Dokument-/Statuschecks wiederholen;
- ausdrückliche Commit-Freigabe abwarten;
- ausschließlich autorisierte Pfade stagen und committen;
- Commit-Hash berichten.

Bei einem echten Blocker:

- keine Erfolgsaussage erfinden;
- konkrete Evidenz nennen;
- bereits erledigte sichere Arbeit nennen;
- genau die fehlende externe Entscheidung oder Handlung benennen.

===============================================================================
APPENDIX A - FROZEN 0..61 PARAMETER-ID ORDER
===============================================================================

Die Liste ist eine Prüfhilfe. Verbindlich ist das vollständige V0.11.0-Manifest
einschließlich aller Metadaten.

 0 outputGain
 1 masterTune
 2 ampAttack
 3 ampDecay
 4 ampSustain
 5 ampRelease
 6 filterEnabled
 7 filterCutoff
 8 filterResonance
 9 filterDrive
10 filterKeyTracking
11 filterEnvAmount
12 filterAttack
13 filterDecay
14 filterSustain
15 filterRelease
16 transientEnabled
17 transientLevel
18 transientDecay
19 transientTone
20 noiseEnabled
21 noiseLevel
22 noiseDecay
23 noiseTone
24 osc2Enabled
25 osc2Level
26 osc2Octave
27 osc2Semitone
28 osc2FineTune
29 unisonVoices
30 unisonDetune
31 stereoSpread
32 lfoRate
33 lfoSync
34 lfoSyncDivision
35 lfoWaveform
36 lfoRestartMode
37 lfoFilterAmount
38 lfoPitchAmount
39 lfoSpreadAmount
40 osc1Waveform
41 osc1PulseWidth
42 osc2Waveform
43 osc2PulseWidth
44 chorusBypass
45 chorusRate
46 chorusDepth
47 chorusWidth
48 chorusMix
49 delayBypass
50 delaySync
51 delayTime
52 delaySyncDivision
53 delayFeedback
54 delayTone
55 delayMix
56 reverbBypass
57 reverbSize
58 reverbPreDelay
59 reverbDamping
60 reverbMix
61 fxOrder

===============================================================================
APPENDIX B - CREATION WARNINGS
===============================================================================

1. Der Snapshot ist kein Checkout- oder Reset-Ziel.
2. V0.13.1 ist die echte Vorherbasis für Engine-Off-Vergleiche.
3. Der 0..61-Vertrag darf nicht durch Einfügen verändert werden.
4. Neue Parameter besitzen Version Hint 2 und liegen nur auf 62..67.
5. Host State besitzt 68 Werte; Sound-Presets bleiben bei 62 Werten.
6. Skalenfremde Tasten werden durchgereicht, nicht gesnappt.
7. V0.14.0 ist monophon Last-Note-Priority, nicht polyphon pro Trigger.
8. Die 116 Factory-Presets bleiben unverändert.
9. Manuelle Cubase-/Standalone-/Hörtests dürfen nicht erfunden werden.
10. Bei Erstellung dieses Dokuments wurde V0.14.0 nicht implementiert, nicht
    gebaut, nicht getestet, nicht committed und nicht veröffentlicht.

===============================================================================
END OF BINDING V0.14.0 SCALE-AWARE VOICING ENGINE IMPLEMENTATION ORDER
===============================================================================
