Skip to content

オーディオ

オーディオトラックは背景音楽、効果音、環境音を提供します。AIディレクティブ、ルール、または自動プレイリストでトリガーできます。

AudioTrackスキーマ

json
{
  "id": "bgm-tavern",
  "name": "Tavern Theme",
  "type": "bgm",
  "url": "@asset:uuid-here",
  "loop": true,
  "volume": 0.4,
  "fadeIn": 2,
  "fadeOut": 1.5,
  "maxDuration": null
}
フィールドタイプ説明
idstring一意のkebab-case ID
namestring表示名
type"bgm" | "sfx" | "ambient"トラックのタイプ
urlstringオーディオソース。@asset:{id} または直接URL
loopbooleanループするか(典型: BGM/ambientはtrue、SFXはfalse)
volumenumber0.0〜1.0
fadeInnumber | nullフェードイン時間(秒)
fadeOutnumber | nullフェードアウト時間(秒)
maxDurationnumber | nullN秒後に自動停止

AIオーディオディレクティブ

AIは角括弧ディレクティブでオーディオをトリガーします。

[audio: bgm-tavern play]
[audio: sfx-sword play]
[audio: bgm-tavern stop]
[audio: bgm-battle crossfade 2.5]
[audio: ambient-rain volume 0.3]
[audio: sfx-magic play chain:bgm-ambient]
アクション説明
playトラックの再生を開始
stopトラックを停止
crossfade <seconds>現在のBGMからこのトラックへクロスフェード
volume <0-1>トラックの音量を変更
play chain:<trackId>このトラックを再生し、次を自動再生

BGMプレイリスト

BGMトラックのシーケンスを自動再生:

json
{
  "bgmPlaylist": {
    "tracks": ["bgm-explore-1", "bgm-explore-2", "bgm-explore-3"],
    "playMode": "shuffle",
    "gapSeconds": 0,
    "autoPlay": true,
    "waitForFirstMessage": true
  }
}
フィールドタイプ説明
tracksstring[]サイクルするトラックIDの配列
playMode"loop" | "shuffle" | "sequential"再生順モード
gapSecondsnumberトラック間の無音(デフォルト: 0、最大: 30)
autoPlayboolean自動的に再生開始(デフォルト: true)
waitForFirstMessagebooleanプレイヤーが最初のメッセージを送るまで開始しない

条件付きBGM

条件が満たされたときに特定のトラックを再生。変数チェック、キーワードマッチング、ターン数、セッション開始トリガーをサポート。

json
{
  "conditionalBGM": [
    {
      "id": "combat-music",
      "name": "Combat Music",
      "targetTrackId": "bgm-battle",
      "triggerType": "variable",
      "conditions": [
        { "variableId": "in-combat", "operator": "eq", "value": true }
      ],
      "conditionLogic": "all",
      "priority": 10,
      "fadeInDuration": 1,
      "fadeOutDuration": 2,
      "stopPreviousBGM": true,
      "fallback": "default"
    }
  ]
}
フィールドタイプ説明
idstring一意の識別子
namestring表示名
targetTrackIdstringトリガー時に再生するトラック
triggerType"variable" | "ai-keyword" | "keyword" | "turn-count" | "session-start"条件付きBGMをトリガーするもの
conditionsCondition[]チェックする変数条件
conditionLogic"all" | "any"複数条件の結合方法(デフォルト: "all")
keywordsstring[]マッチするキーワード(keyword / ai-keyword トリガー用)
matchWholeWordsboolean単語全体のみマッチ(キーワードトリガー用)
atTurnnumber特定のターンで発火(turn-count トリガー用)
everyNTurnsnumberNターンごとに発火(turn-count トリガー用)
prioritynumber複数トリガーが一致したとき、優先度が高い方が勝つ
fadeInDurationnumberフェードイン時間(秒)
fadeOutDurationnumberフェードアウト時間(秒)
stopPreviousBGMboolean現在再生中のBGMを先に停止
fallback"default" | "previous" | トラックIDの文字列条件がfalseになったときに再生するもの

条件演算子はショートフォームを使います: eqneqgtltgteltecontains

条件がtrueになるとトラックが開始します。falseになると停止し(設定されていればフェードアウト付き)、fallback 設定に従ってフォールバックします。