OB-Xd サウンドエンジン比較

アーキテクチャ全面刷新の詳細技術解析

Version 2.x レガシー Version 3.x 新規

概要

OB-Xd 3.xは、段階的なアップデートではなく、完全にゼロから書き直されたシンセシスエンジンです。新しいアーキテクチャは、オブジェクト指向のボイス単位モデルから、データ指向のSIMD最適化設計に移行し、オーディオ処理の方法を根本的に再構築しています。

コード量増加
5.2倍
ボイス数
4倍増加
SIMD幅
8-wide AVX2
ユニゾンボイス
16ボイス/音

1. 基本アーキテクチャ

OB-Xd 2.x アーキテクチャ

  • オブジェクト指向設計 - 各ボイスが独立したクラスインスタンス
  • ボイス単位処理 - ループ内で順次処理
  • スカラー演算 - 1サンプルずつ計算
  • 約3,700行のエンジンコード
  • 最大32ボイス固定
  • ポリフォニックユニゾンなし - 音符あたり1ボイスのみ

OB-Xd 3.x アーキテクチャ

  • データ指向設計 - 構造体配列形式でボイスデータを格納
  • SIMDバッチ処理 - 4-8ボイスを同時処理
  • ベクトル化演算 - AVX2/NEON並列演算
  • 約19,400行のエンジンコード
  • 128ボイススロット(32音まで発音可能)
  • 完全ポリフォニックユニゾン - 音符あたり最大16ボイス

2. ボイスアーキテクチャとポリフォニー

機能 OB-Xd 2.x OB-Xd 3.x
最大ボイススロット数 32 128
発音可能音数 32 (1-32設定可能) 32 (1-32設定可能)
ユニゾンボイス数/音符 1 (真のポリフォニックユニゾンなし) 1-16ボイス/音符
ボイス割り当て シンプルなキューベース パッキング最適化を備えたボイスグループ
ステレオ広がり 基本的なパンニング ユニゾンスタックあたり8ポジションのパン配置
ボリューム補償 マニュアル 自動平方根補償

新機能: ポリフォニックユニゾンシステム

バージョン3.xでは、各発音音符が複数のデチューンされたボイスをトリガーできる真のポリフォニックユニゾンを導入しました。例えば、8音ポリフォニーと4ボイスユニゾンの場合、合計32ボイスが生成され、完全なポリフォニック演奏を維持しながら、豊かで分厚いテクスチャーを作り出します。

3. SIMDとパフォーマンス最適化

OB-Xd 2.x 処理

  • SIMD最適化なし シンセシスコア内
  • 順次ボイスループ処理
  • 各ボイスを個別に処理
  • 標準C++スカラー演算
  • ボイス単位のオーバーサンプリング/デシメーション

OB-Xd 3.x 処理

  • 完全なAVX2サポート (8-wide浮動小数点演算)
  • NEONフォールバック (旧CPU向け4-wide)
  • 実行時CPU検出とディスパッチ
  • FMA (積和演算) 命令
  • 最適化FIRを用いた共有オーバーサンプリング
  • SIMD最適化超越関数 (exp2, tan)

SIMDベクトル演算

新しいエンジンは、AVX2命令を使用して8ボイスを同時に処理します:

AVX2 8-Wide処理 (256ビットレジスタ):

パフォーマンスへの影響:
- オシレーター: 8倍のスループット
- フィルター: 8倍のスループット
- エンベロープ: 8倍のスループット
- 理論的高速化: 実環境で4-6倍

4. オシレーター実装

機能 OB-Xd 2.x OB-Xd 3.x
アンチエイリアシング方式 BLEP (帯域制限ステップ) BLEP + BLAMP (改良版)
BLEPテーブル解像度 64倍オーバーサンプリング 64倍オーバーサンプリング
BLEP適用 スカラーループ SIMDベクトル化
カーネル補間 基本 カーネル間線形補間
三角波 BLEPのみ BLAMP (スロープ用積分BLEP)
ハードシンク精度 良好 サブサンプル精度 (1/64サンプル)
波形 ノコギリ波、パルス波、三角波 ノコギリ波、パルス波、三角波

