Interaction Sounds - photonle/Photon-v2 GitHub Wiki

Interaction sounds determine the sound effects players hear when pressing buttons. They are activated using the SOUND action in user commands.

By default, Photon 2 has multiple controller "beep" sounds, each one based on sounds by real manufacturers.

As a part of Photon 2's library, you can create new interaction sound profiles and easily export them as standalone addons. They are also integrated with Photon 2's Equipment system, which allows them to be swappable in-game when configured.

https://github.com/photonle/photon-v2-docs/assets/5350086/a940e60b-264e-4a88-8d80-f25b5dfc1290

Enable sound on the video above to hear the demonstration.

Usage

Interaction sounds are configured in the vehicle file's Equipment table.

VEHICLE.Equipment = {
   {
      Category = "Controller Sound",
      Options = {
         {
            Option = "Whelen",
            InteractionSounds = {
               { Class = "Controller", Profile = "whelen_cencom" }
            }
         }
      }
   }
}

Creation

Interaction sound files should be created in the following directory:

garrysmod/addons/my_custom_addon/lua/photon-v2/library/interaction_sounds/my_sounds.lua
Photon2.RegisterInteractionSound({
   -- Defines the sound's type (usually "Click" or "Controller")
   Class = "Controller",
   -- Unique name used to reference the profile
   Name = "unique_identifier",
   -- User friendly name
   Title = "Display Name",
   -- Profile's default sound file/parameters
   Default = {
      Sound = "photon/generic/click1.wav",
      -- Sound duration in seconds (to prevent overlapping)
      Duration = 0.025,
      -- 0-100
      Volume = 50,
      -- Pitch
      Pitch = 100
   },
   -- If this sound should play on a button-down event
   Press = true,
   -- If sound should play when a button is released
   Release = true,
   -- If sound should play when a button is released after a "momentary" action (e.g. manual siren)
   Momentary = true,
   -- If sound should play when a button was pressed and held
   Hold = true
})

Also note that multiple interaction sounds can be registered in a single file (unlike components and vehicles).

Key Activities

On real world control boxes, the precise action that plays a sound varies and is sometimes configurable, depending on the manufacturer of the control box and the precise model.

For example, Whelen controllers beep when a button is pressed and then again when the button is released (giving them a distinctive click-click sound). On modern Federal Signal controllers, buttons only beep once when pressed, unless the button is specifically configured for a "momentary" function (meaning only as long as the operator has their finger pressing it), in which case it will beep again when the button is released. On modern Code 3 controllers, buttons beep only beep once altogether.

By configuring the key activities options, Photon 2 is able to simulate all of this behavior.

Classes

Photon uses two classes by default: "Click" and "Controller". Click is intended for generic vehicle interactions (e.g. turn signals) while Controller is for the "beep" sounds of a controller keypad.

Additional classes can be defined, but will only activate when a command action is configured to utilize it.

Advanced

If desired, an interaction sound profile can be configured to play a different sound based on the press event.

Photon2.RegisterInteractionSound({
   Class = "Controller",
   Name = "unique_identifier",
   Title = "Display Name",
   Default = {
      Sound = "photon/generic/click1.wav",
      Duration = 0.025,
      Volume = 50,
      Pitch = 100
   },
   Press = true,
   Release = false,
   Momentary = true,

   -- Different sound will play when button is held
   Hold = {
      Sound = "my_sounds/hold_beep.wav",
      Duration = 0.1
   }

})

When a press event is only set to true, it simply inherits Default.