"""
Naninovel Audio Generator
生成音频相关命令(音乐、音效、语音)
"""
from core.base_sentence_generator import BaseSentenceGenerator
[文档]
class AudioGenerator(BaseSentenceGenerator):
"""音频生成器"""
param_config = {
"Music": {
"format_stop": "@stopBgm wait:False",
"format": '@bgm Music/{value}',
"translate_type": "Music",
},
"Sound": {
"format_stop": "@stopSound wait:False",
"format": '@sfx SFX/{value}',
"translate_type": "Sound",
},
"Ambience": {
"format_stop": "@stopSound wait:False",
"format": '@sfx SFX/{value} loop:True',
"translate_type": "Ambience",
},
"Volume": {
"format": " volume:{value}",
},
"AudioFade": {
"format": " fade:{value}",
},
}
@property
def category(self):
return "Audio"
@property
def priority(self) -> int:
return 100
[文档]
def process(self, data):
"""
处理音频参数
Args:
data: 参数字典
Returns:
List[str]: 生成的音频命令
"""
if not self.can_process(data):
return None
data = self.do_translate(data)
lines = []
for param_name in ["Music", "Ambience", "Sound"]:
line = ""
param_value = self.get_value(param_name, data)
if param_value == "stop":
line = self.param_config[param_name].get("format_stop","")
else:
line = self.get_sentence(param_name, data)
if self.exists_param("Volume", data) and line:
line += self.get_sentence("Volume", data)
if self.exists_param("AudioFade", data) and line:
line += self.get_sentence("AudioFade", data)
if line:
lines.append(line)
return lines