逆合成:リファレンス音声 → 編集可能な構造(MIDI + シンセ/FXパラメータ)
White-Box Resynthesizerは「逆合成」ワークフローのコンセプト/プロトタイプです。
このリポジトリには、最小限の依存関係で動作するPythonプロトタイプとJUCEベースのシンセプラグインが含まれています。
tools/wbr_analyze.py: WAV → analysis.json + .mid + プリセットtools/wbr_render.py: .mid + プリセット → WAVこのリポジトリは、動作する「ホワイトボックス / 逆合成」プロトタイプです:リファレンス音声 → 編集可能な構造(MIDI + シンセパラメータ)、DAWフレンドリーなワークフロー内で動作します。
意図的にプロトタイプ(高速イテレーション、シンプルなアルゴリズム、最小限の依存関係)として設計されていますが、既にエンドツーエンドのループを実証しています:
CONCEPT_AND_RESEARCH_EN.md: コンセプトステートメント + 技術リサーチDEVELOPMENT_PLAN.md: 段階的開発計画PLANS.md: オリジナルの日本語コンセプトノート決定論的で簡単に実行できるベースラインと、ファイルフォーマットを改良するための場所が必要な場合に使用します。
tools/wbr_analyze.pytools/wbr_render.pywbr/ 内のコアモジュールプラグインの機能:
python3 tools/wbr_analyze.py input.wav --out-dir out
python3 tools/wbr_render.py --analysis out/analysis.json
ステータス:コンセプト + 技術的フィージビリティスタディ。
リファレンス音声ファイルを受け取り、レンダリングされた音声結果の代わりに編集可能な音楽構造(MIDI + シンセ/FXパラメータ)を出力する「逆合成」プラグイン。
リファレンス音声
│
├─ (A) 分析 & 分離 ──► ステム + ノートイベント
│
├─ (B) パラメータ推定 ──► シンセパラメータ + FXパラメータ
│
└─ (C) 内部サウンドエンジン ──► プラグイン内での再合成再生
目標:音声をパートとイベントに変換。
目標:リファレンスを再現するパラメータを発見。
| 製品 / 技術 | 本コンセプトとの主な違い |
|---|---|
| Suno / Udio | 出力は最終的な波形。我々の目標は構造(MIDI + パラメータ)。 |
| Synplant 2 | ワンショットに特化。我々はマルチパート音楽(シーケンス + ミックス)を対象。 |
| DAW Audio-to-MIDI | ノートのみ抽出、楽器パラメータなし。 |
仕様定義、フレームワーク確認(JUCE + CMake)、スキーマ策定。
音声読み込み、モノフォニックスパイク書き起こし、MIDI生成、内部シンセ再生。
制約付きパラメータセット、合成トレーニングデータ、推定手法の選定。
オフラインステム分離、ステムごとのAMT、マルチティンバル再生。
ジョブ管理、UX(信頼度表示)、パフォーマンス、ベータ配布。
このセクションはリポジトリ構造とデータフォーマットの技術マップです。
plugin/Source/: PluginProcessor, Editor, WbrAnalysis, WbrSynthcli/wbr_analyzer_cli.cpp: 外部アナライザー実行ファイルwbr/: Pythonベースラインアナライザー/レンダラーschemas/: JSONスキーマ出力を指すマニフェスト。
{
"source": { ... },
"tempo_bpm": 120,
"parts": [
{ "name": "melody", "midi_file": "...", "notes": [...] }
]
}
内部シンセ設定のスナップショット。
wbrAnalyzeMonophonic(monoSamples, sampleRateHz, params) -> vector<WbrAnalyzedNote>
重要な調整パラメータ:
voiceThresholdRatiominPitchConfidencepitchMedianFilterFramesnoteChangeHysteresisSemitonesstd::threadで実行。juce::SpinLockで保護。cmake -S . -B build -DJUCE_BUILD_EXAMPLES=OFF && cmake --build build --parallel 4