yurisizov / gdsion Goto Github PK
View Code? Open in Web Editor NEWA software synthesizer library for Godot (GDExtension).
License: Other
A software synthesizer library for Godot (GDExtension).
License: Other
Right now the GDSiON extension provides only the auto-generated documentation, containing method and property names and types, but no functional description or guidance.
GDExtensions may not support XML documentation yet, so in the meantime any other means to describe the functionality should be explored, including Markdown files and GitHub wiki.
The original SiON project has quite a lot useful comments with descriptions and examples, which can be lifted as a starting point. Note that some liberties were taken when porting certain aspects of the original implementation, so care must be applied when borrowing descriptions. I also noticed a few outdated comments/errors/copy-paste mistakes while working on the codebase.
There is currently no way to get GDSiON other than compiling it on your own. This naturally limits the adoption and won't cut it for the stable release.
GitHub Actions CI should be used to compile binaries for all target platforms (Windows, Linux, and macOS for now; web requires further testing). We can have a fixed "Release" entry for unstable/main-branch builds, which is going to be auto-updated through the same CI process. Then clear and obvious download links can be added to the readme file as well.
tried to scons and build this but it didn't work.
excited to try this out!
The original code relies on some sort of garbage collection and doesn't care much about freeing allocated memory. It also practices a pattern where objects are never freed after allocation, but instead are put into a pool for future reuse.
As I ported the code, I decided to not bother with resolving leaks like that to allow for quicker pace. But the goal is to resolve them eventually. As the first step we must look into Godotifying some of the types, even if they are not supposed to be exposed. Converting appropriate types to RefCounted, or even Resource, will help automate memory management, especially when multiple objects can reference some data, and we can't cleanly dedicate one of them to handle the memory.
For the rest, normal calls to memdelete
in the destructor should be sufficient. Following Godot's approach, we don't rely on STL in this project and all memory management is done using Godot's facilities.
The original library had quite a few cool and public demo projects (which you can find here http://wa.zozuar.org/user.php?name=keim_at_Si with their source code available).
It would be a good idea to port some of these to both test the new library and showcase its capabilities better, given how broad they are. Demos should probably be stored in a separate repo, so if you want to help with this task and the repo is not set up yet, please let me know.
As a word of warning, at least some of the demos use classes not available in the current version of GDSiON. This is because the initial version of this port focuses on the core of the library, and parts which are either used internally or needed for the project that I'm making with GDSiON. Notably, there is a whole high-level SoundObject
abstraction (https://github.com/keim/SiON/tree/master/src/org/si/sound) with an extensive network of related classes which can be very helpful for end users. These need to be ported first, either as a part of this project, or as a auxiliary tool (to keep things lean).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.