[icon]

GNU LilyPond

Welcome to the home of the GNU Music Typesetter

What is LilyPond
General information
Simple examples
Complex examples
Download
GNU/Linux binaries
Windows
Source code
Documentation
Tutorial
Manual
Glossary
other ...

Support
Mailing lists
Search
WikiWiki
FAQs

External sites
lilypond.org/development
lilypond.org/stable
ftp.lilypond.org
Mutopia
Other music online

Node:What is a grob?, Next:, Up:Grobs



What is a grob?

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. (see 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.

If you keep following offset reference points, you will always end up at the root object. This root object is called Line_of_score, and it represents a system (i.e. a line of music).

All grobs carry a set of grob-properties. In the Stem example above, the property direction is set to value 1. The function that draws the symbol (Stem::brew_molecule) uses the value of direction to determine how to print the stem and the flag. The appearance of a grob is determined solely by the values of its properties.

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 staffs vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.

A complete list of grob types is found in the generated documentation.

Go back to index of LilyPond.

Please send GNU LilyPond questions and comments to lilypond-user@gnu.org.

Please send comments on these web pages to lilypond@packages.debian.org

Copyright (c) 1997--2001 Han-Wen Nienhuys and Jan Nieuwenhuizen.

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.


This page was built from LilyPond-1.4.12 (stable-branch) by

Anthony Fok <lilypond@packages.debian.org>, Tue Mar 12 01:35:39 2002 HKT.