@onjmin/dtm
    Preparing search index...

    Type Alias StreamPlaybackOptions

    SingingVoices.startStream の任意オプション。

    type StreamPlaybackOptions = {
        isAudible?: (track: StreamVoiceTrack) => boolean;
        loopLengthSec?: number;
        loopStartSec?: number;
        onLateSkip?: (note: StreamVoiceNote, delay: number) => void;
        onScheduled?: (
            track: StreamVoiceTrack,
            note: StreamVoiceNote,
            t0: number,
        ) => void;
    }
    Index

    Properties

    isAudible?: (track: StreamVoiceTrack) => boolean

    そのトラックを今この瞬間に発音してよいか(ソロ/ミュート判定)。 各ノートを合成・スケジュールする直前にライブで評価するため、再生中に ソロを切り替えると先読み地平(最大 STREAM_LOOKAHEAD_SEC 秒)以降のノートへ反映される。 既にスケジュール済みのノートは鳴り切る(楽器側のミュート挙動と同じ)。 省略時は全トラック可聴。

    loopLengthSec?: number

    シームレスループ用の1周の長さ(秒)。指定時は曲末に達したら音節インデックスを先頭に戻し内部オフセットへ加算する

    loopStartSec?: number

    ループ再開位置(秒)。省略時は 0

    onLateSkip?: (note: StreamVoiceNote, delay: number) => void

    合成が間に合わず発音をスキップ(ミュート)した際のコールバック。 引数には遅れたノート情報と遅延秒数が渡されます。

    onScheduled?: (
        track: StreamVoiceTrack,
        note: StreamVoiceNote,
        t0: number,
    ) => void

    ノートの発音が実際にスケジュールされた瞬間に呼ばれる(合成完了後、AudioContext へ 予約する直前)。UI側で「今このトラックが鳴っている」を可視化する用途を想定。 t0 は発音予定の AudioContext 絶対時刻。