FoscDynamic

Returns a FoscDynamic.


Description

A dynamic indication


Attributes Summary

Class Methods

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.

Instance Properties

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

Instance Methods: Special Methods

==
!=
asCompileString
format
hash !!!TODO: not yet implemented
str


Usage

  1. Initialize from dynamic name.

    a = FoscVoice(FoscLeafMaker().(#[60,62,64,65], 1/8));
    d = FoscDynamic('f');
    a[0].attach(d);
    a.show;

  2. !!!TODO: BROKEN

    Initialize niente.

    a = FoscVoice(FoscLeafMaker().(#[60,62,64,65], 1/8));
    d = FoscDynamic('niente');
    a[0].attach(d);
    a.show;

  3. 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;

  4. Dynamics can be tweaked.

    a = FoscNote(60, 1/4);
    d = FoscDynamic('f', tweaks: #[['color', 'blue']]);
    a.attach(d);
    a.show;


Class Methods


dynamicNameToScalar

Converts name to dynamic ordinal.

Returns integer or negative infinity.

  1. Example

    FoscDynamic.dynamicNameToScalar('sfp').postln;
    0.375
    FoscDynamic.dynamicNameToScalar('ff').postln;
    0.875
    FoscDynamic.dynamicNameToScalar('niente').postln;
    0


dynamicNameToDynamicOrdinal

Converts name to dynamic ordinal.

Returns integer or negative infinity.

  1. Example

    FoscDynamic.dynamicNameToDynamicOrdinal('sfp').postln;
    -2
    FoscDynamic.dynamicNameToDynamicOrdinal('ff').postln;
    3
    FoscDynamic.dynamicNameToDynamicOrdinal('niente').postln;
    -inf


dynamicOrdinalToDynamicName

Converts ordinal to dynamic name.

Returns symbol.

  1. Example

    FoscDynamic.dynamicOrdinalToDynamicName(-5).postln;
    'pppp'
    FoscDynamic.dynamicOrdinalToDynamicName(-inf).postln;
    'niente'


scalarToDynamicName

Converts scalar to dynamic name.

Returns symbol.

  1. Example

    FoscDynamic.scalarToDynamicName(0.5).postln;
    'mp'
    FoscDynamic.scalarToDynamicName(0).postln;
    'niente'


isDynamicName

Is true when name is a dynamic name. Otherwise false.

Returns true or false.

  1. Example

    FoscDynamic.isDynamicName('f').postln;
    true
    FoscDynamic.isDynamicName('niente').postln;
    true
    FoscDynamic.isDynamicName('foo').postln;
    false


Instance Properties


command

Gets 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


context

Gets context. Returns Voice.

  1. Example

    a = FoscDynamic('f');
    a.context.postln;
    '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.

Returns symbol.

  1. Example

    FoscDynamic('fffff').name.postln;
    'fffff'
    FoscDynamic(-6).name.postln;
    'ppppp'
    FoscDynamic(-inf).name.postln;
    '-inf'


nameIsTextual


ordinal

Gets ordinal value of dynamic.

Returns integer.

  1. 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 exception
    ERROR: Message 'ownerClass' not understood.


scalar

Gets scalar value of dynamic.

Returns float.

  1. 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 exception
    ERROR: Message 'ownerClass' not understood.


parameter

Is true.


sforzando

Is true when dynamic name begins in s- and ends in -z


Instance Methods: Special Methods


==

  1. Example

    a = FoscDynamic('p');
    b = FoscDynamic('p');
    c = FoscDynamic('f');
    (a == b).postln;
    true
    (a == c).postln;
    false


!=

  1. Example

    a = FoscDynamic('p');
    b = FoscDynamic('p');
    c = FoscDynamic('f');
    (a != b).postln;
    false
    (a != c).postln;
    true


asCompileString

  1. Example

    FoscDynamic('p').asCompileString.postln;
    FoscDynamic('p')


format

  1. Example

    a = FoscDynamic('p');
    a.format;
    \p
  2. Example

    a = FoscDynamic('niente');
    a.format;
    FIXME POST OUTPUT
  3. Example

    a = FoscDynamic('foo');
    a.format;
    ERROR: Message 'ownerClass' not understood.


hash

!!!TODO: not yet implemented

  1. Example

    a = FoscDynamic('p');
    b = FoscDynamic('p');
    (a.hash == b.hash).postln;
    false


str

  1. Example

    a = FoscDynamic('p');
    a.str;
    \p