Returns a FoscDynamic.
A dynamic indication
| dynamicNameToScalar | Converts name to dynamic ordinal. |
| dynamicNameToDynamicOrdinal | Converts name to dynamic ordinal. |
| dynamicOrdinalToDynamicName | Converts ordinal to dynamic name. |
| scalarToDynamicName | Converts scalar to dynamic name. |
| isDynamicName | Is true when name is a dynamic name. Otherwise false. |
| command | Gets explicit command. |
| context | Gets context. Returns Voice. |
| formatHairpinStop | Is true when dynamic formats LilyPond \! hairpin stop. |
| hide | Is true when dynamic should not appear in output (but should still determine effective dynamic). |
| leak | Is true when dynamic formats LilyPond empty chord <> symbol. |
| name | Gets name of dynamic. |
| nameIsTextual | |
| ordinal | Gets ordinal value of dynamic. |
| scalar | Gets scalar value of dynamic. |
| parameter | Is true. |
| sforzando | Is true when dynamic name begins in s- and ends in -z |
| == | |
| != | |
| asCompileString | |
| format | |
| hash | !!!TODO: not yet implemented |
| str |
Initialize from dynamic name.
a = FoscVoice(FoscLeafMaker().(#[60,62,64,65], 1/8));
d = FoscDynamic('f');
a[0].attach(d);
a.show;
!!!TODO: BROKEN
Initialize niente.
a = FoscVoice(FoscLeafMaker().(#[60,62,64,65], 1/8));
d = FoscDynamic('niente');
a[0].attach(d);
a.show;
Simultaneous dynamics in a single staff.
a = FoscVoice(FoscLeafMaker().(#[62,67,64,69], 1/8));
b = FoscVoice([FoscNote(60, 2/4)]);
a[0].attach(FoscLilypondLiteral("\\voiceOne"));
b[0].attach(FoscLilypondLiteral("\\voiceTwo"));
a[0].attach(FoscDynamic('f'));
override(a).dynamicLineSpanner.direction = 'up';
b[0].attach(FoscDynamic('p'));
c = FoscStaff([a, b], isSimultaneous: true);
c.show;
Dynamics can be tweaked.
a = FoscNote(60, 1/4);
d = FoscDynamic('f', tweaks: #[['color', 'blue']]);
a.attach(d);
a.show;
Converts name to dynamic ordinal.
Returns integer or negative infinity.
Example
FoscDynamic.dynamicNameToScalar('sfp').postln;0.375
FoscDynamic.dynamicNameToScalar('ff').postln;0.875
FoscDynamic.dynamicNameToScalar('niente').postln;0Converts name to dynamic ordinal.
Returns integer or negative infinity.
Example
FoscDynamic.dynamicNameToDynamicOrdinal('sfp').postln;-2
FoscDynamic.dynamicNameToDynamicOrdinal('ff').postln;3
FoscDynamic.dynamicNameToDynamicOrdinal('niente').postln;-infConverts ordinal to dynamic name.
Returns symbol.
Example
FoscDynamic.dynamicOrdinalToDynamicName(-5).postln;'pppp'
FoscDynamic.dynamicOrdinalToDynamicName(-inf).postln;'niente'Converts scalar to dynamic name.
Returns symbol.
Example
FoscDynamic.scalarToDynamicName(0.5).postln;'mp'
FoscDynamic.scalarToDynamicName(0).postln;'niente'Is true when name is a dynamic name. Otherwise false.
Returns true or false.
Example
FoscDynamic.isDynamicName('f').postln;true
FoscDynamic.isDynamicName('niente').postln;true
FoscDynamic.isDynamicName('foo').postln;falseGets explicit command.
Use to override LilyPond output when a custom dynamic has been defined in an external stylesheet. In the example below, \sub_f is a nonstandard LilyPond dynamic. LilyPond will interpret the output above only when the command \sub_f is defined somewhere in an external stylesheet.
FIXME add example
Gets context. Returns Voice.
Example
a = FoscDynamic('f');
a.context.postln;'Voice'Is true when dynamic formats LilyPond \! hairpin stop.
Is true when dynamic should not appear in output (but should still determine effective dynamic).
Is true when dynamic formats LilyPond empty chord <> symbol.
Gets name of dynamic.
Returns symbol.
Example
FoscDynamic('fffff').name.postln;'fffff'
FoscDynamic(-6).name.postln;'ppppp'
FoscDynamic(-inf).name.postln;'-inf'Gets ordinal value of dynamic.
Returns integer.
Example
FoscDynamic('fffff').ordinal.postln;6
FoscDynamic('fff').ordinal.postln;4
FoscDynamic('p').ordinal.postln;-2
FoscDynamic('sffz').ordinal.postln;3
FoscDynamic('niente').ordinal.postln;-inf
FoscDynamic('foo').ordinal.postln; // throws exceptionERROR: Message 'ownerClass' not understood.Gets scalar value of dynamic.
Returns float.
Example
FoscDynamic('fffff').scalar.postln;1
FoscDynamic('fff').scalar.postln;0.95
FoscDynamic('p').scalar.postln;0.375
FoscDynamic('sffz').scalar.postln;0.875
FoscDynamic('niente').scalar.postln;0
FoscDynamic('foo').scalar.postln; // throws exceptionERROR: Message 'ownerClass' not understood.Is true.
Is true when dynamic name begins in s- and ends in -z
Example
a = FoscDynamic('p');
b = FoscDynamic('p');
c = FoscDynamic('f');
(a == b).postln;true
(a == c).postln;falseExample
a = FoscDynamic('p');
b = FoscDynamic('p');
c = FoscDynamic('f');
(a != b).postln;false
(a != c).postln;trueExample
FoscDynamic('p').asCompileString.postln;FoscDynamic('p')Example
a = FoscDynamic('p');
a.format;\pExample
a = FoscDynamic('niente');
a.format;FIXME POST OUTPUTExample
a = FoscDynamic('foo');
a.format;ERROR: Message 'ownerClass' not understood.!!!TODO: not yet implemented
Example
a = FoscDynamic('p');
b = FoscDynamic('p');
(a.hash == b.hash).postln;falseExample
a = FoscDynamic('p');
a.str;\p