Reference Manual‎ > ‎

Audio


Note: When developing audio for Train Simulator, it is highly recommended you use an EAX enabled soundcard. Without an EAX card, you cannot use the Reverb or Occlusion parameters. Even if you deem these effects unnecessary, you will not be able to simulate how users with an EAX card will experience your work.

To implement audio in Train Simulator you should start by reading the section on the Blueprint Editor. To create an Audio Blueprint right-click on a folder in the Blueprint Editor, select New Item and then select Sound Blueprint.

The following describes the unique features the Sound Blueprint:

Category

Should always be set to Sounds for anything placeable in the simulation. For train engine sounds or things which are directly attached to an object, and which you do not want the user to place in the simulation, select Exclude from the browser list.

Sound Component

This is a link to the relevant Audio Control XML file (where all the hard work is done, see Audio Controls for more details).

Type

It is vital this is set correctly:

Ambient: Any sound which is not part of a Consist or the Rail Network; for example, the sound of church bells placed in the simulation or attached to a church model, environmental sounds, road sounds, factory sounds, birdsong, etc. All sounds set to this type respond to the main audio settings volume slider Ambient Volume.
Cab: For the sounds which you only hear when inside a train cab. Levers, buttons, AWS, etc. These sounds are always disabled when outside the cab view. For Locos with Open backs you may want to include some sounds in a RailVehicle type instead; for example, for loud internal sounds which you expect to also hear externally.
Passenger: The same as Cab but for sounds to be heard only inside Passenger coach internal views.
RailVehicle: All rolling stock sounds other than internal cab sounds - engine, brakes, horns, etc.

Geometry ID

This is the central marker object that represents the audio positioning in the game editor or depot. Accepts .IGS file references.

Editor Render Data

These control the sizes of the attenuation visual identifiers which you can see in the editor when you place one of the stock ambient sounds, these are set by eye and ear, they are not directly related to the actual audio attenuation. Radius in metres which scales up a spherical IGS object 1 metre in diameter.

Audio Controls

The Audio Controls which are referenced in the Sound Blueprint Sound Component is where all the actual sound work is carried out.

There are four types which we recommend you use:
  • Generic Audio Control
  • Ambient Audio Control
  • Steam Audio Control
  • UI Audio Control
Any other Controls in the list are simply Generic Audio Controls with a different name: it is best to just use the Generic version to avoid any confusion.

All these Audio Controls are essentially variants on the Generic Audio Control with some specific features, described in following sections.

To create a new audio control:
  1. Right-click on a folder in the Blueprint Editor.
  2. Select New Audio Control
  3. Select a type from the list.
There are two key Train Simulator sound variables to know about:

Volume

The Volume variable controls how loud a sound plays back. Train Simulator uses a linear float for Volume ranging from 0 -> 1: a good rule of thumb is that halving a volume value will decrease it by -6dB. So:

 TS Volume (linear) Decibel (dB) (logarithmic)
 1 0dB (Full Volume)
 0.5 -6dB
 0.25 -12dB
 0.125 -24dB
 0.015625 -192dB
 0 ∞ (Silent)

It is common to need to use very small fractions ( between 0 -> 0.1) to carefully balance quieter sounds.

Pitch

The Pitch variable controls the speed or pitch of a sample playback.It has a range from 0 -> 2.

 TS Pitch (linear) Semitones
 2 +12 (a whole octave up, double speed -> half the length)
 1.5 +7 ~1.9 cents
 1.25992 +4
 1 Normal playback speed
 0.5 -12 (a whole octave down, half speed -> double the length)
 0 Zero speed, not recommended!

As you can see, the relationships to musical semitones are not intuitive values so it is best to just set these by ear unless you have experience in this area. Be aware that the limit to pitching sounds up is based on the upper limit of sample frequency that your soundcard will play back. If your card will not play samples higher than 44.1khz, for example, then trying to pitch a 22.05khz sample higher than ‘2’ will result in no extra pitch-shifting. Most soundcards will play back at least 44.1khz these days, with a great deal of them handling 48khz or higher, but if you want your audience to have the same experience you should not be trying to play anything back higher than 44-48khz after pitching.

A Generic Audio Control

The Generic Audio Control described in these sections is an example of a sound you could place on a static 'eye candy' train. It has a continuous looping sound and random engine splutters.

