開発者向け文書/音声

Last-modified: 2018-06-08 (金) 02:43:49

TSのアドオンで生成される音源の開発方法を掲載します。DTG公式の解説文書をベースに構成しました。

音声青写真

音声を配置するための青写真ファイルは、Blueprint Editorを開き、New Itemから「Sound blueprint」を選びます。

Sound Blueprintには以下のパラメータが含まれています。

Category
青写真のカテゴリ。直接音源を配置して使う際は「Sound」を選んでください。
車両やオブジェクトに組み込むなどの場合は、「Exclude」を選ぶと一覧から除外できます。
Sound Component
使用音源を定義した音声制御ファイルの、XMLファイルの名称を指定します。
音声制御ファイルの詳細と仕組みは後述します。
Type
音声がどの状態で流れるかを選択します。
  • Ambient - 車両や線路以外の環境音全般。建物や道路、鳥の鳴き声、その他諸々。
  • Cab - 運転席視点でのみ流れる音。ハンドルの操作音や保安装置の鳴動音など。車外視点では聞こえません。
  • Passenger - 客室視点でのみ流れる音。
  • Rail vehicle - 車内外で聞こえる車両の音全般です。ブレーキ、エンジンやモーター、警笛など。
Geometry ID
音源オブジェクトの位置をエディタ内で可視化する3Dモデルを指定。モデルの形式はIGSです。
Editor Render Data
エディタで出現する球形の大きさを設定し、音の減衰を見た目で表現します。

音声制御

Sound Blueprintで出力する音源は、Audio Controlにより音源、音量、音程などの流れ方を定義します。

音源の種類

青写真エディタで選べる音源の種類は複数ありますが、以下の4つの中から選べば大丈夫です(他の種類はどれもGeneric Audio Controlの名前を変えただけです)。

  • Generic Audio Control
  • Ambient Audio Control
  • Steam Audio Control
  • UI Audio Control

音声制御のファイルは、以下の手順で作成します。

  1. 青写真エディタで任意のフォルダを右クリック
  2. 「New Audio Control」を選択
  3. 一覧から種類を選択

音量と音程

TSの音声定義で重要な変数として、音量と音程があります。

音量(Volume)

音量を指定する変数。0から1の間で音量を制御、1になるほど大きくなります。1から0.5に値を下げると、約6デシベル(dB)下がります。

音量値デシベル差
10dB(最大)
0.5-6dB
0.25-12dB
0.125-24dB
0.015625-192dB
0無音

音程(Pitch)

音程値半音
2+12(1オクターブ上)
1.5+7
1.25992+4
1基準値
0.5-12(1オクターブ下)
00dB(最大)

Generic Audio Control

全般に使える音の定義です。

Single Sample Sound

特定条件で鳴る単一の音のファイルを定義します。

Name
音声の識別名
Is Looped
単発音かループ再生か。ループでTrue、単一でFalse
Priority
鳴る音の優先順位。既定は50。
Base Volume
音量の基本値。0.5では音源の-6dB。
Volume Variation
鳴る度の音量の振れ幅。0だとBaseVolumeの値
Base Pitch Shift
音程を指定基本値。1で通常の音程
Pitch Shift Variation
音程の振れ幅。0だとBasePitchShiftの値
Attenuation Start Distance
音源から離れて音量が下がり始める距離。20で20m以上離れると下がる
No Further Attenuation Distance
音源から離れて完全に無音になる距離。300で300m離れたら無音
Pathname
音源のファイルのあるフォルダ位置
Filename
音源のファイル名。16bitのWAV、11.025から44.1kHz、モノラル推奨

Random Sample Sound

特定条件でランダムに鳴る音のファイルを定義します。

Name
音声の識別名
Is Looped
単発音かループ再生か。ループでTrue、単一でFalse
Priority
鳴る音の優先順位。既定は50。
Base Volume
音量の基本値。0.5では音源の-6dB。
Volume Variation
鳴る度の音量の振れ幅。0.25で各音ランダム
Base Pitch Shift
音程を指定基本値。1で通常の音程
Pitch Shift Variation
音程の振れ幅。0.5で各音ランダム
Attenuation Start Distance
音源から離れて音量が下がり始める距離。10で10m以上離れると下がる
No Further Attenuation Distance
音源から離れて完全に無音になる距離。300で300m離れたら無音
Likelihood
ランダム音の鳴る可能性の割合。全て0.5だと半々、0.25だとその音は25%の確率
Pathname
音源のファイルのあるフォルダ位置
Filename
音源のファイル名。16bitのWAV、11.025から44.1kHz、モノラル推奨

