====== ArmA 2 Sound ======
[[https://www.pmctactical.org/forum/viewforum.php?f=50|ArmA 2 Forum]], [[:arma2|ArmA 2 Home]], [[arma2:config|ArmA 2 Config]], [[arma2:file_formats|ArmA 2 File Formats]], [[arma2:missions|ArmA 2 Missions]], [[arma2:modeling|ArmA 2 3D Modeling]], [[arma2:scripting|ArmA 2 Scripting]], [[arma2:terrain|ArmA 2 Terrain]], [[arma2:texturing|ArmA 2 Texturing]], [[arma2:tools|ArmA 2 Tools]]
If there are 3 parameters, then from second (volume in dB) is used for maximum distance calculation, max. distance is emitter distance from listener where sound from this emitter is not audible.
When in cfg are four parameters, then 4 parameter is distance in meters, and second parameter (volume in dB) is ignored - is recalculated based on max distance.
0dB == 1000m
is recalculated based on max distance
What max distance is this - related to view distance?
Sample volume is recalculated, volume is derived from distance ( where 0dB = 1000m ), there is no "real" difference between these to entries.
Distance == view distance.
Some more good information - details about new class Sounds of cfgVehicles.
* frequency range is [0.6, inf] but usable range is somewhere about 1 that's [0.8, 1.2]
* randomizer = small random number unique for each vehicle, range [0, 1]
* angular velocity - but this controller is not much usable, because values are discrete, not smooth, so in frame N it should be 0 and in frame N+1 it should be 2
* factor - linear interpolation between A and B based on x, value = A + (B - A) *x, trick to get peak is using min{ X factor [A, B], X factor [B, A] }
**Vehicle sounds**
// How much sound volume is reduced when in a vehicle due to obstruction in the direct
// and indirect path to the sound source.
// 1 = not obstructed, 0 fully obstructed (db-xx can also be used)
occludeSoundsWhenIn = 0.031622775;
// How much sound volume is reduced when in a vehicle due to obstruction in the direct
// path to the sound source.
// 1 = not obstructed, 0 fully obstructed (db-xx can also be used)
obstructSoundsWhenIn = 0.17782794;
====== Vehicle Sounds ======
Here is example helicopter engine / rotor sound config.
class Sounds
{
class Engine
{
sound[] = {"pmc\vte_sounds\vehicle\CH47_engine_high_ext.wss", 1, 1, 800};
frequency = "rotorSpeed";
volume = "camPos*((rotorSpeed-0.72)*4)";
};
class RotorLowOut
{
sound[] = {"pmc\vte_sounds\vehicle\CH47_rotor_ext.wss", 3.1622777, 1, 1500};
frequency = "rotorSpeed";
volume = "camPos*(0 max (rotorSpeed-0.1))";
cone[] = {1.8,3.14,2.0,0.9};
};
class RotorHighOut
{
sound[] = {"pmc\vte_sounds\vehicle\CH47_rotor_forsage_ext.wss", 3.1622777, 1, 1800};
frequency = "rotorSpeed";
volume = "camPos*10*(0 max (rotorThrust-0.95))";
cone[] = {1.8,3.14,2.0,0.9};
};
class EngineIn
{
sound[] = {"pmc\vte_sounds\vehicle\CH47_engine_high_int.wss", 1.7782794, 1};
frequency = "rotorSpeed";
volume = "(1-camPos)*((rotorSpeed-0.75)*4)";
};
====== CfgEnvSounds ======
Apparently in 2010-2011 ArmA 2 versions only the randSamp0 and randSamp1 are played, all others are ignored. Can someone confirm this?
**Parameters**
RandSamp0[] = {SOUNDFILE, VOLUME, PITCH, DISTANCE, PROBABILLITY, Min DELAY, Mid DELAY, Max DELAY}
RandSamp0[] = {"\file.wss", 6, 1, 90, 0.07, 4, 8, 12};
**Example config**
class CfgEnvSounds
{
class Meadows
{
sound[] ={"\ca\sounds\Ambient\meadows\wind-meadow-2",0.0316228,1};
volume = "(1-forest)*(1-houses)*(1-night)*(1-sea)";
randSamp1[] ={"ca\sounds\Ambient\meadows\meadow_sfx_01",0.1,"125",0.15,8,15,20};
randSamp2[] ={"ca\sounds\Ambient\meadows\meadow_sfx_02",0.1,1,25,0.15,8,15,20};
randSamp3[] ={"ca\sounds\Ambient\meadows\meadow_sfx_03",0.1,"125",0.15,15,30,40};
randSamp4[] ={"ca\sounds\Ambient\meadows\meadow_sfx_04_crickets",0.01,1,25,0.15,15,30,40};
randSamp5[] ={"ca\sounds\Ambient\meadows\meadow_sfx_05_crickets",0.00562341,1,25,0.1,8,15,20};
randSamp6[] ={"ca\sounds\Ambient\meadowsmeadow-sfx-06",0.01,1,25,0.1,8,10,20};
random[] ={"randSamp1","randSamp2","randSamp3","randSamp4","randSamp5","randSamp6"};
};
class Forest
{
sound[] ={"ca\sounds\Ambient\forestforest-day-2",0.0398107,1};
volume = "forest*(1-night)";
randSamp11[] ={"ca\sounds\Ambient\forestforest-sfx-9bird",0.1,1,30,0.14,5,8,10};
randSamp10[] ={"ca\sounds\Ambient\forestforest-sfx-12datel",0.1,30,0.125,10,20,40};
randSamp0[] ={"ca\sounds\Ambient\forestforest-sfx-5bird",0.125893,1,30,0.13,4,8,12};
randSamp1[] ={"ca\sounds\Ambient\forestforest-sfx-6bird",0.125893,1,30,0.125,4,8,12};
randSamp2[] ={"ca\sounds\Ambient\forestforest-sfx-7bird",0.125893,1,30,0.125,4,8,12};
randSamp3[] ={"ca\sounds\Ambient\forestforest-sfx-8bird",0.125893,1,30,0.1,4,8,12};
randSamp8[] ={"ca\sounds\Ambient\forestforest-sfx-10bird-flapping",0.1,1,30,0.04,10,20,40};
randSamp9[] ={"ca\sounds\Ambient\forestforest-sfx-11holub-flapping",0.1,1,30,0.04,10,20,40};
randSamp4[] ={"ca\sounds\Ambient\forestforest-sfx-1",0.1,1,30,0.025,4,8,10};
randSamp5[] ={"ca\sounds\Ambient\forestforest-sfx-2",0.1,1,30,0.025,4,8,10};
randSamp6[] ={"ca\sounds\Ambient\forestforest-sfx-3",0.1,1,30,0.025,4,8,10};
randSamp7[] ={"ca\sounds\Ambient\forestforest-sfx-4",0.1,1,30,0.025,4,8,10};
random[] ={"randSamp11","randSamp10","randSamp0","randSamp1","randSamp2","randSamp3","randSamp8","randSamp9","randSamp4","randSamp5","randSamp6","randSamp7"};
};
class ForestNight
{
sound[] ={"ca\sounds\Ambient\forestforest-night-1",0.0562341,1};
volume = "forest*night";
randSamp1[] ={"ca\sounds\Ambient\forestforest-night-sfx-1",0.1,"125",0.15,8,15,20};
randSamp2[] ={"ca\sounds\Ambient\forestforest-night-sfx-2",0.1,1,25,0.15,8,15,20,30};
randSamp3[] ={"ca\sounds\Ambient\forestforest-sfx-10bird-flapping",0.1,"125",0.15,15,30,40};
randSamp4[] ={"ca\sounds\Ambient\forestforest-sfx-11holub-flapping",0.1,"125",0.15,15,30,40};
randSamp5[] ={"ca\sounds\Ambient\forestforest-sfx-1",0.0562341,1,25,0.1,8,15,20};
randSamp6[] ={"ca\sounds\Ambient\forestforest-sfx-2",0.0562341,1,25,0.1,8,10,20};
randSamp7[] ={"ca\sounds\Ambient\forestforest-sfx-3",0.0562341,1,25,0.1,8,10,20};
randSamp8[] ={"ca\sounds\Ambient\forestforest-sfx-4",0.0562341,1,25,0.1,8,10,20};
random[] ={"randSamp1","randSamp2","randSamp3","randSamp4","randSamp5","randSamp6","randSamp7","randSamp8"};
};
class Rain
{
sound[] ={"\Ca\sounds\Ambient\rain\rain_hard1",0.177828,1};
volume = "rain";
soundNight[] ={"\Ca\sounds\Ambient\rain\rain_hard1",0.177828,1};
};
====== Misc ======
Solid insideSoundCoeff's
// UH60
insideSoundCoef = 0.001;
occludeSoundsWhenIn = 0.02;
obstructSoundsWhenIn = 0.02;
EngineLowOut {"A10_Ext_Engine_Low", 45.2387, 1, 700}
This sound you should hear last, its the rumble or 'jet wash' you get when an aircraft makes as it gets closer to your position.
EngineHighOut {"A10_Ext_Engine_High", 25.2387, 1, 1100}
This is the 'throttle' sound, the sound activates when you apply acceleration as well as sounding at other (from what I can tell) drastic stick movements ? Had to define when you start to hear it but somewhere between the two others gives me the best results during a flyby.
ForsageOut {"A10_Ext_Engine_Idle", 40.2387, 1, 4000}
This is the main engine sound, this kicks in as the the engine_start sound is fading out and plays a constant loop until you stop the engine or it gets destroyed.
{"V_55", 1.0, 0.5, 900};\\
1.0 is volume at source\\
0.5 is pitch 0.0 being same as orginal sample\\
900 is volume over distance (how far it can be heard)
begin1[] = {"\HiFi_GAU8_Auto\GAU8_s1", 1.77828, 1, 3000};
The first value in this case 1.77828 don´t work anymore, no matter what you put there, 1.77828 or db+20 etc it doesn´t change the volume level ingame anymore.
It was how far the sound traveled before no longer being possible to hear.
That is the "strenght" it has ingame, not the volume. So it affects how far the sound travels. If you put the soundsource close to you you shouldnt notice any difference tweaking that value. Try to put your soundsource 1 km away from you and tweak. If you want to change the dB change your sample.
Ofcourse the distance to the soundsource depends on what you are tweaking When I was tweaking the reloads for HiFi I had the soldier reloading his gun next to me, 5 m away and 20 m away. Then I tweaked until I could here it good next to me, could hear it 5 m away and couldnt 20 m away.
Don't quote me on it, but i think it sets the volume in relation to other sounds playing at the same time. This way you could set a dominant sound within a set of samples being played.
Also right, forgot that If two sounds are being played at the same time close to you the one with higher dB is heard more even if they have the same sample dB. So an explosion with high dB should make other sounds less audible or even silent. Another example is when you shoot or a tank rolls by the insects get silent as they have a very low dB.
edit: the use of dB shouldnt be used to tweak the volume itself, soundmodders should do that through the wss files. dB value is for the soundengine only. Else strange things can happen, for example hearing crickets while flying a chopper..
When lets say missile launch is heard all over the terrain (like 10km away) like it was right on top of you, what sound config value is wrong (too high?) in this situation?
Is there some guidelines of sound volumes on the config, or does it relate too much for the actual wss sound level and only can be tweaked by trial and error?
i.e. sound[] = {"\TRSM_Tracked_Vehicles\SFX\Fuel_Explosion.ogg ", 31.6228, 1, 1000};
For now my maxium volume over distance settings are as follows:
Av8b = 4500m
A10 = 4000m
C130 = 6000m
Su25 = 4000m
Su34 = 5000m
These settings are for the main engine sound. the other 2 sounds engine_high & engine_low I'm currently playing with. I can share the A10 setting's as I'm happy with them right now:
EngineLowOut {"\HiFi_BIS_A10\A10_Ext_Engine_Low", 45.2387, 1.0, 700}
^^This sound you should hear last, its the rumble or 'jet wash' you get when an aircraft makes as it gets closer to your position.
EngineHighOut {"\HiFi_BIS_A10\A10_Ext_Engine_High", 25.2387, 1.0, 1100}
^^This is the 'throttle' sound, the sound activates when you apply acceleration as well as sounding at other (from what I can tell) drastic stick movements ? Had to define when you start to hear it but somewhere between the two others gives me the best results during a flyby.
ForsageOut {"\HiFi_BIS_A10\A10_Ext_Engine_Idle", 40.2387, 1.0, 4000}
^^This is the main engine sound, this kicks in as the the engine_start sound is fading out and plays a constant loop until you stop the engine or it gets destroyed.
{"\RHS_T55AMV\sounds\V_55.ogg", 1, 0.5, 900};
1 is volume at source
0.5 is pitch 0 being same as original sample
900 is volume over distance (how far it can be heard)
If there are 3 params, then from second (volume in dB) is used for maximum distance calculation, max. distance is emitter distance from listener where sound from this emitter is not audible.
When in cfg are four params, then 4 param is distance in meters, and second parameter (volume in dB) is ignored - is recalculated based on max distance.
0dB == 1000m
is recalculated based on max distance
What max distance is this - related to view distance?
Sample volume is recalculated, volume is derived from distance ( where 0dB = 1000m ), there is no "real" difference betwen these to entries.
Distance == view distance.
Some more good information - details about new class Sounds of cfgVehicles.
* frequency range is [0.6, inf] but usable range is somewhere about 1 that's [0.8, 1.2]
* randomizer = small random number unique for each vehicle, range [0, 1]
* angular velocity - but this controller is not much usable, because values are discrete, not smooth, so in frame N it should be 0 and in frame N+1 it should be 2
* factor - linear interpolation between A and B based on x, value = A + (B - A) *x, trick to get peak is using min{ X factor [A, B], X factor [B, A] }
Check out basic [[sound_config_tutorial|Sound config tutorial]].