There are three areas in this section:
  • Activation Distance: 310 metres (notice this is slightly larger than the No further Attenuation Distance parameter in the Random Sample Sound area).
  • Single Sample Sound: Described in section Single Sample Sound below.
  • Random Sample Sound: Described in Random Sample Sound below.

Single Sample Sound

 NameEngine Loop
 Is LoopedTrue (True for a looped sound, False for a ‘oneshot’ sound)
 Priority50 (A value from 1-100, if the soundcard is being asked to play too many channels it will start ignoring the lower priority rated sounds first)
 Base Volume0.5 (Equivalent to -6db)
 Volume Variation0 (The sound always plays at its base volume)
 Base Pitch Shift1 ('1' Plays at normal speed)
 Pitch Shift Variation0 (The sound always plays at its base pitch)
 Attenuation Start Distance20 Metres (As you move away from the sound it will start getting quieter 20 metres from its position)
 No Further Attenuation Distance300 Metres (As you move away from the sound it will stop getting any quieter after 300 Metres)
 PathnameThe product pathname
 FilenameThe sound file location. (Mono Wav files, 16-bit 11.025 -> 44.1 kHz recommended)

Random Sample Sound

 NameEngine Splutter
 Is LoopedFalse (the sound plays a single time for every trigger)
 Priority50
 Base Volume0.5 (Equivalent to -6db)
 Volume Variation0.25 (Every time the sound is triggered it will add a random value between -0.25 and 0.25 to the base volume, so this sound could actually end up being played at any volume between 0.25 -> 0.75)
 Base Pitch Shift1 ('1' Plays at normal speed)
 Pitch Shift Variation0.5 (Every time the sound is triggered it will add a random value between -0.25 and 0.5 to the base pitch shift, so this sound could actually end up being played at any pitch between 0.75 -> 1.5. The minus value is only -0.25 due to octave relationship described in the pitch section above)
 Attenuation Start Distance10 Metres (As you move away from the sound it will start getting quieter 10 metres from its position, so the splutters will disappear first)
 No Further Attenuation Distance300 Metres (As you move away from the sound it will stop getting any quieter after 300 Metres)
 Likelihood0.5 (Random sample sounds will play one of the samples with likelihoods every time it is triggered, as both Splutter1.wav and Splutter2.wav have the same likelihood they are both equally as likely to be played. If Splutter 2.wav had a likelihood value of 0.25 then on average it would only play half as many times as Splutter1.wav. These likelihoods do not have to all add up to 1, they are completely relative to the specific Random Sample Sound).
 PathnameThe product pathname
 FilenameThe sound file location. (Mono Wav files, 16-bit 11.025 -> 44.1 kHz recommended)

Curve

Let’s add a Curve which changes the volume of the engine loop based on… the time of day! There is a controller available called Minutes_Since_Midnight which we will use.

Modifier Chain

This is where we tell the curve what to act upon to produce the following graph:


So we have created a Volume Curve Modifier which means the X-axis of our graph is volume, and in the controller name, we have typed Minutes_Since_Midnight which becomes our Y-Axis and we reference our earlier created curve Engine Time Volume Curve.

So once this modifier chain is applied to our sound (see Instance Group) the volume of that sound will change depending on the time of day. At midnight (0 minutes) it will play at zero volume, at 1 am (60 minutes) it will play at 0.25 volume, and at 4 pm (960 minutes) it will play at Full volume ('1' volume).

Within a modifier chain, you can have as many volume curves as you like and they all interact together, but they can never push the volume value above 1. Pitch Curve Modifiers work in exactly the same way, but again even with multiple interacting pitch curves, the value can never go outside the limits of the pitch parameter itself.

Instance Group

Instance groups are a useful tool for stopping certain sounds from ever playing at the same time.

We will apply this instance group to our engine splutter sound:

 Maximum Number of Instances1 (any sound triggers with this instance group applied will only ever produce 1 channel of sound at any time, regardless of the number of triggers it is applied to).
 Instance Exceed ActionReject New: No further sounds from this instance group will play until the current sound has finished or reached the end of the file; i.e. all new trigger requests are rejected.
Stop Oldest: If a new trigger request is made then a new sound will play immediately and the oldest playing sound in the instance group will stop immediately. (Becomes more useful with maximum number of instances larger than 1).
Stop Newest: If a new trigger request is made then a new sound will play immediately and the newest playing sound in the instance group will stop immediately. (Becomes more useful with maximum number of instances larger than 1).

