Changes in Version 2.2.7
Changes were made to OSC classes to allow sending replies to OSC messages back to the sender.
Now an OSCOutPort also can have an OSCNode installed for responding to replies.

OpenTransport is not required to be installed to launch SC.
If OT is not installed then OSC function do not work.

A few of the type tags in the OSC message binary format were changed to be congruent with the
type signatures listed on CNMAT's web page. This makes 2.2.7 and onward incompatible with 2.2.6.

An ObjectTable class was created to allow objects to be identified to by an integer or symbol.
This enables OSC messages to perform any method on an object in the table.
See ObjectTable.help and new entries in default OSC address space

Boolean::tabletTracking method was added so that users whose tablet also functions as their pointing
device can turn tracking back on. SC turns tracking off by default so that the tablet and mouse can be
used independantly.

The Peak ugen was added. It sticks at the maximum value received at its input until reset.

A memory leak between MacZoop and WASTE was fixed.

Using the arrow keys no longer marks a page dirty.

There were missing resources in SCPlay for ASIO causing Audio Setup to crash.

If the class library failed to compile, doing Audio Setup no longer crashes.
Changes in Version 2.2.6
Open Sound Control (OSC) support is added.
OSC allows you to send messages between copies of SuperCollider or other software across a network.
Default built in functionality includes the abilities to simulate midi input, cause midi output, control the mixer,
choose library items, execute files or text, set interpreter variables a-z.
See the Open Sound Control folder in Documentation.

You can now interpret text while playing. The compiler gets called at interrupt time to
do this so there will be a CPU hit. The amount of text is limited to 8K bytes while playing.

A shutDown method was added to Process, which gets called before each recompile and before
quitting. This is used to close all open OSC ports.

Voicer sustain and sostenuto pedals are initialized to off.

The compiler was generating bad code for storing into classvars in large methods.

The compiler would generate bad code if the true or false clause of an 'if' statement was a pair of
empty brackets.

Changes in Version 2.2.5
Steinberg's ASIO is now the interface to audio hardware.
Obtain ASIO drivers for your sound card from the card manufacturer's website or
from Steinberg. Here are some sites for drivers:
Korg, Digidesign, Apple : 
 ftp://ftp.steinberg.net/steinberg-software/product_updates/macintosh/asio/
MOTU :
 http://www.motu.com/downloads/mas/pci324_asio2b.sit.hqx
Sonorus :
 http://www.sonorus.com/STUDIO18.sit
Echo :
 http://www.echoaudio.com/pages/Install%20Echo%20Card.hqx
Some settings cannot be made from within SC and must be made from software
provided by the sound card manufacturer. The MOTU PCI-324's buffer size is an example.
If you have ASIO set for any kind of external clocking then it is up to you to set the sample rate to
match what the external gear is running. Otherwise the pitch/speed will be transposed.

Live scrolling for text windows.

A diamond mark appears in a text window's title when its contents have been edited.

Bugs in Post Here Always were fixed.

Fixed file length calculation bug when reading RawArrays.

Wacom tablet driver is now closed when exiting SC.

The Finder memory requirements for SC were increased. It was getting cramped.
Changes in Version 2.2.4
Uses newer version of copy protection that is G4 and OS9 compatible.

Added fold2 and wrap2 binary operators.

Plugs on a RangeView can now access several values: low, high, center, range. See Plug.help

Integer::nthPrime now knows all the primes less than 65536.
Valid indices for nthPrime range from zero to 6541.
Integer::nextPrime gives the prime greater than or equal to the Integer for all primes less than 65536.
Integer::prevPrime gives the prime less than or equal to the Integer for all primes less than 65536.
Integer::isPrime now works for all positive 32 bit numbers.

Added TrigXFade class.

Fixed bugs in PanAz.

Fixed bugs in Task.

Changes in Version 2.2.3


Some spectral rate binary operators had a bug.

A problem with virtual memory operation that could cause a freeze on the G3 and always caused
a freeze on the G4 was fixed.
Changes in Version 2.2.2
The Pitch ugen was added. It is an autocorrelation pitch estimator which does a pretty good job.

