VL.SCSynth 0.0.5-alpha

This is a prerelease version of VL.SCSynth.
dotnet add package VL.SCSynth --version 0.0.5-alpha
                    
NuGet\Install-Package VL.SCSynth -Version 0.0.5-alpha
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="VL.SCSynth" Version="0.0.5-alpha" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="VL.SCSynth" Version="0.0.5-alpha" />
                    
Directory.Packages.props
<PackageReference Include="VL.SCSynth" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add VL.SCSynth --version 0.0.5-alpha
                    
#r "nuget: VL.SCSynth, 0.0.5-alpha"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package VL.SCSynth@0.0.5-alpha
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=VL.SCSynth&version=0.0.5-alpha&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=VL.SCSynth&version=0.0.5-alpha&prerelease
                    
Install as a Cake Tool

VL.SCSynth

SuperCollider Server-Client Lib - foundation for vvvv and SC integration

What is this?

VL.SCSynth (SuperCollider Server)[^5] is a minimal implementation of a standalone client and server executor (scsynth)[^10] using partially VL.IO.OSC lib.

<cite>Read more about SuperCollider here</cite>

It supports all major OSC messages for manipulating the server itself and its Nodes, such as SynthDefs, Synths, Groups and Busses (check this list below).

Therefore it is bundled with all the appropriate functionalities to build your own messages and queries.

SCServer comes with an integrated SCClient (for receiving scynth responses). However SCClient can be used to access an active SuperCollider server by any machine, locally or internally.

[^10]: scsynth – A real-time audio server

Development Status

⚠️ This project is currently in active development and may be subject to breaking changes, deprecations, and unstable features. Not recommended for production use.

The Basics

Useful Notes
  • SCSynth (the node) : It is a wrapper (higher level) of SCClient. SCSynth can additionally execute a SC Server (the actual scsynth.exe) in CLI mode (no IDE / no UI) on a predefined port.

  • SCClient (the node) : This is the core communication handler and keeps the connection alive between vvvv and SC. It is responsible to Send and Receive all the commands via and from SC.

Important Notes

Every time you connect or disconnect a synth or a group from your node tree it forces SCRoot to freeAll and rebuild it from scratch. This means that in certain scenarios (i.e. SynthDefs which are using /doneActions) things may get weird.

Specifically, a Synth with a doneAction:0 , 2 (which forces it to be free after it is consumed) will break your vvvv node tree. If you want to prevent this, till we find a fix, better use doneAction:1 and use the t_trigger (triger controls) so the Synth is being paused and reused whenever is needful.

Preparations

In order to use VL.SCSynth in its full potential you will need to define / create a synthdefs folder next to your VL Patch (same as we do for Shaders or whenever a VL Factory is involved).

This is absolutely needful in order to get instances (synths) of your synth definitions as nodes in your vvvv patch.

Use SynthDefs to Instanciate Synths

<b>Check the example in your Help Browser (F1) "Custom SynthDefs"</b>

<ol> <li>Create a folder named "synthdefs" next to your project file (root)</li> <li>Populate the "synthdefs" folder with scsyndef files (compiled synthdefs)</li> <li>Call SYNTHDEFS category in your nodebrowser</li> <li>Pick and introduce a Synth (instance) based on the provided synthdef files</li> </ol>

Using Super Collider (IDE)

How to save a SynthDef File

In order to use a synthdef in vvvv context, first you have to compile and store it. Grace to the sclang.exe compilations is happenning under the hood, saving a file needs just a method to write/store your newly made synth definition on your disk.

Then you can browse it and introduce it through your node browser.

WriteDefFile

There are two options atm, both are using the .writeDefFile method. The most straight forward is to use the it without any arguments, this will compile and save (write on your disk) a .scsyndef file at your default synthdefs folder which can be found under the file menu (Open user support directory).

(
    SynthDef(\ASynth, { |out=0, freq=440, amp=0.1,  t_gate=1|
        var sig = SinOsc.ar(freq) * EnvGen.kr(Env.perc,t_gate, doneAction: 0);
        Out.ar(out, sig * amp);
    }).writeDefFile(); 
)

Find your SynthDefs in the default User Support Directory

<p float="left"> <img src="img/SC_FileMenu.png" alt="Open user support directory image" height="300"/> <img src="img/user_support_dir.png" alt="synthdef folder at user support directory image" height="300"/> <p>

Save it directly

The other way is to predefine a custom folder (probably your projects' synthdef folder) before you execute the method by passing a dir argument. <code> .writeDefFile("C:/yourproject/synthdefs", true); </code>

important

  • the path is unix like (fwd slashes)
  • prefer to add true on overwrite to avoid implications.

Troubleshooting

SCSynth fails with Error Code

<b>Server 'localhost' exited with exit code -1073741819</b>

Most probably there is something in the default synthdef folder which is preventing scsynth.exe to boot properly. Discard all the files (or the last added / suspcisious ones) and try to execute scsynth.exe again.

Another reason can be the port you are trying to reserve, keep in mind that the default port is 57110 and if the IDE (sclang) is up and running it will be bind on this one.

Wrong Parameters Values

If your synth's parameters looks messy then this happens because you are probably using a trigger control (t_argument), preferably declare "t_" arguments before any other argument, during the compilation SC prioritise triggers and brings them on top.

ie. Swap t_gate and bring it in front, do the same if you have more triggers on the same synthdef.

|t_gate=1, out=0, amp=0.5, freq=200, rel=0.2, <s>t_gate=1</s>|

Set triggers first.

|t_gate, t_trigger, t_something, out=0, amp=0.5, freq=200 ...| 

Unable To bind UDP port

This may happen occasionaly, a good practice is first to start SC in case you wan to use its IDE along with VL.SCSynth. However you may find yourself several times in this terrible position where Net realted errors will appear in the SC console during its startup or when booting the Server. Most of the times, if anything else seems to work but a hard restart try first a Networking Restart, it my becomes handy to do these steps:

  1. Run Cmd prmpt as Administrator
  2. net stop winnat
  3. net start winnat

Usually this fixes the problem if not then try Reboot you computer, if the problem persists then you may have a look to this thread in SC community forum.

Sponsoring

The development of this library was mainly sponsored by:

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.5-alpha 47 4/8/2026
0.0.4-alpha01 40 4/8/2026
0.0.4-alpha 48 4/8/2026
0.0.3-alpha 214 3/19/2025
0.0.2-alpha 360 3/19/2025
0.0.1-alpha 318 12/19/2024