Loops & Oneshots

This is where we tie everything together in the audio control. We tell the game when and how to play sounds.

 Play StateBoth: You can hear the sound wherever you are in the game.
Inside: You can only hear the sound inside an engine cab
Outside: You can hear the sound everywhere except inside an engine cab.
 SoundEngine Loop (The sound we originally created earlier)
 Modifier ChainEngine Time Volume (The modifier we created earlier)
 Controller Name*Minutes_Since_Midnight
 Loop Condition*Value in range
 Active Range Start Value*30
 Active Range End Value*1380

* The four parameters Controller Name, Loop Condition, Active Range start value, and Active Range end value, decide when the loop starts and stops playing. In this example, it will start playing at 00.30am and stop playing at 11 pm (1380 minutes since midnight). See the section Controlled Loop Conditions below.

In the Oneshot section, we have created a Triggered Oneshot. It is similar to the Controlled Loop with the following differences:

 Trigger TypeEvery trigger value increasing (This means that everytime the Minutes_Since_Midnight value increments a one-shot sound is triggered, so it will trigger a sound every minute)
 Instance GroupWere you to try and trigger sounds longer than 1 minute in length this would stop 2 of them from ever playing at the same time. Instance groups can also be assigned right at the top of the Audio Control in the Sounds section, but it makes no difference and is easier to maintain if you assign them down in the Controlled Loop and Oneshots section.
Controlled Loop Conditions
 Value in rangeLoop will play whenever the Controller value is within the active range start and end values.
 Value is changing upLoop will play whenever the Controller value is changing upwards. Active range ignored.
 Value is changingLoop will play whenever the Controller value is changing upwards or downwards. Active range ignored.
 Value is changing downLoop will play whenever the Controller value is changing downwards. Active range ignored.
Triggered Oneshots Trigger Types
 Value increase pastTrigger a one-shot when controller value increased past trigger value.
 Value decrease pastTrigger a one-shot when controller value decreases past trigger value.
 Value moves pastTrigger a one-shot when controller value increases or decreases past trigger value.
 Value is changing upTrigger a one-shot when controller value is changing upwards.
 Value is changing downTrigger a one-shot when controller value is changing downwards.
 Value is changingTrigger a one-shot when controller value is changing upwards or downwards.
 Every trigger value increasingTrigger a one-shot every time the controller value increments by the trigger value.
 Every trigger value decreasingTrigger a one-shot every time the controller value decrements by the trigger value.
 Every trigger value moves pastTrigger a one-shot every time the controller value increments or decrements by the trigger value.
Value is Changing gate time (seconds)
It is vital to use this setting when triggering sounds from a value which often fluctuates or changes unpredictably (i.e. some simulation parameters). If this is set to '10' then no matter how much the controller value changes and is valid to trigger a sound, nothing will happen until 10 seconds have passed since the last trigger. This can be used to stop loops juddering on and off when based on a cab lever moving, or can be used to stop hundreds of one-shots being triggered when triggering from a simulation controller value that changes every frame.

Ambient Sounds

Ambient Sounds have a unique Audio Control.

Right-click on a folder, select New Audio Control and select Ambient Audio Control.

The First 4 sections (Sound, Curves, Modifier Chains and Instance Groups) of an Ambient Sound Audio Control work identically as for a Generic Audio Control. However, the Loop and Oneshot sections feature different controls.

There are two types of Ambient Sounds:
  • Ambient Area: Stereo Sounds, long loops and random one-shots, background ambience e.g. birdsong or city rumble. These sounds are ‘everywhere’ when you are inside a zone and do not pan in 3D space.
  • Point Sound: Mono Sounds, shorter loops and random one-shots, specific sounds of objects in the world e.g. Church Bells or a Factory. These sounds exist in 3D so they will pan in the stereo field and also have the Doppler effect automatically applied. Good for things at the trackside which will give you a sense of speed when you pass in a train.

Ambient Loop

This is the Ambient Sound Audio Control version of a loop. It can be used for both Ambient Areas and Point Sounds but for this example lets show its use for an Ambient Area as there is a difference in implementation between stereo and mono sounds.

In this example, we are creating a birdsong background loop.

First, set an activation Distance radius of 800, which will roughly give you an ambient area of 1600 Metres in diameter.

