From 65a284d681d8a099efb60be7a938a7f98d58cc73 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 9 Dec 1997 13:32:23 +0100 Subject: [PATCH] release: 0.1.36 --- AUTHORS.text | 2 +- Documentation/faq.pod | 61 +++++++++----- Documentation/lilypond.pod | 4 +- Documentation/links.pod | 4 - Documentation/literature.pod | 11 +-- INSTALL.text | 12 +-- NEWS | 12 +++ VERSION | 2 +- bin/clean-diaper.sh | 1 + bin/ly2dvi.sh | 15 +++- bin/mf-to-table.py | 2 +- debian/Makefile | 2 +- debian/TODO | 2 +- debian/changelog | 12 +++ debian/copyright | 2 +- debian/postinst | 2 +- debian/rules | 2 +- flower/NEWS | 5 ++ flower/VERSION | 2 +- flower/include/assoc.hh | 7 +- init/engraver.ly | 8 +- init/feta16.ly | 32 ++++---- init/feta20.ly | 32 ++++---- init/lily-init.ly | 6 +- input/cadenza.ly | 4 +- input/font.ly | 2 + input/gallina.ly | 8 +- input/header.ly | 16 ---- input/kortjakje.ly | 2 +- input/standchen-16.ly | 2 +- input/standchen-20.ly | 2 +- input/standchen.ly | 6 +- input/toccata-fuga-E.ly | 2 +- input/twinkle-pop.ly | 2 +- input/twinkle.ly | 20 +++-- lily/VERSION | 2 +- lily/axis-group-administration.cc | 3 + lily/bar-column-grav.cc | 12 +-- lily/bar-grav.cc | 23 ++++-- lily/clef-grav.cc | 1 + lily/include/bar-grav.hh | 2 + lily/include/item.hh | 2 + lily/include/normal-bar.hh | 23 ------ lily/include/normal-span-bar.hh | 24 ------ ...halign-grav.hh => priority-halign-grav.hh} | 14 ++-- ...e-align-grav.hh => score-priority-grav.hh} | 17 ++-- lily/item.cc | 1 + lily/key-grav.cc | 1 + lily/meter-grav.cc | 1 + lily/normal-bar.cc | 12 --- lily/normal-span-bar.cc | 12 --- lily/priority-halign-grav.cc | 50 ++++++++++++ lily/rest.cc | 6 +- lily/score-align-grav.cc | 51 ------------ lily/score-align-gravs.cc | 35 -------- lily/score-halign-grav.cc | 51 ------------ lily/score-priority-grav.cc | 81 +++++++++++++++++++ lily/span-bar-grav.cc | 4 +- lily/span-score-bar-grav.cc | 10 ++- lily/stem.cc | 2 +- make/lelievijver.lsm | 8 +- make/lilypond.lsm | 8 +- make/lilypond.spec | 4 +- mf/feta-banier.mf | 19 +++-- mf/feta-generic.mf | 6 +- mf/feta-klef.mf | 55 +++++++++---- tex/feta16.tex | 4 +- tex/feta20.tex | 4 +- 68 files changed, 443 insertions(+), 411 deletions(-) delete mode 100644 input/header.ly delete mode 100644 lily/include/normal-bar.hh delete mode 100644 lily/include/normal-span-bar.hh rename lily/include/{score-halign-grav.hh => priority-halign-grav.hh} (59%) rename lily/include/{score-align-grav.hh => score-priority-grav.hh} (61%) delete mode 100644 lily/normal-bar.cc delete mode 100644 lily/normal-span-bar.cc create mode 100644 lily/priority-halign-grav.cc delete mode 100644 lily/score-align-grav.cc delete mode 100644 lily/score-align-gravs.cc delete mode 100644 lily/score-halign-grav.cc create mode 100644 lily/score-priority-grav.cc diff --git a/AUTHORS.text b/AUTHORS.text index d5bbbea66e..36f05e91fe 100644 --- a/AUTHORS.text +++ b/AUTHORS.text @@ -61,6 +61,6 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS -25/Nov/97 LilyPond 0.1.35 1 +25/Nov/97 LilyPond 0.1.36 1 diff --git a/Documentation/faq.pod b/Documentation/faq.pod index e9eb1d4a73..15487142b0 100644 --- a/Documentation/faq.pod +++ b/Documentation/faq.pod @@ -182,6 +182,45 @@ Q: How do I change the TeX layout? A: See F, it has some comments. + + +=head2 Development + +Q: Could you implement feature XXXX? It is really easy, just extend +the syntax to allow YYYY! + +A: If it is reasonable, I'll add XXXX to the TODO list. In general +finding a cute syntax (such as YYYY) isn't very hard. The complicated +issue how to adapt the internals to do XXXX. The parser is really a +simple front end to the complicated internals. + +Q: Can I join in on LilyPond development? How do I do this? + +A: LilyPond development is open for anyone who wants to join. We try +to use a Bazaar style development model for LilyPond, see +http://locke.ccil.org/~esr/writing/cathedral.html. This means: +frequent releases, everyone can send in a patch or do suggestions and +all development discussions are public. + +To be precise, discussions take place on the gnu-music-discuss mailing +list, which is open for subscription to everyone. + + +Q: I want to implement XXXX! Should I do this? + +A: There might be better ways of doing XXXX, so it's a good thing to +ask about this before you start hacking. If you want to keep in touch +with current developments, you should subscribe to the mailing list +(see the "links" section of the documentation). + + +Q: I want to implement XXXX! How should I do this? + +A: Your best bet of getting me to include code, is to present it as a +"fait accompli", ie., to send me a patch. + + + Q: How do I learn the C++ code? A: The entry point is in C. Good luck. :-) @@ -210,28 +249,6 @@ Q: Why GPL? A: Yes. -Q: Could you implement feature XXXX? It is really easy, just extend -the syntax to allow YYYY! - -A: If it is reasonable, I'll add XXXX to the TODO list. In general -finding a cute syntax (such as YYYY) isn't very hard. The complicated -issue how to adapt the internals to do XXXX. The parser is really a -simple front end to the complicated internals. - - -Q: I want to implement XXXX! Should I do this? - -A: There might be better ways of doing XXXX, so it's a good thing to -ask about this before you start hacking. If you want to keep in touch -with current developments, you should subscribe to the mailing list -(see the "links" section of the documentation). - - -Q: I want to implement XXXX! How should I do this? - -A: Your best bet of getting me to include code, is to present it as a -"fait accompli", ie., to send me a patch. - Q: Why do I need g++ >= 2.7? diff --git a/Documentation/lilypond.pod b/Documentation/lilypond.pod index 970bef1dee..0dc1ea97ca 100644 --- a/Documentation/lilypond.pod +++ b/Documentation/lilypond.pod @@ -109,7 +109,7 @@ Clef changes, meter changes, cadenza-mode, key changes, repeat bars. =back -=head1 DISCLAIMER & COPYING POLICY +=head1 DISCLAIMER AND COPYING POLICY GNU LilyPond is copyright 1996, 1997 by its authors. GNU LilyPond is distributed under the terms of the GNU General Public License. GNU LilyPond @@ -210,6 +210,8 @@ B an (one) additional directory for finding lilypond data. =head1 BUGS +Lots of them. See F and F + =head1 SEE ALSO =over 4 diff --git a/Documentation/links.pod b/Documentation/links.pod index 7a77721c8f..dc1d9d8004 100644 --- a/Documentation/links.pod +++ b/Documentation/links.pod @@ -25,10 +25,6 @@ LilyPond sources. An enormous collection of music related URLs -=item http://art.ucsc.edu/faculty/cope/home - -See New Scientist, aug 9 1997. - =back =head2 Ftp diff --git a/Documentation/literature.pod b/Documentation/literature.pod index 6564ebbea8..9e8f12f4b2 100644 --- a/Documentation/literature.pod +++ b/Documentation/literature.pod @@ -29,9 +29,10 @@ Association of the United States Inc., 1993. Ted Ross. ``Teach yourself the art of music engraving and processing'' (3rd edition). Hansen House, Miami Beach, FLorida. -[This is about engraving, i.e. the real thing with metal plates, but -it also contains directions on good typesetting. It includes some good -spacing tables HWN] +[This is about engraving, i.e. the real thing with metal plates. It +contains directions on good typesetting, but the sections reproduction +technicalities and history are interesting. Especially the section on +Music Typewriters is amusing HWN] Gardner Read. ``Modern Rhythmic Notation.'' Indiana University Press, 1978. @@ -61,8 +62,8 @@ D. Roush. ``Music Formatting Guidelines,'' Technical Report OSU-CISRC-3/88-TR10, Department of Computer and Information Science, The Ohio State University, 1988. -[Rules on formatting music formulated for use in computers. Mainly distilled -from [Ross] HWN] +[Rules on formatting music formulated for use in computers. Mainly +distilled from [Ross] HWN] =head2 Notation with computers diff --git a/INSTALL.text b/INSTALL.text index 4e80e3a572..d5dfe08175 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -61,7 +61,7 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG -2/Dec/97 LilyPond 0.1.35 1 +2/Dec/97 LilyPond 0.1.36 1 @@ -127,7 +127,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a -2/Dec/97 LilyPond 0.1.35 2 +2/Dec/97 LilyPond 0.1.36 2 @@ -193,7 +193,7 @@ INSTALL(1) LilyPond documentation INSTALL(1) -2/Dec/97 LilyPond 0.1.35 3 +2/Dec/97 LilyPond 0.1.36 3 @@ -259,7 +259,7 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG -2/Dec/97 LilyPond 0.1.35 4 +2/Dec/97 LilyPond 0.1.36 4 @@ -325,7 +325,7 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX -2/Dec/97 LilyPond 0.1.35 5 +2/Dec/97 LilyPond 0.1.36 5 @@ -391,6 +391,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS -2/Dec/97 LilyPond 0.1.35 6 +2/Dec/97 LilyPond 0.1.36 6 diff --git a/NEWS b/NEWS index 1c5b06fafb..8bd448b3c4 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,16 @@ +pl 36 + - bf: notehead collisions + - bf: dot y-position + - use Item::break_priority_i_ for horizontal alignment of breakables. + (it still sucks) + - junk some derivation checks, junk Normal_*_bar + - FlowerLib fixes. + - twinkle fixes. + - feta: flag/clefspacing + +******* +dec 5 pl 35 - naming: lily-init iso symbol.ly - mf braces diff --git a/VERSION b/VERSION index 6244dccf3d..8cfffe87ef 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 1 -TOPLEVEL_PATCH_LEVEL = 35 +TOPLEVEL_PATCH_LEVEL = 36 TOPLEVEL_MY_PATCH_LEVEL = # use the above to send patches, always empty for released version: diff --git a/bin/clean-diaper.sh b/bin/clean-diaper.sh index 284346da82..dc25ffeaca 100644 --- a/bin/clean-diaper.sh +++ b/bin/clean-diaper.sh @@ -4,6 +4,7 @@ rm -vf *.aux *.log `grep -li "^% Creator: GNU LilyPond" *.out` *.orig *~ rm -vf `grep -li "Creator: mi2mu" *.midi.ly` rm -vf `grep -li "Creator: GNU LilyPond" *.midi` +rm -vf `grep -li "Creator: ly2dvi" *.tex` rm -vf `find -name 'core'` rm -vf `find -name *.orig` rm -vf `find -name *.rej` diff --git a/bin/ly2dvi.sh b/bin/ly2dvi.sh index 89556cd6a7..9468401c62 100644 --- a/bin/ly2dvi.sh +++ b/bin/ly2dvi.sh @@ -8,11 +8,15 @@ # Original LaTeX file made by Mats Bengtsson, 17/8 1997 # -VERSION="0.3" +VERSION="0.3.hwn1" +IDENTIFICATION="lytodvi.sh $VERSION" +NOW=`date` +echo "$IDENTIFICATION" 1>&2 -echo "lytodvi.sh $VERSION" 1>&2 - # NEWS +# 0.3.hwn1 +# - add "Creator: " line to output +# # 0.3 # - multiple input files to make score from several files # (extra files assumed to be Lilypond output) @@ -287,7 +291,7 @@ EOF fi fi # -# Find textwidth +# Find textwidth # if [ "$IF" != "" ] then @@ -400,6 +404,9 @@ fi # Write LaTeX file # cat << EOF > $LF +% Creator: $IDENTIFICATION +% Automatically generated from $IF, $NOW + \documentclass$PAPER{article} \nonstopmode $LLNG diff --git a/bin/mf-to-table.py b/bin/mf-to-table.py index 1cd84f5ee6..08ded81adf 100644 --- a/bin/mf-to-table.py +++ b/bin/mf-to-table.py @@ -181,7 +181,7 @@ class Log_reader: self.texfile = Indentable_file(texfile_nm, 'w') - headerstr = '%% generated automatically by %s\n%% on %s\n%% Do not edit' % \ + headerstr = '%% Creator: %s\n%% Automatically generated on %s\n%% Do not edit' % \ (program_id(), today_str()) self.lyfile.write(headerstr) diff --git a/debian/Makefile b/debian/Makefile index 9c9e7d683f..6bb008a5cd 100644 --- a/debian/Makefile +++ b/debian/Makefile @@ -15,5 +15,5 @@ include ./$(depth)/make/Rules.make # -EXTRA_DISTFILES = README.debian TODO changelog control copyright\ +EXTRA_DISTFILES = README.debian TODO changelog control copyright \ info.ex menu.ex postinst postinst.old.sh postrm preinst rules watch diff --git a/debian/TODO b/debian/TODO index db936a667d..a4fc50fdbc 100644 --- a/debian/TODO +++ b/debian/TODO @@ -1,2 +1,2 @@ -* Move lytodvi.sh to a proper place. It is currently placed in +* Move ly2dvi.sh to a proper place. It is currently placed in /usr/doc/lilypond. (1997-11-25) diff --git a/debian/changelog b/debian/changelog index 7db27bbaae..0158a62afe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +lilypond (0.1.35-1) unstable; urgency=low + + * New upstream release + + -- Anthony Fok Fri, 5 Dec 1997 21:06:31 -0700 + +lilypond (0.1.34-1) unstable; urgency=low + + * New upstream release + + -- Anthony Fok Thu, 4 Dec 1997 19:42:22 -0700 + lilypond (0.1.33-1) unstable; urgency=low * New upstream release diff --git a/debian/copyright b/debian/copyright index 22c954c0d1..b5489572be 100644 --- a/debian/copyright +++ b/debian/copyright @@ -2,7 +2,7 @@ This package was debianized by Anthony Fok foka@debian.org on Wed, 6 Aug 1997 04:30:28 -0600 It was downloaded from - ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-0.1.33.tar.gz + ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-0.1.35.tar.gz It is also available from: ftp://alpha.gnu.org/gnu/ diff --git a/debian/postinst b/debian/postinst index e2bcee306c..2e1f5e0d0c 100644 --- a/debian/postinst +++ b/debian/postinst @@ -237,4 +237,4 @@ run_texhash(); check_specialmap(); print " $pkg_name configuration completed.\n"; -print " Please read /usr/doc/$package/README.debian to get started.\n"; +print " Please read /usr/doc/$package/README.Debian to get started.\n"; diff --git a/debian/rules b/debian/rules index 843600e388..722ba550ac 100644 --- a/debian/rules +++ b/debian/rules @@ -46,7 +46,7 @@ binary-arch: build ln -fs ../../../doc/lilypond debian/tmp/usr/lib/texmf/doc/lilypond dh_installdocs BUGS TODO NEWS DEDICATION ANNOUNCE README \ Documentation/out/*.text Documentation/*.doc \ - Documentation/lelie_logo.xpm bin/lytodvi.sh + Documentation/lelie_logo.xpm bin/ly2dvi.sh dh_installexamples input/*.ly input/*.tex # dh_installmenu # dh_installcron diff --git a/flower/NEWS b/flower/NEWS index f9e06e0552..5610f02a09 100644 --- a/flower/NEWS +++ b/flower/NEWS @@ -1,3 +1,8 @@ +pl 32 + - Assoc::clear + - bf: Assoc[PreviouslyUsedAndDeletedKey] = foo + + pl 31 - removed String::bool () [Sigh], String::operator char const * pl 30 diff --git a/flower/VERSION b/flower/VERSION index e139075ebb..942ef52905 100644 --- a/flower/VERSION +++ b/flower/VERSION @@ -1,6 +1,6 @@ MAJOR_VERSION = 1 MINOR_VERSION = 1 -PATCH_LEVEL = 31 +PATCH_LEVEL = 32 # use to send patches, always empty for released version: MY_PATCH_LEVEL = # include separator: "-1" or ".a" # diff --git a/flower/include/assoc.hh b/flower/include/assoc.hh index 86d28b0fd3..f4558545a1 100644 --- a/flower/include/assoc.hh +++ b/flower/include/assoc.hh @@ -36,7 +36,7 @@ struct Assoc { int find_creat (K key) { int free = -1; for (int i = 0; i < arr.size(); i++) { - if (key == arr[i].key) { + if (!arr[i].free && key == arr[i].key) { return i; } else if (arr[i].free) { free = i; @@ -80,6 +80,11 @@ public: assert (elt_b (key)); return arr[find (key)].val; } + void clear () + { + for (int i=0 ; i < arr.size (); i++) + arr[i].free = true; + } }; #endif diff --git a/init/engraver.ly b/init/engraver.ly index fd9b51eb44..eebafed3fd 100644 --- a/init/engraver.ly +++ b/init/engraver.ly @@ -58,6 +58,7 @@ Staff_group = \translator { \consists "Line_group_engraver"; \accepts "Staff"; \accepts "Grandstaff"; + \accepts "Lyrics"; } Lyric_voice = @@ -84,11 +85,8 @@ Score = \translator { \consists "Bar_number_engraver"; \consists "Span_score_bar_engraver"; - \consists "Normal_bar_align_engraver"; - \consists "Clef_align_engraver"; - \consists "Key_align_engraver"; - \consists "Meter_align_engraver"; - \consists "Score_horizontal_align_engraver"; + \consists "Score_priority_engraver"; + \consists "Priority_horizontal_align_engraver"; \consists "Vertical_align_engraver"; diff --git a/init/feta16.ly b/init/feta16.ly index 826e96a29b..202a9520f9 100644 --- a/init/feta16.ly +++ b/init/feta16.ly @@ -1,5 +1,5 @@ -% generated automatically by mf-to-table.py version 0.4 -% on Fri Dec 5 11:52:40 1997 +% Creator: mf-to-table.py version 0.4 +% Automatically generated on Mon Dec 8 17:19:17 1997 % Do not edit % input from out/feta16.log % name=\symboltables { @@ -58,21 +58,21 @@ "pedaltoe" "\\pedaltoe" -2.00\pt 2.00\pt -0.00\pt 6.00\pt } "flags" = \table { - "u3" "\\eighthflag" -0.20\pt 4.10\pt -12.26\pt 0.20\pt - "u4" "\\sixteenthflag" -0.20\pt 4.10\pt -14.26\pt 0.20\pt - "u5" "\\thirtysecondflag" -0.20\pt 4.10\pt -17.26\pt 0.20\pt - "u6" "\\sixtyfourthflag" -0.20\pt 4.10\pt -21.26\pt 0.20\pt - "d3" "\\deighthflag" -0.20\pt 4.54\pt -0.20\pt 11.66\pt - "d4" "\\dsixteenthflag" -0.20\pt 4.54\pt -0.20\pt 12.26\pt - "d5" "\\dthirtysecondflag" -0.20\pt 4.54\pt -0.20\pt 15.66\pt - "d6" "\\dsixtyfourthflag" -0.20\pt 4.54\pt -0.20\pt 17.66\pt + "u3" "\\eighthflag" -0.20\pt 4.94\pt -12.26\pt 0.20\pt + "u4" "\\sixteenthflag" -0.20\pt 4.94\pt -14.26\pt 0.20\pt + "u5" "\\thirtysecondflag" -0.20\pt 4.94\pt -17.26\pt 0.20\pt + "u6" "\\sixtyfourthflag" -0.20\pt 4.94\pt -21.26\pt 0.20\pt + "d3" "\\deighthflag" -0.20\pt 5.46\pt -0.20\pt 11.66\pt + "d4" "\\dsixteenthflag" -0.20\pt 5.46\pt -0.20\pt 12.26\pt + "d5" "\\dthirtysecondflag" -0.20\pt 5.46\pt -0.20\pt 15.66\pt + "d6" "\\dsixtyfourthflag" -0.20\pt 5.46\pt -0.20\pt 17.66\pt } "clefs" = \table { - "alto" "\\altoclef" -0.00\pt 10.89\pt -8.00\pt 8.00\pt - "alto_change" "\\caltoclef" -0.00\pt 8.71\pt -6.40\pt 6.40\pt - "bass" "\\bassclef" 1.20\pt 12.80\pt -10.00\pt 4.00\pt - "bass_change" "\\cbassclef" 0.96\pt 10.24\pt -8.00\pt 3.20\pt - "violin" "\\violinclef" -0.11\pt 10.95\pt -12.00\pt 20.00\pt - "violin_change" "\\cviolinclef" -0.33\pt 8.52\pt -9.60\pt 16.00\pt + "alto" "\\altoclef" -4.00\pt 14.89\pt -8.00\pt 8.00\pt + "alto_change" "\\caltoclef" -3.20\pt 11.91\pt -6.40\pt 6.40\pt + "bass" "\\bassclef" -2.00\pt 14.40\pt -10.00\pt 4.00\pt + "bass_change" "\\cbassclef" -1.60\pt 11.52\pt -8.00\pt 3.20\pt + "violin" "\\violinclef" -4.11\pt 14.95\pt -12.00\pt 20.00\pt + "violin_change" "\\cviolinclef" -3.53\pt 11.72\pt -9.60\pt 16.00\pt } % } % $name diff --git a/init/feta20.ly b/init/feta20.ly index 01297a8189..f877973d90 100644 --- a/init/feta20.ly +++ b/init/feta20.ly @@ -1,5 +1,5 @@ -% generated automatically by mf-to-table.py version 0.4 -% on Fri Dec 5 11:52:42 1997 +% Creator: mf-to-table.py version 0.4 +% Automatically generated on Mon Dec 8 17:19:20 1997 % Do not edit % input from out/feta20.log % name=\symboltables { @@ -58,21 +58,21 @@ "pedaltoe" "\\pedaltoe" -2.50\pt 2.50\pt -0.00\pt 7.50\pt } "flags" = \table { - "u3" "\\eighthflag" -0.25\pt 5.13\pt -15.33\pt 0.25\pt - "u4" "\\sixteenthflag" -0.25\pt 5.13\pt -17.83\pt 0.25\pt - "u5" "\\thirtysecondflag" -0.25\pt 5.13\pt -21.58\pt 0.25\pt - "u6" "\\sixtyfourthflag" -0.25\pt 5.13\pt -26.58\pt 0.25\pt - "d3" "\\deighthflag" -0.25\pt 5.68\pt -0.25\pt 14.58\pt - "d4" "\\dsixteenthflag" -0.25\pt 5.68\pt -0.25\pt 15.33\pt - "d5" "\\dthirtysecondflag" -0.25\pt 5.68\pt -0.25\pt 19.58\pt - "d6" "\\dsixtyfourthflag" -0.25\pt 5.68\pt -0.25\pt 22.08\pt + "u3" "\\eighthflag" -0.25\pt 6.17\pt -15.33\pt 0.25\pt + "u4" "\\sixteenthflag" -0.25\pt 6.17\pt -17.83\pt 0.25\pt + "u5" "\\thirtysecondflag" -0.25\pt 6.17\pt -21.58\pt 0.25\pt + "u6" "\\sixtyfourthflag" -0.25\pt 6.17\pt -26.58\pt 0.25\pt + "d3" "\\deighthflag" -0.25\pt 6.83\pt -0.25\pt 14.58\pt + "d4" "\\dsixteenthflag" -0.25\pt 6.83\pt -0.25\pt 15.33\pt + "d5" "\\dthirtysecondflag" -0.25\pt 6.83\pt -0.25\pt 19.58\pt + "d6" "\\dsixtyfourthflag" -0.25\pt 6.83\pt -0.25\pt 22.08\pt } "clefs" = \table { - "alto" "\\altoclef" -0.00\pt 13.61\pt -10.00\pt 10.00\pt - "alto_change" "\\caltoclef" -0.00\pt 10.89\pt -8.00\pt 8.00\pt - "bass" "\\bassclef" 1.50\pt 16.00\pt -12.50\pt 5.00\pt - "bass_change" "\\cbassclef" 1.20\pt 12.80\pt -10.00\pt 4.00\pt - "violin" "\\violinclef" -0.14\pt 13.69\pt -15.00\pt 25.00\pt - "violin_change" "\\cviolinclef" -0.41\pt 10.65\pt -12.00\pt 20.00\pt + "alto" "\\altoclef" -5.00\pt 18.61\pt -10.00\pt 10.00\pt + "alto_change" "\\caltoclef" -4.00\pt 14.89\pt -8.00\pt 8.00\pt + "bass" "\\bassclef" -2.50\pt 18.00\pt -12.50\pt 5.00\pt + "bass_change" "\\cbassclef" -2.00\pt 14.40\pt -10.00\pt 4.00\pt + "violin" "\\violinclef" -5.14\pt 18.69\pt -15.00\pt 25.00\pt + "violin_change" "\\cviolinclef" -4.41\pt 14.65\pt -12.00\pt 20.00\pt } % } % $name diff --git a/init/lily-init.ly b/init/lily-init.ly index 564fca56cf..c1753b3263 100644 --- a/init/lily-init.ly +++ b/init/lily-init.ly @@ -1,7 +1,5 @@ -% symbol.ly -% -% FIXME other name - +% Toplevel initialisation file. + \version "0.1.7"; breve = \duration { -1 0 } diff --git a/input/cadenza.ly b/input/cadenza.ly index 2a52afd4bf..1b46d34740 100644 --- a/input/cadenza.ly +++ b/input/cadenza.ly @@ -9,7 +9,9 @@ copyright = "public domain"; %{ Tested Features: cadenza mode -%} + +Ugh.. Wish we had grace notes.... It adds another dimension to this +piece of music. %} \version "0.1.7"; diff --git a/input/font.ly b/input/font.ly index ac54e3e36a..c2f1d25ef4 100644 --- a/input/font.ly +++ b/input/font.ly @@ -75,6 +75,8 @@ TestedFeatures = "This file tests the Feta music-font" \meter 7/8; a2.. | \meter 9/8; a1... | \meter 12/8; a1. | + \meter 12/4; + r1. r2. r4. r8. r16. r32. r64. r64. | } \paper{ % don't change this. diff --git a/input/gallina.ly b/input/gallina.ly index fed49445bb..4f47a5cf1c 100644 --- a/input/gallina.ly +++ b/input/gallina.ly @@ -199,11 +199,11 @@ bc=\melodic{ \meter 3/2; g1. | c | % 30 - f | d^"\textsharp" | + f | d^"\\textsharp" | g | c | - A | d^"\textsharp" | + A | d^"\\textsharp" | G | c | - d^"\textsharp" | e | + d^"\\textsharp" | e | f | g1 B2 | d1.^"3 4 3" | \meter 4/4; @@ -212,7 +212,7 @@ bc=\melodic{ g1^"3 4 3" | c | G^"3 4 3" | c2 G | d1^"3 4 3" | G^"3 4 3" | - c2 G | d1^"\textsharp" ( | + c2 G | d1^"\\textsharp" ( | ) d^"3 4 3" | \cadenza 1; G\breve diff --git a/input/header.ly b/input/header.ly deleted file mode 100644 index 49d223676e..0000000000 --- a/input/header.ly +++ /dev/null @@ -1,16 +0,0 @@ -\header { -filename -title -date -description -opus -source -composers -enteredby -copyright -remarks -} - -%{ -Tested Features: -%} diff --git a/input/kortjakje.ly b/input/kortjakje.ly index 8b49f13575..b370743280 100644 --- a/input/kortjakje.ly +++ b/input/kortjakje.ly @@ -3,7 +3,7 @@ filename = "kortjakje.ly"; title = "Ah, vous dirais-je, maman (variations)"; description = "bare bones version. (written down from memory :-)"; -composers = "Mozart, KV 265"; +composer = "Mozart, KV 265"; enteredby = "HWN"; copyright = "public domain"; } diff --git a/input/standchen-16.ly b/input/standchen-16.ly index bb250a98fd..412c202ca2 100644 --- a/input/standchen-16.ly +++ b/input/standchen-16.ly @@ -2,7 +2,7 @@ filename = "standchen.ly"; title = "St\"andchen (Serenade) \"Leise flehen meine Lieder\""; opus = "D. 957 No. 4"; -composers = "Franz Schubert (1797-1828)" +composer = "Franz Schubert (1797-1828)" "Text by Ludwig Rellstab (1799-1860)"; enteredby = "JCN"; copyright = "public domain"; diff --git a/input/standchen-20.ly b/input/standchen-20.ly index 1a13f3fc11..cb13ab64d6 100644 --- a/input/standchen-20.ly +++ b/input/standchen-20.ly @@ -2,7 +2,7 @@ filename = "standchen.ly"; title = "St\"andchen (Serenade) Leise flehen meine Lieder\""; opus = "D. 957 No. 4"; -composers = "Franz Schubert (1797-1828)" +composer = "Franz Schubert (1797-1828)" "Text by Ludwig Rellstab (1799-1860)"; enteredby = "JCN"; copyright = "public domain"; diff --git a/input/standchen.ly b/input/standchen.ly index 9faee5ed92..b2a00d2996 100644 --- a/input/standchen.ly +++ b/input/standchen.ly @@ -2,7 +2,7 @@ filename = "standchen.ly"; title = "St\"andchen (Serenade) \"Leise flehen meine Lieder\""; opus = "D. 957 No. 4"; -composers = "Franz Schubert (1797-1828)" +composer = "Franz Schubert (1797-1828)" "Text by Ludwig Rellstab (1799-1860)"; enteredby = "JCN"; copyright = "public domain"; @@ -495,13 +495,15 @@ themusic = % 20pt music uses whole pagewidth % ja Vette Pech. Koop maar aan A4 printer linewidth= 185.\mm; - + arithmetic_multiplier = 7.\pt; + gourlay_maxmeasures = 9.; \output "standchen-20.out"; } \paper{ % 16pt mustn't use whole page width linewidth= 160.\mm; + arithmetic_multiplier = 6.\pt; gourlay_maxmeasures = 9.; \output "standchen-16.out"; } diff --git a/input/toccata-fuga-E.ly b/input/toccata-fuga-E.ly index 7a14e64255..0d5cb37007 100644 --- a/input/toccata-fuga-E.ly +++ b/input/toccata-fuga-E.ly @@ -5,7 +5,7 @@ opus = "BWV 566" "toccata 3 bar excerpt" "2nd fuga transposed subject --- 4 bar excerpt"; -composers = "Johann Sebastian Bach (1685-1750)"; +composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "JCN"; copyright = "public domain"; diff --git a/input/twinkle-pop.ly b/input/twinkle-pop.ly index 2132cf3cb8..fae537bf46 100644 --- a/input/twinkle-pop.ly +++ b/input/twinkle-pop.ly @@ -2,7 +2,7 @@ filename = "twinkle.ly"; title = "Ah, vous dirais-je, maman "; description = "twinkle twinkle in pop-song-settings"; -composers = "traditional"; +composer = "traditional"; enteredby = "HWN, chords by Johan Vromans"; copyright = "public domain"; diff --git a/input/twinkle.ly b/input/twinkle.ly index 51d8114f05..e6814ce348 100644 --- a/input/twinkle.ly +++ b/input/twinkle.ly @@ -1,12 +1,12 @@ \header{ filename = "twinkle.ly"; -title = "twinkle twinkle little star"; +title = "Twinkle Twinkle Little Star"; description = "traditional song in various languages." "Ah, vous dirais-je, maman" "Altijd is Kortjakje ziek" "Twinkle twinkle little star"; -composers = "Traditional"; +composer = "Traditional"; enteredby = "HWN & JCN"; copyright = "public domain"; } @@ -55,11 +55,15 @@ global = \melodic { tekst = \lyric{ Al-4 tijd is Kort- jak- je ziek,2 - midden4 in_de week maar 's_zon- dags niet.2 +% midden4 in_de week maar 's_zon- dags niet.2 +% ugly hack: insertion of empty syllables creates columns on extra +% moments. The net result is more spacing. +% + midden8 _8 in_de8 _8 week4 maar 's_zon- dags niet.2 's_Zon-4 dags gaat ze naar de kerk,2 met4 een boek vol zil- ver werk.2 Al-4 tijd is Kort- jak- je ziek,2 - midden4 in_de week maar 's_zon- dags niet.2 + midden8 _8 in_de8 _8 week4 maar 's_zon- dags niet.2 } %{ @@ -125,19 +129,23 @@ textiii = \lyric{ < \lyric \type Lyrics = top < \global \tekst > - - \type Staff=treb < \global + \type Staff_group < + \type Staff=treb < \global \melody > \lyric \type Lyrics = "Middle" < \global \texte > \type Staff=bass < \global \accompany > % ugh + > \lyric \type Lyrics = bottomlyrics < \global \texti \textii \textiii > > \paper{ + % use a lot of space, to avoid clashing syllables + arithmetic_multiplier = 8.\pt; + gourlay_maxmeasures = 14.0; } \midi{ \tempo 4 = 120 ; diff --git a/lily/VERSION b/lily/VERSION index 4a2e61f939..405b4d4906 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -1,4 +1,4 @@ MAJOR_VERSION = 0 MINOR_VERSION = 1 -PATCH_LEVEL = 35 +PATCH_LEVEL = 36 MY_PATCH_LEVEL = diff --git a/lily/axis-group-administration.cc b/lily/axis-group-administration.cc index 5537d742a8..11eb1263b7 100644 --- a/lily/axis-group-administration.cc +++ b/lily/axis-group-administration.cc @@ -7,6 +7,7 @@ */ #include "interval.hh" #include "axis-group-administration.hh" +#include "axis-group-element.hh" #include "graphical-element.hh" #include "debug.hh" @@ -35,6 +36,8 @@ void Axis_group_administration::add_element (Graphical_element*e, Axis_group_element*g, Axis a1, Axis a2) { + // don't add self to self. + assert (e != g); Axis_group_element *& g1 = e->axis_group_l_a_[a1]; Axis_group_element *& g2 = e->axis_group_l_a_[a2]; diff --git a/lily/bar-column-grav.cc b/lily/bar-column-grav.cc index 8ab52f41d5..e4219fdb38 100644 --- a/lily/bar-column-grav.cc +++ b/lily/bar-column-grav.cc @@ -29,18 +29,17 @@ Bar_column_engraver::acknowledge_element (Score_elem_info info) { script_l_arr_.push ((Script*)info.elem_l_->item()); } - else - { - if (info.origin_grav_l_arr_.size() == 1 - && info.elem_l_->is_type_b (Bar::static_name())) - bar_l_ = (Bar*)info.elem_l_->item(); - } + else if (info.origin_grav_l_arr_.size() == 1 + && info.elem_l_->is_type_b (Bar::static_name())) + bar_l_ = (Bar*)info.elem_l_->item(); if (bar_l_ && !barcol_p_) { barcol_p_ = new Bar_column; barcol_p_->breakable_b_ =true; + barcol_p_->break_priority_i_ = bar_l_ -> break_priority_i_; barcol_p_->set_bar (bar_l_); + announce_element (Score_elem_info (barcol_p_, 0)); } @@ -49,6 +48,7 @@ Bar_column_engraver::acknowledge_element (Score_elem_info info) for (int i=0; i < script_l_arr_.size(); i++) { script_l_arr_[i]->breakable_b_ = true; + script_l_arr_[i]->break_priority_i_ = barcol_p_-> break_priority_i_; barcol_p_->add (script_l_arr_[i]); } script_l_arr_.clear(); diff --git a/lily/bar-grav.cc b/lily/bar-grav.cc index 16631e5221..2d43282523 100644 --- a/lily/bar-grav.cc +++ b/lily/bar-grav.cc @@ -7,7 +7,7 @@ */ #include "bar-grav.hh" -#include "normal-bar.hh" +#include "bar.hh" #include "command-request.hh" #include "time-description.hh" #include "engraver-group.hh" @@ -32,6 +32,17 @@ Bar_engraver::do_try_request (Request*r_l) return true; } +void +Bar_engraver::create_bar () +{ + if (!bar_p_) + { + bar_p_ = new Bar; + bar_p_->break_priority_i_ = 0; + announce_element (Score_elem_info (bar_p_, bar_req_l_)); + } +} + void Bar_engraver::do_process_requests() { @@ -40,21 +51,17 @@ Bar_engraver::do_process_requests() if (bar_req_l_) { - bar_p_ = new Normal_bar; + create_bar (); bar_p_->type_str_=bar_req_l_->type_str_; } else { Time_description const *time = get_staff_info().time_C_; if (time && !time->whole_in_measure_) - bar_p_ = new Normal_bar; + create_bar (); } - if (bar_p_) - { - announce_element (Score_elem_info (bar_p_, bar_req_l_)); - } - else + if (!bar_p_) { Disallow_break_req r; daddy_grav_l()->try_request (&r); diff --git a/lily/clef-grav.cc b/lily/clef-grav.cc index 78f6aab7bd..6bb055c2fa 100644 --- a/lily/clef-grav.cc +++ b/lily/clef-grav.cc @@ -107,6 +107,7 @@ Clef_engraver::create_clef() if (!clef_p_) { clef_p_ = new Clef_item; + clef_p_->break_priority_i_ = -2; // ugh announce_element (Score_elem_info (clef_p_,clef_req_l_)); } clef_p_->read (*this); diff --git a/lily/include/bar-grav.hh b/lily/include/bar-grav.hh index 4bb7c9d33a..8bf8d1301a 100644 --- a/lily/include/bar-grav.hh +++ b/lily/include/bar-grav.hh @@ -17,6 +17,8 @@ class Bar_engraver : public Engraver { Bar_req * bar_req_l_; Bar * bar_p_; + + void create_bar (); public: TRANSLATOR_CLONE(Bar_engraver); Bar_engraver(); diff --git a/lily/include/item.hh b/lily/include/item.hh index 524c6772e1..df5b6757ec 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -32,6 +32,8 @@ public: /// should be put in a breakable col. bool breakable_b_; int break_status_i_; + int break_priority_i_; + /// nobreak = 0, pre = -1, post = 1 int break_status_i() const; Item * find_prebroken_piece (int) const; diff --git a/lily/include/normal-bar.hh b/lily/include/normal-bar.hh deleted file mode 100644 index a4f7bd2aa4..0000000000 --- a/lily/include/normal-bar.hh +++ /dev/null @@ -1,23 +0,0 @@ -/* - normal-bar.hh -- declare - - source file of the GNU LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys - - */ - -#ifndef NORMAL_BAR_HH -#define NORMAL_BAR_HH - -#include "bar.hh" - -class Normal_bar : public virtual Bar -{ -public: - SCORE_ELEM_CLONE(Normal_bar); - DECLARE_MY_RUNTIME_TYPEINFO; -}; - -#endif /* NORMAL_BAR_HH */ - diff --git a/lily/include/normal-span-bar.hh b/lily/include/normal-span-bar.hh deleted file mode 100644 index 68ccabb81b..0000000000 --- a/lily/include/normal-span-bar.hh +++ /dev/null @@ -1,24 +0,0 @@ -/* - normal-span-bar.hh -- declare Normal_span_bar - - source file of the GNU LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys - - */ - -#ifndef NORMAL_SPAN_BAR_HH -#define NORMAL_SPAN_BAR_HH - -#include "normal-bar.hh" -#include "span-bar.hh" - -class Normal_span_bar : public Span_bar, public Normal_bar -{ -public: - SCORE_ELEM_CLONE(Normal_span_bar); - DECLARE_MY_RUNTIME_TYPEINFO; -}; - -#endif /* NORMAL_SPAN_BAR_HH */ - diff --git a/lily/include/score-halign-grav.hh b/lily/include/priority-halign-grav.hh similarity index 59% rename from lily/include/score-halign-grav.hh rename to lily/include/priority-halign-grav.hh index 353ad8a061..4d6fdb6a7d 100644 --- a/lily/include/score-halign-grav.hh +++ b/lily/include/priority-halign-grav.hh @@ -7,17 +7,19 @@ */ -#ifndef SCORE_HALIGN_GRAV_HH -#define SCORE_HALIGN_GRAV_HH +#ifndef FSCORE_HALIGN_GRAV_HH +#define FSCORE_HALIGN_GRAV_HH + #include "engraver.hh" -class Score_horizontal_align_engraver : public Engraver { + +class Priority_horizontal_align_engraver : public Engraver { Break_align_item * halign_p_; public: - TRANSLATOR_CLONE(Score_horizontal_align_engraver); + TRANSLATOR_CLONE(Priority_horizontal_align_engraver); DECLARE_MY_RUNTIME_TYPEINFO; - Score_horizontal_align_engraver(); + Priority_horizontal_align_engraver(); protected: virtual void acknowledge_element (Score_elem_info); virtual void do_pre_move_processing(); }; -#endif // SCORE_HALIGN_GRAV_HH +#endif // Priority_HALIGN_GRAV_HH diff --git a/lily/include/score-align-grav.hh b/lily/include/score-priority-grav.hh similarity index 61% rename from lily/include/score-align-grav.hh rename to lily/include/score-priority-grav.hh index 6a25ac0271..48ed10e7b1 100644 --- a/lily/include/score-align-grav.hh +++ b/lily/include/score-priority-grav.hh @@ -7,26 +7,25 @@ */ -#ifndef SCORE_ALIGN_GRAV_HH -#define SCORE_ALIGN_GRAV_HH +#ifndef SCOREF_ALIGN_GRAV_HH +#define SCOREF_ALIGN_GRAV_HH #include "engraver.hh" +#include "assoc.hh" /** Group a number of items across staffs */ -class Type_align_engraver: public Engraver +class Score_priority_engraver : public Engraver { - Horizontal_group_item * align_p_; + Assoc align_p_assoc_; public: - TRANSLATOR_CLONE(Type_align_engraver); - - const char* type_ch_C_; - int priority_i_; - Type_align_engraver(); + TRANSLATOR_CLONE(Score_priority_engraver); + Score_priority_engraver (); DECLARE_MY_RUNTIME_TYPEINFO; protected: virtual void acknowledge_element (Score_elem_info); virtual void do_pre_move_processing(); }; + #endif // SCORE_ALIGN_GRAV_HH diff --git a/lily/item.cc b/lily/item.cc index 21c96bc273..daaf880a96 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -15,6 +15,7 @@ Item::Item() { + break_priority_i_ = 0; breakable_b_ = false; break_status_i_ = 0; broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0; diff --git a/lily/key-grav.cc b/lily/key-grav.cc index 3abc16b673..42359ae77a 100644 --- a/lily/key-grav.cc +++ b/lily/key-grav.cc @@ -36,6 +36,7 @@ Key_engraver::create_key() c0_i = *get_staff_info().c0_position_i_l_; kit_p_ = new Key_item (c0_i); + kit_p_->break_priority_i_ = -1; // ugh announce_element (Score_elem_info (kit_p_,keyreq_l_)); kit_p_->read (*this); } diff --git a/lily/meter-grav.cc b/lily/meter-grav.cc index 70ca2af2bc..4fecb68d9c 100644 --- a/lily/meter-grav.cc +++ b/lily/meter-grav.cc @@ -32,6 +32,7 @@ Meter_engraver::do_process_requests() args.push (req->one_beat_i_); meter_p_ = new Meter (args); + meter_p_->break_priority_i_ = 1; // ugh } if (meter_p_) diff --git a/lily/normal-bar.cc b/lily/normal-bar.cc deleted file mode 100644 index a4357037b7..0000000000 --- a/lily/normal-bar.cc +++ /dev/null @@ -1,12 +0,0 @@ -/* - normal-bar.cc -- implement Normal_bar - - source file of the GNU LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys - - */ - -#include "normal-bar.hh" - -IMPLEMENT_IS_TYPE_B1(Normal_bar, Bar); diff --git a/lily/normal-span-bar.cc b/lily/normal-span-bar.cc deleted file mode 100644 index 6afbd76f01..0000000000 --- a/lily/normal-span-bar.cc +++ /dev/null @@ -1,12 +0,0 @@ -/* - normal-span-bar.cc -- implement - - source file of the GNU LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys - - */ - -#include "normal-span-bar.hh" - -IMPLEMENT_IS_TYPE_B2(Normal_span_bar, Span_bar, Normal_bar); diff --git a/lily/priority-halign-grav.cc b/lily/priority-halign-grav.cc new file mode 100644 index 0000000000..a42c4a552e --- /dev/null +++ b/lily/priority-halign-grav.cc @@ -0,0 +1,50 @@ +/* + score-halign-reg.cc -- implement Priority_horizontal_align_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + +#include "bar.hh" +#include "break-align-item.hh" +#include "priority-halign-grav.hh" +#include "score-priority-grav.hh" + +Priority_horizontal_align_engraver::Priority_horizontal_align_engraver() +{ + halign_p_ =0; +} + +void +Priority_horizontal_align_engraver::do_pre_move_processing() +{ + if (halign_p_) + { + typeset_element (halign_p_); + halign_p_ =0; + } +} + +void +Priority_horizontal_align_engraver::acknowledge_element (Score_elem_info i) +{ + Engraver* reg = i.origin_grav_l_arr_[0]; + if (reg->is_type_b (Score_priority_engraver::static_name())) + { + if (!halign_p_) + { + halign_p_ = new Break_align_item; + halign_p_->breakable_b_ = true; + announce_element (Score_elem_info (halign_p_,0)); + } + Item * it = i.elem_l_->item(); + if (it->break_priority_i_ == 0) + halign_p_->center_l_ = it; + + halign_p_->add (it, it->break_priority_i_); + } +} + +IMPLEMENT_IS_TYPE_B1(Priority_horizontal_align_engraver,Engraver); +ADD_THIS_TRANSLATOR(Priority_horizontal_align_engraver); diff --git a/lily/rest.cc b/lily/rest.cc index 4cf872f613..0028373cf5 100644 --- a/lily/rest.cc +++ b/lily/rest.cc @@ -23,8 +23,10 @@ Rest::do_add_processing () position_i_ += 2; Rhythmic_head::do_add_processing (); - if (dots_l_) - dots_l_->position_i_ = position_i_; + if (dots_l_ && balltype_i_ > 1) + { + dots_l_->position_i_ = position_i_ + 4; + } } Rest::Rest () diff --git a/lily/score-align-grav.cc b/lily/score-align-grav.cc deleted file mode 100644 index 3af608484c..0000000000 --- a/lily/score-align-grav.cc +++ /dev/null @@ -1,51 +0,0 @@ -/* - score-align-reg.cc -- implement Type_align_engraver - - source file of the GNU LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#include "horizontal-group-item.hh" -#include "score-align-grav.hh" -#include "item.hh" - -Type_align_engraver::Type_align_engraver() -{ - type_ch_C_ = 0; - priority_i_ =0; - align_p_=0; -} - -void -Type_align_engraver::do_pre_move_processing() -{ - if (align_p_) - { - typeset_element (align_p_); - align_p_ =0; - } -} - -void -Type_align_engraver::acknowledge_element (Score_elem_info inf) -{ - if (inf.elem_l_->is_type_b (type_ch_C_)) - { - - if (!align_p_) - { - align_p_ = new Horizontal_group_item; - align_p_->breakable_b_ = true; - announce_element (Score_elem_info (align_p_,0)); - } - Score_elem * unbound_elem = inf.elem_l_; - while (unbound_elem->axis_group_l_a_[X_AXIS]) - unbound_elem = unbound_elem->axis_group_l_a_[X_AXIS]; - align_p_->add_element (unbound_elem); - } - -} - -IMPLEMENT_IS_TYPE_B1(Type_align_engraver,Engraver); diff --git a/lily/score-align-gravs.cc b/lily/score-align-gravs.cc deleted file mode 100644 index 28bb70bcc8..0000000000 --- a/lily/score-align-gravs.cc +++ /dev/null @@ -1,35 +0,0 @@ -/* - score-align-gravs.cc -- implement different alignment engravers. - - source file of the GNU LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "key-item.hh" -#include "clef-item.hh" -#include "meter.hh" -#include "bar.hh" -#include "score-align-grav.hh" -#include "score-bar.hh" -#include "normal-bar.hh" - -#define IMPLEMENT_ALIGN_GRAV(C,T,p)\ -class C ## _align_engraver : public Type_align_engraver \ -{ \ -public: \ - DECLARE_MY_RUNTIME_TYPEINFO; \ - TRANSLATOR_CLONE(C ## _align_engraver);\ - C ## _align_engraver() : Type_align_engraver () \ - { type_ch_C_ = T::static_name();\ - priority_i_ = p;} \ -}; \ -ADD_THIS_TRANSLATOR(C ## _align_engraver); \ -IMPLEMENT_IS_TYPE_B1(C ## _align_engraver, Type_align_engraver) ; - - -IMPLEMENT_ALIGN_GRAV(Key,Key_item,3); -IMPLEMENT_ALIGN_GRAV(Clef,Clef_item,2); -IMPLEMENT_ALIGN_GRAV(Normal_bar, Normal_bar,4); -IMPLEMENT_ALIGN_GRAV(Meter,Meter,5); -IMPLEMENT_ALIGN_GRAV(Score_bar, Score_bar,0); diff --git a/lily/score-halign-grav.cc b/lily/score-halign-grav.cc deleted file mode 100644 index b5c3c5c044..0000000000 --- a/lily/score-halign-grav.cc +++ /dev/null @@ -1,51 +0,0 @@ -/* - score-halign-reg.cc -- implement Score_horizontal_align_engraver - - source file of the GNU LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "bar.hh" -#include "break-align-item.hh" -#include "score-halign-grav.hh" -#include "score-align-grav.hh" - -Score_horizontal_align_engraver::Score_horizontal_align_engraver() -{ - halign_p_ =0; -} - -void -Score_horizontal_align_engraver::do_pre_move_processing() -{ - if (halign_p_) - { - typeset_element (halign_p_); - halign_p_ =0; - } -} - -void -Score_horizontal_align_engraver::acknowledge_element (Score_elem_info i) -{ - Engraver* reg = i.origin_grav_l_arr_[0]; - if (reg->is_type_b (Type_align_engraver::static_name())) - { - Type_align_engraver * align_grav_l = (Type_align_engraver*) reg; - if (!halign_p_) - { - halign_p_ = new Break_align_item; - halign_p_->breakable_b_ = true; - announce_element (Score_elem_info (halign_p_,0)); - } - Item * it = i.elem_l_->item(); - if (align_grav_l->type_ch_C_ == Bar::static_name()) - halign_p_->center_l_ = it; - - halign_p_->add (it, align_grav_l->priority_i_); - } -} - -IMPLEMENT_IS_TYPE_B1(Score_horizontal_align_engraver,Engraver); -ADD_THIS_TRANSLATOR(Score_horizontal_align_engraver); diff --git a/lily/score-priority-grav.cc b/lily/score-priority-grav.cc new file mode 100644 index 0000000000..1358ec4232 --- /dev/null +++ b/lily/score-priority-grav.cc @@ -0,0 +1,81 @@ +/* + score-align-reg.cc -- implement Score_priority_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#include "horizontal-group-item.hh" +#include "score-priority-grav.hh" +#include "item.hh" +#include "assoc-iter.hh" +#include "break-align-item.hh" + + +Score_priority_engraver::Score_priority_engraver() +{ +} + +void +Score_priority_engraver::do_pre_move_processing() +{ + for (Assoc_iter i(align_p_assoc_); i.ok() ; i++) + { + if (i.val ()) + { + typeset_element (i.val ()); + i.val () = 0; + } + } + align_p_assoc_.clear (); +} + +void +Score_priority_engraver::acknowledge_element (Score_elem_info inf) +{ + Item * item_l = inf.elem_l_->item (); + if (item_l && item_l->breakable_b_) + { + /* + Don't try to eat up our (probable) parent. + */ + if (inf.origin_grav_l_arr_.size () <= 1 && + item_l->is_type_b (Break_align_item::static_name ())) + return; + + + int p =item_l-> break_priority_i_; + Horizontal_group_item * hg =0; + if (!align_p_assoc_.elt_b(p)) + { + hg = new Horizontal_group_item; + announce_element (Score_elem_info (hg,0)); + align_p_assoc_[p] = hg; + hg->break_priority_i_ = p; + hg->breakable_b_ = true; + } + else + hg = align_p_assoc_[p]; + + Score_elem * unbound_elem = inf.elem_l_; + + + while (unbound_elem->axis_group_l_a_[X_AXIS]) + { + /* We might have added inf.elem_l_ earlier because we added one + of its children. We don't want to add ourselves to ourself + */ + if (unbound_elem->axis_group_l_a_[X_AXIS] == hg) + return; + unbound_elem = unbound_elem->axis_group_l_a_[X_AXIS]; + } + + + hg->add_element (unbound_elem); + } +} + +IMPLEMENT_IS_TYPE_B1(Score_priority_engraver, Engraver); +ADD_THIS_TRANSLATOR(Score_priority_engraver); diff --git a/lily/span-bar-grav.cc b/lily/span-bar-grav.cc index ea05d68fcd..8d9cffdff3 100644 --- a/lily/span-bar-grav.cc +++ b/lily/span-bar-grav.cc @@ -6,7 +6,7 @@ (c) 1997 Han-Wen Nienhuys */ -#include "normal-span-bar.hh" +#include "span-bar.hh" #include "span-bar-grav.hh" #include "vertical-align-spanner.hh" @@ -19,7 +19,7 @@ Span_bar_engraver::Span_bar_engraver() Span_bar* Span_bar_engraver::get_span_bar_p() const { - return new Normal_span_bar; + return new Span_bar; } void diff --git a/lily/span-score-bar-grav.cc b/lily/span-score-bar-grav.cc index 9159266123..dabe4ee746 100644 --- a/lily/span-score-bar-grav.cc +++ b/lily/span-score-bar-grav.cc @@ -13,7 +13,11 @@ Span_bar* Span_score_bar_engraver::get_span_bar_p() const { - return new Span_score_bar; + Span_bar*s = new Span_score_bar; + s->break_priority_i_ = -4; + + return s; + } @@ -23,7 +27,9 @@ IMPLEMENT_IS_TYPE_B1(Piano_bar_engraver, Span_score_bar_engraver); Span_bar* Piano_bar_engraver::get_span_bar_p() const { - return new Piano_brace; + Span_bar *s= new Piano_brace; + s->break_priority_i_ = -4; + return s; } ADD_THIS_TRANSLATOR(Piano_bar_engraver); diff --git a/lily/stem.cc b/lily/stem.cc index 32a7b1ede3..0e37c7d849 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -227,7 +227,7 @@ Stem::set_noteheads () parity = !parity; } else - parity = 0; + parity = 1; lastpos = head_l_arr_[i]->position_i_; } } diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm index 895a607207..84b6782611 100644 --- a/make/lelievijver.lsm +++ b/make/lelievijver.lsm @@ -1,7 +1,7 @@ Begin3 Titel: LilyPond -Versie: 0.1.35 -Inschrijf datum: 05DEC97 +Versie: 0.1.36 +Inschrijf datum: 06DEC97 Beschrijving: LilyPond is de muziek typesetter van het GNU Project. Het programma genereert muziek in zichtbare of hoorbare vorm uit uit een muzikale definitie file: @@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys) Voornaamste plek: sunsite.unc.edu /pub/Linux/apps - 395k lilypond-0.1.35.tar.gz + 395k lilypond-0.1.36.tar.gz Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/ - 395k lilypond-0.1.35.tar.gz + 395k lilypond-0.1.36.tar.gz Copi"eer politie: GPL End diff --git a/make/lilypond.lsm b/make/lilypond.lsm index 5c18142039..b84e8ddacb 100644 --- a/make/lilypond.lsm +++ b/make/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 0.1.35 -Entered-date: 05DEC97 +Version: 0.1.36 +Entered-date: 06DEC97 Description: LilyPond is the GNU Project music typesetter. The program generates visual or auditive output from a music definition file: it can typeset formatted sheet music @@ -14,8 +14,8 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 460k lilypond-0.1.35.tar.gz + 460k lilypond-0.1.36.tar.gz Original-site: pcnov095.win.tue.nl /pub/lilypond/development/ - 460k lilypond-0.1.35.tar.gz + 460k lilypond-0.1.36.tar.gz Copying-policy: GPL End diff --git a/make/lilypond.spec b/make/lilypond.spec index a3b3567d0a..d118d7867c 100644 --- a/make/lilypond.spec +++ b/make/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.1.35 +Version: 0.1.36 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.35.tar.gz +Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.36.tar.gz Summary: A program for typesetting music. URL: http://www.stack.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys diff --git a/mf/feta-banier.mf b/mf/feta-banier.mf index b4b41e9e40..8a3c2823f2 100644 --- a/mf/feta-banier.mf +++ b/mf/feta-banier.mf @@ -10,6 +10,9 @@ path outer_path; upflag_width# = .750 black_notehead_width# + stemthickness#/2; downflag_width# = .833 black_notehead_width# + stemthickness#/2; +right_upflag_space# = .2 upflag_width#; +right_downflag_space# = .2 downflag_width#; + % % Flags pointing down cannot overlap with the notehead in y-direction, % so they have less slant. @@ -104,7 +107,7 @@ fet_beginchar("8th Flag (up)", "u3", "eighthflag") foot_depth# = 3 interline#; set_char_box(stemthickness# /2, hip_width# - + stemthickness#/2, + + stemthickness#/2 + right_upflag_space#, foot_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, @@ -133,7 +136,7 @@ fet_beginchar("16th Flag (up)", "u4", "sixteenthflag") foot_width_ratio = .8; set_char_box(stemthickness# /2, hip_width# - + stemthickness#/2, + + stemthickness#/2 + right_upflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, @@ -168,7 +171,7 @@ fet_beginchar("32nd Flag (up)", "u5", "thirtysecondflag") foot_width_ratio = .8; set_char_box(stemthickness# /2, hip_width# - + stemthickness#/2, + + stemthickness#/2 + right_upflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, @@ -206,7 +209,7 @@ fet_beginchar("64th Flag (up)", "u6", "sixtyfourthflag") foot_width_ratio = .8; set_char_box(stemthickness# /2, hip_width# - + stemthickness#/2, + + stemthickness#/2 + right_upflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, @@ -245,7 +248,7 @@ fet_beginchar("8th (down)", "d3", "deighthflag") foot_width_ratio = .8; set_char_box(stemthickness# /2, hip_width# - + stemthickness#/2, + + stemthickness#/2 + right_downflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, @@ -279,7 +282,7 @@ fet_beginchar("16th (down)", "d4", "dsixteenthflag") foot_width_ratio = .95; set_char_box(stemthickness# /2, hip_width# - + stemthickness#/2, + + stemthickness#/2 + right_downflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, @@ -316,7 +319,7 @@ fet_beginchar("32nd (down)", "d5", "dthirtysecondflag") foot_width_ratio = .95; set_char_box(stemthickness# /2, hip_width# - + stemthickness#/2, + + stemthickness#/2 + right_downflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, @@ -355,7 +358,7 @@ fet_beginchar("64th (down)", "d6", "dsixtyfourthflag") foot_width_ratio = .98; set_char_box(stemthickness# /2, hip_width# - + stemthickness#/2, + + stemthickness#/2 + right_downflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index 35a22c059e..0ccbec6bf2 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -25,9 +25,9 @@ if test = 0: input feta-banier; input feta-klef; else: -% input feta-bolletjes; -% input feta-banier; + input feta-bolletjes; + input feta-banier; % input feta-eindelijk; - input feta-klef; +% input feta-klef; % input feta-toevallig; fi diff --git a/mf/feta-klef.mf b/mf/feta-klef.mf index bd9eb4f542..11ef0c228d 100644 --- a/mf/feta-klef.mf +++ b/mf/feta-klef.mf @@ -6,8 +6,20 @@ % (c) 1997 Han-Wen Nienhuys , % Jan Nieuwenhuizen + + + fet_begingroup("clefs"); +% +% [Ross] says that clefs take 1 interline space on the left and right +% +def set_horizontal_spacing = + save left_space ,right_space; + left_space# = reduced_il#; + right_space# = reduced_il#; +enddef; + def draw_staff(expr first, last)= pickup pencircle scaled stafflinethickness; for i:= first step 1 until last: @@ -18,13 +30,18 @@ def draw_staff(expr first, last)= % [Wanske] says the bulbs should be positioned about 1/4 right of the % "arrow" def draw_c_clef (expr reduction) = - save hair, norm, reduced_il; + save hair, norm, reduced_il, right_edge; reduced_il#=interline#*reduction; norm#:=2/3reduced_il#; hair#:=1/6norm#; - define_pixels (hair,norm,reduced_il); - set_char_box (0, 15/4norm#+2hair#, + + set_horizontal_spacing; + right_edge# = 15/4norm#+2hair#; + + set_char_box (left_space#, right_edge# + right_space#, 2 reduced_il#, 2 reduced_il#); + define_pixels (hair,norm,reduced_il, right_edge); + draw_block ((0,-d), (3/4norm+1/2hair,h)); draw_block ((3/4norm+2hair,-d), (3/4norm+7/2hair,h)); @@ -34,9 +51,9 @@ def draw_c_clef (expr reduction) = penpos1(hair,-90); z1l=(xoff+norm+hair,h); penpos2(norm-3/2hair,180); - z2l=(w,h/2); + z2l=(right_edge,h/2); penpos3(hair,90); - z3=(((w-xoff)/2)+xoff,2hair); + z3=(((right_edge -xoff)/2)+xoff,2hair); penpos4(hair,0); z4=(xoff+1/2norm+1/2hair,reduced_il-hair); @@ -90,24 +107,29 @@ fet_endchar; % the dots, but her picture shows that the extreme is ~ 0.2 ss lower def draw_bass_klef(expr exact_center, reduction) = - save reduced_il, left_tilt, left_thick; + save reduced_il, left_tilt, left_thick, ball_to_right; reduced_il# = interline# * reduction; - left_tilt = 5; - define_pixels(reduced_il); - left_thick = .25 reduced_il; - set_char_box( - - xpart exact_center+ .2 reduced_il#, - xpart exact_center + 2.7 reduced_il#, + set_horizontal_spacing; + ball_to_right# = 2.1 reduced_il#; + set_char_box(left_space# + + - xpart exact_center, + right_space# + + xpart exact_center + ball_to_right#, - ypart exact_center + 2.5 reduced_il#, ypart exact_center +reduced_il#); + + define_pixels(reduced_il, ball_to_right); + left_tilt = 5; + left_thick = .25 reduced_il; + x1r - x1l = left_thick; z1l = (hround_pixels(xpart exact_center), vround_pixels(ypart exact_center)); y2 = reduced_il; - x3l - x1l = 2.1 reduced_il; + x3l - x1l = ball_to_right; x2 = .5 [x1,x3]; x3l - x3r = .48 reduced_il; y3l = -0.05 interline; @@ -189,7 +211,12 @@ def draw_gclef (expr exact_center, reduction)= thinnib = thinness - hair; thinpen = thinness; - set_char_box(-xpart exact_center + 1.1 * breapth_factor* reduced_il#, + set_horizontal_spacing; + + set_char_box( + left_space# + + -xpart exact_center + 1.1 * breapth_factor* reduced_il#, + right_space# + xpart exact_center + .66 breapth_factor* reduced_il#, -ypart exact_center + 3 * reduced_il#, ypart exact_center + 5 * reduced_il#); diff --git a/tex/feta16.tex b/tex/feta16.tex index f80938b853..ac17e13534 100644 --- a/tex/feta16.tex +++ b/tex/feta16.tex @@ -1,5 +1,5 @@ -% generated automatically by mf-to-table.py version 0.4 -% on Fri Dec 5 11:52:40 1997 +% Creator: mf-to-table.py version 0.4 +% Automatically generated on Mon Dec 8 17:19:17 1997 % Do not edit % input from out/feta16.log % name diff --git a/tex/feta20.tex b/tex/feta20.tex index 3b2ee96e3e..6f7f348949 100644 --- a/tex/feta20.tex +++ b/tex/feta20.tex @@ -1,5 +1,5 @@ -% generated automatically by mf-to-table.py version 0.4 -% on Fri Dec 5 11:52:42 1997 +% Creator: mf-to-table.py version 0.4 +% Automatically generated on Mon Dec 8 17:19:20 1997 % Do not edit % input from out/feta20.log % name -- 2.39.5