Skip to content

feat(audio): E2-Chord-Noten klingen in der Engine (v3.311.0) - #38

Merged
GeorgDub merged 1 commit into
mainfrom
feat/e2-chord-playback
Jul 31, 2026
Merged

GeorgDub merged 1 commit into
mainfrom
feat/e2-chord-playback

Conversation

@GeorgDub

Copy link
Copy Markdown
Owner

Schließt das v3.310-„next": importierte bzw. editierte Akkorde (E2-Step-Bytes 5..7) waren im Step-Editor sichtbar und roundtrip-fest, aber in der Preview stumm.

Was neu ist

  • _scheduleStep triggert pro gültiger Chord-Note eine zusätzliche Stimme. Sample-Pfad: _triggerBufferWithFx mit Pitch = Note − 72 (E2-Basis C5 — dieselbe Konvention wie synthPitchToE2Note beim Export), gleiches Buffer inkl. Reverse/Stretch. Synth-Pfad: _triggerSynthOnChannel mit 440·2^((Note−72)/12). Velocity und Note-Länge wie die Hauptnote.
  • Neuer auxVoice-Parameter an _triggerSynthOnChannel: Chord-Stimmen lesen und schreiben den _partSlideState nicht — sonst würde der nächste TB-303-Slide von der letzten Chord-Note statt von der Hauptnote starten. Chord-Stimmen sliden selbst nie.
  • Pure Helper chordVoicePitches() + E2_CHORD_BASE_NOTE = 72 (exportiert, testbar); 0-Slots und Werte außerhalb MIDI 1..127 fallen raus.
  • Der melodische Pfad (Piano Roll) bleibt bewusst ohne Akkorde — das Feature stammt aus dem Drum-Step-Import.

Damit ist die Akkord-Kette komplett: Format entschlüsselt (v3.308) → sichtbar (v3.309) → editierbar (v3.310) → hörbar (v3.311).

Tests

7 neue Tests in tests/features/e2-chord-playback.test.ts über die _scheduleStep-Seam (Muster aus audio-schedule-step-alloc.test.ts): pure Umrechnung, Sample-Pfad 1+N Voices mit richtigen Pitches, Keine-Regression ohne Akkord, Synth-Frequenzen + auxVoice-Flags, Slide-State bleibt auf der Hauptnote.

Stand: tsc clean, Vollsuite 11480 grün / 37 skipped.

🤖 Generated with Claude Code

Schliesst das v3.310-'next': importierte/editierte Akkorde (E2-Step-Bytes
5..7) waren sichtbar und roundtrip-fest, aber in der Preview stumm.

- _scheduleStep triggert pro gueltiger Chord-Note eine zusaetzliche Stimme.
  Sample-Pfad: _triggerBufferWithFx mit Pitch = Note-72 (E2-Basis C5,
  identisch zu synthPitchToE2Note), gleiches Buffer inkl. reverse/stretch.
  Synth-Pfad: _triggerSynthOnChannel mit 440*2^((Note-72)/12). Velocity und
  Note-Laenge wie die Hauptnote.
- Neuer auxVoice-Parameter an _triggerSynthOnChannel: Chord-Stimmen lesen
  und schreiben den _partSlideState nicht — sonst wuerde der naechste
  TB-303-Slide von der letzten Chord-Note statt von der Hauptnote starten.
  Chord-Stimmen sliden selbst nie.
- Exportierte Helper chordVoicePitches() + E2_CHORD_BASE_NOTE (pure,
  testbar); 0-Slots und Werte ausserhalb MIDI 1..127 fallen raus.
- Melodischer Pfad (Piano Roll) bleibt bewusst ohne Akkorde — das Feature
  stammt aus dem Drum-Step-Import.

7 neue Tests (e2-chord-playback.test.ts) ueber die _scheduleStep-Seam:
Sample 1+N Voices mit richtigen Pitches, keine Regression ohne Akkord,
Synth-Frequenzen + auxVoice-Flags, Slide-State bleibt auf der Hauptnote.
tsc clean, Vollsuite 11480 gruen / 37 skipped.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@GeorgDub
GeorgDub merged commit b6a977d into main Jul 31, 2026
1 check passed
@GeorgDub
GeorgDub deleted the feat/e2-chord-playback branch July 31, 2026 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant