[Top][All Lists]

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

Re: Another time model (related to the usability thread)

From: Keith OHara
Subject: Re: Another time model (related to the usability thread)
Date: Mon, 2 Dec 2013 23:54:59 +0000 (UTC)
User-agent: Loom/3.14 (

James Harkins <jamshark70 <at>> writes:

> Time is represented exclusively in terms of Inter-Onset Intervals
> [i.e. durations]. This is great for streams of events, but perfectly
> wretched for multiple streams that must coordinate.
> Example: Suppose I'm writing an orchestral piece with, oh, 40 staves.
> The music changes meter every 2 or 3 bars. One extended passage is
> a duet between two soloists; all other players rest.
> If I (wisely) use a global variable to coordinate the meter changes,
> I have to write the metrical structure in spacer rests. For the parts,
> I have to a/ write scheme to convert spacers to full-bar rests,
> Now let's say that we don't live in a perfect world and I didn't
> write everything in perfect form on paper before engraving. Then
> I decide that one 2/4 bar should actually be 3/4. So now I have
> to change s2 to s2. in the global variable AND I have to change some
> representation of time (whether a literal R or a scheme function
> invocation) in EVERY part.

Of course specifying time in terms of durations is more convenient
than specifying absolute time, or we would need to change every
following note when we insert a few measures. 

It does come up often that we want to say 
  full-measure-rest until the next key-change
  skip until the next rehearsal mark
or sometimes even
  drone D until the double-bar
If we had an easy way to enter a duration of until-X, then ability to
place the next note X comes naturally.  Sometimes 'X' is the end of
the entire piece.  Would that ease the difficulties mentioned above ?

LilyPond has a bunch functions of trying to help
  #(skip-of-lenngth #(mmrest-of-length
but none seem to do the job simply (and it took me quite a while to 
remember what they were called closely enough in order to look them up
in the manual.)

LilyPond does some similar things for us already.  For example we
usually enter rehearsal marks just once in some \global variable, that
we include in << parallel >> with the variables that contain the music,
and LilyPond will split a R1*32 rest into segments to print those marks
correctly in the parts. 
If the parallel-music iterator could accept until-X durations, and
listen for some event that identifies itself as 'X'  that might make
entry a lot easier.

reply via email to

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