Skip to content

Latest commit

 

History

History
37 lines (26 loc) · 1.19 KB

File metadata and controls

37 lines (26 loc) · 1.19 KB
flowchart TD

    A[ページ読み込み<br>HTML/CSS/JS準備] --> B[ユーザーが「マイク開始」ボタンを押す]

    B --> C[Tone.start() で音声処理を許可]
    C --> D[UserMedia()でマイク取得]
    D --> E[Analyser(waveform) を作成]
    E --> F[mic.open()でマイク使用許可]
    F --> G[mic.connect(analyser)]

    G --> H[setInterval(updateTuner, 100ms)]

    %% updateTuner の流れ
    H --> I[updateTuner()実行]

    I --> J[analyser.getValue()で波形データ取得]
    J --> K[autoCorrelate()で周波数を計算]

    K -->|音が出ている場合(-1)| Z1[画面を更新せず終了]
    K -->|音が出ていない場合| L[周波数 → MIDIノート番号に変換]

    L --> M{モードは?}
    M -->|piano| N1[表示用MIDI = そのまま]
    M -->|sax(E♭)| N2[表示用MIDI = -3半音]

    N1 --> O[音名を計算して表示]
    N2 --> O

    O --> P[理想ピッチ(perfectPitch)を計算]
    P --> Q[diff = 実音Hz - 理想Hz]

    Q --> R[drawScale()で背景描画]
    R --> S[drawNeedle()で針を描画]

    S --> T[updateTuner()終了 → 100ms後に再実行]
Loading