Skip to content

feat(spectrum): ASTC 帯と「束の母音」表示 — Howell (2016) (v1.57.0) - #3

Merged
torishoichi merged 1 commit into
mainfrom
feat/astc-bundle-vowels
Sep 15, 2026
Merged

torishoichi merged 1 commit into
mainfrom
feat/astc-bundle-vowels

Conversation

@torishoichi

Copy link
Copy Markdown
Owner

目的

Ian Howell, Parsing the Spectral Envelope: Toward a General Theory of Vocal Tone Color(DMA thesis, NEC 2016)の Absolute Spectral Tone Color(ASTC)と局所スペクトル・コヒーレンス(束の母音 <o 表記)をスペクトラム上で見られるようにする。単純音の周波数だけで決まる母音らしさと、倍音の束がその振幅重心の母音として聞こえる、という論文の中核を教育ツールに載せる。

変更点

  • dsp-core.js: ASTC_BANDS(Figure 15 の音名 → Hz。境界は隣接音名の幾何平均: 538.6 / 761.7 / 1141.2 / 1523.3 / 2282.4 / 2875.7 / 6093.4 Hz)、astcOf / astcIndex / astcBundleLabel / erbHz / spectralBundles
    • 束分割: 隣接倍音列の谷(両側の最寄りピークより 3 dB 以上低い)で分割。H1 以外の単独倍音束は振幅の大きい隣へ併合。H1 は単独可(obvious true fundamental)
    • 重心は線形振幅加重(論文の "amplitude-weighted")。パワー加重は不採用
    • weakBridge: 重心の帯に倍音が 1 本も無い → (wb) 表記。complexity(本数)、rough(ERB 内に隣接倍音がある本数)
  • main.js: ASTC トグル(Roughness と同パターン)、帯の背景色+最下部ラベル帯+束ブラケット <o ×N、100 ms スロットル再計算、合成/マイク/再生の各パス、凡例読み出し。ラベル帯は PC のズームチップ(− Full +)と HTML 軸ラベルを避けて配置
  • index.html / mobile.html / style.css / mobile.css: トグルボタンと凡例
  • dev/validate.mjs §11: スケール・Figure 17 再現(H2–H4 の重み替えで <u/<o/<ɔ)・weak bridging・谷分割・synthVowel e2e
  • sw.js / APP_VERSION: v1.57.0

採らなかった案: Figure 20(Vennard 改訂図)のラベル位置から Hz を読む → Figure 15 と整合しないため Figure 15 の音名を正典にした。

検証

  • node docs/dev/validate.mjs: 全ゲート合格(既存 §1–10 + 新 §11、exit 0)
  • ヘッドレス Chrome(CDP)で合成音再生・ASTC ON: 束のピーク y(75.4px)と Hn ラベル y(75.2px)が一致、ブラケットはピークの 24 px 上。Roughness 併用、モバイル(mobile.html)も描画確認、コンソールエラー 0
  • ASTC OFF 時のキャンバス描画は無変更

影響範囲

  • Spectrum ビューのみ。ASTC OFF なら描画・負荷とも従来どおり
  • PC のコントロール行にボタンが 1 個増えるため、幅 ≲1400px でフルスクリーンボタンが 2 行目に回る(元から折り返す設計)
  • 右端の Level / H1 Meter パネル下は帯と束ラベルが隠れる(Roughness ストリップと同条件)
  • デプロイ: main へ push で Workers に自動反映

🤖 Generated with Claude Code

…ス (v1.57.0)

Ian Howell, "Parsing the Spectral Envelope" (DMA thesis 2016) Figure 15 の
Absolute Spectral Tone Color スケールをスペクトラムの周波数軸に重ね、
倍音の束(スペクトルピーク)ごとに振幅重心の ASTC 母音を <o ×N 形式で表示する。

- dsp-core.js: ASTC_BANDS / astcOf / astcIndex / astcBundleLabel / erbHz / spectralBundles
  (谷 3dB で分割、単独倍音は隣の束へ併合、H1 は単独可、weak bridging 判定、complexity/rough)
- dev/validate.mjs §11: スケール・Figure 17 再現・weak bridging・谷分割・synthVowel e2e ゲート
- main.js: ASTC トグル、帯(背景)+ラベル帯(前景)+束ブラケット描画、100ms スロットル、
  合成/マイク/再生の各パス、凡例読み出し
- index.html / mobile.html / style.css / mobile.css: トグルと凡例
- sw.js / APP_VERSION: v1.57.0

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@cloudflare-workers-and-pages

Copy link
Copy Markdown
Contributor

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
source-filter-simulation 8c1a9ac Commit Preview URL

Branch Preview URL
Sep 15 2026, 01:51 PM

@torishoichi
torishoichi merged commit 83a0125 into main Sep 15, 2026
3 checks passed
@torishoichi
torishoichi deleted the feat/astc-bundle-vowels branch September 15, 2026 14:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant