-
-
Couldn't load subscription status.
- Fork 101
Description
Describe the project you are working on
Godot
Describe the problem or limitation you are having in your project
Sound designers in the industry end up having to use tools such as FMOD or Wise, with not really any FOSS alternative. Godot users are forced to use this bit of proprietary software in order to have more advanced audio in their games.
Interactive music is being handled by a separate PR/proposal being worked on, so this focuses entirely on procedural audio.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
This would be a special AudioStream resource in Godot that would make it possible to have procedural/parametrizable audio playback in Godot.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
A new AudioStream class will be added: AudioStreamGraph. When edited, it will look like this:
The general idea is that the editor will be divided in two.
- Audio Graph
- Stream Positions
In the audio graph, several AudioGraphNodes will exist. Those have input and output Audio connections, as well as Controller connections (as a different type of data port).
The following audio graph nodes will be present:
Basic
- Output (comes by default)
- Stream: Allows setting any AudioStream in Godot. When one of these audio graph nodes is present, user will be able to adjust the offset on where it starts playing.
- Effect: Allows setting any AudioEffect from Godot (from the existing ones), which can change the sound accordingly. Audio effects export parameters, so these parameters will appear as input controller connections.
- Parameter: A named parameter, this parameter exports a controller output and can be named. This will appear as editable property in the AudioStreamPlayer[2D/3D] nodes. If a parameter is not connected to a controller, a default value can be set in the input port itself, like with Visual Shader and Visual Script.
Generators
These generate audio output:
- Oscillator: Simple oscillator (sine/saw/etc)
- Noise: Noise generator (pink/white/blue/etc).
Operators
These combine audio outputs:
- Mixer: Adds two audio streams
- Modulator: Multiplies two audio streams
- Frequency Modulator: Does frequency modulation to two audio streams
And the idea is to have what is common in this type of software for controlling parameters, such as LFO, Envelopes, etc. This is just the general proposal.
If this enhancement will not be used often, can it be worked around with a few lines of script?
Audio is low level.
Is there a reason why this should be core and not an add-on in the asset library?
While this could be an add-on, games often require a mature and maintained solution for this. Given the popularity of tools such as Wise and FMOD, it sounds like it should be better this is core.