CurveとModifier Chain

Curveは特定の制御値と音量・音程の関係を示すもので、X軸が音量または音程、Y軸が制御値に基づく値になります。Y軸に対応する制御値の種類は、Modifier Chainで対応させます。

Instance Group

特定の同一音源を同時に再生させないようにするための設定ができます。

Maximum Number of Instances
同時にいくつまで流せるかの設定。1で1つだけのみ流れます。
Instance Exceed Action
同じ音が同時に流れた時の挙動を選択します。
  • Reject New - 今鳴る音が鳴り終わってから、次の同じ音が鳴り始めます。
  • Stop Oldest - 新しい音がなり始めた場合、一番最初に鳴り始めた音が止まります。
  • Stop Newest - 新しい音が止まり、それ以前の音が流れ続けます。

Loop

音源をどのタイミングで再生するかを指定します。Loopは連続音です。走行音やモーター音などに最適です。

まずは、音が流れる状態を指定します。

Play State
指定の音がどの視点で流れるかをを選択します。
  • BOTH - 車内外のあらゆる視点で流します。
  • INSIDE - 運転席視点のみで流します。
  • OUTSIDE - 運転席視点では流さず、それ以外の視点で流します。
Sound
Sample Soundで用意した音声を指定します。
Modifier Chain
音量・音程を制御するModifier Chainを指定します。
Controller Name
制御値名を指定します。AbsoluteSpeedなど。
Loop Condition
ループの状態を、以下の中から指定します。
  • Value in range - 制御値がActive Rangeの開始・終了の範囲内にある時、常に再生されます。
  • Value is changing up - 制御値が増加している最中に再生されます。
  • Value is changing - 制御値が増加・減少している最中に再生されます。
  • Value is changing down - 制御値が減少している最中に再生されます。
Active Range Start Value
制御値の有効範囲の開始値を数字で指定します。
Active Range End Value
制御値の有効範囲の終了値を数字で指定します。
Instance Group
割り当てたいInstance Groupを指定します。

Oneshot

Oneshotは単発音です。警笛やドア開閉音などに最適です。

Play State、Sound、Modifier Chain、Controller Name、Instance Groupの項目は連続音と共通です。連続音と異なる単発音用の項目は以下のとおりです。

Trigger Type
単発音を流すタイミングを、以下の中から指定します。
  • Value increase past - トリガ値から増加した際に、単発音を流します。
  • Value decrease past - トリガ値から減少した際に、単発音を流します。
  • Value moves past - トリガ値から増加・減少した際に、単発音を流します。
  • Value is changing up - 制御値の増加中に、単発音を流します。
  • Value is changing down - 制御値の減少中に、単発音を流します。
  • Value moves past - 制御値の増加・減少中に、単発音を流します。
  • Every trigger value increasing - 制御値の増加中、トリガ値に達するその都度に単発音を流します。
  • Every trigger value decreasing - 制御値の減少中、トリガ値に達するその都度に単発音を流します。
  • Every trigger value moves past - 制御値の増加・減少中に、トリガ値に達するその都度に単発音を流します。
Value is Changing gate time
制御値の変動中、単発音が何秒おきに流れるかを指定します。

環境音

風景中で流れる環境音は、Ambient Audio Controlで設定します。

範囲内でどこでも聞こえる環境音、例えば鳥の鳴き声や街の雑踏などの場合は、ドップラー効果を要さず、ステレオ音源を使うと臨場感が増します。対して教会の鐘の音や工場の機械音といった一点から発する音の場合、ドップラー効果を出せるモノラル音源の使用をおすすめします。

Ambient Loop

まずは周囲の環境音の制作から。鳥の鳴き声を例に。

まずは半径を指定。800とした場合、基点を通る直径1600mの範囲で音がなります。

続いてModifer Chainで音のなるタイミングを指定。夜や雨の日に鳴かないようできます。セミやカエルの鳴き声を夏だけ、秋の虫の声を秋だけ、ということも出来ます。

時間指定の制御値は、0時から24時の範囲を一括でループできます。ただし、0時を跨ぐ場合はループが2つ必要になるので、午後9時から翌午前4時までの場合、「21時から24時」と「0時から4時」に分けることになります。

ステレオ音源の場合、Audio Controlで指定した音量の減衰は有効化されません。なので、ListenerDistanceSquaredの制御値を指定して適用します。制御値の設定は、距離の2乗の数値とします。

必要距離 (m)ListenerDistanceSquared (m)
00
10100
532809

