|
PhrasingSlur
PhrasingSlur grobs are created by: Phrasing_slur_engraver
Other grobs have a shape that depends on the horizontal spacing. For
example, slur, beam, tie, etc. These grobs form a subtype called
Spanner . All spanners have two span-points (these must be
Item s), one on the left and one on the right. The left bound is
also the X-reference point of the spanner.
minimum-length (dimension, in staff space)
- try to make the
Grob at least this long.
Also works as a scaling parameter for the length of hyphen. .
Default value: 1.5
A slur
attachment (pair)
- cons of symbols
indicating how a slur should be attached at the ends. The format is
'(LEFT-TYPE . RIGHT-TYPE), where both TYPEs are symbols. The values of
these symbols may be alongside-stem, stem, head or loose-end.
Default value:
'(#f . #f)
attachment-offset (pair)
- cons of offsets,
'(LEFT-offset . RIGHT-offset). This offset is added to the
attachments to prevent ugly slurs. [fixme: we need more documentation here].
.
Default value:
'((0 . 0) 0 . 0)
beautiful (number)
- number that dictates when a slur should be de-uglyfied. It correlates with the enclosed area between noteheads and slurs. A value of 0.1 yields only undisturbed slurs, a value of 5 will tolerate quite high blown slurs.
Default value:
0.5
control-points (list)
- List of 4 offsets (number-pairs) that form control points for the tie/slur shape.
Default value: (unset)
dashed (number)
- [FIXME: use dash-period/dash length; see text-spanner] number representing the length of the dashes.
Default value: (unset)
de-uglify-parameters (list)
- list of 3 real constants. They define the valid areas for the middle control points. Used in de_uglyfy. They are a bit empirical.
Default value:
'(1.5 0.8 -2.0)
details (list)
- alist of parameters for detailed grob behavior.
Default value:
'((force-blowfit . 0.5) (bezier-pct-c0 . -0.2) (bezier-pct-c3 . 6.0e-6) (bezier-pct-out-max . 0.8) (bezier-pct-in-max . 1.2) (bezier-area-steps . 1.0))
direction (direction)
- up or down, left or right?.
Default value: (unset)
extremity-offset-alist (list)
- an alist (attachment stem-dir*dir slur-dir*dir) -> offset. The offset adds to the centre of the notehead, or stem.
Default value:
'(((head 1 1) -0.25 . 1.25) ((head 1 -1) -0.25 . 1.25) ((head -1 1) -0.25 . 1.25) ((head -1 -1) -0.85 . 1.25) ((stem 1 1) -0.25 . 1.5) ((stem -1 -1) -0.25 . 1.5) ((loose-end 1 1) -0.4 . 0) ((loose-end 1 -1) -0.4 . 0) ((loose-end -1 -1) -4 . 0) ((loose-end -1 1) -4 . 0))
extremity-rules (list)
- an alist (procedure
slur dir) -> attachment to determine the attachment (see above). If
procedure returns #t, attachment is used. Otherwise, the next
procedure is tried.
Default value:
'((#<procedure #f (slur dir)> . head) (#<procedure #f (slur dir)> . loose-end) (#<procedure #f (slur dir)> . head) (#<procedure #f (slur dir)> . stem) (#<procedure #f (slur dir)> . loose-end) (#<procedure #f (x y)> . head))
height-limit (dimension, in staff space)
- Maximum slur height,
long slurs approach this height.
For small width w, the height should be proportional to w, for w ->
infinity, the height should rise to limit h_infinity asymptotically.
Hence we take F (x) such that
F (0) = 0 , F' (0) = 1, and F (infinity) = 1
where
h = height-limit * F (x * ratio / height-limit)
Currently, for F we use
F (x) = 2/pi * atan (pi * x/2)
Default value: 2.0
ratio (number)
- Slur parameter. See height-limit.
Default value:
0.333
slope-limit (number)
- set slope to zero if slope is running away steeper than this.
Default value:
0.8
thickness (number)
- thickness, measured in stafflinethickness.
Default value:
1.2
y-free (dimension, in staff space)
- minimal vertical gap between slur and noteheads or stems.
Default value:
0.75
In music notation, lots of symbols are related in some way. You can
think of music notation as a graph where nodes are formed by the
symbols, and the arcs by their relations. A grob is a node in that
graph. The directed edges in the graph are formed by references to
other grobs (i.e. pointers). This big graph of grobs specifies the
notation problem. The solution of this problem is a description of the
printout in closed form, i.e. a list of values. These values are
Molecules.
All grobs have an X and Y-position on the page. These X and Y positions
are stored in a relative format, so they can easily be combined by
stacking them, hanging one grob to the side of another, and coupling
them into a grouping-grob.
Each grob has a reference point (a.k.a. parent): the position of a grob
is stored relative to that reference point. For example the X-reference
point of a staccato dot usually is the note head that it applies
to. When the note head is moved, the staccato dot moves along
automatically.
A grob is often associated with a symbol, but some grobs do not print
any symbols. They take care of grouping objects. For example, there is a
separate grob that stacks staves vertically. The NoteCollision
is also an abstract grob: it only moves around chords, but doesn't print
anything.
X-extent (pair of numbers)
- Store extent. internal use only.
Default value: (unset)
X-extent-callback (procedure)
- procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.
The size of a grob are determined through callbacks, settable with
grob properties X-extent-callback and Y-extent-callback .
There can be only one extent-callback for each axis. No callback
(Scheme value #f ) means: `empty in this direction'. If you fill
in a pair of numbers, that pair hard-codes the extent in that
coordinate.
Default value: (unset)
X-offset-callbacks (list)
- list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.
Offsets of grobs are relative to a parent reference point. Most
positions are not known when an object is created, so these are
calculated as needed. This is done by adding a callback for a specific
direction.
Offset callbacks can be stacked, i.e.
property .... override #'Y-offset-callbacks = #(list
callback1 callback2 callback3)
The callbacks will be executed in the order callback3 callback2
callback1 . This is used for quantized positioning: the staccato dot is
above or below a note head, and it must not be on a staff-line. To
achieve this, the staccato dot has two callbacks: one that positions the
grob above or below the note head, and one that rounds the Y-position of
the grob to the nearest open space.
Default value: (unset)
Y-extent (pair of numbers)
- Store extent. internal use only.
Default value: (unset)
Y-extent-callback (procedure)
- see
X-extent-callback .
Default value: Slur::height
Y-offset-callbacks (list)
- see
X-offset-callbacks .
Default value: (unset)
after-line-breaking-callback (procedure)
- Procedure taking a grob as argument.
This procedure is called (using dependency resolution) after line breaking. Return value is ignored.
Default value:
Slur::after_line_breaking
before-line-breaking-callback (procedure)
- Procedure taking grob as argument.
This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored.
Default value: (unset)
cause (any type)
- Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob.
Default value: (unset)
causes (list)
- list of cause objects; these can be music objects or grobs.
Default value: (unset)
dependencies (list of grobs)
- list of score-grob pointers that indicate who to compute first for certain global passes.
Default value: (unset)
extra-X-extent (pair of numbers)
- enlarge in X dimension by this much, measured in staff space.
Default value: (unset)
extra-Y-extent (pair of numbers)
- see
extra-Y-extent .
Default value: (unset)
extra-offset (pair of numbers)
- pair of reals
(a cons) forcing an extra offset before outputting.
extra-offset is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces (list)
- list of symbols indicating the interfaces supported by this object. Is initialized from the
meta field.
Default value: (unset)
layer (number)
- The output layer [0..2]. The default is 1.
Default value: (unset)
meta (list)
- Alist of meta information of this grob.
The alist contains the following entries: name, interfaces.
Default value: '((name . PhrasingSlur) (interfaces grob-interface slur-interface spanner-interface))
minimum-X-extent (pair of numbers)
- minimum size in X dimension, measured in staff space.
Default value: (unset)
minimum-Y-extent (pair of numbers)
- see
minimum-Y-extent .
Default value: (unset)
molecule (unknown)
- Cached output of the molecule-callback.
Default value: (unset)
molecule-callback (procedure)
- Function
taking grob as argument, returning a smobbed Molecule.
All visible, i.e. non-transparent, grobs have a callback to create a
Molecule. The callback should be a Scheme function taking one argument
(the grob) and returning a Molecule. Most molecule callbacks are
written in C++, but you can also write them in Scheme. An example is
provided in input/regression/molecule-hacking.ly .
Default value: Slur::brew_molecule
spacing-procedure (procedure)
- procedure
taking grob as argument. This is called after
before-line-breaking-callback, but before the actual line breaking
itself. Return value is ignored.
Default value:
Spanner::set_spacing_rods
staff-symbol (grob (GRaphical OBject))
- the staff symbol grob that we're in.
Default value: (unset)
transparent (boolean)
- This is almost the
same as setting molecule-callback to #f, but this retains the
dimensions of this grob, which means that you can erase grobs
individually. .
Default value: (unset)
|