There are some similar features we recognise, Play state, Sound, Modifier Chain etc. The parameters Weathers and Seasons simply define in which weather and season states this loop will play. In this case, the birds won't sing when the weather is Rain or Storm (this means the birds will just stop dead rather than fade in and out. Fading out can be achieved using the special weather controllers discussed in the Weather section and will only sing in Winter.

The Delay and Random delay variation parameters are not applicable to loops so will be left at Zero (these are used for ambient random one-shots).

The Start Hour, Start Minute, End Hour, End Minute parameters are pretty self-evident. This loop will start playing at 4.00am and finish playing at 6.30pm. Note that you cannot have a start time which is later than the End Time, for example, if you want to have a sound start playing at 9 pm and finish at 4 am. To achieve this you need to create two separate Ambient Loops with identical settings but one plays from 21.00-24.00 and the other plays from 0.00-4.00.

Now, remember this is an example for a Stereo Ambient Area, in the Train Simulator audio system Stereo Sounds are treated a little differently. They do not use the Attenuation start and end values as set up in the Sound section of the Audio Control. This means we need to define ourselves how the sound drops in volume as you move away from the centre marker. This can be done with the Controller ListenerDistanceSquared. This is a squared value, so to specify a curve point or Active range value you need to square the value required, for example:

 Required distance (m) ListenerDistanceSquared (m)
 0 0
 10 100
 53 2809

So in our example, we can see that the sound will have an active range of 0 – 2850000, which in metres (use Square root!) is about 0 -> 1688. So our sounds start playing when we are 1688 metres or roughly 1.5km away. However, this is not controlling the volume as we move away from the centre point. However, we can create a modifier chain which works from ListenerDistanceSquared and uses a curve to make the sound get quieter as we move away.

It is a good idea with Ambient Area sounds to use curves which nicely interlock with other Ambient Areas to create a nice smooth fade between one area to another, for example when you move from an industrial to a rural zone. You also want the sound to sustain at an equal volume at a certain radius around the centre point. So basically this shape:


Where the blue line shows the volume level as you move towards the ambient sound, in the middle around the sound it stays at a constant volume within a certain radius. As you move away, the volume of the sound reduces to zero. This allows you to smoothly interlock ambient areas like so:


As you move from the Blue Sound to the Green sound you will have a smooth fade between them. This is what is graphically represented by the outer and inner geometry rings around the marker discussed in the Sound Blueprint section.

Now we need to actually define the curve specified in the image of the modifier chain section, which we called ListenerDistanceSquared Curve.

We suggest you use the following values. With these values, you must use an activation distance of 800 as shown previously and set the Active range start and end values in the ambient loop as 0 -> 2850000. Then in your Sound Blueprint, you can use an Inner Visual Sound Radius of 250 and an Outer Visual Sound Radius of 750.

So the curve values are:

 X - ListenerDistanceSquared Y - Volume
625001
756250.988553
900000.977237
1056250.944061
1225000.891251
1406250.841395
1600000.785236
1806250.716143
2025000.645654
2256250.57544
2500000.501187
2756250.42658
3025000.350752
3306250.281838
3600000.216272
3906250.154882
4225000.102329
4556250.058884
4900000.025704
5256250.004677
5625000

So from 0 -> 62500 ListenerDistanceSquared (or within the Inner Visual sound Radius of 250 metres) the volume will be 1, then from 62500 -> 562500 ListenerDistanceSquared we see the volume fade from 1 -> 0 (to the Outer Visual Sound Radius of 750 metres). TIP: X values should always be entered in Ascending order.

These curve values use an Equal power fade, which means that at the point when you are equally distant from two ambient areas you maintain a constant volume if you used a linear fade then the sound would dip dramatically in the middle of the two ambient areas.

You’ll notice is no value for 0 ListenerDistanceSquared, it is always assumed that the first Y value in a curve will be applied to all X values below the first X value. So the data above would be identical to a data set which starts like the one below:

 X - ListenerDistanceSquared Y - Volume
01
625001
756250.988553
etc.

Ambient Random Oneshots

Ambient Random Oneshots work in pretty much exactly the same way as the Ambient Loop, and should also have the ListenerDistanceSquared modifier chain applied if they are Stereo Sounds. Oneshots are more likely to be mono though, which is the case shown below. In the case of Mono sounds, remember that the Attentuation Start and end distances as described in the Sound section of the Audio Control are once again used. So the lesson here is:

Mono sounds are a lot easier than Stereo Sounds! 