中心から半径250mの地点から音量を1.0下げ、750mで音量を0.0とする場合、ListenerDistanceSquaredの数値は減衰開始が 250×250 の 62500 、無音地点で 750×750 の 562500 とします。

音量の減衰を使うことにより、都心部の雑踏音から田舎の自然音に移動する際のフェードをスムーズに感じ取る、という雰囲気の表現が可能になります。

Ambient Random Oneshots

単発の環境音の場合、モノラル音源だとAudio Controlで指定した音量の減衰が有効化ですが、ステレオ音源では機能せず、ListenerDistanceSquaredの設定を要します。

よって、単発音は迷わずモノラル音源を使いましょう!

道路交通の音

同叙情を走行する自動車からの音を設定できます。車には速度の値が機能するので、速度に応じた音量、音程が設定可能です。

交通量の多い設定だと車は何十台と現れますので、音が同時に流れる車の数は数台程度に抑えておきましょう。でないと車の音だけでメモリを食うことになります。

線路周りの音

台車

機関車・客貨車向けにGeneric Audioの音声定義を指定することで、台車を中心としたジョイント音、フランジ音を追加できます。

JointCountの制御値名を指定することで、線路の継ぎ目の度に鳴る「ガタンゴトン」を再現する音声ファイルを指定できます。線路側の継ぎ目音の間隔は、TrackBedRumbleの定義で指定します。。

曲線区間を曲がる際のフランジのキーキー音は、Curvatureの制御値名で指定できます。数値は「1/半径」となっているので、例えば半径200mのカーブで鳴らすには0.005を指定します。直線区間は0になります。

速度に応じて指定するAbsoluteSpeedを組み合わせて使うことで、フランジ音の種類と速度の違いによるタイミングを制御できます。

連結器

列車の連結・切り離しの際の音を指定出来ます。

使用する制御値名は CouplingState で、数値が1だと連結、-1だと切り離しの状態になります。

線路転がり音

列車が線路を走行する際に、線路と車輪の間で発生する騒音を定義します。TrackBedRumbleのフォルダへの格納が慣例となっています。

区間によって定義する音源の切り替えができます。最低でも通常線路用とトンネル用に分けておくといいでしょう。

以下の4種類は、Generic Audio Controlの音声定義を直接指定します。

  • Rumble - 基本の転がり音
  • Tingle - 列車接近時のレールの鳴き音、列車通過時の風切り音
  • Junction - ポイントが切り替わる動作中に流れる音
  • Derailment - 列車脱線時の衝撃音

RumbleはAbsoluteSpeedの制御値で速度に対する音量を指定します。停車時は音量0で、速度が上がるに連れて音量が上がります。

AbsoluteSpeedの開始値は、0よりも0.05がおすすめです(停車中に微妙に動くことがあるため)。

Tingleは2つの音を想定しており、1つは列車が近づく際にレールから鳴るカツカツ音、もう1つは列車が目の前を通過中の風切り音です。風切り音の場合、列車を中心に回る視点の場合は無効になる特性があります。

分岐器音

ポイントが転換中に鳴る音を設定。制御値「SwitchingProgress」で、転換前が0、転換完了後が1の設定になります。

脱線音

列車が脱線した際に流れる音。AbsoluteSpeedを使うと、脱線して逸脱した車体の連続衝撃音を設定できます。

制御値「DerailImpactCount」を設定すると、衝突の度に発生する単発衝撃音を設定できます。通常の値が0、衝突発生時の値が1になります。

反響音

トンネル用の線路などに使える環境音を設定します。反響音用の青写真を参照します。EAX効果に対応したサウンドカードが必要です。

ホームの音

駅ホームの人々の雑踏の音を表現します。制御値「NumberOfPeopleOnPlatform」を指定することで、ホームにいる客数に応じて足音や雑踏、話し声などの流れ方を制御できます。

信号機の音

腕木式など機械的に動く信号機の場合、表示が変わる際の音を制御値「SignalProgress」で指定できます。

燃料補給所の音

蒸気・内燃車の燃料を補給する際に流れる音です。

  • CoalAmount - 石炭
  • WaterAmount - 水
  • DieselAmount - ディーゼル燃料

この音を指定した補給所からの音は、車両側で再生されます。

遷車台と転車台

遷車台は車両を横移動させるトラバーサー、転車台は車両を回転させるターンターブルです。遷車台は車両工場で、転車台は蒸気機関車の方向転換でよく見るものです。

遷車台、転車台が動いている時の音の制御が可能です。

車両の音

車両から出る音は、列車運転シムにおける肝です。車種別に代表的な制御値を列挙します。

内燃車

