Proposal: Unity Asset Store or GitHub Package Integration

Proposal: Unity Asset Store or GitHub Package Integration

Greetings,

I would like to propose the development of a Unity Asset Store or GitHub package that integrates the capabilities of SuperCollider into Unity. The objective would be to create a bridge between Unity and SuperCollider, or alternatively between Wwise and SuperCollider, enabling seamless data transmission back into Unity. This integration could offer developers powerful sound synthesis options and real-time audio manipulation within their interactive Unity projects.

Key Features

  • Provide access to SuperCollider's sound synthesis and audio processing engine within Unity environments.
  • Create a bi-directional data bridge between Unity and SuperCollider for real-time interaction.
  • Potentially integrate this with Wwise to take advantage of its advanced audio authoring tools and expand its functionality.
  • Ensure compatibility with Unity's real-time engine for interactive experiences, whether it's a game, VR, or other creative applications.

Implementation Thoughts

Whether this becomes a Wwise extension or a direct Unity extension, the possibilities offered by combining these platforms are vast. This bridge would allow users to:

  • Take advantage of SuperCollider's dynamic sound generation capabilities inside Unity.
  • Enable complex audio manipulations that can react to real-time game logic.
  • Possibly facilitate communication between SuperCollider's audio synthesis engine and Wwise’s audio middleware for advanced audio experiences.

Encouragement for Development

I believe this could be a particularly exciting and valuable project for the audio-visual development community, allowing for richer and more complex sound design workflows in Unity-based environments. Therefore, I would like to encourage the development of this project and look forward to the progress in this area.

Thank you very much for your time and consideration.

Best regards,
T.

Can’t be used in commercial games (which are by and large closed source) because of GPL.

This means most users will be running this locally for their own art projects, and at that point, it is much easier to have supercollider open an executable made by a game engine and communicate over osc to it. There are a few good osc add-ons for unity - I adapted one so the object hierarchy becomes the osc namespace. This is much easier than trying to pass supercollider code from unity.

2 Likes

I don’t think this is true at all.

When we shift the focus from individual preferences to community-driven standards, we enable greater collaboration, consistency, and efficiency.

How is the Unity Assert Store a “community-driven standard”? It’s a commercial platform. I’m not even sure how your last post relates to your original request…

As @jordan has pointed out, SC’s license is not compatible with Unity. Here’s a quote from the submission guidelines:

1.2.e Submissions do not contain dependent licenses that require a product to maintain open-sourced or limited usability in commercial products such as GNU/GPL Mozilla Public License, or any Creative Commons/Apache 2.0 license that requires attribution.

As you can see, it is not possible to publish SC-based software on the Unity Asset Store.

So much for the subject of “community-driven standards”…

I think it’s quite interesting to speculate on what supercollider (or something like it) could be on a more permissable licence (say MIT). It’s a shame that students who learn software designed specifically for interactive audio aren’t able to use that software in the largest interactive audio industry (games). I wonder if there is a whole to be filled here?

It’s a shame that students who learn software designed specifically for interactive audio aren’t able to use that software in the largest interactive audio industry (games).

You can, just use Godot :slight_smile: Godot Asset Library → License

In reality, game dev has its own set of audio engines and authoring tools, so if you want to work professionally, you need to learn and use these anyway. SC can still be used for internal prototyping, though!

But you can’t release the game as closed source if you embedded supercollider, or can you - licences confuse me?

I actually don’t know what other alternatives there are and how they compare :smile: A while ago I looked at wwise, so this is probably our of date, but it seems quite limited compared to the what you could do with, say, altering patterns based on game state.

You can’t :slight_smile: I’d agree that it might be nice if SC was released under a more permissive license (personally, I think LGPL is a decent middleground), but it won’t ever happen.

1 Like

I think GPLv3 would permit a closed-source client to run a separate scsynth process and communicate with it using OSC. If it’s an unmodified scsynth + plugins, it wouldn’t be necessary to publish the source. Any mods would have to release source code.

Linking libscsynth AFAIK wouldn’t be allowed (since that’s one of the key cases for GPL: to prevent closed-source projects from appropriating open-source libraries).

hjh

I’ve already wanted to write this after your previous post: please don’t use an AI to write your forum posts (beyond grammer/spelling fixes)! Nobody wants to read a wall of verbose AI talk.

To address the most important point:

In terms of open-source licensing, we might also consider the case of SuperCollider and its adoption of the MIT license.

