slippery chicken documentation - articulation, dynamics, performance indications, and note-heads

## Articulation, dynamics, performance indications, and note-heads

Articulation, dynamics, slurs, and performance indications, as well as note-head styles, for both CMN and LilyPond output, can be attached to the musical data generated by slippery chicken in two ways. The first method is to specify the desired marks using the `:marks` keyword when defining the `rthm-seq-palette` within a call to the `make-slippery-chicken` function (see the page on rthm-seq-palettes and rthm-seq-maps for more detail). This attaches the given marks directly to the `marks` slot of the corresponding `rthm-seq` object. That is the method that will be introduced on this page.

The second method is to add the marks after the `slippery-chicken` object has been generated. That approach is covered on the page for post-generation editing techniques. Some marks, such as LilyPond trills, can only be added using this second method.

### + Adding marks, performance indications, and dynamics via :marks

Articulation, dynamics and some performance indications can be attached to individual `rhythm` objects by enclosing them within the definitions of the `rthm-seq` objects of the `rthm-seq-palette`. This is done using the `:marks` keyword followed by a list. (Also see the User Guide page on the rthm-seq object.)

    :marks (a 1 s 3 slur 5 6 dim-beg 9 dim-end 13)

The list indicates the mark to be added, such as `a` for an accent or `s` for staccato, followed by an index number or numbers (counting from 1) for the specific `rhythm` object within the `rthm-seq` to which the mark is to be attached. The indication `(a 1 s 3)`, therefore, results in an accent being attached to the first `rhythm` item of the `rthm-seq` and a staccato dot being attached to the third. Slurs are indicated by two numerals, the first being the `rhythm` item where the slur begins, and the second the `rhythm` item where it ends. Separate marks are included sequentially in the same list separated only by a space.

When two numbers follow a mark indication, the mark is attached to all `rhythm` objects from the position in the `rthm-seq` indicated by the first number to the position indicated by the second. Thus `(a 1 4)` attaches an accent to `rhythm` items 1, 2, 3 and 4 of the sequence. When more than two numbers follow the mark indication, the mark is only attached to those individual `rhythm` items. Thus `(a 1 3 5)` attaches an accent to `rhythm` objects 1, 3 and 5 of the given `rthm-seq`.

User-defined performance indications can be added to any note by placing the desired text in quotation marks:

    :marks ("etwas rascher" 1)

Dynamics can be attached in the same way.

    :marks (ppp 1 cresc-beg 2 cresc-end 4 fff 5)

Any kind of mark can be interspersed with other marks and note-head indications in the same list.

    :marks (ppp 1 a 1 3 5 s 2 "like a whisper" 4 slur 6 7 slash 3 8)

Indications for slurs and phrase markings can be given in two ways. The first way is to attach the `beg-sl` and `end-sl` or `beg-phrase` and `end-phrase` marks to the corresponding rhythms:

    :marks (beg-sl 1 end-sl 2 beg-sl 5 end-sl 6 beg-phrase 1 end-phrase 8)

Alternatively, these two items can be added by using the marks `slur` and `phrase` followed by the starting and ending rhythm:

    :marks (slur 1 2 slur 5 6 phrase 1 8)

When adding marks that require a beginning and ending indication via the `:marks` slot, including the `beg-sl` and `end-sl` version of slurs or the `beg-phrase` and `end-phrase` version of phrase markings, the user should always include both the `beg-` and `end-` versions of the mark in the same `rthm-seq` to avoid errors or unwanted artifacts in the score. To add marks whose beginning and end points lie in separate sequences, use post-generation editing methods instead.

It is important to note that marks are attached to `rhythm` objects of the `rthm-seq`, and not to items in the `pitch-seq` of the `pitch-seq-palette`. Two tied rhythmic values are counted as separate items. This means that marks can be attached to notes that are tied from the previous note.

Marks that are attached via the `marks` slot will appear in the score whenever that `rthm-seq` occurs, with no consideration for the instrument or combination of instruments playing. For this reason, the user may wish to add some marks, such as dynamics, by using the post-generation editing methods instead.

Only dynamic marks will affect MIDI output.

