A new cross-platform GUI kit intended to replace Cocoa and an alternative to SwingOSC. See What's new in Qt GUI for more.
Also a new method Help: *methodArgs returns a human-readable string of arguments and default values for a method. Example:
In SuperCollider version 3.5.2, SCDoc has been rewritten and the parser is now implemented in C++ for speed and stability. The syntax has gotten stricter, and it will throw errors or warnings if there are faults in the documentation. See Writing Help: News in SC 3.5.2 for some important changes to keep in mind.
OSCFunc can receive on any port, not only the main
The sclang startup file has moved to
Platform.userConfigDir +/+ "startup.scd". Old platform-specific startup file locations have been deprecated. The new startup file is plain-text, rtf is not supported.
The Linux-only library configuration file has been deprecated. It is replaced by a cross-platform language configuration file, which is located at
Platform.userConfigDir +/+ "sclang_conf.yaml" . It can be configured via the LanguageConfig class.
The GEdit plugin sced has been updated to support GEdit version 3.
WiiMote.discover now returns the device object, or nil if it failed.
Bus-asMap symbols are now allowed in
\freq and friends in patterns.
Warnings are posted when extensions overwrites methods in main class lib, unless the extensions are put in a subfolder named "SystemOverwrites".
It was already allowed to have a trailing comma in arrays:
[1,2,3,], but now it's also allowed in Event construction and message arguments:
A lot of bugs has been fixed, for example: String regexp primitives, multichannel wrappers of SequenceableCollection, CoinGate.ar, T2K, WiiMote, SynthDesc.
The sclang now uses token threading1 instead of one huge switch statement for bytecode dispatching.
The PriorityQueue now provides a stable heap order: items of the same time value will have a FIFO order.
plot has been changed to use the Plotter class, which was formerly used by the
plot2 has been deprecated, the old behavior is still available via the
plotOld methods, which have also been deprecated.
The Panner and XFade classes that been used internally are now deprecated. UGens are better off, implementing the
*.quark files are now allowed to be within the quark itself rather than in the DIRECTORY. This allows manually installed quarks to be easily managed by Quarks: *gui
Instead of the non-cross-platform bullet-character (•), the error token in error messages are now underlined with
^^^ characters instead.
For example, the code
[a, %%&&**, b] results in:
line 1 char 10: [a, %%&&**, b] ^^^^^^
The bitwise operators
<< (left shift) and
>> (right shift) are now supported server-side on audio and control signals. Example:
The new VarLag UGen provides the same functionality as Lag but with linear and other curves.
A new method Node: -onFree runs a function when node finished playing.
LocalIn now has an input for initial value.
/b_free also free's soundfile if open (like
A shared-memory interface to the server has been introduced. This allows scoping and synchronous control bus access for local clients.
The recursive filter loop for HPF and RHPF has been changed to double-precision in order to avoid quantization noise. Pieces that depend on the quantization noise can make use of the GlitchUGens provided in sc3-plugins, which implement the old behavior.
Plugins should use the
PluginLoad macro as entry point instead of implementing a
load funcion. This allows ABI version checks and ensures that the entry point function is correctly exported from the shared library. See Writing Unit Generators for details.
A new FFT API for server plugins has been introduced: this simplifies writing FFT ugens in a cross-platform manner, since no external FFT libraries are required.
A new multi-processor implementation of scsynth. Parallelism of the synthesis graph is exposed to the user via the ParGroup class. Supernova is currently Linux-only. It is not provided in the macOS/Windows binaries. In order to play patterns inside a ParGroup, the PparGroup can be used. Scsynth emulates parallel groups with groups.
Plugins have to be adapted by acquiring spinlocks when accessing busses or buffers. See Writing Unit Generators for details.