So Ambient Random Oneshots will play random sounds to give you much more variation in your ambient sounds. Using random one-shots in combination with loops will give the most varied and memory efficient solution to ambient sound.

Road Sounds

Within a Vehicle Property Blueprint, there is a field where you can specify an audio control which you can link to a Generic Audio Control with a car engine loop.

The value Speed will return the speed of the car on the road, so you can use this value to control the volume and pitch of the car via a modifier chain.

There is also a section for an Audio Control in the Traffic Controller Blueprint. Here you can set an Audio Control which will provide a constant loop of background traffic for busy roads and also specify the Max Sounds which will determine how many cars you can hear at once on a road, i.e. how many instances of the Audio control referenced in the Vehicle property blueprint are spawned. On very busy roads you could easily spawn hundreds of car sounds if you are not careful with this value and the user's computer will quickly run out of sound channels.

RailNetwork Sounds

Bogie Sounds

The Bogie Audio Control (Generic Audio Control) is referenced in the Engine or Wagon Blueprint and allows you to add rail joints and flanging sounds.

So to add Rail joint sounds to an engine or wagon. Use the controller JointCount as shown in the image below. The actual distance between joints is set up in the TrackBedRumble blueprint.

For flanging sounds use the Curvature controller.

The value Curvature in the Controller name parameter returns the value of the current radius of the track you are on. In the form 1/radius. So a track radius of 200 metres is returned as 0.005. Meaning that a curvature of zero is an infinite radius, or in other words straight track. You can then use a modifier chain which is based on the consists AbsoluteSpeed and Curvature to control when the flange sound actually plays.

Coupling Sounds

The Coupling Audio Control (Generic Audio Control) is referenced in the Engine or Wagon Blueprint and allows you to add coupling or decoupling sounds.

When CouplingState is '1' it is coupled, when it is set to '-1' it is decoupled. So you can use one-shots as above to trigger Couple and Decouple sounds.

TrackBedRumble

Here is an example of a typical TrackBedRumble or Track Sound Blueprint, in this example for a rumble sound you get when you pass over a bridge:

This Blueprint mainly houses references to specific audio controls which are described in following sections, Rumble, Tingle, Junction, Reverb and Derailment.

Ideally, you need to create a new Track Sound Blueprint for each unique track type in the game. The minimum we suggest you need is one for external track and one for tunnel track.

The Distance between Joints (metres) parameter and the Junction clatter distance parameter determine how often and when the joint sounds specified in the Bogies audio control are triggered. Therefore, on a non-welded continuous type rail, you should use a Distance between Joints of zero (no rail joints ever heard) or perhaps a very large value if there are the very occasional joints in the continuous rail (say every 10km). On an older steam route with welded rail, you should use a Distance between Joints value specific to that route. The image above shows a joint distance of 30.

The Category parameter should be set to Exclude from browser list as you will never want to place this blueprint directly in the editor.

The Colour section determines how the particular rumble type will look in the editor. To lay down different rumble types on a piece of track you need to:
  1. Open Editor -> Track -> Select tool
  2. Select a piece of track.
  3. Open the right-hand panel and select the relevant rumble type.
The Track Sound Blueprints must be referenced in the Track Blueprint for them to appear in this list. It is also very important that the Default Rumble Blueprint is set in the Track Blueprint before laying ANY track in the editor. Otherwise, you will need to set rumbles for 90% of the laid track manually, which is a long task.

Here is a typical section of a Rumble Audio Control (Generic Audio Control):


The positioning of the rumble sound is handled automatically by the sound engine. The position of the track rumble is snapped to the track, within the length of the player consist and at the nearest point to the 'screen'.

As you can see above, Controlled Loops are the order of the day here. AbsoluteSpeed is the controller which you should use to control the volume of the rumble based upon speed, via a curve and modifier chain. The recommended start value is 0.05. This means the rumble will not play whilst the train is stationary and will negate any slight 'flutter' of the AbsoluteSpeed value whilst the train is stationary.

Tingle is used to control two effects in Train Simulator, although a whole range of potential effects is possible.

The tingle effect is the sound of the rail vibrating as a train is approaching. This is controlled again via the AbsoluteSpeed controller but also via the controller DistanceToConsist which is the distance to the nearest point of the consist in question.

A sound of rushing air as a train passes is the second sound. It is essentially identical to the DistanceToConsist controller except when in use on a player consist it will return a value of zero when in any camera mode where you are attached to the consist.

