Skip to content

スペクトラム DSP のハードウェア非依存化(サンプルレート伝搬 + リフレッシュレート非依存の平滑化) #299

Description

@GeneralD

agent type priority complexity depends on

概要

PR #298 のレビュー(Copilot / CodeRabbit)で挙がったスペクトラム DSP のハードウェア依存 2 件を分離対応する。どちらも本物の指摘だが、#298(見た目設定追加)とは性質が異なり、特に 2 は既存の調整済みの見た目を変えるため独立した検証が要る。

課題

1. サンプルレートが 48kHz 固定

FrequencyAnalyzersampleRate の既定を 48000 とし、SpectrumUseCaseImpl もこの既定に頼っている。CoreAudio の process tap は出力デバイスの実レートに追従するため、44.1kHz の環境では Hz→FFT bin のマッピングと帯域カットオフ(min_freq / max_freq)がズレる。タップの実サンプルレートを capture 経路から解析器まで伝搬する必要がある。

2. 平滑化定数が 60fps 前

SpectrumPresenter の cava 由来の定数(framerate_mod = 66 / 60 等)が固定 60Hz を仮定している。DisplayLinkDriverCADisplayLink なので tick() はディスプレイの実リフレッシュに追従し、120Hz ProMotion や可変リフレッシュでは落下速度が基準の 2 倍速にズレる。frame duration から定数を導出するか、tick ごとにスケールする対応が要る。

注意: 現在の見た目は実機の 120Hz で詰めたものなので、フレームレート非依存化すると落下が遅くなり体感が変わる。修正時は再チューニング+実機確認必須

スコープ

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions