lilypond-user
[Top][All Lists]
Advanced

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

Re: address@hidden Lilypond Comments!


From: Heikki Johannes Junes
Subject: Re: address@hidden Lilypond Comments!
Date: Thu, 08 Jul 2004 02:16:51 +0300 (EEST)
User-agent: HUT webmail, IMP 2.2.6

On Wed, 07 Jul 2004 11:02:23 -0400 address@hidden wrote:
>
> Jan Nieuwenhuizen <address@hidden> writes:
> 
> > [flup to mailing list]

Before going to comments, I suggest that the use of the lilypond parser could be
extended. As an example, for file file.ly:
 
  '{ c8 d16 e16 f4 }'
                 ^ at position 14,

one would invoke:

  lilypond --parse-position-only 14 file.ly

which would then output some position dependent information, like:

  '((staff 1) (bar 1) (beats-before 8 16 16))

The parsing of such a file (which is fast IFAIK) should then be stopped to the
given position. I can imagine that this kind of information could be easily
exploited in a randomly chosen editor. 

Jan or Han-Wen, is such a '--parse-position-only' option easily programmable?

( If the answer is 'Yep!', the comments below can be ignored. )

> > >>     %% foe
> > >>     | a4 b8
> > >>     | c16( d f)
> > >>     | c4-2 d 
> > >
> > > OK. Is there a BNF grammar I can examine?  I'm not sure just what
> > > other kinds of exotic stuff 'what-beat' would have to recognize.
> > 
> > No.  The specification is in lily/parser.yy, but you can get most 
> > important things from the tutorial.
> 
> I'll scan that, then. I think the best thing to do actually is find
> out everything that can be stuck between a note pitch and its
> duration. Its easy to recognize the following note and ignore any
> garbage in-between a duration (or the location a duration would exist)
> and the following note, and I'd rather not have to teach what-beat
> every nuance of Lilypond syntax.

As an example of the general case, consider the following syntax:

str = \notes { a8 b c d }     % new derivation rule
\score { \notes { 
  e4 
  \str                        % the derivation rule used
  g4 | a b 
  \grace { c8 d }             % notes with zero timing
  c4 
  \accacciatura e8            % a note with zero timing
  g4 | 
  \repeat unfold 4 { c4 } |   % repeated notes
  %{ c4 e f }%                % a block comment
}

Of course, it is enough if what-beat does not handle all special cases.

> > > I presume you mean lilypond's emacs mode, right? I can create a patch
> > > & send it to you if that's what you prefer.
> > 
> > Yes, that was what I meant, but please discuss with Heikki what needs
> > to be done before it goes in.
> 
> Agreed. I can work on integration today.  Heikki, what must I do to
> what-beat in order to integrate it into emacs-mode? So far, I plan to:
> 
> -> Improve the note-recognition syntax so that what-beat works with as
> much as it reasonably can. (I'll document any problems it has.)
>
> -> Bind what-beat to C-|, add an electric-what-beat binding to |.

An electric-what-beat binding to '|' is ok. However, I can imagine that the
output is modest, since generally the problem is not 

But, C-| is different: I have to press AltGr-'<' in order to get '|' (Finnish
key variant). I have not tested does C-AltGr-'<' correspond to C-'|'? In this
case, there should also be some other key binding.

> -> Include elisp code into lilypond, mail you the diffs.
> 
> Is that sufficient?

You may develope against version 2.2.0, but prreferably, do
  cvs diff -u ChangeLog dir1/file1 dir2/file2 ... > patchfile
Then the diffs can be merged with ease.

> NOTE: I am using lilypond 2.2.0...I was more interested in getting
> work done than in testing experimentatl features...at least I started
> off that way :)
>
> -- 
> David Svoboda                    address@hidden
> Senior Research Programmer       http://www.cs.cmu.edu/~svoboda
> Language Technologies Institute  Practice Kind Randomness and
> Carnegie Mellon University       Beautiful Acts of Nonsense

-- 
  Heikki Junes




reply via email to

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