You cannot simply change the license, that is the very point of the GPL! The only way to do this is to get the written permission of every contributor. Some major contributors have already said that they would never agree to such relicensing (see for example Commercial licensing (again) - #2 by VIRTUALDOG).

is at least grammarly ok, for the sake of text proof reading? like i said, i want to be a cyborg (or at least an AI agent). but only when it will become safe

Yes, I think that’s definitely ok.

like i said, i want to be a cyborg (or at least an AI agent).

I think your fellow readers prefer if you don’t…

On a more serious note: please don’t spam this forum with AI generated content.

2 Likes

Incidentally (or, crucially), this isn’t just a matter of opinion – it’s a clause in the forum Terms of Service:

By making Content available, you represent and warrant that: … the Content is not spam, is not machine- or randomly-generated…

Accordingly I’ll flag and remove a couple of posts in this thread.

Grammarly isn’t en-masse generation of large blocks of unreliable material – machine correction of human-written text is fine.

hjh

1 Like

I would imagine language translation (if/when it is good) would be acceptable too?

As a sound designer working in the game industry I would love to see Supercollider integrated within the game audio workflow but as mentioned previously by @jordan is at the moment impossible due to licenses. While ago I’ve tried to authoring my own plugins for Wwise converting PureData patches into C++ code using the Havoc compiler. It was very fun and powerfull but eventually we couldn’t use it because licences :frowning:
I wonder if things are different with Godot, could we potentially use SC within its engine? They’ve recently released a Wwise integration for Godot.

Godot is licenced under MIT, SC under GPL2 and GPL3. According to this, they are compatible.

The MIT License is highly compatible with other permissive licenses. Including the BSD family of licenses. It is generally compatible with GNU GPL group of licenses. However if you distribute the code that contains or is derivative of GNU GPL code the final project must of GPL compliant. In other words any source code must of publicly available.

1 Like

That’s great!
I’m very ignorant about this topic how hard would it be to give Godot the the access to scsynth?

Not difficult at all, depending on your needs.

I’ve used Godot to control SC/SonicPi in the past. Since Godot can send OSC messages, the easy setup is to launch SC with Godot when the project starts (piping through shell), then to send OSC messages with Godot when needed to control synths, or to trigger larger events (possibly using sclang to do so). This comes at the cost of a small latency (OSC needs to travel through network), which, depending on your needs, might be acceptable or not.

There are other considerations to take into account depending on the scale of your project. Godot aims to help video games business, it tries to provide a software that is competitive with other commercial softwares, even if licenced under MIT (see the recent game Dome Keeper). Providing a simple executable that includes Godot + SuperCollider and runs out of the box on every OS might be too costly to be envisaged. CPU/RAM management is way simpler when there’s only one program running at once.

As an example, I’ve seen in the Godot documentation (I think) that most of the time, video games sound designer do not apply reverb to their sound before exporting them, because reverb increases sound file length dramatically. Instead, they provide ‘dry’ sound which are played through a single dedicated reverb bus that is running while the game is running.

To give this a better context as far as I understand:

  • Already publishing SuperCollider as-is in e.g. e.g. the Apple AppStore is difficult b/c of the GPL, see More about the App Store GPL Enforcement — Free Software Foundation — Working together for free software - IIUC: Apple TOS states you are not allowed to copy anything from the AppStore, which is contrary to the GPLv2. SuperCollider actually uses GPLv3 which changes nuances about this, but there is a consent that this still is not compatible.
  • To my understanding: Linking GPL code can only happen in a GPL environment - so if you want to use sclang or scsynth directly within your project/binary, this is only possible if your project is licensed under GPL - this is what copyleft is about.
  • GPL only affects when one is linking the program/lib, but scsynth can be used without linking by sending OSC messages to the server - so one could use scsynth from within a non-GPL project. It would be even possible to bundle scsynth with such an application (e.g. during installation), but this is also most likely not feasible due to the first point. If SuperCollider would be licensed under AGPL, this would not be possible.

A bit OT but a really interesting talk as a primer about state of the art sound synthesis in recent game development: https://www.youtube.com/watch?v=N-dPDsLTrTE (starts at around 37:00)

2 Likes

I see your points.

The problem is that using OSC to communicate with SC will imply having SC being opened and running at the same time. That’s not very useful when it comes to build the game and distrubuting through different platforms.
SC should be embedded within the game engine such as Godot or Unity. I remember watching a talk where a developer managed to use SC within Unity through its visual scripting language, something similar to Metasound in Unreal engine.

You can, of course, start scsynth from your game.

SC should be embedded within the game engine such as Godot or Unity.

It depends what you mean by “embedding”. As @dscheiba tried to explain, if you run scsynth as a separate process, that would work, but if you link directly against libscsynth the whole program would need to be licensed under GPLv3. But again, even in the first case you might run into problems with some app stores or SDKs. To give another example, SteamWorks does not accept the GPL: Distributing Open Source Applications on Steam (Steamworks Documentation)

1 Like