Derailing

The Derailing Audio control is a Generic Audio Control that begins working when the consist derails. At this point, the AbsoluteSpeed value of the consist can be used to trigger a grinding or rumble loop of the train moving across the ground. The DerailImpactCount controller will increment everytime rolling stock hits another object, it is also automatically incremented by 1 at the point the train derails allowing for immediate impact effects.

Junctions

Junction sounds can be added using the SwitchingProgress controller which changes smoothly between 0-1.

Reverb

Reverb effect blueprints are referenced in the Track sound blueprint. This effect requires an EAX enabled soundcard.

Platform Sounds

Platforms work in a similar way to road sounds. If you attach a generic blueprint as a child to a platform blueprint you can use the controller NumberOfPeopleOnPlatform to control the level of an overall ambience loop or also one-shots such as coughs, footsteps, mobile phone rings etc.

Signal Sounds

In order to make sounds when a mechanical signal moves the signal script must create a controller such as SignalProgress which would work in a similar way to the junction controller.

TransferPoints Sounds

There are three controllers which are used to create refuelling sounds:
  • CoalAmount
  • WaterAmount
  • DieselAmount
These refuelling sounds will actually be used in the relevant rolling stock audio control. You can then trigger sounds to play back whilst in the Loop condition Value is changing up, which naturally only happens while the rolling stock is refuelling/loading.

Traversers & Turntables

These generic audio controls are added as a child to the relevant track furniture object.

Traversers and Turntables work simply with a controller that is based on the name of the animation which controls them. So, in this case, we are using a controller called AnimationTime_Rotate, as the Turntable object is animated using a file called Rotate.ia

If the animation was called for example Turntable.ia then a controller would automatically be created called AnimationTime_Turntable.

AnimationTime controllers are in seconds. If you just want to trigger a loop while an animation is moving (as in the case of a turntable like above) then you can just use 'Value is changing'. If you want to trigger sounds only at a particular point in the loop then just use the timing in seconds of where it occurs in the animation, sometimes it’s easiest to get the animator to provide you with relevant timings.

Locomotive Audio

Locomotive audio is certainly the most important area of sound design in Train Simulator, if you’ve got this in the document then you will already have picked up the necessary skills to start creating engine and wagon audio controls. This is not the point to dive straight in though!

Below are lists of relevant controllers for use in the different engine types. All rolling stock will also inherit any controllers of the AnimationTime type as described in the Traversers and Turntables (external link) section and also any 'controls' which have been set up in the Engine Blueprint.

Diesel Engine Audio

 RPMThis must be added as a control to the Engine Blueprint although requires no animation or visible element to work. It is the primary control over sound parameters for a diesel train. You will also need to tweak the RPM change per second, and the engine startup and shutdown times in the engine simulation file to fine tune various aspects of the train audio
 RPMDeltaThis must be added as a control to the Engine Blueprint although requires no animation or visible element to work. This value gives you the rate of change of the RPM in order to trigger surges when the RPM changes above a certain rate. The value is from -1 -> 1
 CompressorStateChanges from 0 -> 1 when the compressor engages (controlled by simulation)
 ImpactCountThis value increments everytime the train collides with something but does not derail
 DieselAmountThe current fuel amount
 DistanceTravelledThe current distance travelled in metres since the scenario was loaded
 BrakeAmountThe total combined braking force on the Consist 0 -> 1
 TrainBrakeAmountAs BrakeAmount but for the Train Brake only
 LocoBrakeAmountAs BrakeAmount but for the Loco Brake only
 ControlType0=simple, 1=intermediate, 2= Expert
 AbsoluteSpeedThe speed in metres per second
 WheelSlipAmount0 = Train Stationary, 1=Normal running (no slip), 3=Full wheelslip
 AmmeterUseful for triggering sounds when making field diverts or for a general change in sound as the tractive effort increases

Electric Engine Audio

 CurrentThis must be added as a control to the Engine Blueprint although requires no animation or visible element to work. This is the key value to base the sound of an electric train upon
 CompressorStateChanges from 0 -> 1 when the compressor engages (controlled by simulation)
 ImpactCountThis value increments everytime the train collides with something but does not derail
 DistanceTravelledThe current distance travelled in metres since the scenario was loaded
 BrakeAmountThe total combined braking force on the Consist 0 -> 1
 TrainBrakeAmountAs BrakeAmount but for the Train Brake only
 LocoBrakeAmountAs BrakeAmount but for the Loco Brake only
 ControlType0=simple, 1=intermediate, 2= Expert
 AbsoluteSpeedThe speed in metres per second
 WheelSlipAmount0 = Train Stationary, 1=Normal running (no slip), 3=Full wheelslip

