Audio Editor: Nodes – Arma Reforger

From Bohemia Interactive Community
Jump to navigation Jump to search
(Add Signal Editor nodes)
m (Text replacement - "ized" to "ised")
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{TOC|side}}
{{TOC|side}}
{{Wiki|TODO|Add images}}
'''Nodes''' are the fundamental building blocks that are used within the Audio Editor to create audio signal chains.
'''Nodes''' are the fundamental building blocks that are used within the Audio Editor to create audio signal chains. There are a variety of different nodes, each with a specific purpose that modifies the sound or introduces some logic at its respective position in the chain.
There are a variety of different nodes, each with a specific purpose that modifies the sound or introduces some logic at its respective position in the chain.


Connecting a series of nodes together allows to create chains that produce sounds with varying degrees of complexity. This page serves as a reference for the usage of each type of node.
Connecting a series of nodes together allows to create chains that produce sounds with varying degrees of complexity. This page serves as a reference for the usage of each type of node.
Line 9: Line 9:
* a node that outputs an audio waveform: either a Bank or a Generator
* a node that outputs an audio waveform: either a Bank or a Generator
* a Sound node
* a Sound node
{{TOC|subtoc|content=
* 1 {{Link|#Audio Editor Node Types}}
* 2 {{Link|#Signal Editor Node Types}}
* 3 {{Link|#External References}}
}}




== Audio Editor Node Types ==
== Audio Editor Node Types ==


Nodes can be grouped into two main categories: '''resource''' and '''local'''. A node of the '''resource''' type is saved as a separate resource file and can be shared between multiple .acp files, while a node of the '''local''' type is stored in the .acp file itself and cannot be shared with other .acps.
Nodes can be grouped into two main categories: {{Link|#Resource Nodes}} and {{Link|#Local Nodes}}.
A node of the Resource type is saved as a separate resource file and can be shared between multiple {{hl|.acp}} files, while a node of the local type is stored in the {{hl|.acp}} file itself and cannot be shared with other {{hl|.acp}} files.


Nodes of the '''resource''' type will appear on the design canvas with sharp corners, while nodes of the '''local''' type will appear with rounded corners.
Nodes of the Resource type will appear on the design canvas with round corners, while nodes of the Local type will appear with sharp corners.


=== Resource ===
{| class="valign-top"
|
{{TOC|subtoc
|title= Groups
|content=
* {{Link|#Resource Nodes}}
* {{Link|#Local Nodes}}
}}
|
{{TOC|subtoc
|title= Nodes
|content=
{{Columns|4|
* {{Link|#Mixer (aka OutputState aka FinalMix)}}
* {{Link|#Signal}}
* {{Link|#BankLocal}}
* {{Link|#Bus}}
* {{Link|#Sound}}
* {{Link|#Selector}}
* {{Link|#Generator}}
* {{Link|#Constants}}
* {{Link|#Shader}}
* {{Link|#Amplitude}}
* {{Link|#Frequency}}
* {{Link|#Spatiality}}
* {{Link|#FilterChain}}
* {{Link|#Filter}}
* {{Link|#Playlist}}
* {{Link|#Replacer}}
* {{Link|#Stream}}
* {{Link|#AuxOut}}
* {{Link|#Variable}}
}}
}}
|}


==== Signal ====
=== Resource Nodes ===
'''Extension:''' .sig


'''Description:''' Takes one or more inputs and transforms them into one or more outputs that can be used to feed the inputs to other nodes. The internal logic that defines the input/output behavior can be edited inside the Signal Editor - BIKI by double-clicking on the node.
<h4><span style="display: none" id="OutputState">OutputState</span></h4>
<h4><span style="display: none" id="FinalMix">FinalMix</span></h4>
==== Mixer ====


'''Input ports:''' Variable
''aka '''OutputState''' aka '''FinalMix'''''


'''Item detail:'''
{| class="wikitable align-center-col-4"
{| class="wikitable"
|+ Attributes
! Category
! Category
! Attribute Name
! Name
! Description
! Description
! Range
|-
|-
| rowspan="5" | Inputs
| General
| '''Name'''
| Inputs
| Input name (non-editable, defined inside the Signal Editor) *
| A listed representation of the groups defined within the mixer file.
|-
| {{n/a}}
| '''Value'''
| Value of the input in case nothing is connected (otherwise this value is overridden by whatever is connected)
|-
| '''Min'''
| Minimum value of the signal input **
|-
| '''Max'''
| Maximum value of the signal output **
|-
| '''ValRT'''
| Slider that controls '''Value'''
|}
|}
<nowiki>*</nowiki> ''For connection with in-game signals, the name of the signal should correspond to the one defined in gamecode/script.''


<nowiki>**</nowiki> ''This parameter has no effect on in-game signals or anything else connected to the signal input.''
The mixer's input ports are variable and depend on its internal logic.
 
No output ports.
 
==== Signal ====
Takes one or more inputs and transforms them into one or more outputs that can be used to feed the inputs of other nodes.
The internal logic that defines the input/output behavior can be edited inside the {{Link|Arma Reforger:Audio Editor: Nodes#Signal Editor Nodes|Signal Editor}} by double-clicking on the node.


==== Mixer ====
No dedicated attributes.
'''Extension:''' .afm


'''Description:''' This node serves as a way to group sounds based on type so that they can be processed as a unit before being sent to the final output(s).
Input ports depend on the internal signal setup.
As with the Signal node, this node contains some internal logic that defines how each sound group is processed. This internal logic can be edited by double-clicking on the node.


'''Input ports:''' Variable depending on the value of the '''Inputs''' parameter
Output ports depend on the internal signal setup.


=== Local ===
=== Local Nodes ===


==== BankLocal ====
==== BankLocal ====
'''Description:''' A collection of raw audio samples, of which one is selected to be played based on some selection method.
{| class="wikitable align-center-col-4"
 
|+ Attributes
'''Input ports:'''
! Category
{| class="wikitable"
! Name
! Name
! Type
! Description
! Description
! Range
|-
|-
| '''Volume'''
| Flags
| Signal
| Disable Streaming
| Volume modifier [dB]
| If enabled, streaming is suppressed and the entire sample is loaded into memory as a single block of data.
{{Feature|informative|The flag is ignored when the size of the file is > 16 MB.}}
| true/false
|-
| Flags
| Preload
| If enabled, all samples in the bank are preloaded into the cache on the first playback.
| true/false
|-
| General
| Volume
| Volume in decibels (dB), applied to all bank samples.
| [-60, +60]
|-
| General
| Volume variance
| Volume randomization factor; maximum deviation from the value of Volume, in dB.
| [0, +30]
|-
|-
| '''Pitch'''
| General
| Signal
| Pitch
| Pitch modifier [semitones]
| Pitch shift in semitones applied to all bank samples.
| [-24, +24]
|-
|-
| '''Replacer'''
| General
| Special-purpose node
| Pitch variance
| Allows bank to be controlled by a Replacer. Hidden by default unless '''Enable replacer port''' attribute is checked.
| Pitch randomization factor; maximum deviation in semitones from the value of Pitch.
| [0, 12]
|-
|-
| '''Offset'''
| General
| Signal
| Loop count
| Start position defined in milliseconds. Hidden by default unless '''Enable offset port''' attribute is checked.
| Number of times that the played sample is repeated.
|}
| [0, 255]
'''Item detail:'''
{| class="wikitable"
! Category
! Attribute Name
! Description
! Value Range
|-
|-
| rowspan="11" | General
| General
| '''Volume'''
| Loop begin
| Volume [dB], applied to all samples in the bank
| The first sample of the region to be looped.
| [-60, +12] dB
* Loop count above defines the number of repetition
* When Offset below is used, then the value must be greater than Offset
| {{n/a}}
|-
|-
| '''Volume variance'''
| General
| Volume randomization factor; maximum deviation from the value of '''Volume'''
| Loop length
| [0, +12] dB
| Length of the loop region, in samples.
{{Feature|important|The value of Loop begin + Loop length must be greater than Offset.}}
| {{n/a}}
|-
|-
| '''Pitch'''
| General
| Pitch shift in semitones applied to all samples in the bank
| Infinite Loop
| [-12, +12] semitones
| If enabled, the played sample is repeated infinitely until the sound is stopped.
| true/false
|-
|-
| '''Pitch variance'''
| General
| Pitch randomization factor; maximum deviation in semitones from the value of '''Pitch'''
| Terminate Loop
| [0, 2] semitones
| If enabled, the loop will stop immediately upon sound stop. If false, the loop will finish the current cycle first.
| true/false
|-
|-
| '''Loop count'''
| General
| Number of times that the played sample is repeated
| Termination Fade Out
| [0, 255]
| Fade out in milliseconds applied when the source is terminated due to limits during playback.<br>
Use Release Shape curve.
| [0, 10000]
|-
|-
| '''Loop begin'''
| General
| The first sample of the region to be looped
| Selection
|
| Method for selecting a sample.
* '''Loop count''' defines the number of repetition
* RandomNoRepeat: Samples selected at random, with the exception that the same sample is not repeated twice in a row
* When '''Offset''' is used, then the value must be greater than '''Offset'''
* Random: Samples selected at random
* SequenceFromFirst: Samples played in sequence, starting with the first sample
* FirstRandomAndSequence: Samples played in sequence, starting with a randomly-selected sample
* CustomSignalIndex: When this option is selected, a new input port is added to the bank that allows a sample to be selected based on the signal value
| {{n/a}}
|-
|-
| '''Loop length'''
| General
| Length of the loop region, in samples.
| Resampler
|
| Resampling method for converting between different sample rates.
* The value of '''Loop begin''' + '''Loop length''' must be greater than '''Offset'''
* Point: No interpolation (fastest, least accurate)
* '''length'''
* Linear: Interpolation (slower, but more accurate than point)
* FIR (4/8): FIR filter that implements resampling (slowest but most accurate)
| {{n/a}}
|-
|-
| '''Infinite Loop'''
| Envelope
| If enabled, the played sample is repeated infinitely until the sound is stopped
| Silence
| True/False
| Length of silence in milliseconds added in front of the sample
* Time is not counted into Envelope, Envelope-Attack time starts after Silence
| [0, 10000]
|-
|-
| '''Selection'''
| Envelope
| Method for selecting a sample
| Offset
|
| Length of playback offset of the sample, in milliseconds.
* ''RandomNoRepeat'': Samples selected at random, with the exception that the same sample is not repeated twice in a row
For non-looped playback in case when offset is bigger then sample length a playback is skipped.
* ''Random'': Samples selected at random
| [0, 10000]
* ''SequenceFromFirst'': Samples played in sequence, starting with the first sample
* ''FirstRandomAndSequence'': Samples played in sequence, starting with a randomly-selected sample
* ''RandomNoRepeatGlobal'': Ensures that the ''RandomNoRepeat'' condition is fulfilled when multiple game entities can play the same sample
* ''CustomSignalIndex'': When this option is selected, a new input port is added to the bank that allows a sample to be selected based on the signal value
|-
|-
| '''Resampler'''
| Envelope
| Resampling method, for converting between different sample rates [1]
| Random Start Offset
|
| If enabled, a random start offset is applied
* ''Point'': No interpolation (fastest, least accurate) [2]
| true/false
* ''Linear'': Interpolation (slower, but more accurate than point) [2]
* ''FIR (4/8/16)'': FIR filter that implements resampling (slowest but most accurate) [3]
|-
|-
| rowspan="2" | Fade
| Envelope
| '''Fade-in/out function'''
| Attack Shape
| Defines the "shape" of the volume change during fade-in/out
| Function for the shape of the sound fade in. Defines the "shape" of the volume change during fade-in.


* ''Linear'': TODO: link to visual plot
{{Link|https://www.desmos.com/calculator/s7z4sji5b5}}
* ''SCurve'': TODO: link to visual plot
 
* Linear: Curve is linear
* SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
* Cos: Curve is "S-shaped", similar to SCurve
* EPower (Equal Power) : If fade in and fade out happen at the same time, the equal power curve will ensure there's no "hole" in the overall volue (fade in * fade in + fade out * fade out = 1)
* Exp: Exponential curve (gets steeper over time)
* Quadratic: ''TBA''
| {{n/a}}
|-
|-
| '''Fade-in/out time'''
| Envelope
| Time that it takes for the fade to complete (0: no fade in/out)
| Attack
| [0, 10000] ms
| Time in milliseconds it takes before the sample reaches full volume.
|
|-
|-
| rowspan="4" | Flags
| Envelope
| '''Disable streaming'''
| Sustain
| When the size of the file is >256kB, then the sample is streamed in 16kB blocks. This flag suppresses streaming and the sample is loaded into memory (a single block of data).
| Time of Sustain in milliseconds. If the value is > 0, the total playback length will become {{hl|Fade In + Sustain + Fade Out}}.
The flag is ignored when the size of the file is >16MB.
| [0, 10000]
| True/False
|-
|-
| '''Disable updating'''
| Envelope
| Disables updating of bank inputs ('''Volume''' and '''Pitch''') during playback if true. Recommended if:
| Release Shape
| Function for the shape of the sound fade out. This will also apply for Termination fade out.
Defines the "shape" of the volume change during fade-out. Shapes are the same as attack shapes, but inverted.


* The '''Volume''' & '''Pitch''' inputs are not connected to anything
* Linear:
* The '''Volume''' & '''Pitch''' ports have signal inputs that are static
* SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
| True/False
* Cos: Curve is "S-shaped", similar to SCurve
* EPower (Equal Power) : If fade in and fade out happen at the same time, the equal power curve will ensure there's no "hole" in the overall volue (fade in * fade in + fade out * fade out = 1)
* Exp: Exponential curve (gets steeper over time)
* Quadratic: TBA
| {{n/a}}
|-
|-
| '''Preload'''
| Envelope
| Loads all samples into memory before any of them are played for the first time
| Release
| True/False
| Time in milliseconds it takes for the sound to fully fade out.
| [0, 10000]
|-
|-
| '''Enable replacer port'''
| Samples
| If enabled, creates a new input port for a Replacer node
| Samples
| True/False
| List of audio samples. There is a limit of max 1024 samples.
| {{n/a}}
|-
|-
| rowspan="5" | Samples
| Samples
| '''Samples'''
| Samples/Filename
| List of audio samples
| Link to the sample ({{hl|.wav}} format)
| n/a
| {{n/a}}
|-
|-
| Samples/'''Filename'''
| Samples
| Link to the sample (.wav format)
| Samples/Probability
| n/a
| In case of a randomised selection method, this parameter defines the probability that the sample will be selected. Probability is a {{Link|https://www.statisticshowto.com/weighting-factor/|weighting factor}}, not a percentage.
|-
| Samples/'''Probability'''
| In case of a randomized selection method, this parameter defines the probability that the sample will be selected.*
| [0, 100]
| [0, 100]
|-
|-
| Samples/'''Index'''
| Samples
| Samples/Index
| Custom signal index
| Custom signal index
| [0, inf+]
| [0, inf+]
|-
|-
| Samples/'''Metadata'''
| Samples
|
| Samples/Sample Metadata
|
| Name of a string holding localization data which can be processed by other parts of the game.
| {{n/a}}
|}
|}
<nowiki>*</nowiki> ''Note that this value does not indicate the probability as a percentage. The probability in % can be obtained by dividing this value by the sum of the probabilities of all samples in the bank, then multiplying by 100.''
==== Bus ====
'''Description:''' Mixes down all audio streams fed to the "In" port to a single output


'''Input ports:'''
{| class="wikitable"
{| class="wikitable"
|+ Input Ports
! Name
! Name
! Type
! Type
! Description
! Description
|-
|-
| '''In'''
| Volume
| Audio
| Signal (toggleable)
| Accepts one or more audio streams
| Scaling factor applied to the gain of all samples in the bank
|-
| Volume variance
| Signal
| Maximum allowed deviation of specified volume in decibels (dB)
|-
| Pitch
| Signal (toggleable)
| Scaling factor applied to the pitch of all samples in the bank
|-
| Pitch variance
| Signal
| Maximum allowed deviation of specified pitch in semitones
|-
| Replacer
| Settings node
| Allows bank to be controlled by a Replacer
|-
| Offset
| Signal
| Length of playback offset of the sample in ms. Override offset defined in "bank" properties.
|-
| Silence
| Signal
| Length of silence added in front of the sample in ms
|-
| Fade In
| Signal
| Time in ms it takes before the sample reaches full volume
|-
|-
| '''Volume'''
| Sustain
| Signal
| Signal
| Volume modifier [dB]
| If the value is >0, the total playback length will become Fade In + Sustain + Fade Out
|-
|-
| '''DSP'''
| Fade Out
| Special-purpose node
| Signal
| Accepts a Filter or FilterChain
| Time in ms it takes before the sample fully fades out
|}
|}


'''Item detail:'''
{| class="wikitable"
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
| Fade Out
| Signal
| Time in milliseconds it takes before the sample fully fades out.
|}
==== Bus ====
Mixes down all audio streams fed to the "In" port to a single output.
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Category
! Attribute Name
! Name
! Description
! Description
! Value Range
! Range
|-
| General
| Channels
| Number of output channels
| [1, 8]
|-
| General
| Sample Rate
| Sample rate in Hertz
| Can be one of:
{{Columns|3|
* 8000
* 11025
* 16000
* 32000
* 44100
* 48000
* 64000
* 96000
* 192000
}}
|-
| General
| Volume D B
| Volume modifier in decibels (dB)
| [-60, 12]
|-
| General
| Resampler
| Resampling method for converting between different sample rates
* Point: No interpolation (fastest, least accurate)
* Linear: Interpolation (slower, but more accurate than point)
* FIR (4/8): FIR filter that implements resampling (slowest but most accurate)
| {{n/a}}
|-
| General
| Channel Volume
| If enabled, input ports controlling the volumes of each output channel become available.
{{Feature|informative|In order to work, a dedicated output channel amount must be selected in the "Channel" attribute. "Default" will not work.}}
| true/false
|-
|-
| rowspan="2" | Limitation
| Limitation
| '''Source Limit'''
| Enable Limitation
| Max number of inputs playing at a time. Quietest ones muted if limit exceeded.
| Enables Limitation and displays Limitation variables.
| [0, 255]
| true/false
|-
|-
| '''Source Limit Type'''
| Limitation
| Specifies when the '''Source Limit''' is evaluated
| Source Limit
|
| Max number of inputs allowed to play at the same time. Quietest ones are muted if the limit is exceeded.
* ''Static'': Limit is evaluated once at the beginning of playback
| [1, 255]
* ''Dynamic'': Limit is evaluated continuously during playback
|-
|-
| rowspan="4" | Unsorted
| Limitation
| '''Channels'''
| Source Limit Type
| Number of output channels
| Specifies how the Source Limit is evaluated
| [1, 8]
* Static: Limit is evaluated once at the beginning of playback
* Dynamic: Limit is evaluated continuously during playback
| {{n/a}}
|-
|-
| '''Sample Rate'''
| Limitation
| Sample rate [Hz]
| Volume Compensation
| {8000, 11025, 16000, 32000, 44100, 48000, 64000, 96000, 192000} Hz
| If enabled and a sound is discarded because of the Source Limit, the remaining sounds will receive a volume boost equal to the volume of the discarded sounds in order to preserve the input volume.
 
Example: Sound A is 1dB, B is 2dB, Source Limit is 1 (only one sound is allowed to play). Only B will play because it's louder, but it will play with a volume of 3dB. The 1dB volume of discarded A was added to the 2dB original volume of B.
| true/false
|-
|-
| '''Volume'''
| Variable
| Volume modifier [dB]
| Var Name
| [-60, 12] dB
| Defines which variable within the variables config file the bus feeds into.
 
Only available when a file is defined in Var Resource.
| {{n/a}}
|-
|-
| '''Resampler'''
| Variable
| Resampling method, for converting between different sample rates [1]
| Var Resource
|
| Filepath to Config file containing definitions of Variables
* ''Point'': No interpolation (fastest, least accurate) [2]
| {{n/a}}
* ''Linear'': Interpolation (slower, but more accurate than point) [2]
* ''FIR (4/8/16)'': FIR filter that implements resampling (slowest but most accurate) [3]
|}
|}


==== Sound ====
'''Description:''' The root node of a signal chain. Must be present in every chain in order for sound to be playable.
'''Input ports:'''
{| class="wikitable"
{| class="wikitable"
|+ Input Ports
! Name
! Name
! Type
! Type
! Description
! Description
|-
|-
| '''In'''
| In
| Audio
| Audio In
| Accepts the audio output from one or more branches
| Audio Input
|-
|-
| '''Volume'''
| Volume
| Signal
| Signal (toggleable)
| Volume modifier [dB]
| Scaling factor applied to the gain.
Hidden if per-channel volumes are activated.
|-
|-
| '''Trigger'''
| DSP
| Signal
| Settings node
| Accepts a signal whose value can be used to trigger playback of the sound
|-
| '''DSP'''
| Special-purpose node
| Accepts a Filter or FilterChain
| Accepts a Filter or FilterChain
|-
|-
| '''Master'''
| Volume0..7
| Sound node
| Signal (toggleable)
| Accepts a Sound node that controls the start/stop behavior of this node
| Scaling factor applied to the gain of the respective channels.
Only visible if per-channel volumes are activated and an output channel amount is specified.
|}
|}


'''Item detail:'''
{| class="wikitable"
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
| Out
| Audio Out
| {{n/a}}
|}
==== Sound ====
The root node of a signal chain. Must be present in every chain in order for sound to be playable in-game, as this node serves as the "identifier" for the engine.
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Category
! Attribute Name
! Name
! Description
! Description
! Value Range
! Range
|-
|-
| rowspan="4" | General
| General
| '''Volume'''
| Volume D B
| Volume modifier [dB]
| Volume modifier, in decibles (dB)
| [-60, 12] dB
| [-60, 60]
|-
|-
| '''Priority'''
| General
| Priority
| Factor that is taken into account when determining which sources to keep or destroy in case the limit of playing sources is exceeded. Sounds with lower priority are more likely to be destroyed than sounds with higher priority.
| Factor that is taken into account when determining which sources to keep or destroy in case the limit of playing sources is exceeded. Sounds with lower priority are more likely to be destroyed than sounds with higher priority.
| [0, 100]
| [0, 100]
|-
|-
| '''Delay Time'''
| General
| Delay time [ms] before sound is played
| Delay Time
| [0, 10000] ms
| Delay time in milliseconds before sound is played
| [0, 10000]
|-
|-
| '''No-Repeat Time'''
| General
| Time [ms] below which sound events with the same name will be ignored
| Even No Repeat Time
| [0, 1000] ms
| Time in milliseconds below which sound events with the same name will be ignored
| [0, 10000]
|-
|-
| rowspan="5" | Flags
| Flags
| '''Skip Inaudible'''
| No In Audible
| If enabled, sounds below the threshold of audibility are not played
| If enabled, sounds below the threshold of audibility are not played
| True/False
| true/false
|-
|-
| '''Bypass Volume Test'''
| Flags
| If enabled, volume is not considered when determining which sources to destroy in case the limit of playing sources is exceeded
| Bypass Volume Test
| True/False
| If enabled, volume is not considered when determining which sources to destroy in case the {{hl|.acp}} limit of playing sources is exceeded
| true/false
|-
|-
| '''Speed of Sound'''
| Flags
| Speed Of Sound Simulation
| Simulates delayed playback due to the speed of sound
| Simulates delayed playback due to the speed of sound
 
| true/false
''Warning'': only the playback start time is delayed - other sound-related parameters (i.e. signals and transformation) are not delayed which may cause a mismatch between audio and visuals.
| True/False
|-
|-
| '''Updating disabled'''
| Transformation
| Performance optimization: only Shader node is updated during playback; any other nodes in the chain remain in their "initialization" states.
| Transformation
| True/False
|-
| '''Early Reflections'''
| Simulates early reflections from this sound
| True/False
|-
| rowspan="3" | Transformation
| '''Transformation'''
| Specifies the position from which this sound is played
| Specifies the position from which this sound is played
| '''Entity:''' Sound is played from the position of the entity which the .acp file is attached to
|
* Entity: Sound is played from the position of the entity which the .acp file is attached to
* Bone: Sound is played from the bone specified in Bone Name on the entity which the .acp file is attached to
* Offset: Sound is played from the position of the entity with the specified offset applied. A Sound Point can be specified in Offset Name


'''Bone:''' Sound is played from the bone specified in '''Bone Name''' on the entity which the .acp file is attached to
{{Feature|important|"Bone" and "Offset" types need a SoundComponent on the entity in order to work.}}
|-
|-
| '''Bone Name'''
| Transformation
| Name of the bone on the entity on which sound is played (hidden if '''Transformation''' '''≠''' Bone)
| Static
| String
| If enabled, the sound does not move with the entity but remains static at the initial playback position.
| true/false
|-
|-
| '''Static'''
| Trigger
| If enabled, transformation is not updated during playback
| Type
| True/False
| Specifies how the sound is triggered
|
* Continuous: Sound is triggered and continues to repeat if the value of the signal connected to the Trigger port is different from 0.
* One shot: Sound is triggered once based on the values of Threshold and Reset.   
* Timer: Periodically triggers the sound event, the period is defined by the Time attribute or the signal connected to the Trigger port. If the Time is 0, the sound is not triggered.
|-
|-
| rowspan="3" | Trigger
| Trigger
| '''Type'''
| Threshold
| Trigger type
| Value that the signal connected to the Trigger port needs to exceed before sound is triggered
| '''Continuous:''' Sound is triggered and continues to repeat if the value of the signal connected to the '''Trigger''' port '''≠''' 0.
 
'''One shot:''' Sound is triggered once based on the values of '''Threshold''' and '''Reset.'''
|-
| '''Threshold'''
| Value that the signal connected to the '''Trigger''' port needs to exceed before sound is triggered
| Threshold >= Reset
| Threshold >= Reset
|-
|-
| '''Reset'''
| Trigger
| Value below which the signal needs to be before a new sound can be triggered
| Reset
| Value below which the signal needs to be before the sound can be triggered again
| Reset <= Threshold
| Reset <= Threshold
|-
|-
| Slave
| Slave
| '''Event Type'''
| Event Type
| If this sound is a slave (i.e. if the '''Master''' port is connected to another sound), this parameter defines its start/stop behavior in response to the master.
| If the sound is a slave (i.e. if the Master port is connected to another sound), this parameter defines its start/stop behavior in response to the master.
| '''Start-Stop:''' Slave starts/stops when Master starts/stops
|
* Start-Stop: Slave starts/stops when Master starts/stops
* OnStart-Start: Slave starts when Master starts
* OnStart-Stop: Slave stops when Master starts
|-
| Bounding Volume
| Type
| When different from None, sound position is moved to the closest point within the volume towards the camera.


'''OnStart-Start:''' Slave starts when Master starts
Amplitude and Spatiality is calculated towards this closest point.
|
* Sphere
* Box
* Cylinder
|-
| Variable
| Var Name
| Defines which variable within the variables config file the sound node feeds into.


'''OnStart-Stop:''' Slave stops when Master starts
Only available when a file is defined in Var Resource
| n/a
|-
| Variable
| Var Resource
| Filepath to Config file containing definitions of Variables
| {{n/a}}
|}
|}


==== Selector ====
'''Description:''' This node gives the user the ability to split the signal chain into multiple branches. On playback, the Selector will select one branch to connect to the chain, and leave the others disconnected based on the value of the control signal.
'''Input ports:'''
{| class="wikitable"
{| class="wikitable"
|+ Input Ports
|-
! Name
! Name
! Type
! Type
! Description
! Description
|-
|-
| '''Signal'''
| In
| Audio In
| Audio Input
|-
| Volume
| Signal (toggleable)
| Multiplier for the value defined in the Item Details
|-
| Trigger
| Signal
| Signal
| Control signal whose value decides which of the following ports will be selected
| Accepts a signal whose value can be used to trigger playback of the sound
|-
| DSP
| Settings node
| Accepts a Filter or FilterChain
|-
| Master
| Master/Slave system
| Accepts the Slave output of a Sound node
|-
|-
| (Varying number of user-defined ports)
| Priority
| Audio
| Signal
| The branch connected to this port becomes the output if the control signal falls within the '''Min/Max''' range defined for this port
| Input signal value is added to the value defined in the node.
|}
|}
'''Item detail:'''
 
{| class="wikitable"
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
| Out
| Audio Out
| Audio Output
|-
| Slave
| Master/Slave system
| Connects to the "Master" node of another sound node
|-
| Aux Out
| Aux Out
| Allows the audio signal to be routed into an Aux Out node
|}
==== Selector ====
This node gives the user the ability to split the signal chain into multiple branches.
On playback, the Selector will select one branch to connect to the chain, and leave the others disconnected based on the value of the input signal.
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Category
! Attribute Name
! Name
! Description
! Description
! Value Range
! Range
|-
|-
| rowspan="4" | Ports
| Ports
| '''Min'''
| Min
| Lower bound of this port's range
| Lower bound of this port's range
| (Unlimited)
| {{n/a}}
|-
|-
| '''Max'''
| Ports
| Max
| Upper bound of this port's range
| Upper bound of this port's range
| (Unlimited)
| {{n/a}}
|-
|-
| '''Volume'''
| Ports
| Volume modifier [dB] applied to the branch connected to this port
| Volume
| [-60, 12] dB
| Volume modifier in decibels applied to the branch connected to this port
| [-60, 12]
|-
|-
| '''Default'''
| Ports
| If enabled, this port will be selected if the control signal does not fall within the range of any of the ports
| Default
| True/False
| If enabled, this port will be selected if the input signal does not fall within the range of any of the ports
| true/false
|}
|}


==== Generator ====
'''Description:''' Outputs a variety of different waveforms as audio. Used primarily for testing/prototyping purposes.
'''Input ports:'''
{| class="wikitable"
{| class="wikitable"
|+ Input Ports
! Name
! Name
! Type
! Type
! Description
! Description
|-
|-
| '''Time'''
| Signal
| Signal
| Controls the '''Time''' parameter
| Signal
| Control signal whose value decides which of the following ports will be selected
|-
| ''User-defined ports''
| Audio
| The branch connected to this port becomes the output if the control signal falls within the Min/Max range defined for this port
|}
|}


'''Item detail:'''
{| class="wikitable"
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
| Out
| Audio Out
| Audio Output
|}
==== Generator ====
Outputs a variety of different waveforms as audio. Used primarily for testing/prototyping purposes.
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Category
! Attribute Name
! Name
! Description
! Description
! Value Range
! Range
|-
|-
| rowspan="7" | Default
| General
| '''Function'''
| Function
| Specifies the function/shape of the waveform that is output
| Specifies the function/shape of the generated waveform
|
| Can be one of:
{{Columns|4|
* Sine
* Sine
* Square
* Square
Line 454: Line 694:
* White noise
* White noise
* Pink noise
* Pink noise
* Brownian noise
* Brown noise
* Silence
* Silence
* Pulse
* One
}}
|-
|-
| '''Channels'''
| General
| Channels
| Number of output channels
| Number of output channels
| (Unlimited)
| [1, 8]
|-
|-
| '''Sample Rate'''
| General
| Sample rate [Hz]
| Sample Rate
| {8000, 11025, 16000, 32000, 44100, 48000, 64000, 96000, 192000} Hz
| Sample rate in Hertz
| Can be one of:
{{Columns|3|
* 8000
* 11025
* 16000
* 32000
* 44100
* 48000
* 64000
* 96000
* 192000
}}
|-
|-
| '''Time'''
| General
| Length of time [ms] that the sound lasts
| Time
| [0, 10000] ms
| Length of time in milliseconds that the sound lasts
| [0, 10000]
|-
|-
| '''Volume'''
| General
| Volume modifier [dB]
| Volume D B
| [-60, 12] dB
| Volume modifier in decibels (dB)
| [-60, 60] dB
|-
|-
| '''Loop Count'''
| General
| Number of times that the sound is repeated
| Loop Count
| Number of times that the generated sound is repeated
| [0, 255]
| [0, 255]
|-
|-
| '''Frequency'''
| General
| Frequency of the tone (hidden if not applicable to the '''Type''')
| Frequency
| Frequency of the tone.
{{Feature|important|Hidden if not applicable to the Type.}}
| [1, 20000]
| [1, 20000]
|-
|-
| rowspan="4" | Envelope
| General
| '''Attack Curve'''
| Termination fade out
| Defines the curvature/shape of the attack ''(fade in)''.
| Fade out [ms] applied when source is terminated during playback
|
| [0, 10000]
* ''Linear''
|-
* ''SCurve''
| Envelope
| Attack Shape
| Defines the curvature / shape of the attack (fade in)
| Defines the "shape" of the volume change during fade-in
 
{{Link|https://www.desmos.com/calculator/s7z4sji5b5}}
 
* Linear: Curve is linear
* SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
* Cos: Curve is "S-shaped", similar to SCurve
* EPower (Equal Power) : If fade in and fade out happen at the same time, the equal power curve will ensure there's no "hole" in the overall volue (fade in * fade in + fade out * fade out = 1)
* Exp: Exponential curve (gets steeper over time)
* Quadratic:
|-
| Envelope
| Attack
| Length of the attack [ms] to reach the desired volume
 
{{Feature|important|If any of A/S/R is different from 0 then envelope is applied.}}
| [0, 10000]
|-
| Envelope
| Sustain
| Time [ms] of Sustain
 
{{Feature|important|If any of A/S/R is different from 0 then envelope is applied.}}
| [0, 10000]
|-
| Envelope
| Release Shape
| Defines the curvature / shape of the release (fade out)
| Defines the "shape" of the volume change during fade-out. Shapes are the same as attack shapes, but inverted.
 
* Linear: Curve is linear
* SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
* Cos: Curve is "S-shaped", similar to SCurve
* EPower (Equal Power) : If fade in and fade out happen at the same time, the equal power curve will ensure there's no "hole" in the overall volue (fade in * fade in + fade out * fade out = 1)
* Exp: Exponential curve (gets steeper over time)
* Quadratic:
|-
| Envelope
| Release
| Length of the release [ms] to "fade out" after the generator time
{{Feature|important|If any of A/S/R is different from 0 then envelope is applied.}}
| [0, 10000]
|}
 
{| class="wikitable"
|+ Input Ports
! Name
! Type
! Description
|-
|-
| '''Attack Time'''
| Volume
| Length of the attack to reach the desired volume.
| Signal (toggleable)
| [0, 10000] ms
| Scaling factor applied to the gain
|-
|-
| '''Release Curve'''
| Time
| Defines the curvature/shape of the release ''(fade out)''.
| Signal
|
| Length of time in milliseconds that the sound lasts
* ''Linear''
|-
* ''SCurve''
| Frequency
| Signal (toggleable)
| Frequency of the tone
|}
 
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
|-
| '''Release Time'''
| Out
| Length of the release to ''"fade out"'' after the generator time.
| Audio Out
| [0, 10000] ms
| Audio Output
|}
|}


==== Constants ====
==== Constants ====
'''Description:''' A set of constant signal values
Allows to create static values that can be connected to input ports that take signal inputs.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Name
! Description
! Range
|-
| Ports
| Value
| The value of each respective port
| {{n/a}}
|}
 
No input ports.
 
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
| Variable amount of output ports
| Signal
| Outputs value specified in the item attributes
|}


==== Shader ====
==== Shader ====
'''Description:''' Applies panning and attenuation based on the spatial relation between the in-game listener and emitter
Applies panning and attenuation based on the spatial relation between the in-game listener and sound emitter.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Name
! Description
! Range
|-
| General
| Reverse Panning
| If enabled, the panning applied by the Shader is reversed (i.e. sounds coming from the left are panned to the right and vice-versa)
| true/false
|-
| General
| ITD
| If enabled, a short delay is applied to one channel based on the spatial relation between the listener and emitter.
This simulates the interaural time difference (ITD) that humans rely on for localising sounds.
{{Feature|informative|ITD is only applied if headphones mode is enabled in the game's settings, as this happens naturally when using speakers.}}
| true/false
|}


'''Input ports:'''
{| class="wikitable"
{| class="wikitable"
|+ Input Ports
! Name
! Name
! Type
! Type
! Description
! Description
|-
|-
| '''In'''
| In
| Audio
| Audio In
| Accepts the audio output from one or more branches
| Audio Input
|-
| Spatiality
| Settings node
| Accepts a {{Link|#Spatiality}} node that defines the spatial factor (i.e. the blend between the unprocessed and panned versions of the sound) based on the distance / spatial relation between the listener and sound emitter
|-
|-
| '''Spatial factor'''
| Amplitude
| Special-purpose node
| Settings node
| Accepts a Spatiality node that defines how spatiality is applied based on the distance/spatial relation between the listener and emitter
| Accepts an {{Link|#Amplitude}} node that defines how amplitude attenuation is applied based on the distance between the listener and sound emitter
|-
|-
| '''Amplitude'''
| Frequency
| Special-purpose node
| Settings node
| Accepts an Amplitude node that defines how amplitude attenuation is applied based on the distance/spatial relation between the listener and emitter
| Accepts a {{Link|#Frequency}} node that defines how frequency attenuation is applied based on the distance between the listener and sound emitter
|-
|-
| '''Frequency'''
| DSP
| Special-purpose node
| Settings node
| Accepts a Frequency node that defines how frequency attenuation is applied based on the distance/spatial relation between the listener and emitter
| Accepts a {{Link|#Filter}} or {{Link|#FilterChain}} node
|-
|-
| '''Incident angle (azimuth)'''
| Incident angle (azimuth)
| Signal
| Signal (toggleable)
| This port can be used to define the direction that the sound is perceived to be coming from. Utilizing this feature overrides the default panning calculated from the positions of the listener and emitter.
| This port can be used to define the direction that the sound is perceived to be coming from.
The value of the input is assumed to be in radians with a counter-clockwise rotation convention. This port is hidden unless '''Override Panning''' is enabled.
Using this feature overrides the default panning calculated from the positions of the listener and emitter.
The value of the input is assumed to be in radians with a counter-clockwise rotation convention.
|}
|}


'''Item detail:'''
{| class="wikitable"
{| class="wikitable"
! Category
|+ Output Ports
! Attribute Name
! Name
! Type
! Description
! Description
! Value Range
|-
| rowspan="3" | Unsorted
| '''Spatial Factor'''
| Blending factor between how "positional" the sound is; set to 0 no spatial processing is applied, while set to 1 the sound is processed with panning and attenuation to sound fully positional.
| [0, 1]
|-
|-
| '''Attenuate Ambient'''
| Out
| If enabled, non-positional sounds ('''Spatial Factor''' = 0) are still attenuated with distance.
| Audio Out
| True/False
| Audio Output
|-
| '''Override Panning'''
| If enabled, a new input port is added that allows the user to override the default panning calculated from the positions of the listener and emitter.
| True/False
|}
|}


==== Amplitude ====
==== Amplitude ====
'''Description:''' Special-purpose node designed for use with Shader. Contains the parameters that control the degree of amplitude attenuation that is applied by the Shader.
Settings node designed for use with {{Link|#Shader}}.
Contains parameters that control the degree of amplitude attenuation that is applied by the Shader.


'''Item detail:'''
{| class="wikitable align-center-col-4"
{| class="wikitable"
|+ Attributes
! Category
! Category
! Attribute Name
! Name
! Description
! Description
! Value Range
! Range
|-
|-
| Unsorted
| Amplitude
| '''Curve'''
| Curve
| Defines how the attenuation changes with distance - that is, the function that the attenuation vs. distance curve adheres to
| Defines how the attenuation changes with distance - that is, the function that the attenuation vs. distance curve adheres to.
|
|
{{Columns|2|
* Linear
* Linear
* SCurve
* SCurve
* Logarithm
* Logarithm
* 1/r
* 1/r
|}
* Custom
}}
|-
| Amplitude
| Inner Range
| Distance in metres defining a radius around the emitter in which no volume attenuation occurs
| [0, 100]
|-
| Amplitude
| Outer Range
| Distance in metres at which the sound becomes fully muted. Fade-in starts at the end of the Inner Range
| [0, 10000]
|-
| Amplitude
| Slope Factor
| Factor at which the curve slopes. 100 makes the curve linear.
 
Only available for the "1/r" Curve type
| [0, 100]
|-
| Amplitude
| Attenuation Curve
| Allows to plot a custom attenuation curve within the Curve Editor.
 
Only available for the "Custom" Curve type
| {{n/a}}
|-
| Directivity
| Enable Directivity
| If enabled, a Directivity Curve can be set.
| true/false
|-
| Directivity
| Directivity Curve
| Sets the directivity curve which allows to attenuate sound based on the directivity factor.
The directivity factor is based on the relative direction from the listener to the emitter.


==== Frequency ====
Directivity factor is:
'''Description:''' Special-purpose node designed for use with Shader. Contains the parameters that control the degree of frequency attenuation that is applied by the Shader.
* 1 if listener is directly in front of the emitter,
* 0 if directly behind the emitter.
* 0.5 if 90° from it (left or right)


From a physical standpoint, this node models the attenuation of high frequencies due to:
{{Feature|important|Only visible if Enable Directivity is enabled.}}
| {{n/a}}
|-
| Variable
| Var Name
| Defines which variable within the variables config file the amplitude node feeds into.
{{Feature|important|Only available when a file is defined in Var Resource.}}
| n/a
|-
| Variable
| Var Resource
| Filepath to Config file containing definitions of Variables
| {{n/a}}
|}


# ''Distance'' between the listener and emitter
No input ports.
# ''Directivity'' of the emitter: the degree to which the "clarity" of the sound produced by the emitter changes based on the direction it's facing with respect to the listener; sound is most clear when the emitter is facing the listener and least clear when the emitter is facing away from the listener.


'''Input ports:'''
{| class="wikitable"
{| class="wikitable"
|+ Output Ports
! Name
! Name
! Type
! Type
! Description
! Description
|-
|-
| '''Directivity factor'''
| Out
| Signal
| Audio Out
| Controls the '''Directivity Factor''' parameter
| Audio Output
|}
|}


'''Item detail:'''
==== Frequency ====
{| class="wikitable"
Settings node designed for use with {{Link|#Shader}}.
Contains parameters that control the degree of frequency attenuation that is applied by the Shader.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Category
! Attribute Name
! Name
! Description
! Description
! Value Range
! Range
|-
|-
| General
| General
| '''Dynamic Update'''
| Dynamic Update
| If enabled, the filter is updated during playback
| If enabled, the filter settings are updated during playback
|
| true/false
* Linear
* SCurve
* Logarithm
* 1/r
|-
|-
| rowspan="8" | Distance Attenuation
| Distance Attenuation
| '''Enable'''
| Enable Distance Att
| If enabled, low-pass filtering due to distance attenuation is applied
| If enabled, filtering due to distance attenuation is applied
| True/Flase
| true/false
|-
|-
| '''Type'''
| Distance Attenuation
| Type
| Type of filter applied
| Type of filter applied
|
|
* ''AirAbsorption'': Applies a custom filter that models the physical effect of distance on the frequency content of sound propagating through air
* AirAbsorption: Applies a custom filter that models the physical effect of distance on the frequency content of sound propagating through air. Deatiled information here.
* ''Lowpass'': Applies a generic lowpass filter with tweakable parameters that allows for greater flexibility, but is physically less accurate
* AirAbsorbtionLite: Combination of biquad low pass and variable roll of low pass filter that models the physical effect of distance on the frequency content of sound propagating through air.
* Lowpass: Applies a generic lowpass filter with tweakable parameters. Greater flexbility in Sound Design, but for Air Absorption less physically accurate than the dedicated filter models.
|-
|-
| '''Filter Strength''' (AirAbsorption only)
| Distance Attenuation
| Scaling factor for AirAbsorption filter
| Filter Strength (AirAbsorption models only)
| [0, 2]
| Scaling factor for AirAbsorption filter.
{{Feature|important|Only available if the "AirAbsorption" or "AirAbsortionLite" Type is selected.}}
| [0, 4]
|-
|-
| '''Inner Range''' (Lowpass only)
| Distance Attenuation
| Distance [m] at which the filter's cutoff frequency is at the maximum value specified by '''Cutoff Max'''
| Inner Range
| [0, 100] m
| Distance in metres up tp which the filter's cutoff frequency remains at the maximum value specified by Cutoff Max
{{Feature|important|Only available if the "LowPass" Type is selected.}}
| [0, 100]
|-
|-
| '''Outer Range''' (Lowpass only)
| Distance Attenuation
| Distance at which the filter's cutoff frequency is at the minimum value specified by '''Cutoff Min'''
| Outer Range
| [0, 10000] m
| Distance in metres at which the filter's cutoff frequency is at the minimum value specified by Cutoff Min
{{Feature|important|Only available if the "LowPass" Type is selected.}}
| [0, 10000]
|-
|-
| '''Slope Factor''' (Lowpass only)
| Distance Attenuation
| Slope Factor
| Controls the slope of the filter; analogous to the "Q factor" of the filter
| Controls the slope of the filter; analogous to the "Q factor" of the filter
{{Feature|important|Only available if the "LowPass" Type is selected.}}
| [0.01, 100]
| [0.01, 100]
|-
|-
| '''Cutoff Max''' (Lowpass only)
| Distance Attenuation
| Maximum cutoff frequency of the filter when distance <= '''Inner Range'''
| Cutoff Max
| [100, 16000] Hz
| Maximum cutoff frequency of the filter when distance <= Inner Range
{{Feature|important|Only available if the "LowPass" Type is selected.}}
| [100, 16000]
|-
|-
| '''Cutoff Min''' (Lowpass only)
| Distance Attenuation
| Minimum cutoff frequency of the filter when distance >= '''Outer Range'''
| Cutoff Min
| [100, 16000] Hz
| Minimum cutoff frequency of the filter when distance >= Outer Range
{{Feature|important|Only available if the "LowPass" Type is selected.}}
| [100, 16000]
|-
|-
| rowspan="3" | Directivity
| Directivity
| '''Enable'''
| Enable
| If enabled, low-pass filtering due to source directivity is applied
| If enabled, low-pass filtering due to source directivity is applied.
| True/False
Activates the Directivity input port.
| true/false
|-
|-
| '''Cutoff Frequency'''
| Directivity
| Cutoff frequency of the directivity filter
| Directivity Factor
| [100, 250] Hz
|-
| '''Directivity Factor'''
| The degree to which sound is affected by the filter (0 = no filtering)
| The degree to which sound is affected by the filter (0 = no filtering)
| [0, 1]
| [0, 1]
|-
| Terrain Effects
| Terrain Effects
| Enables occlusion caused by the terrain.
{{Feature|important|The terrain needs to have a generated SoundMap for it to work.}}
| true/false
|}
|}


==== Filter ====
{| class="wikitable"
'''Description:''' Special-purpose node that applies a specified DSP effect to the node (Sound or Bus) that it is connected to
|+ Input Ports
! Name
! Type
! Description
|-
| Directivity Factor
| Signal (toggleable)
| The degree to which sound is affected by the filter (0 = no filtering, 1 0 full filtering.)
{{Feature|important|Only becomes visible when Directivity is enabled in the node's Item Attributes.}}
|-
| Rolloff
| Signal (toggleable)
| Roloff of the filter
|-
| Cutoff Frequency
| Signal (toggleable)
| Cutoff Frequency of the filter.
{{Feature|important|Settings via input ports will not override the node's settings, but rather stack with them.}}
|}


'''Input ports:'''
{| class="wikitable"
{| class="wikitable"
|+ Output Ports
! Name
! Name
! Type
! Type
! Description
! Description
|-
|-
| '''Wet/Dry'''
| Out
| Settings node
| Frequency output to be used on the Shader's Frequency input.
|}
 
==== Spatiality ====
Settings node designed for use with {{Link|#Shaders}}.
The purpose of this node is to provide the connected Shader(s) with a Spatial Factor value that controls how spatialised the output from the Shader(s) are.<br>
This Spatial Factor controls the blending between unprocessed and spatialised (i.e. panned) sound.
A value of 0 informs the connected Shader that no panning should be applied while a value of 1 indicates that the sound should be fully panned.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Name
! Description
! Range
|-
| Spatiality
| Spatial Factor Source
| Defines where the spatial factor is taken from.
 
See the Spatial Factor Sources table below for more details.
|
* Value
* Curve
* Signal
* AzimuthCurve
|-
| Spatiality
| Value
| When this option is selected, the spatial factor is defined by a constant value in the range [0, 1]
{{Feature|important|Only available when the "Value" Spatial Factor Source is selected.}}
| [0, 1] defined as static value
|-
| Spatiality
| Curve
| When this option is selected, the Curve Editor becomes available, in which the user can define the relationship between the distance to the sound emitter and the spatial factor.
 
Only available when the "Curve" Spatial Factor Source is selected.
| [0, 1] defined in Curve Editor
|-
| Spatiality
| Signal
| Signal
| Controls the '''Wet/Dry''' parameter
| When this option is selected, the spatial factor is defined by the value of the signal connected to the Spatial Factor input port which becomes available.
Only available when the "Signal" Spatial Factor Source is selected.
| [0, 1] from Spatial Factor signal input
|-
| Spatiality
| AzimuthCurve (Curve0, Curve90)
| Same as "Curve", but using two different curves.
Curve0 defines the Spatial Factor for when the sound emitter is directly in front or behind the listener,
Curve90 defines the Spatial Factor for when the sound emitter is directly to the left or right of the emitter.
The Spatial Factor will interpolate for angles in between.
Only available when the "AzimuthCurve" Spatial Factor Source is selected.
| [0, 1] defined in Curve Editor
|}
 
{| class="wikitable"
|+ Input Ports
! Name
! Type
! Description
|-
|-
| '''Volume'''
| Spatial Factor
| Audio
| Signal (toggleable)
| The branch connected to this port becomes the output if the control signal falls within the '''Min/Max''' range defined for this port
| The degree to which sound is spatialised.
{{Feature|important|Only becomes visible when the "Signal" Spatial Factor Source type is selected in the node's Item Attributes.}}
|}
|}


'''Item detail:'''
{| class="wikitable"
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
| Out
| Settings node
| Spatiality output to be used on the Shader's Spatiality input.
|}
==== FilterChain ====
Enables the grouping of multiple DSP nodes together in series. The individual DSP effects are applied in the order that they are connected to the FilterChain.
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Category
! Attribute Name
! Name
! Description
! Description
! Value Range
! Range
|-
|-
| rowspan="3" | Unsorted
| General
| '''Wet/Dry'''
| Ports
| Amount of available input ports
| [2, 16]
|}
 
{| class="wikitable"
|+ Input Ports
! Name
! Type
! Description
|-
| ''User-defined ports''
| Settings node
| Accepts a Filter output
|}
 
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
| Out
| Settings node
| To be used in another node's DSP input.
|}
 
==== Filter ====
Settings node that applies a specified DSP effect to the node(s) to which it is connected.
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Name
! Description
! Range
|-
| General
| Wet Dry
| Blend of the dry (unprocessed) and wet (processed) versions of the input sound
| Blend of the dry (unprocessed) and wet (processed) versions of the input sound
| [0, 1]
| [0, 1]
|-
|-
| '''Volume'''
| General
| Volume modifier [dB]
| Volume
| Volume modifier (decibels)
| [-60, 12]
| [-60, 12]
|-
|-
| '''DSP Effect'''
| General
| Stores the parameters of one of the DSP Effects listed in the '''DSP Effects''' table
| DSP Object
| (See: '''DSP Effects''')
| Class of the DSP effect to be used
| {{n/a}}
|}
|}


'''DSP Effects:'''
{| class="wikitable"
{| class="wikitable"
! DSP Type
|+ Input Ports
! Name
! Type
! Description
! Description
! Attribute Name
|-
| Wet Dry
| Signal (toggleable)
| Blend of the dry (unprocessed) and wet (processed) versions of the input sound [0, 1]
|-
| Volume
| Signal (toggleable)
| Scaling factor applied to the gain
|}
 
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
! Description
! Value Range
|-
|-
| '''Base'''
| Out
| Abstract type that all DSP effects inherit from
| Audio Out
| n/a
| Audio Output
| n/a
|}
| n/a
 
==== Playlist ====
Inputs connected to this node will play in sequence, according to the order in which they are connected to it.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Name
! Description
! Range
|-
| Unsorted
| Ports
| Amount of available input ports
| [1, 16]
|}
 
{| class="wikitable"
|+ Input Ports
! Name
! Type
! Description
|-
| ''User-defined ports''
| Audio In
| Audio Input
|}
 
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
|-
| rowspan="4" | '''Biquad'''
| Out
| rowspan="4" | Biquad filter [4]
| Audio Out
| '''Biquad Type'''
| Audio Output
| Type of filter
|}
|
 
* LowPass
==== Replacer ====
* HighPass
Settings node designed to be used with the Replacer input ports of {{Link|#BankLocal|Banks}}. Enables the user to replace a string in the filepaths of all samples in the connected Bank.
* BandPass
 
* Notch
{| class="wikitable align-center-col-4"
* PeakingEQ
|+ Attributes
* LowShelf
! Category
* HighShelf
! Name
* AllPass
! Description
! Range
|-
|-
| '''Fc'''
| Strings
| Cutoff/center frequency of the filter
| String to replace
| [20, 16000]
| The string, searched for in the filepaths of all samples in the connected Bank, that we wish to replace.
| {{n/a}}
|-
|-
| '''Q'''
| Strings
| Factor that controls the slope of the filter shape
| Replacement strings
| [0.1, 20]
| A list of candidate replacement strings and signal value pairs.
A Replacement string from the list replaces String to replace in the filepaths of the connected bank's samples if its corresponding signal value matches that of the Control signal.
| 0..64 entries
|}
 
{| class="wikitable"
|+ Input Ports
! Name
! Type
! Description
|-
|-
| '''Gain''' ''(PeakingEQ, LowShelf, HighShelf'', and ''AllPass'' only)
| Control Signal
| Gain [dB] of the filter
| Signal
| [-18, 18]
| Signal which will be evaluated in Replacement strings.
|}
 
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
|-
| '''BitCrusher'''
| Out
| Introduces distortion by reducing the bit depth of the audio input to 8-bit [5]
| Settings node
| '''Bit Mask'''
| To be used in a Bank's Replacer input port.
| An 8-digit string of '0's or '1's that specifies which of the 8 bits of the bit-crushed signal should be "enabled" (1) or "disabled" (0)
|}
| String
 
==== Stream ====
Abstract node used for connecting streaming audio (e.g voice chat) to a signal chain created in the Audio Editor.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Name
! Description
! Range
|-
|-
| rowspan="7" | '''Compressor'''
| General
| rowspan="7" | Implements dynamic range compression; reduces the volume of the input signal if the specified threshold value is exceeded [6]
| ID
| '''Threshold'''
| ID string corresponding to the target stream ID defined in gamecode.
| Threshold value of the input level above which the gain begins to be reduced
| {{n/a}}
| [-50, 0] dB
|}
 
No input ports.
 
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
|-
| '''Ratio'''
| Out
| Specifies the value of ''n'' in the ratio ''n'':1. This value controls the amount of gain reduction (e.g. a ratio of 2:1 tells us that if the input signal is 2 dB over the value of '''Threshold''', the resulting output level is reduced to 1 dB).
| Audio out
| [1, 50]
| Audio Output.
{{Feature|important|Cannot be connected to Selectors or Playlists due to the nature of the node.}}
|}
 
==== AuxOut ====
Accepts one or more {{Link|#Sound}} nodes as input and routes the output of those node(s) to the connected {{Link|#Mixer}} port.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Name
! Description
! Range
|-
|-
| '''Attack'''
| General
| Specifies the amount of time [ms] that the output level takes to reach the value defined by '''Ratio'''
| Volume
| [1, 1000] ms
| Volume in decibels (dB), applied to all samples in the bank
| [-60, +60]
|-
|-
| '''Release'''
| General
| Specifies the amount of time [ms] that the compressor takes to "undo" gain reduction in the case that the signal level has decreased
| Mono Mix
| [1, 1000] ms
| Value between 0 and 1 that controls the mix between the unaltered output and a mono-downmixed version of the output
| [0, 1]
|}
 
{| class="wikitable"
|+ Input Ports
! Name
! Type
! Description
|-
|-
| '''Knee Width'''
| Sound
| Controls the sharpness of the compressor's "knee"
| Sound node
| [0, 20]
| The output from the sound node(s) connected to this port will be mixed down and sent to the output.
|-
|-
| '''Makeup Gain'''
| Volume
| Additional gain applied to the output signal. Typically used to compensate for the reduction in gain by the compressor.
| Signal (toggleable)
| [-24, 24]
| Scaling factor applied to the output gain.
|-
|-
| '''Clip'''
| Mono Mix
| If enabled, the amplitude of the output signal is clipped to the range [-1, 1]
| Signal (toggleable)
| True/False
| Value between 0 and 1 that controls the mix between the unaltered output and a mono-downmixed version of the output.
|-
|-
| '''Limiter'''
| DSP
| Same as Compressor, but with Ratio set to ∞
| Settings node
| (Same as Compressor)
| Accepts a {{Link|#Filter}} or {{Link|#FilterChain}} node.
|
|}
|
 
{| class="wikitable"
|+ Output Ports
! Name
! Type
! Description
|-
|-
| '''Noise Gate'''
| Out
| Mutes the input signal if its level is below the specified '''Threshold'''
| Audio out
| '''Threshold'''
| Audio Output to be connected with a Mixer node.
| Threshold value of the input level below which the signal is muted
| [-50, 0] dB
|}
|}


==== FilterChain ====
==== Variable ====
'''Description:''' Enables the grouping of multiple DSP nodes together in series. The individual DSP effects are applied in the order that they are connected to the FilterChain.
Abstract node that outputs the value of a specified {{Link|Arma Reforger:Audio Editor: Audio Variables|audio variable}}.


'''Input ports:''' Variable depending on the value of the '''Ports''' parameter
{| class="wikitable align-center-col-4"
|+ Attributes
! Category
! Name
! Description
! Range
|-
| General
| Curve
| Opens the Curve Editor, in which a relation between variable value and output signal can be set.
| {{n/a}}
|-
| Variable
| Var Name
| Defines which variable within the variables config file the node reads from.
{{Feature|important|Only available when a file is defined in Var Resource.}}
| {{n/a}}
|-
| Variable
| Var Resource
| Filepath to Config file containing definitions of variables.
| {{n/a}}
|}


==== Replacer ====
No input ports.
'''Description:''' Special-purpose node designed to be used with Banks; enables the user to replace a string, if present, in the filepaths of all samples in the connected Bank.


'''Input ports:'''
{| class="wikitable"
{| class="wikitable"
|+ Output Ports
! Name
! Name
! Type
! Type
! Description
! Description
|-
|-
| '''Control signal'''
| Out
| Signal
| Signal
| Controls what the '''String to replace''' should be replaced with
| Signal value output (float)
|}
 
 
== Signal Editor Node Types ==
 
{| class="valign-top"
|
{{TOC|subtoc
|title= Groups
|content=
* {{Link|#Interfacing Nodes}}
* {{Link|#Value-Generating Nodes}}
* {{Link|#Math Operators and Logic Nodes}}
* {{Link|#Exponential Group Nodes}}
* {{Link|#Conversion Group Nodes}}
* {{Link|#Saturation Group Nodes}}
* {{Link|#Trigonometric Group Nodes}}
}}
|
{{TOC|subtoc
|title= Nodes
|content=
{{Columns|6|
* {{Link|#Input}}
* {{Link|#Output}}
* {{Link|#Value}}
* {{Link|#Variable}}
* {{Link|#Random}}
* {{Link|#Generator 2|Generator}}
* {{Link|#Time}}
* {{Link|#LFO}}
* {{Link|#Curve Modulator}}
* {{Link|#Square Modulator}}
* {{Link|#Sum}}
* {{Link|#Sub}}
* {{Link|#Mul}}
* {{Link|#Div}}
* {{Link|#Remainder}}
* {{Link|#Mod}}
* {{Link|#Min}}
* {{Link|#Max}}
* {{Link|#Abs}}
* {{Link|#Pow}}
* {{Link|#Cond}}
* {{Link|#Converter}}
* {{Link|#Interpolate}}
* {{Link|#Env}}
* {{Link|#Smoother}}
* {{Link|#Average}}
* {{Link|#Filter 2|Filter}}
* {{Link|#Delta}}
* {{Link|#Exp}}
* {{Link|#Ln}}
* {{Link|#Log2}}
* {{Link|#Log10}}
* {{Link|#Db2Gain}}
* {{Link|#Gain2Db}}
* {{Link|#St2Gain}}
* {{Link|#Gain2St}}
* {{Link|#Freq2Oc}}
* {{Link|#Freq2Mel}}
* {{Link|#Mel2Freq}}
* {{Link|#Floor}}
* {{Link|#Ceil}}
* {{Link|#Round}}
* {{Link|#Clamp}}
* {{Link|#ClampMin}}
* {{Link|#ClampMax}}
* {{Link|#Sin}}
* {{Link|#Cos}}
* {{Link|#Tan}}
* {{Link|#ASin}}
* {{Link|#ACos}}
* {{Link|#ATan}}
}}
}}
|}
|}


'''Item detail:'''
=== Interfacing Nodes ===
{| class="wikitable"
 
! Category
==== Input ====
! Attribute Name
Creating an Input node will automatically create a corresponding input port on the Signal node within the {{Link|Arma Reforger:Audio Editor}}.
It allows the usage of game data within the Signal Editor in two ways:
 
* Inside the Audio Editor, another node can be connected to the {{Link|#Signal}} node's inputs ports. The corresponding Input nodes within the Signal will then use the value passed from the connected node.
* Giving an Input node the same name as a Signal passed via script or present on the connected entity's SignalsManagerComponent will automatically cause the node to use the respective values.<br><!--
-->e.g naming an Input node "Distance" will result in that it returns the distance from the listener to the entity.
 
; Naming Conventions
Input nodes that are designed to be fed from {{Link|#Constants}} nodes will be NAMED_IN_ALLCAPS.
The respective Constant output ports get the exact same name.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
| Global
| If true and the {{hl|.acp}} file using the Signal is attached to a SoundComponent, the signal name will be looked up in the list of global game signals instead of the connected entity.
| true/false
| {{Icon|unchecked}}
|}
 
==== Output ====
Creating an Output node will automatically create a corresponding output port on the Signal node within the {{Link|Arma Reforger:Audio Editor}}.
It allows the usage of data processed within the Signal Editor to be used within the Audio Editor.
 
No attributes.
 
=== Value-Generating Nodes ===
 
==== Value ====
The Value node will always output a single, specified value.
{{Feature|informative|For readability, it can make sense to change the node's name or comment to the specified value.}}
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
| Value
| The value the node is supposed to output.
| [-9223372036854775808, 9223372036854775808]
| {{Icon|unchecked}}
|}
 
==== Variable ====
The Variable node outputs the current Value of an audio variable.<!-- TODO: link -->
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
| Var Name
| Defines which variable from within the Variable Resource the node will output.
| {{n/a}}
| {{Icon|unchecked}}
|-
| Var Resource
| Defines which Variable config file will be accessed.
| {{n/a}}
| {{Icon|unchecked}}
|}
 
==== Random ====
The Random node will output a random number within a specified min/max range.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Description
! Value Range
! Range
! Input port
|-
|-
| rowspan="2" | Strings
| Min
| '''String to replace'''
| Minimum value that can be generated.
| The string, searched for in the filepaths of all samples in the connected Bank, that we wish to replace
| [-9223372036854775808, 9223372036854775808]
| String
| {{Icon|unchecked}}
|-
|-
| '''Replacement strings'''
| Max
| A list of candidate replacement strings and signal value pairs. A '''Replacement string''' from the list replaces '''String to replace''' in the filepaths of the connected bank's samples if its corresponding signal value matches that of the '''Control signal'''.
| Maximum value that can be generated.
| n/a
| [-9223372036854775808, 9223372036854775808]
| {{Icon|unchecked}}
|-
| Update Rate
| Defines the rate at which the node will generate random values.
|
* Every Get: generate a random value on each request (Could be multiple times per frame).
* Every OnFrame: generate a random value once per frame.
* Once: generate a random value once and then continue outputting it on every successive get.
| {{Icon|unchecked}}
|}
|}


==== Stream ====
==== Generator ====
'''Description:''' Abstract node used for connecting streaming audio (e.g. voice chat) to a signal chain created in the audio editor
The Generator node generates "impulses" of a specified Value in one frame in specified intervals.


'''Item detail:'''
{| class="wikitable align-center-col-4"
{| class="wikitable"
|+ Attributes
! Category
! Name
! Attribute Name
! Description
! Description
! Value Range
! Range
! Input port
|-
| Value To Generate
| The value which will be generated.
| [-9223372036854775808, 9223372036854775808]
| {{Icon|unchecked}}
|-
|-
| Unsorted
| Interval
| '''ID'''
| The interval in milliseconds between each value generation.
| ID string corresponding to the target stream ID defined in gamecode
| [-9223372036854775808, 9223372036854775808]
| String
| {{Icon|unchecked}}
|}
|}


==== Spatiality ====
==== Time ====
'''Description:''' Special-purpose node designed for use with Shader. Contains the parameters that control the degree of spatiality that is applied by the Shader.
The Time node continuously outputs either the time a sound instance has existed or the time the world has been running on the client's machine (in milliseconds).


'''Input ports:'''
{| class="wikitable align-center-col-4"
{| class="wikitable"
|+ Attributes
! Name
! Name
! Type
! Description
! Description
! Range
! Input port
|-
|-
| '''Spatial Factor'''
| Time Type
| Signal
| Defines what time in milliseconds the node outputs.
| Controls the '''Spatial Factor''' parameter
|
* Life Time: Outputs the time in milliseconds the sound instance has existed so far. If the node is used by more than one sound that plays from the same {{hl|.acp}} at the same time, it will output the Life Time of the first sound that was triggered.
* World Time: Outputs the time in milliseconds the world has been running on the local machine so far ('''not''' how long it has been running on the server).
| {{Icon|unchecked}}
|}
|}


'''Item detail:'''
 
{| class="wikitable"
==== LFO ====
! Category
The L(ow)F(requency)O(scillation) node {{Link|https://en.wikipedia.org/wiki/Low-frequency_oscillation|oscillates}} between 0 and 1 in a specified shape.
! Attribute Name
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Description
! Value Range
! Range
! Input port
|-
|-
| rowspan="6" | Spatiality
| Frequency
| '''Spatial Factor'''
| Defines the LFO cycle's duration in seconds.
| Constant that defines the spatial factor when no curve type or signal is connected
| {{n/a}}
| [0, 1]
| {{Icon|unchecked}}
|-
|-
| '''Spatial Curve Type'''
| Shape
| Defines how the spatiality changes with distance - that is, the function that the spatiality vs. distance curve adheres to
| The shape used for oscillation.
|
|
* Linear
* Sine
* S-Curve
* Triangle
* Power of 1.41
* Square
* Power of 2
* Saw
* Power of 3
| {{Icon|unchecked}}
* Power of 1/1.41
|}
* Power of 1/2
 
* Power of 1/3
==== Curve Modulator ====
The Curve Modulator node allows it to plot modulation curves by defining the curve's single points.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
| Points
| Allows to add points to the curve.
| {{n/a}}
| {{Icon|unchecked}}
|-
| Points: Time
| The time in milliseconds it takes to interpolate from the previous Value to the one of this point.
| [1, 1000000]
| {{Icon|unchecked}}
|-
| Points: Time Variance
| The allowed maximum deviation from the specified point Value.
| [0, 500000]
| {{Icon|unchecked}}
|-
| Points: Value
| The value of the point.
| [-9223372036854775808, 9223372036854775808]
| {{Icon|unchecked}}
|-
| Points: Value Variance
| The allowed maximum deviation from the specified point Value.
| [0, 500000]
| {{Icon|unchecked}}
|}
 
==== Square Modulator ====
The Square Modulator node allows it to generate a sequence of pulses with specified peak values,
peak lengths and gaps between peaks.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
| Points
| Allows to add points to the curve.
| {{n/a}}
| {{Icon|unchecked}}
|-
| Points: Value
| The value of the peak.
| [-9223372036854775808, 9223372036854775808]
| {{Icon|unchecked}}
|-
| Points: Value Variance
| The allowed maximum deviation from the specified point Value.
| [0, 500000]
| {{Icon|unchecked}}
|-
| Points: Peak
| The time in milliseconds the Value will be held before going back to 0.
| [1, 1000000]
| {{Icon|unchecked}}
|-
|-
| '''Distance Begin'''
| Points: Peak Variance
| Defines the distance [m] at which the spatial factor is at its minimal value specified by '''Interpol Begin'''
| The allowed maximum deviation from the specified Peak time.
| [0, 10000] m
| [0, 500000]
| {{Icon|unchecked}}
|-
|-
| '''Distance End'''
| Points: Gap
| Defines the distance [m] at which the spatial factor is at its maximal value specified by '''Interpol End'''
| The time in milliseconds the Value will remain at 0 before reaching the next Point.
| [0, 10000] m
| [1, 1000000]
| {{Icon|unchecked}}
|-
|-
| '''Interpol Begin'''
| Points: Gap Variance
| Defines the minimal value of the interpolation range
| The allowed maximum deviation from the specified Gap time.
| [0, 1]
| [0, 500000]
| {{Icon|unchecked}}
|}
 
=== Math Operators and Logic Nodes ===
 
==== Sum ====
The Sum node outputs the sum of all input nodes (simple addition).
 
No attributes.
 
==== Sub ====
The Sub(traction) node subtracts the Subtracter value from the Input value and outputs the result.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
|-
| '''Interpol End'''
| Subtracter
| Defines the maximal value of the interpolation range
| Defines the value which will get subtracted from the input value.
| [0, 1]
| [-9223372036854775808, 9223372036854775808]
| {{Icon|checked}}
|}
|}


==== Mul ====
The Mul(tiplication) node outputs the product of all inputs.
No attributes.
==== Div ====
The Div(ision) node outputs the quotient of the dividend (Input) and the Divisor.


== Signal Editor Node Types ==
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
| Divisor
| Defines the value by which the input value will get divided.
| [-9223372036854775808, 9223372036854775808]
| {{Icon|checked}}
|}


{{Wiki|Stub}}
==== Remainder ====
The Remainder node outputs the remainder of a division. The remainder is the value that is left when the Input (dividend) is not completely divisible by the Divisor.


=== Convertor ===
; Formula
remainder = dividend - (divisor * roundedQuotient)


'''Description:''' Converts input values into output values based on defined ranges for input values.
{| class="wikitable align-center-col-4"
{| class="wikitable"
|+ Attributes
! Category
! Name
! Attribute
! Description
! Description
! Range
! Input port
|-
|-
| rowspan="2" | Unsorted
| Divisor
| Input as default
| Defines the value which will be used as the Divisor.
| True: If input is not defined in any range, that output = input
| [-9223372036854775808, 9223372036854775808]
| {{Icon|checked}}
|}
 
==== Mod ====
The Mod(ulo) node outputs the modulus of a division. It is essentially the same as the {{Link|#Remainder}} node, but will floor the Quotient.


False: If input is not defined in any range, that output = Default value
; Formula
modulus = dividend - (divisor * flooredQuotient)
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
|-
| Default
| Divisor
|
| Defines the value which will be used as the Divisor.
| [-9223372036854775808, 9223372036854775808]
| {{Icon|checked}}
|}
 
==== Min ====
The Min(imum) node will always output the smallest of the input values fed into it.
 
No attributes.
 
==== Max ====
The Max(imum) node will always output the largest of the input values fed into it.
 
No attributes.
 
==== Abs ====
The Abs(olute) node will always output the {{Link|https://en.wikipedia.org/wiki/Absolute_value|absolute value}} of an input value.
Simply put, it makes sure that the output value is always positive.
 
No attributes.
 
==== Pow ====
The Pow(er) node outputs a power, in which the Input is set to the power of Exponent.
 
; Formula
output = input^exponent
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
| Exponent
| Defines the value of the exponent.
| [-9223372036854775808, 9223372036854775808]
| {{Icon|checked}}
|}
 
==== Cond ====
The Cond(ition) node compares the Input value against a Comparator value and returns 1 if the Condition is met, 0 if not.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
|-
| rowspan="3" | Ranges
| Condition Type
| Min
| Defines the Condition the comparison has to meet for the node to return 1.
|
|
; Available operators
* {{hl|1= ==}} (Input and Comparator must be equal)
* {{hl|1= !=}} (Input and Comparator must be different)
* {{hl|>}} (Input must be greater than Comparator)
* {{hl|1= >=}} (Input must be greater than or equal to Comparator)
* {{hl|<}} (Input must be less than Comparator)
* {{hl|1= <=}} (Input must be less than or equal to Comparator)
| {{Icon|unchecked}}
|-
|-
| Max
| Comparator
| The value the Input value is compared against.
|
|
|-
| {{Icon|checked}}
| Output
| Output value for defined range [Min, Max)
|}
|}
Note: Ranges have to be in order. So 1-2, 2-3, 3-4 will work, but 1-2, 3-4, 2-3 will not.


=== Smoother ===
==== Converter ====
The Converter node allows it to output custom values if the Input falls within specified ranges.
If the input value does not fall within these ranges, a Default value is used.<br>
Depending on the node's settings, this Default value can either be
* specified in the node's Attributes (or fed via the Default input port) or
* the Input value.


{| class="wikitable"
{{Feature|informative|The defined range will be [min, max), meaning the the min value is included,
! Category
the max value is not.}}
! Attribute
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Description
! Range
! Input port
|-
|-
| rowspan="6" | Unsorted
| Default
| Fade–in time
| Defines the default value which will be returned of the Input value does not fall within any Interval.
| Time of interpolation, when input is ascending
| [-9223372036854775808, 9223372036854775808]
| {{Icon|checked}}
|-
|-
| Fade-in type
| Default from Input
| Interpolation curve type
| If true, the node will output the Input value directly if it does not fall within any Interval.
| true/false
| {{Icon|unchecked}}
|-
|-
| Fade–out time
| Intervals
| Time of interpolation, when input is descending
| Allows to define the node's Intervals/Ranges.
| {{n/a}}
| {{Icon|unchecked}}
|-
|-
| Fade-out type
| Intervals: Min
| Interpolation curve type
| Defines the minimum (included) value of the interval.
|
| {{Icon|unchecked}}
|-
|-
| Input reset time
| Intervals: Max
| Resets interpolation time, when lastInput != currentInput
| Defines the maximum (not included) value of the interval.
|
| {{Icon|unchecked}}
|-
|-
| Always interpolate
| Intervals: Out
| Output is always interpolated, even when Input reset time = true.
| Defines the output value if the Input value lies within the range.
|
| {{Icon|unchecked}}
|}
|}


=== Interpolate ===
==== Interpolate ====
The Interpolate node allows it to smoothly interpolate between two Output values (Y) based on an Input value (X).
* If the Input value is <= X min, the Output will be Y min.
* If the Input value is >= X max, the Output will be Y max.
* If the Input value is in between X min and X max, the Output value depends on the interpolation parameters.
 
; Example
X min = 10, X max = 20
Y min = 0, Y max = 1
input = 15
input is right in-between 10 and 20
brought to Y range, output is 0.5
 
{{Feature|informative|The min values do not have to be smaller than the max values.}}


{| class="wikitable"
{| class="wikitable align-center-col-4"
! Category
|+ Attributes
! Attribute
! Name
! Description
! Description
! Range
! Input port
|-
|-
| rowspan="6" | Unsorted
| X min
| X min
|
| Defines the the Input value at which the interpolation starts. Output value == Y min.
| [-9223372036854775808, 9223372036854775808]
| rowspan="4" | {{Icon|checked}}
|-
|-
| X max
| X max
|
| Defines the the Input value at which the interpolation ends. Output value == Y max.
| [-9223372036854775808, 9223372036854775808]
|-
|-
| Y min
| Y min
|
| Defines the minimum output value.
| [-9223372036854775808, 9223372036854775808]
|-
|-
| Y max
| Y max
|
| Defines the maximum output value.
| [-9223372036854775808, 9223372036854775808]
|-
| Fade In Type
| rowspan="2" | Defines the curve function of the interpolation.
{{Feature|important|Only available if Clamp is activated.}}
| rowspan="2" |
* Linear: Curve is linear
* SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
* Power of...
| rowspan="2" | {{Icon|unchecked}}
|-
| Fade Out Type
|-
|-
| Fade-in type
| Clamp
| Interpolation curve type, Used, when input is ascending.
| If activated, the interpolation is limited to Y min / Y max. If deactivated, the interpolation can continue in both directions and will keep the correlation between X and Y.
| true/false
| {{Icon|unchecked}}
|-
|-
| Fade-out type
| Enable Custom Curve
| Interpolation curve type, Used, when input is descending.
| Allows it to define a custom correlation between Input (X) and Output (Y) in the Curve Editor. Will disable all other attributes.
| {{n/a}}
| {{Icon|unchecked}}
|}
|}


=== Envelope ===
==== Env ====
The Env(elope) node allows it to smoothly interpolate from 0 to 1 and then back from 1 to 0 based on an Input value.
* Between an Input value of A and B, the Output will interpolate from 0 to 1.
* Between B and C, the Output will remain 1.
* Between C and D, the Output will interpolate back to 0.


{| class="wikitable"
; Example
! Category
A = 1, B = 4, C = 6, D = 10
! Attribute
Input = 0: result = 0
Input = 1: result = 0
Input = 2: result = 0.333
Input = 3: result = 0.666
Input = 4..6: result = 1
Input = 7: result = 0.75
Input = 8: result = 0.5
Input = 9: result = 0.25
Input = 10: result = 0
Input = 11: result = 0
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Description
! Tips
! Range
! Input port
|-
|-
| rowspan="6" | Unsorted
| A
| A
|
| Defines the the Input value at which the first interpolation starts. Output value == 0.
| <syntaxhighlight lang="c#">
| [-9223372036854775808, 9223372036854775808]
if (A == B && C = D)
| rowspan="4" | {{Icon|checked}}
{
if (input >= A && input < C)
output = 1;
else
output = 0;
}
</syntaxhighlight>
|-
|-
| B
| B
|
| Defines the the Input value at which the first interpolation ends. Output value == 1.
|
| [-9223372036854775808, 9223372036854775808]
|-
|-
| C
| C
|
| Defines the the Input value at which the second interpolation starts. Output value == 1.
|
| [-9223372036854775808, 9223372036854775808]
|-
|-
| D
| D
|
| Defines the the Input value at which the second interpolation ends. Output value == 0.
|
| [-9223372036854775808, 9223372036854775808]
|-
| Fade In Type
| rowspan="2" | Defines the curve function of the interpolation.
{{Feature|important|Only available if Clamp is activated.}}
| rowspan="2" |
* Linear: Curve is linear
* SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
* Power of...
| rowspan="2" | {{Icon|unchecked}}
|-
| Fade Out Type
|}
 
==== Smoother ====
The Smoother node smoothes out changes in the Input by interpolating from the old to the new value over time.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
| Fade In Time
| Time in milliseconds the interpolation will take if the input value increased.
| [999999999]
| {{Icon|unchecked}}
|-
| Fade Out Time
| Time in milliseconds the interpolation will take if the input value decreased.
| [999999999]
| {{Icon|unchecked}}
|-
| Fade In Type
| rowspan="2" | Defines the curve function of the interpolation.
{{Feature|important|Only available if Clamp is activated.}}
| rowspan="2" |
* Linear: Curve is linear
* SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
* Power of...
| rowspan="2" | {{Icon|unchecked}}
|-
| Fade Out Type
|}
 
==== Average ====
The Average node Outputs the average of the Input values within a specified number of frames.
 
{{Feature|informative|
The node is (obviously) framerate-dependent and therefore not reliable when requiring accurate timings; e.g. when storing 30 frames:
* Running the game at (constant) 30 FPS will result in getting the average of the last second.
* Running the game at (constant) 60 FPS will result in getting the average of the last 1/2 second.
}}
 
; Formula
average = frameValueSums / framesNumber
// e.g capacity = 3, frame1 = 50, frame2 = 100, frame3 = 120
// average = (50 + 100 + 120) / 3 = 90
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
| Capacity
| Defines how many frames will be stored and evaluated.
| [0, 128]
| {{Icon|unchecked}}
|}
 
==== Filter ====
The Filter node is one-pole low-pass filter.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
|-
| Fade-in type
| Frequency
| Interpolation curve type. Between A and B
| Cut-off frequency
|
| {{n/a}}
| {{Icon|checked}}
|}
 
==== Delta ====
The Delta node outputs change of input over time.
 
; Formula
out = (in - inLast) / timeSlice
 
No attributes.
 
=== Exponential Group Nodes ===
 
==== Exp ====
The Exp(onential) node multiplies the Input value with {{Link|https://en.wikipedia.org/wiki/E_(mathematical_constant)|{{hl|e}} (Euler's Number)}}.
 
No attributes.
 
==== Ln ====
The Ln node outputs the {{Link|https://en.wikipedia.org/wiki/Natural_logarithm|Natural Logarithm}} of the Input value.
 
No attributes.
 
==== Log2 ====
The Log2 node outputs the {{Link|https://en.wikipedia.org/wiki/Binary_logarithm|Binary Logarithm}} of the Input value.
 
No attributes.
 
==== Log10 ====
The Log10 node outputs the Decadic Logarithm (or {{Link|https://en.wikipedia.org/wiki/Common_logarithm|Common Logarithm}} of the Input value.
 
No attributes.
 
=== Conversion Group Nodes ===
 
==== Db2Gain ====
The D(eci)b(el)2Gain node converts an Input value (in dB) and outputs it as Gain.
 
; Formula
gain = 10^(input / 20)
 
No attributes.
 
==== Gain2Db ====
The Gain2D(eci)b(el) node converts an Input value (in Gain) and outputs it as dB.
 
{{Feature|informative|The initial/reference gain value will always be 1.}}
 
; Formula
decibel = 20 * log10(input)
 
No attributes.
 
==== St2Gain ====
The S(emi)t(ones)2Gain node converts an Input value (in SemiTones) and outputs it as a Gain value.
Alternatively, the Gain value can be interpreted as a relative pitch value.
 
The Input value hereby represents a change in SemiTones, meaning:
* an Input of 0 outputs 1 (Baseline, no change in pitch),
* an Input of -12 outputs 0.5 (half the baseline pitch/ one octave lover),
* an Input of 12 outputs 2 (double baseline pitch/ one octave higher).
 
; Formula
gain = 2^(input / 12)
 
No attributes.
 
==== Gain2St ====
The Gain2S(emi)t(ones) node converts an Input value (in Gain/relative pitch) and outputs it as SemiTones.
 
The Input value hereby represents a change in Gain/relative pitch, meaning:
* an Input of 1 outputs 0 (Baseline, no change in SemiTones),
* an Input of 0.5 outputs -12 (12 SemiTones/one octave lower),
* an Input of 2 outputs 12 (12 SemiTones/one octave higher).
 
; Formula
semiTones = 12 * log2(input)
 
No attributes.
 
==== Freq2Oc ====
The Freq(uency)2Oc(tave) node outputs the nth octave of the Input (frequency).
 
; Formula
semiTones = input * 2^(Octaves)
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
|-
| Fade-out type
| Octaves
| Interpolation curve type. Between C and D
| Defines the maximum output value.
|
| [0, 128]
| {{Icon|unchecked}}
|}
|}


=== Random ===
==== Freq2Mel ====
The Freq2Mel node converts an Input value in {{Link|https://en.wikipedia.org/wiki/Hertz|Hz}} and outputs it in {{Link|https://en.wikipedia.org/wiki/Mel_scale|Mel}}.


{| class="wikitable"
; Formula
! Category
mel = 1127 * ln (1 + f / 700)
! Attribute
 
==== Mel2Freq ====
The Mel2Freq node converts an Input value in {{Link|https://en.wikipedia.org/wiki/Mel_scale|Mel}} and outputs it in {{Link|https://en.wikipedia.org/wiki/Hertz|Hz}}.
 
; Formula
hertz = 700 * (e^(Mel / 1127) - 1)
 
=== Saturation Group Nodes ===
 
==== Floor ====
The Floor node rounds an Input value down to its next lowest integer (e.g 1.1 &rarr; 1, 1.5 &rarr; 1, 1.99 &rarr; 1, 2.001 &rarr; 2).
 
No attributes.
 
==== Ceil ====
The Ceil(ing) node rounds an Input value up to its next highest integer (e.g 1.1 &rarr; 2, 1.5 &rarr; 2, 1.99 &rarr; 2, 2.001 &rarr; 3).
 
No attributes.
 
==== Round ====
The Round node rounds an Input value up if its first decimal is >= 5 and down if not (e.g 1.4 &rarr; 1, 1.49 &rarr; 1, 1.5 &rarr; 2, 1.51 &rarr; 2).
 
No attributes.
 
==== Clamp ====
The Clamp node prevents the Output value from becoming larger than Max and smaller than Min.<br>
If the Input value is smaller than Min, the Output will return Min.<br>
If the Input value is larger than Max, the Output will return Max.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Description
! Range
! Input port
|-
|-
| rowspan="3" | Unsorted
| Min
| Min
|
| Defines the maximum output value.
| [-9223372036854775808, 9223372036854775808]
| {{Icon|checked}}
|-
|-
| Max
| Max
|
| Defines the maximum output value.
| [-9223372036854775808, 9223372036854775808]
| {{Icon|checked}}
|}
 
==== ClampMin ====
The ClampMin node prevents the Output value from becoming smaller than Min.
If the Input value is smaller than Min, the Output will return Min.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
| Min
| Defines the maximum output value.
| [-9223372036854775808, 9223372036854775808]
| {{Icon|checked}}
|}
 
==== ClampMax ====
The ClampMax node prevents the Output value from becoming larger than Max.
If the Input value is larger than Max, the Output will return Max.
 
{| class="wikitable align-center-col-4"
|+ Attributes
! Name
! Description
! Range
! Input port
|-
|-
| Update rate
| Max
|
| Defines the maximum output value.
* Every get
| [-9223372036854775808, 9223372036854775808]
* Every frame
| {{Icon|checked}}
|}
|}
=== Trigonometric Group Nodes ===
==== Sin ====
The Sin(e) node outputs the sine of the Input value.
No attributes.
==== Cos ====
The Cos(ine) node outputs the cosine of the Input value.
No attributes.
==== Tan ====
The Tan(gent) node outputs the tangent the Input value.
No attributes.
==== ASin ====
The A(rc)Sin node outputs the ArcSin of the Input value.
No attributes.
==== ACos ====
The A(rc)Cos node outputs the ArcCos of the Input value.
No attributes.
==== ATan ====
The A(rc)Tan node outputs the ArcTan of the Input value.
No attributes.




== External References ==
== External References ==


# https://en.wikipedia.org/wiki/Sample-rate_conversion
* {{Link|https://en.wikipedia.org/wiki/Sample-rate_conversion}}
# https://en.wikipedia.org/wiki/Interpolation
* {{Link|https://en.wikipedia.org/wiki/Interpolation}}
# https://ccrma.stanford.edu/~jos/resample/resample.pdf
* {{Link|https://ccrma.stanford.edu/~jos/resample/resample.pdf}}
# https://www.earlevel.com/main/2013/10/13/biquad-calculator-v2/
 
# https://en.wikipedia.org/wiki/Audio_bit_depth
* {{Link|https://en.wikipedia.org/wiki/Low-frequency_oscillation}}
# https://en.wikipedia.org/wiki/Dynamic_range_compression
* {{Link|https://en.wikipedia.org/wiki/Remainder}}
* {{Link|https://en.wikipedia.org/wiki/Absolute_value}}
* {{Link|https://en.wikipedia.org/wiki/E_(mathematical_constant)}}
* {{Link|https://en.wikipedia.org/wiki/Natural_logarithm}}
* {{Link|https://en.wikipedia.org/wiki/Binary_logarithm}}
* {{Link|https://en.wikipedia.org/wiki/Common_logarithm}}
 
* {{Link|https://www.earlevel.com/main/2013/10/13/biquad-calculator-v2/}}
* {{Link|https://en.wikipedia.org/wiki/Audio_bit_depth}}
* {{Link|https://en.wikipedia.org/wiki/Dynamic_range_compression}}




{{GameCategory|armaR|Modding|Official Tools}}
{{GameCategory|armaR|Modding|Official Tools}}

Latest revision as of 21:07, 24 May 2024

Nodes are the fundamental building blocks that are used within the Audio Editor to create audio signal chains. There are a variety of different nodes, each with a specific purpose that modifies the sound or introduces some logic at its respective position in the chain.

Connecting a series of nodes together allows to create chains that produce sounds with varying degrees of complexity. This page serves as a reference for the usage of each type of node.

Note that there are certain fundamental nodes that must be present in a chain in order for a sound to be playable. These are namely:

  • a node that outputs an audio waveform: either a Bank or a Generator
  • a Sound node



Audio Editor Node Types

Nodes can be grouped into two main categories: Resource Nodes and Local Nodes. A node of the Resource type is saved as a separate resource file and can be shared between multiple .acp files, while a node of the local type is stored in the .acp file itself and cannot be shared with other .acp files.

Nodes of the Resource type will appear on the design canvas with round corners, while nodes of the Local type will appear with sharp corners.

Resource Nodes

Mixer

aka OutputState aka FinalMix

Attributes
Category Name Description Range
General Inputs A listed representation of the groups defined within the mixer file. N/A

The mixer's input ports are variable and depend on its internal logic.

No output ports.

Signal

Takes one or more inputs and transforms them into one or more outputs that can be used to feed the inputs of other nodes. The internal logic that defines the input/output behavior can be edited inside the Signal Editor by double-clicking on the node.

No dedicated attributes.

Input ports depend on the internal signal setup.

Output ports depend on the internal signal setup.

Local Nodes

BankLocal

Attributes
Category Name Description Range
Flags Disable Streaming If enabled, streaming is suppressed and the entire sample is loaded into memory as a single block of data.
The flag is ignored when the size of the file is > 16 MB.
true/false
Flags Preload If enabled, all samples in the bank are preloaded into the cache on the first playback. true/false
General Volume Volume in decibels (dB), applied to all bank samples. [-60, +60]
General Volume variance Volume randomization factor; maximum deviation from the value of Volume, in dB. [0, +30]
General Pitch Pitch shift in semitones applied to all bank samples. [-24, +24]
General Pitch variance Pitch randomization factor; maximum deviation in semitones from the value of Pitch. [0, 12]
General Loop count Number of times that the played sample is repeated. [0, 255]
General Loop begin The first sample of the region to be looped.
  • Loop count above defines the number of repetition
  • When Offset below is used, then the value must be greater than Offset
N/A
General Loop length Length of the loop region, in samples.
The value of Loop begin + Loop length must be greater than Offset.
N/A
General Infinite Loop If enabled, the played sample is repeated infinitely until the sound is stopped. true/false
General Terminate Loop If enabled, the loop will stop immediately upon sound stop. If false, the loop will finish the current cycle first. true/false
General Termination Fade Out Fade out in milliseconds applied when the source is terminated due to limits during playback.

Use Release Shape curve.

[0, 10000]
General Selection Method for selecting a sample.
  • RandomNoRepeat: Samples selected at random, with the exception that the same sample is not repeated twice in a row
  • Random: Samples selected at random
  • SequenceFromFirst: Samples played in sequence, starting with the first sample
  • FirstRandomAndSequence: Samples played in sequence, starting with a randomly-selected sample
  • CustomSignalIndex: When this option is selected, a new input port is added to the bank that allows a sample to be selected based on the signal value
N/A
General Resampler Resampling method for converting between different sample rates.
  • Point: No interpolation (fastest, least accurate)
  • Linear: Interpolation (slower, but more accurate than point)
  • FIR (4/8): FIR filter that implements resampling (slowest but most accurate)
N/A
Envelope Silence Length of silence in milliseconds added in front of the sample
  • Time is not counted into Envelope, Envelope-Attack time starts after Silence
[0, 10000]
Envelope Offset Length of playback offset of the sample, in milliseconds.

For non-looped playback in case when offset is bigger then sample length a playback is skipped.

[0, 10000]
Envelope Random Start Offset If enabled, a random start offset is applied true/false
Envelope Attack Shape Function for the shape of the sound fade in. Defines the "shape" of the volume change during fade-in.

https://www.desmos.com/calculator/s7z4sji5b5

  • Linear: Curve is linear
  • SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
  • Cos: Curve is "S-shaped", similar to SCurve
  • EPower (Equal Power) : If fade in and fade out happen at the same time, the equal power curve will ensure there's no "hole" in the overall volue (fade in * fade in + fade out * fade out = 1)
  • Exp: Exponential curve (gets steeper over time)
  • Quadratic: TBA
N/A
Envelope Attack Time in milliseconds it takes before the sample reaches full volume.
Envelope Sustain Time of Sustain in milliseconds. If the value is > 0, the total playback length will become Fade In + Sustain + Fade Out. [0, 10000]
Envelope Release Shape Function for the shape of the sound fade out. This will also apply for Termination fade out.

Defines the "shape" of the volume change during fade-out. Shapes are the same as attack shapes, but inverted.

  • Linear:
  • SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
  • Cos: Curve is "S-shaped", similar to SCurve
  • EPower (Equal Power) : If fade in and fade out happen at the same time, the equal power curve will ensure there's no "hole" in the overall volue (fade in * fade in + fade out * fade out = 1)
  • Exp: Exponential curve (gets steeper over time)
  • Quadratic: TBA
N/A
Envelope Release Time in milliseconds it takes for the sound to fully fade out. [0, 10000]
Samples Samples List of audio samples. There is a limit of max 1024 samples. N/A
Samples Samples/Filename Link to the sample (.wav format) N/A
Samples Samples/Probability In case of a randomised selection method, this parameter defines the probability that the sample will be selected. Probability is a weighting factor, not a percentage. [0, 100]
Samples Samples/Index Custom signal index [0, inf+]
Samples Samples/Sample Metadata Name of a string holding localization data which can be processed by other parts of the game. N/A
Input Ports
Name Type Description
Volume Signal (toggleable) Scaling factor applied to the gain of all samples in the bank
Volume variance Signal Maximum allowed deviation of specified volume in decibels (dB)
Pitch Signal (toggleable) Scaling factor applied to the pitch of all samples in the bank
Pitch variance Signal Maximum allowed deviation of specified pitch in semitones
Replacer Settings node Allows bank to be controlled by a Replacer
Offset Signal Length of playback offset of the sample in ms. Override offset defined in "bank" properties.
Silence Signal Length of silence added in front of the sample in ms
Fade In Signal Time in ms it takes before the sample reaches full volume
Sustain Signal If the value is >0, the total playback length will become Fade In + Sustain + Fade Out
Fade Out Signal Time in ms it takes before the sample fully fades out
Output Ports
Name Type Description
Fade Out Signal Time in milliseconds it takes before the sample fully fades out.

Bus

Mixes down all audio streams fed to the "In" port to a single output.

Attributes
Category Name Description Range
General Channels Number of output channels [1, 8]
General Sample Rate Sample rate in Hertz Can be one of:
  • 8000
  • 11025
  • 16000
  • 32000
  • 44100
  • 48000
  • 64000
  • 96000
  • 192000
General Volume D B Volume modifier in decibels (dB) [-60, 12]
General Resampler Resampling method for converting between different sample rates
  • Point: No interpolation (fastest, least accurate)
  • Linear: Interpolation (slower, but more accurate than point)
  • FIR (4/8): FIR filter that implements resampling (slowest but most accurate)
N/A
General Channel Volume If enabled, input ports controlling the volumes of each output channel become available.
In order to work, a dedicated output channel amount must be selected in the "Channel" attribute. "Default" will not work.
true/false
Limitation Enable Limitation Enables Limitation and displays Limitation variables. true/false
Limitation Source Limit Max number of inputs allowed to play at the same time. Quietest ones are muted if the limit is exceeded. [1, 255]
Limitation Source Limit Type Specifies how the Source Limit is evaluated
  • Static: Limit is evaluated once at the beginning of playback
  • Dynamic: Limit is evaluated continuously during playback
N/A
Limitation Volume Compensation If enabled and a sound is discarded because of the Source Limit, the remaining sounds will receive a volume boost equal to the volume of the discarded sounds in order to preserve the input volume.

Example: Sound A is 1dB, B is 2dB, Source Limit is 1 (only one sound is allowed to play). Only B will play because it's louder, but it will play with a volume of 3dB. The 1dB volume of discarded A was added to the 2dB original volume of B.

true/false
Variable Var Name Defines which variable within the variables config file the bus feeds into.

Only available when a file is defined in Var Resource.

N/A
Variable Var Resource Filepath to Config file containing definitions of Variables N/A
Input Ports
Name Type Description
In Audio In Audio Input
Volume Signal (toggleable) Scaling factor applied to the gain.

Hidden if per-channel volumes are activated.

DSP Settings node Accepts a Filter or FilterChain
Volume0..7 Signal (toggleable) Scaling factor applied to the gain of the respective channels.

Only visible if per-channel volumes are activated and an output channel amount is specified.

Output Ports
Name Type Description
Out Audio Out N/A

Sound

The root node of a signal chain. Must be present in every chain in order for sound to be playable in-game, as this node serves as the "identifier" for the engine.

Attributes
Category Name Description Range
General Volume D B Volume modifier, in decibles (dB) [-60, 60]
General Priority Factor that is taken into account when determining which sources to keep or destroy in case the limit of playing sources is exceeded. Sounds with lower priority are more likely to be destroyed than sounds with higher priority. [0, 100]
General Delay Time Delay time in milliseconds before sound is played [0, 10000]
General Even No Repeat Time Time in milliseconds below which sound events with the same name will be ignored [0, 10000]
Flags No In Audible If enabled, sounds below the threshold of audibility are not played true/false
Flags Bypass Volume Test If enabled, volume is not considered when determining which sources to destroy in case the .acp limit of playing sources is exceeded true/false
Flags Speed Of Sound Simulation Simulates delayed playback due to the speed of sound true/false
Transformation Transformation Specifies the position from which this sound is played
  • Entity: Sound is played from the position of the entity which the .acp file is attached to
  • Bone: Sound is played from the bone specified in Bone Name on the entity which the .acp file is attached to
  • Offset: Sound is played from the position of the entity with the specified offset applied. A Sound Point can be specified in Offset Name
"Bone" and "Offset" types need a SoundComponent on the entity in order to work.
Transformation Static If enabled, the sound does not move with the entity but remains static at the initial playback position. true/false
Trigger Type Specifies how the sound is triggered
  • Continuous: Sound is triggered and continues to repeat if the value of the signal connected to the Trigger port is different from 0.
  • One shot: Sound is triggered once based on the values of Threshold and Reset.   
  • Timer: Periodically triggers the sound event, the period is defined by the Time attribute or the signal connected to the Trigger port. If the Time is 0, the sound is not triggered.
Trigger Threshold Value that the signal connected to the Trigger port needs to exceed before sound is triggered Threshold >= Reset
Trigger Reset Value below which the signal needs to be before the sound can be triggered again Reset <= Threshold
Slave Event Type If the sound is a slave (i.e. if the Master port is connected to another sound), this parameter defines its start/stop behavior in response to the master.
  • Start-Stop: Slave starts/stops when Master starts/stops
  • OnStart-Start: Slave starts when Master starts
  • OnStart-Stop: Slave stops when Master starts
Bounding Volume Type When different from None, sound position is moved to the closest point within the volume towards the camera.

Amplitude and Spatiality is calculated towards this closest point.

  • Sphere
  • Box
  • Cylinder
Variable Var Name Defines which variable within the variables config file the sound node feeds into.

Only available when a file is defined in Var Resource

n/a
Variable Var Resource Filepath to Config file containing definitions of Variables N/A
Input Ports
Name Type Description
In Audio In Audio Input
Volume Signal (toggleable) Multiplier for the value defined in the Item Details
Trigger Signal Accepts a signal whose value can be used to trigger playback of the sound
DSP Settings node Accepts a Filter or FilterChain
Master Master/Slave system Accepts the Slave output of a Sound node
Priority Signal Input signal value is added to the value defined in the node.
Output Ports
Name Type Description
Out Audio Out Audio Output
Slave Master/Slave system Connects to the "Master" node of another sound node
Aux Out Aux Out Allows the audio signal to be routed into an Aux Out node

Selector

This node gives the user the ability to split the signal chain into multiple branches. On playback, the Selector will select one branch to connect to the chain, and leave the others disconnected based on the value of the input signal.

Attributes
Category Name Description Range
Ports Min Lower bound of this port's range N/A
Ports Max Upper bound of this port's range N/A
Ports Volume Volume modifier in decibels applied to the branch connected to this port [-60, 12]
Ports Default If enabled, this port will be selected if the input signal does not fall within the range of any of the ports true/false
Input Ports
Name Type Description
Signal Signal Control signal whose value decides which of the following ports will be selected
User-defined ports Audio The branch connected to this port becomes the output if the control signal falls within the Min/Max range defined for this port
Output Ports
Name Type Description
Out Audio Out Audio Output

Generator

Outputs a variety of different waveforms as audio. Used primarily for testing/prototyping purposes.

Attributes
Category Name Description Range
General Function Specifies the function/shape of the generated waveform Can be one of:
  • Sine
  • Square
  • Sawtooth
  • Triangle
  • White noise
  • Pink noise
  • Brown noise
  • Silence
  • Pulse
  • One
General Channels Number of output channels [1, 8]
General Sample Rate Sample rate in Hertz Can be one of:
  • 8000
  • 11025
  • 16000
  • 32000
  • 44100
  • 48000
  • 64000
  • 96000
  • 192000
General Time Length of time in milliseconds that the sound lasts [0, 10000]
General Volume D B Volume modifier in decibels (dB) [-60, 60] dB
General Loop Count Number of times that the generated sound is repeated [0, 255]
General Frequency Frequency of the tone.
Hidden if not applicable to the Type.
[1, 20000]
General Termination fade out Fade out [ms] applied when source is terminated during playback [0, 10000]
Envelope Attack Shape Defines the curvature / shape of the attack (fade in) Defines the "shape" of the volume change during fade-in

https://www.desmos.com/calculator/s7z4sji5b5

  • Linear: Curve is linear
  • SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
  • Cos: Curve is "S-shaped", similar to SCurve
  • EPower (Equal Power) : If fade in and fade out happen at the same time, the equal power curve will ensure there's no "hole" in the overall volue (fade in * fade in + fade out * fade out = 1)
  • Exp: Exponential curve (gets steeper over time)
  • Quadratic:
Envelope Attack Length of the attack [ms] to reach the desired volume
If any of A/S/R is different from 0 then envelope is applied.
[0, 10000]
Envelope Sustain Time [ms] of Sustain
If any of A/S/R is different from 0 then envelope is applied.
[0, 10000]
Envelope Release Shape Defines the curvature / shape of the release (fade out) Defines the "shape" of the volume change during fade-out. Shapes are the same as attack shapes, but inverted.
  • Linear: Curve is linear
  • SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
  • Cos: Curve is "S-shaped", similar to SCurve
  • EPower (Equal Power) : If fade in and fade out happen at the same time, the equal power curve will ensure there's no "hole" in the overall volue (fade in * fade in + fade out * fade out = 1)
  • Exp: Exponential curve (gets steeper over time)
  • Quadratic:
Envelope Release Length of the release [ms] to "fade out" after the generator time
If any of A/S/R is different from 0 then envelope is applied.
[0, 10000]
Input Ports
Name Type Description
Volume Signal (toggleable) Scaling factor applied to the gain
Time Signal Length of time in milliseconds that the sound lasts
Frequency Signal (toggleable) Frequency of the tone
Output Ports
Name Type Description
Out Audio Out Audio Output

Constants

Allows to create static values that can be connected to input ports that take signal inputs.

Attributes
Category Name Description Range
Ports Value The value of each respective port N/A

No input ports.

Output Ports
Name Type Description
Variable amount of output ports Signal Outputs value specified in the item attributes

Shader

Applies panning and attenuation based on the spatial relation between the in-game listener and sound emitter.

Attributes
Category Name Description Range
General Reverse Panning If enabled, the panning applied by the Shader is reversed (i.e. sounds coming from the left are panned to the right and vice-versa) true/false
General ITD If enabled, a short delay is applied to one channel based on the spatial relation between the listener and emitter.

This simulates the interaural time difference (ITD) that humans rely on for localising sounds.

ITD is only applied if headphones mode is enabled in the game's settings, as this happens naturally when using speakers.
true/false
Input Ports
Name Type Description
In Audio In Audio Input
Spatiality Settings node Accepts a Spatiality node that defines the spatial factor (i.e. the blend between the unprocessed and panned versions of the sound) based on the distance / spatial relation between the listener and sound emitter
Amplitude Settings node Accepts an Amplitude node that defines how amplitude attenuation is applied based on the distance between the listener and sound emitter
Frequency Settings node Accepts a Frequency node that defines how frequency attenuation is applied based on the distance between the listener and sound emitter
DSP Settings node Accepts a Filter or FilterChain node
Incident angle (azimuth) Signal (toggleable) This port can be used to define the direction that the sound is perceived to be coming from.

Using this feature overrides the default panning calculated from the positions of the listener and emitter. The value of the input is assumed to be in radians with a counter-clockwise rotation convention.

Output Ports
Name Type Description
Out Audio Out Audio Output

Amplitude

Settings node designed for use with Shader. Contains parameters that control the degree of amplitude attenuation that is applied by the Shader.

Attributes
Category Name Description Range
Amplitude Curve Defines how the attenuation changes with distance - that is, the function that the attenuation vs. distance curve adheres to.
  • Linear
  • SCurve
  • Logarithm
  • 1/r
  • Custom
Amplitude Inner Range Distance in metres defining a radius around the emitter in which no volume attenuation occurs [0, 100]
Amplitude Outer Range Distance in metres at which the sound becomes fully muted. Fade-in starts at the end of the Inner Range [0, 10000]
Amplitude Slope Factor Factor at which the curve slopes. 100 makes the curve linear.

Only available for the "1/r" Curve type

[0, 100]
Amplitude Attenuation Curve Allows to plot a custom attenuation curve within the Curve Editor.

Only available for the "Custom" Curve type

N/A
Directivity Enable Directivity If enabled, a Directivity Curve can be set. true/false
Directivity Directivity Curve Sets the directivity curve which allows to attenuate sound based on the directivity factor.

The directivity factor is based on the relative direction from the listener to the emitter.

Directivity factor is:

  • 1 if listener is directly in front of the emitter,
  • 0 if directly behind the emitter.
  • 0.5 if 90° from it (left or right)
Only visible if Enable Directivity is enabled.
N/A
Variable Var Name Defines which variable within the variables config file the amplitude node feeds into.
Only available when a file is defined in Var Resource.
n/a
Variable Var Resource Filepath to Config file containing definitions of Variables N/A

No input ports.

Output Ports
Name Type Description
Out Audio Out Audio Output

Frequency

Settings node designed for use with Shader. Contains parameters that control the degree of frequency attenuation that is applied by the Shader.

Attributes
Category Name Description Range
General Dynamic Update If enabled, the filter settings are updated during playback true/false
Distance Attenuation Enable Distance Att If enabled, filtering due to distance attenuation is applied true/false
Distance Attenuation Type Type of filter applied
  • AirAbsorption: Applies a custom filter that models the physical effect of distance on the frequency content of sound propagating through air. Deatiled information here.
  • AirAbsorbtionLite: Combination of biquad low pass and variable roll of low pass filter that models the physical effect of distance on the frequency content of sound propagating through air.
  • Lowpass: Applies a generic lowpass filter with tweakable parameters. Greater flexbility in Sound Design, but for Air Absorption less physically accurate than the dedicated filter models.
Distance Attenuation Filter Strength (AirAbsorption models only) Scaling factor for AirAbsorption filter.
Only available if the "AirAbsorption" or "AirAbsortionLite" Type is selected.
[0, 4]
Distance Attenuation Inner Range Distance in metres up tp which the filter's cutoff frequency remains at the maximum value specified by Cutoff Max
Only available if the "LowPass" Type is selected.
[0, 100]
Distance Attenuation Outer Range Distance in metres at which the filter's cutoff frequency is at the minimum value specified by Cutoff Min
Only available if the "LowPass" Type is selected.
[0, 10000]
Distance Attenuation Slope Factor Controls the slope of the filter; analogous to the "Q factor" of the filter
Only available if the "LowPass" Type is selected.
[0.01, 100]
Distance Attenuation Cutoff Max Maximum cutoff frequency of the filter when distance <= Inner Range
Only available if the "LowPass" Type is selected.
[100, 16000]
Distance Attenuation Cutoff Min Minimum cutoff frequency of the filter when distance >= Outer Range
Only available if the "LowPass" Type is selected.
[100, 16000]
Directivity Enable If enabled, low-pass filtering due to source directivity is applied.

Activates the Directivity input port.

true/false
Directivity Directivity Factor The degree to which sound is affected by the filter (0 = no filtering) [0, 1]
Terrain Effects Terrain Effects Enables occlusion caused by the terrain.
The terrain needs to have a generated SoundMap for it to work.
true/false
Input Ports
Name Type Description
Directivity Factor Signal (toggleable) The degree to which sound is affected by the filter (0 = no filtering, 1 0 full filtering.)
Only becomes visible when Directivity is enabled in the node's Item Attributes.
Rolloff Signal (toggleable) Roloff of the filter
Cutoff Frequency Signal (toggleable) Cutoff Frequency of the filter.
Settings via input ports will not override the node's settings, but rather stack with them.
Output Ports
Name Type Description
Out Settings node Frequency output to be used on the Shader's Frequency input.

Spatiality

Settings node designed for use with Shaders. The purpose of this node is to provide the connected Shader(s) with a Spatial Factor value that controls how spatialised the output from the Shader(s) are.
This Spatial Factor controls the blending between unprocessed and spatialised (i.e. panned) sound. A value of 0 informs the connected Shader that no panning should be applied while a value of 1 indicates that the sound should be fully panned.

Attributes
Category Name Description Range
Spatiality Spatial Factor Source Defines where the spatial factor is taken from.

See the Spatial Factor Sources table below for more details.

  • Value
  • Curve
  • Signal
  • AzimuthCurve
Spatiality Value When this option is selected, the spatial factor is defined by a constant value in the range [0, 1]
Only available when the "Value" Spatial Factor Source is selected.
[0, 1] defined as static value
Spatiality Curve When this option is selected, the Curve Editor becomes available, in which the user can define the relationship between the distance to the sound emitter and the spatial factor.

Only available when the "Curve" Spatial Factor Source is selected.

[0, 1] defined in Curve Editor
Spatiality Signal When this option is selected, the spatial factor is defined by the value of the signal connected to the Spatial Factor input port which becomes available.

Only available when the "Signal" Spatial Factor Source is selected.

[0, 1] from Spatial Factor signal input
Spatiality AzimuthCurve (Curve0, Curve90) Same as "Curve", but using two different curves.

Curve0 defines the Spatial Factor for when the sound emitter is directly in front or behind the listener, Curve90 defines the Spatial Factor for when the sound emitter is directly to the left or right of the emitter. The Spatial Factor will interpolate for angles in between. Only available when the "AzimuthCurve" Spatial Factor Source is selected.

[0, 1] defined in Curve Editor
Input Ports
Name Type Description
Spatial Factor Signal (toggleable) The degree to which sound is spatialised.
Only becomes visible when the "Signal" Spatial Factor Source type is selected in the node's Item Attributes.
Output Ports
Name Type Description
Out Settings node Spatiality output to be used on the Shader's Spatiality input.

FilterChain

Enables the grouping of multiple DSP nodes together in series. The individual DSP effects are applied in the order that they are connected to the FilterChain.

Attributes
Category Name Description Range
General Ports Amount of available input ports [2, 16]
Input Ports
Name Type Description
User-defined ports Settings node Accepts a Filter output
Output Ports
Name Type Description
Out Settings node To be used in another node's DSP input.

Filter

Settings node that applies a specified DSP effect to the node(s) to which it is connected.

Attributes
Category Name Description Range
General Wet Dry Blend of the dry (unprocessed) and wet (processed) versions of the input sound [0, 1]
General Volume Volume modifier (decibels) [-60, 12]
General DSP Object Class of the DSP effect to be used N/A
Input Ports
Name Type Description
Wet Dry Signal (toggleable) Blend of the dry (unprocessed) and wet (processed) versions of the input sound [0, 1]
Volume Signal (toggleable) Scaling factor applied to the gain
Output Ports
Name Type Description
Out Audio Out Audio Output

Playlist

Inputs connected to this node will play in sequence, according to the order in which they are connected to it.

Attributes
Category Name Description Range
Unsorted Ports Amount of available input ports [1, 16]
Input Ports
Name Type Description
User-defined ports Audio In Audio Input
Output Ports
Name Type Description
Out Audio Out Audio Output

Replacer

Settings node designed to be used with the Replacer input ports of Banks. Enables the user to replace a string in the filepaths of all samples in the connected Bank.

Attributes
Category Name Description Range
Strings String to replace The string, searched for in the filepaths of all samples in the connected Bank, that we wish to replace. N/A
Strings Replacement strings A list of candidate replacement strings and signal value pairs.

A Replacement string from the list replaces String to replace in the filepaths of the connected bank's samples if its corresponding signal value matches that of the Control signal.

0..64 entries
Input Ports
Name Type Description
Control Signal Signal Signal which will be evaluated in Replacement strings.
Output Ports
Name Type Description
Out Settings node To be used in a Bank's Replacer input port.

Stream

Abstract node used for connecting streaming audio (e.g voice chat) to a signal chain created in the Audio Editor.

Attributes
Category Name Description Range
General ID ID string corresponding to the target stream ID defined in gamecode. N/A

No input ports.

Output Ports
Name Type Description
Out Audio out Audio Output.
Cannot be connected to Selectors or Playlists due to the nature of the node.

AuxOut

Accepts one or more Sound nodes as input and routes the output of those node(s) to the connected Mixer port.

Attributes
Category Name Description Range
General Volume Volume in decibels (dB), applied to all samples in the bank [-60, +60]
General Mono Mix Value between 0 and 1 that controls the mix between the unaltered output and a mono-downmixed version of the output [0, 1]
Input Ports
Name Type Description
Sound Sound node The output from the sound node(s) connected to this port will be mixed down and sent to the output.
Volume Signal (toggleable) Scaling factor applied to the output gain.
Mono Mix Signal (toggleable) Value between 0 and 1 that controls the mix between the unaltered output and a mono-downmixed version of the output.
DSP Settings node Accepts a Filter or FilterChain node.
Output Ports
Name Type Description
Out Audio out Audio Output to be connected with a Mixer node.

Variable

Abstract node that outputs the value of a specified audio variable.

Attributes
Category Name Description Range
General Curve Opens the Curve Editor, in which a relation between variable value and output signal can be set. N/A
Variable Var Name Defines which variable within the variables config file the node reads from.
Only available when a file is defined in Var Resource.
N/A
Variable Var Resource Filepath to Config file containing definitions of variables. N/A

No input ports.

Output Ports
Name Type Description
Out Signal Signal value output (float)


Signal Editor Node Types

Interfacing Nodes

Input

Creating an Input node will automatically create a corresponding input port on the Signal node within the Audio Editor. It allows the usage of game data within the Signal Editor in two ways:

  • Inside the Audio Editor, another node can be connected to the Signal node's inputs ports. The corresponding Input nodes within the Signal will then use the value passed from the connected node.
  • Giving an Input node the same name as a Signal passed via script or present on the connected entity's SignalsManagerComponent will automatically cause the node to use the respective values.
    e.g naming an Input node "Distance" will result in that it returns the distance from the listener to the entity.
Naming Conventions

Input nodes that are designed to be fed from Constants nodes will be NAMED_IN_ALLCAPS. The respective Constant output ports get the exact same name.

Attributes
Name Description Range Input port
Global If true and the .acp file using the Signal is attached to a SoundComponent, the signal name will be looked up in the list of global game signals instead of the connected entity. true/false Unchecked

Output

Creating an Output node will automatically create a corresponding output port on the Signal node within the Audio Editor. It allows the usage of data processed within the Signal Editor to be used within the Audio Editor.

No attributes.

Value-Generating Nodes

Value

The Value node will always output a single, specified value.

For readability, it can make sense to change the node's name or comment to the specified value.
Attributes
Name Description Range Input port
Value The value the node is supposed to output. [-9223372036854775808, 9223372036854775808] Unchecked

Variable

The Variable node outputs the current Value of an audio variable.

Attributes
Name Description Range Input port
Var Name Defines which variable from within the Variable Resource the node will output. N/A Unchecked
Var Resource Defines which Variable config file will be accessed. N/A Unchecked

Random

The Random node will output a random number within a specified min/max range.

Attributes
Name Description Range Input port
Min Minimum value that can be generated. [-9223372036854775808, 9223372036854775808] Unchecked
Max Maximum value that can be generated. [-9223372036854775808, 9223372036854775808] Unchecked
Update Rate Defines the rate at which the node will generate random values.
  • Every Get: generate a random value on each request (Could be multiple times per frame).
  • Every OnFrame: generate a random value once per frame.
  • Once: generate a random value once and then continue outputting it on every successive get.
Unchecked

Generator

The Generator node generates "impulses" of a specified Value in one frame in specified intervals.

Attributes
Name Description Range Input port
Value To Generate The value which will be generated. [-9223372036854775808, 9223372036854775808] Unchecked
Interval The interval in milliseconds between each value generation. [-9223372036854775808, 9223372036854775808] Unchecked

Time

The Time node continuously outputs either the time a sound instance has existed or the time the world has been running on the client's machine (in milliseconds).

Attributes
Name Description Range Input port
Time Type Defines what time in milliseconds the node outputs.
  • Life Time: Outputs the time in milliseconds the sound instance has existed so far. If the node is used by more than one sound that plays from the same .acp at the same time, it will output the Life Time of the first sound that was triggered.
  • World Time: Outputs the time in milliseconds the world has been running on the local machine so far (not how long it has been running on the server).
Unchecked


LFO

The L(ow)F(requency)O(scillation) node oscillates between 0 and 1 in a specified shape.

Attributes
Name Description Range Input port
Frequency Defines the LFO cycle's duration in seconds. N/A Unchecked
Shape The shape used for oscillation.
  • Sine
  • Triangle
  • Square
  • Saw
Unchecked

Curve Modulator

The Curve Modulator node allows it to plot modulation curves by defining the curve's single points.

Attributes
Name Description Range Input port
Points Allows to add points to the curve. N/A Unchecked
Points: Time The time in milliseconds it takes to interpolate from the previous Value to the one of this point. [1, 1000000] Unchecked
Points: Time Variance The allowed maximum deviation from the specified point Value. [0, 500000] Unchecked
Points: Value The value of the point. [-9223372036854775808, 9223372036854775808] Unchecked
Points: Value Variance The allowed maximum deviation from the specified point Value. [0, 500000] Unchecked

Square Modulator

The Square Modulator node allows it to generate a sequence of pulses with specified peak values, peak lengths and gaps between peaks.

Attributes
Name Description Range Input port
Points Allows to add points to the curve. N/A Unchecked
Points: Value The value of the peak. [-9223372036854775808, 9223372036854775808] Unchecked
Points: Value Variance The allowed maximum deviation from the specified point Value. [0, 500000] Unchecked
Points: Peak The time in milliseconds the Value will be held before going back to 0. [1, 1000000] Unchecked
Points: Peak Variance The allowed maximum deviation from the specified Peak time. [0, 500000] Unchecked
Points: Gap The time in milliseconds the Value will remain at 0 before reaching the next Point. [1, 1000000] Unchecked
Points: Gap Variance The allowed maximum deviation from the specified Gap time. [0, 500000] Unchecked

Math Operators and Logic Nodes

Sum

The Sum node outputs the sum of all input nodes (simple addition).

No attributes.

Sub

The Sub(traction) node subtracts the Subtracter value from the Input value and outputs the result.

Attributes
Name Description Range Input port
Subtracter Defines the value which will get subtracted from the input value. [-9223372036854775808, 9223372036854775808] Checked

Mul

The Mul(tiplication) node outputs the product of all inputs.

No attributes.

Div

The Div(ision) node outputs the quotient of the dividend (Input) and the Divisor.

Attributes
Name Description Range Input port
Divisor Defines the value by which the input value will get divided. [-9223372036854775808, 9223372036854775808] Checked

Remainder

The Remainder node outputs the remainder of a division. The remainder is the value that is left when the Input (dividend) is not completely divisible by the Divisor.

Formula
remainder = dividend - (divisor * roundedQuotient)
Attributes
Name Description Range Input port
Divisor Defines the value which will be used as the Divisor. [-9223372036854775808, 9223372036854775808] Checked

Mod

The Mod(ulo) node outputs the modulus of a division. It is essentially the same as the Remainder node, but will floor the Quotient.

Formula
modulus = dividend - (divisor * flooredQuotient)
Attributes
Name Description Range Input port
Divisor Defines the value which will be used as the Divisor. [-9223372036854775808, 9223372036854775808] Checked

Min

The Min(imum) node will always output the smallest of the input values fed into it.

No attributes.

Max

The Max(imum) node will always output the largest of the input values fed into it.

No attributes.

Abs

The Abs(olute) node will always output the absolute value of an input value. Simply put, it makes sure that the output value is always positive.

No attributes.

Pow

The Pow(er) node outputs a power, in which the Input is set to the power of Exponent.

Formula
output = input^exponent
Attributes
Name Description Range Input port
Exponent Defines the value of the exponent. [-9223372036854775808, 9223372036854775808] Checked

Cond

The Cond(ition) node compares the Input value against a Comparator value and returns 1 if the Condition is met, 0 if not.

Attributes
Name Description Range Input port
Condition Type Defines the Condition the comparison has to meet for the node to return 1.
Available operators
  • == (Input and Comparator must be equal)
  • != (Input and Comparator must be different)
  • > (Input must be greater than Comparator)
  • >= (Input must be greater than or equal to Comparator)
  • < (Input must be less than Comparator)
  • <= (Input must be less than or equal to Comparator)
Unchecked
Comparator The value the Input value is compared against. Checked

Converter

The Converter node allows it to output custom values if the Input falls within specified ranges. If the input value does not fall within these ranges, a Default value is used.
Depending on the node's settings, this Default value can either be

  • specified in the node's Attributes (or fed via the Default input port) or
  • the Input value.
The defined range will be [min, max), meaning the the min value is included, the max value is not.
Attributes
Name Description Range Input port
Default Defines the default value which will be returned of the Input value does not fall within any Interval. [-9223372036854775808, 9223372036854775808] Checked
Default from Input If true, the node will output the Input value directly if it does not fall within any Interval. true/false Unchecked
Intervals Allows to define the node's Intervals/Ranges. N/A Unchecked
Intervals: Min Defines the minimum (included) value of the interval. Unchecked
Intervals: Max Defines the maximum (not included) value of the interval. Unchecked
Intervals: Out Defines the output value if the Input value lies within the range. Unchecked

Interpolate

The Interpolate node allows it to smoothly interpolate between two Output values (Y) based on an Input value (X).

  • If the Input value is <= X min, the Output will be Y min.
  • If the Input value is >= X max, the Output will be Y max.
  • If the Input value is in between X min and X max, the Output value depends on the interpolation parameters.
Example
X min = 10, X max = 20
Y min = 0, Y max = 1
input = 15
input is right in-between 10 and 20
brought to Y range, output is 0.5
The min values do not have to be smaller than the max values.
Attributes
Name Description Range Input port
X min Defines the the Input value at which the interpolation starts. Output value == Y min. [-9223372036854775808, 9223372036854775808] Checked
X max Defines the the Input value at which the interpolation ends. Output value == Y max. [-9223372036854775808, 9223372036854775808]
Y min Defines the minimum output value. [-9223372036854775808, 9223372036854775808]
Y max Defines the maximum output value. [-9223372036854775808, 9223372036854775808]
Fade In Type Defines the curve function of the interpolation.
Only available if Clamp is activated.
  • Linear: Curve is linear
  • SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
  • Power of...
Unchecked
Fade Out Type
Clamp If activated, the interpolation is limited to Y min / Y max. If deactivated, the interpolation can continue in both directions and will keep the correlation between X and Y. true/false Unchecked
Enable Custom Curve Allows it to define a custom correlation between Input (X) and Output (Y) in the Curve Editor. Will disable all other attributes. N/A Unchecked

Env

The Env(elope) node allows it to smoothly interpolate from 0 to 1 and then back from 1 to 0 based on an Input value.

  • Between an Input value of A and B, the Output will interpolate from 0 to 1.
  • Between B and C, the Output will remain 1.
  • Between C and D, the Output will interpolate back to 0.
Example
A = 1, B = 4, C = 6, D = 10
Input = 0: result = 0
Input = 1: result = 0
Input = 2: result = 0.333
Input = 3: result = 0.666
Input = 4..6: result = 1
Input = 7: result = 0.75
Input = 8: result = 0.5
Input = 9: result = 0.25
Input = 10: result = 0
Input = 11: result = 0
Attributes
Name Description Range Input port
A Defines the the Input value at which the first interpolation starts. Output value == 0. [-9223372036854775808, 9223372036854775808] Checked
B Defines the the Input value at which the first interpolation ends. Output value == 1. [-9223372036854775808, 9223372036854775808]
C Defines the the Input value at which the second interpolation starts. Output value == 1. [-9223372036854775808, 9223372036854775808]
D Defines the the Input value at which the second interpolation ends. Output value == 0. [-9223372036854775808, 9223372036854775808]
Fade In Type Defines the curve function of the interpolation.
Only available if Clamp is activated.
  • Linear: Curve is linear
  • SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
  • Power of...
Unchecked
Fade Out Type

Smoother

The Smoother node smoothes out changes in the Input by interpolating from the old to the new value over time.

Attributes
Name Description Range Input port
Fade In Time Time in milliseconds the interpolation will take if the input value increased. [999999999] Unchecked
Fade Out Time Time in milliseconds the interpolation will take if the input value decreased. [999999999] Unchecked
Fade In Type Defines the curve function of the interpolation.
Only available if Clamp is activated.
  • Linear: Curve is linear
  • SCurve: Curve is "S-shaped". with a steep middle-part (volume = -6db when time = 50%) and gentle beginning and ending
  • Power of...
Unchecked
Fade Out Type

Average

The Average node Outputs the average of the Input values within a specified number of frames.

The node is (obviously) framerate-dependent and therefore not reliable when requiring accurate timings; e.g. when storing 30 frames:
  • Running the game at (constant) 30 FPS will result in getting the average of the last second.
  • Running the game at (constant) 60 FPS will result in getting the average of the last 1/2 second.
Formula
average = frameValueSums / framesNumber
// e.g capacity = 3, frame1 = 50, frame2 = 100, frame3 = 120
// average = (50 + 100 + 120) / 3 = 90
Attributes
Name Description Range Input port
Capacity Defines how many frames will be stored and evaluated. [0, 128] Unchecked

Filter

The Filter node is one-pole low-pass filter.

Attributes
Name Description Range Input port
Frequency Cut-off frequency N/A Checked

Delta

The Delta node outputs change of input over time.

Formula
out = (in - inLast) / timeSlice

No attributes.

Exponential Group Nodes

Exp

The Exp(onential) node multiplies the Input value with e (Euler's Number).

No attributes.

Ln

The Ln node outputs the Natural Logarithm of the Input value.

No attributes.

Log2

The Log2 node outputs the Binary Logarithm of the Input value.

No attributes.

Log10

The Log10 node outputs the Decadic Logarithm (or Common Logarithm of the Input value.

No attributes.

Conversion Group Nodes

Db2Gain

The D(eci)b(el)2Gain node converts an Input value (in dB) and outputs it as Gain.

Formula
gain = 10^(input / 20)

No attributes.

Gain2Db

The Gain2D(eci)b(el) node converts an Input value (in Gain) and outputs it as dB.

The initial/reference gain value will always be 1.
Formula
decibel = 20 * log10(input)

No attributes.

St2Gain

The S(emi)t(ones)2Gain node converts an Input value (in SemiTones) and outputs it as a Gain value. Alternatively, the Gain value can be interpreted as a relative pitch value.

The Input value hereby represents a change in SemiTones, meaning:

  • an Input of 0 outputs 1 (Baseline, no change in pitch),
  • an Input of -12 outputs 0.5 (half the baseline pitch/ one octave lover),
  • an Input of 12 outputs 2 (double baseline pitch/ one octave higher).
Formula
gain = 2^(input / 12)

No attributes.

Gain2St

The Gain2S(emi)t(ones) node converts an Input value (in Gain/relative pitch) and outputs it as SemiTones.

The Input value hereby represents a change in Gain/relative pitch, meaning:

  • an Input of 1 outputs 0 (Baseline, no change in SemiTones),
  • an Input of 0.5 outputs -12 (12 SemiTones/one octave lower),
  • an Input of 2 outputs 12 (12 SemiTones/one octave higher).
Formula
semiTones = 12 * log2(input)

No attributes.

Freq2Oc

The Freq(uency)2Oc(tave) node outputs the nth octave of the Input (frequency).

Formula
semiTones = input * 2^(Octaves)
Attributes
Name Description Range Input port
Octaves Defines the maximum output value. [0, 128] Unchecked

Freq2Mel

The Freq2Mel node converts an Input value in Hz and outputs it in Mel.

Formula
mel = 1127 * ln (1 + f / 700)

Mel2Freq

The Mel2Freq node converts an Input value in Mel and outputs it in Hz.

Formula
hertz = 700 * (e^(Mel / 1127) - 1)

Saturation Group Nodes

Floor

The Floor node rounds an Input value down to its next lowest integer (e.g 1.1 → 1, 1.5 → 1, 1.99 → 1, 2.001 → 2).

No attributes.

Ceil

The Ceil(ing) node rounds an Input value up to its next highest integer (e.g 1.1 → 2, 1.5 → 2, 1.99 → 2, 2.001 → 3).

No attributes.

Round

The Round node rounds an Input value up if its first decimal is >= 5 and down if not (e.g 1.4 → 1, 1.49 → 1, 1.5 → 2, 1.51 → 2).

No attributes.

Clamp

The Clamp node prevents the Output value from becoming larger than Max and smaller than Min.
If the Input value is smaller than Min, the Output will return Min.
If the Input value is larger than Max, the Output will return Max.

Attributes
Name Description Range Input port
Min Defines the maximum output value. [-9223372036854775808, 9223372036854775808] Checked
Max Defines the maximum output value. [-9223372036854775808, 9223372036854775808] Checked

ClampMin

The ClampMin node prevents the Output value from becoming smaller than Min. If the Input value is smaller than Min, the Output will return Min.

Attributes
Name Description Range Input port
Min Defines the maximum output value. [-9223372036854775808, 9223372036854775808] Checked

ClampMax

The ClampMax node prevents the Output value from becoming larger than Max. If the Input value is larger than Max, the Output will return Max.

Attributes
Name Description Range Input port
Max Defines the maximum output value. [-9223372036854775808, 9223372036854775808] Checked


Trigonometric Group Nodes

Sin

The Sin(e) node outputs the sine of the Input value.

No attributes.

Cos

The Cos(ine) node outputs the cosine of the Input value.

No attributes.

Tan

The Tan(gent) node outputs the tangent the Input value.

No attributes.

ASin

The A(rc)Sin node outputs the ArcSin of the Input value.

No attributes.

ACos

The A(rc)Cos node outputs the ArcCos of the Input value.

No attributes.

ATan

The A(rc)Tan node outputs the ArcTan of the Input value.

No attributes.


External References