Tasks were added. A Task is a thread that is scheduled by a Synth. While in a Task you can call
the 'wait' method to pause execution for some number of beats. See Task.help.

You can now perform some OS level operations like reading and writing files while playing
by using Tasks.

Spectral rate unit generators were added. This allows FFT, IFFT and other operations to
operate without incurring a build up of latency due to streaming the spectra between
UGens. Instead the spectra are passed along as large blocks.

Unary and binary operator ugens all now have spectral rate versions as well.

A2S and S2A ugens for converting between audio rate and spectral rate were added.

A spectral rate BinShift ugen was added for shifting and stretching spectra.

The Median filter UGen now has a length argument allowing lengths up to 31 samples instead of
just 3.  This is an incompatible change, current users of Median will need to update their code.

A PinkerNoise ugen was added that gives 16 octaves of noise instead of the 8 octaves that
PinkNoise gives, and has an improved top octave response.

The binary operator 'thresh' was added which returns zero if a value is below a threshold, otherwise
it returns the value.

Float::do and Float::reverseDo are now implemented to be similar to Integer::do and reverseDo.

MultiTap and PlayBuf had a bug that caused a click.

PanB had a bug in the X output.

Some of the filters were sped up slightly.

A bug with oscillator phase offsets was fixed.

TSpawn::triggerSynth had a bug that occured in unusual circumstances.

Changes in Version 2.2.1


The pseudo variable thisSynththisSynth replaces Synth.newSynth as the way to get the current Synth.
Synth.newSynth now prints a note to change your code.

A wait method was added to Routine.

A serious bug was fixed that trashed memory when an error occured upon starting a UGen.

A serious bug was fixed that trashed memory when an error occured in Synth.new followed by
a recompile of the library.

An error in the class library in version 2.2 was fixed that broke generating GUI code.

Changes in Version 2.2


A new Pattern class, Pfx, that adds effects to sub patterns was added. Support for this was added to
classes Pattern and TSpawn. A couple of examples are in the "Pattern examples" file.

A triggerSynth method was added to TSpawn.

Doing cmd-J on a method name of the form Class::method will open the file and scroll to that method.
All places where SC prints method names now print in that form.

An IOStream class was added and asString and asCompileString were changed to use it.

Two new filter UGens were added: Ringz, Formlet.

A Synth::dualScope method was added that shows the signal and spectrum.

A new instance variable, bufsync, was added to Spawn.
Setting bufsync true in Spawn  will turn off sample accurate scheduling and force the events'
synth buffers to start aligned with the parent's buffers. This is useful if one is spawning effects
so that the audio in multiple events are time aligned.

Changing the bounds of a View now works.

An Integer::isPrime method with primitive was added.

A primitive was added for Array::addAll.

A bug in 'for' loops was fixed.

IdentityDictionary had a bug for negative Integers as keys.

A non-Boolean in an if statement is now an error rather than assumed true.

A bug was fixed where the _ArrayAdd primitive would create an Array, even if the class of the receiver
was not Array.

Bugs in Signal::overdub and Signal::overwrite were fixed.

Changes in Version 2.1.9


Voicer was fixed so that the sustain and sostenuto pedals actually do work.

A crashing bug in the syntax colorizer menu item was fixed.

A crashing bug when calling tsched from sched in a TSpawn was fixed.

If a Sequencer stream returns nil, then the last good value is used. This allows finite length streams
to be used in a Sequencer.

More class help files were written : Bag, BinaryOpStream, BinaryOpUGen, Environment,
Event, EventStream, GetTempo, Infinitum, Instrument, Interval, LinkedList, LinkedListNode,
MIDIOut, MultiOutUGen,  Orchestra, PriorityQueue, RawArray, RawPointer, SetTempo, Signal,
SortedList, StepClock, String, UnaryOpStream, UnaryOpUGen, View, Wavetable.

A number of bugs were found and fixed while documenting the above classes.

The obsolete classes PropertyList and LazyList were removed.

