Difference between revisions of "playSound"

From Bohemia Interactive Community
Jump to navigation Jump to search
m
m (Text replacement - "[[Category:Scripting Commands ArmA|" to "[[Category:Scripting Commands Armed Assault|")
(29 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{Command|= Comments
+
{{Command|Comments=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| ofp |= Game name
+
| ofp |Game name=
  
|1.00|= Game version
+
|1.00|Game version=
  
|eff= local |= Effects in MP
+
|eff= local |Multiplayer Effects=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| selects Sound from [[Description.ext#Sounds|CfgSounds]] declared in the [[Description.ext]] file. |= Description
+
| Plays a sound from CfgSounds. Sound can be defined in [[missionConfigFile]], [[configFile]] or [[campaignConfigFile]].|DESCRIPTION=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| '''playSound''' soundName |= Syntax
+
| '''playSound''' soundName |SYNTAX=
  
|p1= soundName: [[String]] |= Parameter 1
+
|p1= soundName: [[String]] |PARAMETER1=
  
| [[Nothing]] |= Return value
+
| [[Nothing]] |RETURNVALUE=
  
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
|s2= '''playSound''' [soundName,forcePlay] |= Syntax 2
+
|s2= '''playSound''' [soundName, isSpeech] |SYNTAX2=
 +
|p21=[soundName, isSpeech]: [[Array]] |PARAMETER21=
 +
|p22= soundName: [[String]] |PARAMETER22=
 +
|p23= isSpeech: [[Boolean]] - play as speech through radio channel, [[fadeSpeech]] applies. |PARAMETER23=
  
|p21= soundName: [[String]] |= Parameter 1
+
|r2= [[Nothing]] |RETURNVALUE2=
|p22= forcePlay: [[Boolean]] - true to ignore [[fadeSound]] volume settings. |= Parameter 2
 
 
 
|r2= [[Nothing]] |= Return value 2
 
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
 
   
 
   
|x1= <code>[[playSound]] "soundname"</code> |= Example 1
+
|x1= <code>[[playSound]] "soundname"</code> |EXAMPLE1=
 +
 
 +
|x2= Start a sound and then stop it after 1.2 second:<code>[[playSound]] "AlarmCar";
 +
[] [[spawn]]
 +
{
 +
_sound = [[ASLToAGL]] [0,0,0] [[nearestObject]] "#soundonvehicle";
 +
[[sleep]] 1.2;
 +
[[deleteVehicle]] _sound;
 +
};
 +
</code> |EXAMPLE2=
 +
 
 +
|x3= Start a sound and wait until it is finished:<code>[[playSound]] "Alarm";
 +
[[hint]] "Started!";
 +
[] [[spawn]]
 +
{
 +
_sound = [[ASLToAGL]] [0,0,0] [[nearestObject]] "#soundonvehicle";
 +
[[waitUntil]] {[[isNull]] _sound};
 +
[[hint]] "Finished!";
 +
};</code> |EXAMPLE3=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| [[playSound3D]], [[sideRadio]], [[say]], [[playMusic]], [[say2D]], [[say3D]], [[createSoundSource]] |= See also
+
| [[playSound3D]], [[sideRadio]], [[say]], [[playMusic]], [[say2D]], [[say3D]], [[createSoundSource]] |SEEALSO=
  
 
}}
 
}}
Line 39: Line 57:
  
 
<dd class="notedate">Posted on August 4, 2006 - 10:57
 
<dd class="notedate">Posted on August 4, 2006 - 10:57
<dt class="note">'''[[User:Hardrock|hardrock]]'''<dd class="note">''Notes from before the conversion:''
+
<dt class="note">[[User:Hardrock|hardrock]]<dd class="note">''Notes from before the conversion:''
  
 
For dialogue involving living units it is better to use [[say]], '''playSound''' will play a sound at the location of the player, [[say]] will play a sound at the location of the unit that is speaking, and it will only play that sound if the unit is alive.
 
For dialogue involving living units it is better to use [[say]], '''playSound''' will play a sound at the location of the player, [[say]] will play a sound at the location of the unit that is speaking, and it will only play that sound if the unit is alive.
Line 50: Line 68:
  
 
[[Category:Scripting Commands|PLAYSOUND]]
 
[[Category:Scripting Commands|PLAYSOUND]]
 +
[[Category:Scripting Commands OFP 1.99|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands OFP 1.96|PLAYSOUND]]
 
[[Category:Scripting Commands OFP 1.96|PLAYSOUND]]
 
[[Category:Scripting Commands OFP 1.46|PLAYSOUND]]
 
[[Category:Scripting Commands OFP 1.46|PLAYSOUND]]
[[Category:Scripting Commands ArmA|PLAYSOUND]]
+
[[Category:Scripting Commands Armed Assault|PLAYSOUND]]
[[Category:Scripting Commands ArmA2|PLAYSOUND]]
+
[[Category:Scripting Commands Arma 2|PLAYSOUND]]
 
[[Category:Command_Group:_Sounds|{{uc:{{PAGENAME}}}}]]
 
[[Category:Command_Group:_Sounds|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
+
[[Category:Scripting Commands Arma 2|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
+
[[Category:Scripting Commands Take On Helicopters|{{uc:{{PAGENAME}}}}]]
 +
 
 +
<!-- CONTINUE Notes -->
 +
<dl class="command_description">
 +
<dd class="notedate">Posted on December 28, 2014 - 08:22 (UTC)</dd>
 +
<dt class="note">[[User:PiZZADOX|PiZZADOX]]</dt>
 +
<dd class="note">
 +
As you may have noticed, the parameter for playsound/say3d that deals with the "volume" of the sound played has little to do with the effective loudness heard in game. What it is alters is the drop off for fading the sound at a distance. A higher decibel or integer value will increase the distance before any sort of fading will take place. The actual volume of the sound file played will factor in to this, as it does throughout the playing action.
 +
====Amplifying the Sound====
 +
Modifying the effective volume of sounds played by the engine is possible by "spamming" the sounds. By quickly playing the sounds overtop of one another, you can effectively amplify the volume
 +
<br>
 +
This example, 
 +
<code>
 +
playSound "soundname";
 +
playSound "soundname";
 +
</code>
 +
<br>
 +
Will effectively amplify the sound by a sensed 2x. The volume of the sound file itself will still affect the sound volume as it appears as though the arma engine has no normalization for sound files added to it.
 +
 
 +
====Notes====
 +
 
 +
This technique may cause issues in sound quality in large multiplayer servers. I observed multiple instances when a triggered sound amplified with this method was out of sync with each other. Timing of the individual commands sent over the network is probably the issue. Recommend you compile your amplification code into a single finished function for better syncing for clients not activating the action/far away from the activation position.
 +
 
 +
</dd>
 +
</dl>
 +
<!-- DISCONTINUE Notes -->

Revision as of 20:56, 3 June 2020

Introduced with Operation Flashpoint version 1.001.00Effects of this scripting command are not broadcasted over the network and remain local to the client the command is executed on
Hover & click on the images for descriptions

Description

Description:
Plays a sound from CfgSounds. Sound can be defined in missionConfigFile, configFile or campaignConfigFile.

Syntax

Syntax:
playSound soundName
Parameters:
soundName: String
Return Value:
Nothing

Alternative Syntax

Syntax:
playSound [soundName, isSpeech]
Parameters:
[soundName, isSpeech]: Array
soundName: String
isSpeech: Boolean - play as speech through radio channel, fadeSpeech applies.
Return Value:
Nothing

Examples

Example 1:
playSound "soundname"
Example 2:
Start a sound and then stop it after 1.2 second:playSound "AlarmCar"; [] spawn { _sound = ASLToAGL [0,0,0] nearestObject "#soundonvehicle"; sleep 1.2; deleteVehicle _sound; };
Example 3:
Start a sound and wait until it is finished:playSound "Alarm"; hint "Started!"; [] spawn { _sound = ASLToAGL [0,0,0] nearestObject "#soundonvehicle"; waitUntil {isNull _sound}; hint "Finished!"; };

Additional Information

See also:
playSound3DsideRadiosayplayMusicsay2Dsay3DcreateSoundSource

Notes

i
Only post proven facts here. Report bugs on the feedback tracker. Use the Talk page or the Forums for discussions.

Notes

Posted on August 4, 2006 - 10:57
hardrock
Notes from before the conversion: For dialogue involving living units it is better to use say, playSound will play a sound at the location of the player, say will play a sound at the location of the unit that is speaking, and it will only play that sound if the unit is alive.

Bottom Section

Posted on December 28, 2014 - 08:22 (UTC)
PiZZADOX
As you may have noticed, the parameter for playsound/say3d that deals with the "volume" of the sound played has little to do with the effective loudness heard in game. What it is alters is the drop off for fading the sound at a distance. A higher decibel or integer value will increase the distance before any sort of fading will take place. The actual volume of the sound file played will factor in to this, as it does throughout the playing action.

Amplifying the Sound

Modifying the effective volume of sounds played by the engine is possible by "spamming" the sounds. By quickly playing the sounds overtop of one another, you can effectively amplify the volume
This example, playSound "soundname"; playSound "soundname";
Will effectively amplify the sound by a sensed 2x. The volume of the sound file itself will still affect the sound volume as it appears as though the arma engine has no normalization for sound files added to it.

Notes

This technique may cause issues in sound quality in large multiplayer servers. I observed multiple instances when a triggered sound amplified with this method was out of sync with each other. Timing of the individual commands sent over the network is probably the issue. Recommend you compile your amplification code into a single finished function for better syncing for clients not activating the action/far away from the activation position.