Marks and dynamics that can be attached to `rhythm` objects using the `:marks` keyword are found in the tables of marks below. It is important to note that some marks are only available for CMN or LilyPond. These are pointed out in the tables.

close

### + Changing note-heads via :marks

The `marks` slot can also be used to change the note heads of one or more notes in a `rthm-seq`. This is done using the same syntax as for the articulations, dynamics, and performance indications.

    :marks (x-head 1 slash 5)

An entire passage can be changed to a different note-head by following the name of the note-head with two numbers.

    :marks (slash 1 8)

As stated above, note-head marks can be interspersed with any other type of mark in the same list.

    :marks (ppp 1 a 1 3 5 s 2 "like a whisper" 4 slur 6 7 slash 3 8)

The types of note-heads available can be found in the tables of marks below. As with the other marks and dynamics, some note-head types are only available to CMN or LilyPond.

close

### + LilyPond arrows

LilyPond has an additional option for placing horizontal arrows above a player's staff in the score. This is done in post-generation editing using the `add-arrow-to-events` method.

The `add-arrow-to-events` method takes as its arguments a `slippery-chicken` object, the text to be placed at the beginning and end of the arrow, both as strings, followed by references to the bars and notes where the arrow is to start and end, and the player. If no text is desired for either the start or end of the arrow, the user must enter a single space as a string (`" "`), rather than an empty string (`""`). The bar and note references are each specified as two-item lists, with the first item being the bar number and the second item being the index of the note-event in the bar. (NB: The note-event index counts both notes and rests and starts at 1.) The player must be specified exactly as it is defined in the `ensemble` block.

    (let ((mini
           (make-slippery-chicken
            '+mini+
            :title "mini"
            :instrument-palette +slippery-chicken-standard-instrument-palette+
            :ensemble '(((vn (violin :midi-channel 1))))
            :tempo-map '((1 (q 60)))
            :set-palette '((1 ((c4 d4 e4 f4 g4 a4 b4 c5))))
            :set-map '((1 (1 1 1)))
            :rthm-seq-palette '((1 ((((4 4) - e e e e - - e e e e -))
                                    :pitch-seq-palette ((1 2 3 4 5 6 7 8)))))
            :rthm-seq-map '((1 ((vn (1 1 1))))))))
      (add-arrow-to-events +mini+ "start" "end" '(1 5) '(3 4) 'vn )
      (write-lp-data-for-all mini :base-path "/tmp/"))

close

### + LilyPond marks that use graphics files

A number of marks available in slippery chicken are attached to the data of a `slippery-chicken` object by using specially designed graphics files in conjunction with LilyPond. This is done by setting the `:use-custom-markup` argument of the `write-lp-data-for-all` method to `T` and placing the names of these marks in the `:marks` slot of the given `rthm-seq` object.

The LilyPond graphics files required for this can be obtained from the other files page. The individual `.eps` files in the downloaded archive must be placed in the same directory as the `.ly` files that are to be processed. Once this is done, using LilyPond.app (on Mac) or LilyPad.exe (on Windows) to generate the PDFs of the given `.ly` file will automatically access the `.eps` files and insert them into the score. If using `lilypond` on Linux, or running `lilypond` from the command line on a Mac, the user must be sure to also `cd` to the directory where the `.eps` and `.ly` files are located before running the program.

The LilyPond marks currently available that require graphics are:

aeolian-dark |
aeolian-light |
bracket-end |
mphonic-arr |
mphonic-cluster |
mphonic-cons |
mphonic-diss |
sing |
sing-arr |
arrow-up-down |

These can be used as follows:

    (let ((mini
           (make-slippery-chicken
            '+mini+
            :title "mini"
            :instrument-palette +slippery-chicken-standard-instrument-palette+
            :ensemble '(((fl (flute :midi-channel 1))))
            :tempo-map '((1 (q 60)))
            :set-palette '((1 ((c4 d4 e4 f4 g4 a4 b4 c5))))
            :set-map '((1 (1)))
            :rthm-seq-palette '((1 ((((4 4) h. (q))
                                     ((q) h.)
                                     ((e) e (q) - e e e e -))
                                    :pitch-seq-palette ((1 2 3 4 5 6 7))
                                    :marks (aeolian-dark 1 mphonic-arr 2
                                                         arrow-up-down 3
                                                         bracket-end 7))))
            :rthm-seq-map '((1 ((fl (1))))))))
      (write-lp-data-for-all mini :base-path "/tmp/" :use-custom-markup t))

