]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.1.60 release/1.1.60
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 15 Jul 1999 14:29:10 +0000 (16:29 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 15 Jul 1999 14:29:10 +0000 (16:29 +0200)
51 files changed:
Documentation/index.yo
Documentation/links.yo
Documentation/ntweb/GNUmakefile
Documentation/ntweb/index.yo
Documentation/tex/lilypond-regtest.doc
NEWS
TODO
VERSION
aclocal.m4
flower/include/scalar.hh
flower/scalar.cc
input/bugs/2pianobrace.ly [deleted file]
input/bugs/enghack.ly [deleted file]
input/bugs/grace-accident.ly [deleted file]
input/bugs/hairy-grace.ly [deleted file]
input/bugs/refman-sv.ly [deleted file]
input/bugs/slur-broken.ly [deleted file]
input/test/grace.ly
input/test/slur-bug.ly [deleted file]
input/test/tie-bug.ly [deleted file]
input/test/volta.fly
lily/abbreviation-beam.cc
lily/align-note-column-engraver.cc
lily/axis-group-element.cc
lily/axis-group-engraver.cc
lily/colhpos.cc
lily/dot-column.cc
lily/encompass-info.cc
lily/include/atom.hh
lily/include/axis-group-element.hh
lily/include/col-info.hh
lily/include/lily-proto.hh
lily/include/local-key-engraver.hh
lily/include/note-head-side.hh
lily/local-key-engraver.cc
lily/lookup.cc
lily/note-head-side.cc
lily/slur.cc
lily/spring-spacer.cc
ly/engraver.ly
ly/params.ly
ly/property.ly
make/out/lelievijver.lsm
make/out/lilypond.lsm
make/out/lilypond.spec
midi2ly/main.cc
midi2ly/mudela-score.cc
midi2ly/mudela-stream.cc
scm/lily.scm
stepmake/aclocal.m4
stepmake/bin/package-zip32.sh

index 3271c33aa3ee0f3c67ef2453eb02397f9866128f..93bd590b2e4014c11bc2bfe2f75e798d08c33455 100644 (file)
@@ -39,11 +39,10 @@ nsubsect(Documentation: manuals)
 
 
 itemize(
-it()url(Mudela)(../tex/DOEXPAND(outdir)/tutorial.html)
 it()url(User documentation)(../tex/DOEXPAND(outdir)/index.html)
 it()url(Hacker documentation)(../metadoc/DOEXPAND(outdir)/index.html)
 it()url(Manual pages)(../man/DOEXPAND(outdir)/index.html)
-it()url(Bibliography)(../bibliography/DOEXPAND(outdir)/vocabulary.html)
+it()url(Bibliography)(../bibliography/DOEXPAND(outdir)/)
 it()url(Musical vocabulary)(../tex/DOEXPAND(outdir)/vocabulary.html)
 )
 
index cf5797268426ebaf00b39c63542e61bcdb44aa2f..820531084a53e755ec82e58d75d73a346cd97471 100644 (file)
@@ -83,6 +83,8 @@ includefile(mail.yo)
 sect(Backlinks)
 
 description(
+dit(lurl(http://sca.uwaterloo.ca/Mutopia/))
+       Mutopia project (under construction).
 dit(lurl(http://www.ssc.com/linux/))
     The Number One Free Operating System Kernel: Linux 
 dit(lurl( http://sound.condorow.net))
index 4a25d2eafa670ec7958b712378f72f933b5ef9e2..d88681c0f4d622c9cf9b76f5425c6b01391f5a73 100644 (file)
@@ -2,6 +2,7 @@ depth = ../..
 
 STEPMAKE_TEMPLATES=documentation
 TO_TOP_FILES=$(addprefix $(outdir)/, $(README_TOP_FILES))
+PLAIN_FILES=angels.ly guile.patch
 
 
 include $(depth)/make/stepmake.make 
@@ -16,5 +17,8 @@ $(outdir)/%.html: %.yo
        --index=http://www.cs.ruu.nl/people/hanwen/lilypond/index.html \
        --news=$(depth)/NEWS $@
 
+dist-plain: 
+       cp $(PLAIN_FILES) $(out-dir)
+
 local-WWW:
 
index 1c7f252385b7a76d1a63b588e3698f4cc40b358e..5d6701b7e830d9f583e0f43750907f4fc6fce7fb 100644 (file)
@@ -18,6 +18,40 @@ clearpage()
 
 subsect(NEWS) label(news)
 
+description(
+ dit(BUG FIXES)
+  itemize(
+   it() Error: Python path: Python installation is required nl()
+       Users reported problems with the installer finding the python
+       path for some versions of Python namely 1.5.  I am using a
+       slightly different approach so that problem should be solved.
+       Thanks to Mats Bengtsson and Wolfgang Fischler reporting and
+       helping with this issue.
+   it() Unable to find lilyponddefs.tex nl()
+       This was due to using version version 1.07 of MiKTeX.  I have
+       add known working versions for all of the required software
+       packages, per Mats suggestion. See link(Required
+       Packages)(packages). 
+  )
+)
+
+description(
+ dit(NOTES)
+  itemize(  
+   it() Please use the Add/Remove program control panel entry to
+        unistall your current version of Lilypond before you attempt to
+       install this one.
+
+   it() If you are upgrading from a previous version of lilypond you will most
+       likely need to flush your font cache.  I generally just toss
+       file(D:\localtexmf\fonts\tfm\public\ehrhardt) and
+       file(D:\localtexmf\fonts\pk\ljfour\public\ehrhardt) in the Recyle
+       Bin. Your local font directory may be different, please refer to your
+       local installation of code(TeX).
+ )
+)
+
+
 The FAT16, FAT32, and NTFS file system problems have been corrected.
 I have tested various installations that are known to be operational.
 The following configurations that have been tested. 
@@ -85,15 +119,9 @@ itemize(
     it()convert-mudela
     it()mudela-book
     it()lilypond
-    it()mi2mu
+    it()midi2ly
 )
 
-If you are upgrading from a previous version of lilypond you will most
-likely need to flush your font cache.  I generally just toss
-file(D:\localtexmf\fonts\tfm\public\ehrhardt) and
-file(D:\localtexmf\fonts\pk\ljfour\public\ehrhardt) in the Recyle
-Bin. Your local font directory may be different, please refer to your
-local installation of code(TeX).
 
 I have also converted the Manual Pages for the above tools to HTML for
 easy browsing.  This release has been tested on Windows NT 4.0sp3 and
@@ -111,7 +139,7 @@ link(Back to top)(contents)
 clearpage()
 
 
-subsect(Required packages) label(packages)
+subsect(Required Packages) label(packages)
 
 LilyPond uses the code(TeX) package as its rendering engine. code(TeX)
 represents the state-of-the-art in computer typesetting. It is used to
@@ -127,9 +155,12 @@ Gsview is used to display and print the music scores created by
 LilyPond.
 
 itemize(
-    it()url(code(MiKTeX))(http://www.snafu.de/~cschenk/miktex/)
-    it()url(code(Python))(http://www.python.org)
-    it()url(code(gsview))(http://www.cs.wisc.edu/~ghost/gsview/index.html)
+    it()url(code(MiKTeX))(http://www.snafu.de/~cschenk/miktex/). Versions
+        1.10b, 1.11, and 1.20b are known to work.
+    it()url(code(Python))(http://www.python.org). Version 1.5.1 and
+       possibly 1.5 work.
+    it()url(code(gsview))(http://www.cs.wisc.edu/~ghost/gsview/index.html). 
+       Version 5.10 is known to work.
 )
 
 link(Back to top)(contents)
index 2b5d51e917426c854eee348a79d6cc63da2b5b32..9f73e72e10ad05c8742ef8840995e252825f264b 100644 (file)
@@ -60,9 +60,8 @@ Slurs that start within a grace section, but aren't ended are attached
 to the next normal note.  Grace notes have zero duration.  If there
 are tuplets, the grace notes won't be under the brace.  Grace notes
 can have accidentals, but they are (currently) spaced at a fixed
-distance.
-
-
+distance.  Grace notes (of course) come before the accidentals of the
+main note.  Grace notes can also be positioned after the main note.
 
 \mudelafile{grace.ly}
 
@@ -203,9 +202,10 @@ convoluted way, so this is fragile as well.
 
 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, 3/4, 4/4, 6/4, 9/4, 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.
+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. 
 
 \mudelafile{time.fly}
 
diff --git a/NEWS b/NEWS
index c722b2bafaa1b74045eaa3db66242d417c771b4e..792499e81e7505583d3fc9f2ea9284bb322f4ace 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,30 @@
+pl 59.uu1
+       - papervar loose_column_distance
+       - scripts don't collide.
+       - midi2ly outputs \context iso \type
+
+pl 59.jbr1
+        - lily/colhpos.cc: fixed typo
+        - Documentation/ntweb: Updated News and added all the files 
+          associated with Windows Distribution web page.
+        - stepmake/bin/package-zip32.sh: added the ntweb page to formated
+          distribution.
+
+pl 59.jcn1
+       - bfs: slur damping
+       - papervar slur_interstaff_snap_to_stem
+
+pl 59.hwn1
+       - \property graceAlignPosition : put grace notes after main note.
+       - moved pianobrace stuff into Lookup
+       - moved Local_key_engraver out of Voice context, and
+acknowledge Grace_align_items.  Solves tie + accidental problem.
+
+pl 59.mb1
+       - Some small clean-ups and bug fixes
+
+***********
+
 pl 58.uu1
        - experimental pdftex support, courtesy Stephen Peters.
        - --version support
@@ -5,7 +32,7 @@ pl 58.uu1
        - only stretch the extra space after prefatory matter, not the
 entire width of prefatory matter.
        - standardise(d) switches:-d for debug, -M for Make deps, -m for midi-only.
-       - bf: non_musical_space_strength  now works. Set to 8 (-> Strong! )
+       - bf: papervar non_musical_space_strength  now works. Set to 8 (-> Strong! )
        - bf: space after time_sig.
        - bf: decrescendi.
        - bf: barlines on voltas
diff --git a/TODO b/TODO
index 304e29b7fe2b659c0718785ee6dbeb20cb5a43bb..8fb1eb1a4bcfaa29b30a705bac7a6a8d7d2a243a 100644 (file)
--- a/TODO
+++ b/TODO
@@ -15,37 +15,12 @@ lily
 
 [-> leading are the lead strips between the sticks (lines) of
 typeface. ie. leading is vertical space  --hwn]
-
+. * Rewrite \rhythm to be during interpreting.
 . * move \version check to lexer.ll
 . * junk delayed spanner breaking.
 . * check dangling_scm_sym working.
-. * revise pianobrace to put font stuff into Lookup
 . * spacing of accidentals
-. * restorations & repeats
-. * \score {
-  \context Staff \notes {
-c'2 fis'~
-% accidential after bar
-fis'4 % accidential should be here
-fis' g'2
-\repeat semi 2 {
-c' c'
-}
-\alternative {
-% no bars at the beginning of alternative 1 and at the end of alternative 2
-{
-d' d'
-}
-{
-c'1 c'
-}
-}
-d'4_"normal" d' \times 2/3 {e' e' e'}
-% no triplet bracket in \tiny
-\tiny d'4_"tiny" d' \times 2/3 {e' e' e'}
-  }
-}
-
+. * key restorations & repeats
 . * 
 So how do I do what I want to do?
 
@@ -61,48 +36,13 @@ In bar 27, there's a crescendo that's supposed to start at the start
 of the grace notes and extend to the note after the grace notes.
 
 How do I specify these?
-
-How can I control whether a grace note takes its time from the note
-before or the note after it (for the purposes of alignment with
-lyrics)?
-. *  / distance after 4/4 \key.
 . * spanners from grace to  normal ctxt
 . * Glen:
-1. I got a vertical line where I asked for a decrescendo.
-
-2. Slurs -- good to see some spacing between slurs and lyrics, but not
-there's several times too much space.
-
-3. Slurs with wrong slopes. Where a slur between two notes goes from the
-head of one to the stem of another it can have the wrong slope:
-         |   ___
-         |  /   \
-         | /    |
-        x|/     |
-                |
-               x|
-   The music goes down but the slur goes up (or vice versa). This looks
-wrong.
-
-4. Lyrics and \fermata collide. I know that the TODO has lyrics and scripts
-colliding; I'm just including it here because it's really an issue for me
-with fermata. Other scripts aren't a problem for me, but sometimes I need
-fermata on both sides of the staff (when sop and alto hold different notes,
-for example). In fact it's not just scripts and lyrics: In a choirstaff,
-scripts above the bass clef collide with scripts below the treble clef.
 
 5. Sometimes lyrics extend past the right end of the staff. I guess that
 this is a similar problem (if not another symptom of the same problem) as
 one of the spacing bugs mentioned in the TODO.
-
-6. The bar line at the beginning of an \alternative section has disappeared
-altogether.
-
-7. When it's a tight fit to get all the notes in the first line, the first
-note collides with the time signature. Is this the same as one of the
-spacing bugs mentioned in the TODO?
-
-.* 4.  Lyrics and grace sections don't go too well together.
+. * 4.  Lyrics and grace sections don't go too well together.
         The words are aligned with the main note, not the start of the
         grace note.  This is usually wrong, but is sometimes right.
 . * Auto_beam debugging output (waarom/wanneer heb jij die weggehaald?)
@@ -172,7 +112,6 @@ following example.
 . * add new glyphs to font.ly
 . * formatting of input stuff. 
 .  * deps for ly2dvi
-. * decide wether to junk _ in lyrics. 
 . * indent = 0.0 with linewidth=-1.0
 . * collisions & accidentals.
 . * auto-beaming in input/test/spacing.ly:
@@ -191,11 +130,13 @@ invloed hebben op beam-creatie, stopt toch gewoon stokken in?
 . * behavior of  "that the obvious solution
 \lyrics { foo1*4 __ _ }" is unintuitive.
 . * Lyrics and scripts collide.
-. * grace_align_item -> stackingdir = left, weird placement.
 . * filenames : junk lily.x 
 
 .* Cleanups needed
 . * \$ and $ identifier syntax in examples.
+. * Junk ghost positioning objects eg, Script leans on  Staffside
+    leans on Staff.
+
 . * bracket ps code.
 . * Key_engraver, Local_key_item
 . * Think of comprehensive solution for "if (grace_b == self_grace_b_)"
@@ -235,7 +176,6 @@ invloed hebben op beam-creatie, stopt toch gewoon stokken in?
 .  * make wide_spanner_engraver (line_group_spanner, staff_symbol)
 . * store req -> element, element -> element causes for warnings
 . * compulsory hshift
-. * dots & rest collisions?
 . * 
 My wish list for lyrics. I dream of a time when I will have enough time to
 become familiar enough with the source code to be able to implement some of
@@ -314,18 +254,14 @@ repeated section with different words for each repeat.
 \cadenza , \meter,  should all be \properties
 . * fix singleStaffBracket
 . * rename
-.  * measure -> bar
 .  * abbreviation-beam -> (measured/unmeasured) tremolo
 .  * partial -> anacrouse
-. * robustify Beam (in case of no stems, 32nd notes)
 . * move paper vars into engraver properties
 . * check for groff / troff/ nroff et
 . * more intelligent file searching
 . * disable spaces in TeX stuff
 . * handle ^C for tmp/file creation.
 . * make LilyPond RPM fully relocatable
-. * the warning about the negative slur/tie length appears twice
-which is irritating.
 . * better hshift (dots, distance, head dependent)
 . * clefs (AG): The "8" should appear closer to the actual clef,
 touching it.
diff --git a/VERSION b/VERSION
index 2e50a6e99631d6db00589ca345819b4363d360d8..9a194ed92eb3783b57067b793031a61980a46edb 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=1
-PATCH_LEVEL=59
+PATCH_LEVEL=60
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
index caee78ed689c2ec3ef1c521d12b1712ad6bc8c1c..a86a37f121a2a8efd65d378d56120cb9eeb6beb9 100644 (file)
@@ -4,6 +4,8 @@ dnl WARNING WARNING WARNING WARNING
 dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
 dnl WARNING WARNING WARNING WARNING
 dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
+dnl WARNING WARNING WARNING WARNING
+dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
 dnl aclocal.m4   -*-shell-script-*-
 dnl StepMake subroutines for configure.in
 
index e2750c9e1aa7a4ce09e83f06b3ce23953c47eeae..e76841b561099b16b6e27f358702461e9dbc4a9f 100644 (file)
@@ -26,6 +26,8 @@ struct Scalar : public String
   operator Rational();
   Scalar() {}
   bool isnum_b() const;
+  bool isdir_b() const;
+  bool isint_b() const;
   operator Real();
   operator int();
   bool to_bool () const;
index c0ef60d744c311d88a6b462aff3da26389acc607..6e97eedf8f08dc0d1fe46452a0d12b71669fe1ee 100644 (file)
@@ -35,6 +35,19 @@ Scalar::to_rat () const
   return Rational (s1.value_i (), s2.value_i ());
 }
 
+bool
+Scalar::isdir_b () const
+{
+  int conv = length_i ();
+  if (conv)
+    {
+      long l =0;
+      conv = sscanf (strh_.ch_C (), "%ld", &l);
+      conv = conv && (l >= -1 && l <= 1);
+    }
+  return conv;
+}
+
 bool
 Scalar::isnum_b () const
 {
diff --git a/input/bugs/2pianobrace.ly b/input/bugs/2pianobrace.ly
deleted file mode 100644 (file)
index a5c7cb4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-\score { \notes {
-\context StaffGroup <\context PianoStaff = PA< c4 d4 >
- \context PianoStaff =PB < c4 d4 >
->}
-}
-
diff --git a/input/bugs/enghack.ly b/input/bugs/enghack.ly
deleted file mode 100644 (file)
index 2be4064..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-\score {
-       \notes {
-         c'\longa c'\breve  
-         c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 c'2. c'8. c'16
-         }
-         \paper {
-                linewidth = -1.0;
-                \translator { \type "Score_engraver";
-                            \name "Score";
-                            \consists "Note_heads_engraver";
-                            \consists "Stem_engraver";
-                            \consists "Rhythmic_column_engraver";
-         }}}
-         
diff --git a/input/bugs/grace-accident.ly b/input/bugs/grace-accident.ly
deleted file mode 100644 (file)
index 5d2cd4c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-%grace-accident.ly
-\score{
-       \context Staff=foo \notes\relative c''{
-%              c8 % remove line to dump core
-               \grace { cis8 dis } e,4
-       }
-}
diff --git a/input/bugs/hairy-grace.ly b/input/bugs/hairy-grace.ly
deleted file mode 100644 (file)
index e7a3af1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-%hairy grace stuff:
-
-\score{
-       \context Staff=foo \notes\relative c''{
-               % two auto beams 
-               d4 \grace c8 d8 \grace { d16 c16 } d8 c2
-               \property Voice.verticalDirection = 1
-               % colliding beams
-               d4 \grace c8 d8 \grace { d16 c16 } d8 c2
-               \property Voice.verticalDirection = 0
-               % leger lines
-               d,,4 \grace c8 d8 \grace { d16 c16 } d8 c2
-       }
-}
diff --git a/input/bugs/refman-sv.ly b/input/bugs/refman-sv.ly
deleted file mode 100644 (file)
index a145051..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-\score{\notes{
-c'' \< \! c''   d'' \decr e'' \rced 
-< f''1 {s4 \< \! s4 \> \! s2 } >
-}}
diff --git a/input/bugs/slur-broken.ly b/input/bugs/slur-broken.ly
deleted file mode 100644 (file)
index 7cf4645..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-shortlong = \notes{
-       c4()c( c c  |
-       c c c c |
-       c c c c |
-       \break
-       c c c )c |
-       c c c c |
-       c c c c |
-       c c c c |
-       c c c c |
-}
-
-\score{
-       \shortlong
-       \paper{ 
-             indent = 0.0\pt;
-               % linewidth= 30.\mm;
-               castingalgorithm = \Wordwrap;
-       }
-}
index 3c8c8c9030c47a99bd34d81144d4a96c14403607..2f2f4a71e3a59958e3817c65f767848451251420 100644 (file)
@@ -1,10 +1,12 @@
 
 \score {\notes \context Voice = VA \relative c'' {
        \grace c8 c4
-       \grace { [c32 cis32] } c4
-       \grace { [c32 c32] } \times 2/3 { [c8 c c] }    
+       \grace { [c32 cis32] } gis4
+       \grace { [cis32 dis32] } e4
+       \grace { [c32 d] }\times 2/3 { [c8 c c] }
         \grace { [b32 ( c32] } ) c4
-       \grace c16 [c8 c8]
+       \grace  c16 [c8 c8]
+       \grace  { \property Grace.graceAlignPosition = \right c16} c4
 }
 \paper {linewidth = -1.;}
 }
diff --git a/input/test/slur-bug.ly b/input/test/slur-bug.ly
deleted file mode 100644 (file)
index ff28f8d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-\version "1.1.52";
-
-% bug
-% excentric slur can't handle this ...
-\score{
-       \notes{
-               \stemdown 
-               \times 4/5 {c8( c f,, c c} c c c )c |
-       }
-}
diff --git a/input/test/tie-bug.ly b/input/test/tie-bug.ly
deleted file mode 100644 (file)
index f521510..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-\version "1.1.52";
-
-
-%  middle tie is wrong
-\score{
-       \notes\relative c'{
-       {               <c4 e g  > ~ <d f a>
-       }
-}}
-
index 9386a436694a673e4984c8b3dd3e9dbcc079c472..86a57ed0d51f14160be6d357919970277a9e6a8e 100644 (file)
@@ -3,16 +3,15 @@
 
 c' d e f |
 \repeat semi 2 { g a b c }
-\alternative { { c b a g a g a g} { f e d c } } \break
-%c, d e f |  % Assertion failure if this line is removed!!
+\alternative { { c b a g a g a g} { f e d c } } 
 \repeat semi 2 { g a b c }
-\alternative { { c b a g \break a g a g} { f e d c } } \break
+\alternative { { c b a g \break a g a g} { f e d c } } 
 c, d e f |
 \repeat semi 2 { g a b c }
-\alternative { { c b a g \break a g a g \break a b a b } { f e d c } } \break
+\alternative { { c b a g \break a g a g \break a b a b } { f e d c } }
 c, d e f |
 \repeat semi 2 { g a b c }
-\alternative { { c b a g } { f e d c \break a g a g} } \break
+\alternative { { c b a g } { f e d c \break a g a g} }
 c, d e f |
 \repeat semi 2 { g a b c }
 \alternative { { c b a g a g a g} { f e d c \bar "|.";} }
index b0307f2e6f07fcf649b3aca969eca254e6ef0a51..cc10968278894aac61cca7604f58d11b0a54b489 100644 (file)
@@ -1,3 +1,4 @@
+#if 0
 /*
   abbreviation-beam.cc -- implement Abbreviation_beam
 
@@ -58,3 +59,4 @@ Abbreviation_beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
    */
   return Beam::stem_beams (here, next, prev);
 }
+#endif
index 4e00da684007c3774cd6a761246147e155c5a946..70d08a62e1a2668bd47ad70f65917dc91a80a28e 100644 (file)
@@ -18,7 +18,7 @@
  */
 class Align_note_column_engraver: public Engraver
 {
-  Axis_align_item * align_item_p_;
+  Grace_align_item * align_item_p_;
   Note_column * now_column_l_;
   Local_key_item * accidental_l_;
 
@@ -50,6 +50,12 @@ Align_note_column_engraver::do_creation_processing ()
 void
 Align_note_column_engraver::do_removal_processing ()
 {
+  Scalar al = get_property ("graceAlignPosition", 0);
+  if (al.isdir_b ())
+    {
+      align_item_p_->notehead_align_dir_ = int (al);
+    }
+  
   typeset_element (align_item_p_);
   align_item_p_ =0;
 }
index d843dfbbbbdd825092eff2cd2a5eb370db1628fd..0c5322bec7f1e7ea592c50816cf06875356a97b1 100644 (file)
@@ -9,12 +9,11 @@
 #include "axis-group-element.hh"
 #include "graphical-axis-group.hh"
 
-
-
 Link_array<Score_element>
 Axis_group_element::get_extra_dependencies() const
 {
-  return elem_l_arr ();
+  Link_array<Score_element> e(elem_l_arr ());
+  return e;
 }
 
 Link_array<Score_element>
@@ -35,6 +34,7 @@ Axis_group_element::get_children ()
 {
   Link_array<Score_element> childs;
   Link_array<Score_element> elems = elem_l_arr ();
+  elems.concat (extra_elems_ );
   for (int i=0; i < elems.size (); i++) 
     {
       Score_element* e = elems[i];
@@ -72,21 +72,71 @@ Axis_group_element::do_substitute_element_pointer (Score_element*o,
                                                   Score_element*n)
 {
   int i;
-  while ((i = elem_l_arr_.find_i (o))>=0) 
-    if (n) 
+  Graphical_element * go = o;
+  Graphical_element * gn = n;  
+  
+  while ((i = elem_l_arr_.find_i (go))>=0)
+    elem_l_arr_.substitute (go,gn);
+#if 0
+  if (n) 
       elem_l_arr_[i] = n;
     else
       elem_l_arr_.del (i);
+#endif
+  extra_elems_.substitute (o, n);
+}
+
+Interval
+Axis_group_element::extra_extent (Axis a )const
+{
+  Interval g;
+  for (int i=0;  i < extra_elems_.size (); i++)
+    {
+      Interval ge = extra_elems_[i]->extent (a);
+      ge += extra_elems_[i]->relative_coordinate (dim_cache_[a], a);
+      g.unite (ge);
+    }
+  return g;
 }
 
 Interval
 Axis_group_element::do_height () const
 {
-  return Graphical_axis_group::extent (Y_AXIS);
+  Interval gag = Graphical_axis_group::extent (Y_AXIS);
+  gag.unite (extra_extent (Y_AXIS));
+  return gag;
 }
 
 Interval
 Axis_group_element::do_width () const
 {
-  return Graphical_axis_group::extent (X_AXIS);
+  Interval gag = Graphical_axis_group::extent (X_AXIS);
+  gag.unite (extra_extent (X_AXIS));
+  return gag;
+}
+
+
+/*
+  UGH.
+ */
+void
+Axis_group_element::add_extra_element (Score_element *e)
+{
+  Link_array<Score_element> se;
+  while (e && e != this)
+    {
+      se.push (e);
+      e = dynamic_cast<Score_element*> (e->dim_cache_[Y_AXIS]->parent_l_ ? e->dim_cache_[Y_AXIS]->parent_l_->element_l() : 0);
+    }
+
+  if (1)                       // e == this)
+    {
+      for (int i=0; i < se.size( ); i++) 
+       {
+         extra_elems_.push (se[i]);
+         add_dependency (se[i]);
+         se[i]->set_elt_property (ly_symbol ("Axis_group_element::add_extra_element"), SCM_BOOL_T); // UGH GUH.
+       }
+      
+    }
 }
index a3bf9111fd60ae623368bf889fb73463c407d813..e13dcdd5182aaf393ddb9e8fb18463778749514d 100644 (file)
@@ -40,10 +40,7 @@ Axis_group_engraver::do_removal_processing ()
 void
 Axis_group_engraver::acknowledge_element (Score_element_info i)
 {
-  if (!i.elem_l_->parent_l (Y_AXIS))
-    {
-      elts_.push (i.elem_l_);
-    }
+  elts_.push (i.elem_l_);
 }
 
 void
@@ -53,6 +50,12 @@ Axis_group_engraver::process_acknowledged ()
     {
       if (!elts_[i]->parent_l (Y_AXIS))
        staffline_p_->add_element (elts_[i]);
+
+      /* UGH UGH UGH */
+      else if (elts_[i]->get_elt_property (ly_symbol ("Axis_group_element::add_extra_element")) == SCM_BOOL_F)
+       {
+         staffline_p_->add_extra_element (elts_[i]);
+       }
     }
   elts_.clear ();
 }
index 8d82c2c06d1f58c2360e0f47c6af8c4c0e75d39f..f23646cb019b9bfb7a8f15e5dbd2e97fc229ecf1 100644 (file)
@@ -45,7 +45,7 @@ void
 Column_x_positions::OK() const
 {
 #ifndef NDEBUG
-  assert (config.size() == cols.size ());
+  assert (config_.size() == cols_.size ());
 #endif
 }
 
index 4bcaff4a67f69c2f2102f252b3fd52c019de3243..56ffe94762cbf597796c28d97efc3575aecdd042 100644 (file)
@@ -51,7 +51,7 @@ Dot_column::do_pre_processing ()
 
 Dot_column::Dot_column ()
 {
-  align_dir_ = RIGHT;
+  notehead_align_dir_ = RIGHT;
   set_axes(X_AXIS,X_AXIS);
 }
 
index b5fbcf56fee0af6136a908a75310ca618b182a7c..323fc20a9c5c8295bd0d38cae4cf5ace91c7a94c 100644 (file)
@@ -31,6 +31,7 @@ Encompass_info::Encompass_info (Note_column const* note_column, Direction dir, S
     {
       warning (_ ("Slur over rest?"));
       o_[X_AXIS] = note_column->hpos_f ();
+      o_[Y_AXIS] = note_column->extent (Y_AXIS)[dir];
       return; 
     }
   
@@ -42,9 +43,14 @@ Encompass_info::Encompass_info (Note_column const* note_column, Direction dir, S
 
   o_[X_AXIS] -= 0.5 * stem_l->dir_ * note_column->extent (X_AXIS).length ();
 
-  if (stem_l->dir_ == dir)
+  if ((stem_l->dir_ == dir)
+      && !stem_l->extent (Y_AXIS).empty_b ())
     {
       o_[Y_AXIS] = stem_l->extent (Y_AXIS)[dir];
+      // URG URG.
+      // some slur in choral.ly returns -inf here
+      if (abs (o_[Y_AXIS]) > 1000)
+       o_[Y_AXIS] = 0;
     }
   else
     {
index ab67d0881d309b994746ad25406051b8abdac8aa..9f8c4ef0973530709709264d243397b8580f76f3 100644 (file)
@@ -24,6 +24,10 @@ public:
 representing a musical notation symbol.  */
   Protected_scm func_;
   Protected_scm font_;
+
+  /*
+    TODO: move this into the font_ field.
+   */
   Protected_scm magn_;
 };
 
index d57069b2560267299d224a2b602d5c8de4c4264a..c3221a0ec208e669da0c1782d4b56960854e6b8b 100644 (file)
 class Axis_group_element : public virtual Score_element,
                           public virtual Graphical_axis_group
 {
+  Link_array<Score_element> extra_elems_;
+
 protected:
   virtual void do_print() const;
   virtual Link_array<Score_element> get_extra_dependencies() const;
 
-  virtual Interval do_height () const;
-  virtual Interval do_width () const;  
-public:
   virtual void do_substitute_element_pointer (Score_element*,Score_element*);
   virtual Link_array<Score_element> elem_l_arr() const;
+  
+  virtual Interval do_height () const;
+  virtual Interval do_width () const;
+
+
+Interval extra_extent (Axis a ) const;
+  
+public:
+  /**
+     add an element that only influences size, but does not have  X/Y parent
+     relationship with THIS.
+  */
+  void add_extra_element (Score_element*);
+
+
   Axis_group_element ();
   virtual void set_axes (Axis,Axis);
 
index 8aea10dbc4ace847f35458621573d4214f026c15..e5d93f4a57b88f23505d7af2f8b3a77b3062828f 100644 (file)
@@ -21,13 +21,6 @@ struct Spacer_rod {
   void print () const;
 };
 
-struct Spacer_spring
-{
-  Real distance_f_;
-  Real hooke_f_;
-  Real other_idx_;
-};
-
 /// helper struct for #Spacing_problem#
 struct Column_info {
   Paper_column *pcol_l_;
@@ -39,8 +32,7 @@ struct Column_info {
   bool ugh_b_;         
 
   Drul_array< Array<Spacer_rod> > rods_;
-  //  Drul_array< Array<Spacer_spring> > springs_;  
-  
+
   Column_info();
   Column_info (Paper_column *,Real const *);
 
index e702c3334bec48ddb06a5a507e22d19d7e52a422..e360dbfa6255cb09ebbb9f7357660f4891165d0f 100644 (file)
 #define LILY_PROTO_HH
 #include "proto.hh"
 
-struct Absolute_dynamic_req;
-struct Stem_tremolo;
+
+
 struct Abbreviation_beam; 
-struct Abbreviation_beam_req;
 struct Abbreviation_beam_engraver;
-struct Tremolo_req;
-struct Adobe_font_metric;
+struct Abbreviation_beam_req;
+struct Absolute_dynamic_req;
 struct Adobe_font_char_metric;
+struct Adobe_font_metric;
+struct Align_element;
 struct All_font_metrics;
 struct Articulation_req;
 struct Atom;
+struct Audio_column;
 struct Audio_element;
 struct Audio_element_info;
-struct Audio_column;
-struct Audio_item;
 struct Audio_instrument;
+struct Audio_item;
 struct Audio_key;
-struct Audio_text;
-struct Audio_time_signature;
 struct Audio_note;
 struct Audio_note_off;
-struct Audio_tie;
 struct Audio_staff;
 struct Audio_tempo;
+struct Audio_text;
+struct Audio_tie;
+struct Audio_time_signature;
 struct Auto_beam_engraver;
-struct Axis_group_element;
-struct Axis_group_spanner;
-struct Axis_group_item;
 struct Axis_align_item;
 struct Axis_group;
+struct Axis_group_element;
+struct Axis_group_item;
+struct Axis_group_spanner;
 struct Bar;
-struct Bar_column_engraver;
 struct Bar_column;
+struct Bar_column_engraver;
 struct Bar_engraver;
 struct Bar_req;
 struct Barcheck_req;
@@ -56,30 +57,28 @@ struct Box;
 struct Bracket_req;
 struct Break_align_item;
 struct Break_req;
+struct CHyphen_req;
 struct Cadenza_req;
 struct Change_iterator;
 struct Change_translator;
 struct Chord;
 struct Chord_name_engraver;
-struct CHyphen_req;
 struct Clef_change_req;
-struct Clef_item;
 struct Clef_engraver;
+struct Clef_item;
 struct Clef_performer;
-struct Column_x_positions;
-struct Column_info;
-struct Column_spring;
 struct Collision;
 struct Collision_engraver;
+struct Column_info;
+struct Column_spring;
+struct Column_x_positions;
 struct Command_req;
 struct Command_script_req;
 struct Command_tie_engraver;
-struct Time_scaled_music;
-struct Time_scaled_music_iterator;
 struct Crescendo ;
-struct Dots;
-struct Dot_column;
 struct Directional_spanner;
+struct Dot_column;
+struct Dots;
 struct Durational_req;
 struct Dynamic;
 struct Dynamic_req;
@@ -89,27 +88,23 @@ struct Engraver;
 struct Engraver_group_engraver;
 struct Extender;
 struct Extender_req;
-struct Script;
-struct Script_req;
-struct Staff_side_item;
-struct Text_item;
+struct Folded_repeat_iterator;
 struct General_script_def;
-struct Graphical_element;
-
-struct Graphical_axis_group;
 struct Global_translator;
-struct Hara_kiri_line_group_engraver;
+struct Grace_align_item;
+struct Graphical_axis_group;
+struct Graphical_element;
 struct Hara_kiri_group_spanner;
+struct Hara_kiri_line_group_engraver;
 struct Head_column;
-
 struct Idealspacing;
 struct Identifier;
 struct Input_file;
 struct Item;
 struct Key;
 struct Key_change_req;
-struct Key_item;
 struct Key_engraver;
+struct Key_item;
 struct Key_performer;
 struct Keyword;
 struct Keyword_table;
@@ -120,8 +115,8 @@ struct Line_of_staff;
 struct Line_spacer;
 struct Linestaff;
 struct Local_key;
-struct Local_key_item;
 struct Local_key_engraver;
+struct Local_key_item;
 struct Lookup;
 struct Lyric_item;
 struct Lyric_req;
@@ -133,7 +128,6 @@ struct Midi_duration;
 struct Midi_header;
 struct Midi_item;
 struct Midi_key;
-struct Midi_time_signature;
 struct Midi_note;
 struct Midi_note_event;
 struct Midi_note_off;
@@ -141,38 +135,36 @@ struct Midi_output;
 struct Midi_score;
 struct Midi_stream;
 struct Midi_tempo;
+struct Midi_time_signature;
 struct Midi_track;
 struct Midi_walker;
 struct Mixed_qp;
 struct Molecule;
 struct Multi_measure_rest;
-struct Multi_measure_rest_req;
 struct Multi_measure_rest_engraver;
+struct Multi_measure_rest_req;
 struct Music;
 struct Music_iterator;
-struct Musical_req;
-struct Musical_span_req;
-struct Musical_script_req;
 struct Music_list;
 struct Music_list_iterator;
 struct Music_output;
 struct Music_output_def;
-struct Musical_pitch;
 struct Music_sequence;
 struct Music_wrapper;
 struct Music_wrapper_iterator;
+struct Musical_pitch;
+struct Musical_req;
+struct Musical_script_req;
+struct Musical_span_req;
 struct My_lily_lexer;
 struct My_lily_parser;
 struct Note_column;
 struct Note_column_engraver;
-struct Note_performer;
-struct Note_req;
 struct Note_head;
 struct Note_head_engraver;
+struct Note_performer;
+struct Note_req;
 struct Notename_table;
-struct Repeated_music;
-struct Unfolded_repeat_iterator;
-struct Folded_repeat_iterator;
 struct Offset;
 struct Paper_column;
 struct Paper_def;
@@ -182,34 +174,38 @@ struct Paper_stream;
 struct Partial_measure_req;
 struct Performance;
 struct Performer;
-struct Tuplet_spanner;
-struct Piano_brace;
 struct Performer;
 struct Performer_group_performer;
+struct Piano_brace;
 struct Property_iterator;
 struct Rational;
-struct Request;
-struct Request_column;
-struct Relative_octave_music;
 struct Re_rhythmed_music;
+struct Relative_octave_music;
 struct Repeat_engraver;
 struct Repeated_music;
+struct Repeated_music;
 struct Repeated_music_iterator;
+struct Request;
+struct Request_chord;
+struct Request_column;
 struct Rest;
 struct Rest_collision;
 struct Rest_collision_engraver;
 struct Rest_req;
 struct Rhythmic_grouping;
-struct Rhythmic_head;
 struct Rhythmic_grouping_req;
+struct Rhythmic_head;
 struct Rhythmic_req;
 struct Scope;
-struct Separating_group_spanner;
 struct Score;
 struct Score_column;
 struct Score_element;
 struct Score_element_info;
 struct Score_performer;
+struct Script;
+struct Script_req;
+struct Separating_group_spanner;
+struct Sequential_music;
 struct Simple_music;
 struct Simultaneous_music;
 struct Single_malt_grouping_item;
@@ -218,54 +214,58 @@ struct Slur;
 struct Slur_engraver;
 struct Spacing_spanner;
 struct Span_bar;
-struct Span_score_bar;
 struct Span_req;
+struct Span_score_bar;
 struct Spanner;
 struct Spring;
 struct Spring_spacer;
 struct Staff_bracket;
 struct Staff_performer;
 struct Staff_side;
+struct Staff_side_item;
 struct Staff_symbol;
 struct Stem;
 struct Stem_beam_engraver;
 struct Stem_req;
+struct Stem_tremolo;
 struct String;
+struct Super_element;
 struct Symtable;
 struct Symtables;
-struct Super_element;
-struct Translation_property;
 struct Tempo_req;
 struct Tex_font_char_metric;
 struct Tex_font_metric;
 struct Tex_font_metric_reader;
 struct Text_def;
+struct Text_engraver;
 struct Text_gob;
 struct Text_item ;
-struct Text_engraver;
+struct Text_item;
 struct Text_req;
 struct Text_spanner;
 struct Tie;
 struct Tie_engraver;
 struct Tie_req;
 struct Time_description;
+struct Time_scaled_music;
+struct Time_scaled_music_iterator;
 struct Time_signature;
 struct Time_signature_change_req;
 struct Time_signature_engraver;
 struct Time_signature_performer;
+struct Timing_engraver;
+struct Timing_req;
+struct Timing_translator;
 struct Tonic_req;
+struct Translation_property;
 struct Translator;
 struct Translator_group;
-struct Timing_req;
-struct Timing_translator;
-struct Timing_engraver;
+struct Tremolo_req;
+struct Tuplet_spanner;
+struct Unfolded_repeat_iterator;
 struct Vertical_brace;
 struct Vertical_spanner;
-
 struct Volta_spanner;
-struct Align_element;
-struct Sequential_music;
-struct Request_chord;
 
 typedef Rational Moment;
 typedef Scope Header;
index bba7b4cadd8e7a9abd1803c73f1cd5deec565602..260496bd0ca8a86c22c85308c18c7f99aaa08f15 100644 (file)
 #include "engraver.hh"
 #include "key.hh"
 #include "parray.hh"
-
+/**
+   Make accidentals.  Catches note heads, ties and notices key-change
+   events.  Due to interaction with ties (which don't come together
+   with note heads), this needs to be in a context higher than Tie_engraver.
+   (FIXME).
+ */
 struct Local_key_engraver : Engraver {
   Local_key_item *key_item_p_;
 protected:
@@ -32,7 +37,7 @@ public:
   Link_array<Item > tied_l_arr_;
   Local_key_engraver();
   bool self_grace_b_;
-  
+  Grace_align_item * grace_align_l_;
 };
 
 #endif // LOCALKEYGRAV_HH
index c5f7b0167c0e09e61ed2293a92373aa746e0ae5c..421ad9c57d4fbec7379f92ece70935566eaea0ce 100644 (file)
@@ -21,7 +21,8 @@ class Note_head_side: public virtual Item
 {
   Link_array<Item> support_l_arr_;
 public:
-  Direction align_dir_;
+  // naming to avoid conflict with Align_element
+  Direction notehead_align_dir_;
 
   Note_head_side ();
   void add_support (Item*);
index 1307cba00021bf586da820c024783c911270fb68..0d499c8b36910cb1829105f78faf8d0a56410a17 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  local-key-reg.cc -- implement Local_key_engraver
+  local-key-engraver.cc -- implement Local_key_engraver
 
   (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "note-head.hh"
 #include "time-description.hh"
 #include "engraver-group-engraver.hh"
-
+#include "grace-align-item.hh"
 
 Local_key_engraver::Local_key_engraver()
 {
   key_grav_l_ = 0;
   key_item_p_ =0;
-  self_grace_b_ = false;
+  grace_align_l_ =0;
 }
 
 void
@@ -46,8 +46,6 @@ Local_key_engraver::do_creation_processing ()
       local_key_ = key_grav_l_->key_;
     }
 
-  self_grace_b_ = get_property ("weAreGraceContext",0 ).to_bool ();
-
   /*
     TODO
     (if we are grace) get key info from parent Local_key_engraver
@@ -91,6 +89,12 @@ Local_key_engraver::process_acknowledged ()
            local_key_.set (note_l->pitch_);
        }
     }
+  if (key_item_p_ && grace_align_l_)
+    {
+      grace_align_l_->add_support (key_item_p_);
+      grace_align_l_ =0;
+    }
+  
 }
 
 void
@@ -110,7 +114,8 @@ Local_key_engraver::do_pre_move_processing()
       typeset_element (key_item_p_);
       key_item_p_ =0;
     }
-  
+
+  grace_align_l_ = 0;
   mel_l_arr_.clear();
   tied_l_arr_.clear();
   support_l_arr_.clear();
@@ -119,12 +124,21 @@ Local_key_engraver::do_pre_move_processing()
 
 void
 Local_key_engraver::acknowledge_element (Score_element_info info)
-{    
+{
+  bool selfgr = get_property ("weAreGraceContext", 0).to_bool ();
+  bool he_gr = info.elem_l_->get_elt_property (grace_scm_sym) != SCM_BOOL_F;
+
+  Grace_align_item * gai = dynamic_cast<Grace_align_item*> (info.elem_l_);  
+  if (he_gr && !selfgr && gai)
+    {
+      grace_align_l_ = gai;
+    }
   Note_req * note_l =  dynamic_cast <Note_req *> (info.req_l_);
   Note_head * note_head = dynamic_cast<Note_head *> (info.elem_l_);
 
-  bool gr = (info.elem_l_->get_elt_property (grace_scm_sym)!=SCM_BOOL_F);
-  if (gr != self_grace_b_)
+
+  
+  if (he_gr != selfgr)
     return;
   
   if (note_l && note_head)
index 9dee0018d242b69fe1bada20135633585e1bfa8c..00354d3c2de448574c19e1109c9dbe71ac84f7fc 100644 (file)
@@ -503,12 +503,16 @@ Lookup::staff_brace (Real y, int staff_size) const
     )
   */
 
+  Real step  = 1.0;
+  int minht  = 2 * staff_size;
+  int maxht = 7 *  minht;
+  int idx = ((maxht - step) <? y - minht) / step;
+  idx = idx >? 0;
   
-  Atom at  (gh_list (pianobrace_scm_sym,
-                    gh_double2scm (y),
-                    gh_int2scm (staff_size),
-                    SCM_UNDEFINED
-                    ));
+  SCM f =  ly_symbol (String ("feta-braces" + to_str (staff_size)));
+  SCM e =gh_list (char_scm_sym, gh_int2scm (idx), SCM_UNDEFINED);
+  Atom at  (e);
+  at.font_ = f;
   
   m.dim_[Y_AXIS] = Interval (-y/2,y/2);
   m.dim_[X_AXIS] = Interval (0,0);
index 0d360c4d02e4cb284caf5ade54b24d3706c36cae..785da0c33275e1035ad9b0668b877f69e61892f8 100644 (file)
@@ -36,7 +36,7 @@ Note_head_side::do_pre_processing ()
   if (x_int.empty_b ())
     x_int = Interval(0,0);
   
-  translate_axis (-extent(X_AXIS)[-align_dir_] + x_int[align_dir_], X_AXIS);
+  translate_axis (-extent(X_AXIS)[-notehead_align_dir_] + x_int[notehead_align_dir_], X_AXIS);
 }
 
 void
@@ -48,5 +48,5 @@ Note_head_side::do_substitute_element_pointer (Score_element*o,Score_element*n)
 
 Note_head_side:: Note_head_side()
 {
-  align_dir_ = LEFT;
+  notehead_align_dir_ = LEFT;
 }
index 5e8055a9f4bf737b1c7e175b8cd4287976640228..474712e8d59f677b8afd51d30914480ec78e1ee1 100644 (file)
@@ -134,7 +134,7 @@ Slur::do_post_processing ()
            side directly attached to note head;
            no beam getting in the way
          */
-         if (((stem_l->get_elt_property (transparent_scm_sym) != SCM_BOOL_F)
+         if ((stem_l->extent (Y_AXIS).empty_b ()
               || !((stem_l->dir_ == dir_) && (dir_ != d)))
              && !((dir_ == stem_l->dir_)
                   && stem_l->beam_l_ && (stem_l->beams_i_drul_[-d] >= 1)))
@@ -241,14 +241,6 @@ Slur::do_post_processing ()
   Real height_damp_f;
   Real slope_damp_f;
   Real snap_f;
-  Real ratio_f;
-
-  if (!fix_broken_b)
-    dy_f_drul_[RIGHT] += interstaff_f;
-  Real dy_f = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT];
-
-  Real dx_f = do_width ().length () + dx_f_drul_[RIGHT] - dx_f_drul_[LEFT];
-  Real height_f = do_height ().length ();
 
   if (!interstaff_b)
     {
@@ -263,6 +255,11 @@ Slur::do_post_processing ()
       snap_f = paper_l ()->get_var ("slur_interstaff_snap_to_stem");
     }
 
+  Real ratio_f;
+  if (!fix_broken_b)
+    dy_f_drul_[RIGHT] += interstaff_f;
+  Real dy_f = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT];
+  Real dx_f = do_width ().length () + dx_f_drul_[RIGHT] - dx_f_drul_[LEFT];
 
   /*
     Avoid too steep slurs.
@@ -273,26 +270,50 @@ Slur::do_post_processing ()
       Direction d = (Direction)(- dir_ * (sign (dy_f)));
       if (!d)
        d = LEFT;
-      dy_f_drul_[d] += dir_ * (ratio_f - slope_damp_f) * dx_f;
+      Real damp_f = (ratio_f - slope_damp_f) * dx_f;
+      /*
+       must never change sign of dy
+       */
+      damp_f = damp_f <? abs (dy_f);
+      dy_f_drul_[d] += dir_ * damp_f;
     }
 
   /*
    Avoid too high slurs 
+
+   Wierd slurs may look a lot better after they have been
+   adjusted a bit.
+   So, we'll do this in 3 steps
    */
-  ratio_f = abs (height_f / dx_f);
-  if (ratio_f > height_damp_f)
+  for (int i = 0; i < 3; i++)
     {
-      Direction d = (Direction)(- dir_ * (sign (dy_f)));
-      if (!d)
-       d = LEFT;
-      Real damp_f = dir_ * (ratio_f - height_damp_f) * dx_f;
-      dy_f_drul_[d] += damp_f;
-      /*
-       if y positions at about the same height, correct both ends
-       */
-      if (abs (dy_f / dx_f ) < slope_damp_f)
+      Real height_f = do_height ().length ();
+      dy_f = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT];
+
+      ratio_f = abs (height_f / dx_f);
+      if (ratio_f > height_damp_f)
        {
-         dy_f_drul_[-d] += damp_f;
+         Direction d = (Direction)(- dir_ * (sign (dy_f)));
+         if (!d)
+           d = LEFT;
+         /* take third step */
+         Real damp_f = (ratio_f - height_damp_f) * dx_f / 3;
+         /*
+           if y positions at about the same height, correct both ends
+         */
+         if (abs (dy_f / dx_f ) < slope_damp_f)
+           {
+             dy_f_drul_[-d] += dir_ * damp_f;
+             dy_f_drul_[d] += dir_ * damp_f;
+           }
+         /*
+           don't change slope too much, would have been catched by slope damping
+         */
+         else
+           {
+             damp_f = damp_f <? abs (dy_f/2);
+             dy_f_drul_[d] += dir_ * damp_f;
+           }
        }
     }
 
index 9c1f6881d6e9445e3674ca8aeeae12aa8581ed53..f80fe91561f68a8dff6c31f6af1acc7b6a3e9241 100644 (file)
@@ -77,14 +77,15 @@ Spring_spacer::handle_loose_cols()
     connected.connect (fixed[i-1], fixed[i]);
 
   /*
-    connect unconnected columns with distances of 1.0; 
+    If columns do not have spacing information set, we need to supply our own.
    */
+  Real d = paper_l ()->get_var ("loose_column_distance");
   for (int i = cols_.size(); i--;)
     {
       if (! connected.equiv (fixed[0], i))
        {
          connected.connect (i-1, i);
-         connect (i-1, i, 1.0, 1.0);
+         connect (i-1, i, d, 1.0);
        }
     }
 }
index dfd6ca731ed93793397a4bf2e93acda6d91083f1..645f0946a74151b73c768501351666359304480f 100644 (file)
@@ -19,6 +19,8 @@ StaffContext=\translator {
        \consists "Staff_symbol_engraver";
        \consists "Collision_engraver";
        \consists "Rest_collision_engraver";
+       \consists "Local_key_engraver";
+
        \consistsend "Axis_group_engraver";
 
 
@@ -82,8 +84,8 @@ VoiceContext = \translator {
        \type "Engraver_group_engraver";
        \consists "Dynamic_engraver";   % must come before text_engraver.
        \name Voice ;
-       \consists "Local_key_engraver";
-       
+
+       \consists "Tie_engraver";
        \consists "Breathing_sign_engraver";
        \consists "Rest_engraver";
        \consists "Dot_column_engraver";
@@ -102,7 +104,6 @@ VoiceContext = \translator {
        \consists "Rhythmic_column_engraver";
        \consists "Font_size_engraver";
        \consists "Slur_engraver";
-       \consists "Tie_engraver";
        \consists "Tuplet_engraver";
        \consists "Grace_position_engraver";
        \consists "Skip_req_swallow_translator";
index 6f606819cfa97095a27e5b5131296daf3a666d65..8ac1cd2880441d14891aa9baaed38f71d5e15ed1 100644 (file)
@@ -92,11 +92,11 @@ slur_y_free = 0.75 * \interline;
 slur_x_minimum = 3.0 * \interline;
 
 % slope damping: keep dy/dx < slur_slope_damping
-slur_slope_damping = 0.3;
+slur_slope_damping = 0.35;
 slur_interstaff_slope_damping = 0.8;
 % height damping: keep h/dx < slur_height_damping
-slur_height_damping = 0.6;
-slur_interstaff_height_damping = 1.5;
+slur_height_damping = 0.45;
+slur_interstaff_height_damping = 1.2;
 % snap to stem if slur ends closer to stem than
 slur_snap_to_stem = 1.5 * \interline;
 slur_interstaff_snap_to_stem = 2.5 * \interline;
@@ -194,7 +194,8 @@ stemSpacingCorrection = 0.5*\interline;
 non_musical_space_strength = 40.0; 
 
 
-
+%If columns do not have spacing information set, set it to this much
+loose_column_distance = 2.0 * \interline;
 
 
 \include "engraver.ly";
index 4ecbd24678f563d1f730f9c07639d9c85cf2ec8e..7ebb13411500769221bb6cbbea466b3d0aeb6d79 100644 (file)
@@ -102,9 +102,6 @@ slurdotted =
        \property Voice.slurdash = 1
 
 
-%{
- for grace note hack, see input/test/grace.ly
-%}
 tupletoff = {
        \property Voice.tupletVisibility = 0
 }
@@ -113,7 +110,6 @@ tupleton = {
 }
 tiny  = {
        \property Voice.fontSize= "-2"
-       \tupletoff %urg
 }
 
 small  = {
@@ -122,38 +118,8 @@ small  = {
 
 normalsize = {
        \property Voice.fontSize= "0"
-       \tupleton %urg
-}
-
-%{
-  [urg: try at] temporary grace note hack
-  the total visible duration of the grace notes must be half
-  the duration of the 'at' note: e.g.:
-
-  \grace b8 \graceat c4 \ecarg
-  \grace c16 b16 \graceat c4 \ecarg
-
-grace = {
-       \tiny
-% it would be so cool not to have to specify these factors each time...
-% :-(
-       \property Voice.tupletVisibility = 0
-       \[1/16
 }
 
-graceat = \melodic {
-       \normalsize
-       \property Voice.tupletVisibility = 0
-       \] \[31/32
-}
-
-ecarg =  \melodic {
-       \property Voice.tupletVisibility = 0
-       \]
-       \property Voice.tupletVisibility = 3
-}
-%}
-
 normalkey = {
        \property Staff.keyoctaviation = 1
 }
index a8197b23005bef76e6a9f62389fb45ba853914b1..316aff9920e1511a156ca020d76a7b6499fda439 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Titel: LilyPond
-Versie: 1.1.59
-Inschrijf datum: 14JUL99
+Versie: 1.1.60
+Inschrijf datum: 15JUL99
 Beschrijving: @FLAPTEKST@
 Trefwoorden: muziek typezetten midi notatie
 Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-       770k lilypond-1.1.59.tar.gz 
+       770k lilypond-1.1.60.tar.gz 
 Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       770k lilypond-1.1.59.tar.gz 
+       770k lilypond-1.1.60.tar.gz 
 Copi-eer voorwaarden: GPL
 End
index 2041acb7ac9e1c87480256d88fd61c4e6fbc7ba0..224c0e5cc5c14d8b7b14bfe50d1cc3d0929c9722 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 1.1.59
-Entered-date: 14JUL99
+Version: 1.1.60
+Entered-date: 15JUL99
 Description: 
 
 LilyPond is the GNU Project music typesetter. It transforms a musical
@@ -12,8 +12,8 @@ Author: hanwen@cs.ruu.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
-       770k lilypond-1.1.59.tar.gz 
+       770k lilypond-1.1.60.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       770k lilypond-1.1.59.tar.gz 
+       770k lilypond-1.1.60.tar.gz 
 Copying-policy: GPL
 End
index 9690f935a0f25d90666363452ea1da815e4f5296..6a9b8996aaf2349d32c0bb99844cd958c09c46e6 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.1.59
+Version: 1.1.60
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.59.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.60.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
index 88cf758b8880f3c7a327956fdeb73e78290e88b7..33a179b47af13fa404e890f9f99892fecb34d4a8 100644 (file)
@@ -1,6 +1,5 @@
 //
-// main.cc -- implement silly main () entry point
-// should have Root class.
+// main.cc -- implement  main () entry point
 //
 // copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
index cfd121d430659a5df72fe6763ba1a8a7fd1acf03..3e30a4d09622e6db6041ec725f91ed91b4be6e1c 100644 (file)
@@ -130,7 +130,7 @@ Mudela_score::output (String filename_str)
       if ( (mudela_staff_p_list_.size_i () != 1)
           && (i->car_ == mudela_staff_p_list_.head_->car_))
        continue;
-      mudela_stream << "\\type Staff = \"" << i->car_->id_str () << "\" ";
+      mudela_stream << "\\context Staff = \"" << i->car_->id_str () << "\" ";
       mudela_stream << String ("\\" +  i->car_->id_str ()) << "\n";
     }
   if (mudela_staff_p_list_.size_i () > 1)
index 6692daf874667227d9ebd29d27836972899e8ba2..402b6142b3aa29bba8c82eb22ff811862876cb4d 100644 (file)
@@ -92,7 +92,7 @@ Mudela_stream::header()
   *os_p_ << filename_str_g;
   *os_p_ << "\n\n";
   // ugh
-  *os_p_ << "\\version \"1.0.14\";\n";
+  *os_p_ << "\\version \"1.1.60\";\n";
 }
 
 void
index cdeca540f1671890216ef58f427285b204c4ef52..26920e72b192ab7b22cb5cb290dffd5993f0394d 100644 (file)
     )
 
 
-  (define (rulesym h w) 
-    (string-append 
-     "\\vrule height " (number->dim (/ h 2))
-     " depth " (number->dim (/ h 2))
-     " width " (number->dim w)
-     )
-    )
-
   (define (bezier-sandwich l thick)
     (embedded-ps ((ps-scm 'bezier-sandwich) l thick)))
 
            (define invoke-dim1 ,invoke-dim1)
            (define pianobrace ,pianobrace)
            (define placebox ,placebox)
-           (define rulesym ,rulesym)
            (define select-font ,select-font)
            (define start-line ,start-line)
            (define stop-line ,stop-line)
        ((eq? action-name 'invoke-char) invoke-char) 
        ((eq? action-name 'invoke-dim1) invoke-dim1)
        ((eq? action-name 'placebox) placebox)
-       ((eq? action-name 'rulesym) rulesym)
        ((eq? action-name 'bezier-sandwich) bezier-sandwich)
        ((eq? action-name 'start-line) start-line)
        ((eq? action-name 'stem) stem)
     )
 
 
-  (define (rulesym x y) 
-    (string-append 
-     (number->string x) " "
-     (number->string y) " "
-     " rulesym"))
-
   (define (bezier-sandwich l thick)
     (string-append 
      (apply string-append (map control->string l))
            (define invoke-char ,invoke-char) 
            (define invoke-dim1 ,invoke-dim1)
            (define placebox ,placebox)
-           (define rulesym ,rulesym)
            (define select-font ,select-font)
            (define start-line ,start-line)
            (define stem ,stem)
index 602d77213ae3deb0becaa0fd24480ff64026f68c..caee78ed689c2ec3ef1c521d12b1712ad6bc8c1c 100644 (file)
@@ -2,6 +2,8 @@ dnl WARNING WARNING WARNING WARNING
 dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
 dnl WARNING WARNING WARNING WARNING
 dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
+dnl WARNING WARNING WARNING WARNING
+dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
 dnl aclocal.m4   -*-shell-script-*-
 dnl StepMake subroutines for configure.in
 
index 164faa151943f21066ab9733eafb163c893abb7a..fbe52f3d95d30c21c464f13b4b10bb122a9f63fb 100644 (file)
@@ -38,9 +38,12 @@ fi
 
 distdir=/tmp/${name}
 
-rm -f ${srcdir}/config.cache
-PYTHON=${PYTHON:-python} ${srcdir}/configure --prefix=${distdir} \
-    --srcdir=${srcdir}
+#
+# Maybe we can get away without reconfiguring
+#
+# rm -f ${srcdir}/config.cache
+# PYTHON=${PYTHON:-python} ${srcdir}/configure --prefix=${distdir} \
+#     --srcdir=${srcdir}
 
 if ! make ; then
     echo "make failed"
@@ -109,6 +112,19 @@ mv $distdir/bin/mudela-book $distdir/bin/mudela-book.py
 #
 mkdir $distdir/doc
 cp Documentation/man/out/*.html $distdir/doc
+
+#
+# copy web documentation to web directory
+#
+mkdir $distdir/web
+for i in index.html guile.patch angels.ly
+do
+  cp Documentation/ntweb/out/$i $distdir/web || exit 1
+done
+
+#
+# Zip it up
+#
 cd $distdir/..
 $ZIP_CMD $ZIP_FILE $name
 echo "Wrote $ZIP_FILE"