OB-Xd Sound-Engine-Vergleich

Eine tiefgehende technische Analyse der kompletten Architektur-Neuentwicklung

Version 2.x Legacy Version 3.x Neu

Zusammenfassung

OB-Xd 3.x stellt eine vollständige Neuentwicklung der Synthese-Engine dar, keine inkrementelle Aktualisierung. Die neue Architektur überdenkt grundlegend die Art und Weise, wie der Synthesizer Audio verarbeitet, und vollzieht den Übergang von einem objektorientierten Per-Voice-Modell zu einem datenorientierten SIMD-optimierten Design.

Code-Zuwachs
5,2x
Stimmenzahl
4x mehr
SIMD-Breite
8-wide AVX2
Unison-Stimmen
16 pro Note

1. Grundlegende Architektur

OB-Xd 2.x Architektur

  • Objektorientiertes Design - Jede Stimme ist eine eigenständige Klasseninstanz
  • Per-Voice-Verarbeitung - Stimmen werden sequentiell in einer Schleife verarbeitet
  • Skalare Mathematik - Alle Berechnungen erfolgen einzeln pro Sample
  • ~3.700 Zeilen Engine-Code
  • Maximal 32 Stimmen fest vorgegeben
  • Kein polyphoner Unison - Eine Stimme pro Note

OB-Xd 3.x Architektur

  • Datenorientiertes Design - Stimmdaten im Structure-of-Arrays-Format gespeichert
  • SIMD-Batch-Verarbeitung - 4-8 Stimmen gleichzeitig verarbeitet
  • Vektorisierte Mathematik - AVX2/NEON-Paralleloperationen
  • ~19.400 Zeilen Engine-Code
  • 128 Stimmslots (32 spielbare Noten)
  • Vollständig polyphoner Unison - Bis zu 16 Stimmen pro Note

2. Stimmarchitektur & Polyphonie

Eigenschaft OB-Xd 2.x OB-Xd 3.x
Maximale Stimmslots 32 128
Spielbare Noten 32 (konfigurierbar 1-32) 32 (konfigurierbar 1-32)
Unison-Stimmen pro Note 1 (kein echter polyphoner Unison) 1-16 Stimmen pro Note
Stimmzuweisung Einfaches Warteschlangen-basiert Stimmgruppen mit Packungsoptimierung
Stereo-Spreizung Grundlegendes Panning 8-Positionen-Pan-Spreizung pro Unison-Stack
Lautstärkekompensation Manuell Automatische Quadratwurzel-Kompensation

Neu: Polyphoner Unison-Modus

Version 3.x führt echten polyphonen Unison ein, bei dem jede gespielte Note mehrere verstimmte Stimmen auslösen kann. Beispiel: Bei 8-stimmiger Polyphonie und 4-Stimmen-Unison ergeben sich 32 Gesamtstimmen, die massive, satte Texturen erzeugen und dabei volle polyphonische Spielbarkeit bewahren.

3. SIMD & Performance-Optimierung

OB-Xd 2.x Verarbeitung

  • Keine SIMD-Optimierung im Synthese-Kern
  • Sequentielle Stimmschleifenverarbeitung
  • Jede Stimme wird unabhängig verarbeitet
  • Standard C++ skalare Operationen
  • Per-Voice-Oversampling/Decimation

OB-Xd 3.x Verarbeitung

  • Volle AVX2-Unterstützung (8-wide Float-Operationen)
  • NEON-Fallback (4-wide für ältere CPUs)
  • Laufzeit-CPU-Erkennung und Dispatch
  • FMA (Fused Multiply-Add) Instruktionen
  • Gemeinsames Oversampling mit optimiertem FIR
  • SIMD-optimierte Transzendenten (exp2, tan)

SIMD-Vektoroperationen

Die neue Engine verarbeitet 8 Stimmen gleichzeitig mit AVX2-Instruktionen:

AVX2 8-Wide-Verarbeitung (256-Bit-Register):

Performance-Auswirkung:
- Oszillatoren: 8x Durchsatz
- Filter: 8x Durchsatz
- Hüllkurven: 8x Durchsatz
- Theoretische Beschleunigung: 4-6x in der Praxis

4. Oszillator-Implementierung

Eigenschaft OB-Xd 2.x OB-Xd 3.x
Anti-Aliasing-Methode BLEP (Band-Limited Step) BLEP + BLAMP (verbessert)
BLEP-Tabellenauflösung 64x Oversampling 64x Oversampling
BLEP-Anwendung Skalare Schleife SIMD vektorisiert
Kernel-Interpolation Grundlegend Lineare Interpolation zwischen Kernels
Dreieckwelle Nur BLEP BLAMP (integriertes BLEP für Flanken)
Hard-Sync-Genauigkeit Gut Sub-Sample-genau (1/64 Sample)
Wellenformen Sägezahn, Puls, Dreieck Sägezahn, Puls, Dreieck

