Ctk - The Composition Tool Kit


A set of Object classes to aid specifically in the creation of fixed pieces through the use of a Score-like structure. To make general usage easier, the Ctk Objects also support real-time control through the .play method. The Objects included in the Ctk are:


CtkScore

CtkProtoNotes

CtkNoteObject

CtkNote

CtkEvent

CtkBuffer

CtkControl

CtkAudio


The Ctk Objects can be used as a replacement for the Object oriented Classes in the standard SuperCollider distribution (Synth, Buffer, Group,  and Bus). The main difference is that these classes can easily be used to populate a CtkScore for NRT synthesis. 


Disadvantages to the standard Object classes:


- Since the classes can operate in both modes, CtkNotes (the Ctk equivalent of Synth) needs to be explicitly told to 'play'. Synthesis does not begin automatically. 

- CtkNotes are prototyped according to an actual SynthDef, as a result some of the objects syntax is a little different. Arguments are passed to the CtkNote instance in a different way than Synth and may take some getting used to (though the syntax is more in line with the getter and setter methods of other SC objects... more below).

- To make these Objects as flexible as possible with other Ctk objects, the classes check for quite a bit internally. This of course adds some overhead to the language side of SuperCollider, though I haven't noticed any performance problems in the test code I have run.

- Probably other things. Let me know if there are other difficulties you find so I can warn others.


Advantages to the standard Object classes:


- Very easy to use in both real-time and non-real-time mode.

- arguments to instances of CtkNote are set through more traditional getter and setter methods. When a CtkNoteObject is created, methods are added to its instance that correspond with the Control parameters of a SynthDef (including array parameters).

- In real-time mode, the change of an argument's value will be reflected in the running synth.

- Better support for playing CtkScore in real-time. Instances of CtkBuffer will be allocated before the score is played, allowing for loading of large buffers before notes are played. CtkBuffers also de-allocate themselves after the CtkScore finishes playing. 

- Probably other things. Let me know what you like so I can add them to the list.