From: Han-Wen Nienhuys Date: Mon, 14 Apr 1997 20:51:42 +0000 (+0200) Subject: release: 0.0.51 X-Git-Tag: release/0.0.51 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=450905eed19bced95484ebb2639aba2eeb250b06;p=lilypond.git release: 0.0.51 --- diff --git a/.version b/.version index 3434710ebe..0e2c17ca28 100644 --- 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 diff --git a/Documentation/CodingStyle.pod b/Documentation/CodingStyle.pod index c1a9c7aed0..468c63a260 100644 --- a/Documentation/CodingStyle.pod +++ b/Documentation/CodingStyle.pod @@ -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 diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod index 4a0701b8b0..0d6c96e6eb 100644 --- a/Documentation/INSTALL.pod +++ b/Documentation/INSTALL.pod @@ -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. =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 index 0000000000..7808c4bb19 --- /dev/null +++ b/Documentation/MANIFESTO.pod @@ -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 diff --git a/Documentation/examples.pod b/Documentation/examples.pod index 48920157ee..b00226cebc 100644 --- a/Documentation/examples.pod +++ b/Documentation/examples.pod @@ -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 @@ -46,6 +46,8 @@ bones version. Features: example with lots of newbie comment. +Copyright: public domain + =head2 F Features: partial measure. @@ -73,11 +75,11 @@ Features: auto beams, multiple parralel meters. =head2 F Features: plets, accents, beam steepnesses, dynamics, crescendi, -\octave command. +\octave command, \transpose, multiple scripts =head2 F -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 twinkle little star in three languages. + Features: lyrics =head2 F -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. diff --git a/Documentation/faq.pod b/Documentation/faq.pod index 930ad89345..70162a6095 100644 --- a/Documentation/faq.pod +++ b/Documentation/faq.pod @@ -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 ? + +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 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 of trouble. LilyPond and FlowerLib use: +saves us a I 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. (I am not promising to maintain this platform, it is just that when having to use doze, i-m sometimes too lazy to reboot.) diff --git a/Documentation/index.pod b/Documentation/index.pod index d6588acde2..b67f1543ff 100644 --- a/Documentation/index.pod +++ b/Documentation/index.pod @@ -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. - - +=item * + +Design criteria + =item * , -Show the warranty with which GNU LilyPond comes. (It comes with B!) +Show the warranty with which GNU LilyPond comes. (It comes with B!) =item B<-o,--output=>F, @@ -63,6 +64,9 @@ add F 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 + The initialisation file with symbol tables etc. It includes files from the directory F. @@ -276,12 +225,28 @@ B 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, -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 diff --git a/Documentation/mudela.pod b/Documentation/mudela.pod index 4ee456d040..d8bfb8541a 100644 --- a/Documentation/mudela.pod +++ b/Documentation/mudela.pod @@ -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). @@ -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 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). 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, 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 diff --git a/INSTALL.text b/INSTALL.text index 7d6f7d5427..246247cbbd 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -5,10 +5,10 @@ INSTALL(1) LilyPond documentation INSTALL(1) NNNNAAAAMMMMEEEE - INSTALL - installing LilyPond + INSTALL - installing GNU LilyPond DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN - This page documents installation and compilation of + This page documents installation and compilation of GNU LilyPond IIIIMMMMPPPPOOOORRRRTTTTAAAANNNNTTTT @@ -23,8 +23,8 @@ IIIIMMMMPPPPOOOORRRRTTTTAAAANNNNTTTT PPPPRRRREEEERRRREEEEQQQQUUUUIIIISSSSIIIITTTTEEEESSSS For compilation you need. - +o Unix. LilyPond is known to run on Linux, AIX, Digital - Unix and Solaris + +o 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 @@ RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD +o (GNU) find CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG aaaannnndddd CCCCOOOOMMMMPPPPIIIILLLLIIIINNNNGGGG - to install LilyPond, simply type: + to install GNU LilyPond, simply type: configure make install @@ -61,7 +61,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a -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 _b_i_n_/. RRRRUUUUNNNNNNNNIIIINNNNGGGG - 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: +o A fast computer (a full page of music typically takes 1 minute on my 486/66, using the --------eeeennnnaaaabbbblllleeee----cccchhhheeeecccckkkkiiiinnnngggg -3/Apr/97 LilyPond 0.0.50 2 +14/Apr/97 LilyPond 0.0.51 2 @@ -155,15 +155,15 @@ WWWWIIIINNNNDDDDOOOOZZZZEEEE 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 PPPPLLLLAAAATTTTFFFFOOOORRRRMMMMSSSS - 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 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS -3/Apr/97 LilyPond 0.0.50 3 +14/Apr/97 LilyPond 0.0.51 3 diff --git a/NEWS b/NEWS index 237aac8d2f..cbcbe2102b 100644 --- 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 229d052b1e..9042e4f255 100644 --- 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 index 0000000000..0200c36ea6 --- /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 1ba47b577a..20b8e9aea5 100644 --- 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. diff --git a/init/dutch.ini b/init/dutch.ini index 5d040d38dd..7d814d91c0 100644 --- a/init/dutch.ini +++ b/init/dutch.ini @@ -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 } diff --git a/init/symbol.ini b/init/symbol.ini index 2ae2fcc064..c707ec2e46 100644 --- a/init/symbol.ini +++ b/init/symbol.ini @@ -1,3 +1,5 @@ +\version "0.0.50"; + include "register.ini" include "dynamic.ini" include "dutch.ini" % do not include init/ path diff --git a/input/kortjakje.ly b/input/kortjakje.ly index f0aaaf9aa3..86797c682c 100644 --- a/input/kortjakje.ly +++ b/input/kortjakje.ly @@ -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 diff --git a/input/scales.ly b/input/scales.ly index 727b458d5a..966cfbb3b3 100644 --- a/input/scales.ly +++ b/input/scales.ly @@ -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 diff --git a/input/wohltemperirt.ly b/input/wohltemperirt.ly index 5bff42ebc0..45f6381820 100644 --- a/input/wohltemperirt.ly +++ b/input/wohltemperirt.ly @@ -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 ; @@ -27,6 +25,34 @@ [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 [f es16 d] [es8 | + r r | } 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 } } diff --git a/lily/.version b/lily/.version index 93a395e794..9515322b97 100644 --- a/lily/.version +++ b/lily/.version @@ -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 diff --git a/lily/crescendo.cc b/lily/crescendo.cc index 4583bdae2f..5b10f8cc89 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -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())); } diff --git a/lily/dynamic-reg.cc b/lily/dynamic-reg.cc index 4088a3be70..59de609437 100644 --- a/lily/dynamic-reg.cc +++ b/lily/dynamic-reg.cc @@ -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 index 0000000000..fd84da6974 --- /dev/null +++ b/lily/head-reg.cc @@ -0,0 +1,80 @@ +/* + headreg.cc -- part of LilyPond + + (c) 1997 Han-Wen Nienhuys +*/ + +#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 index 2d551cdd2c..0000000000 --- a/lily/headreg.cc +++ /dev/null @@ -1,80 +0,0 @@ -/* - headreg.cc -- part of LilyPond - - (c) 1997 Han-Wen Nienhuys -*/ - -#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); diff --git a/lily/include/dynamic-reg.hh b/lily/include/dynamic-reg.hh index 8b39f4fe11..b0f8b1a437 100644 --- a/lily/include/dynamic-reg.hh +++ b/lily/include/dynamic-reg.hh @@ -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(); diff --git a/lily/include/staff-side.hh b/lily/include/staff-side.hh index bd29c53b5c..e24dfa62e6 100644 --- a/lily/include/staff-side.hh +++ b/lily/include/staff-side.hh @@ -35,5 +35,6 @@ public: protected: int get_position_i()const; + int get_position_i(Interval)const; }; #endif // STAFF_SIDE_HH diff --git a/lily/include/text-item.hh b/lily/include/text-item.hh index 85ff171d6d..bf40574946 100644 --- a/lily/include/text-item.hh +++ b/lily/include/text-item.hh @@ -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(); }; diff --git a/lily/include/text-reg.hh b/lily/include/text-reg.hh index 59317e5bcd..db668dd44f 100644 --- a/lily/include/text-reg.hh +++ b/lily/include/text-reg.hh @@ -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); }; diff --git a/lily/lexer.l b/lily/lexer.l index cdb62a8717..81dc336101 100644 --- a/lily/lexer.l +++ b/lily/lexer.l @@ -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] diff --git a/lily/musical-request.cc b/lily/musical-request.cc index 1ba4fd7801..e9793572e7 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -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"); } diff --git a/lily/note-column-reg.cc b/lily/note-column-reg.cc index 1263ca1c6a..d76baf235d 100644 --- a/lily/note-column-reg.cc +++ b/lily/note-column-reg.cc @@ -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()) diff --git a/lily/note-column.cc b/lily/note-column.cc index f71d61ba14..4bb2f1d5e6 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -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]; } diff --git a/lily/notehead.cc b/lily/notehead.cc index 85132fe55e..df2becf109 100644 --- a/lily/notehead.cc +++ b/lily/notehead.cc @@ -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; diff --git a/lily/register-group.cc b/lily/register-group.cc index a757333200..9400bbc87a 100644 --- a/lily/register-group.cc +++ b/lily/register-group.cc @@ -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++) diff --git a/lily/staff-side.cc b/lily/staff-side.cc index 92b7917acb..0bf26223ab 100644 --- a/lily/staff-side.cc +++ b/lily/staff-side.cc @@ -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)); } diff --git a/lily/text-item.cc b/lily/text-item.cc index ee10d5e873..e97c7357b3 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -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(); } diff --git a/lily/text-reg.cc b/lily/text-reg.cc index 6c86fad828..c502781a1d 100644 --- a/lily/text-reg.cc +++ b/lily/text-reg.cc @@ -3,7 +3,7 @@ (c) 1997 Han-Wen Nienhuys */ - +#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() {