181 lines
3.9 KiB
Text
181 lines
3.9 KiB
Text
|
class::Symbol
|
||
|
summary::unique name
|
||
|
categories::Core
|
||
|
|
||
|
description::
|
||
|
A Symbol is a name that is guaranteed to be unique. They can be used to represent
|
||
|
symbolic constant values, link::Classes/Dictionary:: keys, etc.
|
||
|
|
||
|
Symbols are represented syntactically as literals which are described in link::Reference/Literals#Symbols::.
|
||
|
|
||
|
subsection::Creating a Symbol
|
||
|
|
||
|
A symbol can be written by surrounding characters by single quotes (may include whitespace):
|
||
|
|
||
|
code::'foo bar'::
|
||
|
|
||
|
Or by a preceding backslash (then it may not include whitespace):
|
||
|
|
||
|
code::\foo::
|
||
|
|
||
|
A String can be converted into a symbol:
|
||
|
|
||
|
code::"arbeit".scramble.asSymbol;::
|
||
|
|
||
|
classmethods::
|
||
|
private::new
|
||
|
|
||
|
instancemethods::
|
||
|
|
||
|
subsection::Testing
|
||
|
|
||
|
method::isClassName
|
||
|
|
||
|
Answer whether the symbol can be a class name. This does not say if the class exists.
|
||
|
|
||
|
code::
|
||
|
\Array.isClassName;
|
||
|
\Bauxite.isClassName;
|
||
|
::
|
||
|
|
||
|
method::isMetaClassName
|
||
|
|
||
|
Answer whether the symbol can be meta class name. This does not say if the class exists.
|
||
|
|
||
|
code::
|
||
|
\Meta_Array.isMetaClassName;
|
||
|
::
|
||
|
|
||
|
method::isSetter
|
||
|
|
||
|
Answer whether the symbol has a trailing underscore.
|
||
|
|
||
|
code::
|
||
|
'action_'.isSetter;
|
||
|
::
|
||
|
|
||
|
method::isPrimitiveName
|
||
|
|
||
|
Answer whether the symbol is a valid primitive name
|
||
|
|
||
|
code::
|
||
|
'_SymbolIsClassName'.isPrimitiveName;
|
||
|
::
|
||
|
|
||
|
subsection::Conversion
|
||
|
|
||
|
method::asString
|
||
|
|
||
|
Convert to a String
|
||
|
|
||
|
method::asInteger
|
||
|
|
||
|
Convert to an Integer
|
||
|
|
||
|
method::asClass
|
||
|
|
||
|
Answer the Class named by the receiver.
|
||
|
|
||
|
method::asSetter
|
||
|
|
||
|
Return a symbol with a trailing underscore added.
|
||
|
|
||
|
method::asGetter
|
||
|
|
||
|
Return a symbol with a trailing underscore removed.
|
||
|
|
||
|
method::ascii
|
||
|
|
||
|
return the ascii codes as an array
|
||
|
|
||
|
method::asSpec
|
||
|
|
||
|
Convert to a ControlSpec
|
||
|
|
||
|
method::asTuning
|
||
|
|
||
|
Convert to a Tuning
|
||
|
|
||
|
method::asScale
|
||
|
|
||
|
Convert to a Scale
|
||
|
|
||
|
subsection::Environments
|
||
|
|
||
|
Symbols are used as keys to look up objects in dictionaries and environments, but also in arrays.
|
||
|
See link::Classes/IdentityDictionary::, link::Classes/Environment::, link::Classes/Event::
|
||
|
|
||
|
code::
|
||
|
a = ();
|
||
|
a.put(\commune, 1871);
|
||
|
a.at(\commune);
|
||
|
::
|
||
|
|
||
|
method::envirPut
|
||
|
|
||
|
put a value to the current environment using receiver as key
|
||
|
|
||
|
method::envirGet
|
||
|
|
||
|
return a value from the current environment using receiver as key
|
||
|
discussion::
|
||
|
code::
|
||
|
\foo.envirPut(100);
|
||
|
\foo.envirGet;
|
||
|
\foo.envirPut(nil);
|
||
|
::
|
||
|
|
||
|
subsection::Math
|
||
|
|
||
|
Symbols respond to all unary and binary math operations by returning themselves. The result of any math operation between a Number or other math object and a Symbol is to return the Symbol. This allows for example operations on lists of notes which contain 'rest's to preserve the rests.
|
||
|
|
||
|
code::Pseq([1, 3, \rest, 2, 4] + 8);::
|
||
|
|
||
|
method::applyTo
|
||
|
|
||
|
Use the symbol as a method selector and perform the message on firstArg, with args as arguments. This is used for mixing functions with method selectors (see also: Function).
|
||
|
discussion::
|
||
|
code::
|
||
|
'%'.applyTo(2553, 345);
|
||
|
['+', '-', '*', { |a, b| a.rand + b.rand } ].choose.applyTo(2, 3);
|
||
|
::
|
||
|
|
||
|
|
||
|
subsection::Synthesis
|
||
|
|
||
|
Inside SynthDefs and UGen functions, symbols can be used to conveniently specify control inputs of different rates and with lags (see: NamedControl, ControlName, and Control).
|
||
|
|
||
|
|
||
|
method::kr
|
||
|
|
||
|
Return a control rate NamedControl input with a default value (val), and if supplied, with a lag. If val is an array, the control will be multichannel.
|
||
|
discussion::
|
||
|
code::
|
||
|
a = { SinOsc.ar(\freq.kr(440, 1.2)) }.play;
|
||
|
a.set(\freq, 330);
|
||
|
a.release;
|
||
|
a = { SinOsc.ar(\freq.kr([440, 460], 1.2)) }.play;
|
||
|
a.setn(\freq, [330, 367]);
|
||
|
a.release;
|
||
|
::
|
||
|
|
||
|
method::ar
|
||
|
|
||
|
Return an audio rate NamedControl input with a default value (val), and if supplied, with a lag. If val is an array, the control will be multichannel.
|
||
|
|
||
|
method::ir
|
||
|
|
||
|
Return an initialization rate NamedControl input with a default value (val). If val is an array, the control will be multichannel.
|
||
|
|
||
|
method::tr
|
||
|
|
||
|
Return a TrigControl input with a default value (val). If val is an array, the control will be multichannel.
|
||
|
discussion::
|
||
|
code::
|
||
|
a = { Ringz.ar(T2A.ar(\trig.tr), \freq.kr(500, 1), 0.8) }.play;
|
||
|
a.set(\freq, 330, \trig, 1);
|
||
|
a.set(\freq, 830, \trig, 1);
|
||
|
a.release;
|
||
|
::
|
||
|
|