音声システム仕様
ページ概要
- 対象ファイル:
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 での定義
BGM定義(bgm_gallery) ⭐推奨
キャラクターMODのBGMは character.json の bgm_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ギャラリー(同梱SE)
システムが同梱しているSE(効果音)は、assets/configs/game_config.json の system_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.json の ui_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.json の default_bgm、assets/configs/ui_config.json の calendar_screen / location_selection_screen |
assets/audio/title.mp3 |
ui_backgrounds |
assets/configs/ui_config.json の title_screen |
assets/audio/new_game.mp3 |
ui_backgrounds |
assets/configs/ui_config.json の new_game_screen |
assets/audio/home.mp3 |
locations |
assets/configs/locations.json の home / 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.json の default_bgm |
assets/audio/serious.mp3 |
official_mods |
data/mods/haruka_hirota/events.json / data/mods/shouya_tada/events.json の default_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.json の default_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 ID(
BGM再生の優先順位:
- シーンで指定したBGM ← 最優先(イベントスクリプト内の
bgmフィールド) - events.jsonのBGM ←
default_bgmフィールド(イベント開始時) - キャラクターのBGM ←
theme_bgmフィールド(default_bgm未指定時) - 場所のBGM ← 場所定義の
bgmフィールド(上記すべて未指定時) - 前のBGMを継続 ← 何も指定されていない場合
イベントスクリプトでの使用
1. BGMの再生
BGM ID指定
{
"scene_id": "scene_001",
"type": "image",
"background": "park",
"bgm": "character_theme"
}
→ bgm_galleryのcharacter_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.json の audio_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を変えない
📝 設計のコツ
- シーンの雰囲気を事前に設計する
- 日常会話 →
assets/audio/daily_life.mp3 - 緊張する展開 →
assets/audio/tense.mp3 - 告白シーン →
assets/audio/confession.mp3 - ロマンティック →
audio/event_romantic.mp3
- 日常会話 →
- BGM切り替えポイントを明確にする
- 話題が変わる時
- 感情が大きく変化する時
- シーンの区切り(場所移動、時間経過)
- 静寂も演出の一部
- 重要な場面の前にBGMを止めると効果的
"bgm": "stop"を積極的に活用
- フェード時間で感情の変化速度を表現
- 急な展開: 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/
└── ...
フォールバック動作
- 指定された言語のボイスが存在しない場合、ボイスなしで進行
- 片方の言語のみボイスを用意することも可能
{
"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.mp3(greeting_001_ja.mp3ではない)
2. ボイス収録のポイント
- 言語による表現の違いを考慮
- 日本語と英語では文の長さが異なる場合がある
- 感情表現のニュアンスも言語によって異なる
- それぞれの言語に適した演技を収録
- 音量・音質は統一
- 両言語で同じ音量レベルに調整
- 同じ音質・ビットレート・サンプリングレートを使用
まとめ
音声システムにより、以下が実現されます:
- BGM: シーンの雰囲気を演出する背景音楽
- SE: 効果音でアクションを強調
- ボイス: キャラクターに命を吹き込む
- 多言語ボイス: 言語ごとに異なるボイスファイルを再生可能
- 柔軟な制御: フェード、音量調整、一時停止/再開
- システムBGM: MOD作成者の負担を軽減
- キャラクターテーマ: 各キャラクターの個性を表現
MOD作成者の負担を軽減: システムBGMを使用すれば、独自のBGMを用意しなくても完成度の高いMODが作れます!