LNS050 Audio拡張

RGSS組み込みの Audio モジュールを拡張するスクリプト。





基本情報

前提スクリプト

なし

拡張タイプ

○ 要設定 (このスクリプトで設定すると機能する)
◆ 要注意 (内部の挙動を変えるため競合の可能性あり)


説明

概要

 RGSS組み込みの Audio モジュールを拡張するスクリプト。下記 3 つの機能を追加します。
  • マスターボリューム
  • 別名ファイル
  • 連続再生

◆ マスターボリューム

 BGM, BGS, ME, SE を演奏する際、個々に指定する音量とは別に、それら全体の音量も設定できるようにします。
  • 実際に演奏される音量は、指定された音量に全体音量を掛けた値となります。
  • BGM と ME の音量補正は常に同じになります。
  • このスクリプト単体では各ボリュームは定数値になりますが、LNS294 拡張オプション によってゲーム中に変更できるようになります。

◆ 別名ファイル

Audio_Alias_List = {
 "#BGM_戦闘1" => "Battle1",
 "#BGM_戦闘2" => ["Battle5", 90, 110],
}
再生しようとしている AudioFile の名前が Audio_Alias_List のキーにある場合、その値に応じたファイル名に変換されて再生されます。
  • 場面ごとに使われる音声を予め決めておいて、あとから実際の音源を用意する場合などに、一括で設定できます。

例えば以下のように使います。
設定 : "#BGM_戦闘1" => "Battle1",
使用 : [BGMの再生] 名前:"#BGM_戦闘1"  #=> 実際に再生されるのは "Battle1"
 
設定 : "#BGM_戦闘2" => ["Battle5", 90, 110],
使用 : [BGMの再生] 名前:"#BGM_戦闘1" 音量:90 ピッチ:90
                   #=> 実際に再生されるのは "Battle1", 音量 81, ピッチ 99

  • 値は 文字列 または 所定の形式の配列 を設定します。
文字列
そのままファイル名として扱われます。
配列 [置換後ファイル名, 音量, ピッチ]
  • 音量とピッチは数値の他 nil も指定可能です。
  • [BGMの再生] などで指定された音量/ピッチにさらに乗算されて再生されます。

  • このリストは全ての AudioFile (BGM, BGS, SE, ME)で共有されるため、上の例のように別名部分には「BGM」などと付けておくことを推奨します。
  • 変換前の名前のファイルが実在している必要はありませんが、ツクールのエディタ上で設定する際には実体が必要となるため、空のファイルを作ってください。

◆ 連続再生

BGM_Groups = {
  "サンプルファイル名1" => :group1,
  "サンプルファイル名2" => :group1,
  "サンプルファイル名3" => [:group2, 150],
  "サンプルファイル名4" => [:group2, 180, 44100],
}
指定されたファイル名が BGM_Groups のキーに存在し、その値が再生中の BGM と同じ値を持つ場合、それらの BGM は「同じグループ」として扱われます。

  • 同じグループ内の BGM が再生されるとき、直前まで鳴っていた BGM のちょうど続きから再生されるようになります。
    • 同じグループの BGM を最初から再生したい場合、一旦別の BGM の再生を挟んでください。
  • [別名ファイル] を併用する場合、BGM_Groups のキーには置換後の名前を指定します。

  • 値を配列にした場合、[グループ名, テンポ, オフセット] として扱われます。
    • テンポ
      • キーで指定された名前の曲のテンポを指定します。
      • テンポが速い曲ほど大きな値にします。
      • グループ内で単位を揃えてあればなんでも構いませんが、基本的には BPM を書くのが無難です。
      • 省略した場合(値が配列でない場合も含む)は 100 とみなされます。
    • オフセット
      • 曲によってイントロの長さが違う場合に、そのイントロの長さを指定します。
      • 単位は(秒数ではなく)サンプル数です。
      • 省略した場合は 0(イントロなし) とみなされます。

※ Audio の仕様上、BGM の切替時には一時的に音量が下がります。フィールド BGM と戦闘 BGM を対応させるなど、切替え時に不自然さが目立たない用法をお勧めします。



備考

再定義されるメソッド

RPG::BGM#play
RPG::BGS#play
RPG::ME#play
RPG::SE#play
  • 再生時に上記の機能を適用するように変更します。

設定項目

Volume_Master <既定値 100 >
ゲーム起動時のマスターボリューム
Volume_BGM <既定値 100 >
ゲーム起動時の BGM/ME の音量
Volume_BGS <既定値 100 >
ゲーム起動時の BGS の音量
Volume_SE <既定値 100 >
ゲーム起動時の SE の音量
Audio_Alias_List
「別名ファイル」機能を適用するファイル名のリスト
BGM_Groups
「連続再生」機能を適用するファイル名のリスト


更新履歴

2020/12/29 新版公開(「別名ファイル」の仕様を旧版から変更)

  • こんにちは。不具合を発見したのでご報告いたします。 LNS000 組み込み拡張 LNS010 Input拡張 LNS100 プリセット拡張 LNS102 マウス操作 LNS140 マップ/キャラ拡張 の5つを導入した状態で、マップ画面でマウスカーソルをゲームウインドウの外側で大きく動かすなどすると、「 スクリプト 'LNS 140 マップ/キャラ拡張' の 980 行目で IndexError が発生しました。 index -1 too small for array; minimum: 0 」というエラーメッセージが表示され、ゲームが終了してしまいます。 スクリプトは全て最新で、内容は改変していません。 -- 2022-07-26 01:29:40
  • 確認が遅れましたが、対応修正しました。正確には「既に対応済みであったがアップロードを忘れていた」という状態でした…… -- 2022-11-01 15:39:07
  • 対応ありがとうございます!しかし LNS000, 010, 100, 102, 140 の5つを入れた状態で起動直後に「スクリプト 'LNS140 マップ/キャラ拡張' の 1719 行目で NameError が発生しました。 undefined method 'lns102_dash?' for class 'Game_Player'」と表示され、終了します。 -- 2022-12-24 16:39:35
コメント:

すべてのコメントを見る
最終更新:2020年12月29日 02:05