These are the highlights of the changes in SC 3.14. See sections below for details.
**kwargs
mod
for negative integer modulus (only). The method modSeaside
can be used to restore the original behavior, named this way for reasons not immediately obvious, by @passyur and @telephon https://github.com/supercollider/supercollider/pull/6699Splay
and SplayAz
level compensation has been fixed and made more flexible, this may change overall level distribution, by @adcxyz https://github.com/supercollider/supercollider/pull/6804.SetResetFF
explicitly as unipolar, this changes output levels when using range
– e.g. if you have used .range(0, 1)
, it had assumed bipolar default so far and returned a range of [0.5, 1]
.) by @capital-G in https://github.com/supercollider/supercollider/pull/6023Set.remove
now returns the item removed by @JordanHendersonMusic in https://github.com/supercollider/supercollider/pull/6409trueAt
by @telephon in https://github.com/supercollider/supercollider/pull/6001, and @mtmccrea in https://github.com/supercollider/supercollider/pull/6335 This changes behavior as follows:Thanks to new contributors!
@gorenje, @JordanHendersonMusic, @cdbzb, @Xeonacid, @Shu-AFK, @silvanocerza, @alexyuwen, @xunil-cloud, @sadguitarius, @sonata-chen, @frenchy64, @SimonDeplat, @martindupras, @unthingable, @HotwheelsSisyphus, @OzelotVanilla, @juergenrmayer, @lapnitnelav, @tedmoore, @passyur, @tremblap, @carltesta, @djiamnot
So far, additional function and method arguments could be captured into an array via the syntax: f = { |a, b ... args| args }; f.(1,2,3,4) // returns [3, 4]
. It was not possible to use other keywords than those explicitly given (here a
and b
) Now we can also capture arbitrary keyword arguments, via the syntax: f = { |a, b ... args, kwargs| kwargs }; f.(x:3, y:4) // returns [\x, 3, \y, 4]
.
The new keyword argument capture was implemented by @JordanHendersonMusic in https://github.com/supercollider/supercollider/pull/6339, in collaboration with @telephon and @capital-G.
This change makes a number of new things possible, e.g.
performList
, functionPerformList
, superPerform
, tryPerform
, doesNotUnderstand
take kwargs now. This makes message forwarding more flexible and more complete.superPerformArgs
method was necessary to avoid an infinite loop in passing keyword arguments up to the parent class, by @JordanHendersonMusic in https://github.com/supercollider/supercollider/pull/6568*newCopyArgs
allow for cleaner constructors in classes with many instance variables, you can now write expressions like ^super.newCopyArgs(freq:440)
by @JordanHendersonMusic in https://github.com/supercollider/supercollider/pull/6398Maybe
, CallOnce
, UnaryOpFunction
, BinaryOpFunction
, NaryOpFunction
, FunctionList
, UnaryOpFunctionProxy
, BinaryOpFunctionProxy
, NAryOpFunctionProxy
), so e.g. you can write f = { |x, y = 1| x + y } * { |x, y = 2| x ** y }; f.(x:2, y:6)
by @telephon in https://github.com/supercollider/supercollider/pull/6786performArgs(selector, args, kwargs)
FunctionDef
for finding out their argument form: varArgsValue
, hasVarArgs
, hasKwArgs
.Scale.ionian(tuning:Tuning.kirnberger)
(this was the original problem to be solved).IdentityDictionary
take keyword arguments and pass them on correctly. So you can write now: u = (dive:{|self, speed, depth| ... }); u.dive(depth: -5)
DoesNotUnderstandError
informs about keyword arguments.Pbind
work with kwargs (this syntax works now: Pbind(note: Pseq([-3, -2, 0, 1, 6, 13]), dur: 0.05, amp: 0.1).play
) by @JordanHendersonMusic and @telephon in https://github.com/supercollider/supercollider/pull/6530{ Complex(MouseX.kr, MouseY.kr).sqrt.poll; 0 }.play
) by @telephon in https://github.com/supercollider/supercollider/pull/6595SoundFile:writeArray
makes it easier to write multichannel files by @JordanHendersonMusic in https://github.com/supercollider/supercollider/pull/6219Buffer.loadChannelDialog
by @prko in https://github.com/supercollider/supercollider/pull/6122wchoosen
implementation by @telephon in https://github.com/supercollider/supercollider/pull/6601 (credits to @Asmatzaile and all who discussed on https://scsynth.org/t/choosing-how-to-choose-with-self-normalising-weights/9557)isRectangular
for Array. by @JordanHendersonMusic in https://github.com/supercollider/supercollider/pull/6225defaultBranchName
method for Git.sc by @cdbzb in https://github.com/supercollider/supercollider/pull/6072.bounds_
setter method for Stethoscope by @prko in https://github.com/supercollider/supercollider/pull/6281parseOSC
method for Int8Array
by @Spacechild1 in https://github.com/supercollider/supercollider/pull/6151localIP
, localEndPoint
and localIPs
class methods for NetAddr by @Spacechild1 in https://github.com/supercollider/supercollider/pull/6153postBugReportInfo
class method for Platform
by @capital-G in https://github.com/supercollider/supercollider/pull/6928thumbSize
argument for Slider2D by @JordanHendersonMusic in https://github.com/supercollider/supercollider/pull/6270parent
argument for all .plot
and .plotAudio
methods for placing them in window. by @prko in https://github.com/supercollider/supercollider/pull/6202bounds
argument for .plotTree
in https://github.com/supercollider/supercollider/pull/6294clock
argument (default: AppClock
) for waitForBoot and doWhenDone by @prko in https://github.com/supercollider/supercollider/pull/6198position
argument for Server meter
to set position (width and height are automatically calculated) by @prko in https://github.com/supercollider/supercollider/pull/6283Nothing
binaryValue
implementation for AbstractFunction and UGen by @telephon in https://github.com/supercollider/supercollider/pull/5941*cueSoundFile
sets path of Buffer by @telephon in https://github.com/supercollider/supercollider/pull/5937Pwalk
boundary behavior when using directionPattern for folding by @jamshark70 in https://github.com/supercollider/supercollider/pull/6587lastForWhich
and lastIndexForWhich
of Collection
, also add synonym method of them by @OzelotVanilla in https://github.com/supercollider/supercollider/pull/6665EnvironmentRedirect
and LazyEnvir
– call dispatch on removeAt
. The message localRemoveAt
can be used to removeAt without calling the dospatch. by @telephon in https://github.com/supercollider/supercollider/pull/5923SC_TerminalClient
by @capital-G in https://github.com/supercollider/supercollider/pull/6590long
and long long
by @JordanHendersonMusic in https://github.com/supercollider/supercollider/pull/6732slotStrVal
implementation is fixed by @Spacechild1 in https://github.com/supercollider/supercollider/pull/6156LevelComp
UGen and a Guide to Level Compensation by @adcxyz in https://github.com/supercollider/supercollider/pull/6804.Delay1
and Delay2
got additional arguments: x1
and - only for Delay2x2
, to control predelay values. Part of https://github.com/supercollider/supercollider/pull/6110 by @mtmccreaToggleFF
supports input rate != unit rate by @elgiano in https://github.com/supercollider/supercollider/pull/6760PluginUnload
macro exports a function that is called when the library is deinitialized, right before it is unloaded. This is only required in rare cases, typically for resource cleanup that cannot be safely done in a global object destructor. (https://github.com/supercollider/supercollider/pull/6191 by @Spacechild1)FULLSAMPLEDUR
macro, and SC_PlugIn::fullSampleDur()
method: return the reciprocal of server sampleRate. (https://github.com/supercollider/supercollider/pull/6147 by @Spacechild1)sc_midicps
, sc_cpsmidi
, sc_midiratio
, sc_cpsoct
, sc_ampdb
(https://github.com/supercollider/supercollider/pull/6711 by @dyfer)registerUnit
now has a static assert that blocks polymorphic classes. That is, calling registerUnit
with a class that has virtual methods will result in a compile-time error (https://github.com/supercollider/supercollider/pull/6147 by @Spacechild1)CALCSLOPE
macro: replaced decltype C cast with static_cast. Fixes undefined behavior when passing array items, e.g CALCSLOPE(x[0], x[1])
(https://github.com/supercollider/supercollider/pull/6320 by @JordanHendersonMusic)ClearUnitOnMemFailed
now correctly clears output buffers before returning. (https://github.com/supercollider/supercollider/pull/6690 by @Spacechild1)scroll-margin-top
to fix scrolling to anchor by @capital-G in https://github.com/supercollider/supercollider/pull/6847custom.css
path in search.html by @prko in https://github.com/supercollider/supercollider/pull/6875FULL_CHECK
flag for clang-format by @capital-G in https://github.com/supercollider/supercollider/pull/6344.git-blame-ignore-revs
file by @capital-G in https://github.com/supercollider/supercollider/pull/6350boost::filesystem
with std::filesystem
by @capital-G in https://github.com/supercollider/supercollider/pull/6331@SimonDeplat, @prko, @JordanHendersonMusic, @martindupras, @jamshark70, @mlang, @tedmoore, @capital-G, @telephon, @HotwheelsSisyphus, @OzelotVanilla, @passyur, @mtmccrea, @cdbzb, @redFrik, @juergenrmayer, @paum3, @miczac, @madskjeldgaard, @carltesta, @redFrik, @Shu-AFK, @elifieldsteel, @alexyuwen @mxw
@telephon, @jamshark70, @elgiano, @mtmccrea, @JordanHendersonMusic, @capital-G
@dyfer, @capital-G, @elgiano, @scztt, @silvanocerza