Steam Engine Audio

 ImpactCountThis value increments everytime the train collides with something but does not derail
 DistanceTravelledThe current distance travelled in metres since the scenario was loaded
 BrakeAmountThe total combined braking force on the Consist 0 -> 1
 TrainBrakeAmountAs BrakeAmount but for the Train Brake only
 LocoBrakeAmountAs BrakeAmount but for the Loco Brake only
 ControlType0=simple, 1=intermediate, 2= Expert
 AbsoluteSpeedThe speed in metres per second
 WheelSlipAmount0 = Train Stationary, 1=Normal running (no slip), 3=Full wheelslip

Tender includes all above parameters plus:

 WaterAmountThe current fuel amount
 CoalAmountThe current fuel amount

The Steam Audio control also contains a unique section which is used to trigger steam exhausts (chuffs) and any regular mechanical type sounds which are based on the rotation of the main driving wheels.

It is vital that the two parameters Drive wheel diameter and Number of Cylinders are set correctly in order to have the correct number of chuffs per drive wheel rotation.

The Steam Audio control has a unique Exhaust section which is essentially a one-shot controller.

To add chuff sounds, insert a Steam Exhaust element into the Exhaust section. Use AbsoluteSpeed as the controller with a valid start and end value. This way you can use various sets of chuffs of shorter lengths for different train speeds.

If you add one Steam Exhaust Element called 1 then everytime a chuff is triggered you will trigger 1, 1, 1, 1, 1, 1, etc.

If you add three Steam Exhaust Elements called 1, 2 and 3 then everytime a chuff is triggered you will trigger a repeating sequence of 1, 2, 3, 1, 2, 3, 1, 2, 3. Of course, each sound referenced in here could also be a random one-shot to add variation.

Wagon Audio

 DistanceTravelledThe current distance travelled in metres since the scenario was loaded. It can be used as above with a one-shot control using the Every Trigger value increasing parameter to trigger a sound every 150 metres or whatever cycle you prefer
 AbsoluteSpeedThe speed in metres per second
 DoorsOpenCloseRight
 and
 DoorsOpenCloseLeft
Used to trigger sounds when passenger train doors are opened and closed

Passenger Coach Occlusions

This is used to control how much the sound is occluded (or muffled) when you are inside the passenger coach. Basically, it is used to decrease the amount of high-frequency content. It won’t affect any sounds which are marked as INSIDE in the passenger/wagon blueprint controlled loops and one-shots.

Cab Audio

Use the Cab audio control to trigger all sounds based on the levers, buttons, switches etc moving in the cab. The controllers for this are all inherited from the controls set up in the Engine Blueprint, Regulator, Reverser, Brakes etc.

Horns

It is best to do the horn/whistle as a separate sound child of the engine for two reasons:
  1. If it was part of the cab audio control you would not hear it outside of the cab (the same is true for windscreen wipers)
  2. You are likely to want to hear the horn further away than the engine sounds; i.e., set a higher activation distance and attenuation settings.
The horn relies on a control being created, which in this case was called simply Horn in the Engine Blueprint.

Occlusion

This is used to control how much the sound is occluded (or muffled) when you are inside the engine cab, basically it is used to decrease the amount of high-frequency content. It won’t affect any sounds which are marked as INSIDE in the cab blueprint controlled loops and one-shots.

Animated Scenery Audio

Animated scenery works exactly the same as described in Traversers & Turntables, using the controller AnimationTime_AnimationName (do not include the .ia extension).

These are objects such as the Digger and Forklift in Train Simulator which were placed directly in the world. The Audio blueprint must be added as a child to the object.

Weather Audio

The Weather Audio Control is referenced directly from the Weather Pattern Blueprint.

There are 5 controllers with which to control weather sounds:
  • Windspeed
  • RainDensity
  • HailDensity
  • SnowDensity
  • SleetDensity
These are all based on the same units as set up in the Weather Pattern Blueprint.

If you want the rain sound to change loop as the RainDensity increases then you need to create various modifier curves to crossfade between different loops.