User Tools

Site Tools


gamedev:deigde:editors:synthesizer

IGDE Synthesizer Editor

The synthesizer editor allows to edit Synthesizer resources (*.desynth) for your game. Synthesizers produce sound using sources. The production process is controlled using controllers linked to source properties. Since sound produces many samples per second the controllers are defined by curves.

Synthesizer editor preview

The editor window composes of the property panels.

Controllers

Controller panel

Controllers are used by game programmers to adjust the sound production. In general the artist defines the controller ranges but game programmers can overrule them to make their life easier. This does not interfere with the sound production process. The output of the controller is a Bezier Curve with the curve Output Value linearly mapped from the range Minimum Value → Maximum Value to the range 0 → 1. See Bezier Curve Editor for usage. The elapsed synthesizer time is the curve Input Value.

Controllers are typically accessed by the game developer using the unique Controller Name (case sensitive). This allows to mix and match different animators with differing controller setups (count, ordering and ranges) as long as the required names are present.

The controller list is an ordered list. For this reason controllers are shown with their index number too. Game developers can use this index number as an alternative to controller names.

The Clamp value to range check box determines if the input value (elapsed play time) is clamped to the controller range or wraps around if going past the range.

Below the curve editor some buttons are located to quickly set the curve using typical shapes to while playing back the synthesizer. It is possible to change the curve while the synthesizer is producing sound but you have to set the curve ahead of time otherwise artefacts can happen. The Synthesizer Module decides what ahead-time is used.

The Const button sets the curve to a constant curve using the value from the input field.

The Linear button sets the curve to a linear curve ranging from (0, Minimum Value) to (Play time, Maximum Value).

The Inverse button next to it set the same linear curve but with the Minimum and Maximum value flipped.

The Bezier button sets the curve to a bezier curve ranging from (0, Minimum Value) to (Play time, Maximum Value).

The Inverse button next to it set the same bezier curve but with the Minimum and Maximum value flipped.

Links

Link panel

Links map controller values to source target input values using bezier curves. The artist is in full control of links. This decouples controller ranges allowing game programmers to freely manipulate them as they need.

The curve input range is 0 → 1. The curve output range is also 0 → 1. Hence using a default linear curve forwards controller output values unmodified to rule target input values. See Bezier Curve Editor for usage.

Links have a unique Name used to identify them in source targets. The link list is sorted alphabetically.

The Controller value indicates which controller is used as input for the link. If no controller is assigned the link uses 0 as input value.

The Repeat value allows to repeat the curve multiple times. This is useful for jig-saw type curves which can not be done with a bezier or linear type curve. This is also useful for overlaid detail sources. There you can easily adjust their play speed relative to the main source.

Sources

Sources define how the sound is produced. Sources are processed from top to bottom in the order they are specified. Sources can produce pre-recorded sound or procedurally calculated sound. See Synthesizers for a comprehensive explanation of source types. Depending on the selected source type the panel layout below is different.

Sources can be grouped using the Group sources. Groups can be unfolded in the list. Inside a group children sources can be added. The sound output of the group source is produced by processing the children sources from top to bottom in the order they are specified.

General Settings

Parameters present for all source types.

The Name is the unique name of source. It is used for editing purpose only and is ignore in-game.

The Mix Mode defines how the produces sound is mixed with the sound produces by prior sources. Supported are Add to add the sound to the mix and Blend to cross-fade (blend) between the prior sound and the produced sound.

The Blend Factor defines the strength of the sound in the mix (percentage value).

The Minimum Volume and Maximum Volume define the volume range if the Volume target is linked to controllers. A controller output value of 0 uses the Minimum Volume. A controller output value of 1 uses the Maximum Volume. Values in between blend linearly between the minimum and maximum volume. If no controller is linked the Minimum Volume is used.

The Minimum Panning and Maximum Panning define the panning range if the Panning target is linked to controllers. Panning defines the position of the sound relative to the listener and is only used if more than 1 channel is used. A value of -1 places the sound on the far left side. A value of 1 places the sound on the far right side. A controller output value of 0 uses the Minimum Panning. A controller output value of 1 uses the Maximum Panning. Values in between blend linearly between the minimum and maximum panning. If no controller is linked the Minimum Panning is used.

If Enable Source is ticked the source produces sound otherwise it is skipped.

The Targets and Links panel is present for all source types. The list of available targets depends on the source type. Targets define source parameters that can be manipulated using controllers via links. Each target can have one or more links assigned. If more than one link is assigned their output values are multiplied together. For this reason links produce output values in the range 0 → 1. If no link is present an input value of 0 is used.

The last panel below changes according to the type of the selected source. See Synthesizers for an explanation of the parameters used.

Effects

Each rule can be assigned Effects to modify the produced sound. Effects are applied by the order in the list from top to bottom. Effects can be enabled and disabled. Effects have targets like sources to manipulate their targets.

Synthesizer Settings

Synthesizer settings

Defines the synthesizer parameters and allows to test-play the synthesizer.

The Channels defines the number out channels the synthesizer produces sound for. For in-game speakers mono sound sources (1 channel) should be used. For menu music or in-game music stereo sound sources (2 channels) should be used. Multi-channel synthesizers are possible if the user has appropriate sound systems at his disposition. The support for such setups depends on the Audio Module used by the customer. You should not rely on such hardware to be present.

The Sample Rate defines the sample rate of the sound produced by the synthesizer. Typical values are 44100, 22050 and 11025. Recommended is 44100. Lower fidelity sound sources are useful to reduce file sizes and processing time but they introduce artefacts which are notice with certain sounds.

The Bytes Per Sample defines the count of bytes required to represent one sample. Typical values are 1 and 2. Recommended is 2. Lower fidelity sound sources are useful to reduce file sizes and processing time but they introduce artefacts which are notice with certain sounds.

Sound sources (*.ogg for example) have to match the synthesizer Channels, Sample Rate and Bytes per Sample. If they do not match the will be ignored.

The Sample Count defines the count of samples produced by the synthesizer. Synthesizers are always finite in length but can potentially loop forever. Changing the sample count recalculates the play time in seconds of the synthesizer.

The Play Time defines the length of the synthesizer in seconds. Changing the play time recalculates the sample count of the synthesizer.

The Playback / Testing controls playback to test the synthesizer using a speaker played in the editor.

You could leave a comment if you were logged in.
gamedev/deigde/editors/synthesizer.txt · Last modified: 2020/04/05 17:58 by dragonlord