三角波におけるBLEP対BLAMP

バージョン2.xは、すべての波形に標準BLEPを使用しており、ステップ不連続性には適していますが、スロープ(微分)不連続性を持つ三角波には最適ではありません。

バージョン3.xは、三角波専用にBLAMP (帯域制限ランプ) を追加し、微分不連続性に対して数学的に正しいアンチエイリアシングを提供します。これにより、より優れた高周波除去を備えたクリーンな三角波が得られます。

5. フィルター実装

OB-Xd 2.x フィルター

  • 2極SVF ダイオードペアモデリング付き
  • 4極ラダー atan()サチュレーション付き
  • ボイス単位のフィルターインスタンス
  • マルチモード: LP、BP、HP補間
  • フィードバックブーストによる自己発振
  • 固定レゾナンス補償

OB-Xd 3.x フィルター

  • 2極SVF 多項式フィードバック付き
  • 4極ラダー ダンピング関数付き
  • ベクトル化フィルターバンク (8フィルター並列)
  • マルチモード: LP、BP、HP、ノッチ補間
  • 自己発振プッシュモード
  • 動的レゾナンス補償
  • DCブロッキングフィルター
  • ブライトネスプリフィルター (7-30kHz)

フィルタートポロジー詳細

項目 OB-Xd 2.x OB-Xd 3.x
非線形性モデル diodePairResistanceApprox()多項式 改良多項式 + ダンピング関数
自己発振 シングルモード ノーマル + より強力な発振用「プッシュ」モード
DC除去 シンプルなハイパス 2極DCブロッカー (30Hzコーナー)
ブライトネスコントロール オシレーター後段のみ プリフィルターブライトネス (7-30kHz設定可能)
処理 スカラー (サイクルあたり1フィルター) SIMD (AVX2でサイクルあたり8フィルター)

6. エンベロープジェネレーター

OB-Xd 2.x エンベロープ

  • ステートマシンADSR
  • 固定アタックカーブ形状
  • 係数ベースのタイミング
  • ボイス単位のランダム偏差
  • レガートモード対応

OB-Xd 3.x エンベロープ

  • ステートマシンADSR
  • 調整可能なアタック形状 (漸近線 1.05-10.0)
  • RC回路モデリングカーブ
  • ボイス単位のランダム偏差
  • レガートモード対応
  • エンベロープ毎の独立した形状コントロール

洗練されたアタックエンベロープ形状 (3.xの新機能)

バージョン3.xでは、本格的なアナログRC (抵抗-コンデンサ) 充電回路をモデリングした洗練された対数-線形アタックスライダーを導入しました。調整可能な漸近線パラメーター (1.05から10.0) により、ほぼ線形のアタックカーブ (柔らかなパッド) から、積極的な指数関数的カーブ (パーカッシブなプラック) まで、ユーザーが形状を調整できます。

この回路精度の高い実装は、アタックフェーズが線形に上昇するのではなく、ターゲットに向かって自然に加速する、ビンテージアナログエンベロープ特有の「パンチ」を再現します。

7. オーバーサンプリングと品質モード

機能 OB-Xd 2.x OB-Xd 3.x
オーバーサンプリングオプション 1x、2x (HQモード) 1x、2x、4x
デシメーションフィルター ボイス単位のデシメーター 共有SIMD最適化FIR
フィルタータップ数 (2x) 約32タップ 63-127タップ (適応型)
フィルタータップ数 (4x) N/A 127-255タップ (適応型)
サンプルレート適応 固定フィルター サンプルレートに基づく自動フィルター選択
高サンプルレート最適化 なし 96kHz以上で自動的にOSを削減

インテリジェントオーバーサンプリング

バージョン3.xでは、ホストのサンプルレートに基づいて自動的に調整する適応型オーバーサンプリングを実装しています:

  • 44.1/48kHzの場合: 長いFIRフィルターで完全なオーバーサンプリング (2xまたは4x)
  • 88.2/96kHzの場合: 短いフィルターで削減されたオーバーサンプリング
  • 176.4/192kHzの場合: オーバーサンプリング無効 (すでに十分)

