Skip to content

cnisidis/VL.SCSynth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VL.SCSynth

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

What is this?

VL.SCSynth (SuperCollider Server)1 is a minimal implementation of a standalone server executor (scsynth)2 using the VL.IO.OSC lib.

Read more about SuperCollider here

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.

Some useful notes

SuperCollider Server replies on the same port it listens to, since TCP is not supported yet in this version, you can get the OSC responses (via UDP) by exposing the hidden "Data" output pin on the OSCClient.

Expose Data Pin

This functionality is already managed internally in order to get the status of the server, it's versions, and other useful information.

Both SCServer and SCClient are inheriting their methods from ISCSynth. This name was picked in order to signify that both are implementing and sharing methods to communicate directly with any active scsynth.

In example, once you started scsynth (either via SCServer or directly or by using the SC IDE), you can access it by introducing a SCClient on the VL side, respecting the IP Address and the binded port.

SCServer Options

So far only few options are being supported (the plan is to add all the available options). The idea was to keep it simple and minimal by adding only essential things.

  • So you can choose if Server will use either the UDP or the TCP Protocol.

  • Define Verbosity level.

  • Bind a certain IP address.

  • Bind a port for vice-versa communication.

for more info regarding the scsynth arguments see:

scsynth_main.cpp on github

Server Commands & Messages (WIP)

Implemented according to Server Command Reference

Basic

Node Name (in gamma) OSC Address Notes
ServerStatus /status (internal) Returns an object of type: ServerStatus
ServerVersion /version (internal) Returns an object of type: ServerVersion
DumpOSC /dumpOSC Console Log
Notify /notify Console Log
Error /error Console Log

SynthDefs

Node Name (in gamma) OSC Address Notes
ReceiveSynthDef /d_recv Returns /done message
LoadSynthDef /d_load Returns /done message
LoadSynthDefDirectory /d_loadDir Returns /done message
DeleteSynthDef /d_free -

Nodes (Synth, Group, Bus)

Node Name (in gamma) OSC Address Notes
DeleteNode /n_free -
RunNode /n_run -
SetNodeValue<T, U> /n_set Using SynthParameter Object

SynthParameter

A Record<U,T> type object holding two fields:

  • Name or Index can be either type of String or Integer32
  • Value can be an Integer32, Float32 or String

Before You Go

SCServer is still in progress, so changes will be often and may cause breaking changes.

One important thing (which still needs some polishing) is that you have to set the SuperCollider installation folder manually every time you introduce the SCServer node.

Footnotes

  1. See Client vs Server Documentation

  2. scsynth – A real-time audio server

About

Super Collider Server Lib - foundation for vvvv and SC integration

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published