Une analyse technique approfondie de la réécriture complète de l'architecture
OB-Xd 3.x représente une réécriture complète du moteur de synthèse, pas une simple mise à jour incrémentielle. La nouvelle architecture réinvente fondamentalement la manière dont le synthétiseur traite l'audio, en passant d'un modèle orienté objet par voix à une conception orientée données optimisée pour le SIMD.
| Fonctionnalité | OB-Xd 2.x | OB-Xd 3.x |
|---|---|---|
| Emplacements de voix maximum | 32 | 128 |
| Notes jouables | 32 (configurable 1-32) | 32 (configurable 1-32) |
| Voix d'unison par note | 1 (pas de vrai unison polyphonique) | 1 à 16 voix par note |
| Allocation des voix | Simple file d'attente | Groupes de voix avec optimisation de compactage |
| Étendue stéréo | Panoramique de base | Répartition panoramique 8 positions par empilement unison |
| Compensation de volume | Manuelle | Compensation automatique par racine carrée |
La version 3.x introduit un véritable unison polyphonique où chaque note jouée peut déclencher plusieurs voix désaccordées. Par exemple, avec 8 notes de polyphonie et 4 voix d'unison, vous obtenez 32 voix totales créant des textures massives et riches tout en maintenant une jouabilité polyphonique complète.
Le nouveau moteur traite 8 voix simultanément en utilisant les instructions AVX2 :
Traitement AVX2 8 voies (registres 256 bits) : Impact sur les performances : - Oscillateurs : débit 8x - Filtres : débit 8x - Enveloppes : débit 8x - Accélération théorique : 4-6x en conditions réelles
| Fonctionnalité | OB-Xd 2.x | OB-Xd 3.x |
|---|---|---|
| Méthode anti-crénelage | BLEP (Band-Limited Step) | BLEP + BLAMP (amélioré) |
| Résolution de la table BLEP | Suréchantillonnage 64x | Suréchantillonnage 64x |
| Application du BLEP | Boucle scalaire | Vectorisé SIMD |
| Interpolation du noyau | Basique | Interpolation linéaire entre noyaux |
| Onde triangulaire | BLEP uniquement | BLAMP (BLEP intégré pour les pentes) |
| Précision hard sync | Bonne | Précision sous-échantillon (1/64 échantillon) |
| Formes d'onde | Dent de scie, Impulsion, Triangle | Dent de scie, Impulsion, Triangle |
Version 2.x utilise le BLEP standard pour toutes les formes d'onde, ce qui gère bien les discontinuités d'étape mais n'est pas optimal pour les ondes triangulaires qui ont des discontinuités de pente (dérivée).
Version 3.x ajoute le BLAMP (Band-Limited rAMP) spécifiquement pour les ondes triangulaires, fournissant un anti-crénelage mathématiquement correct pour les discontinuités de dérivée. Cela produit des ondes triangulaires plus propres avec une meilleure réjection des hautes fréquences.
| Aspect | OB-Xd 2.x | OB-Xd 3.x |
|---|---|---|
| Modèle de non-linéarité | Polynôme diodePairResistanceApprox() | Polynôme raffiné + fonction d'amortissement |
| Auto-oscillation | Mode unique | Mode normal + mode "Push" pour oscillation renforcée |
| Suppression DC | Passe-haut simple | Bloqueur DC 2 pôles (coupure 30Hz) |
| Contrôle de brillance | Post-oscillateur uniquement | Brillance préfiltre (configurable 7-30kHz) |
| Traitement | Scalaire (1 filtre/cycle) | SIMD (8 filtres/cycle avec AVX2) |
La version 3.x introduit un curseur d'attaque logarithmique-linéaire sophistiqué qui modélise les circuits de charge RC (résistance-condensateur) analogiques authentiques. Le paramètre d'asymptote ajustable (1,05 à 10,0) permet aux utilisateurs de façonner les courbes d'attaque d'une forme presque linéaire (pads doux) à une forme exponentielle agressive (plucks percussifs).
Cette implémentation précise du circuit recrée le "punch" caractéristique des enveloppes analogiques vintage, où la phase d'attaque accélère naturellement vers sa cible plutôt que de monter linéairement.
| Fonctionnalité | OB-Xd 2.x | OB-Xd 3.x |
|---|---|---|
| Options de suréchantillonnage | 1x, 2x (mode HQ) | 1x, 2x, 4x |
| Filtre de décimation | Décimateur par voix | FIR partagé optimisé SIMD |
| Taps du filtre (2x) | ~32 taps | 63-127 taps (adaptatif) |
| Taps du filtre (4x) | N/A | 127-255 taps (adaptatif) |
| Adaptation à la fréquence d'échantillonnage | Filtres fixes | Sélection automatique de filtre selon SR |
| Optimisation SR élevée | Aucune | Réduit auto l'OS à 96kHz+ |
La version 3.x implémente un suréchantillonnage adaptatif qui s'ajuste automatiquement en fonction de la fréquence d'échantillonnage de l'hôte :
| Métrique | OB-Xd 2.x | OB-Xd 3.x | Changement |
|---|---|---|---|
| Code moteur (lignes) | ~3 700 | ~19 400 | +5,2x |
| Fichiers d'en-tête | 21 | 43 | +2x |
| Fichiers d'oscillateurs | 4 (SawOsc, PulseOsc, TriangleOsc, ObxdOscillatorB) | 1 (VectorizedOscillators.h - unifié) | Consolidé |
| Fichiers de wrapper SIMD | 0 | 2 (AVX2Wrapper.h, NEONWrapper.h) | Nouveau |
| Code basé sur templates | Minimal | Étendu (8 en-têtes avec templates) | C++ moderne |
La version 3.x maintient la rétrocompatibilité avec les presets de la version 2.x. Les presets legacy se chargent correctement, avec l'asymptote d'enveloppe par défaut réglée à 1,11111 (la valeur originale v2) pour une reproduction sonore cohérente. Les nouvelles fonctionnalités comme la forme d'attaque et l'unison polyphonique peuvent être activées par preset.
| Catégorie | OB-Xd 2.x | OB-Xd 3.x | Impact |
|---|---|---|---|
| Architecture | Orientée objet, scalaire | Orientée données, SIMD | Performances 4-6x |
| Nombre de voix | 32 maximum | 128 emplacements, 32 jouables | Unison polyphonique |
| Unison | Aucun | 1-16 voix/note | Sons massifs |
| SIMD | Aucun | AVX2 (8 voies) / NEON (4 voies) | Efficacité CPU |
| AA Oscillateur | BLEP | BLEP + BLAMP | Triangles plus propres |
| Forme d'enveloppe | Fixe | Ajustable (1,05-10,0) | Plus d'expression |
| Suréchantillonnage | 1x, 2x | 1x, 2x, 4x (adaptatif) | Meilleure qualité |
| Fonctionnalités filtre | Standard | Mode push, blocage DC, brillance | Contrôle tonal |
| Taille du code | ~3 700 lignes | ~19 400 lignes | 5,2x plus grand |
OB-Xd 3.x représente une reconception complète du moteur de synthèse, pas simplement une mise à jour incrémentielle. La transition d'un traitement scalaire orienté objet vers une vectorisation SIMD orientée données offre des améliorations de performances substantielles tout en permettant de nouvelles fonctionnalités comme l'unison polyphonique qui auraient été prohibitives en termes de calcul dans l'architecture v2.
Avantages clés pour les utilisateurs :
Le caractère sonore reste fidèle à l'héritage Oberheim tout en acquérant des capacités modernes qui rendent OB-Xd 3.x compétitif avec les synthétiseurs analogiques virtuels commerciaux.