Sound: SoundSet – Arma 3
Jump to navigation
Jump to search
Dusa_bi_wiki (talk | contribs) (Created page with "== SoundSet == SoundSet is second level of sound configuration. It contains array of SoundShaders to be submixed and parameters for advanced features and options. All SoundS...") |
Lou Montana (talk | contribs) m (Text replacement - " !''" to " ! ''") |
||
(15 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{GameCategory|arma3|Sound}} | |||
== SoundSet == | == SoundSet == | ||
SoundSet is second level of sound configuration. It contains array of SoundShaders to be | SoundSet is second level of sound configuration. It contains array of SoundShaders to be mixed and parameters for advanced features and options. | ||
All SoundSets have to be configured in the base class '''CfgSoundSets'''. | All SoundSets have to be configured in the base class '''CfgSoundSets'''. | ||
{| | {{Feature | informative | ||
| | | | ||
* SoundSet in fact represents one single submixed sound, with the length of the longest sample used in the submix. | * SoundSet in fact represents one single submixed sound, with the length of the longest sample used in the submix. | ||
* Actual range of SoundSet is the highest range parameter value of all SoundShaders used within SoundSet and SoundSet's volumeCurve is applied (scaled) to that range. | * Actual range of SoundSet is the highest range parameter value of all SoundShaders used within SoundSet and SoundSet's volumeCurve is applied (scaled) to that range. | ||
* Use the same frequency wave files defined within single SoundSet (SoundShader respectively). | * Use the same frequency wave files defined within single SoundSet (SoundShader respectively). | ||
* For vehicles: soundSets must have only one soundShader for soundShader simple expressions to be updated all the time. Reatime-update does not work if there are more than 1 soundShader in soundSet. | |||
}} | |||
{| class="wikitable | {| class="wikitable" | ||
|- | |- | ||
! | ! Parameter | ||
! | ! Unit/values | ||
! | ! Default | ||
! | ! Description | ||
|- | |- | ||
!''soundShaders'' | ! ''soundShaders'' | ||
| | | | ||
Line 33: | Line 35: | ||
|- | |- | ||
!''soundShadersLimit'' | ! ''soundShadersLimit'' | ||
| (0..n) | | (0..n) | ||
| 0 (no limit) | | 0 (no limit) | ||
| | | | ||
* number of SoundShaders (with parameter limitation set to true) to be submixed in order from the highest volume. Volume here is ment to be output volume value after it | * number of SoundShaders (with parameter limitation set to true) to be submixed in order from the highest volume. Volume here is ment to be output volume value after it is expression evaluation and applied rangeCurve | ||
* SoundShaders with limitation parameter set to false will be processed always | * SoundShaders with limitation parameter set to false will be processed always | ||
|- | |- | ||
!''volumeFactor'' | ! ''volumeFactor'' | ||
| float (0.. | | float (0..n) or dBx | ||
| 1 | | 1 | ||
| | | | ||
* multiplication factor for volume | * multiplication factor for volume, both float and dBx values are possible | ||
* ''volumeFactor = 0.5'' is the same as ''volumeFactor = db-6'' | |||
|- | |- | ||
!''volumeCurve'' | ! ''volumeCurve'' | ||
| {{d0, v0}, {d1, v1}, ... } or Class name | | {{d0, v0}, {d1, v1}, ... } or Class name | ||
| ''defaultVolumeCurve'' | | ''defaultVolumeCurve'' | ||
defined in CfgSoundGlobals | defined in CfgSoundGlobals | ||
| | | | ||
* array of points or class name defined in CfgSoundCurves | * array of points or class name defined in [[Arma_3_Sound:_Sound_Curves|CfgSoundCurves]] | ||
* generally the same as rangeCurve, but applied on submix output sample and scaled to the highest range value of all SoundShaders defined within soundShaders array parameter (literally "defined", not actually playing) | * generally the same as rangeCurve, but applied on submix output sample and scaled to the highest range value of all SoundShaders defined within soundShaders array parameter (literally "defined", not actually playing) | ||
|- | |- | ||
!''volumeRandomizer'' | ! ''volumeRandomizer'' | ||
| (0..6dB) [dB] | | (0..6dB) [dB] | ||
| 0 | | 0 | ||
Line 65: | Line 68: | ||
|- | |- | ||
!''volumeRandomizerMin'' | ! ''volumeRandomizerMin'' | ||
| (0..6dB) [dB] | | (0..6dB) [dB] | ||
| 0 | | 0 | ||
Line 72: | Line 75: | ||
|- | |- | ||
!''frequencyFactor'' | ! ''frequencyFactor'' | ||
| (0..n) | | (0..n) | ||
| 1 | | 1 | ||
| | | | ||
* multiplication factor for frequency | * multiplication factor for frequency | ||
|- | |- | ||
!''frequencyRandomizer'' | ! ''frequencyRandomizer'' | ||
| (0..12) [semitones] | | (0..12) [semitones] | ||
| 0 | | 0 | ||
Line 85: | Line 89: | ||
* random multiplication factor for frequency, calculated during each playback of SoundSet | * random multiplication factor for frequency, calculated during each playback of SoundSet | ||
* frequency = frequency * pow(2, ''frequencyRandomizer''/12) | * frequency = frequency * pow(2, ''frequencyRandomizer''/12) | ||
* 12 semitones = 1 octave = double/half speed | |||
|- | |- | ||
!''frequencyRandomizerMin'' | ! ''frequencyRandomizerMin'' | ||
| (0..12) [semitones] | | (0..12) [semitones] | ||
| 0 | | 0 | ||
| | | | ||
* the lowest possible generated value of frequencyRandomizer | * the lowest possible generated value of frequencyRandomizer | ||
* use it to guarantee a specific amount of pitch change on the next playback | |||
|- | |- | ||
!''loop'' | ! ''loop'' | ||
| {0, 1} or boolean | | {0, 1} or boolean | ||
| 0 | | 0 | ||
Line 102: | Line 108: | ||
|- | |- | ||
!''delay'' | ! ''playTrigger'' | ||
| simple expression | |||
| 0 | |||
| | |||
* soundSet is triggered, once simple expression goes above 0 | |||
* good for engine burst sounds (example: accelleration, use "thrust-0.1" to trigger) | |||
|- | |||
! ''shape'' | |||
| class name | |||
| none | |||
| | |||
* name of soundShape configured in [[Arma_3_Sound:_SoundShapes|CfgSoundShapes]] | |||
* will make sound louder/quieter depending on what side of asset is facing listener (bottom, front, back, left/right) | |||
|- | |||
! ''delay'' | |||
| [s] | | [s] | ||
| 0 | | 0 | ||
Line 110: | Line 132: | ||
|- | |- | ||
!''delayRandomizer'' | ! ''delayRandomizer'' | ||
| [s] | | [s] | ||
| 0 | | 0 | ||
Line 117: | Line 139: | ||
|- | |- | ||
!''distanceFilter'' | ! ''distanceFilter'' | ||
| Class name / "none" | | Class name / "none" | ||
| ''defaultDistanceFilter'' | | ''defaultDistanceFilter'' | ||
Line 123: | Line 145: | ||
| | | | ||
* distance frequency attenuation filter | * distance frequency attenuation filter | ||
* distanceFilter = "none"; removes filter from soundSet | |||
|- | |- | ||
!''sound3DProcessingType'' | ! ''sound3DProcessingType'' | ||
| Class name / "none" | | Class name / "none" | ||
| ''defaultSound3DProcessingType'' | | ''defaultSound3DProcessingType'' | ||
defined in CfgSoundGlobals | defined in CfgSoundGlobals | ||
| | | | ||
* sound processing type | * [[Arma_3_Sound:_Processing_Types|sound processing type]] | ||
* sound3DProcessingType = "none"; forces the engine to handle audio "the old way", stereo files are downmixed to mono and placed in the world | |||
|- | |- | ||
!''spatial'' | ! ''spatial'' | ||
| {0, 1} or boolean | | {0, 1} or boolean | ||
| | | | ||
Line 140: | Line 164: | ||
|- | |- | ||
!''doppler'' | ! ''doppler'' | ||
| {0, 1} or boolean | | {0, 1} or boolean | ||
| | | | ||
Line 147: | Line 171: | ||
|- | |- | ||
!''speedOfSound'' | ! ''speedOfSound'' | ||
| {0, 1} or boolean | | {0, 1} or boolean | ||
| | | | ||
| | | | ||
* switch for simulation of delay based on distance | * switch for simulation of delay based on distance | ||
|- | |||
! ''occlusionFactor'' | |||
| (0..1) | |||
| | |||
| | |||
* ''occVolumeFactor = 1-(1-GetOcclusion)*occlusionFactor;'' where GetOcclusion is value calculated from the scene | |||
|- | |||
! ''obstructionFactor'' | |||
| (0..1) | |||
| | |||
| | |||
* ''obsVolumeFactor = 1-(1-GetObstruction)*obstructionFactor;'' where GetObstruction is value calculated from the scene | |||
|} | |} | ||
< | <syntaxhighlight lang="cpp"> | ||
class CfgSoundSets | |||
{ | { | ||
class Rifle_Shot_Base_SoundSet | class Rifle_Shot_Base_SoundSet | ||
Line 170: | Line 209: | ||
sound3DProcessingType = WeaponMediumShot3DProcessingType; | sound3DProcessingType = WeaponMediumShot3DProcessingType; | ||
distanceFilter = weaponShotDistanceFreqAttenuationFilter; | distanceFilter = weaponShotDistanceFreqAttenuationFilter; | ||
spatial = | spatial = 1; | ||
doppler = | doppler = 0; | ||
loop = | loop = 0; | ||
}; | }; | ||
};</ | }; | ||
</syntaxhighlight> |
Latest revision as of 10:11, 25 May 2021
SoundSet
SoundSet is second level of sound configuration. It contains array of SoundShaders to be mixed and parameters for advanced features and options.
All SoundSets have to be configured in the base class CfgSoundSets.
Parameter | Unit/values | Default | Description |
---|---|---|---|
soundShaders |
{SoundShader1, ...} |
none |
|
soundShadersLimit | (0..n) | 0 (no limit) |
|
volumeFactor | float (0..n) or dBx | 1 |
|
volumeCurve | {{d0, v0}, {d1, v1}, ... } or Class name | defaultVolumeCurve
defined in CfgSoundGlobals |
|
volumeRandomizer | (0..6dB) [dB] | 0 |
|
volumeRandomizerMin | (0..6dB) [dB] | 0 |
|
frequencyFactor | (0..n) | 1 |
|
frequencyRandomizer | (0..12) [semitones] | 0 |
|
frequencyRandomizerMin | (0..12) [semitones] | 0 |
|
loop | {0, 1} or boolean | 0 |
|
playTrigger | simple expression | 0 |
|
shape | class name | none |
|
delay | [s] | 0 |
|
delayRandomizer | [s] | 0 |
|
distanceFilter | Class name / "none" | defaultDistanceFilter
defined in CfgSoundGlobals |
|
sound3DProcessingType | Class name / "none" | defaultSound3DProcessingType
defined in CfgSoundGlobals |
|
spatial | {0, 1} or boolean |
| |
doppler | {0, 1} or boolean |
| |
speedOfSound | {0, 1} or boolean |
| |
occlusionFactor | (0..1) |
| |
obstructionFactor | (0..1) |
|
class CfgSoundSets
{
class Rifle_Shot_Base_SoundSet
{
soundShaders[] =
{
MX_Closure_SoundShader,
MX_closeShot_SoundShader,
MX_midShot_SoundShader,
MX_distShot_SoundShader,
MX_tailInterior_SoundShader
};
volumeFactor = 1.6;
volumeCurve = InverseSquare2Curve;
sound3DProcessingType = WeaponMediumShot3DProcessingType;
distanceFilter = weaponShotDistanceFreqAttenuationFilter;
spatial = 1;
doppler = 0;
loop = 0;
};
};