The "misconception" example was revised with a better solution.

Changes in Version 2.1.8


A syntax coloring menu item was added to the Color menu.
Choosing this menu item will colorize the syntax. Class names, primitive names and reserved
words are marked blue, literal Symbols are marked green, Strings are marked grey,
comments are marked red. If there is a selection, only the selected text is colorized, otherwise
the entire file is colorized.

cmd-J now scrolls you directly to the right class, not just the right file.

A bug in the compiler introduced with 2.1.7 causing isKindOf to return incorrect values was fixed.

A bug where bad sound would be recorded in some situations was fixed.

Bugs in Trig and Shaper were fixed.

Changes in Version 2.1.7


A new play-only version of SuperCollider called SCPlay was released.
The full version can create compressed class libraries that can be played back by SCPlay.
SCPlay is freely distributable. It requires no serial number and will not expire.
SCPlay will only compile compressed libraries. It will not compile text entered in the interpreter
or from a text file. The Interpreter 'compile' primitive is not implemented in SCPlay.

A Color menu was added for setting the text color.

A bug when writing Wavetables to disk was fixed.

Other class library bugs were fixed.

Two UGens were added: EnvGen2 and PeakFollower.

Changes in Version 2.1.6


There was a scheduling bug in Spawn.

There was a bug that caused ControlIn not to be compatible with Plug.

Compander had a bug that could cause its Synth to stop prematurely if spawned.

An unterminated single quote Symbol literal would crash the parser.

There was a typo in String ++.

Instruments are no longer passed synth as the first argument so that they can be used as
UGens. The current synth can be accessed via thisSynth.

Changes in Version 2.1.5


The Lib menu would often appear greyed out in 2.1.4.

Changes in Version 2.1.4


A MixerPlayer class was written to support playing things from the Lib menu.
Multiple Lib menu items can be played at once and controlled in a mixer window.
Other supporting classes, Instrument and Voice, were written to support this as well.

A View's MIDI mapping is now written by Generate Code to Clipboard.

Korg S/PDIF output was fixed.

Some problems writing sound file headers were fixed.

Function valueEnvir and valueArrayEnvir methods were added. These will lookup any unsupplied
function arguments in the currentEnvironment.

Environments used to have a parent instance variable and were nestable. Since the new
Pattern scheme does not require nestable Environments that capability was removed, making
Environment lookup more efficient. The currentEnvironment now always replaces the previous
Environment rather than just overriding it.

More work was done on Patterns. ListPatterns were simplified to reduce run time overhead.

Thread is now a subclass of Stream so that Thread's subclass Routine can benefit from the
math and collect,select,reject operations supported by Stream.

There is now an introduction to streams, patterns and events
in the Documentation:Streams-Patterns-Events folder.

Post Here Always now works correctly.

Help now searches for a Help directory in the current library folder.

rrand(lo, hi) now includes the value hi if lo and hi are both Integers. It used to range from lo to
hi - 1.

MouseX and MouseY are now scaled so that the value actually reaches maxval at the right
and bottom edges of the screen instead of being slightly less than maxval.

Dictionary keysValuesArrayDo was fixed so that the index argument is an Integer instead of a Float.

A couple of bugs in PlayBuf were fixed.

A number of other bugs in the class library were fixed.

Changes in Version 2.1.3

ControlIn has been replaced by Plug. Plug is the same as ControlIn but has
audio rate method 'ar' and can be dynamically patched to UGens. See the "plug test" example file.
ControlIn is retained as a subclass of Plug for compatibility.

A bug in Pause would cause problems when unpausing a Spawn.

PanAz used to pop when Spawned.

LFSaw now works with negative frequencies.

Changes in Version 2.1.2

The interpreter was not properly initialized when choosing from the Lib menu.

Ref asStream was removed. It was added in error in 2.1.1

Sequencer.ar would drop out when triggered faster than control rate.

ImpulseSequencer.ar would print out debug info when passed a Function.

'keyDownAction' instance variable was added to View. See gui examples file.

