From a2991295b2c1fb36bec19de207161855ca3c1756 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sun, 25 Mar 2001 00:48:29 +0100 Subject: [PATCH] release: 1.3.142 ============ * some mup2ly progress. * Bugfix: ly2dvi: don't include empty set fo latexheaders, don't use python-1.5.2 abspath func. * Setup for new mup converter, based on pmx2ly. * Bugfix: lilypond-book: accept \documentclass{article}. * scripts/update-lily.py: fancy source rebuild update tool that we're probably not going to use on www.lilypond.org. Check it out! * Bugfix: building of topdocs. 1.3.141.h --- CHANGES | 41 ++++---- Documentation/regression-test.tely | 55 ++++------ Documentation/user/refman.itely | 3 - Documentation/user/tutorial.itely | 6 +- FAQ.txt | 8 ++ INSTALL.txt | 23 ++++ VERSION | 4 +- buildscripts/mf-to-table.py | 1 + input/GNUmakefile | 2 +- input/ascii-art/GNUmakefile | 8 ++ input/{test => ascii-art}/asciscript5.ly | 2 + input/{test => ascii-art}/r-as.ly | 0 input/{test => ascii-art}/standchen-as5.ly | 1 + input/{test => ascii-art}/standchen-as9.ly | 3 +- input/{test => ascii-art}/twinkle-as5.ly | 2 + input/bugs/gr-instrument.ly | 42 -------- input/bugs/p.ly | 31 ------ input/denneboom.ly | 116 --------------------- input/les-nereides.ly | 10 ++ input/minimal.ly | 10 -- input/no-notation/GNUmakefile | 8 ++ input/{test => no-notation}/parse.ly | 0 input/{test => no-notation}/parse2.ly | 0 input/{test => no-notation}/parse3.ly | 0 input/{test => no-notation}/parse4.ly | 0 input/praeludium-fuga-E.ly | 2 +- input/regression/arpeggio-collision.ly | 6 +- input/regression/hairpin-ending.ly | 14 +++ input/regression/volta-broken-left-edge.ly | 5 +- input/scarlatti-paper.ly | 18 ++-- input/scarlatti-properties.ly | 5 +- input/star-spangled-banner.ly | 6 +- input/test/ac-extra-voice.ly | 15 ++- input/test/as2.ly | 1 + input/test/different-time-signatures.ly | 10 +- input/test/equaliser.ly | 3 + input/test/{sizes.ly => fake-grace.ly} | 10 +- input/test/font-body.ly | 5 + input/test/font11.ly | 2 +- input/test/font13.ly | 13 +-- input/test/font16.ly | 14 +-- input/test/font20.ly | 8 +- input/test/font26.ly | 11 +- input/test/hara-kiri.ly | 10 +- input/test/keys2.ly | 22 ---- input/test/multi-rest.ly | 32 ------ input/test/pushproperty.ly | 83 --------------- input/test/repeatbar.ly | 11 -- input/test/slur-mininum.ly | 8 +- input/test/spacing.ly | 2 +- input/test/stem.ly | 3 - input/test/tchaikovsky.ly | 2 +- input/test/tie-minimum.ly | 12 --- input/test/updown.ly | 14 --- input/tricks/fragment.ly | 11 -- input/tricks/smart-transpose.ly | 12 +-- input/tricks/staff-container.ly | 2 + input/tutorial/os-music.ly | 2 + lily/dynamic-engraver.cc | 3 +- lily/font-metric.cc | 16 +++ lily/grace-engraver-group.cc | 2 +- lily/grace-performer-group.cc | 2 +- lily/hairpin.cc | 66 ++++++++---- lily/include/translator.hh | 3 +- lily/instrument-name-engraver.cc | 14 ++- lily/lexer.ll | 34 ++++-- lily/note-heads-engraver.cc | 6 +- lily/parser.yy | 5 + lily/score-engraver.cc | 13 +-- lily/score-performer.cc | 4 +- lily/stem.cc | 33 +++++- lily/translator-group.cc | 4 +- lily/translator.cc | 13 +++ ly/dynamic-scripts.ly | 2 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 4 +- mf/GNUmakefile | 4 +- scm/grob-description.scm | 4 +- scm/grob-property-description.scm | 4 +- scm/interface-description.scm | 4 +- scm/translator-property-description.scm | 5 - scripts/mup2ly.py | 2 +- 82 files changed, 386 insertions(+), 619 deletions(-) create mode 100644 input/ascii-art/GNUmakefile rename input/{test => ascii-art}/asciscript5.ly (93%) rename input/{test => ascii-art}/r-as.ly (100%) rename input/{test => ascii-art}/standchen-as5.ly (97%) rename input/{test => ascii-art}/standchen-as9.ly (84%) rename input/{test => ascii-art}/twinkle-as5.ly (98%) delete mode 100644 input/bugs/gr-instrument.ly delete mode 100644 input/bugs/p.ly delete mode 100644 input/denneboom.ly delete mode 100644 input/minimal.ly create mode 100644 input/no-notation/GNUmakefile rename input/{test => no-notation}/parse.ly (100%) rename input/{test => no-notation}/parse2.ly (100%) rename input/{test => no-notation}/parse3.ly (100%) rename input/{test => no-notation}/parse4.ly (100%) create mode 100644 input/regression/hairpin-ending.ly rename input/test/{sizes.ly => fake-grace.ly} (65%) delete mode 100644 input/test/multi-rest.ly delete mode 100644 input/test/pushproperty.ly delete mode 100644 input/test/repeatbar.ly delete mode 100644 input/test/tie-minimum.ly delete mode 100644 input/test/updown.ly delete mode 100644 input/tricks/fragment.ly diff --git a/CHANGES b/CHANGES index 20f294c352..1365620208 100644 --- a/CHANGES +++ b/CHANGES @@ -1,17 +1,4 @@ ---- ../lilypond-1.3.141.hwn2/CHANGES Sun Mar 25 00:23:24 2001 -++ b/CHANGES Sun Mar 25 13:30:43 2001 -@@ -1,6 +1,11 @@ - 1.3.141.hwn2 - ============ - -* property silencedNotes - -1.3.141.hwn2 -============ - - * Fix: instrument names on piano staffs. - - * Bugfix: don't left-align absolute dynamics.1.3.141.jcn3 +1.3.141.jcn3 ============ * some mup2ly progress. @@ -19,9 +6,6 @@ * Bugfix: ly2dvi: don't include empty set fo latexheaders, don't use python-1.5.2 abspath func. -1.3.141.jcn2 -============ - * Setup for new mup converter, based on pmx2ly. * Bugfix: lilypond-book: accept \documentclass{article}. @@ -31,15 +15,32 @@ probably not going to use on www.lilypond.org. Check it out! * Bugfix: building of topdocs. -1.3.141.hwn1 +1.3.141.hwn2 ============ -* doco fixes. +* Fix: instrument names on piano staffs. + +* Bugfix: don't left-align absolute dynamics. + +* Bugfix: don't make spacing rods for absolute dynamics. + +* Various bugfixes for examples (thanks Laura!). + +* Bugfix: clean up of hairpin ending logic. Crescendi start under +notes now. + +* Don't substitute '\ ' for '\_' in lyrics. (Suggestion by Roy Rankin) + +* In computing text lengths handle the following cases \['`"^_]. (the same) + +* Made directories input/no-notation, input/ascii-art + +* Doco fixes. * Beat repeats, double measure repeats; removed repeat sign character from the font (WARNING: FONT CHANGED). -* cleanups in (de)crescendo code, fixed continued (de)crescendi. +* Cleanups in (de)crescendo code, fixed continued (de)crescendi. * German chords (Rune Zedler) diff --git a/Documentation/regression-test.tely b/Documentation/regression-test.tely index 0e0180f72f..7cfcc81e57 100644 --- a/Documentation/regression-test.tely +++ b/Documentation/regression-test.tely @@ -38,7 +38,6 @@ and documenting bugfixes. @lilypondfile[printfilename]{accidental-single-double.ly} - @section Stems @lilypondfile[printfilename]{stem-tremolo.ly} @@ -55,15 +54,17 @@ and documenting bugfixes. @lilypondfile[printfilename]{staccato-pos.ly} -@lilypondfile[printfilename]{dynamics-line.ly} - -@lilypondfile[printfilename]{dynamics-broken-hairpin.ly} - @lilypondfile[printfilename]{arpeggio.ly} @lilypondfile[printfilename]{glissando.ly} -@lilypondfile[printfilename]{follow-thread.ly} +@section Dynamics + +@lilypondfile[printfilename]{dynamics-line.ly} + +@lilypondfile[printfilename]{hairpin-ending.ly} + +@lilypondfile[printfilename]{dynamics-broken-hairpin.ly} @@ -80,7 +81,7 @@ and documenting bugfixes. -@section Beams, slurs and other spanners +@section Beams @lilypondfile[printfilename]{beaming.ly} @@ -102,9 +103,12 @@ and documenting bugfixes. @lilypondfile[printfilename]{triplets.ly} +@section Slurs @lilypondfile[printfilename]{slur-nice.ly} + @lilypondfile[printfilename]{slur-symmetry.ly} + @lilypondfile[printfilename]{slur-symmetry-1.ly} @lilypondfile[printfilename]{slur-broken-trend.ly} @@ -117,15 +121,14 @@ and documenting bugfixes. @lilypondfile[printfilename]{phrasing-slur.ly} +@section Ties + @lilypondfile[printfilename]{tie.ly} @lilypondfile[printfilename]{tie-chord.ly} @lilypondfile[printfilename]{tie-accidental.ly} -@lilypondfile[printfilename]{beam-cross-staff.ly} - -@lilypondfile[printfilename]{slur-cross-staff.ly} @lilypondfile[printfilename]{tup.ly} @@ -147,11 +150,7 @@ and documenting bugfixes. @lilypondfile[printfilename]{repeat-line-break.ly} -@lilypondfile[printfilename]{percent-repeat.ly} - -@lilypondfile[printfilename]{auto-change.ly} - - +@lilypondfile[printfilename]{volta-broken-left-edge.ly} @section Lyrics @@ -189,6 +188,14 @@ and documenting bugfixes. @section PianoStaff +@lilypondfile[printfilename]{beam-cross-staff.ly} + +@lilypondfile[printfilename]{slur-cross-staff.ly} + +@lilypondfile[printfilename]{auto-change.ly} + +@lilypondfile[printfilename]{follow-thread.ly} + @section Global stuff @@ -228,24 +235,6 @@ and documenting bugfixes. @lilypondfile[printfilename]{keys.ly} - -@ignore -@c the input file is too long and does not test for specific bugs - -By default, time signatures are written with two numbers. With style -``C'', 4/4 and 2/2 are written with their corresponding symbols and -with style ``old'', 2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and -9/8 are typeset with symbols, all other signatures retain the default -layout. The style ``1'', gives single number signatures for all -signatures. -% -\mu delafile{time.ly} -@end ignore - - - - - @section Hacks and Features @lilypondfile[printfilename]{generic-output-property.ly} diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index d4c7585aff..ee400db07a 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -3297,10 +3297,7 @@ relocated, so this can also be used to shorten measures. A bar check is entered using the bar symbol, @code{|} -@node Speeding up debugging -@subsection Speeding up debugging -[TODO: describe skipTypesetting here] @c . {Point and click} @node Point and click diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index 415d95ac8c..f4172bdda1 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -13,6 +13,7 @@ * An orchestral score:: * Part extraction:: * end of tutorial:: The end +* Pre-cooked makefile:: @end menu @node Introduction @@ -1830,12 +1831,9 @@ Music (TM), have a look at the @ref{Mutopia project}. [TODO figure out what to do with this: ] -@menu -* Pre-cooked makefile:: -@end menu @node Pre-cooked makefile -@subsection Pre-cooked makefile +@section Pre-cooked makefile @c waar deze info? is uiteindelijk wel handig, schat ik. [TODO: cut blabla] diff --git a/FAQ.txt b/FAQ.txt index 74053fd0d6..41feee5f3b 100644 --- a/FAQ.txt +++ b/FAQ.txt @@ -68,3 +68,11 @@ releases, in particular the windows32 binaries, are only made every once in a while. They may lag several versions behind the latest version. +Beams, slurs and crescendi are not displayed at all! +---------------------------------------------------- + + XDvi uses GhostScript for displaying PostScript, check that you have +GhostScript installed. If you use a different DVI viewer (eg, on +Windows), check if it will display embedded PostScript. Don't worry, +the symbols should appear on the printout. + diff --git a/INSTALL.txt b/INSTALL.txt index 04c5df23e8..386e18a831 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -240,6 +240,22 @@ accordingly. resulting binaries can be found in the subdirectories `out/' (which contain all files generated during compilation). +Emacs mode +========== + + An emacs mode for LilyPond is included with the source archive as +`lilypond-mode.el' and `lilypond-font-lock.el'. If you have an RPM, it +is in `/usr/share/doc/lilypond-X/'. You have to install it yourself. + + Add this to your ~/.emacs or ~/.emacs.el: + (load-library "lilypond-mode.el") + (setq auto-mode-alist + (cons '("\\.ly$" . LilyPond-mode) auto-mode-alist)) + (add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock))) + + If you have the latest LilyPond-1.3.x Debian package, LilyPond-mode +is automatically loaded, so you need not modify your ~/.emacs file. + Configuring for multiple platforms ================================== @@ -305,6 +321,13 @@ addition to the those needed for running: * tetex-devel +SuSE +==== + + [TODO: document this] + + Install `tetex', `te_mpost', `te_kpath'. + Debian GNU/Linux ================ diff --git a/VERSION b/VERSION index 6c19d310bb..7882a31f64 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=141 -MY_PATCH_LEVEL=hwn3 +PATCH_LEVEL=142 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/buildscripts/mf-to-table.py b/buildscripts/mf-to-table.py index 1dfb64f4e2..8feec727d6 100755 --- a/buildscripts/mf-to-table.py +++ b/buildscripts/mf-to-table.py @@ -44,6 +44,7 @@ class Char_metric: def tfm_checksum (fn): + sys.stderr.write ("Reading checksum from `%s'\n" % fn) s = open (fn).read () s = s[ 12 * 2 : ] cs_bytes = s[:4] diff --git a/input/GNUmakefile b/input/GNUmakefile index e49533f076..b3ceba7c44 100644 --- a/input/GNUmakefile +++ b/input/GNUmakefile @@ -2,7 +2,7 @@ depth = .. -SUBDIRS=bugs tricks test regression tutorial +SUBDIRS=bugs tricks test regression tutorial no-notation ascii-art examples=trip star-spangled-banner paddy scarlatti-test flexamples= diff --git a/input/ascii-art/GNUmakefile b/input/ascii-art/GNUmakefile new file mode 100644 index 0000000000..659a10c8d0 --- /dev/null +++ b/input/ascii-art/GNUmakefile @@ -0,0 +1,8 @@ +# input/bugs/Makefile + +depth = ../.. + +LOCALSTEPMAKE_TEMPLATES=mutopia +include $(depth)/make/stepmake.make + + diff --git a/input/test/asciscript5.ly b/input/ascii-art/asciscript5.ly similarity index 93% rename from input/test/asciscript5.ly rename to input/ascii-art/asciscript5.ly index 0d937897a3..726b0cacde 100644 --- a/input/test/asciscript5.ly +++ b/input/ascii-art/asciscript5.ly @@ -1,4 +1,6 @@ +% ascii art + \include "paper-as5.ly" \score { diff --git a/input/test/r-as.ly b/input/ascii-art/r-as.ly similarity index 100% rename from input/test/r-as.ly rename to input/ascii-art/r-as.ly diff --git a/input/test/standchen-as5.ly b/input/ascii-art/standchen-as5.ly similarity index 97% rename from input/test/standchen-as5.ly rename to input/ascii-art/standchen-as5.ly index cb8660d560..876c449dc5 100644 --- a/input/test/standchen-as5.ly +++ b/input/ascii-art/standchen-as5.ly @@ -1,4 +1,5 @@ +% asci art output diff --git a/input/test/standchen-as9.ly b/input/ascii-art/standchen-as9.ly similarity index 84% rename from input/test/standchen-as9.ly rename to input/ascii-art/standchen-as9.ly index bae5a8666c..00a7b257bb 100644 --- a/input/test/standchen-as9.ly +++ b/input/ascii-art/standchen-as9.ly @@ -1,4 +1,5 @@ +% asci-art output, TODO: include how-to-use-this \include "paper-as9.ly" @@ -28,7 +29,7 @@ \translator { \VoiceContext beamHeight = ##f - autoBeamSettings \override (begin * * * *) = #(make-moment 0 1) + autoBeamSettings \override #(begin * * * *) = #(make-moment 0 1) textNonEmpty = ##f } } diff --git a/input/test/twinkle-as5.ly b/input/ascii-art/twinkle-as5.ly similarity index 98% rename from input/test/twinkle-as5.ly rename to input/ascii-art/twinkle-as5.ly index 38723655a3..f99d5a502e 100644 --- a/input/test/twinkle-as5.ly +++ b/input/ascii-art/twinkle-as5.ly @@ -1,3 +1,5 @@ +% ascii art output + \header{ filename = "twinkle.ly"; title = "Twinkle Twinkle Little Star"; diff --git a/input/bugs/gr-instrument.ly b/input/bugs/gr-instrument.ly deleted file mode 100644 index f48cf46251..0000000000 --- a/input/bugs/gr-instrument.ly +++ /dev/null @@ -1,42 +0,0 @@ -%{ -instrument names on grandstaffs. GR is centered on entire score -%} - - -\include "paper20.ly" -\header{ - latexpackages = "amsmath"; -} - -\score{ - \notes < - \context Staff = sa {\property Staff.instrument = "A" g,2 c''''2} - \context Staff = sb {\property Staff.instrument = "B" g,2 c''''2} - \context GrandStaff=gs < - \property GrandStaff.instrument = "Gr" - \context Staff = ga {\property Staff.instrument = "" c''1 } - \context Staff = gb {\property Staff.instrument = "" c''1 } - > - \context Staff = sc {\property Staff.instrument = "foobar" -% "\small$\mathrm{\genfrac{}{}{0pt}{0}{C}{D}}$" - - } - \context Staff = sd {\property Staff.instrument = "E" c''1 } - - > - \paper{ - \translator { - \StaffContext - \consists "Instrument_name_engraver"; - } - \translator { - \GrandStaffContext - \consists "Instrument_name_engraver"; - } - - } -} - - - - diff --git a/input/bugs/p.ly b/input/bugs/p.ly deleted file mode 100644 index a63e8ef9a8..0000000000 --- a/input/bugs/p.ly +++ /dev/null @@ -1,31 +0,0 @@ -% -% mmrests of second voice should not disappear -% -% the problem is more complex: the mmrest-engraver lives at staff level, -% but it seems that we need one per voice. -% -\score { - \notes < - \context Staff = Viole < - \context Voice=one \partcombine Voice - - % ordering significant ?? - \context Thread=two \relative c''{ R1 c2 c2 } - \context Thread=one { R1*2 } - > - > - \paper { -% { - \translator { - \StaffContext - \remove Multi_measure_rest_engraver; - \remove Bar_engraver; - } - \translator { - \VoiceContext - \consists Multi_measure_rest_engraver; - \consists Bar_engraver; - } -% } - } -} \ No newline at end of file diff --git a/input/denneboom.ly b/input/denneboom.ly deleted file mode 100644 index a29abcfa48..0000000000 --- a/input/denneboom.ly +++ /dev/null @@ -1,116 +0,0 @@ -\header{ -filename = "denneboom.ly"; -enteredby = "jcn"; -copyright = "public domain"; -} -%{ file tests silly line shapes %} -% Broken since 1.3.55 - -\include "paper20.ly" - - - -oden = \lyrics{ - O | - den- ne- boom, o | - den- ne- boom Wat | - zijn uw tak- ken | - won- der- schoon -} - -ikheb = \lyrics{ - Ik | - heb u laatst in_'t | - bos zien staan toen | - zat- en er geen | - kaars- jes aan -} - -ugloeit = \lyrics{ - U | - gloeit in bar- re | - win- ter- tijd, als | - sneeuw op aar- de | - licht ge- spreid -} - -oboom = \notes\transpose c''{ - g,8 | - c8. c16 c4. d8 | - e8. e16 e4. e8 | - d e f4 b, | - d8. c16 c4 r8 -} - -bos = \notes\transpose c''{ - g8 | - g e a4. g8 | - g8. f16 f4 r8 f8 | - f d g4. f8 | - f8. e16 e4 r8 -} - - -melody = \notes{ - \oboom - \oboom - \bos - \oboom -} - - -verseOne = \notes{ - \oden - \oden - \ikheb - \oden -} - -verseOneStaff = \context Lyrics = one - \$verse_one - - -verseTwo = \notes{ - \oden - \oden - \ugloeit - \oden -} - -verseTwoStaff = \context Lyrics = two - \$verse_two - - -denneboomShape = \paper{ - \paperTwenty - indent = 20. \mm; - - % UGH -- THIS IS HAIRY - #'margin-shape = #(map - (lambda (x) (cons-map mm-to-pt x)) - '((70.0 . 20.) - (65.0 . 30.0) - (57.5 . 45.0) - (50.0 . 60.0) - (42.5 . 75.) - (35.0 . 90.) - (27.5 . 105.) - (20.0 . 120.0) - (10.0 . 140.0) - (65.0 . 30.0)) - ) - - gourlay_maxmeasures = 30.; - arithmetic_basicspace = 3.8; - arithmetic_multiplier = 8.\pt; -} - -\score{ - \addlyrics - \context Staff { \time 3/4; \melody } - \context Lyrics \$verse_one - \paper{ - \$denneboom_shape - } - \midi{ \tempo 4 = 90; } -} diff --git a/input/les-nereides.ly b/input/les-nereides.ly index d4efc7d037..2bae5fe900 100644 --- a/input/les-nereides.ly +++ b/input/les-nereides.ly @@ -1,6 +1,16 @@ %{ + +You should preprocess this file with the C preprocessor. The one with +FAKE_GRACE looks best. + +1. + cpp -P -traditional -o l.ly les-nereides.ly + +2. + cpp -P -traditional -o l-fake.ly -DFAKE_GRACE les-nereides.ly + %} diff --git a/input/minimal.ly b/input/minimal.ly deleted file mode 100644 index 1bbd71a52d..0000000000 --- a/input/minimal.ly +++ /dev/null @@ -1,10 +0,0 @@ - - - -\score{ \sequential {\clef bass ; } -\paper { \translator { \type Score_engraver ; \name "Score"; } - linewidth =1.5\cm; - -} - -} diff --git a/input/no-notation/GNUmakefile b/input/no-notation/GNUmakefile new file mode 100644 index 0000000000..659a10c8d0 --- /dev/null +++ b/input/no-notation/GNUmakefile @@ -0,0 +1,8 @@ +# input/bugs/Makefile + +depth = ../.. + +LOCALSTEPMAKE_TEMPLATES=mutopia +include $(depth)/make/stepmake.make + + diff --git a/input/test/parse.ly b/input/no-notation/parse.ly similarity index 100% rename from input/test/parse.ly rename to input/no-notation/parse.ly diff --git a/input/test/parse2.ly b/input/no-notation/parse2.ly similarity index 100% rename from input/test/parse2.ly rename to input/no-notation/parse2.ly diff --git a/input/test/parse3.ly b/input/no-notation/parse3.ly similarity index 100% rename from input/test/parse3.ly rename to input/no-notation/parse3.ly diff --git a/input/test/parse4.ly b/input/no-notation/parse4.ly similarity index 100% rename from input/test/parse4.ly rename to input/no-notation/parse4.ly diff --git a/input/praeludium-fuga-E.ly b/input/praeludium-fuga-E.ly index b63607a78d..bd43a715a1 100644 --- a/input/praeludium-fuga-E.ly +++ b/input/praeludium-fuga-E.ly @@ -130,7 +130,7 @@ fugaIIRight = \notes \relative c'' { } \context Voice=four { \stemDown\slurDown\tieDown - \property Voice.horizontalNoteShift=-1 + \property Voice.NoteColumn \override #'horizontal-shift = #-1 fis } > diff --git a/input/regression/arpeggio-collision.ly b/input/regression/arpeggio-collision.ly index 7a8d7f0aee..82a4ff48dc 100644 --- a/input/regression/arpeggio-collision.ly +++ b/input/regression/arpeggio-collision.ly @@ -1,8 +1,8 @@ -header = { +\header { texidoc = "arpeggio stays clear of accidentals and flipped note heads. -Since Arpeggio engraver is Voice, it does nothing for voice collisions." -}; +Since Arpeggio engraver is Voice, it does nothing for voice collisions."; +} hairyChord = \context Staff \notes\relative c' < \context Voice=one { diff --git a/input/regression/hairpin-ending.ly b/input/regression/hairpin-ending.ly new file mode 100644 index 0000000000..3d510d1275 --- /dev/null +++ b/input/regression/hairpin-ending.ly @@ -0,0 +1,14 @@ + +\header { + +texidoc = "Hairpin dynamics start under notes if there are +no text-dynamics. If there are text dynamics, the hairpin does not run +into them."; + +} + + +\score { +\notes \relative c'' { c4 \> c4 \! c4 c4_\ff \> c4 \! c4 \p } +\paper { linewidth = -1.;} +} diff --git a/input/regression/volta-broken-left-edge.ly b/input/regression/volta-broken-left-edge.ly index 1eeef6e003..f0998be1ed 100644 --- a/input/regression/volta-broken-left-edge.ly +++ b/input/regression/volta-broken-left-edge.ly @@ -1,7 +1,8 @@ \header { -texidoc ="Broken volta spanners behave correctly at left edge in all cases." -}; +texidoc ="Broken volta spanners behave correctly at left edge in all cases."; + +} %{ diff --git a/input/scarlatti-paper.ly b/input/scarlatti-paper.ly index 8627c7b475..7836ecff3d 100644 --- a/input/scarlatti-paper.ly +++ b/input/scarlatti-paper.ly @@ -2,30 +2,30 @@ \paper{ %my standard paper block - % figure out a way to do this cleanly. % 0=\font "feta19" % -1=\font "feta16" % \stylesheet #(make-style-sheet 'paper19) - arithmetic_multiplier=7.\pt; indent=0.; linewidth=188.\mm; - forced_stem_shorten0=0.; - forced_stem_shorten1=0.; - forced_stem_shorten2=0.; - forced_stem_shorten3=0.; + \translator{ \PianoStaffContext - maxVerticalAlign=8.4; - minVerticalAlign=8.4; + VerticalAlignment \set #'forced-distance = #8.4 } \translator{\StaffContext TimeSignature \override #'style = #'C } - \translator{\VoiceContext + \translator { + \ScoreContext + SpacingSpanner \override #'arithmetic-multiplier = #1.4 + } + \translator{ + \VoiceContext noStemExtend = ##t tupletVisibility = ##f + Stem \override #'stem-shorten = #'(0.0) } } diff --git a/input/scarlatti-properties.ly b/input/scarlatti-properties.ly index aa7d6611e0..67701eb6d8 100644 --- a/input/scarlatti-properties.ly +++ b/input/scarlatti-properties.ly @@ -1,7 +1,4 @@ - - - - +% include file for scarlatti-test rh=\property Thread.NoteHead \override #'style = #'default lh=\property Thread.NoteHead \override #'style = #'diamond diff --git a/input/star-spangled-banner.ly b/input/star-spangled-banner.ly index 4f79f9dafb..c72646beff 100644 --- a/input/star-spangled-banner.ly +++ b/input/star-spangled-banner.ly @@ -1,7 +1,7 @@ %{ -Converted from star.mup with the aid of the old mup2ly.py -http://www.arkkra.com/doc/star.html -http://www.arkkra.com/doc/star.ps +Converted from star.mup with the aid of mup2ly.py +http://www.Arkkra.com/doc/star.html +http://www.Arkkra.com/doc/star.ps %} diff --git a/input/test/ac-extra-voice.ly b/input/test/ac-extra-voice.ly index ca1dc4e8b0..07277383f7 100644 --- a/input/test/ac-extra-voice.ly +++ b/input/test/ac-extra-voice.ly @@ -1,4 +1,6 @@ - +% +% TODO: what's this? +% global = \notes { @@ -39,18 +41,14 @@ accompany = \notes \relative c{ \context Staff=down < \global \clef bass; - \autochange Staff \accompany + \autochange Staff \context Voice \accompany > > \paper { - gourlay_maxmeasures = 4.; indent = 8.\mm; textheight = 295.\mm; - % ugly is beautiful - slur_beautiful = 5.0; - \translator{ \PianoStaffContext defaultBarType = #"" @@ -63,8 +61,9 @@ accompany = \notes \relative c{ defaultBarType = #"" \remove "Time_signature_engraver"; - slurVerticalDirection = #1 - verticalDirection = -1 + Slur \override #'direction = #1 + + autoBeamSettings \override #'(end * * * *) = #(make-moment 1 2) } } diff --git a/input/test/as2.ly b/input/test/as2.ly index 1dc7fef399..71995c12dc 100644 --- a/input/test/as2.ly +++ b/input/test/as2.ly @@ -1,4 +1,5 @@ +% test for ascii-art output \include "paper-as9.ly" diff --git a/input/test/different-time-signatures.ly b/input/test/different-time-signatures.ly index 954268be9c..b4a04ae5e2 100644 --- a/input/test/different-time-signatures.ly +++ b/input/test/different-time-signatures.ly @@ -2,22 +2,21 @@ % barline spacing disrupts visual rhythm. -#(set! space-alist (assoc-set! space-alist '("Staff_bar" "begin-of-note") '(minimum_space 0.0))) -#(set! space-alist (assoc-set! space-alist '("Staff_bar") '(minimum_space 0.0))) +#(define nbal (acons '("Staff_bar" "begin-of-note") '(minimum_space 0.0) default-break-align-space-alist)) \score{ \notes \relative c' < \context Staff= AS { - \time 3/4; + \property Staff.timeSignatureFraction = #'(3 . 4) c4 c c | c c c | } \context Staff=BS { - \time 2/4; + \property Staff.timeSignatureFraction = #'(2 . 4) c4 c | c c | c c } % TODO: make c4. here align with c4 there. \context Staff =CS { - \time 3/8; + \property Staff.timeSignatureFraction = #'(3 . 8) c4. c8 c c c4. c8 c c } > @@ -26,6 +25,7 @@ linewidth = -1.0\cm; \translator{ \ScoreContext + BreakAlignment \override #'space-alist = #nbal \remove Timing_engraver; } \translator{ diff --git a/input/test/equaliser.ly b/input/test/equaliser.ly index 6a4d8588da..68533109b8 100644 --- a/input/test/equaliser.ly +++ b/input/test/equaliser.ly @@ -1,3 +1,6 @@ +% +% TODO: junkme. +% flauti = \notes \relative c' { diff --git a/input/test/sizes.ly b/input/test/fake-grace.ly similarity index 65% rename from input/test/sizes.ly rename to input/test/fake-grace.ly index a0779c39da..cebfdf4fb2 100644 --- a/input/test/sizes.ly +++ b/input/test/fake-grace.ly @@ -1,14 +1,14 @@ - \score { \context Voice \notes\relative c { % to see the magic: uncomment size stuff in init/paper20.ly c'4 c4 - \property Voice.fontsize= -2 - b16 * 1 / 2 ( - \property Voice.fontsize= 0 ) - g4 *31/32 + \property Voice.fontSize= #-2 + b16 (*1/2 + \property Voice.fontSize= #0 + + ) g4 *31/32 a a g2 diff --git a/input/test/font-body.ly b/input/test/font-body.ly index a2536530ef..157531acba 100644 --- a/input/test/font-body.ly +++ b/input/test/font-body.ly @@ -1,4 +1,6 @@ +% body for the font test. Does not work standalone + FontBody= \notes\transpose c''{ \bar "|:"; @@ -65,3 +67,6 @@ c\longa*1/4 c\breve*1/2 c1 c2 c4 c8 c2\sustainDown c\sustainUp | } } +\score { + \FontBody +} diff --git a/input/test/font11.ly b/input/test/font11.ly index c283b7aab0..c978c0aa99 100644 --- a/input/test/font11.ly +++ b/input/test/font11.ly @@ -17,7 +17,7 @@ description = "This file tests the Feta music font, 11pt"; \paper{ \paperEleven linewidth = 17.5 \cm; - gourlay_maxmeasures =5.; + } } diff --git a/input/test/font13.ly b/input/test/font13.ly index d738759ac0..47e38188f7 100644 --- a/input/test/font13.ly +++ b/input/test/font13.ly @@ -1,5 +1,3 @@ - - \header{ title= "The Feta Font"; subtitle = "proofsheet"; @@ -11,13 +9,8 @@ description = "This file tests the Feta music font, 11pt"; \include "paper13.ly" -\include "font-body.ly" -\score{ - \FontBody - \paper{ - \paperThirteen - linewidth = 17.5 \cm; - gourlay_maxmeasures =5.; - } +\paper{ +linewidth = 17.5 \cm; } +\include "font-body.ly" diff --git a/input/test/font16.ly b/input/test/font16.ly index 54ce1e0cef..9ef98f46e4 100644 --- a/input/test/font16.ly +++ b/input/test/font16.ly @@ -9,16 +9,10 @@ description = "This file tests the Feta music font"; \include "paper16.ly" -\include "font-body.ly" - -\score{ - \FontBody \paper{ % don't change this. % otherwise 16pt and 20pt layouts differ. - \paperSixteen - linewidth = 12.5 \cm; - gourlay_maxmeasures =5.; - } -} - + + linewidth = 12.5 \cm;} + + \include "font-body.ly" diff --git a/input/test/font20.ly b/input/test/font20.ly index 8233c2c68a..7ee14b33d4 100644 --- a/input/test/font20.ly +++ b/input/test/font20.ly @@ -8,14 +8,10 @@ TestedFeatures = "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\include "font-body.ly" - -\score{ - \context Staff { \FontBody} \paper{ linewidth = 17.5 \cm; - gourlay_maxmeasures =5.; } -} + +\include "font-body.ly" diff --git a/input/test/font26.ly b/input/test/font26.ly index d30ec2c093..69aaede984 100644 --- a/input/test/font26.ly +++ b/input/test/font26.ly @@ -9,14 +9,11 @@ description = "This file tests the Feta music font"; } \include "paper26.ly" -\include "font-body.ly" - -\score{ - \FontBody \paper{ - \paperTwentysix + linewidth = 17.5 \cm; - gourlay_maxmeasures =5.; + } -} + + \include "font-body.ly" diff --git a/input/test/hara-kiri.ly b/input/test/hara-kiri.ly index c67a6648f7..5799357740 100644 --- a/input/test/hara-kiri.ly +++ b/input/test/hara-kiri.ly @@ -1,4 +1,10 @@ +\header { +texidoc = "Hara kiri staffs disappear when empty "; +} + + +% todo: use partcombine?, junk? toeterI = \notes\relative c <{ \property Staff.instrument = #"Toeters" @@ -29,8 +35,8 @@ toeterIi = \notes \relative c \context Voice = together { } toeters = \context Staff = toeters < - \toeter_i - \toeter_ii + \toeterI + \toeterIi > zager = \context Staff = zager \notes \relative c'' { diff --git a/input/test/keys2.ly b/input/test/keys2.ly index caf59fe006..b28b04f643 100644 --- a/input/test/keys2.ly +++ b/input/test/keys2.ly @@ -1,25 +1,3 @@ -blah = \notes { - -\transpose c'' { - \time 4/4; - \keysignature es; - [cis8 d e f] [e! a b cis'] | - es e f e a a' a a' | - \clef "bass"; } - [es16 c' b a] [g f es d] [c d es d] [c bes, as, g,] | - -\clef "violin"; - \keysignature c; - cis4 c cis cis | - cis dis2 ~ | - \time 2/4 ; - dis4 dis ~ | c cis~ | c -} - -\score{ - \context Staff \blah - -} diff --git a/input/test/multi-rest.ly b/input/test/multi-rest.ly deleted file mode 100644 index 6d0781c4f7..0000000000 --- a/input/test/multi-rest.ly +++ /dev/null @@ -1,32 +0,0 @@ - - -voiceOne = \notes\transpose c''{ \stemUp - R1 * 2 | f'4-. r r2 | R1 * 3 | - f'4-. r r2 | R1 * 3 | - es'4-. r r2 | r1 | - \property Score.skipBars = ##t6 - g4-. r r2 | g4-. r r2 | - R1 * 5 | - r2 r4 g4-. | - } - -voiceTwo = \notes - { \transpose c' { \stemDown - R1 * 2 | f'4-. r r2 | R1 * 3 | - f'4-. r r2 | R1 * 3 | - es'4-. r r2 | r1 | - \property Score.skipBars = ##t6 - g4-. r r2 | g4-. r r2 | - R1 * 5 | - r2 r4 g4-. | - - }} - -\score { \notes - \context Staff < - \voiceTwo - \voiceOne - > - - } - diff --git a/input/test/pushproperty.ly b/input/test/pushproperty.ly deleted file mode 100644 index c532befb5b..0000000000 --- a/input/test/pushproperty.ly +++ /dev/null @@ -1,83 +0,0 @@ - - -%{ - -Look at ly/engraver.ly for inspiration on which XXXX -there are. - -Generally, you can find interesting element properties associated with -\property in scm/generic-property.scm. For example, this file contains - - (define generic-stem-properties - (cons 'stem-interface - (list - (list 'stemVerticalDirection dir? 'direction) - (list 'verticalDirection dir? 'direction) - (list 'stemLength number? 'length) - (list 'flagStyle string? 'flag-style) - ))) - - -which means that setting \property stemVerticalDirection overrides -setting \property verticalDirection, and that both have the effect of -setting `direction' in Stem object. You can use \overrideproperty for -setting stem directions by doing. - - - \overrideproperty #'(Stem) #'direction #1 - -(#-1 if you want down). - -A modest amount of memory is involved each time you do a -\overrideproperty. If you do \revertproperty in the right order (reversed -from \overrideproperty), then \revertproperty doesn't cost memory. - -Correct: - - \overrideproperty #'( ... ) #'symbolA #valueA - \overrideproperty #'( ... ) #'symbolB #valueB - \revertproperty #'( ... ) #'symbolB - \revertproperty #'( ... ) #'symbolA - -Incorrect (\revertproperty costs memory): - - \overrideproperty #'( ... ) #'symbolA #valueA - \overrideproperty #'( ... ) #'symbolB #valueB - \revertproperty #'( ... ) #'symbolA - \revertproperty #'( ... ) #'symbolB - -You can use identifiers, eg. - - slursUp = \context Voice \overrideproperty '(Slur) - #'direction #1 - slursBoth = \context Voice \revertproperty '(Slur) - -%} - -\score { \notes -\relative c' { - c4-.( - \property Voice.Dots \override #'direction = #-1 - \property Voice.Stem \override #'direction = #-1 - \property Voice.noteColumnProperties \override #'direction = #-1 - \property Voice.Stem \override #'direction = #-1 - - ) c4-. ( - ) c4-. ( - \property Voice.Slur \override #'direction = #-1 - ) c4-. ( - - \property Dots \revert #'direction - \property Stem \revert #'direction - \property Script \revert #'direction - \property Text \revert #'direction - - ) c4-. () c4-. -} - -\paper { -\translator { \VoiceContext - NoteHead \override #'font-relative-size = #-2 -} -} -} diff --git a/input/test/repeatbar.ly b/input/test/repeatbar.ly deleted file mode 100644 index 9c23cc4390..0000000000 --- a/input/test/repeatbar.ly +++ /dev/null @@ -1,11 +0,0 @@ - -\score { - \context Voice \notes\relative c { - c'' d e f | \repetitions1*3 | - \time 3/4; - g4 a b | R2.*2 | - - } - \paper { } - \midi { } -} diff --git a/input/test/slur-mininum.ly b/input/test/slur-mininum.ly index f12280b73c..83a153caa5 100644 --- a/input/test/slur-mininum.ly +++ b/input/test/slur-mininum.ly @@ -1,12 +1,12 @@ +\header { +texidoc = "" ; +} \score{ \notes\relative c''{ \time 2/4; + \property Voice.Slur \set #'minimum-length = #40 c()c c~c\break } - \paper{ - linewidth=-1.\mm; - slur_x_minimum=40.0*\interline; - } } diff --git a/input/test/spacing.ly b/input/test/spacing.ly index 46e752aa12..809dc44a26 100644 --- a/input/test/spacing.ly +++ b/input/test/spacing.ly @@ -91,6 +91,6 @@ singlepart = \notes{ } \paper { % linewidth= 18.\cm; -% gourlay_maxmeasures = 4.0 + } } diff --git a/input/test/stem.ly b/input/test/stem.ly index cdba9179ba..0831f3b074 100644 --- a/input/test/stem.ly +++ b/input/test/stem.ly @@ -41,7 +41,4 @@ beamintervals = \notes{ \transpose a \beamintervals \transpose b \beamintervals } - \paper{ - gourlay_maxmeasures = 2.; - } } diff --git a/input/test/tchaikovsky.ly b/input/test/tchaikovsky.ly index a57f7035f1..42387d2570 100644 --- a/input/test/tchaikovsky.ly +++ b/input/test/tchaikovsky.ly @@ -34,7 +34,7 @@ instrument= "Violoncello"; \clef "bass"; \key c \major; | | - ~ ~ | + | ~ ~ } \header{ piece="example 2"; diff --git a/input/test/tie-minimum.ly b/input/test/tie-minimum.ly deleted file mode 100644 index 7f0f785fb3..0000000000 --- a/input/test/tie-minimum.ly +++ /dev/null @@ -1,12 +0,0 @@ - -\score{ - \notes\relative c''{ - \time 2/4; - c~c\break - c()c - } - \paper{ - linewidth=-1.\mm; - tie_x_minimum=40.0*\interline; - } -} diff --git a/input/test/updown.ly b/input/test/updown.ly deleted file mode 100644 index 55869799b8..0000000000 --- a/input/test/updown.ly +++ /dev/null @@ -1,14 +0,0 @@ -\score { - \context Voice \notes\relative c { - % this used to work (long time ago): - % <{\voiceOne e} - % {\voiceTwo c}> - - % now we need: - <\context Voice=one {\voiceOne e} - \context Voice=two {\voiceTwo c}> - - } - \paper { } - \midi { } -} diff --git a/input/tricks/fragment.ly b/input/tricks/fragment.ly deleted file mode 100644 index b4865d6787..0000000000 --- a/input/tricks/fragment.ly +++ /dev/null @@ -1,11 +0,0 @@ - -fragment = \notes { - -} - -\paper { linewidth = -1.; } - -\score { - \notes\relative c \fragment - \paper { } -} diff --git a/input/tricks/smart-transpose.ly b/input/tricks/smart-transpose.ly index 27d4df98b6..05170116f2 100644 --- a/input/tricks/smart-transpose.ly +++ b/input/tricks/smart-transpose.ly @@ -6,8 +6,8 @@ texidoc=" @quotation Your task, if you accept it is to implement a \smarttranspose command> that would translate such oddities into more natural - notations. Double accidentals should be removed, as well as #E - (-> F), bC (-> B), bF (-> E), #B (-> C). + notations. Double accidentals should be removed, as well as E-sharp + (-> F), bC (-> B), bF (-> E), B-sharp (-> C). @end quotation You mean like this. (Sorry 'bout the nuked indentation.) @@ -15,14 +15,6 @@ You mean like this. (Sorry 'bout the nuked indentation.) "; } -% Btw, I've leant an el-neato trick for formatting code in email messages, -% using inderect buffers. -% -% M-x make-indirect-buffer RET RET foo RET C-x b foo RET -% Select region and then narrow: C-x n n -% Set mode, eg: M-x sch TAB RET -% - #(define (unhair-pitch p) (let* ((o (pitch-octave p)) (a (pitch-alteration p)) diff --git a/input/tricks/staff-container.ly b/input/tricks/staff-container.ly index 647a3765ce..baa7cd2518 100644 --- a/input/tricks/staff-container.ly +++ b/input/tricks/staff-container.ly @@ -35,3 +35,5 @@ interesting things. You can also drop the \consistsend feature."; \remove Axis_group_engraver; } } +} + diff --git a/input/tutorial/os-music.ly b/input/tutorial/os-music.ly index 4625b12d72..b20a12288b 100644 --- a/input/tutorial/os-music.ly +++ b/input/tutorial/os-music.ly @@ -1,3 +1,5 @@ +% include file for tutorial + \header { title = "Zo, goed lieverd?"; subtitle = "How's, this babe?"; diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index ee563516c0..1bda7ea01f 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -175,8 +175,7 @@ Dynamic_engraver::process_music () script_req_l_->get_mus_property ("text")); Side_position_interface::set_direction (script_p_, LEFT); - Side_position_interface::set_axis (script_p_, X_AXIS); - + if (Direction d = script_req_l_->get_direction ()) Directional_element_interface::set (line_spanner_, d); diff --git a/lily/font-metric.cc b/lily/font-metric.cc index 7ce615a859..b421075119 100644 --- a/lily/font-metric.cc +++ b/lily/font-metric.cc @@ -29,6 +29,22 @@ Font_metric::text_dimension (String text) const switch (text[i]) { case '\\': + // accent marks use width of base letter + if (i +1 < text.length_i ()) + { + if (text[i+1]=='\'' || text[i+1]=='`' || text[i+1]=='"' || + text[i+1]=='^') + { + i++; + break; + } + // for string width \\ is a \ and \_ is a _. + if (text[i+1]=='\\' || text[i+1]=='_') + { + break; + } + } + for (i++; (i < text.length_i ()) && !isspace (text[i]) && text[i]!='{' && text[i]!='}'; i++) ; diff --git a/lily/grace-engraver-group.cc b/lily/grace-engraver-group.cc index edbaac8009..fd60e0de66 100644 --- a/lily/grace-engraver-group.cc +++ b/lily/grace-engraver-group.cc @@ -71,7 +71,7 @@ Grace_engraver_group::one_time_step () calling_self_b_ = true; process_music (); announces (); - stop_translation_timestep (); + pre_move_processing (); check_removal (); calling_self_b_ = false; } diff --git a/lily/grace-performer-group.cc b/lily/grace-performer-group.cc index 58a3f1fdde..54fbce92d9 100644 --- a/lily/grace-performer-group.cc +++ b/lily/grace-performer-group.cc @@ -73,7 +73,7 @@ Grace_performer_group::one_time_step () calling_self_b_ = true; // process_music (); announces (); - stop_translation_timestep (); + pre_move_processing (); check_removal (); calling_self_b_ = false; } diff --git a/lily/hairpin.cc b/lily/hairpin.cc index 4fc4bce8d3..6471957ecf 100644 --- a/lily/hairpin.cc +++ b/lily/hairpin.cc @@ -37,35 +37,54 @@ Hairpin::brew_molecule (SCM smob) /* Ugh, must be same as Text_spanner::brew_molecule. */ Real padding = gh_scm2double (me->get_grob_property ("if-text-padding")); - Real broken_left = spanner->get_broken_left_end_align (); - Real width = spanner->spanner_length (); - width -= broken_left; - + Drul_array broken; - Drul_array extra_off; + Drul_array bounds ; Direction d = LEFT; do { - Item *b = spanner->get_bound (d); - broken[d] = b->break_status_dir () != CENTER; + bounds[d] =spanner->get_bound (d); + broken[d] = bounds[d]->break_status_dir () != CENTER; + } + while (flip (&d) != LEFT); - if (!broken [d]) + Grob *common = bounds[LEFT]->common_refpoint (bounds[RIGHT], X_AXIS); + Drul_array x_points ; + + do + { + Item *b = bounds[d]; + x_points[d] = b->relative_coordinate (common, X_AXIS); + if (broken [d]) { - - Interval e =b->extent (b, X_AXIS); - Real r = 0.0; - if (!e.empty_b ()) - r = e[-d] + padding; - width += d * r; - extra_off[d] = r; + if (d == LEFT) + x_points[d] = b->extent (common,X_AXIS)[RIGHT] ; + } + else + { + if (dynamic_cast (b)) + { + /* + If we're hung on a paper column, that means we're not + adjacent to a text-dynamic, and we may move closer. We + make the padding a little smaller, here. + */ + Interval e =b->extent (common, X_AXIS); + x_points[d] = e.center () - d * padding /3; // ugh. + } + else + { + Interval e =b->extent (common, X_AXIS); + if (!e.empty_b ()) + x_points[d] = e[-d] - d*padding; + } } } while (flip (&d) != LEFT); - // FIXME: ecs tells us - width += gh_scm2double (me->get_grob_property ("width-correct")); - /* /Ugh */ - + + Real width = x_points[RIGHT] - x_points[LEFT]; + if (width < 0) { warning (_ ((grow_dir < 0) ? "decrescendo too small" @@ -101,10 +120,17 @@ Hairpin::brew_molecule (SCM smob) gh_double2scm (endh), SCM_UNDEFINED); + /* + We make the hairpin too large in Y direction, so it stays at + proper distance from the staff. + */ Interval yext = 2* height * Interval (-1,1); Box b (Interval (0, width), yext); Molecule mol (b, hairpin); - mol.translate_axis (broken_left + extra_off[LEFT], X_AXIS); + + mol.translate_axis (x_points[LEFT] + - bounds[LEFT]->relative_coordinate (common, X_AXIS), + X_AXIS); return mol.smobbed_copy (); } diff --git a/lily/include/translator.hh b/lily/include/translator.hh index 112c21496f..d0c14c1424 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -38,8 +38,9 @@ public: Translator_group * daddy_trans_l_ ; + void pre_move_processing (); void announces (); - + void post_move_processing (); void removal_processing (); /** ask daddy for a feature diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc index 261cb2e054..e58439dc9b 100644 --- a/lily/instrument-name-engraver.cc +++ b/lily/instrument-name-engraver.cc @@ -95,12 +95,18 @@ Instrument_name_engraver::acknowledge_grob (Grob_info i) if (dynamic_cast (i.elem_l_) && i.elem_l_->has_interface (ly_symbol2scm ("dynamic-interface"))) return; - + + /* + Hang the instrument names on the staffs, but not on the alignment + groups enclosing that staff. The alignment has no real location, + but is only a vehicle for the placement routine it contains, and + therefore the location of its refpoint won't be very useful. + + */ if (dynamic_cast (i.elem_l_) && ((Axis_group_interface::has_interface (i.elem_l_) - && Axis_group_interface::axis_b (i.elem_l_, Y_AXIS)) - || (Align_interface::has_interface (i.elem_l_) - && Align_interface::axis (i.elem_l_) == Y_AXIS))) + && Axis_group_interface::axis_b (i.elem_l_, Y_AXIS))) + && !Align_interface::has_interface (i.elem_l_)) { SCM nl = gh_cons (i.elem_l_->self_scm (), get_property ("instrumentSupport")); diff --git a/lily/lexer.ll b/lily/lexer.ll index d08ee082cf..7deca514b0 100644 --- a/lily/lexer.ll +++ b/lily/lexer.ll @@ -49,6 +49,7 @@ RH 7 fix (?) void strip_trailing_white (String&); void strip_leading_white (String&); +String lyric_fudge (String s); bool @@ -321,14 +322,7 @@ HYPHEN -- return yylval.i = EXTENDER; if (s == "--") return yylval.i = HYPHEN; - int i = 0; - while ((i=s.index_i ("_")) != -1) // change word binding "_" to " " - * (s.ch_l () + i) = ' '; - if ((i=s.index_i ("\\,")) != -1) // change "\," to TeX's "\c " - { - * (s.ch_l () + i + 1) = 'c'; - s = s.left_str (i+2) + " " + s.right_str (s.length_i ()-i-2); - } + s = lyric_fudge (s); char c = s[s.length_i () - 1]; if (c == '{' || c == '}') // brace open is for not confusing dumb tools. @@ -607,3 +601,27 @@ valid_version_b (String s) return true; } + +String +lyric_fudge (String s) +{ + char * chars =s.copy_ch_p (); + + for (char * p = chars; *p ; p++) + { + if (*p == '_' && (p == chars || *(p-1) != '\\')) + *p = ' '; + } + + s = String (chars); + delete[] chars; + + int i =0; + if ((i=s.index_i ("\\,")) != -1) // change "\," to TeX's "\c " + { + * (s.ch_l () + i + 1) = 'c'; + s = s.left_str (i+2) + " " + s.right_str (s.length_i ()-i-2); + } + + return s; +} diff --git a/lily/note-heads-engraver.cc b/lily/note-heads-engraver.cc index 2d13e7a7a8..2b3b9e0827 100644 --- a/lily/note-heads-engraver.cc +++ b/lily/note-heads-engraver.cc @@ -26,7 +26,7 @@ class Note_heads_engraver : public Engraver Moment note_end_mom_; public: VIRTUAL_COPY_CONS (Translator); - + protected: virtual void start_translation_timestep (); virtual bool try_music (Music *req_l) ; @@ -35,6 +35,7 @@ protected: virtual void stop_translation_timestep (); }; + bool Note_heads_engraver::try_music (Music *m) { @@ -130,7 +131,6 @@ Note_heads_engraver::stop_translation_timestep () void Note_heads_engraver::start_translation_timestep () { - /* TODO:make this settable? */ if (note_end_mom_ > now_mom ()) @@ -147,8 +147,6 @@ Note_heads_engraver::start_translation_timestep () else e->forbid_breaks (); // guh. Use properties! } - - } diff --git a/lily/parser.yy b/lily/parser.yy index 966edc80ba..54d0ce9400 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -1122,6 +1122,11 @@ command_element: scm_unprotect_object (p->self_scm ()); $$ = sp; + +/* + TODO: should make alias TimingContext for Score +*/ + sp-> set_mus_property ("context-type", ly_str02scm ( "Score")); } ; diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index c387a33959..a85c72c895 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -59,7 +59,7 @@ Score_engraver::prepare (Moment w) Global_translator::prepare (w); make_columns (w); - start_translation_timestep (); + post_move_processing (); } void @@ -115,14 +115,9 @@ Score_engraver::finalize () void Score_engraver::one_time_step () { - if (!to_boolean (get_property (ly_symbol2scm("skipTypesetting")))) - { - process_music (); - announces (); - } - - - stop_translation_timestep (); + process_music (); + announces (); + pre_move_processing (); check_removal (); } diff --git a/lily/score-performer.cc b/lily/score-performer.cc index 63af656abe..e3d966e6e8 100644 --- a/lily/score-performer.cc +++ b/lily/score-performer.cc @@ -60,7 +60,7 @@ Score_performer::prepare (Moment m) Global_translator::prepare (m); audio_column_l_ = new Audio_column (m); play_element (audio_column_l_); - start_translation_timestep (); + post_move_processing (); } @@ -70,7 +70,7 @@ Score_performer::one_time_step () // fixme: put this back. // process_music (); announces (); - stop_translation_timestep (); + pre_move_processing (); check_removal (); } diff --git a/lily/stem.cc b/lily/stem.cc index f17dcae0b2..13272bc71b 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -456,7 +456,7 @@ Stem::dim_callback (SCM e, SCM ax) } return ly_interval2scm (r); } - + MAKE_SCHEME_CALLBACK (Stem,brew_molecule,1); @@ -478,14 +478,39 @@ Stem::brew_molecule (SCM smob) Real dy = Staff_symbol_referencer::staff_space (me)/2.0; Real head_wid = 0; - Real angle =0.0; + /* +TODO: + + I don't really get the idea of the attachment-angle. + It seems like that you attach the Stem to the NoteHead at point + (1,tan(aa)/2), making it still nessesary to have special CENTER-STEMS + option - and if I would like to attach stem i.e. here: + + | + | + | + XXX + XXXXX + XXXXX + XXX + + That would be impossible. + Why haven't you just made ATTACHMENT-COORDINATES as a pair of reals, + with (0 . 0) meaning CENTER, (1 . 1) upper right, etc...? + +-Rune + + + */ + + Real slope =0.0; if (Grob *hed = support_head (me)) { head_wid = hed->extent (hed,X_AXIS).length (); - angle = gh_scm2double (hed->get_grob_property ("attachment-angle")); + slope = gh_scm2double (hed->get_grob_property ("attachment-slope")); } - stem_y[Direction (-d)] += d * head_wid * tan (angle)/ (2*dy); + stem_y[Direction (-d)] += d * head_wid * slope/ (2*dy); if (!invisible_b (me)) { diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 6bda7b9030..ff63c26e16 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -372,13 +372,13 @@ Translator_group::execute_single_pushpop_property (SCM prop, SCM eltprop, SCM va void Translator_group::stop_translation_timestep () { - each (&Translator::stop_translation_timestep); + each (&Translator::pre_move_processing); } void Translator_group::start_translation_timestep () { - each (&Translator::start_translation_timestep); + each (&Translator::post_move_processing); } void diff --git a/lily/translator.cc b/lily/translator.cc index 03adb249f9..6183057b85 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -82,6 +82,11 @@ Translator::now_mom () const +void +Translator::post_move_processing () +{ + start_translation_timestep (); +} void Translator::removal_processing () @@ -97,6 +102,14 @@ Translator::announces () } +void +Translator::pre_move_processing () +{ + stop_translation_timestep (); +} + + + Music_output_def * Translator::output_def_l () const { diff --git a/ly/dynamic-scripts.ly b/ly/dynamic-scripts.ly index bf6c3e74f9..94d9b9bab2 100644 --- a/ly/dynamic-scripts.ly +++ b/ly/dynamic-scripts.ly @@ -2,7 +2,7 @@ % % declare the standard dynamic identifiers. % - +ppppp = \dynamicscript #"ppppp" pppp = \dynamicscript #"pppp" ppp = \dynamicscript #"ppp" pp = \dynamicscript #"pp" diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index dac8402f06..54d0ab1b2f 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.3.141 -Entered-date: 22MAR01 +Version: 1.3.142 +Entered-date: 25MAR01 Description: @BLURB@ Keywords: music notation typesetting midi fonts engraving Author: hanwen@cs.uu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 1000k lilypond-1.3.141.tar.gz + 1000k lilypond-1.3.142.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.3.141.tar.gz + 1000k lilypond-1.3.142.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index a75b14238b..6964856c54 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,11 +1,11 @@ %define info yes Name: lilypond -Version: 1.3.141 +Version: 1.3.142 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.141.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.142.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond # Icon: lilypond-icon.gif diff --git a/mf/GNUmakefile b/mf/GNUmakefile index 18da207eec..a2a9463991 100644 --- a/mf/GNUmakefile +++ b/mf/GNUmakefile @@ -55,7 +55,9 @@ export MFINPUTS:=.:$(MFINPUTS) default: $(ALL_GEN_FILES) -$(outdir)/%.afm $(outdir)/%.tex $(outdir)/%.dep: $(outdir)/%.log +## +## todo: this also depends on .tfm, FIXME. +$(outdir)/%.afm $(outdir)/%.tex $(outdir)/%.dep: $(outdir)/%.log $(PYTHON) $(buildscript-dir)/mf-to-table.py --package=$(topdir) --outdir=$(outdir) --dep $(outdir)/$( real (in staffspace).") (grob-property-description 'spacing-procedure procedure? "procedure taking grob as argument. This is called after diff --git a/scm/interface-description.scm b/scm/interface-description.scm index 61f746d6f0..ef657ad6a4 100644 --- a/scm/interface-description.scm +++ b/scm/interface-description.scm @@ -217,7 +217,7 @@ object." 'note-head-interface "Note head" '( - style attachment-angle note-character + style attachment-slope note-character )) @@ -761,7 +761,7 @@ direction = Forced direction for all ties" (lily-interface 'percent-repeat-interface "Repeats that look like percent signs" - '(angle thickness)) + '(slope thickness)) (lily-interface 'volta-bracket-interface diff --git a/scm/translator-property-description.scm b/scm/translator-property-description.scm index cf2bd96fa5..ba69b79bd0 100644 --- a/scm/translator-property-description.scm +++ b/scm/translator-property-description.scm @@ -259,11 +259,6 @@ r1 r1*3 R1*3 \\\\property Score.skipBars= ##t r1*3 R1*3 @end example ") -(translator-property-description 'skipTypesetting boolean? - "When true, all no typesetting is done at -this moment, causing the interpretation phase to go a lot faster. This can -help with debugging large scores.") - (translator-property-description 'slurBeginAttachment symbol? "translates to the car of grob-property 'attachment of NoteColumn. See @ref{Slur}.") diff --git a/scripts/mup2ly.py b/scripts/mup2ly.py index fd71484b1c..2808dc1b65 100644 --- a/scripts/mup2ly.py +++ b/scripts/mup2ly.py @@ -795,7 +795,7 @@ class Parser: debug ('voice: ' + line) def init_context_grids (self, line): - self.parse_function = self.parse_context_grids + self.parse_function = self.parse_context_line def parse_context_grids (self, line): debug ('grids: ' + line) -- 2.39.2