@onjmin/chord-parser
    Preparing search index...

    Interface DetectProgressionOptions

    detectProgression のオプション。DetectKeyChangesOptions を内包する。

    interface DetectProgressionOptions {
        bpm?: number;
        changePenalty?: number;
        flat?: boolean;
        frameSize?: number;
        hopSize?: number;
        minSegmentDuration?: number;
        nonChordTonePenalty?: number;
        switchMargin?: number;
        useKey?: boolean;
        windowSize?: number;
    }

    Hierarchy (View Summary)

    Index

    Properties

    bpm?: number

    テンポ(BPM)。指定すると拍単位(1拍 = 60/bpm 秒)の音楽的グリッドで フレーム化する。未指定なら frameSize(秒)でフレーム化する。

    changePenalty?: number

    コードを切り替えるときに課す DP のペナルティ(既定 0.4)。 大きいほどコードが保持されやすく(=長い区間になり)ちらつきが減る。

    flat?: boolean

    主音名をフラット表記にする(既定はシャープ表記)。

    frameSize?: number

    bpm 未指定時のフレーム長(秒、既定 0.5)。

    hopSize?: number

    窓をずらす幅(秒、=時間分解能)。未指定なら windowSize / 2。

    minSegmentDuration?: number

    これより短いセグメントは隣接区間へ吸収して除去する(秒、既定 0=無効)。 一瞬だけ別キーと誤判定される「ちらつき」を抑えるのに使う。

    nonChordTonePenalty?: number

    非和声音(コード構成音でない音)に課すペナルティ係数(既定 0.55)。 大きいほど構成音以外が鳴っているコードを嫌う。

    switchMargin?: number

    キーの切り替えに必要な相関スコアの差(ヒステリシス、既定 0.08)。 現在のキーより新候補がこの値を超えて高いときだけ転調と見なす。 近親調(C↔G など)の細かなちらつきを抑え、明確な転調だけを拾う。 0 にすると毎窓で最良キーへ即座に切り替わる。

    useKey?: boolean

    キーの事前確率(diatonic/借用ボーナス)を使うか(既定 true)。 false にするとキーを無視して純粋にスコア最大のコードを選ぶ。

    windowSize?: number

    キー推定に用いる窓の長さ(秒)。未指定なら曲全体の長さ / 4。 キーの推定には数コード分のまとまった文脈が要るため、窓が小さすぎると 近親調にちらつく。大きすぎると短い転調を見逃す。曲調に応じて調整する。