8. コードベース統計

指標 OB-Xd 2.x OB-Xd 3.x 変化
エンジンコード (行数) 約3,700 約19,400 +5.2倍
ヘッダーファイル 21 43 +2倍
オシレーターファイル 4 (SawOsc, PulseOsc, TriangleOsc, ObxdOscillatorB) 1 (VectorizedOscillators.h - 統合) 統合
SIMDラッパーファイル 0 2 (AVX2Wrapper.h, NEONWrapper.h) 新規
テンプレートベースコード 最小限 広範囲 (8個のテンプレートヘッダー) モダンC++

9. サウンド特性の比較

OB-Xd 2.x サウンドキャラクター

  • クラシックOB-Xエミュレーション
  • 温かく、やや柔らかいサウンド
  • BLEPによる良好なアンチエイリアシング
  • 特徴的なフィルターレゾナンス
  • ボイス単位のアナログ不完全性
  • 最大32ボイス (薄く聞こえる場合あり)
  • ポリフォニックユニゾンなし (深みに欠ける)

OB-Xd 3.x サウンドキャラクター

  • 強化されたOB-X/OB-Xaエミュレーション
  • よりクリーンで正確なサウンド
  • 優れたアンチエイリアシング (BLEP + BLAMP)
  • プッシュモード付き強化フィルター
  • ボイス単位のアナログ不完全性 (拡張)
  • 巨大なテクスチャーのための128ボイス
  • 巨大なサウンドのための16ボイスユニゾン
  • 調整可能なエンベロープアタック形状
  • トーン形成のためのブライトネスコントロール

サウンド改善点

なぜ3.xは「より大きく」聞こえるのか

  • ポリフォニックユニゾン: 音符あたり最大16個のデチューンされたボイスを重ね、ポリフォニーを維持しながら巨大なスーパーソウスタイルのサウンドを作成
  • より多くのボイス: 合計128ボイスにより、複雑なパッセージでもボイススティールなし
  • より良い三角波: BLAMPアンチエイリアシングにより、よりクリーンで明確な三角波音色を生成
  • アタック形状: 調整可能なエンベロープカーブにより、パンチのあるアタックや滑らかなスウェルが可能
  • フィルタープッシュモード: 叫ぶようなフィルタースイープのための強化された自己発振

プリセット互換性

バージョン3.xは、バージョン2.xプリセットとの後方互換性を維持しています。レガシープリセットは正しく読み込まれ、一貫したサウンド再現のためにデフォルトのエンベロープ漸近線は1.11111 (元のv2値) に設定されています。アタック形状やポリフォニックユニゾンなどの新機能は、プリセット毎に有効化できます。

10. まとめ: 主な違い

カテゴリー OB-Xd 2.x OB-Xd 3.x 影響
アーキテクチャ オブジェクト指向、スカラー データ指向、SIMD 4-6倍のパフォーマンス
ボイス数 最大32 128スロット、32発音可能 ポリフォニックユニゾン
ユニゾン なし 1-16ボイス/音符 巨大なサウンド
SIMD なし AVX2 (8-wide) / NEON (4-wide) CPU効率
オシレーターAA BLEP BLEP + BLAMP よりクリーンな三角波
エンベロープ形状 固定 調整可能 (1.05-10.0) より多くの表現力
オーバーサンプリング 1x、2x 1x、2x、4x (適応型) より良い品質
フィルター機能 標準 プッシュモード、DCブロック、ブライトネス トーンコントロール
コードサイズ 約3,700行 約19,400行 5.2倍大きい

結論

OB-Xd 3.xは、単なる段階的アップデートではなく、シンセシスエンジンの完全な再構築を表しています。オブジェクト指向スカラー処理からデータ指向SIMDベクトル化への移行により、大幅なパフォーマンス向上を実現し、v2アーキテクチャでは計算上不可能だったポリフォニックユニゾンなどの新機能を可能にしました。

ユーザーへの主なメリット:

サウンドキャラクターはOberheimの伝統に忠実でありながら、OB-Xd 3.xを商用バーチャルアナログシンセサイザーと競合できるモダンな機能を獲得しました。