ButtonView now accepts key down events.
Changes in Version 2.1.1

Digidesign sound input was fixed.

A bug where mousing a slider at the moment when synthesis ended caused a crash, was fixed.

GUIUtils now detects when it is running in demo mode and disables File I/O to prevent an error.

The 'loop' method was added to class Function to handle the general case where the Function is
not a literal Function.
Changes in Version 2.1

Digidesign cards are supported. AMIII support has been tested by me and
Digidesign has verified that their other cards work as well. Digidesign has
been very helpful in supporting this and I want to thank them for that.

Klank has been changed so that the impulse response amplitude for a particular
frequency is independant of the ring time. Before, longer ring times would give
smaller amplitudes. Now, the impulse response amplitude of a particular
frequency is the same as the amplitude of the impulse. This means that
for most moderate duration ring times Klank is much louder than before.
Excitation sources in existing patches should be reduced in amplitude
by a factor of from 10 to 1000 or more depending on what the ring time
was in the patch. The reason for this change is to allow more predictable control
of Klank impulse responses. For example now it is possible to have a frequency
have an impulse response envelope like that of the Decay2 unit generator
by putting two resonances at that frequency with amplitudes inverted w/r to
each other and with differing ring times. At the attack they will cancel completely
but then the longer ringing resonator will dominate. An OldKlank UGen is provided
for compatibility in this version but may be removed in the future.

Co-routines are supported via the Routine class. Routines are functions that
can return in the middle and then resume where they left off when called again.

The old Pattern library was scrapped and is in the process of being rewritten.
There are new examples, but docs are still underway.

A new class Infinitum whose single instance is written as inf has been added.
It is used for specifying an infinite number of repeats of a loop in a
co-routine.

A new control structure, the 'loop' method, has been added to class Function.
This is an infinite loop - something you only want to do in a co-routine
where you yield to the caller inside the loop.

The old Pyrite way of writing one word alpha Symbols with a preceeding backslash
can be used.  \something   is equivalent to   'something'

The 'new' message when sent to a literal classname can be elided.
MyClass(..args..)   is equivalent to   MyClass.new(..args..)

There is a hierarchical Lib menu and a new Library class that lets you add
your own commands, wavetables, sound files to it. See the Main.sc file
to see how it is set up.

Most error dumps now pop up a new window instead of dumping into your file.

ControlIn can now take a UGen as a source argument.

ControlIn can be sent messages to initiate linear and exponential curves,
or timed gates.

Synth has an fftScope method that displays a real time log magnitude spectrum
of a sound.

There are menu commands for OMS Studio Setup and OMS MIDI Setup.

Wavetables can now be built by writing, e.g.:
   Wavetable.sineFill(512, [1, 0.5, 0.3, 0.2]);
instead of what you used to have to write (which still works):
   Signal.newClear(512).sineFill([1, 0.5, 0.3, 0.2]).normalize.asWavetable;

The names of a number of method arguments were changed to reflect the
documentation so that keyword arguments can be written.

The order of arguments to the 'degreeToKey' method were changed to
support playing chords in Patterns. The scale is no longer the receiver,
but is the first argument. The scale degree is the receiver.
The receiver can also be a SequenceableCollection which is interpreted
as a chord of scale degrees.


New unit generators:

LFTri - triangle wave oscillator
PanAz - azimuth panner for up to 16 equally spaced speakers
Shaper - wave shaping by a transfer function.
Index - index into a discrete table with a signal.
WrapIndex - index into a table with wrapped indexing.
DegreeToKey - convert continuous values into pitches from a scale.
GrayNoise - noise generation by flipping random bits in a word.
GetTempo, SetTempo - not really new, but now with help files.


Bugs fixed:

You can now set the group of a radio button.

The GUI has been fixed so that a button action can now call Synth.play
without freezing the GUI.

The GC was made properly incremental for large objects by doing partial scans.

PlayBuf offset is now correct.

Formant now plays in the correct octave!


This page was created by SimpleText2Html 1.0.3 on 22-Feb-100.