RPM
エンジンの回転数。ディーゼル車を再現する命と言うべき制御値です。
RPMDelta
エンジンの回転数に一定の変化があった際に流れる音です。
CompressorState
ブレーキ用の空気圧縮機が動作している時の音です。
ImpactCount
車両が別車両や別オブジェクトに接触した際の単発音です。
DieselAmount
ディーゼル燃料を補給中に流れる音です。
DistanceTravelled
シナリオで呼び出された場所から進んだ距離。メートルで指定します。
BrakeAmount
ブレーキ力が発生している時の音。
TrainBrakeAmount
BrakeAmountと同様で、編成全体にかける貫通ブレーキ限定で機能します。
LocoBrakeAmount
BrakeAmountと同様で、機関車のみにかける単独ブレーキ限定で機能します。
ControlType
0が簡単モード、2が中級モード、3が達人モードです。
AbsoluteSpeed
速度の状態。単位はメートル毎秒(m/s)で指定します。
WheelSlipAmount
車輪の空転滑走の状態。0で停車中、1で通常走行時、2で空転発生時の音の状態を指定します。
Ammeter
電気式ディーゼル車で再現する走行用モーターの電流。

電気車

Current
電気車の基本となる走行用モーターの電流の値。
CompressorState
ブレーキ用の空気圧縮機が動作している時の音です。
ImpactCount
車両が別車両や別オブジェクトに接触した際の単発音です。
DistanceTravelled
シナリオで呼び出された場所から進んだ距離。メートルで指定します。
BrakeAmount
ブレーキ力が発生している時の音。
TrainBrakeAmount
BrakeAmountと同様で、編成全体にかける貫通ブレーキ限定で機能します。
LocoBrakeAmount
BrakeAmountと同様で、機関車のみにかける単独ブレーキ限定で機能します。
ControlType
0が簡単モード、2が中級モード、3が達人モードです。
AbsoluteSpeed
速度の状態。単位はメートル毎秒(m/s)で指定します。
WheelSlipAmount
車輪の空転滑走の状態。0で停車中、1で通常走行時、2で空転発生時の音の状態を指定します。

蒸気車

ImpactCount
車両が別車両や別オブジェクトに接触した際の単発音です。
DistanceTravelled
シナリオで呼び出された場所から進んだ距離。メートルで指定します。
BrakeAmount
ブレーキ力が発生している時の音。
TrainBrakeAmount
BrakeAmountと同様で、編成全体にかける貫通ブレーキ限定で機能します。
LocoBrakeAmount
BrakeAmountと同様で、機関車のみにかける単独ブレーキ限定で機能します。
ControlType
0が簡単モード、2が中級モード、3が達人モードです。
AbsoluteSpeed
速度の状態。単位はメートル毎秒(m/s)で指定します。
WheelSlipAmount
車輪の空転滑走の状態。0で停車中、1で通常走行時、2で空転発生時の音の状態を指定します。

炭水車の場合、以下の制御値も指定できます。

WaterAmount
現在の水の量。
CoalAmount
現在の石炭の量。

蒸気機関車では、加速時に流れるドラフト音(シュッシュッシュッシュッ)を指定する独自の設定もあります。シリンダ数に応じて音が変えられます。

客貨車

DistanceTravelled
シナリオで呼び出された場所から進んだ距離。メートルで指定します。
AbsoluteSpeed
速度の状態。単位はメートル毎秒(m/s)で指定します。
DoorsOpenCloseRight
客用ドア開閉時の音。Rightは右側のドアです。
DoorsOpenCloseLeft
客用ドア開閉時の音。Leftは左側のドアです。

運転席

運転席内の音は、マスコンやブレーキハンドル、逆転器、その他スイッチ類など、運転席内だけでしか鳴らない音をまとめます。

警笛

警笛は、車内外の両方から比較的大きな音量で聞こえることから、減衰距離位の設定も含めて独立した青写真の参照をおすすめします。

制御値は車両側の「Horn」で機能します。

運転席の音の減衰

運転席視点の場合に、車外からの音を遮蔽する際に設定します。青写真で「Cab」としたもの、音声定義で「INSIDE」に設定したものは影響を受けません。

配置物の音

工場のブルドーサー、フォークリフトといった機械のオブジェクトの動きに対応する音を生成します。

天候の音

風、雨、雪など各種天気の音を生成。制御値は以下の5種類があります。

  • Windspeed
  • RainDensity
  • HailDensity
  • SnowDensity
  • SleetDensity

雨の量で音を変えたい場合、各種制御値でクロスフェードを設定しましょう。

参照元

  • DTG公式の解説文書 - Audio