A new cross-platform GUI kit intended to replace Cocoa and an alternative to SwingOSC. See What's new in Qt GUI for more.
A new help-system provides consistent documentation with good introspection and easy searching and browsing.
The help-files are written in a markup language which is then parsed and used to generate HTML files, which are displayed with the new WebView widget inside the HelpBrowser.
See SCDoc, SCDoc Syntax, Writing Help.
Also a new method Help: *methodArgs returns a human-readable string of arguments and default values for a method. Example: Help.methodArgs("SinOsc.ar")
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.
The new OSCFunc and MIDIFunc provides better alternatives to the old OSCresponderNode and NoteOnResponder, etc.
OSCFunc can receive on any port, not only the main NetAddr.langPort
.
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".
New cross-platform filesystem utilities: File: *copy, File: *mtime, File: *mkdir, File: *realpath, File: *type, File: *fileSize
String: -openTextFile now works also on frontends without Document support. It falls back to String: -openOS to open the file with the default application for that file type.
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
methods. plot2
has been deprecated, the old behavior is still available via the plotOld
methods, which have also been deprecated.
The UI class has been deprecated. Its functionality is now provided by the ShutDown and OnError classes.
The Panner and XFade classes that been used internally are now deprecated. UGens are better off, implementing the checkInputs
explicitly.
*.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 &
(and), |
(or), xor:
(xor), <<
(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.
The new DelTapRd and DelTapWr UGen can be used to easily implement multitap delays.
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 /b_close
)
Demand, VDiskIn and DiskIn now sets done flag (to be used by Done or FreeSelfWhenDone)
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.