音声システム仕様

ページ概要

  • 対象ファイル: character.json, events.json, events/*.json
  • 役割: イベント中にBGM/SE/ボイスを再生・停止・一時停止し、必要ならフェード/音量を調整します。
  • どこで使われるか: イベント実行時(各シーン)、イベント開始時のデフォルトBGM(events.json
  • 最小構成: 音声なしでも動きます(未指定なら何もしません)
  • よくあるミス: 停止の書き方(*_action)、ID/パスの混同、存在しないファイル参照

概要

レンアイシステムでは、BGM(背景音楽)SE(効果音)ボイス(音声)の3種類の音声を管理します。MOD作成者は独自の音声ファイルを追加でき、イベントスクリプトから自由に再生できます。

音声の種類

1. BGM(Background Music)

シーンの雰囲気を演出する背景音楽。

特徴:

  • ループ再生される
  • 音量は設定から変更可能
  • フェードイン/フェードアウト対応
  • 同時に1曲のみ再生

用途:

  • 場所のデフォルトBGM
  • イベント専用BGM
  • キャラクターテーマBGM

2. SE(Sound Effect)

効果音。

特徴:

  • ワンショット再生
  • 短い音声
  • 複数同時再生可能

用途:

  • ボタンクリック音
  • 扉の開閉音
  • メッセージ表示音

3. ボイス(Voice)

キャラクターの声。

特徴:

  • セリフに合わせて再生
  • 音量は設定から変更可能
  • 同時に1つのみ再生(会話の場合)

用途:

  • キャラクターのセリフ
  • モノローグ

MODフォルダ構造

my_character_mod/
├── mod.json
├── audio/                      # BGM
│   ├── character_theme.mp3        # キャラクターテーマ
│   ├── event_theme.mp3            # イベント専用BGM
│   ├── happy_theme.mp3            # 明るいシーン用
│   ├── sad_theme.mp3              # 悲しいシーン用
│   └── romantic_theme.mp3         # ロマンティックシーン用
├── se/                         # 効果音
│   ├── happy_bell.mp3              # 嬉しい時の効果音
│   ├── sad_rain.mp3                # 悲しい時の効果音
│   └── notification.mp3            # 通知音
├── voice/                      # ボイス(任意、言語別サブディレクトリ)
│   ├── ja/                     # 日本語ボイス
│   │   ├── greeting_001.mp3
│   │   ├── greeting_002.mp3
│   │   └── confession_001.mp3
│   └── en/                     # 英語ボイス
│       ├── greeting_001.mp3
│       ├── greeting_002.mp3
│       └── confession_001.mp3
├── portraits/
├── events/
└── ...

character.json での定義

キャラクターMODのBGMは character.jsonbgm_gallery に定義します(CGと同じく map(id→metadata))。

{
  "id": "sakura_tanaka",
  "theme_bgm": "character_theme",
  "bgm_gallery": {
    "character_theme": {
      "path": "audio/character_theme.mp3",
      "title_ja": "さくらのテーマ",
      "title_en": "Sakura's Theme",
      "loop": true,
      "volume": 0.7
    },
    "event_happy": {
      "path": "audio/happy_theme.mp3",
      "title_ja": "楽しいひととき",
      "title_en": "Happy Moment",
      "loop": true,
      "volume": 0.7
    }
  }
}

季節別BGM対応

CGと同じように、BGMも季節ごとに異なる曲を設定できます。

{
  "bgm_gallery": {
    "park_theme": {
      "path": {
        "default": "audio/park_spring.mp3",
        "summer": "audio/park_summer.mp3",
        "autumn": "audio/park_autumn.mp3",
        "winter": "audio/park_winter.mp3"
      },
      "title_ja": "公園のテーマ",
      "title_en": "Park Theme",
      "loop": true,
      "volume": 0.7
    }
  }
}

システムが同梱しているSE(効果音)は、assets/configs/game_config.jsonsystem_se_gallery で定義されています。イベントスクリプトでは、ID指定(推奨)または パス指定 ができます。

重要(同梱保証)

  • se"click" のような文字列を入れると、内部で assets/se/<id>.mp3 に変換して再生します。
  • ただし「同梱されていることが保証されるID」は、下表(system_se_gallery)に載っているもののみです。
SE ID パス 名前(日本語) Name (English) 説明 主な利用箇所
click assets/se/click.mp3 クリック音 Click Sound ボタンクリック時の効果音 ui_config.jsonui_sounds.button_click(UIクリック音)
chime assets/se/chime.mp3 学校のチャイム School Chime 学校のチャイム イベントスクリプトの se(通知・演出など)

標準BGM(同梱BGM)

ゲームエンジンに同梱され、設定ファイルまたは公式MODで参照されている標準BGMの一覧です。BGMは基本的に パス指定assets/audio/*.mp3)で使用します。

注意

  • この表は「現状の設定/公式MODから参照されているもの」を掲載しています(最小集合)。将来、同梱BGMが増えた場合はこの表も更新されます。
パス 用途カテゴリ 主な参照元(例)
assets/audio/main_theme.mp3 default_bgm / ui_backgrounds assets/configs/game_config.jsondefault_bgmassets/configs/ui_config.jsoncalendar_screen / location_selection_screen
assets/audio/title.mp3 ui_backgrounds assets/configs/ui_config.jsontitle_screen
assets/audio/new_game.mp3 ui_backgrounds assets/configs/ui_config.jsonnew_game_screen
assets/audio/home.mp3 locations assets/configs/locations.jsonhome / my_room_*
assets/audio/school.mp3 locations assets/configs/locations.json の学校系ロケーション(school_gate, school_classroom など)
assets/audio/town.mp3 locations assets/configs/locations.json の街系ロケーション(station, cafe など)
assets/audio/outdoor.mp3 locations assets/configs/locations.json の屋外ロケーション(residential_area, park, riverside など)
assets/audio/prologue.mp3 official_mods data/mods/player_male/events.json / data/mods/player_female/events.jsondefault_bgm
assets/audio/serious.mp3 official_mods data/mods/haruka_hirota/events.json / data/mods/shouya_tada/events.jsondefault_bgm、一部スクリプトの bgm
assets/audio/sentimental.mp3 official_mods data/mods/haruka_hirota/events/*bgm、各MODのエンディング default_bgm など
assets/audio/true_love.mp3 official_mods data/mods/haruka_hirota/events.json / data/mods/shouya_tada/events.jsondefault_bgm、一部スクリプトの bgm

オーディオ指定形式

BGM:ID指定(推奨)または直接パス指定

MOD BGMはbgm_galleryに定義してID指定(推奨):

// BGM ID指定(推奨) - bgm_galleryから自動解決
"bgm": "character_theme"
"bgm": "event_happy"
"bgm": "event_romantic"

システムBGMは直接パス指定:

// システム共通BGM
"bgm": "assets/audio/main_theme.mp3"
"bgm": "assets/audio/school.mp3"

SE:ID指定(推奨)または直接パス指定

システムが持っているSEはID指定:

// システムSE ID指定 - システムSEギャラリーから自動解決
"se": "click"
"se": "chime"

※ ID指定は内部で assets/se/<id>.mp3 に変換して再生します。同梱保証システムSEギャラリー 掲載分のみです。

MOD独自SE:

// MOD独自SE(直接パス指定のみ)
"se": "se/happy_bell.mp3"
"se": "se/notification.mp3"

ボイス:言語別パス指定

// MOD独自ボイス(推奨)- 言語別サブディレクトリ
"voice_ja": "voice/ja/greeting_001.mp3"
"voice_en": "voice/en/greeting_001.mp3"

// システム共通ボイス(言語別サブディレクトリを含む)
"voice_ja": "assets/voice/ja/greeting.mp3"
"voice_en": "assets/voice/en/greeting.mp3"

ID/パスの解決ルール(実装準拠)

「IDを指定したらどこにあるファイルが再生されるのか」は、ゲーム側の解決ルールで決まります(実装: AudioService)。MOD作成時に迷ったら、下のルールに沿ってください。

  • BGM(bgm / default_bgm
    • assets/audio/...: システム同梱BGMとしてそのまま再生
    • character.<bgm_id>: 「現在キャラクター」の bgm_gallery から <bgm_id> を解決
    • <character_id>.<bgm_id>: 指定したキャラの bgm_gallery から解決
    • <bgm_id>:(現在キャラが分かる文脈なら)現在キャラの bgm_gallery から解決(推奨)
    • audio/...: MOD内BGMとして解決(この場合も「どのMODか」を判定するためにキャラクター文脈が必要)
  • SE(se
    • assets/se/...: システム同梱SEとしてそのまま再生
    • se/...: MOD内SEとして解決(キャラクター文脈が必要)
    • click のようにスラッシュ/拡張子を含まない文字列: assets/se/<id>.mp3 として再生(同梱保証は system_se_gallery 掲載分のみ)
  • ボイス(voice_ja / voice_en
    • assets/voice/...: システム同梱ボイス(あれば)
    • voice/...: MOD内ボイス(キャラクター文脈が必要)

イベント定義でのデフォルトBGM指定

イベント定義ファイル(events.json)の各イベントに、イベント開始時に自動的に再生されるデフォルトBGMを指定できます。

events.jsonでの定義

{
  "events": [
    {
      "id": "haruka_confession",
      "title_ja": "はるかの告白",
      "title_en": "Haruka's Confession",
      "type": "story",
      "description_ja": "はるかの告白",
      "description_en": "Haruka's confession",
      "default_bgm": "romantic_theme",
      "required_conditions": {
        ...
      },
      "script_file": "events/confession.json",
      "once_only": true,
      "priority": 70
    }
  ]
}

フィールド説明:

  • default_bgm(任意): イベント開始時に自動再生されるBGM
    • BGM ID(bgm_galleryから解決)または直接パス指定
    • 未指定の場合は、前のBGMが継続再生される

BGM再生の優先順位:

  1. シーンで指定したBGM ← 最優先(イベントスクリプト内のbgmフィールド)
  2. events.jsonのBGMdefault_bgmフィールド(イベント開始時)
  3. キャラクターのBGMtheme_bgmフィールド(default_bgm未指定時)
  4. 場所のBGM ← 場所定義のbgmフィールド(上記すべて未指定時)
  5. 前のBGMを継続 ← 何も指定されていない場合

イベントスクリプトでの使用

1. BGMの再生

BGM ID指定

{
  "scene_id": "scene_001",
  "type": "image",
  "background": "park",
  "bgm": "character_theme"
}

bgm_gallerycharacter_themeが自動的に解決されます

2. BGMの停止

推奨: bgm_action を使って停止します。

{
  "scene_id": "scene_001",
  "type": "image",
  "bgm_action": "stop",
  "bgm_fade_out": 1.5
}

補足: "bgm": "stop" でも停止できます。

{
  "scene_id": "scene_001",
  "type": "image",
  "bgm": "stop"
}

注意

  • "bgm": null は「停止」ではなく、(何もせず)現在のBGMを継続します。

3. セリフと同時にBGM切り替え

セリフごとに異なるBGMを指定できます!

{
  "scene_id": "scene_001",
  "type": "dialogue",
  "character": "sakura_tanaka",
  "portrait": "happy",
  "text": "今日は楽しかったね!",
  "bgm": "event_happy"
}

セリフの途中で雰囲気を変えることも可能:

{
  "scenes": [
    {
      "scene_id": "scene_001",
      "type": "dialogue",
      "character": "sakura_tanaka",
      "portrait": "normal",
      "text": "ねえ、話したいことがあるの...",
      "bgm": "assets/audio/daily_life.mp3"
    },
    {
      "scene_id": "scene_002",
      "type": "dialogue",
      "character": "sakura_tanaka",
      "portrait": "shy",
      "text": "実は...あなたのことが好きなんだ。",
      "bgm": "assets/audio/confession.mp3",
      "bgm_fade_in": 2.0
    },
    {
      "scene_id": "scene_003",
      "type": "dialogue",
      "character": "sakura_tanaka",
      "portrait": "happy",
      "text": "やった!私も嬉しい!",
      "bgm": "event_romantic"
    }
  ]
}

BGMの制御

フェードイン/フェードアウト

BGMは自動的にフェードイン/フェードアウトします。

{
  "scene_id": "scene_001",
  "type": "image",
  "bgm": "audio/event_romantic.mp3",
  "bgm_fade_in": 2.0,
  "bgm_fade_out": 2.0
}

デフォルト値:

  • フェードイン: 0.3秒
  • フェードアウト: 0.5秒

※ 上記は assets/configs/ui_config.jsonaudio_fade_config によって決まります(ゲーム側の設定)。

キャラクターテーマBGM

各キャラクターには「テーマBGM」を設定できます。キャラクター選択画面やキャラクター詳細画面で自動再生されます。

character.json / mod.json での設定

{
  "id": "sakura_tanaka",
  "theme_bgm": "character_theme",
  "bgm_gallery": {
    "character_theme": {
      "path": "audio/character_theme.mp3",
      "title_ja": "さくらのテーマ",
      "title_en": "Sakura's Theme",
      "loop": true,
      "volume": 0.7
    }
  }
}

theme_bgmで指定したBGM IDがbgm_galleryから自動解決されます

音声ファイル仕様

サポートされる形式

  • 推奨: MP3、OGG
  • 対応: WAV(ファイルサイズが大きいため非推奨)

ファイルサイズの目安(推奨)

  • 重要: 厳密にチェックされるのは MOD全体(全ファイル合計)200MB以下 です。
  • 推奨の目安: BGMは数MB〜、SE/ボイスはできるだけ小さく(読み込み・配布の負担軽減のため)

音質推奨

BGM:

  • ビットレート: 128kbps~192kbps
  • サンプリングレート: 44.1kHz
  • ステレオ

SE:

  • ビットレート: 96kbps~128kbps
  • サンプリングレート: 44.1kHz
  • モノラルまたはステレオ

セリフごとのBGM切り替え - ベストプラクティス

✅ 推奨される使い方

1. 感情の大きな変化で切り替える

{
  "scene_id": "scene_001",
  "type": "dialogue",
  "character": "sakura_tanaka",
  "portrait": "sad",
  "text_ja": "もう...だめかもしれない。",
  "text_en": "I... I don't think I can do this anymore.",
  "bgm": "audio/event_sad.mp3",
  "bgm_fade_in": 2.0
}

→ 明るい会話から悲しい話題に転換する時

2. 重要なシーンの前に静寂を作る

{
  "scene_id": "scene_001",
  "type": "dialogue",
  "character": "sakura_tanaka",
  "portrait": "uniform.serious",
  "text_ja": "あのね...大事な話があるの。",
  "text_en": "Hey... I have something important to tell you.",
  "bgm": "stop",
  "bgm_fade_out": 1.5
}

→ 告白シーンなど、重要な瞬間を際立たせる

❌ 避けるべき使い方

1. セリフごとに頻繁に切り替えすぎる

// 悪い例:BGMがうるさくなる
{
  "scenes": [
    { "text": "こんにちは", "bgm": "bgm1" },
    { "text": "元気?", "bgm": "bgm2" },      // ← 変える必要なし
    { "text": "そうだね", "bgm": "bgm3" }    // ← 変える必要なし
  ]
}

→ 同じ雰囲気が続く場合は、BGMを変えない

📝 設計のコツ

  1. シーンの雰囲気を事前に設計する
    • 日常会話 → assets/audio/daily_life.mp3
    • 緊張する展開 → assets/audio/tense.mp3
    • 告白シーン → assets/audio/confession.mp3
    • ロマンティック → audio/event_romantic.mp3
  2. BGM切り替えポイントを明確にする
    • 話題が変わる時
    • 感情が大きく変化する時
    • シーンの区切り(場所移動、時間経過)
  3. 静寂も演出の一部
    • 重要な場面の前にBGMを止めると効果的
    • "bgm": "stop" を積極的に活用
  4. フェード時間で感情の変化速度を表現
    • 急な展開: 0.5~1.0秒
    • 通常の変化: 1.0~2.0秒
    • ゆっくりした変化: 2.0~3.0秒

MOD作成ガイドライン

1. BGMは必須ではない

システムBGMを使用すれば、MOD独自のBGMは不要です。

最小構成(BGMなし):

my_character_mod/
├── mod.json
├── portraits/
└── events/

2. キャラクターテーマBGMを推奨

最低限、キャラクターのテーマBGMだけでも用意すると雰囲気が出ます。

3. ライセンスに注意

使用する音声ファイルのライセンスを確認し、README.mdに記載してください。

## 使用音源

- BGM: "Character Theme" by [Artist Name] (CC BY 4.0)
- SE: [Source] (Public Domain)

ボイスの多言語対応

概要

レンアイシステムは日本語と英語の2言語に対応しており、ボイスも言語ごとに異なるファイルを指定できます。

基本形式

必須形式(言語別フィールド):

{
  "scene_id": "scene_001",
  "type": "dialogue",
  "character": "sakura_tanaka",
  "portrait": "happy",
  "text_ja": "こんにちは!",
  "text_en": "Hello!",
  "voice_ja": "voice/ja/greeting_001.mp3",
  "voice_en": "voice/en/greeting_001.mp3"
}

ファイル配置

必須構造(言語別サブディレクトリ):

my_character_mod/
├── voice/
│   ├── ja/                    # 日本語ボイス
│   │   ├── greeting_001.mp3
│   │   ├── greeting_002.mp3
│   │   └── confession_001.mp3
│   └── en/                    # 英語ボイス
│       ├── greeting_001.mp3
│       ├── greeting_002.mp3
│       └── confession_001.mp3
├── portraits/
├── events/
└── ...

フォールバック動作

  1. 指定された言語のボイスが存在しない場合、ボイスなしで進行
  2. 片方の言語のみボイスを用意することも可能
{
  "scene_id": "scene_001",
  "type": "dialogue",
  "character": "sakura_tanaka",
  "portrait": "happy",
  "text_ja": "こんにちは!",
  "text_en": "Hello!",
  "voice_ja": "voice/ja/greeting_001.mp3"
}

→ 日本語環境ではボイスが再生され、英語環境ではボイスなしで進行

使用例

基本的なボイス再生

{
  "scene_id": "scene_001",
  "type": "dialogue",
  "character": "sakura_tanaka",
  "portrait": "happy",
  "text_ja": "今日はいい天気だね!",
  "text_en": "It's a nice day today!",
  "voice_ja": "voice/ja/weather_001.mp3",
  "voice_en": "voice/en/weather_001.mp3"
}

ボイス音量を調整

{
  "scene_id": "scene_001",
  "type": "dialogue",
  "character": "sakura_tanaka",
  "portrait": "shy",
  "text_ja": "(小声で)実は...好きなんだ。",
  "text_en": "(Whisper) Actually... I like you.",
  "voice_ja": "voice/ja/confession_whisper.mp3",
  "voice_en": "voice/en/confession_whisper.mp3",
  "voice_volume": 0.6
}

MOD作成ガイドライン

1. ファイル命名規則

言語別サブディレクトリを使用:

  • 日本語ボイス: voice/ja/ に配置
  • 英語ボイス: voice/en/ に配置
  • ファイル名は言語コードなし: greeting_001.mp3greeting_001_ja.mp3 ではない)

2. ボイス収録のポイント

  • 言語による表現の違いを考慮
    • 日本語と英語では文の長さが異なる場合がある
    • 感情表現のニュアンスも言語によって異なる
    • それぞれの言語に適した演技を収録
  • 音量・音質は統一
    • 両言語で同じ音量レベルに調整
    • 同じ音質・ビットレート・サンプリングレートを使用

まとめ

音声システムにより、以下が実現されます:

  1. BGM: シーンの雰囲気を演出する背景音楽
  2. SE: 効果音でアクションを強調
  3. ボイス: キャラクターに命を吹き込む
  4. 多言語ボイス: 言語ごとに異なるボイスファイルを再生可能
  5. 柔軟な制御: フェード、音量調整、一時停止/再開
  6. システムBGM: MOD作成者の負担を軽減
  7. キャラクターテーマ: 各キャラクターの個性を表現

MOD作成者の負担を軽減: システムBGMを使用すれば、独自のBGMを用意しなくても完成度の高いMODが作れます!

関連ドキュメント