]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.0.51 release/0.0.51
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 14 Apr 1997 20:51:42 +0000 (22:51 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 14 Apr 1997 20:51:42 +0000 (22:51 +0200)
38 files changed:
.version
Documentation/CodingStyle.pod
Documentation/INSTALL.pod
Documentation/MANIFESTO.pod [new file with mode: 0644]
Documentation/examples.pod
Documentation/faq.pod
Documentation/index.pod
Documentation/lilygut.pod
Documentation/lilypond.pod
Documentation/mudela.pod
INSTALL.text
NEWS
README
TEST [new file with mode: 0644]
TODO
init/dutch.ini
init/symbol.ini
input/kortjakje.ly
input/scales.ly
input/wohltemperirt.ly
lily/.version
lily/crescendo.cc
lily/dynamic-reg.cc
lily/head-reg.cc [new file with mode: 0644]
lily/headreg.cc [deleted file]
lily/include/dynamic-reg.hh
lily/include/staff-side.hh
lily/include/text-item.hh
lily/include/text-reg.hh
lily/lexer.l
lily/musical-request.cc
lily/note-column-reg.cc
lily/note-column.cc
lily/notehead.cc
lily/register-group.cc
lily/staff-side.cc
lily/text-item.cc
lily/text-reg.cc

index 3434710ebe66572bb0d9b8434c383722ea35dab7..0e2c17ca28d7d73fd9254db74ecebb3d3230a5a0 100644 (file)
--- a/.version
+++ b/.version
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 0
-TOPLEVEL_PATCH_LEVEL = 50
+TOPLEVEL_PATCH_LEVEL = 51
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
index c1a9c7aed0981db668ecd76276027c59b2f65aba..468c63a260e85a4f80cda21448d630f6c0d13995 100644 (file)
@@ -1,10 +1,10 @@
 =head1 NAME
 
-CodingStyle - standards while programming for LilyPond
+CodingStyle - standards while programming for GNU LilyPond
 
 =head1 DESCRIPTION
 
-Please use these standards while doing programming for LilyPond
+Please use these standards while doing programming for GNU LilyPond
 
 Functions and methods do not return errorcodes, but use assert for
 checking status. 
@@ -115,8 +115,8 @@ Unfortunately most of the code isn't really documented that good.
 
 =head2 CLASSNAMES (2)
 
-A lot of classes in LilyPond start with 'P', this is to distinguish
-certain parts of LilyPond: the P stands for Printer, and the P-classes
+A lot of classes in GNU LilyPond start with 'P', this is to distinguish
+certain parts of GNU LilyPond: the P stands for Printer, and the P-classes
 are supposed to be more lowlevel than the others. Example:
 
 Staff uses PStaff, PScore and PCol to do the typesetting of
index 4a0701b8b02333884f0f0ffbaf819a5b00c33108..0d6c96e6ebd8ee2028148467f86d4b39ff671462 100644 (file)
@@ -1,10 +1,10 @@
 =head1 NAME
 
-INSTALL - installing LilyPond
+INSTALL - installing GNU LilyPond
 
 =head1 DESCRIPTION
 
-This page documents installation  and compilation of LilyPond
+This page documents installation  and compilation of GNU LilyPond
 
 =head1 IMPORTANT
 
@@ -22,7 +22,7 @@ For compilation you need.
 =over 5
 
 =item *
-Unix. LilyPond is known to run on Linux, AIX, Digital Unix and
+Unix. GNU LilyPond is known to run on Linux, AIX, Digital Unix and
 Solaris
 
 If you have the Cygnus WIN32 port of the GNU utils, it will
@@ -66,7 +66,7 @@ Documentation.
 
 =head1 CONFIGURING and COMPILING
 
-to install LilyPond, simply type:
+to install GNU LilyPond, simply type:
 
        configure
        make install
@@ -96,7 +96,7 @@ B<--help>. If you are not root, you will probably have to make it with
 
        configure --prefix=/home/me_myself_and_I/
 
-Since LilyPond currently is beta, You are advised to also use
+Since GNU LilyPond currently is beta, You are advised to also use
 
        --enable-debug
        --enable-checking
@@ -120,7 +120,7 @@ F<bin/>.
 
 =head1 RUNNING
 
-LilyPond does use a lot of resources. For operation you need the following:
+GNU LilyPond does use a lot of resources. For operation you need the following:
 
 
 =over 5
@@ -154,14 +154,14 @@ Windows NT:
 you need the cygnus win32 gnu port development stuff; have a look
 at http://www.cygnus.com/gnu-win32.
 
-to make LilyPond under, brr, aargh, well, simply type:
+to make GNU LilyPond under, brr, aargh, well, simply type:
 
        bash configure
        make win32
 
 =head1 PLATFORMS
 
-LilyPond (pl 0.0.39) is known to compile on the following platforms:
+GNU LilyPond (pl 0.0.39) is known to compile on the following platforms:
 
        * linux 2.0.28, g++ 2.7.2[.1]
        * aix 4.1, g++ 2.7.2
diff --git a/Documentation/MANIFESTO.pod b/Documentation/MANIFESTO.pod
new file mode 100644 (file)
index 0000000..7808c4b
--- /dev/null
@@ -0,0 +1,157 @@
+=head1 NAME
+
+MANIFESTO -- Rationale behind the GNU LilyPond project
+
+=head1 DESCRIPTION
+
+
+GNU LilyPond was written with some considerations in mind:
+
+
+=over 4
+
+Describing a well-defined language for defining music. We call
+this language (rather arrogantly) The Musical Definition Language
+(mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a
+TeX file.  
+
+=item *
+
+We want to provide an easy-to-use interface for typesetting music in
+its broadest sense. This interface should be intuitive from a musical
+point of view. By broadest sense we mean: it is designed for music
+printed left to right in staffs, using notes to designate rythm and
+pitch.
+
+=item  *
+
+Generate high-quality output. Ideally it should be of a professional
+quality. We'd like to render Herbert Chlapiks words, "Fine music
+setting is not possible without a knowledgeable printer,"  untrue.
+
+=back 
+
+=head1 LILYPOND
+
+
+Further considerations while doing the programming
+
+=over 4
+
+=item *
+
+GNU LilyPond uses MusiXTeX fonts and TeX for its output. This is not a key
+issue: in a future version, GNU LilyPond might bypass TeX, but at the moment
+TeX is very convenient for producing output.
+
+
+=item *
+
+GNU LilyPond does not display notes directly, nor will it be rehacked to be
+used interactively. GNU LilyPond writes output to a file.  It will not be
+extended to play music, or to recognize music.
+
+=item *
+
+GNU LilyPond is intended to run on Unix platforms, but it should
+be portable to any platform which can run TeX and the GNU tools
+
+=item *
+
+GNU LilyPond is free. Commercial windows packages for setting music are
+abundant. Free musicprinting software is scarce.
+
+=item *
+
+GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit
+broken systems.
+
+=back
+
+=head1 MUDELA
+
+The design of Mudela has been (perfect past tense, hopefully) an
+ongoing process, the most important criteria being:
+
+=over 4
+
+=item *
+
+define the (musical) message of the composer as unambiguously as possible,
+
+=item *
+
+be intuitive, and easily readable 
+(compared to, say, Musi*TeX input, or MIDI :-),
+
+=item *
+
+be writable in ASCII with a simple texteditor, yfte(TM).
+
+=back
+
+Other considerations were (and will be):
+
+=over 4
+
+=item *
+
+be able to edit the layout without danger of changing the original
+music (Urtext),
+
+=item *
+
+allow for adding different interpretations, again, 
+without danger of changing the original,
+
+=item *
+
+easy to create a conductor's score, 
+as well as the scores for all individual instruments,
+
+=item *
+
+provide simple musical manipulations, such as 
+S<(i) extracting> a slice of music from a previously defined piece, 
+S<(ii) extracting> only the rhythm from a piece of music, 
+S<(iii) transposing>, etc.,
+
+=item *
+
+easy to comprehend to both programmers and others.
+
+=back
+
+One of the things that (might) be here would be: feasible to use in a
+graphic editor. We don't have experience with these beasts, so we
+don't know how to do this. Comments appreciated.
+
+Musical pieces could be
+
+=over 4
+
+=item *
+
+Mahlerian orchestral scores,
+
+=item *
+
+piano pieces (Schubertian, Rachmaninovian),
+
+=item *
+
+pop songs (lyrics and chords),
+
+=item *
+
+gregorian chants,
+
+=item *
+
+Bach multivoice organ pieces,
+
+=item *
+
+short excerpts to be used in musicological publications.
+
+=back
index 48920157ee3b4fd14acaee2b6152cff827f3aa5f..b00226cebc2d2b3a017c6dc890cd08a2ce98e785 100644 (file)
@@ -1,18 +1,18 @@
 =head1 NAME
 
-LilyExamples - LilyPond example input
+LilyExamples - GNU LilyPond example input
 
 =head1 DESCRIPTION
 
-This file documents the example inputfiles of LilyPond. Information of
+This file documents the example inputfiles of GNU LilyPond. Information of
 each file: 
 
        title
        description (composer, piece)
-       tested LilyPond features.
+       tested GNU LilyPond features.
        copyright info
 
-Most music distributed with LilyPond was composed a long time ago, and
+Most music distributed with GNU LilyPond was composed a long time ago, and
 do not have copyrights. Any exceptions are mentioned here.
 
 =head2 F<cadenza.ly>
@@ -46,6 +46,8 @@ bones version.
 
 Features: example with lots of newbie comment.
 
+Copyright: public domain
+
 =head2 F<maartje.ly>
 
 Features: partial measure.
@@ -73,11 +75,11 @@ Features: auto beams, multiple parralel meters.
 =head2 F<scales.ly>
 
 Features: plets, accents, beam steepnesses, dynamics, crescendi,
-\octave command.
+\octave command, \transpose, multiple scripts
 
 =head2 F<scsii-menuetto.ly>
 
-J. S. Bach, Solo Cello Suites. Suite II part v Menuetto I
+J. S. Bach, Solo Cello Suites. Suite II part v Menuetto I. BWV ?
 
 Features: breaking algorithm, chords, multivoice, accents
 
@@ -90,13 +92,13 @@ Features: multivoice, accents, lyrics, chords, piano music
 
 =head2 F<twinkle.ly>
 
+Twinkle twinkle little star in three languages.
+
 Features: lyrics
 
 =head2 F<wohltemperirt.ly>
 
-JS Bach, Das Wohltemperirtes Clavier I, Fuga II (c-minor)
-
-a 7 bar fragment. 
+JS Bach, Das Wohltemperirtes Clavier I, Fuga II (c-minor), BWV ?
 
 Features: stem direction, multivoice.
 
index 930ad893451ed71ac9a265b1050466f928dd248e..70162a6095692b6057f5223572f9f8cd38e1ada9 100644 (file)
@@ -1,12 +1,32 @@
 =head1 NAME
 
-FAQ - LilyPond FAQs
+FAQ - GNU LilyPond FAQs
 
 =head1 DESCRIPTION
 
 Some questions that have been answered before.
 
-=head2 language
+=head2 Language: mudela
+
+Q: Why can't you type C<#c> in stead of C<cis> ?
+
+A: We think that C<#c> looks as if you are entering the symbols to
+print (which you are not; remember, you're entering the musical
+content in Mudela)
+
+We're not sure on leaving out this feature. If you think this is a
+good idea, please let us know.
+
+Be warned we will I<not> allow you to leave out the C<#> if the note
+already has an accidental. We won't allow
+
+       c# c    % no way! 
+
+in stead of:
+
+       cis cis
+       #c #c
+
 
 Q: I can type
 
@@ -73,9 +93,9 @@ simple front end to the complicated internals.
 
 Q: Why do I need g++ >= 2.7?
 
-A: By using g++ LilyPond is portable to all platforms which support
+A: By using g++, GNU LilyPond is portable to all platforms which support
 g++ (there are quite a few). Not having to support other compilers
-saves us a I<lot> of trouble. LilyPond and FlowerLib use:
+saves us a I<lot> of trouble. GNU LilyPond and FlowerLib use:
 
 =over 4
 
@@ -117,10 +137,10 @@ Q: I want a DOS/NT/W95 port.
 
 A.0: Reconsider.  Try Linux.  It's fun!
 
-A.1: Currently (patchlevel 27), LilyPond (and flowerLib) compiles, links
+A.1: Currently (patchlevel 27), GNU LilyPond (and flowerLib) compiles, links
 and runs on windhoos-nt, using the cygnus gnu port (release b17.1). 
 I (JCN) only had to make a minor workaround for missing library calls.  
-Have a look at http://www.cygnus.com/gnu-win32.  To make LilyPond type
+Have a look at http://www.cygnus.com/gnu-win32.  To make GNU LilyPond type
 C<make $OSTYPE>. (I am not promising to maintain this platform, it is just 
 that when having to use doze, i-m sometimes too lazy to reboot.)
 
index d6588acde243c232f0961b724fcc1b4df70bac13..b67f1543ff85deeefd2c030fb1f3082e7df92b46 100644 (file)
@@ -1,12 +1,12 @@
 =head1 NAME
 
-LilyPond -- the Webpage
+GNU LilyPond -- the Webpage
 
 Excuse me for this poor page. I don't really have time for doing this..
 
 =head1 DESCRIPTION
 
-Technically LilyPond is a preprocessor which generates TeX
+Technically GNU LilyPond is a preprocessor which generates TeX
 (or LaTeX) output which contains information to typeset a musical
 score. Practically it is a typesetter, which only uses TeX as an
 output medium. (this is handy because there exist music fonts for TeX)
@@ -15,7 +15,7 @@ As a bonus, you can also output a MIDI file of what you typed.
 
 It translates script files (mudela files or F<*.ly>'s) into TeX input.
 Typesetting music is a complex task, whereas the message that printed
-music conveys is usually a simple one. LilyPond is a try at providing
+music conveys is usually a simple one. GNU LilyPond is a try at providing
 a simple interface for setting music.
 
 =head1 DOCUMENTATION
@@ -27,8 +27,12 @@ The installation instructions.
 </a
 >
 
-
-
+=item *
+<a href=MANIFESTO.html
+>
+Design criteria
+</a
+>
 
 =item *
 <a href=lilypond.html
index a1b8497f52071d6d346be5ae1fafa88e88c44707..99c15cea105b62f171774d274148ebd6adf072f6 100644 (file)
@@ -1,10 +1,10 @@
 =head1 NAME
 
-LilyGuts - doco to the internals of LilyPond
+LilyGuts - doco to the internals of GNU LilyPond
 
 =head1 DESCRIPTION
 
-This page documents some aspects of the internals of LilyPond. Some of
+This page documents some aspects of the internals of GNU LilyPond. Some of
 this stuff comes from e-mail I wrote, some from e-mail others wrote,
 some are large comments taken away from the headers
 
@@ -14,7 +14,7 @@ You should use doc++ to take a peek at the sources.
 
 =head1 OVERVIEW
 
-LilyPond is a "5-pass" system:
+GNU LilyPond is a "5-pass" system:
 
 =over 4
 
@@ -225,7 +225,7 @@ meter sign after the clef. Using the previous notation,
 
        \discretionary{bar meter}{clef meter}{ bar meter }
 
-In Lilypond, we have the same concepts (and the same
+In GNU Lilypond, we have the same concepts (and the same
 terminology). Each (nonrhythmic) symbol is typeset using a Command
 (code: TYPESET). At a breakpoint, TYPESET commands can be grouped
 using separators (in lower case):
@@ -276,7 +276,7 @@ have been the subject of discussion in this thread).
 as you can see, these distance are conflicting. So instead of
 satisfying all those ideals simultaneously, a compromise is sought.
 
-This is Columbus' egg: LilyPond attaches "springs" to each
+This is Columbus' egg: GNU LilyPond attaches "springs" to each
 column-pair.  each spring has an equilibrium-position which is equal to
 the above mentioned distance, so
 
@@ -291,8 +291,8 @@ with minimum potential energy, for you physicists out there.
 This algorithm for doing one line, gives a "badness" parameter for
 each line (the potential energy). Now one can use TeX's algorithm for
 making paragraphs (using this new version of "badness"): one should
-try to minimise the overall badness of a paragraph. LilyPond also uses the
-concept of pre- and post-breaks.
+try to minimise the overall badness of a paragraph. GNU LilyPond also
+uses the concept of pre- and post-breaks.
 
 (actually, it is a bit more complicated: each column also has a
 minimum distance to other columns, to prevent symbols from running
index 3482fa961c231b1401f4d4edf4c6fb4da8c7d9ee..cce5ba495e94a99cf9ee1979dff89b9c011920f6 100644 (file)
@@ -42,7 +42,8 @@ output.
 
 =item B<-w,--warranty>,
 
-Show the warranty with which GNU LilyPond comes. (It comes with B<NO WARRANTY>!)
+Show the warranty with which GNU LilyPond comes. (It comes with B<NO
+WARRANTY>!)
 
 =item B<-o,--output=>F<FILE>,
 
@@ -63,6 +64,9 @@ add F<DIRECTORY> to the search path for input files.
 
 =head1 FEATURES
 
+This is an overview of the features that GNU LilyPond supports. For
+details on how to use them, you should consult mudela(5)
+
 =over 5
 
 =item *
@@ -108,62 +112,6 @@ clef changes, meter changes, cadenza-mode, key changes, repeat bars
 
 =back
 
-=head1 DESIGN CONSIDERATIONS
-
-GNU LilyPond was written with some considerations in mind:
-
-=over 5
-
-=item *
-
-Describing a well-defined language for defining music. We call
-this language (rather arrogantly) The Musical Definition Language
-(mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a
-TeX file.  
-
-=item *
-
-We want to provide an easy-to-use interface for typesetting music in
-its broadest sense. This interface should be intuitive from a musical
-point of view. By broadest sense we mean: it is designed for music
-printed left to right in staffs, using notes to designate rythm and
-pitch.
-
-=item *
-
-GNU LilyPond uses MusiXTeX fonts and TeX for its output. This is not a key
-issue: in a future version, GNU LilyPond might bypass TeX, but at the moment
-TeX is very convenient for producing output.
-
-=item  *
-
-Generate high-quality output. Ideally it should be of a professional
-quality. We'd like to render Herbert Chlapiks words, "Fine music
-setting is not possible without a knowledgeable printer,"  untrue.
-
-=item *
-
-GNU LilyPond does not display notes directly, nor will it be rehacked to be
-used interactively. GNU LilyPond writes output to a file.  It will not be
-extended to play music, or to recognize music.
-
-=item *
-
-GNU LilyPond is intended to run on Unix platforms, but it should
-be portable to any platform which can run TeX and the GNU tools
-
-=item *
-
-GNU LilyPond is free. Commercial windows packages for setting music are
-abundant. Free musicprinting software is scarce.
-
-=item *
-
-GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit
-broken systems.
-
-=back
-
 =head1
 DISCLAIMER & COPYING POLICY
 
@@ -265,6 +213,7 @@ ftp://pcnov095.win.tue.nl/pub/lilypond.
 =over 5
 
 =item F<symbol.ini>
+
 The initialisation file with symbol tables etc. It
 includes files from the directory F<init/>.
 
@@ -276,12 +225,28 @@ B<LILYINCLUDE> an (one) additional directory for finding lilypond data.
 
 =head1 SEE ALSO
 
-mudela(5)
+=over 4
+
+=item lilygut(?)
+
+On technical details of LilyPond
+
+=item mudela(5)
+
+On the input format
 
-There are some documentation files  in the subdirectory F<Documentation/>,
-among others: lilygut,  error, faq,
+=item MANIFESTO
+
+Goals of the GNU LilyPond project.
+
+=item The GNU LilyPond FAQ list
+
+=back
 
-http://www.stack.nl/~hanwen/lilypond/index.html
+GNU LilyPond has her own webpage at
+http://www.stack.nl/~hanwen/lilypond/index.html. This webpage contains
+the MIDI, GIF and PS files for some standard music files. It also has
+the complete LilyPond documentation
 
 =head1  REMARKS
 
index 4ee456d040e6f4c215eae8ff97746042baa69566..d8bfb8541af480f08cd39d0013a19706efa15447 100644 (file)
@@ -1,10 +1,10 @@
 =head1 NAME
 
-Mudela -  LilyPond input format 0.1
+Mudela -  GNU LilyPond input format 0.1
 
 =head1 DESCRIPTION
 
-This document describes the the LilyPond input format, which is an
+This document describes the the GNU LilyPond input format, which is an
 effective language for definining music.  We call this language
 (rather arrogantly) The Musical Definition Language (S<Mudela 0.1>).
 
@@ -12,89 +12,6 @@ The first aim of Mudela is to define a piece of music,
 being complete from both from a musical typesetting, 
 as from a musical performing point of view.
 
-The design of Mudela has been (perfect past tense, hopefully)
-an ongoing process, 
-the most important criteria being:
-
-=over 4
-
-=item *
-
-define the (musical) message of the composer as unambiguously as possible,
-
-=item *
-
-be intuitive, and easily readable 
-(compared to, say, Musi*TeX input, or MIDI :-),
-
-=item *
-
-be writable in ASCII with a simple texteditor, yfte(TM).
-
-=back
-
-Other considerations were (and will be):
-
-=over 4
-
-=item *
-
-be able to edit the layout without danger of changing the original
-music (Urtext),
-
-=item *
-
-allow for adding different interpretations, again, 
-without danger of changing the original,
-
-=item *
-
-easy to create a conductor's score, 
-as well as the scores for all individual instruments,
-
-=item *
-
-provide simple musical manipulations, such as 
-S<(i) extracting> a slice of music from a previously defined piece, 
-S<(ii) extracting> only the rhythm from a piece of music, 
-S<(iii) transposing>, etc.,
-
-=item *
-
-easy to comprehend to both programmers and others.
-
-=back
-
-Musical pieces could be
-
-=over 5
-
-=item *
-
-Mahlerian orchestral scores,
-
-=item *
-
-piano pieces (Schubertian, Rachmaninovian),
-
-=item *
-
-pop songs (lyrics and chords),
-
-=item *
-
-gregorian chants,
-
-=item *
-
-Bach multivoice organ pieces,
-
-=item *
-
-short excerpts to be used in musicological publications.
-
-=back
-
 
 =head1 Overview
 
@@ -118,6 +35,15 @@ entering C<include> at the start of a line:
 
 Line comments are introduced by a C<%>
 
+=head2 Versions
+
+Occasionally, small changes in syntax across different versions of
+Mudela might give syntax errors. To warn you about possible
+incompatibilities, you can specify the Mudela version for which the
+inputfile was written,
+
+       \version "0.0.50";
+
 =head2 Words
 
 Keywords are preceded by a backslash "\". They contain alphabetic
@@ -251,7 +177,9 @@ duration is one and a half quaver (C<4.>) times 2/3.
 
 Notenames are just a special kind of identifiers, and can be declared
 for any language appropriate (see F<dutch.ini>).  The default language
-for notenames is defined to be dutch,
+for notenames is defined to be dutch. In dutch, the notenames are
+a,b,c,d,e,f and g. Sharps are formed by adding the extension "is",
+flats by adding "es"
 
        % double sharp
        cisis disis eisis fisis gisis aisis bisis
@@ -336,7 +264,6 @@ the c- construct chooses the default up/down direction.
 
 
 
-
 =head2 Defaults
 
 If omit the duration of a, a default value is substituted. For this
@@ -392,7 +319,7 @@ duration entry are bound together using an underscore
 
 =head2  Music direction
 
-Mudela reads left to right, but LilyPond can stack voices and
+Mudela reads left to right, but you can still stack voices and
 Voice_elements which are produced in two directions: horizontal
 (voice like) and vertical (chord like)
 
@@ -419,6 +346,14 @@ The duration of a chord equals the union of the durations of each of
 its elements.  The C<\multivoice> is a construct which is explained
 below.
 
+=head2 Transposition
+
+You can transpose horizontal music in the following way:
+
+       \transpose {    d       % from c to d that's one octave up.
+               { e4 f4 }       % the horizontal music
+       }
+
 =head2 Rhythms
 
 Rhythms in Mudela are entered identical to Simple mudela.
@@ -462,7 +397,7 @@ In concrete, a piece of Mudela has the following structure:
 
 =head2 Examples
 
-Examples are included with the LilyPond distribution. For the sake of
+Examples are included with the GNU LilyPond distribution. For the sake of
 maintenance no long examples are included in this document.
 
 
@@ -528,15 +463,11 @@ requests. Merging of requests is preferably done with other requests
 done by members of the same voicegroups (beams, brackets, stems)
 
 
-=head2 Other
-
-LilyPond first reads F<symbol.ini>, which contains declarations crucial
-to proper operation of LilyPond (symbol tables, note names).
 
 =head1 HISTORY
 
 
-This language has a number of roots. First and foremost, LilyPond's
+This language has a number of roots. First and foremost, GNU LilyPond's
 predecessor mpp was the inspiration of simple Mudela.  Secondly, the
 hierarchical structure looks a lot like Rayce's (Rayce is a raytracer
 that I've written as a hobby project. ), which in turn owes a lot to
index 7d6f7d5427f2bfa0eba8f809214756a8bda9cc02..246247cbbd301dd169387558fea8d60f84bb1d5f 100644 (file)
@@ -5,10 +5,10 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
 N\bN\bN\bNA\bA\bA\bAM\bM\bM\bME\bE\bE\bE
-       INSTALL - installing LilyPond
+       INSTALL - installing GNU LilyPond
 
 D\bD\bD\bDE\bE\bE\bES\bS\bS\bSC\bC\bC\bCR\bR\bR\bRI\bI\bI\bIP\bP\bP\bPT\bT\bT\bTI\bI\bI\bIO\bO\bO\bON\bN\bN\bN
-       This page documents installation  and compilation of
+       This page documents installation  and compilation of GNU
        LilyPond
 
 I\bI\bI\bIM\bM\bM\bMP\bP\bP\bPO\bO\bO\bOR\bR\bR\bRT\bT\bT\bTA\bA\bA\bAN\bN\bN\bNT\bT\bT\bT
@@ -23,8 +23,8 @@ I\bI\bI\bIM\bM\bM\bMP\bP\bP\bPO\bO\bO\bOR\bR\bR\bRT\bT\bT\bTA\bA\bA\bAN\bN\bN\bNT\bT\bT\bT
 P\bP\bP\bPR\bR\bR\bRE\bE\bE\bER\bR\bR\bRE\bE\bE\bEQ\bQ\bQ\bQU\bU\bU\bUI\bI\bI\bIS\bS\bS\bSI\bI\bI\bIT\bT\bT\bTE\bE\bE\bES\bS\bS\bS
        For compilation you need.
 
-       +\bo Unix. LilyPond is known to run on Linux, AIX, Digital
-            Unix and Solaris
+       +\bo Unix. GNU LilyPond is known to run on Linux, AIX,
+            Digital Unix and Solaris
             If you have the Cygnus WIN32 port of the GNU utils,
             it will even work in Lose NT/95, but don't promise to
             support it.
@@ -50,7 +50,7 @@ R\bR\bR\bRE\bE\bE\bEC\bC\bC\bCO\bO\bO\bOM\bM\bM\bMM\bM\bM\bME\bE\bE\bEN\bN\bN\bND\bD\bD\bDE\bE\bE\bED\bD\bD\bD
        +\bo (GNU) find
 
 C\bC\bC\bCO\bO\bO\bON\bN\bN\bNF\bF\bF\bFI\bI\bI\bIG\bG\bG\bGU\bU\bU\bUR\bR\bR\bRI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG a\ba\ba\ban\bn\bn\bnd\bd\bd\bd C\bC\bC\bCO\bO\bO\bOM\bM\bM\bMP\bP\bP\bPI\bI\bI\bIL\bL\bL\bLI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
-       to install LilyPond, simply type:
+       to install GNU LilyPond, simply type:
 
                configure
                make install
@@ -61,7 +61,7 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNF\bF\bF\bFI\bI\bI\bIG\bG\bG\bGU\bU\bU\bUR\bR\bR\bRI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG a\b
 
 
 
-3/Apr/97                 LilyPond 0.0.50                        1
+14/Apr/97                LilyPond 0.0.51                        1
 
 
 
@@ -94,8 +94,8 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
                configure --prefix=/home/me_myself_and_I/
 
-       Since LilyPond currently is beta, You are advised to also
-       use
+       Since GNU LilyPond currently is beta, You are advised to
+       also use
 
                --enable-debug
                --enable-checking
@@ -119,15 +119,15 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
        subdirectory _\bb_\bi_\bn_\b/.
 
 R\bR\bR\bRU\bU\bU\bUN\bN\bN\bNN\bN\bN\bNI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
-       LilyPond does use a lot of resources. For operation you
-       need the following:
+       GNU LilyPond does use a lot of resources. For operation
+       you need the following:
 
        +\bo A fast computer (a full page of music typically takes 1
             minute on my 486/66, using the -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-c\bc\bc\bch\bh\bh\bhe\be\be\bec\bc\bc\bck\bk\bk\bki\bi\bi\bin\bn\bn\bng\bg\bg\bg
 
 
 
-3/Apr/97                 LilyPond 0.0.50                        2
+14/Apr/97                LilyPond 0.0.51                        2
 
 
 
@@ -155,15 +155,15 @@ W\bW\bW\bWI\bI\bI\bIN\bN\bN\bND\bD\bD\bDO\bO\bO\bOZ\bZ\bZ\bZE\bE\bE\bE
        you need the cygnus win32 gnu port development stuff; have
        a look at http://www.cygnus.com/gnu-win32.
 
-       to make LilyPond under, brr, aargh, well, simply type:
+       to make GNU LilyPond under, brr, aargh, well, simply type:
 
                bash configure
                make win32
 
 
 P\bP\bP\bPL\bL\bL\bLA\bA\bA\bAT\bT\bT\bTF\bF\bF\bFO\bO\bO\bOR\bR\bR\bRM\bM\bM\bMS\bS\bS\bS
-       LilyPond (pl 0.0.39) is known to compile on the following
-       platforms:
+       GNU LilyPond (pl 0.0.39) is known to compile on the
+       following platforms:
 
                * linux 2.0.28, g++ 2.7.2[.1]
                * aix 4.1, g++ 2.7.2
@@ -193,6 +193,6 @@ A\bA\bA\bAU\bU\bU\bUT\bT\bT\bTH\bH\bH\bHO\bO\bO\bOR\bR\bR\bRS\bS\bS\bS
 
 
 
-3/Apr/97                 LilyPond 0.0.50                        3
+14/Apr/97                LilyPond 0.0.51                        3
 
 
diff --git a/NEWS b/NEWS
index 237aac8d2f3b73db0a1e0cee5ca09d6556c5fa2e..cbcbe2102b1c77c0ce75f2e31de137c69fb95d7a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,18 @@
+pl 51
+       - transposition bugfix + doco
+       - LilyPond -> GNU LilyPond
+       - bugfixes for Staff_side and Note_column*
+       - wohltemperirt: 12 more bars
+
+******
+april 11
 pl 50
        - merge rest / notehead.
        - Staff_side as a base class for most "staff-side" symbols.
        - version check
        - Note_column_register, Note_column
        - multiple scripts
+
 ********
 april 8
 pl 49.jcn1
diff --git a/README b/README
index 229d052b1eb58d77d091c436ba36fe9e33524d54..9042e4f255c1553dae9372a182751a9c5775ab3c 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1,3 @@
-
-warning: the  --enable-optimise compile seems to broken!!
-
-===================
 IMPORTANT:
 
 if you have downloaded a
diff --git a/TEST b/TEST
new file mode 100644 (file)
index 0000000..0200c36
--- /dev/null
+++ b/TEST
@@ -0,0 +1,21 @@
+Testing for 0.1 in 3 stages:
+
+       1. Announce "beta testers wanted" 
+       to linux.dev.apps, gnu.announce, mutex
+
+       Source only dist
+
+       GOAL: bugfixes & doco updates
+
+       create mailing list
+
+       2. Announce to LilyPond list, GNU "internal" list, RoseGarden
+list ?, LDA, Mutex
+
+       Source & binary dist too, beta release to fsf?
+
+       GOAL: distribution & portability testing
+
+       3. Announce to COLA, gnu.announce
+
+       Public release
diff --git a/TODO b/TODO
index 1ba47b577aef11fa20b1b6b3ffeefdce10ff05f8..20b8e9aea56b1e47ac62f12b93f1b7f0916f2866 100644 (file)
--- a/TODO
+++ b/TODO
@@ -5,10 +5,8 @@ before 0.1
        * decent TeX page layout
 
        * per-pstaff item-widths
-       
-       * remove unnecessary or confusing constructs from .ly
 
-       * key undo
+       * script priority
 
 This is an assorted collection of stuff that will be done, might be
 done, or is an idea that I want to think about
@@ -16,12 +14,12 @@ done, or is an idea that I want to think about
 PARSER
        * Duration-> Musical_duration, typedef Rational Duration?
 
-MAKE-STUFF
-
-       * do platform stuff: configure, header(s), targets, build (out?)
-       
 BUGS
 
+       * hairpin width
+
+       * problems with empty staff.
+
        * help-lines
 
        * help-lines for rests
@@ -32,8 +30,12 @@ BUGS
 
        * lilypond - -> crash
 
+       * \stem -1 < chord >  rest 
+
 SEVERELY LACKING:
 
+       * SPEED!
+
        * grace notes
 
 FURTHER FOR ORCHESTRAL SCORE:
@@ -69,6 +71,8 @@ SMALLISH PROJECTS
 
        * half-sharps, half-flats
        
+       * key undo
+
        * unix style paths for LILYINCLUDE EN
 
        * rpm package buildroot
@@ -117,7 +121,6 @@ SMALLISH PROJECTS
        * C meter iso 4/4
 
        * textspanner: center position
-
        * script-spacing
 
        * Brackets
@@ -133,7 +136,8 @@ SMALLISH PROJECTS
 
        * add (good guess of) width to lyric items
 
-       * midi output: eat-up dynamic, key/meter/tempo changes, and write them neatly
+       * midi output: eat-up dynamic, key/meter/tempo changes, and
+write them neatly
 
        * LilyPond .deb
 
@@ -165,6 +169,9 @@ FUTURE
 
        * Junk Staff_column, and find the requests while walking the Voices.?
 
+       * MIDI repeat: make lily understand repeats
+
+
        * better beamslope calculation: QLP for beams?
 
        * implement better breaking algorithm
@@ -181,6 +188,7 @@ FUTURE
 
        * piano staff
 
+       * vertical spanner
 IDEAS
 
        * integrate Register/Midi stuff
@@ -224,3 +232,5 @@ IDEAS
        * #c <-> cis
 
        * breath marks 
+
+       * used fixedpoint arithmetic for min. energy.
index 5d040d38dd3a40ffea8bc9f675bc39c2cc14d934..7d814d91c039466e6be31075c6f74758b0dbc8a3 100644 (file)
@@ -35,6 +35,7 @@
        gis     = \melodic_request { -1 4 1 }
        gisis   = \melodic_request { -1 4 2 }
        ases    = \melodic_request { -1 5 -2 }
+       aes     = \melodic_request { -1 5 -1 }
        as      = \melodic_request { -1 5 -1 }
        a       = \melodic_request { -1 5 0 }
        ais     = \melodic_request { -1 5 1 }
@@ -76,7 +77,9 @@
        G       = \melodic_request { -2 4 0 }
        Gis     = \melodic_request { -2 4 1 }
        Gisis   = \melodic_request { -2 4 2 }
+       Aeses   = \melodic_request { -2 5 -2 }
        Ases    = \melodic_request { -2 5 -2 }
+       Aes     = \melodic_request { -2 5 -1 }
        As      = \melodic_request { -2 5 -1 }
        A       = \melodic_request { -2 5 0 }
        Ais     = \melodic_request { -2 5 1 }
index 2ae2fcc06427cfc1244936cefc893eaf40a32855..c707ec2e46dcabaa329a74bf536542b78f84a99d 100644 (file)
@@ -1,3 +1,5 @@
+\version "0.0.50";
+
 include "register.ini"
 include "dynamic.ini"
 include "dutch.ini" % do not include init/ path
index f0aaaf9aa3139ef0674c22bf1b7d50f0bf1d5d22..86797c682cc7eba649d62dba44359955ff5f3f18 100644 (file)
@@ -25,8 +25,8 @@ melodie = \melodic {
        g g|    f f|    e e|    d d|    g g|    f f|    e e|    d d|
        %%% var 1
          c r8 c8               % r8 means an 8th rest.
-                 (|            % \start a slur
-                               % NOTE: the slur\start should be directly after the note
+                 (|            % start a slur
+                               % NOTE: the slurstart should be directly after the note
                        )       % end a slur.
                          g r8 g8 (|    ) a r8 a8 (|    ) g r4 
          f r8 f8 (|    ) e4 r8 e8 (    |) d4 r8 d8 (|  ) c4 r4 
index 727b458d5afb3417255805c8e70986240a978df5..966cfbb3b39204b2879809ec3c5084b47a307c12 100644 (file)
@@ -13,7 +13,7 @@ blah = \staff{  melodicregs
                        c d 
                \clef "violin" ;
                \octave  c' ;
-                       c d
+               < \transpose { d { e f } } >
                \octave  c'' ;
                        c d 
                \duration  8 ;
@@ -22,11 +22,14 @@ blah = \staff{  melodicregs
                \octave  c' ;
                 |[ a  a a a a a a a \! a ]6/9 
                \octave  c'' ; 
-                [ 'c 'g d a e' b' f'' c''' g''' ]6/9
-                [ g''' c''' f'' b' e' a d 'g 'c ]6/9
+                ['c->-.-\fermata \< 'g->-.-\fermata d->-.-\fermata a->-.-\fermata
+               e'->-.-\fermata b'-. f''-. c'''->-.-\fermata \! g'''->-.-\fermata \> ]6/9
+                [g'''->-.-\fermata c'''->-.-\fermata f''->-.-\fermata b'->-.-\fermata e'->-.-\fermata a->-.-\fermata d->-.-\fermata 'g->-.-\fermata \! 'c->-.-\fermata ]6/9
+                \octave c;
+               ['c->-.-\fermata \< 'g->-.-\fermata d->-.-\fermata a->-.-\fermata
+               e'->-.-\fermata b'-. f''-. c'''->-.-\fermata \! g'''->-.-\fermata \> ]6/9
+                [g'''->-.-\fermata c'''->-.-\fermata f''->-.-\fermata b'->-.-\fermata e'->-.-\fermata a->-.-\fermata d->-.-\fermata 'g->-.-\fermata \! 'c->-.-\fermata ]6/9
                \octave  c' ;
-                [ 'c 'g d a e' b' f'' c''' g''' ]6/9
-                [ g''' c''' f'' b' e' a d 'g 'c ]6/9
                \octave  c' ;   
                 [ c g d' ]2/3 
                 [ d' g c ]2/3  
index 5bff42ebc0060ff9b9b7a1f511cbd027e5bc62cb..45f6381820c1d0a84782bba2945b08d65a31e909 100644 (file)
@@ -1,18 +1,16 @@
 % JS Bach, Das Wohltemperirtes Clavier I, Fuga II (c-minor)
 %
-% a 7 \bar fragment
-%
 %      Public Domain -- typed by by HWN
 %
 \version "0.0.50";
 
- global = \melodic{
+global = \melodic{
        \meter 4/4 ;
        \grouping 2*2; 
        \key bes es as; 
-  }
+}
   
- dux = \melodic  {
+dux = \melodic  {
        \clef "violin";
        \octave c' ;
        \duration  \last ;
        [g a bes8(] [)bes16 es f g ] [as g f es] [d8 c'16 b]|
        c'4 r4 r8 [f' es' d'] 
        r8 [as g f] [g f16 es] [f8 d] | 
+       g4 r8 b [c' c'16 b] [c'8 g] |
+%% 10  
+       as4 r8 a [bes bes16 a] [bes8 f] |
+       g4 r8 g [as as g f] | % should jump staff
+       \octave c;
+       r8 [as bes c'] r8 [as16 g] [as8 f8] |
+       [bes8 c bes as ] [bes g f es] |
+       [f des' c' bes ] [c' as g f] |
+       [g8 %jump!
+       \octave c';
+               g16 fis] [g8 c] [es g16 fis] [g8 a] |
+       [d g16 fis] [g8 a] [c16 d] es4 [d16 c] |
+       'bes8 r8 r16 [d e fis ] [g a bes8( ] [)bes16 e f g] |
+       [a bes c'8(] [)c'16 fis16  g a ] [bes8 es16 d] [es8 'g] |
+       ['as f16 e] [f8 'a8] ['bes g16 f] [g8 'b] |
+% 20
+       [c16 f es d] [c Bes As G] [F8 as g f] |
+       [es d es f] [B c d B] |
+       c4 r8 e8 [f f16 e] [f8 c] |
+       d4 r8 d8 [es8 es16 d] [es8 Bes] |
+       c2 () [c8 d16 es][ f es f d] |
+       B8 r8 r B c r r es |
+       d r r f()f r r f |
+       [es as g f] [es d es f] |
+       [B c d B] [B c] r c |
+       [f16 d es c]()[c8 B] c4 r8 e |
+       f4 r8 <f8 as b> [f es16 d] [es8 <f a] > |
+       <B d> r <B d> r <G2 c> |
 }
 
 comes = \melodic  {
@@ -40,6 +66,31 @@ comes = \melodic  {
        ['bes8 g16 f] [g8 'b] [c8 d16 es] f4( |
        [) f8 es16 d] [c16 'bes 'as 'g] ['f8 as g f] 
        [es d es f] ['b c d 'b] |
+       [c g16 fis] [g8 d] es4 r8 e8 |
+%% 10 
+       [f f16 e] [f8 c8] d4 r8 d |
+       [es8 es16 d] [es8 'bes] [c es16 d] [es8 f] |
+       ['bes es16 d] [es8 f] ['as16 'bes] c4 ['bes16 'as] |
+       [G16 Es F G] [As Bes c d] [es d c d] [es f g a] |
+       [bes F G As] [Bes c d e] [f es d es] [ f g a b] |
+       [c'8 b16 a] [g f e d] [c8 es d c] |
+       [Bes A Bes c] [Fis G A Fis] |
+       [G8 d16 c] d8 r8 r8 [e16 d] e8 r8 |
+       r [fis16 e] fis8 r r [G16 F] G8 r8 |
+       r8 [A16 G] A8 r r [B16 A] B8 r |
+%% 20
+       r8 [c16 'b] [c8 'g] [As c16 'c] [c8 d] |
+       [G c16 B] [c8 d] [F16 G] As4 [G16 F] |
+       [Es8 c16 B] [c8 G] As4 r8 A |
+       [Bes8 Bes16 A] [Bes8 F8] g4 r8 G(|
+       )[G As16 Bes] [c B c As] F2( |
+       )[F8 d16 c] [d8 F] [Es es16 d] [es8 G] |
+       [F f16 es] [f8 As] [G16 f es d] [c B A G] |
+       [c8 f es d] r [As G f] |
+       [G F16 Es] [F8 D] [As G] r A |
+       [B c] [F16 Es D C] [C8 c16 B] [c8  G]|
+       [As c16 B] [c8 d] [G8 c16 B] [c8 d] |
+       [F16 G] As4 [G16 F] E2 |
        
 }
 
@@ -54,6 +105,35 @@ bassdux = \melodic  {
        r1 |
        r8 [c16 B] [c8 G] [As c16 B] [c8 d] |
        [G c16 B] [c8 d] [F16 G] As4 [G16 F] | 
+       \octave c;
+       [es c' b a] [g f es d] [c d es d] [c Bes As G] |
+%% 10
+       [F bes as g ] [f es d c] [Bes c d c ] [Bes As G F]|
+       [Es as g f] [es des c Bes] [As8 c' bes as] |
+       [g8 f g as] [d es f d] |
+       [es as g f] [g es d c] |
+       [d bes as g] [as f es d] |
+       es8 r8 r4 r8 [c Bes A] |
+       r [es d c] [d c16 Bes] [c8 d] |
+       [G8 bes16 a] [bes8 d] [es c'16 bes] [c'8 e] |
+       [f d'16 c'] [d'8 fis] g4 r16 [G A B] |
+       [c16 d es8]()[es16 A Bes c] [d es f8]()[f16 'b c d]|
+%%20   
+       es8 r r e [f F Es D] |
+       r [As G F] [G F16 Es] [F8 G] |
+       [c16 d  es d] [c Bes As G] [F bes as g] [f es d c] |
+       [Bes c d c] [Bes As G F] [Es As g f ] [es d c Bes] |
+       [As Bes c Bes] [As G F Es] [D g f es ] [d c B A] |
+       g4 r4 r16 [G A B] [c d es f] |
+       [g f as g] [f es d c] [B8 c16 B] [c8 G] |
+       [As c16 B] [c8 d] [G c16 B] [c8 d] |
+       [F16 G] As4 [G16 F] Es4 r8 es |
+       [d c g G] 
+       < \multivoice 
+       { \stem 1; c2 (|)c1(|) c1 }
+       { \stem -1; C2(|)C1(|) C1 }
+       >
+
 }
 
 % every "melody" declared in a staff has its own "voicegroup"
@@ -69,7 +149,7 @@ trebstaf = \staff{
        }
        \paper{}
        \midi{
-               \tempo 4:90
+               \tempo 4:84
        }
 }
 
index 93a395e794f370e7bb7d89b9868b950b7808a2f0..9515322b97ba45316d7ad9e296968a4be8407267 100644 (file)
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 0
-PATCH_LEVEL = 49
+PATCH_LEVEL = 51
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
index 4583bdae2f9dd396dfadcbb7f7cf84b640617b0f..5b10f8cc895fe417161f83759405444cc2003081 100644 (file)
@@ -48,7 +48,7 @@ Crescendo::brew_molecule_p() const return m_p ;
     }
     Symbol s( paper()->lookup_l()->hairpin(w_dim, grow_dir_i_ < 0) );
     m_p->add(Atom(s));
-    int pos = get_position_i();
+    int pos = get_position_i(s.dim.y);
     m_p->translate(Offset(x_off_dim,pos * paper()->internote()));
 }
 
index 4088a3be704102ef3b3529c769bc3b6ff9ff2448..59de6094374edd41b815219d62b293e174885430 100644 (file)
@@ -14,6 +14,7 @@
 #include "paper-def.hh"
 #include "score-column.hh"
 #include "staff-sym.hh"
+#include "note-column.hh"
 
 Dynamic_register::Dynamic_register()
 {
@@ -133,3 +134,14 @@ Dynamic_register::~Dynamic_register()
     }
     delete cresc_p_;
 }
+void
+Dynamic_register::acknowledge_element(Staff_elem_info i)
+{
+    if (i.elem_l_->name() == Note_column::static_name()) {
+       if (dynamic_p_) dynamic_p_->add_support(i.elem_l_);
+       if (to_end_cresc_p_)
+           to_end_cresc_p_->add_support(i.elem_l_);
+       if (cresc_p_) 
+           cresc_p_->add_support(i.elem_l_);
+    }
+}
diff --git a/lily/head-reg.cc b/lily/head-reg.cc
new file mode 100644 (file)
index 0000000..fd84da6
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+  headreg.cc -- part of LilyPond
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+#include "notehead.hh"
+#include "head-reg.hh"
+#include "paper-def.hh"
+#include "complex-walker.hh"
+#include "musical-request.hh"
+
+Notehead_register::Notehead_register()
+{
+    note_p_ = 0;
+    set_feature(Features::dir(0));
+    post_move_processing();
+}
+
+bool
+Notehead_register::try_request(Request *req_l) 
+{
+    if (req_l->note() || req_l->rest())
+       note_req_l_=req_l->rhythmic();
+    else
+       return false;
+
+    return true;
+}
+void
+Notehead_register::set_feature(Features d)
+{
+    if(d.direction_i_ || d.initialiser_b_)
+       dir_i_ = d.direction_i_;
+}
+
+void
+Notehead_register::process_requests()
+{
+    if (!note_req_l_)
+       return;
+    
+    Notehead*n_p = new Notehead(8);    // ugh
+    note_p_ = n_p;
+    n_p->set_rhythmic(note_req_l_->rhythmic());
+
+    if (note_req_l_->note()) {
+       n_p->position = note_req_l_->note()->height() +
+           *get_staff_info().c0_position_i_l_;
+    } else if (note_req_l_->rest()) {
+       n_p->rest_b_ = true;
+       if (note_req_l_->rhythmic()->duration_.type_i_ <= 2)
+           note_p_->translate(
+               Offset(0,
+                      6 * paper()->internote()));
+    }
+    
+    Staff_elem_info itinf(note_p_,note_req_l_);
+    announce_element(itinf);
+}
+
+void
+Notehead_register::pre_move_processing()
+{
+    if (note_p_) {
+       if (dir_i_ && note_p_->rest_b_ ) {
+           note_p_->position +=4*dir_i_ ;
+       }
+       typeset_element(note_p_);
+       note_p_ = 0;
+    }
+}
+void
+Notehead_register::post_move_processing()
+{
+    note_req_l_ = 0;
+}
+
+IMPLEMENT_STATIC_NAME(Notehead_register);
+ADD_THIS_REGISTER(Notehead_register);
diff --git a/lily/headreg.cc b/lily/headreg.cc
deleted file mode 100644 (file)
index 2d551cd..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-  headreg.cc -- part of LilyPond
-
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "notehead.hh"
-#include "head-reg.hh"
-#include "paper-def.hh"
-#include "complex-walker.hh"
-#include "musical-request.hh"
-
-Notehead_register::Notehead_register()
-{
-    note_p_ = 0;
-    set_feature(Features::dir(0));
-    post_move_processing();
-}
-
-bool
-Notehead_register::try_request(Request *req_l) 
-{
-    if (req_l->note() || req_l->rest())
-       note_req_l_=req_l->rhythmic();
-    else
-       return false;
-
-    return true;
-}
-void
-Notehead_register::set_feature(Features d)
-{
-    if(d.direction_i_ || d.initialiser_b_)
-       dir_i_ = d.direction_i_;
-}
-
-void
-Notehead_register::process_requests()
-{
-    if (!note_req_l_)
-       return;
-    
-    Notehead*n_p = new Notehead(8);    // ugh
-    note_p_ = n_p;
-    n_p->set_rhythmic(note_req_l_->rhythmic());
-
-    if (note_req_l_->note()) {
-       n_p->position = note_req_l_->note()->height() +
-           *get_staff_info().c0_position_i_l_;
-    } else if (note_req_l_->rest()) {
-       n_p->rest_b_ = true;
-       if (note_req_l_->rhythmic()->duration_.type_i_ <= 2)
-           note_p_->translate(
-               Offset(0,
-                      6 * paper()->internote()));
-    }
-    
-    Staff_elem_info itinf(note_p_,note_req_l_);
-    announce_element(itinf);
-}
-
-void
-Notehead_register::pre_move_processing()
-{
-    if (note_p_) {
-       if (dir_i_ && note_p_->rest_b_ && note_p_->balltype <= 2) {
-           note_p_->position +=4*dir_i_ ;
-       }
-       typeset_element(note_p_);
-       note_p_ = 0;
-    }
-}
-void
-Notehead_register::post_move_processing()
-{
-    note_req_l_ = 0;
-}
-
-IMPLEMENT_STATIC_NAME(Notehead_register);
-ADD_THIS_REGISTER(Notehead_register);
index 8b39f4fe11dbb6afcfeaac2bfeb5a11bcc0c076e..b0f8b1a4379d647fae73c0c353036d7154a97607 100644 (file)
@@ -25,6 +25,7 @@ public:
     ~Dynamic_register();
     NAME_MEMBERS(Dynamic_register);
 protected:
+    virtual void acknowledge_element(Staff_elem_info);
     virtual bool try_request(Request *req_l);
     virtual void process_requests();
     virtual void pre_move_processing();
index bd29c53b5c8b3a2c8eeba198e153b86ed8da6b6e..e24dfa62e6e200441752d7e6fac153f67149e5ad 100644 (file)
@@ -35,5 +35,6 @@ public:
     
 protected:
     int get_position_i()const;
+    int get_position_i(Interval)const;
 };
 #endif // STAFF_SIDE_HH
index 85ff171d6d08b1587548fe664cbca796c3bbb232..bf405749464602eb2c129f7db744cec2da1a8b02 100644 (file)
@@ -24,13 +24,14 @@ public:
         
     /* ***************/
 
-    NAME_MEMBERS(Text_item);
-    virtual void set_default_index();
-    Molecule* brew_molecule_p() const;
-    void do_pre_processing();
     Text_item(Text_def*);
     Text_item(Text_req*);
     ~Text_item();
+    NAME_MEMBERS(Text_item);
+protected:
+    virtual void set_default_index();
+    Molecule* brew_molecule_p() const;
+    virtual void do_post_processing();
 };
 
 
index 59317e5bcd97bb855f91e77c2d52412baa446263..db668dd44f7ebb67f9e67f54ff3eb7b50bfb8a6d 100644 (file)
@@ -9,17 +9,20 @@
 #define TEXTREG_HH
 #include "register.hh"
 
-struct Text_register : Request_register{
+class Text_register : public Request_register{
     Text_item * text_p_;
     Text_req * text_req_l_;
     int dir_i_;
     /* *************** */
+protected:
     virtual void set_feature(Features );
-    Text_register();
     virtual bool try_request(Request*);
     virtual void process_requests();
     virtual void pre_move_processing();
     virtual void post_move_processing();
+    virtual void acknowledge_element(Staff_elem_info);
+public:
+    Text_register();
     NAME_MEMBERS(Text_register);
 };
 
index cdb62a8717fdde6e83e7c20867bae24c3fefdfc2..81dc336101ac2617f1568007023f3d2751a46a84 100644 (file)
@@ -50,7 +50,7 @@ TEX           {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL}
 WORD           {A}{AN}*
 ALPHAWORD      {A}+
 INT            -?{N}+
-REAL           {INT}?(\.{N}*)?
+REAL           {INT}?(\.{N}+)?
 KEYWORD                \\{WORD}
 WHITE          [ \n\t\f]
 BLACK          [^ \n\t\f]
index 1ba4fd7801d1306efb1d05b8969528fa5198b736..e9793572e7c5fa85a912c60638f730c14730f127 100644 (file)
@@ -106,13 +106,18 @@ Melodic_req::Melodic_req()
 void
 Melodic_req::transpose(Melodic_req const & delta)
 {
+    int old_pitch = pitch();
+    int delta_pitch = delta.pitch();
     octave_i_ += delta.octave_i_;
     notename_i_ += delta.notename_i_;
     while  (notename_i_ >= 7 ) {
        notename_i_ -= 7;
        octave_i_ ++;
     }
-    accidental_i_ += delta.accidental_i_;
+    int new_pitch = pitch();
+    int delta_acc = new_pitch - old_pitch - delta_pitch;
+    
+    accidental_i_ -= delta_acc;
     if (abs(accidental_i_) > 2) {
        delta.warning("transposition makes accidental larger than 2");
     }
index 1263ca1c6a7f4613c3d5d8bed5b87b420d32455f..d76baf235d677a94c6ba241efe9f714baf6b62f8 100644 (file)
@@ -26,9 +26,10 @@ Note_column_register::acknowledge_element(Staff_elem_info i)
     if (!acceptable_elem_b(i.elem_l_))
        return;
 
-    if (!ncol_p_)
+    if (!ncol_p_){
        ncol_p_ = new Note_column;
-
+       announce_element(Staff_elem_info(ncol_p_, 0));
+    }
     char const*nC = i.elem_l_->name();
 
     if (nC == Script::static_name())
index f71d61ba141381a52819e95af68c86d80732ed6d..4bb2f1d5e6f803729748146f0f935a9bed703f08 100644 (file)
@@ -114,7 +114,7 @@ Note_column::do_pre_processing()
     Item *support_l=top_head_l;
     int j;
     for (j = 0; j < 2; j++ ) {
-       for (int i=0; i < placed_l_arr_a[j].size(); j++) {
+       for (int i=0; i < placed_l_arr_a[j].size(); i++) {
            placed_l_arr_a[j][i]->add_support(support_l);
            support_l = placed_l_arr_a[j][i];
        }
index 85132fe55e9cede48d0980640e142b8d1e92ca09..df2becf109836459c85de012b77f3afd5cfbf3e7 100644 (file)
@@ -70,6 +70,10 @@ Notehead::brew_molecule_p() const return out;
     }
     out->translate(Offset(x_dir * p->note_width(),0));
     bool streepjes = (position<-1)||(position > staff_size+1);
+    
+    if (rest_b_ && balltype > 2)
+       streepjes = false;
+    
     if (streepjes) {
        int dir = sign(position);
        int s =(position<-1) ? -((-position)/2): (position-staff_size)/2;
index a7573332007163f0bba98f4bf95a94b4c7ebbc7b..9400bbc87a66bf4aa1b173f1903c9688fa69a911 100644 (file)
@@ -58,7 +58,7 @@ void
 Register_group_register::acknowledge_element(Staff_elem_info info)
 {
     Request_register* origin = info.origin_reg_l_arr_[0];
-    if (!contains_b(origin) && !origin->contains_b(this))
+    if (!contains_b(origin) && !origin->contains_b(this)) // am i sure?
        return;
     
     for (iter_top(reg_list_, i); i.ok(); i++) 
index 92b7917acb3a533797cd521324631f517967512c..0bf26223ab05777ddebf629fe366ac22692fb23e 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "staff-side.hh"
 #include "staff-sym.hh"
+#include "debug.hh"
 
 void
 Staff_side::set_staffsym(Staff_symbol* s_l)
@@ -43,6 +44,10 @@ Staff_side::get_position_i()const
 {
     if (!staff_sym_l_)
        return 0;
+    if (!dir_i_) {
+       warning("Staff_side::get_position_i(): returning -20");
+       return -20;
+    }
     
     Real inter_f = staff_sym_l_->inter_note_f();
     int staff_size_i = staff_sym_l_->steps_i();
@@ -61,5 +66,21 @@ Staff_side::get_position_i()const
        Interval v= support_height();
        y = v[dir_i_]  + 2*dir_i_*inter_f;      // ugh
     }
-    return int(rint(Real(y)/inter_f));
+    return int(rint(Real(y)/inter_f)); // should ret a float?
+}
+
+int
+Staff_side::get_position_i(Interval sym_dim) const
+{ 
+    if (!staff_sym_l_)
+       return 0;
+   if (!dir_i_) {
+       warning("Staff_side::get_position_i(): returning -20");
+       return -20;
+    }
+   
+    Real inter_f = staff_sym_l_->inter_note_f();
+  
+    int i= get_position_i();
+    return i+ int(rint(- sym_dim[dir_i_] / inter_f));
 }
index ee10d5e873b393749176d872fc75338038ce899d..e97c7357b3b56e69ed920911b483eb17d6146564 100644 (file)
@@ -50,12 +50,14 @@ Text_item::Text_item(Text_req* treq_l)
 void
 Text_item::set_default_index()
 {
-    pos_i_  = get_position_i();
+    pos_i_  = get_position_i(tdef_p_->create_atom(paper()).extent().y );
 }
 
 void
-Text_item::do_pre_processing()
+Text_item::do_post_processing()
 {
+    if (!dir_i_)
+       dir_i_ = -1;
     set_default_index();
 }
 
index 6c86fad828fc1c4be60b43cdc1e7bab83fa04802..c502781a1d7b80740f0bd43a5da46ddd8d80f4e4 100644 (file)
@@ -3,7 +3,7 @@
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
-
+#include "note-column.hh"
 #include "musical-request.hh"
 #include "text-reg.hh"
 #include "text-item.hh"
@@ -28,7 +28,13 @@ Text_register::try_request(Request*req_l)
     text_req_l_ = req_l->text();
     return true;
 }
-
+void
+Text_register::acknowledge_element(Staff_elem_info i)
+{
+    if (text_p_ && i.elem_l_->name() == Note_column::static_name()) {
+       text_p_->add_support(i.elem_l_);
+    }
+}
 void
 Text_register::process_requests()
 {