Eine tiefgehende technische Analyse der kompletten Architektur-Neuentwicklung
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.
| 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 |
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.
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
| 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 |
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.
| 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) |
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.
| 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+ |
Version 3.x implementiert adaptives Oversampling, das sich automatisch an die Host-Samplerate anpasst:
| 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++ |
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.
| 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 |
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.