跳轉到內容

Trainz/containers/soundscript 容器

來自 Wikibooks,開放世界中的開放書籍
logo
Trainz 註釋參考
TOC | 開始樂趣 | AM&C | 創作 | InBook Refs ORP Refs:  • 索引 • 容器 • 種類 • 標籤 | 附錄  • 版本

一種容器型別標籤,用於定義資源聲音。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 定位。與位置聲音不同,環境聲音可以是立體聲。

attachment

[編輯 | 編輯原始碼]
型別:附件點
預設值:""
強制:否
描述:要將聲音源附加到的點。附件點在建立期間在網格檔案中指定。

為什麼聲音不應該有附件點,瑪蒂爾達、喬治和米利森問道。為什麼當聲音被路線構建者作為“可聽的場景”放置在路線軌道附近時,就像他可能會放置一棵樹一樣。與視覺效果一樣,音效由建模者使用,以提供一種體驗,對現實的印象——因為沒有兩個第二聲音檔案能夠模仿連續聲音的現實。 

型別:十進位制對 — 米:radius_Begin_fading,radius_cut_off_&_stop
預設值:50,150
強制:否
描述:從源頭開始,以為單位,聲音可聽的距離範圍。
  • 最小距離定義了聲音保持 100% 音量的半徑。
  • 超過該距離,聲音音量將自然衰減。
  • 最大距離定義了遊戲將不再播放聲音的半徑。這並不意味著聲音淡出的行為按此值進行縮放,以便它在最大距離處淡出到零,而是聲音將在該點突然切斷.提示:由內容建立者選擇合適的距離——較小的距離對於效能更好,因為資源影響半徑越早被傳遞,CPU 的流程迴圈就越早將其從迴圈中刪除,並將注意力集中在其他事情上。幀率 Griper 請注意!那個漂亮的音效是有代價的。

nostartdelay

[編輯 | 編輯原始碼]
型別:布林值
預設值:0
強制:否
描述:如果新增併為真,則此標籤指定聲音將在觸發後立即播放。預設情況下,聲音在 0 & 4 秒之間具有隨機開始延遲。在大多數情況下,應保持開始延遲處於活動狀態,因為將其關閉可能會在多個相同聲音靠近時導致明顯的音訊偽影。
型別:整數
描述:設定聲音的優先順序,如果沒有足夠的音效卡通道可用,則優先順序較高的聲音將首先播放。預設為 1,可以為負數。

repeat-delay

[編輯 | 編輯原始碼]
型別:十進位制對
預設值: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”。 這將使聲音在每次轉轍器切換時觸發)

value-range

[編輯 | 編輯原始碼]
型別:浮點對
預設:0,0 (關閉)
強制:否
描述:兩個數字,其中數字不同,它們設定聲音播放的開始和結束時間。午夜是 0.5,中午是 0.0 或 1.0。(待定。這有點模糊。)
型別:十進位制
預設:1
強制:否
描述:指定聲音的音量增益。預設值為 1 (100%)。

soundscript-ID

[編輯 | 編輯原始碼]
型別:字串值,識別符號名稱
預設值:""
強制性:否,除非聲音指令碼容器管理多個聲音。(見下面的早晚示例)
描述:指定用於連線到軟體其他部分的聲音的控制代碼或文字識別符號。

類似於其他容器中的 '-ID' 字尾項 Index_of_Tags_%26_Containers

示例 Config.txt 檔案

[編輯 | 編輯原始碼]

具有不同白天和黑夜背景聲音的地圖資產的示例 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 解析要嚴格得多且能力有限。

備註和參考資料

[編輯 | 編輯原始碼]
  1. 僅在配置檔案中有多個條目時才需要名稱。請參閱 地圖檔案中的聲音指令碼 示例中的早晚標籤。
  2. 許多較舊的資產在此處缺少第二個數字,這會在 N3V 的 CM 錯誤檢查中產生錯誤。
     • 否則,重複之前的延遲將在第一個數字和第二個數字之間隨機生成。
     • 對於恆定延遲,使它們相等。
     • 0,0 的重複延遲使聲音成為連續迴圈。
  3. 如果列表中有多個條目,則將從列表中隨機選擇一個檔案。
華夏公益教科書