Godot Synth

by EclipsingLines

17

ko-fi GitHub Release

Website GitHub Downloads (all assets, all releases) GitHub Sponsors

Godot Synth Engine

A powerful and flexible synthesizer engine for Godot 4, providing virtual analog synthesis with extensive modulation capabilities and audio effects.

Installation

Download latest zip or directly from the asset library.

image

Enable the plugin custom inspectors by navigating to:

Project / Project Settings... / Plugins
and enable the plugin
image

Features

  • Virtual Analog Synthesis: High-quality oscillators with multiple waveform types
  • Extensive Modulation System: ADSR envelopes, LFOs, velocity tracking, keyboard tracking, and note duration modulation
  • Rich Effects Processing: Filters, delays, distortion, reverb and more
  • Fully Scriptable: Complete control from GDScript
  • Polyphonic Playback: Support for multiple simultaneous voices
  • Preset System: Create and save your own sound presets

Core Components

AudioSynthPlayer

The main player node that handles audio playback and voice allocation.

@export var sound:SynthConfiguration
var synth
func initialize_synth() -> void:
 synth = AudioSynthPlayer.new()
 synth.configuration = sound

SynthNoteContext

Represents a playing note and provides control over its lifecycle.

var context = synth.get_context()
context.note_on(note, velocity)  # Start a note
context.note_off(time)           # Release a note
context = null                   # Release the context object from memory

Always use a new context for each note, this allows you to do "articulation" on the played notes, you can use tweens, lerps and curves to drive the values in the context.

Tip

Use curves to drive the velocity for a more natural sounding voice.

VASynthConfiguration

Configures the virtual analog synthesizer with oscillators, parameters, and effects.

image

Tip

You can save your own variations of any of the included resources
Build yourself a library of sounds, modulators, effect chains and effects using Godot's built in resource management.

Modulated Parameters

These are parameters that change automatically over time.

image

  • Multiple modulation sources
  • Visual approximation of the modulation range
  • Real time visualization of the modulation source shape

Modulation Sources

LFO

Low Frecuency Oscillator

image

  • Sine wave
  • Triangle wave
  • Saw Wave
  • Square wave
  • Random

ADSR Envelope

Attack-Delay-Sustain-Release Envelope

image

  • Multiple attack, decay and release shapes
    • Linear
    • Logarithmic
    • Exponential

Velocity

Velocity is controlled from the note context, this allows for controlling modulation parameters from GDScript.

Velocity is hardcoded to amplitude on all patches.

Articulation

Articulation is a freely assignable parameter that allows controlling any modulated parameter directly from GDScript.

Keyboard Tracking

Uses the midi note for modulation, useful for filters and other effects.

Note duration

Uses the total duration of the note for modulation.

Effects

Important

These effects all accept modulation parameters, which also makes them more CPU intensive than the Godot counterparts.
If you don't need modulation on the effects please consider using the Godot audio effects in your audio bus instead.

The synth engine includes a variety of audio effects:

Filters

  • LowPassFilter, HighPassFilter, BandPassFilter, NotchFilter
  • FormantFilter, MoogFilter, MS20Filter, SteinerParkerFilter, ShelfFilter

Delay Effects

  • DelayEffect, PingPongDelay, FilteredDelay, MultiTapDelay
  • TapeDelay, ReverseDelay, CombFilterDelay

Distortion

  • ClipDistortion, WaveShaperDistortion, FoldbackDistortion
  • BitcrushDistortion, OverdriveDistortion, FuzzDistortion, RectifierDistortion

Spatial

Warning

The reverb is currently not enabled due to CPU issues.

  • Reverb

Presets

Small collection of predefined set of parameters, can be used directly or as a starting point for more complex sounds.

Warning

The current presets are part of the public beta and will most likely change.
Do not rely on these for production sounds and always save your own sound resources

Basic Usage Example

Check the piano_keyboard scene inside the addons folder, this scene allows your to test sound configurations.
Check the synth_player node for more information on a how to play notes.

Planned Features

  • Virtual Analog Engine

  • Chord Engine

  • 4 OP FM Engine

  • Formant Engine

  • Wavetable Engine

  • Custom editor window for testing sounds in editor

  • Single track step sequencer module

  • LFO lookup table caching

  • SIMD optimizations

  • Sound caching and async preloading

  • Gold braided cable end simulation

  • Warmer tone slider

Contributing

This project is open for contributions, if you are knowledgable in sound design, audio processing, SIMD operations or any other related field please consider contributing to the project.

I am looking for people to help create presets, optimize the code and implement new engines.

I would also kindly take a donation.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Version

0.95

Engine

4.4

Category

Misc

Download

Version0.95
Download Now

Support

If you need help or have questions about this plugin, please contact the author.

Contact Author