Lyric Sequence

AIと読む
全ドキュメントを1ファイルで(llms-full.txt)
LyricSequence #Generator #ノード
Lyric Sequence

時刻付きの歌詞を読み込んで、いまの行・次の行・行内の進捗・切り替わりのトリガーに展開するノードです。描画はしないので、Text RenderText Reveal に流して使います。

本文はノード上の複数行の欄に直接書けて、パッチに保存されます。Text 入力に .lrc / .txt / .csv の実在するファイルパス(改行を含まない1行)が来た場合は、その中身を読み込んで本文を置き換えます。読み込めなかったときは本文を変えずにパス文字列のまま残ります。それ以外の文字列はそのまま本文として扱われます。

受け付ける本文の形式

形式は本文から自動で判別します。**時刻付きの行が1行でもあれば「時刻付き」**として扱われ、1行も無ければ時刻を持たない素の行リストになります。

時刻タグ付きの行(LRC)

行頭の [分:秒.小数] を時刻として読みます。分は1〜3桁、秒は1〜2桁、小数部は1〜3桁で省略可(. でも : でも区切れます)。

[00:12.00]最初の行
[00:18.50][01:24.50]サビ(同じ本文を2か所に登録)
  • 時刻タグは行頭に複数並べられ、その数だけ同じ本文が別の時刻に登録されます
  • 本文中の <00:12.00> のような単語単位のタイムスタンプは取り除かれます
  • [ar:...] [ti:...] のようなメタデータ行は無視します。ただし [offset:+500] はミリ秒として読み、正の値で歌詞が早く出ます(ノードの Offset s とは別に加算されます)

時刻と本文の2列(CSV / TSV)

時刻,本文 の形。区切りはカンマまたはタブで、行内で最初に現れた1つだけを区切りとして見ます(本文中のカンマはそのまま残ります)。

12.5,秒で書いた行
1:02.5,分:秒で書いた行
0:01:30,時:分:秒でも書ける

時刻は秒数そのまま(12.5)でも、分:秒 / 時:分:秒(コロン区切りで最大3つ)でも書けます。本文の前後の空白は取り除かれ、両端を " で囲んでいればその引用符も外されます。

時刻の無い行リスト

時刻付きの行が1つも無い本文は、1行1項目のリストとして扱われます。末尾の空行だけ落とし、途中の空行は「間」として残ります。

なお時刻付きの本文に混ざった時刻の無い行は、メタデータ扱いで捨てられます。時刻付きの行は時刻順に並べ替えられます。

Time駆動とトリガー駆動

  • Time駆動 — 本文に時刻があり、かつ Time ポートが接続されている間。毎フレーム Time + Offset s + 本文のoffset を見て、その時刻以下で最後の行を現在行にします。最初の行の時刻より前は行なしの状態で、Line は空、Index は -1 です。この間は Next / Back / Reset は無視されます(毎フレーム時刻が勝つため)
  • トリガー駆動 — それ以外(時刻の無い本文、または Time 未接続)。Next で次の行、Back で前の行、Reset で先頭へ。先頭は0番です
  • Time の接続は1本まで。接続を外すとその場でトリガー駆動に戻り、行なしの状態だった場合は先頭へ移動します
  • Offset s は同期のズレを手で寄せる補正(秒、正で歌詞が早く出る)。効くのはTime駆動のときだけです
  • Loop トグル(初期値ON)はトリガー駆動のNext / Backにだけ効きます。ONで端から反対の端へ回り込み、OFFで端で止まります
  • 本文を編集しても現在位置は範囲内に丸めて維持されます

ノード上の小さなステータス行に、駆動の状態(Time / Trigger / 時刻付きだがTime未接続の Trigger (timed))と現在位置・総数、Time駆動時は現在行の時刻が出ます。◀ ▶ ⏮ のボタンはNext / Back / Resetと同じ操作です。

出力の補足

  • Line — 現在行。行なしの状態では空文字列
  • NextLine — 1つ先の行(無ければ空)。次の歌詞を薄く先出しする表示に使えます
  • Progress — 現在行の開始から次の行の開始までの0→1。Time駆動のときだけ動き、最終行と行なしの状態、トリガー駆動では常に0です
  • Changed — 行が切り替わった瞬間(行送り、または時刻が次の行に到達した瞬間)に発火。本文の差し替えやファイル読み込み、駆動方式の切り替えでは鳴りません
  • Index — 現在行の番号(0始まり。Time駆動で最初の行より前は -1)
  • Total — 行数

入力ポート

Port ID
Textstring
Timefloat
Nexttrigger
Backtrigger
Resettrigger

出力ポート

Port ID
Linestring
NextLinestring
Progressfloat
Changedtrigger
Indexint
Totalint

スクリプトから設定可能なメンバー

パス
textInputstring
timeInputfloat
textstring
currentOffsetfloat
currentLoopbool

Synapse Apps(スクリプティング)

await synapse.modules.create({ type: "LyricSequence" })

このページへのリンク

同じページを参照しているページ