close

### Tables of marks

#### + Articulation and performance indications

mark | :mark
--- | ---
accent | `a`
accented staccato | `as`
accented tenuto | `at`
arco | `arco`
bartok pizzicato (see note) | `bartok`
battuto abbrev. | `batt`
col legno | `col-legno`
col legno abbrev. | `cl`
col legno battuto abbrev. | `clb`
col legno tratto abbrev. | `clt`
crescendo begin | `cresc-beg`
crescendo end | `cresc-end`
diminuendo begin | `dim-beg`
diminuendo end | `dim-end`
fermata | `pause`
glissando begin (see note) | `beg-gliss`
glissando end (see note) | `end-gliss`
left-handed pizzicato | `lhp`
molto vibrato | `mv`
natural harmonic | `harm`
open note | `open`
ordinario | `ord`
ottava begin (see note) | `beg-8va`
ottava end | `end-8va`
ottava bassa begin (see note) | `beg-8vb`
ottava bassa end | `end-8vb`
phrase mark begin | `beg-phrase`
phrase mark end | `end-phrase`
pizzicato | `pizz`
pizzicato in parentheses | `pizzp`
poco crini | `poco-crini`
senza vibrato | `sv`
short pause (see note) | `short-pause`
slur begin | `beg-sl`
slur end | `end-sl`
staccato | `s`
string indications | `I`, `II`, `III`, `IV`
sul ponticello abbrev. | `sp`
sustain pedal change | `ped^`
sustain pedal down | `ped`
sustain pedal up | `ped-up`
tenuto | `te`
tenuto-staccato | `ts`
tre corda | `tc`
tremolo (3 slashes through stem) | `t3`
una corda | `uc`

##### CMN-only articulation and performance indications

mark | :mark
--- | ---
additional CMN string indications | `I-II`, `I-II-III`, `II-III`, `III-IV`
fingernail | `nail`
stopped note | `stopped`
trill with flat accidental | `trill-f`
trill with natural accidental | `trill-n`
trill with sharp accidental | `trill-s`

###### Notes

- bartok pizzicato: To use `bartok` with LilyPond, you must set the `:use-custom-markup` keyword to `T` when calling `write-lp-data-for-all`.
- beg-gliss: Adding a gliss to a chord is not possible in CMN; try adding to a note in the chord instead.
- end-gliss: There is no separate command for ending a glissando in LilyPond, as there is in CMN; however, place the `end-gliss` anyway and slippery chicken will handle it internally.
- beg-8va/end-8va, beg-8vb/end-8vb: When LilyPond encounters these marks it will automatically transpose the pitches in the score by an octave. CMN does not do this.
- short pause: There is no short pause in CMN, so it is replaced by a normal fermata.

close

#### + Dynamics

mark | :mark
--- | ---
pppp | `pppp`
ppp | `ppp`
pp | `pp`
p | `p`
mp | `mp`
mf | `mf`
f | `f`
ff | `ff`
fff | `fff`
ffff | `ffff`

##### CMN-only dynamics

mark | :mark
--- | ---
pppp in parentheses | `pppp-p`
ppp in parentheses | `ppp-p`
pp in parentheses | `pp-p`
p in parentheses | `p-p`
mp in parentheses | `mp-p`
mf in parentheses | `mf-p`
f in parentheses | `f-p`
ff in parentheses | `ff-p`
fff in parentheses | `fff-p`
ffff in parentheses | `ffff-p`

close

#### + Note-heads

mark | :mark
--- | ---
circled x | `circled-x`
upwards pointing triangle | `triangle-up`
x | `x-head`

##### CMN-only note-heads

mark | :mark
--- | ---
airy notehead | `airy-head`
downward-pointing arrow | `arrow-down`
flageolet notehead | `flag-head`
no notehead | `none`
slash | `slash`
square | `square`
upward-pointing arrow | `arrow-up`

##### LilyPond-only note-heads

triangle pointing right | `triangle`

close