LilyPond Internals Reference: 3.1.103 Stem

### 3.1.103 Stem

Stem objects are created by: Stem_engraver.

Standard settings:

> `beamlet-default-length` (pair):

>   `'(1.1 . 1.1)`

>   A pair of numbers. The first number specifies the default length of a beamlet that sticks out of the left hand side of this stem; the second number specifies the default length of the beamlet to the right. The actual length of a beamlet is determined by taking either the default length or the length specified by `beamlet-max-length-proportion`, whichever is smaller.

> `beamlet-max-length-proportion` (pair):

>   `'(0.75 . 0.75)`

>   The maximum length of a beamlet, as a proportion of the distance between two adjacent stems.

> `default-direction` (direction):

>   `ly:stem::calc-default-direction`

>   Direction determined by note head positions.

> `details` (list):

>   `'((lengths 3.5 3.5 3.5 4.25 5.0 6.0) (beamed-lengths 3.26 3.5 3.6) (beamed-minimum-free-lengths 1.83 1.5 1.25) (beamed-extreme-minimum-free-lengths 2.0 1.25) (stem-shorten 1.0 0.5))`

>   Alist of parameters for detailed grob behavior. More information on the allowed parameters for a grob can be found by looking at the top of the Internals Reference page for each interface having a `details` property.

> `direction` (direction):

>   `ly:stem::calc-direction`

>   If `side-axis` is `0` (or `#X`), then this property determines whether the object is placed `#LEFT`, `#CENTER` or `#RIGHT` with respect to the other object. Otherwise, it determines whether the object is placed `#UP`, `#CENTER` or `#DOWN`. Numerical values may also be used: `#UP`=`1`, `#DOWN`=`-1`, `#LEFT`=`-1`, `#RIGHT`=`1`, `#CENTER`=`0`.

> `duration-log` (integer):

>   `stem::calc-duration-log`

>   The 2-log of the note head duration, i.e., `0` = whole note, `1` = half note, etc.

> `flag` (stencil):

>   `ly:stem::calc-flag`

>   A function returning the full flag stencil for the `Stem`, which is passed to the function as the only argument. The default ly:stem::calc-stencil function uses the `flag-style` property to determine the correct glyph for the flag. By providing your own function, you can create arbitrary flags.

> `length` (dimension, in staff space):

>   `ly:stem::calc-length`

>   User override for the stem length of unbeamed stems.

> `neutral-direction` (direction):

>   `-1`

>   Which direction to take in the center of the staff.

> `stem-end-position` (number):

>   `ly:stem::calc-stem-end-position`

>   Where does the stem end (the end is opposite to the support-head)?

> `stencil` (stencil):

>   `ly:stem::print`

>   The symbol to print.

> `thickness` (number):

>   `1.3`

>   Line thickness, generally measured in `line-thickness`.

> `X-extent` (pair of numbers):

>   `ly:stem::width`

>   Hard coded extent in X direction.

> `X-offset` (number):

>   `ly:stem::offset-callback`

>   The horizontal amount that this object is moved relative to its X-parent.

> `Y-extent` (pair of numbers):

>   `ly:stem::height`

>   Hard coded extent in Y direction.

> `Y-offset` (number):

>   `ly:staff-symbol-referencer::callback`

>   The vertical amount that this object is moved relative to its Y-parent.

This object supports the following interface(s): font-interface, grob-interface, item-interface and stem-interface.

#### Internals Reference