Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Sounds.lua

From FIGHTORDER

Location

sounds.lua is a file in the Gamedata/ directory of a Spring Game.

Purpose

The file is used to define SoundItems. Beside simply "linking" to an audio file, SoundItems can use various tags to alter the playback of the file.

Source

The engine source code which parses the data from this file is viewable here:

Data Types

{{#css
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}int : An integer number. eg. {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}5

{{#css
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}float : A number with decimals. eg {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}1.023

{{#css
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}bool : A value which can be true or false. eg {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}true

{{#css
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}string : Text, or more precisely a string of alphanumeric characters. eg {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}"string of characters"

{{#css
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}rgb : Three float components, representing red, green and blue components, ranged from 0.0 to 1.0. eg {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}{0.0, 0.0, 0.0}

{{#css
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}float3 : Three float components, eg {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}{0.0, 0.0, 0.0}

{{#css
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}float4 : Four float components, eg {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}{0.0, 0.0, 0.0, 0.0}

Details

Wherever a sound is played in Spring, be it associated with a UnitDef, WeaponDef or via the lua API, a SoundItem is used. If you access a raw sound file, a SoundItem with the defaults is created for you.

Additionally, multiple SoundItems can use one single file with different settings, this is very efficient, as they only use 1 shared buffer.

New in version 89.0: All item names are treated in lowercase.

Tips

You can update & reload your sounddefs at runtime via Spring.LoadSoundDef("gamedata/sounds.lua").

Reserved SoundItems

The following SoundItems are reserved for specific engine sounds:

  • IncomingChat - Is played when a chat message is received.
  • MultiSelect - Is played when multiple units are selected simultaneously.
  • MapPoint - Is played when a map point is placed by the player or an ally.
  • FailedCommand - Is played when a unit fails to execute a command. e.g. When a unit cannot reach it's destination etc.
  • default - Used for all sounds that aren't listed in sounds.lua.

SoundItem Properties

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}float {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}gain  default: {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}1.0

This varies the loudness, > 1.0 is louder, < 1.0 is quieter. 0.0 is silent.

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}float {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}gainmod  default: {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}0.0

If > 0.0 then this adds a random amount to {{#css:
  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}gain each time the sound is played. Clamped between 0.0 and 1.0. The result is in the range [({{#css:

  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}gain * (1 + {{#css:

  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}gainMod)), ({{#css:

  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}gain * (1 - {{#css:

  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}gainMod))].

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}float {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}pitch  default: {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}1.0

Varies the pitch of the sound, > 1.0 is higher pitched, < 1.0 is lower.

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}float {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}pitchmod  default: {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}0.0

If > 0.0 then this adds a random amount to {{#css:
  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}pitch each time the sound is played. Clamped between 0.0 and 1.0. The result is in the range [({{#css:

  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}pitch * (1 + {{#css:

  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}pitchMod)), ({{#css:

  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}pitch * (1 - {{#css:

  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}pitchMod))].

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}float {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}dopplerscale  default: {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}1.0

How unit and camera speed affects the pitch of the sound, to exaggerate it, use values > 1.0. Use 0.0 to completely disable the effect.

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}int {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}priority  default: {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}0

When lots of sounds are played, sounds with lower {{#css:
  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}priority are more likely to get cut off. A {{#css:

  span.mono {
      font-family: courier, monospace;
  }
  span.value {
      color: #ff6600;
  }

}}priority > 0 will never be cut of (priorities can be negative).

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}int {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}maxconcurrent  default: {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}16

How many copies of this sound can be played at once?

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}float {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}maxdist  default: {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}MAX_FLOAT

The cut-off distance (in elmos) at which this sound will no longer be played.

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}float {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}rolloff  default: {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}1.0

How fast the sound becomes quieter with distance. 0.0 means always the same loudness regardless of distance.

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}bool {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}in3d  default: {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}true

Non-3d sounds always came out of the front-speakers (or the centre one). 3d sounds are, well, in 3d.

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}int {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}looptime  default: {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}0

The time in milliseconds the sound should loop for.

Examples

default sounds

The following is the default sounds.lua supplied in the base content springcontent.sdz archive, with some of the comments removed (As the information is presented here).

local Sounds = {
  SoundItems = {
    IncomingChat = {
      --- always play on the front speaker(s)
      file = "sounds/beep4.wav",
      in3d = "false",
    },
    MultiSelect = {
      --- always play on the front speaker(s)
      file = "sounds/button9.wav",
      in3d = "false",
    },
    MapPoint = {
      --- respect where the point was set, but don't attenuate in distance
      --- also, when moving the camera, don't pitch it
      file = "sounds/beep6.wav",
      rolloff = 0,
      dopplerscale = 0,
    },
    ExampleSound = {
      --- some things you can do with this file
      --- can be either ogg or wav
      file = "somedir/subdir/soundfile.ogg",
      gain = 1,
      pitch = 1,
      dopplerscale = 1,
      priority = 0,
      maxconcurrent = 16,
      maxdist = 20000,
      rolloff = 1,
      in3d = true,
      looptime = 0,
    },

    -- new since 89.0
    default = {
      gainmod = 0.35,
      pitchmod = 0.3,
      pitch = 0.7,
      in3d = true,
    },
  },
}

return Sounds

Using PitchMod to prevent loud explosions=

Taken from this thread by jK: Use PitchMod in sounds.lua to prevent loud explosions

Explosions can sound louder than intended when they are started in the same simFrame and so are played in sync -> resonance. PitchMod now changes the playback time (e.g. with 0.3 the sounds should have a playback time of 100-130%) and so there isn't a resonance anymore even when the sound is started multiple times in the same simframe.

local files = VFS.DirList("sounds/explosions/")
local t = Sounds.SoundItems
for i=1,#files do
   local fileName = files[i]
   t[fileName] = {
      file     = fileName;
      pitchmod = 0.3;
      gainmod  = 0.2;
      maxconcurrent = 8;
   }
end


External Examples

cont/base/springcontent/gamedata/sounds.lua - The original default sounds.lua

ZeroK sounds.lua

Further Reading

Information about sounds.lua Information about gainMod and pitchMod