2 summary:: A summary of news in SC 3.5
5 SECTION:: Language-side news
8 A new cross-platform and custom styled GUI system that replaces Cocoa and SwingOSC.
11 A new help-system provides consistent documentation with good introspection and easy link::Search##searching:: and link::Browse##browsing::.
13 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 link::Classes/WebView:: widget inside the link::Classes/HelpBrowser::.
15 See link::Classes/SCDoc::, link::Reference/SCDocSyntax::, link::Guides/WritingHelp::.
17 Also a new method link::Classes/Help#*methodArgs:: returns a human-readable string of arguments and default values for a method. Example: code::Help.methodArgs("SinOsc.ar")::
19 subsection:: OSC and MIDI responders
20 The new link::Classes/OSCFunc:: and link::Classes/MIDIFunc:: provides better alternatives to the old link::Classes/OSCresponderNode:: and link::Classes/NoteOnResponder::, etc.
22 OSCFunc can receive on any port, not only the main code::NetAddr.langPort::.
24 subsection:: New Location of Startup file
26 The sclang startup file has moved to code:: thisProcess.platform.userConfigDir +/+ "sclang.scd" :: . Old
27 platform-specific startup file locations have been deprecated. The new startup file is plain-text, rtf is not supported.
29 subsection:: Language configuration files
31 The linux-only library configuration file has been deprecated. It is replaced by a cross-platform language configuration
32 file, which is located at code::Platform.userConfigDir +/+ "sclang_conf.yaml" :: . It can be configured via the
33 link::Classes/LanguageConfig:: class.
36 The GEdit plugin sced has been updated to support GEdit version 3.
39 code::WiiMote.discover:: now returns the device object, or nil if it failed.
41 subsection:: Bus-asMap in patterns
42 Bus-asMap symbols are now allowed in code::\freq:: and friends in patterns.
44 subsection:: Warn on classlib overwrites
45 Warnings are posted when extensions overwrites methods in main class lib, unless the extensions are put in a subfolder named "SystemOverwrites".
47 subsection:: Filesystem utils
48 New cross-platform filesystem utilities: link::Classes/File#*copy::, link::Classes/File#*mtime::, link::Classes/File#*mkdir::, link::Classes/File#*realpath::, link::Classes/File#*type::, link::Classes/File#*fileSize::
50 subsection:: String-openTextFile
51 link::Classes/String#-openTextFile:: now works also on frontends without link::Classes/Document:: support. It falls back to link::Classes/String#-openOS:: to open the file with the default application for that file type.
53 subsection:: Various bugfixes
54 A lot of bugs has been fixed, for example: String regexp primitives, multichannel wrappers of SequenceableCollection, CoinGate.ar, T2K, WiiMote, SynthDesc.
56 subsection:: Interpreter Performance Improvements
58 The sclang now uses token threading footnote::http://www.complang.tuwien.ac.at/forth/threaded-code.html:: instead of one huge switch statement for bytecode dispatching.
60 subsection:: PriorityQueue stable order
62 The link::Classes/PriorityQueue:: now provides a stable heap order: items of the same time value will have a FIFO order.
64 subsection:: link::Reference/plot:: improvements
66 link::Reference/plot:: has been changed to use the link::Classes/Plotter:: class, which was formerly used by the code::plot2:: methods. code::plot2:: has been deprecated, the old behavior is still available via the code::plotOld:: methods, which have also been deprecated.
68 subsection:: UI deprecated
70 The UI class has been deprecated. Its functionality is now provided by the link::Classes/ShutDown:: and
71 link::Classes/OnError:: classes.
73 subsection:: Panner and XFade classes deprecated
75 The Panner and XFade classes that been used internally are now deprecated. UGens are better off, implementing the
76 code::checkInputs:: explicitly.
78 SECTION:: Server-side news
80 subsection:: Bitwise ops
81 The bitwise operators code::&:: (and), code::|:: (or), code:: xor: :: (xor), code::<<:: (left shift) and code::>>:: (right shift) are now supported server-side on audio and control signals. Example:
86 var t = PulseCount.ar(Impulse.ar(8e3));
89 ((t * 15) & (t >> 5)) |
90 ((t * 5) & (t >> [3, 4])) |
91 ((t * 2) & (t >> 9)) |
101 subsection:: VarLag UGen
102 The new link::Classes/VarLag:: UGen provides the same functionality as Lag but with linear and other curves.
104 subsection:: DelTapWr/DelTapRd UGens
105 The new link::Classes/DelTapRd:: and link::Classes/DelTapWr:: UGen can be used to easily implement multitap delays.
107 subsection:: Node-onFree
108 A new method link::Classes/Node#-onFree:: runs a function when node finished playing.
110 subsection:: LocalIn initial value
111 link::Classes/LocalIn:: now has an input for initial value.
113 subsection:: Close buffers on free
114 teletype::/b_free:: also free's soundfile if open (like teletype::/b_close::)
116 subsection:: More done flags
117 link::Classes/Demand::, link::Classes/VDiskIn:: and link::Classes/DiskIn:: now sets done flag (to be used by link::Classes/Done:: or link::Classes/FreeSelfWhenDone::)
120 subsection:: Shared Memory Server Interface
122 A shared-memory interface to the server has been introduced. This allows scoping and synchronous control bus access
125 subsection:: HPF/RHPF internal precision
127 The recursive filter loop for link::Classes/HPF:: and link::Classes/RHPF:: has been changed to double-precision in
128 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.
130 subsection:: Plugin entry point
132 Plugins should use the teletype::PluginLoad:: macro as entry point instead of implementing a teletype::load:: funcion.
133 This allows ABI version checks and ensures that the entry point function is correctly exported from the shared library.
134 See link::Guides/WritingUGens:: for details.
136 subsection:: New FFT Plugin API
138 A new FFT API for server plugins has been introduced: this simplifies writing FFT ugens in a cross-platform manner,
139 since no external FFT libraries are required.
141 subsection:: Supernova
143 A new multi-processor implementation of scsynth. Parallelism of the synthesis graph is exposed to the user via the
144 link::Classes/ParGroup:: class. Supernova is currently linux-only. It is not provided in the OSX/Windows binaries. In
145 order to play patterns inside a ParGroup, the link::Classes/PparGroup:: can be used. Scsynth emulates parallel groups
148 Plugins have to be adapted by acquiring spinlocks when accessing busses or buffers. See link::Guides/WritingUGens:: for