lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: An overview of the system


From: Erik Sandberg
Subject: Re: An overview of the system
Date: Tue, 13 Dec 2005 12:03:18 +0100
User-agent: KMail/1.8.3

On Monday 12 December 2005 05.25, Don Blaheta wrote:
> > In general, i'd advice you to look directly in the .scm files (scm/*
> > wherever lilypond's data files are), rather than the online docs. The
> > .scm files sometimes contain additional hints.
>
> So you're arguing against documenting the system?

no, I'm just saying that the documentation currently isn't perfect, so in its 
current state, it is sometimes better to read source code.

Currently nobody is working on this part of documentation, but we would 
welcome anyone who did. See also the Implementation Documenter link on this 
page (hint hint):
http://lilypond.org/web/devel/participating/call-for-help
.. and aprevious (cancelled) attempt:
http://mail-archive.com/address@hidden/msg06619.html

> > > Each context has a variety of properties that keep track of where the
> > > engraving process is---what measure it's in, whether it's in the middle
> > > of a triplet, etc.---as well as some general properties of the context,
> > > like the stanza number or whether to beam.
> >
> > BTW, the time keeping properties are usually stored centrally in the
> > Score context; the other contexts "inherit" those property settings. (You
> > can also tweak this to be set per staff, look for Timing_translator in
> > regression tests)
>
> Well, sure, but that *is* the sort of thing that contexts keep track of,
> right?

Contexts is a rather difficult subject. Things like those properties are 
typically stored in contexts. Usually, some other datastructures _keep track_ 
of them, though (e.g., Timing_translator keeps track of some context 
properties related to timing, IIRC.) But then again, translators "belong" to 
contexts, so one could argue that contexts keep track of their translators, 
which keep track of the context properties.

The context tree is basically a skeleton, which binds translators together, 
and which holds context properties. It is important to understand that the 
context tree just is a snapshot of this skeleton; the skeleton can change 
over time.

> > > * In what order are the contexts visited---inside out?
> >
> > Bottom up. Events are sent to Voice context, which forwards the events to
> > Staff if they can't be swallowed.
>
> If they *can't* be swallowed?  I thought expressions were sent to more
> than one engraver.

Each event is *swallowed* by exactly one engraver. This means that the 
engraver takes care of all remaining processing of that event.

The event is sometimes _sent_ to many engravers, but only one of them will 
swallow it. (so if you add two Note_heads_engravers to the same context, only 
the first of them will swallow notes). This detail is however rather 
insignificant, and will probably change in v2.9+.

-- 
Erik




reply via email to

[Prev in Thread] Current Thread [Next in Thread]