BLEP vs. BLAMP für Dreieckwellen

Version 2.x verwendet Standard-BLEP für alle Wellenformen, das Sprungdiskontinuitäten gut behandelt, aber nicht optimal für Dreieckwellen ist, die Flanken-(Ableitungs-)Diskontinuitäten aufweisen.

Version 3.x fügt BLAMP (Band-Limited rAMP) speziell für Dreieckwellen hinzu und bietet mathematisch korrektes Anti-Aliasing für Ableitungsdiskontinuitäten. Dies führt zu saubereren Dreieckwellen mit besserer Hochfrequenzunterdrückung.

5. Filter-Implementierung

OB-Xd 2.x Filter

  • 2-Pol-SVF mit Diodenpaar-Modellierung
  • 4-Pol-Ladder mit atan()-Sättigung
  • Per-Voice-Filterinstanzen
  • Multimode: LP, BP, HP-Interpolation
  • Selbstoszillation durch Feedback-Boost
  • Feste Resonanzkompensation

OB-Xd 3.x Filter

  • 2-Pol-SVF mit polynomalem Feedback
  • 4-Pol-Ladder mit Dämpfungsfunktion
  • Vektorisierte Filterbank (8 Filter parallel)
  • Multimode: LP, BP, HP, Notch-Interpolation
  • Selbstoszillations-Push-Modus
  • Dynamische Resonanzkompensation
  • DC-Sperrfilter
  • Brightness-Vorfilter (7-30kHz)

Details zur Filtertopologie

Aspekt OB-Xd 2.x OB-Xd 3.x
Nichtlinearitätsmodell diodePairResistanceApprox() Polynom Verfeinertes Polynom + Dämpfungsfunktion
Selbstoszillation Einzelmodus Normal + "Push"-Modus für stärkere Oszillation
DC-Entfernung Einfaches Hochpassfilter 2-Pol-DC-Blocker (30Hz Eckfrequenz)
Brightness-Kontrolle Nur nach Oszillator Vorfilter-Brightness (konfigurierbar 7-30kHz)
Verarbeitung Skalar (1 Filter/Zyklus) SIMD (8 Filter/Zyklus mit AVX2)

6. Hüllkurvengenerator

OB-Xd 2.x Hüllkurven

  • Zustandsmaschinen-ADSR
  • Feste Attack-Kurvenform
  • Koeffizientenbasiertes Timing
  • Per-Voice-Zufallsabweichung
  • Legato-Modi unterstützt

OB-Xd 3.x Hüllkurven

  • Zustandsmaschinen-ADSR
  • Einstellbare Attack-Form (Asymptote 1,05-10,0)
  • RC-Schaltkreis-modellierte Kurven
  • Per-Voice-Zufallsabweichung
  • Legato-Modi unterstützt
  • Unabhängige Formkontrolle pro Hüllkurve

Verfeinerte Attack-Hüllkurvenform (Neu in 3.x)

Version 3.x führt einen ausgereiften logarithmisch-linearen Attack-Regler ein, der authentische analoge RC-Ladeschaltkreise (Widerstand-Kondensator) modelliert. Der einstellbare Asymptoten-Parameter (1,05 bis 10,0) ermöglicht die Formung von Attack-Kurven von nahezu linear (sanfte Pads) bis aggressiv exponentiell (perkussive Plucks).

Diese schaltkreisgenaue Implementierung rekonstruiert den charakteristischen "Punch" von Vintage-Analog-Hüllkurven, bei denen die Attack-Phase natürlich zu ihrem Ziel beschleunigt, anstatt linear anzusteigen.

7. Oversampling & Qualitätsmodi

Eigenschaft OB-Xd 2.x OB-Xd 3.x
Oversampling-Optionen 1x, 2x (HQ-Modus) 1x, 2x, 4x
Decimation-Filter Per-Voice-Decimator Gemeinsames SIMD-optimiertes FIR
Filter-Taps (2x) ~32 Taps 63-127 Taps (adaptiv)
Filter-Taps (4x) N/V 127-255 Taps (adaptiv)
Samplerate-Anpassung Feste Filter Automatische Filterauswahl basierend auf SR
Hohe SR-Optimierung Keine Reduziert OS automatisch bei 96kHz+

Intelligentes Oversampling

Version 3.x implementiert adaptives Oversampling, das sich automatisch an die Host-Samplerate anpasst:

  • Bei 44,1/48kHz: Volles Oversampling (2x oder 4x) mit langen FIR-Filtern
  • Bei 88,2/96kHz: Reduziertes Oversampling mit kürzeren Filtern
  • Bei 176,4/192kHz: Oversampling deaktiviert (bereits ausreichend)

