NarraLeaf

サウンド

音声、音楽、効果音の再生を扱う `Sound` クラス。音量、ミュート、再生速度、シーク、フェードを扱う

このページは作成中です。

ベータ機能であり、変更される可能性があります。

Sound はゲーム内の音声を制御します

静的メソッド

voice

ボイスサウンドを作成します

const voice = Sound.voice({
    src: 'voice.mp3',
});

// これは次と等価
const voice = new Sound({
    src: 'voice.mp3',
    type: SoundType.Voice,
});

ここでの typeデフォルト値であり、上書きではありません。値を渡すと、そのセリフを voice の下にあるバスに割り当てられます — これによって、ゲームはキャストの各メンバーに固有の音量を持たせることができます。

const line = Sound.voice({src: 'alice-01.mp3', type: 'alice'});
  • arg0: Partial<ISoundUserConfig> | string - サウンドの設定、またはサウンドのソース。ISoundUserConfig を参照
  • 戻り値: Sound

bgm

BGM サウンドを作成します。type はデフォルトで bgm になり、その下にある任意のバスを指定できます。

  • arg0: Partial<ISoundUserConfig> | string - サウンドの設定、またはサウンドのソース。ISoundUserConfig を参照
  • 戻り値: Sound

sound

サウンドを作成します。type はデフォルトで sound になり、その下にある任意のバスを指定できます。

  • arg0: Partial<ISoundUserConfig> | string - サウンドの設定、またはサウンドのソース。ISoundUserConfig を参照
  • 戻り値: Sound

公開メソッド

constructor

オーバーロード 1/2

オーバーロード 2/2

  • src?: string - サウンドのソース

チェーン可能なメソッド

play

サウンドを再生し、終了するまで待機します

const sound = new Sound({
    src: 'sound.mp3',
});
scene.action([
    sound.play(1000), // 再生して1秒かけてフェードイン
]);

どのバス上のクリップも、bgm のものを含めてこの方法で再生できます。type はそのクリップをどの音量コントロールが管轄するかを 決めるだけで、それ以外には影響しません。そのため、環境音トラックを bgm に置いて(プレイヤーの音楽スライダーで制御できるように して)、それを普通の一行から再生する、というのは正当な使い方です。

これは scene.setBackgroundMusic() とは異なります。 ここで再生されるクリップはシーンの背景音楽スロットには 入らないため、シーンを離れてもそのクリップは停止せず、クロスフェードも組まれません。この方法で bgm タイプの クリップを再生すると、その旨を伝える console.warn が出力されますが、これは注意喚起であってエラーではありません。 0.22.0 より前は、これは例外をスローし、チェーンのビルド時にストーリー全体を失敗させていました。

  • duration?: number - フェードの長さ(ミリ秒)

stop

サウンドを停止します。停止後、サウンドは先頭に戻ります

  • duration?: number - フェードの長さ(ミリ秒)

setVolume

サウンドの音量を設定します。時間を指定すると、変化は瞬間的なジャンプではなくフェードになります。

const sound = new Sound({
    src: 'sound.mp3',
    volume: 0,
});
scene.action([
    sound
        .play()
        .setVolume(1, 1000), // 1秒かけてフェードイン
]);
  • volume: number - 音量。0 から 1 まで
  • duration?: number - フェードの長さ(ミリ秒)

mute

再生を止めずに、サウンドをミュートまたはミュート解除します。

scene.action([
    bgm.play(),
    bgm.mute(),
    bgm.unmute(),
]);
  • muted?: boolean - true でサウンドをミュート、false で音量を復元します(デフォルトは true
  • 戻り値: Proxied<Sound, Chained<LogicAction.Actions>> - チェーンされた Sound インスタンス

unmute

元の音量を復元するための mute(false) のエイリアスです。

  • 戻り値: Proxied<Sound, Chained<LogicAction.Actions>> - チェーンされた Sound インスタンス

setRate

サウンドの再生速度を設定します

  • rate: number - 速度。基準値は 1

pause

  • duration?: number - フェードの長さ(ミリ秒)

resume

  • fade?: number - フェードの長さ(ミリ秒)

seek

クリップ内の位置(秒単位)にジャンプし、そこから再生を続けます。これは再生位置を読み取る処理に対する書き込み側の対になる もので、音楽プレイヤー画面や「イントロをスキップする」処理に必要です。

scene.action([
    theme.seek(30),
]);

現在再生していないサウンドに対しては何もしません: 動かすべきものがないためです。ループ区間( endTime を参照)はジャンプ後も保持されるため、 ループ中のトラック内をシークしても、気づかないうちにワンショット再生に変わってしまうことはありません。

  • time: number - 位置(秒)。ファイルの先頭から測定します(イン点からではありません)
  • 戻り値: Proxied<Sound, Chained<LogicAction.Actions>> - チェーンされた Sound インスタンス

このページの目次