# ピッチ変換の合成音実験 2026-10-17、アプリリビジョン `d3dd9b44d20ad787ae70caa5cc71d9570d889d71` の調査。実装を直接呼ぶテストではなく、同じ順序のApple製ノードを組み立てた独立実験。アプリの修正前後を比較した結果ではない。 - macOS 27.0.1(26A434)、Xcode 27.0(27A266a)、Swift 6、arm64 - Python 3.12、NumPy 1.26.2 - 音声は合成。スピーカー再生・マイク録音は行わない。 - 各条件は新規エンジン。44.1/48 kHz、速度1、キー0/−300/+300 cents、overlap 8/16/32。キー0はoverlap 8のみ。 - `volume1` と `volume075` はそれぞれTimePitch前のplayer.volumeが1と0.75。各56条件。 - 入力ピークは0.95。EQ/自動音量調整/reverbはバイパス。左右同一信号で左だけ保存。 - 0.75倍出力を仮算定する `over_1_at_volume_075` は、実際のplayer音量とは別の、出力にさらに0.75を掛けた集計。本文では使っていない。実際の既定音量の評価は `volume075` の `peak` と `over_1_samples` を使用する。 - 初回 `volume1/results.jsonl` の `player_volume` フィールドは追加前のため省略されている。初回実行は1.0固定だった。保存した最新版のソースでは明示的に出力する。 - 時間計測は単回、renderと配列コピーを含む。iPhoneのCPU負荷を表すものではない。 - 末尾を排出せず入力フレーム数で終了。周波数解析は最初と最後の1秒を除く1〜5秒のみ。生成音源は6秒。 Wikiをcloneしたディレクトリから再実行する。結果は実行ごとに別ディレクトリへ保存する。 ```bash set -euo pipefail probe_dir=benchmarks/pitch-quality-2026-10-17 run_dir="$(mktemp -d /tmp/smp-pitch-quality-XXXXXX)" mkdir -p "$run_dir/volume1" "$run_dir/volume075" xcrun swiftc -O -swift-version 6 -module-cache-path "$run_dir/module-cache" \ "$probe_dir/PitchProbe.swift" -o "$run_dir/pitch-probe" "$run_dir/pitch-probe" "$run_dir/volume1/results" 1 \ > "$run_dir/volume1/results.jsonl" 2> "$run_dir/volume1/runtime.log" "$run_dir/pitch-probe" "$run_dir/volume075/results" 0.75 \ > "$run_dir/volume075/results.jsonl" 2> "$run_dir/volume075/runtime.log" python3 "$probe_dir/analyze.py" "$run_dir/volume1" python3 "$probe_dir/analyze.py" "$run_dir/volume075" ``` `Audio files cannot be non-interleaved. Ignoring setting AVLinearPCMIsNonInterleaved YES.` は保存CAFの設定に対する警告。AVAudioFileのprocessingFormatから読み出し、floatChannelDataの左を保存している。Xcode 27では、アプリと同じ接続API等の使用によるdeprecation警告も出る。 Audio Unitを利用できないサンドボックスで `comp != nullptr` の例外が出た実行は測定結果に含めていない。結果JSONはAudio Unitが生成できる環境で正常終了した実行のもの。 `analysis.json` の期待周波数の外の電力はHann窓・4秒FFT・期待周波数±5 Hzで定義する。この帯域内の周波数ずれや聴感上の変化は評価しきれない。rawのf32、CAFは容量を抑えるため保存していない。