Added help for Pen and updated some other docs
[supercollider.git] / HelpSource / Classes / Spec.schelp
blob9443ec101cf28e21a40fccdd783eafc3cb2cbb34
1 class:: Spec
2 summary:: input datatype specification
3 related:: Classes/ControlSpec, Classes/Warp
4 categories:: Control, Spec
6 description::
7 Specs specify what kind of input is required or permissible, and what the range of those parameters are. This is an abstract class - the most common subclass is: link::Classes/ControlSpec::.
9 ControlSpec is used by GUI sliders and knobs to specify the range and curve of the controls. Input datatypes are of interest to functions, to gui interface objects (sliders etc.) and can also be used for introspection.
11 The class Spec itself holds a master link::Classes/IdentityDictionary:: of common specifications. The name that the spec was stored as can then be used as a shorthand to refer to specs:
12 code::
13 \freq.asSpec
16 Some common mappings are initialized in code::ControlSpec.initClass::. You may add or overwrite mappings as you wish. The crucial library (available as a quark, see link::Classes/Quarks::) defines a number of additional subclasses. See the file quarks/cruciallib/Instr/MoreSpecs.sc
18 ClassMethods::
20 private::initClass
22 method::add
23 Add a spec to the global spec dictionary. The item will be converted to a spec using .asSpec.
25 Examples::
27 code::
28 Spec.add(\helpExp, ControlSpec( 0.01, 1.0, \exp) );
30 // the array will be converted to a control spec
31 Spec.add(\helpLin, [0, 1, \lin, 0.011, 0.01]);
33 // a symbol will be looked up converteuse the existing \freq spec for \helpLin2
34 Spec.add(\helpLin2, \freq);
36 // existing spec:
37 Spec.add(\helpLin, ControlSpec(0.ampdb, 1.ampdb, \db, units: " dB"));
40 // List of default specs:
42 \unipolar -> ControlSpec(0, 1),
43 \bipolar -> ControlSpec(-1, 1, default: 0),
45 \freq -> ControlSpec(20, 20000, \exp, 0, 440, units: " Hz"),
46 \lofreq -> ControlSpec(0.1, 100, \exp, 0, 6, units: " Hz"),
47 \midfreq -> ControlSpec(25, 4200, \exp, 0, 440, units: " Hz"),
48 \widefreq -> ControlSpec(0.1, 20000, \exp, 0, 440, units: " Hz"),
49 \phase -> ControlSpec(0, 2pi),
50 \rq -> ControlSpec(0.001, 2, \exp, 0, 0.707),
52 \audiobus -> ControlSpec(0, Server.default.options.numAudioBusChannels-1, step: 1),
53 \controlbus -> ControlSpec(0, Server.default.options.numControlBusChannels-1, step: 1),
55 \midi -> ControlSpec(0, 127, default: 64),
56 \midinote -> ControlSpec(0, 127, default: 60),
57 \midivelocity -> ControlSpec(1, 127, default: 64),
59 \db -> ControlSpec(0.ampdb, 1.ampdb, \db, units: " dB"),
60 \amp -> ControlSpec(0, 1, \amp, 0, 0),
61 \boostcut -> ControlSpec(-20, 20, units: " dB",default: 0),
63 \pan -> ControlSpec(-1, 1, default: 0),
64 \detune -> ControlSpec(-20, 20, default: 0, units: " Hz"),
65 \rate -> ControlSpec(0.125, 8, \exp, 0, 1),
66 \beats -> ControlSpec(0, 20, units: " Hz"),
68 \delay -> ControlSpec(0.0001, 1, \exp, 0, 0.3, units: " secs")