8. Codebase-Statistiken

Metrik OB-Xd 2.x OB-Xd 3.x Änderung
Engine-Code (Zeilen) ~3.700 ~19.400 +5,2x
Header-Dateien 21 43 +2x
Oszillator-Dateien 4 (SawOsc, PulseOsc, TriangleOsc, ObxdOscillatorB) 1 (VectorizedOscillators.h - vereinheitlicht) Konsolidiert
SIMD-Wrapper-Dateien 0 2 (AVX2Wrapper.h, NEONWrapper.h) Neu
Template-basierter Code Minimal Umfangreich (8 Template-Header) Modernes C++

9. Vergleich der Klangeigenschaften

OB-Xd 2.x Klangcharakter

  • Klassische OB-X-Emulation
  • Warmer, leicht weicher Sound
  • Gutes Anti-Aliasing via BLEP
  • Charakteristische Filterresonanz
  • Per-Voice-Analog-Ungenauigkeiten
  • Maximum 32 Stimmen (kann dünn klingen)
  • Kein polyphoner Unison (weniger Tiefe)

OB-Xd 3.x Klangcharakter

  • Erweiterte OB-X/OB-Xa-Emulation
  • Sauberer, präziserer Sound
  • Überlegenes Anti-Aliasing (BLEP + BLAMP)
  • Verbessertes Filter mit Push-Modus
  • Per-Voice-Analog-Ungenauigkeiten (erweitert)
  • 128 Stimmen für massive Texturen
  • 16-Stimmen-Unison für gewaltige Sounds
  • Einstellbare Hüllkurven-Attack-Formen
  • Brightness-Kontrolle für Klangformung

Klangliche Verbesserungen

Warum 3.x "größer" klingen kann

  • Polyphoner Unison: Stapeln Sie bis zu 16 verstimmte Stimmen pro Note für massive Supersaw-ähnliche Sounds bei Beibehaltung der Polyphonie
  • Mehr Stimmen: 128 Gesamtstimmen bedeuten kein Voice-Stealing bei komplexen Passagen
  • Bessere Dreieckwellen: BLAMP-Anti-Aliasing erzeugt sauberere, definiertere Dreieckklänge
  • Attack-Formung: Einstellbare Hüllkurvenkurven ermöglichen knackige Attacks oder sanfte Anschwellungen
  • Filter-Push-Modus: Verbesserte Selbstoszillation für schreiende Filter-Sweeps

Preset-Kompatibilität

Version 3.x behält Abwärtskompatibilität mit Version 2.x-Presets bei. Legacy-Presets laden korrekt, wobei die Standard-Hüllkurven-Asymptote auf 1,11111 (der ursprüngliche v2-Wert) gesetzt ist, um konsistente Klangwiedergabe zu gewährleisten. Neue Funktionen wie Attack-Form und polyphoner Unison können pro Preset aktiviert werden.

10. Zusammenfassung: Hauptunterschiede

Kategorie OB-Xd 2.x OB-Xd 3.x Auswirkung
Architektur Objektorientiert, skalar Datenorientiert, SIMD 4-6x Performance
Stimmenzahl 32 maximal 128 Slots, 32 spielbar Polyphoner Unison
Unison Keiner 1-16 Stimmen/Note Massive Sounds
SIMD Keines AVX2 (8-wide) / NEON (4-wide) CPU-Effizienz
Oszillator-AA BLEP BLEP + BLAMP Sauberere Dreiecke
Hüllkurvenform Fest Einstellbar (1,05-10,0) Mehr Ausdruckskraft
Oversampling 1x, 2x 1x, 2x, 4x (adaptiv) Bessere Qualität
Filter-Features Standard Push-Modus, DC-Block, Brightness Klangkontrolle
Code-Größe ~3.700 Zeilen ~19.400 Zeilen 5,2x größer

Fazit

OB-Xd 3.x stellt eine komplette Neukonzeption der Synthese-Engine dar, nicht nur eine inkrementelle Aktualisierung. Der Übergang von objektorientierter skalarer Verarbeitung zu datenorientierter SIMD-Vektorisierung liefert erhebliche Performance-Verbesserungen und ermöglicht neue Funktionen wie polyphonen Unison, die in der v2-Architektur rechnerisch nicht möglich gewesen wären.

Hauptvorteile für Anwender:

Der Klangcharakter bleibt dem Oberheim-Erbe treu, während moderne Möglichkeiten hinzukommen, die OB-Xd 3.x mit kommerziellen Virtual-Analog-Synthesizern konkurrenzfähig machen.