メインコンテンツまでスキップ

audio

効果音(SE)と BGM の再生。音量、フェード、再生制御に対応しています。効果音はワンショット再生で、BGM はトランスポートコントロール付きの連続再生です。

インポート

import { audio } from "@hmcs/sdk";

効果音

audio.se.play(asset, options?) はワンショットの効果音を再生します。サウンドの再生開始後すぐに呼び出しが返ります。

// アセット ID で効果音を再生
await audio.se.play("my-mod:click");

// 再生オプション付き
await audio.se.play("my-mod:alert", {
volume: 0.5,
speed: 1.2,
panning: -0.5, // -1.0 = 左、0.0 = 中央、1.0 = 右
});

SeOptions

フィールドデフォルト説明
volumenumber1.0音量レベル(0.0--1.0)
speednumber1.0再生速度の倍率
panningnumber0.0ステレオパンニング(-1.0 左 〜 1.0 右)

BGM

同時に再生できる BGM トラックは 1 つだけです。新しいトラックを開始すると、現在のトラックが置き換えられます。

再生

// デフォルトでループ
await audio.bgm.play("my-mod:battle-theme");

// ワンショット再生、フェードイン付き
await audio.bgm.play("my-mod:intro", {
loop: false,
volume: 0.6,
fadeIn: { durationSecs: 3.0, easing: "easeIn" },
});

停止

// 即座に停止
await audio.bgm.stop();

// 2 秒かけてフェードアウト
await audio.bgm.stop({
fadeOut: { durationSecs: 2.0, easing: "easeOut" },
});

一時停止と再開

await audio.bgm.pause();
await audio.bgm.resume();

更新

再生中に音量や速度を変更します。tween フィールドを使用してトランジションをアニメーションさせることができます。

// 1 秒かけて音量を 0.3 にフェード
await audio.bgm.update({
volume: 0.3,
tween: { durationSecs: 1.0, easing: "easeInOut" },
});

// 速度を即座に変更
await audio.bgm.update({ speed: 0.8 });

ステータス

const status = await audio.bgm.status();
if (status.state === "playing") {
console.log(`再生中: ${status.asset}、音量: ${status.volume}`);
}

BgmPlayOptions

フィールドデフォルト説明
loopbooleantrueループ再生
volumenumber1.0音量レベル(0.0--1.0)
speednumber1.0再生速度の倍率
fadeInFadeTween--フェードインのトランジション設定

BgmStopOptions

フィールドデフォルト説明
fadeOutFadeTween--フェードアウトのトランジション設定。省略すると即座に停止します。

BgmUpdateOptions

フィールドデフォルト説明
volumenumber--新しい音量レベル
speednumber--新しい再生速度
tweenFadeTween--変更のトランジション設定

FadeTween

フィールドデフォルト説明
durationSecsnumber--秒単位の持続時間
easingstring"linear""linear""easeIn""easeOut""easeInOut" のいずれか

BgmStatus

フィールド説明
assetstring | null現在のアセット ID。停止中の場合は null
statestring"playing""paused""stopped" のいずれか
loopbooleanループが有効かどうか
volumenumber現在の音量レベル
speednumber現在の再生速度

次のステップ

  • Effects -- 画面上にビジュアルスタンプエフェクトを表示
  • Signals -- リアルタイム同期のためのクロスプロセス pub/sub メッセージング