Gdsion Save

A software synthesizer library for Godot (GDExtension).

Project README

GDSiON

GDSiON is a software synthesizer library implemented as a GDExtension for the Godot engine. It is originally based on SiON, a software synthesizer for the Flash and Adobe AIR platform, and just like its predecessor GDSiON is self-sufficient and allows for easy dynamic sound generation. You can drive the process using Music Macro Language (MML) notation or direct API calls.

The name of the synthesizer should be pronounced like the word "scion".

patreon-link discord-link

Download

This project is still in active development. There is no stable version available yet. You can download the latest unstable build and give it a try.

The project is compatible with Godot 4.3. It is recommended to use at least the 4.3-dev5 release.

These archives contain both release and debug binaries.

Please make backups when working with unstable libraries! Bug reports are highly appreciated as well.

Setup

  1. Download GDSiON or build the project yourself.
  2. Copy the bin folder from the archive (or your compilation results) to your project's root folder.
  3. Make sure that you now have a res://bin folder, and that it contains libgdsion.gdextension and some other files starting with libgdsion.
  4. Restart the editor, and start using the synth!

[!TIP] You can type "SiON" in the editor's built-in help search to find available classes.

Usage

First, you need to create a SiONDriver instance and add it to the scene tree. Only one driver can exist at the same time. (Some internal global objects are stateful and having multiple drivers can lead to conflicts.)

var driver := SiONDriver.new()
add_child(driver)

To confirm that everything works as intended, try playing a simple tune in the MML format, once the driver node is ready:

driver.play("t100 l8 [ ccggaag4 ffeeddc4 | [ggffeed4]2 ]2")

You can also play a melody by directly feeding the driver your notes, one by one or as a sequence. GDSiON is capable of emulating a variety of instruments and algorithms, which you can configure for your playback.

Check the example project for an interactive demo!

The example project archive contains GDSiON binaries for all platforms. May require you to open the project twice to import everything correctly.

Projects using GDSiON

Another way to learn more about GDSiON's capabilities is to try one of the projects below:

Building

GDSiON is implemented on top of godot-cpp, a C++ wrapper for GDExtension. It shares requirements with it and the engine itself.

The project uses the SCons build tool, and, once it's installed on your system, GDSiON can be compiled as easily as running:

scons

There are several build options available, allowing you to target a specific platform or build configuration, enable development features and change optimization level. Please refer to Godot documentation for developers for more details.

[!NOTE] This project uses Git submodules. You need to use git clone [email protected]:YuriSizov/gdsion.git to correctly check out everything needed for the build. The ZIP archive generated by GitHub does not contain submodules and is not enough to compile GDSiON.

How can I help?

You can help, first and foremost, by testing GDSiON and reporting any stability issues, incorrect behavior, and missing API.

At the current stage the project is still considered to be incomplete, and efforts are made to port the remaining classes and systems to the new platform. As a developer and a potential contributor you can assist in these efforts. Please try to get in touch first if you want to work on porting any of the missing parts. Existing FIXMEs and TODOs are open for everyone.

We would also appreciate assistance with setting up the CI, introducing tests, code style enforcement, writing documentation, etc. Code style, code quality, and architecture/design suggestions are welcomed as well.

If you have a functional suggestion, feel free to submit it! But please do be patient. Authors of this project are not very well versed in audio production and currently aim to get what already exists in the original SiON project working and available in this extension. It may take a bit of time to understand and address your needs.

License

This project is provided under an MIT license. Original SiON software synthesizer library is provided under an MIT license.

Support

You can support the project financially by donating via Patreon! Every dollar helps, so please consider donating even if it's a little. Thank you very much <3

Open Source Agenda is not affiliated with "Gdsion" Project. README Source: YuriSizov/gdsion
Stars
55
Open Issues
5
Last Commit
2 weeks ago
Repository

Open Source Agenda Badge

Open Source Agenda Rating