Trainz/containers/soundscript 容器
一种容器类型标签,用于定义资源声音。Soundscript 容器能够控制“相对响度”、淡入淡出范围、随机范围,并具有特定的触发器。
每个 soundscript 子容器都支持以下标签。每个标签都以其默认值显示。
规范与示例 |
---|
规范 |
soundscript (container) { soundscript-ID (Optional-Name[note 1]) repeat-delay 0,0 distance 50,150 ambient 0 attachment "" nostartdelay 0 priority 1 trigger "" volume 1 value-range 0,0 sound { } } |
简单示例 |
soundscript { dayloop (optional name) { ambient 1 repeat-delay 20,25[note 2] distance 10,100 sound (subcontainer)[note 3] { dogbark.wav lildogbark.wav bigdogbark.wav dogsallbark.wav } } } (adapted: KB dogbark,<kuid:52682:39098>) |
- 在上面的示例中,资源很可能只会被听到一次,除非在附近被停止(车站、站台?),并且列表中的声音是随机选择的,因此会为这样的停止的耳朵提供不同的声音。
- 类型:布尔值 — 除 1 & 0 以外的值将生成错误消息!
- 默认值:0
- 强制:否
- 描述:如果为真,则这是一个“环境”声音,环境声音在 2D 中播放,除了影响音量外,不使用世界中的 3D 定位。与位置声音不同,环境声音可以是立体声。
- 类型:附件点
- 默认值:""
- 强制:否
- 描述:要将声音源附加到的点。附件点在创建期间在网格文件中指定。
为什么声音不应该有附件点,玛蒂尔达、乔治和米利森问道。为什么当声音被路线构建者作为“可听的场景”放置在路线轨道附近时,就像他可能会放置一棵树一样。与视觉效果一样,音效由建模者使用,以提供一种体验,对现实的印象——因为没有两个第二声音文件能够模仿连续声音的现实。
- 类型:十进制对 — 米:radius_Begin_fading,radius_cut_off_&_stop
- 默认值:50,150
- 强制:否
- 描述:从源头开始,以米为单位,声音可听的距离范围。
- 最小距离定义了声音保持 100% 音量的半径。
- 超过该距离,声音音量将自然衰减。
- 最大距离定义了游戏将不再播放声音的半径。这并不意味着声音淡出的行为按此值进行缩放,以便它在最大距离处淡出到零,而是声音将在该点突然切断.提示:由内容创建者选择合适的距离——较小的距离对于性能更好,因为资源影响半径越早被传递,CPU 的流程循环就越早将其从循环中删除,并将注意力集中在其他事情上。帧率 Griper 请注意!那个漂亮的音效是有代价的。
- 类型:布尔值
- 默认值:0
- 强制:否
- 描述:如果添加并为真,则此标签指定声音将在触发后立即播放。默认情况下,声音在 0 & 4 秒之间具有随机开始延迟。在大多数情况下,应保持开始延迟处于活动状态,因为将其关闭可能会在多个相同声音靠近时导致明显的音频伪影。
- 类型:整数
- 描述:设置声音的优先级,如果没有足够的声卡通道可用,则优先级较高的声音将首先播放。默认为 1,可以为负数。
- 类型:十进制对
- 默认值:0,0
- 强制:是 (3.4)
- 描述:声音播放完毕后延迟的时间范围(以秒为单位),然后再次播放声音。要设置恒定的延迟,请将这两个值设置为相同的值,或者只提供其中一个值,否则将选择它们之间的一个随机值。当与触发事件一起使用时(参见“trigger”标签),正值表示声音不应该重复,而应该等待再次被触发。
- 类型:容器
- 默认值:{}
- 强制:是
- 描述:包含要播放的声音文件的键/字符串列表。如果列表中有多个条目,则将从列表中随机选择一个文件。此容器中每个标签的值都是 WAV 声音文件的名称。文件名相对于资源的基目录,即相对于配置文件的位置。列表中使用的键并不重要:Trainz 的约定是将每个选项从零开始编号,虽然强烈建议遵循此约定,但没有技术要求这样做。
- 有效的 WAV 文件是
- 未压缩的。
- 8 或 16 位
- 单声道、立体声或环绕声(从版本 3.7 开始,环绕声尚未完全测试)
- 采样率可以是 22kHz (22,050Hz) 或 44kHz (44,100Hz)。更高的采样率将文件大小增加一倍,但质量没有明显提高,因此不建议使用。对于某些用途,还有其他要求——例如,定向声音必须是单声道的。
- 类型:字符串
- 默认值:""
- 强制:否
- 描述:'trigger' 标签给您的声音起一个名称,允许它从 TrainzScript、动画和某些预定义事件中播放。 (至少这些“预定义事件”之一是在将声音脚本容器包含在 "kind mojunction" 的 config.txt 中时使用单词“toggle”。 这将使声音在每次转辙器切换时触发)
- 类型:浮点对
- 默认:0,0 (关闭)
- 强制:否
- 描述:两个数字,其中数字不同,它们设置声音播放的开始和结束时间。午夜是 0.5,中午是 0.0 或 1.0。(待定。这有点模糊。)
- 类型:十进制
- 默认:1
- 强制:否
- 描述:指定声音的音量增益。默认值为 1 (100%)。
- 类型:字符串值,标识符名称
- 默认值:""
- 强制性:否,除非声音脚本容器管理多个声音。(见下面的早晚示例)
- 描述:指定用于连接到软件其他部分的声音的句柄或文本标识符。
类似于其他容器中的 '-ID' 后缀项 Index_of_Tags_%26_Containers
具有不同白天和黑夜背景声音的地图资产的示例 config.txt 文件
kind map kuid <KUID2:497853:13052:3> soundscript { morning { ambient 1 value-range 1, 0.1 volume 0.3 sound { 0 ctry_day_1.wav 1 ctry_day_2.wav } } night { ambient 1 value-range 0, 0.9 volume 0.3 sound { 0 night_loop.wav } } }
这是一个实际的 TB v1.3 资产升级到 V2.7 (TC1&2) - 这个级别是一个有用的中间状态,*包含大多数必要的重大更改*,并且作为检查消除了现在非法的以前有用的快速分类 TBS 标签,例如*region*、*type*、*asset-name* 和其他已停用的关键字,例如*autoanimation*(其操作被并入诸如网格表 containers 和 autocreate 参数之类的结构中)。
kind "scenery" light 1 category-class "BU" trainz-build 2.7 username "KB trainannouncer sound-aRus" category-region "00" category-era "1960s;1970s;1980s;1990s;2000s;2010s" description "username = 'KB trainannouncer sound-aRus' -- This is a 27 second long muted platform soundtrack with indistinct but obvious near-continuous distant loudspeaker announcement. Original description: -- This is a sound add-on. -- To use it you must place this object in Surveyor at or adjacent to any area that you wish to hear this sound from. credit: Thanks to USER.RO for creating the sound regions object. It makes the creation of objects in this package easy & quick. original trainz-build 1.3 Rev-A 2015-0115 - by Fabartus - update to update ranges... and eliminate these obsolescent tags: asset-filename 'KB_trainannounce' autoanimation 1 region 'AAA Sounds' type 'Trains' --------- This faulty asset originated in C:\TS09-SP3\UserData\editing 2014-1008 Asset foldername: kuid2 52682 39352 0;v2-6;Platform sound effect;KB Trainannouncer sound-aRus Original folder: C:\TS09-SP3\editing\KB trainannounce ****************************************************************************************** soundscript { dayloop { repeat-delay 20,38 distance 10,80 sound { trainannounce.wav } } } mesh-table { default { mesh "invisible-platform_body.im" auto-create 1 } } thumbnails { 0 { width 240 height 180 image "$Soundeffect screenshot (240).jpg" } } kuid-table { }
作为一项并非为了上传而修复的资产,修复者可以选择调整排序参数,例如用户名、描述数据以及 category-xxx 参数,以适合资产种类的限制。在这种情况下,作为一名相信良好文档的程序员,描述块用于跟踪自 TS2009 版本中删除合法备注或注释以来的更改(更改记录)。该示例还展示了对作者原始名称的更改和符合性:尽可能以相同的顺序保留相同的短语,如果可能,添加扩展和澄清的词语或短语,然后也例行地添加更改后缀 '-aRus'。这字面意思是:**A**ltered(更改)、**R**epaired(修复)、**U**pgraded(升级)、**S**creenshot(屏幕截图);-a 后缀将在 CM 中作为名称参数给出时进行排序。
以上示例还用于说明另一个要点 - C 语言编程实践世界中存在不同风格的缩进。声音脚本容器使用了一种这样的格式约定,而最后三个容器使用了另一种常见的缩进方法。通常,内容管理器会解压缩并生成容器的第一种形式,但 CM & CMP 对其他形式相当宽容,前提是在字符之间存在空格字符。在 C、C++ 和 C# 语言中,不需要这种空格填充,方括号本身就足以在解析数据元素时进行分隔。Trainz 解析要严格得多且能力有限。
- ↑ 仅在配置文件中有多个条目时才需要名称。请参阅 地图文件中的声音脚本 示例中的早晚标签。
- ↑ 许多较旧的资产在此处缺少第二个数字,这会在 N3V 的 CM 错误检查中产生错误。
• 否则,重复之前的延迟将在第一个数字和第二个数字之间随机生成。
• 对于恒定延迟,使它们相等。
• 0,0 的重复延迟使声音成为连续循环。 - ↑ 如果列表中有多个条目,则将从列表中随机选择一个文件。
本参考页面改编自 TrainzOnline Wiki,遵循 CC-BY-SA 3.0 许可证。本页面可能包含比 同一主题的源页面 更多的文本解释、论述、历史和/或示例。 TrainzOnline Wiki 主要由程序员或精通 内容创建者 维护,可能包含有关当前 trainz-build 代码 标准的更新信息,这些标准随着软件功能的添加而不断变化。 |