How to start... Best downloads... Hints... ConBuilder... Activities

Home
Prepare
Sites
How to
Tools
Routes
Activities
Australian
NALW
Aliasing
Information
Past news
 
 

Last Updated 23-May-2002

Sounds development

SPSF C30-7 #8061 stands in the yards, ready for a day's work.

This page gives you a look at some of the theory behind the way in which MSTS controls the sounds we hear in the cab or outside the loco. The particular idea below goes further and is the work of one of many MSTS "power" users - those people who investigate better ways to enjoy MSTS.

Remember that the best way to encourage those people developing various free add-ons is to download and install their work. So download elecsnds.zip (360kb, 07-Apr-02) from the Train-Sim.com file library and enjoy the sounds of realistic brake rumble when braking, brake squeal when the brakes are applied below 10mph and reduced air compressor noise in the Acela and HHP-8 cabs.

Below is the statement from the Sound Developers Forum to enable us all to use the sound enhancement idea, APSEL.

Legal issues: The algorithm is herewith published. From now on there may be claimed no Copyright on parts of .sms files, that contain this algorithm. If legal necessary, this algorithm is herewith put to public domain. You may use it freely. Trevithick



APSEL algorithm

Amtrak Genesis #118 and #50 locos, in Phase III livery, along with Phase IV #50, move out of the yards to the Whitefish platform.

Below is the text of Trevithick's post to the Sound Developers' Forum at Train-Sim.com under the topic "Publication: Better sound for electric engines (APSEL algorithm)". In it he explains the All Purpose Sound Management System for Electric Locomotives.

Note that the MSTS Tech Docs do not include any information for developers on the sound system. Nor is there a site (at time of writing). The most informative discussion area is the Sound Developers' Forum at Train-Sim.com.



Introduction

Amtrak Empire Builder, with BNSF's permission for extra cars, winds its way around Teakette Mtn (1800m). Below is the Flathead River and highway 206.

Most electric engines for MSTS use SMS files directly derived from the ACELA engines and the Alstom Bombardier HHP8 engine of the original simulator.

The algorithm used by Kuju is derived from the SMS files of the diesel electric engines and uses two blended sound streams. This may lead sometimes to crackles, hisses and drop outs for the engine sound independent of the system. The pitch of the sound of the traction motors is shifted and not proportional to the speed (which would be more prototypical).

The sound (or noise) for the traction motors, gearboxes and fans is built by two sound streams which may, not must, use the same sound sample file.

One stream for the dynamic noise of the traction motors and gearboxes is:

  • frequency controlled by the Speed variable or alternatively, Variable1. The Frequeny Curve must be defined for negative and positive values. Absolute higher speed values result in higher values for the pitch. A speed or Variable1 with the value 0 results in a pitch value of 0. The relation between absolute speed or Variable1 to the pitch is linearly proportional.
  • volume controlled by the Variable2 or a variable that shows the current of the traction motor. High current (Variable2 = 100) results in a high volume of the stream; low current (Variable2 = 0)in a low volume.

The other stream for the noise of the fans and tranformers is static.

These two streams replace the two first streams, as developed by Kuju, in the external sound (xxxxENG.SMS) and internal cab sound (xxxxCAB.SMS) files for an electric locomotive.



Example HHP8eng.SMS streams

Notes:

  • the Skip command denotes a comment line or section. It does the same job as Comment you see in an ENGine file.
  • lines beginning Initial_Trigger ( StartLoop... will be seen in an actual SMS file as one long line through to SequentialSelection ) ) )

Stream (
   Skip (**** Traction motors and gearboxes )
   Priority ( 6 )
   Triggers ( 1
   Initial_Trigger ( StartLoop ( 1 File
     "..\\..\\HHP\\SOUND\\x_hhp_power_cruise1.wav" -1 )
     SelectionMethod ( SequentialSelection ) ) )
   )
   FrequencyCurve (
      SpeedControlled
      CurvePoints ( 3
                    -150.0 135000
                    0.000 0
                    150.0 135000
                  )
      Granularity ( 100 )
   )
   VolumeCurve (
      Variable2Controlled
      CurvePoints ( 2
                    0.000 0.4
                    100.0 1.0
      )
      Granularity ( 0.05 )
   )
)
Skip ( ** End stream for traction motors & gearboxes ** )

Stream (
   Skip (**** Fans**** )
   Priority ( 6 )
   Triggers ( 1
      Initial_Trigger ( StartLoop ( 1 File
        "..\\..\\HHP\\SOUND\\x_hhp_power_cruise0.wav" -1 )
        SelectionMethod ( SequentialSelection ) ) )
   )
   FrequencyCurve (
      SpeedControlled
      CurvePoints ( 3
                    -150.0 13000
                    0.000 13000
                    150.0 13000
      )
      Granularity ( 100 )
   )
   VolumeCurve (
      Variable2Controlled
      CurvePoints ( 2
                    0.000 0.7
                    100.0 0.7
      )
      Granularity ( 0.05 )
   ) 
)
Skip ( ** End stream for fans ** )

For the xxxxcab.sms you use the same algorithm with stereo samples.



 
Roster

web•Directory