]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.2.8
authorfred <fred>
Tue, 26 Mar 2002 22:26:03 +0000 (22:26 +0000)
committerfred <fred>
Tue, 26 Mar 2002 22:26:03 +0000 (22:26 +0000)
42 files changed:
CHANGES
Documentation/footer.html.in
Documentation/index.texi
Documentation/topdocs/INSTALL.texi
Documentation/topdocs/README.texi
Documentation/topdocs/index.tely
TODO
buildscripts/genheader.py
buildscripts/mutopia-index.py
flower/getopt-long.cc
lib/mapped-file-storage.cc
lily/all-font-metrics.cc
lily/beam-engraver.cc
lily/beam.cc
lily/chord-tremolo-engraver.cc
lily/collision.cc
lily/column-x-positions.cc
lily/gourlay-breaking.cc
lily/grace-position-engraver.cc
lily/includable-lexer.cc
lily/include/word-wrap.hh
lily/lily-guile.cc
lily/line-spacer.cc
lily/lookup.cc
lily/main.cc
lily/music-output-def.cc
lily/request-chord-iterator.cc
lily/scores.cc
lily/spacing-spanner.cc
lily/word-wrap.cc
ly/params.ly
make/mutopia-targets.make
midi2ly/include/mudela-voice.hh
midi2ly/main.cc
midi2ly/mudela-staff.cc
midi2ly/mudela-stream.cc
midi2ly/mudela-voice.cc
po/lilypond.po
po/nl.po
stepmake/bin/add-html-footer.py
stepmake/bin/package-diff.py
stepmake/bin/release.py

diff --git a/CHANGES b/CHANGES
index a7582d04ce024b80900948efffafbcf6cb08dcd9..8bf0c7b8a6334bed57fd02b6c0cfe23a1eb17b38 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,16 @@
+pl 7.hwn1
+       - website fixes.
+       - spacer cleanups
+       - Simple_spacer: a simpler constraint solver. Enabled by default.
+pl 7.jcn1
+       - fixes to nl.po
+
+****************
+
 pl 6.uu1
        - website fixes.
 
+*******
 pl 5.hwn1
        - more .texi; yodl completely removed.
        - rm'd several doc stuff: engraving.yo, gnu-page.yo, translated blurbs (leave it to translation project)
index dd1b299fbc1978882688cf177310314fd7d2e20b..4b99be2c585861054cf3daa34abff02c5dc24efd 100644 (file)
@@ -14,10 +14,11 @@ footer substitutions:
 >
 
 <hr>
+Go <a href=%s>back</a> to index of LilyPond.
 
 <p>
 Please send GNU LilyPond questions and comments to 
-<!-- back to idx. %s > 
+
 <a href="mailto:gnu-music-discuss@gnu.org">
 <em>gnu-music-discuss@gnu.org</em></a>.
 <p>
index ae0c05b1592e98bac0f5a4a52311998cc9687bfb..04466190da24c0cdfdf5f8a6203f8a5e402f7586 100644 (file)
@@ -5,22 +5,7 @@
 @node Top, , , (dir)
 @top
 
-
-
-
-@unnumberedsec NAME
-    
-
-The Documentation of LilyPond -- the GNU Project music typesetter
-
-@unnumberedsec DESCRIPTION
-    
-
-Note: These pages are created from the latest @strong{development snapshots}
-of LilyPond.  You can look at the bottom if you want to know which
-version this was.
-
-@unnumberedsubsec Documentation: Introduction
+@unnumberedsubsec Introduction
 
 @itemize @bullet
 @item @uref{DEDICATION.html,DEDICATION}
@@ -33,8 +18,8 @@ version this was.
 
 @itemize @bullet
 @item  @uref{AIMS.txt,Why?}
-@item @uref{../pictures/out-www/lelieblond.png,The logo} large size}
-@item @uref{../pictures/out-www/lelie_logo.png,The logo} medium size}
+@item @uref{../pictures/out-www/lelieblond.png,The logo} large size
+@item @uref{../pictures/out-www/lelie_logo.png,The logo} medium size
 @end itemize
 
 @unnumberedsubsec Documentation: manuals
index 2888554930a3bf9be9511a45e2989b58c66b1815..dacd2ed0bf4da363b8429b14fccda05080d17102 100644 (file)
@@ -26,7 +26,7 @@ LilyPond more often.
 @section Obtaining
 
 You can get the latest version of LilyPond at
-@url{ ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/}.  Refer to the links
+@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/,ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/}.  Refer to the links
 document for mirror sites.
 
 @emph{If you upgrade by patching do remember to rerun autoconf after
@@ -48,30 +48,30 @@ disk-space run configure with @code{--disable-debugging}.
 Although we recommend to use Unix, LilyPond is known to run on Windows
 NT/95/98 as well.  See Section @xref{w32}.
 
-@item  EGCS 1.1 or newer. Check out @url{ ftp://ftp.gnu.org/pub/gcc/}
+@item  EGCS 1.1 or newer. Check out @uref{ ftp://ftp.gnu.org/pub/gcc/, ftp://ftp.gnu.org/pub/gcc/}
 
 @item  Python 1.5,
 Check out
-@url{ftp://ftp.python.org} or @url{ftp://ftp.cwi.nl/pub/python}.
+@uref{ftp://ftp.python.org,ftp://ftp.python.org} or @uref{ftp://ftp.cwi.nl/pub/python,ftp://ftp.cwi.nl/pub/python}.
 
-@item  GUILE 1.3,  check out @url{http://www.gnu.org/software/guile/guile.html}.
+@item  GUILE 1.3,  check out @uref{http://www.gnu.org/software/guile/guile.html,http://www.gnu.org/software/guile/guile.html}.
 
 @item GNU make. 
-Check out @url{ftp://ftp.gnu.org/make/}.
+Check out @uref{ftp://ftp.gnu.org/make/,ftp://ftp.gnu.org/make/}.
 
 @item Flex (version 2.5.4 or newer). 
-Check out @url{ftp://ftp.gnu.org/flex/}.
+Check out @uref{ftp://ftp.gnu.org/flex/,ftp://ftp.gnu.org/flex/}.
 
 @item Bison (version 1.25 or newer).
-Check out @url{ftp://ftp.gnu.org/bison/}.
+Check out @uref{ftp://ftp.gnu.org/bison/,ftp://ftp.gnu.org/bison/}.
 
-@item Texinfo. Check out @url{ftp://ftp.gnu.org/pub/texinfo/}.
+@item Texinfo. Check out @uref{ftp://ftp.gnu.org/pub/texinfo/,ftp://ftp.gnu.org/pub/texinfo/}.
 Most documentation is in texinfo.
 
 @item The geometry package for LaTeX is needed to use ly2dvi.  
 Available at 
-@url{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry}
-or at mirror site @url{ftp://ftp.dante.de}
+@uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry}
+or at mirror site @uref{ftp://ftp.dante.de,ftp://ftp.dante.de}
 
 @item MetaPost, if you want to use direct PostScript output. Please
 note  that  tetex-0.4pl8 (included with Redhat 5.x) does not include
@@ -89,7 +89,7 @@ following software
 @item A PostScript printer and/or viewer (such as Ghostscript) is strongly
     recommended.  Xdvi will show all embedded PostScript too if you have
     Ghostscript installed.
-@item  GUILE 1.3, check out @url{http://www.gnu.org/programs/guile.html}
+@item  GUILE 1.3, check out @uref{http://www.gnu.org/programs/guile.html,http://www.gnu.org/programs/guile.html}
 @end itemize
 
 For running LilyPond successfully you have to help TeX and MetaFont
@@ -128,11 +128,11 @@ conversion tools.
 @item xpmtoppm (from the Portable Bitmap Utilities) (For RedHat Linux
             users: it is included within the package libgr-progs).
        the original is at
-@url{ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz}
+@uref{ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz,ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz}
 
 @item pnmtopng, which is also in libgr-progs for RedHat. The original is
 at
-@url{ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz}.i
+@uref{ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz,ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz}.i
 
 The version of @file{pnmtopng} that is distributed with RedHat 5.1 and
 5.2 contains a bug: pnmtopng is dynamically linked to the wrong
@@ -152,9 +152,9 @@ problem.
 
 You can then install the new pnmtopng into @file{/usr/local/bin/}
 
-@item Bib2html @url{http://pertsserver.cs.uiuc.edu/~hull/bib2html.}
+@item Bib2html @uref{http://pertsserver.cs.uiuc.edu/~hull/bib2html.,http://pertsserver.cs.uiuc.edu/~hull/bib2html.}
     Which, in turn depends on man2html for proper installation.
-man2html can be had from @url{http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05}.
+man2html can be had from @uref{http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05,http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05}.
 
 The website will build without this utility, but you will not see our
 hypertextified bibliography.
@@ -325,8 +325,8 @@ You can make the rpm by issuing
 @end example 
 
 Precompiled i386 RedHat RPMS are available from
-@url{ftp://freshmeat.net/pub/rpms/lilypond/} and
-@url{http://linux.umbc.edu/software/lilypond/rpms/}.
+@uref{ftp://freshmeat.net/pub/rpms/lilypond/,ftp://freshmeat.net/pub/rpms/lilypond/} and
+@uref{http://linux.umbc.edu/software/lilypond/rpms/,http://linux.umbc.edu/software/lilypond/rpms/}.
 
 For compilation on a RedHat system you need these packages,
 in addition to the those needed for running:
@@ -349,7 +349,7 @@ A Debian package is also available; contact Anthony Fok
 
 
 Separate instructions on building for W32 are available
-@url{../../outdir/README-W32.html}.
+@uref{../../outdir/README-W32.html,README-W32}.
 
 @section Bugs
 
index d7eb7764b80bb7bbce6685cfdaeeabb9a77df5dc..91b663fd488269afb6b40570d761f7b903d6ccb5 100644 (file)
@@ -97,8 +97,8 @@ and @emph{not} to us personally.  See @file{Documentation/links.yo} for more inf
 @section windows 32
 
 If you have received this file as part of a DOS/Window32 distribution
-(LilyPond-*.zip), then it is advisable to also download the source
-package, since it might contain more documentation
+(@file{LilyPond-*.zip}), then it is advisable to also download the
+source package, since it might contain more documentation
 @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/}
 
 If you decide to build LilyPond from source, please read the INSTALL.txt
@@ -120,9 +120,9 @@ a script to do this for you is in @file{buildscripts/clean-fonts.sh}
 @node bugs, cdrom distributions, caveats, This is the toplevel README to LilyPond
 @section bugs
 
-Send bug reports to bug-gnu-music@@gnu.org.  For help and questions use
-help-gnu-music@@gnu.org and gnu-music-discuss@@gnu.org.  Please consult
-the faq before mailing your problems.
+Send bug reports to @email{bug-gnu-music@@gnu.org}.  For help and questions use
+ @email{help-gnu-music@@gnu.org} and @email{gnu-music-discuss@@gnu.org}.
+Please consult the faq before mailing your problems.
 
 @node cdrom distributions, Top, bugs, This is the toplevel README to LilyPond
 @section cdrom distributions
index c944f2c2c5d33db8655bdc59d82563eb957cbb33..f40f3edc7c959db0200682067e016d7be630df90 100644 (file)
@@ -59,10 +59,10 @@ LilyPond handling real music.  MIDI, view PNG, PostScript, and Source.
     
 
 @itemize @bullet
-@item @uref{http://www.gnu.org/software/...}  LilyPond is part of the GNU
+@item @uref{http://www.gnu.org/software/lilypond}  LilyPond is part of the GNU
 project.  The webpages for the stable version reside at GNU.
 
-@item @uref{http://www.cs.uu.nl/people/hanwen/lilypond/} Han-Wen's site
+@item @uref{http://www.cs.uu.nl/~hanwen/lilypond/} Han-Wen's site
 has the development pages.
 @item @uref{http://sca.uwaterloo.ca/lilypond/} Eric's mirror
 @item @uref{http://home.austin.rr.com/jbr/jeff/lilypond/} Jeff's Windows NT Distribution site
diff --git a/TODO b/TODO
index cb02f6a3d4ad6ae4bbcc6451ca8a2f4774e853e4..00661c54a5f9ab7034a71f4f20b798f24fe4369d 100644 (file)
--- a/TODO
+++ b/TODO
@@ -10,13 +10,10 @@ Grep -i for TODO, FIXME and ugh/ugr/urg.
 
 .* TODO
 . * use Rhythmic_head::position_i () for all Staff_referenced 
-. * bug: dots.
+. * rerun profile
 . * mmrests
-. * web: download link.
-. * guile detection.
 . * Break_req handling is silly (break_forbid () + \break fucks up.)
 . * script engraver
-
 . * HaraKiriStaffContext removes bar lines and doesn't remove
     staff margin text on removed staff lines.
 . * Mondrup:
index 4dbb07f35813e0494929d024b2ad06cdf9e9e276..2f57d1a9582dbdd317a6aa07bbaccac4d99d1064 100644 (file)
@@ -9,8 +9,7 @@
 import os
 import sys
 import pwd
-import regex
-import regsub
+import re
 import string
 import getopt
 import time
@@ -31,19 +30,19 @@ def name():
 #   return pwd.getpwuid(os.getuid())[4]
 
 def c_commentify(str):
-    return  '/* ' + regsub.gsub('^','  ', str) + '\n */';
+    return  '/* ' + re.sub('^','  ', str) + '\n */';
 
 def sh_commentify(str):
-    return regsub.gsub('^', '# ', str)
+    return re.sub('^', '# ', str)
 
 def tex_commentify(str):
-    return regsub.gsub('^', '% ', str)
+    return re.sub('^', '% ', str)
 
 def project_str():
     cwd = os.getcwd()
-    if regex.search('flower', cwd) <> -1:
+    if re.search('flower', cwd):
        PROJECT = "the Flower Library"
-    elif regex.search('mf$', cwd) <> -1:
+    elif re.search('mf$', cwd):
        PROJECT = "the Feta (defintively not an abbreviation for Font-En-Tja) music font"
     else:
        PROJECT = "the GNU LilyPond music typesetter"
@@ -123,7 +122,7 @@ def do_file(nm):
 
 def extension(ext,nm):
     ext = '\\.' + ext
-    return regex.search(ext, nm) <> -1
+    return re.search(ext, nm) <> None
 
 def c_extension(nm):
     return extension('hh',nm) or extension('cc',nm) \
index 5ea6bad2f2e974c0e2325bc88b08f67ca84bd81b..be4163087bd25fb365783db9736e676364d23134 100644 (file)
@@ -3,26 +3,32 @@
 
 name = 'mutopia-index'
 
-import regex
+import find
+import re
 import os
 import sys
 import stat
-sys.path.append ('@abs-step-bindir@')
-
 
 def gulp_file (fn):
-       f = open (fn)
+       try:
+               f = open (fn)
+       except:
+               raise 'not there' , fn
        return f.read ()
 
+def file_exist_b (fn):
+       try:
+               f = open (fn)
+               return 1
+       except:
+               return 0
 
-header_regex = regex.compile('\\header[ \t\n]*{\([^}]*\)}')
-header_entry_regex = regex.compile('[\n\t ]*\([^\n\t ]+\)[\n\t ]*=[\n \t]*\([^;]+\)[\n \t]*;')
 
 headertext= r"""
 These example files are taken from the LilyPond distribution. 
 LilyPond currently only outputs TeX and MIDI.  The pictures and 
 PostScript files were generated using TeX, Ghostscript and some 
-graphics tools.  The papersize used for these examples is A4. 
+graphics tools.         The papersize used for these examples is A4. 
 The  images are in PNG format, and should be viewable with any current browser.
 We don't use GIFS due to <a href="http://www.gnu.org/philosophy/gif.html">patent problems</a>.
 <p>
@@ -31,7 +37,7 @@ out</em> the samples first.
 """
 
 headertext_nopics = r"""This is a subdirectory of the LilyPond example
-set.  We decided not to show any examples from this directory.  If you
+set.  We decided not to show any examples from this directory. If you
 want to view them, then you have to download LilyPond and compile them
 yourself."""
 
@@ -41,152 +47,134 @@ yourself."""
 #
 def read_mudela_header (fn):
        s = gulp_file(fn)
-       s = regsub.gsub('%.*$', '', s)
-       s = regsub.gsub('\n', ' ', s)   
+       s = re.sub('%.*$', '', s)
+       s = re.sub('\n', ' ', s)                
 
        dict = {}
-       if header_regex.search(s) <> -1:
-               h = header_regex.group(1)
-       else:
-               return dict
-
-       while regex.search('=', h) <> -1: 
-
-               if header_entry_regex.search (h) == -1:
+       m = re.search (r"""\\header\s*{([^}]*)}""", s)
 
-                       raise 'format error'
-
-               h = regsub.sub(header_entry_regex, '', h)
-               left = header_entry_regex.group(1)
-               right = header_entry_regex.group(2)
+       if m:
+                       s = m.group(1)
+       else:
+                       return dict
 
-               right = regsub.gsub('\([^\\]\)\"', '\\1', right)
-               right = regsub.gsub('^"', '', right)            
-               left = regsub.gsub('\([^\\]\)\"', '', left)
-               left = regsub.gsub('^"', '', left)
+       while s:
+               m = re.search (r"""\s*(\S+)\s*=\s*([^;]+)\s*;""", s)
+               if m == None:
+                       s = ''
+               else:
+                       s = s[m.end (0):]
+                       left  = m.group  (1)
+                       right = m.group (2)
 
-               dict[left] = right
+                       left = re.sub ('"', '', left)
+                       right = re.sub ('"', '', right)
+                       dict[left] = right
 
        return dict
-   
-
-
 
 def help ():
-    sys.stdout.write ("Usage: " + name + " [options] INFILE OUTFILE\n"
-                + "Generate index for mutopia\n\n"
-                + "Options:\n"
-                + "  -h, --help             print this help\n"
-                + "  -p, --package=DIR      specify package\n"
-                + "  --prefix=PRE           specify prefix\n"
-                + "  -s, --subdirs=DIR      add subdir\n"
-                + "  --suffix=SUF           specify suffix\n"
-                     )
-    sys.exit (0)
-
+       sys.stdout.write (r"""Usage: mutopia-index [options] INFILE OUTFILE
+Generate index for mutopia\n
+Options:
+  -h, --help                        print this help
+  --prefix=PRE                  specify prefix
+  -s, --subdirs=DIR         add subdir
+  --suffix=SUF                  specify suffix"""
+                                         )
+       sys.exit (0)
+
+# ugh.
 def gen_list(inputs, subdir, filename):
-    (pre, subdirs, post)=subdir
-    print "generating HTML list %s\n" % filename
-    list = open(filename, 'w')
-    list.write ('<html><TITLE>Rendered Examples</TITLE>\n')
-    list.write ('<body bgcolor=white>')
-    if subdirs:
-       list.write  ('<h2>subdirectories</h2>')
-       list.write  ('<ul>')    
-        for ex in subdirs:
-           print 'subdir %s ' % ex
-           list.write ('<li><a href=%s/index.html>Subdirectory: %s</a></li>\n' % (pre + ex + post , ex))
+       (pre, subdirs, post)=subdir
+       print "generating HTML list %s\n" % filename
+       list = open(filename, 'w')
+       list.write ('<html><TITLE>Rendered Examples</TITLE>\n')
+       list.write ('<body bgcolor=white>')
+       if subdirs:
+               list.write  ('<h2>subdirectories</h2>')
+               list.write  ('<ul>')                
+               for ex in subdirs:
+                       print 'subdir %s ' % ex
+                       list.write ('<li><a href=%s/index.html>Subdirectory: %s</a></li>\n' % (pre + ex + post , ex))
 
-       list.write ('</ul>')
+               list.write ('</ul>')
 
 
 
-    if inputs:
-           list.write('<h2>Contents of this directory</h2>\n');
+       if inputs:
+                       list.write('<h2>Contents of this directory</h2>\n');
 
-           list.write (headertext)
-    else:
-           list.write (headertext_nopics)
+                       list.write (headertext)
+       else:
+                       list.write (headertext_nopics)
 
 
-    for ex in inputs:
-       ex_ext = '.ly'
-       print '%s, ' % ex
-       try:
-           header = read_mudela_header(ex + ex_ext + '.txt')
-       except:
-           ex_ext = '.fly'
-           header = read_mudela_header(ex + ex_ext + '.txt')
-       
-       def read_dict(s, default, h =header):
+       for ex in inputs:
+               ex_ext = '.ly'
+               print '%s, ' % ex
                try:
-                   ret = h[s]
-               except KeyError:
-                   ret = default
-               return ret
-       head = read_dict('title', ex)
-       composer = read_dict('composer', '')
-       desc = read_dict('description', '')
-       list.write('<hr>')
-       list.write('<h1>example file: %s</h1>' % head);
-       if composer <> '':
-           list.write('<h2>%s</h2>\n' % composer)
-       if desc <> '':
-           list.write('%s<p>' % desc)
-       list.write ('<ul>')
-       def list_item(filename, desc, type, l = list):
-           if file_exist_b(filename):
-               l.write ('<li><a href=%s>%s</a>' % (filename, desc))
-               size=os.stat(filename)[stat.ST_SIZE]
-               l.write (' (%s %dk)' % (type, (size + 512) / 1024))
-               pictures = ['jpeg', 'png', 'xpm']
-               # silly, no?
-               if 0 and type in pictures:
-                   l.write (' <a href="http://www.gnu.org/philosophy/gif.html">no gifs due to patent problems</a>')
-               l.write ('\n')
-       list_item(ex + ex_ext + '.txt', 'The input', 'ASCII')
-       for pageno in range(1,100):
-           f  = ex + '-page%d.png' % pageno
-           if not file_exist_b (f):
-               break
-           list_item(f, 'The output, page %d' % pageno, 'png')
-       list_item(ex + '.ps.gz', 'The output', 'gzipped PostScript')
-       list_item(ex + '.midi', 'The output', 'MIDI')
-       list.write ("</ul>");
-
-    list.write( "</BODY></HTML>");
-    list.close()
+                       header = read_mudela_header(ex + ex_ext + '.txt')
+               except:
+                       ex_ext = '.fly'
+                       header = read_mudela_header(ex + ex_ext + '.txt')
+               
+               def read_dict(s, default, h =header):
+                               try:
+                                       ret = h[s]
+                               except KeyError:
+                                       ret = default
+                               return ret
+               head = read_dict('title', ex)
+               composer = read_dict('composer', '')
+               desc = read_dict('description', '')
+               list.write('<hr>')
+               list.write('<h1>example file: %s</h1>' % head);
+               if composer <> '':
+                       list.write('<h2>%s</h2>\n' % composer)
+               if desc <> '':
+                       list.write('%s<p>' % desc)
+               list.write ('<ul>')
+               def list_item(filename, desc, type, l = list):
+                       if file_exist_b(filename):
+                               l.write ('<li><a href=%s>%s</a>' % (filename, desc))
+                               size=os.stat(filename)[stat.ST_SIZE]
+                               l.write (' (%s %dk)' % (type, (size + 512) / 1024))
+                               pictures = ['jpeg', 'png', 'xpm']
+                               l.write ('\n')
+               list_item(ex + ex_ext + '.txt', 'The input', 'ASCII')
+               for pageno in range(1,100):
+                       f  = ex + '-page%d.png' % pageno
+                       if not file_exist_b (f):
+                               break
+                       list_item(f, 'The output, page %d' % pageno, 'png')
+               list_item(ex + '.ps.gz', 'The output', 'gzipped PostScript')
+               list_item(ex + '.midi', 'The output', 'MIDI')
+               list.write ("</ul>");
+
+       list.write( "</BODY></HTML>");
+       list.close()
 
 import getopt
 
 (options, files) = getopt.getopt(sys.argv[1:], 
-  'hp:s:', ['help', 'subdirs=', 'suffix=', 'package=', 'prefix='])
+  'hp:s:', ['help', 'subdirs=', 'suffix=',  'prefix='])
 subdir_pre=''
 subdir_suf =''
 
 subdirs =[]
 for opt in options:
-    o = opt[0]
-    a = opt[1]
-    if o == '--subdirs' or o == '-s':
-       subdirs.append (a)
-    elif o == '--prefix':
-       subdir_pre = a
-    elif o == '-p' or o == '--package':
-       topdir = a
-    elif o == '--suffix':
-       subdir_suf = a
-
-    sys.path.append (topdir + '/stepmake/bin')
-    from packagepython import *
-    package = Package (topdir)
-    packager = Packager ()
-
-    from flower import *
-
-       
-# huh?
-allfiles = multiple_find (['*.*ly.txt'], '.')
+       o = opt[0]
+       a = opt[1]
+       if o == '--subdirs' or o == '-s':
+               subdirs.append (a)
+       elif o == '--prefix':
+               subdir_pre = a
+       elif o == '--suffix':
+               subdir_suf = a
+
+               
+allfiles = find.find ('*.ly') + find.find ('*.ly.txt')
 
 gen_list (files, (subdir_pre, subdirs, subdir_suf), 'index.html')
 
index 6945a6a5b91c8f579afea32b7b3a20d7702e9b4a..3b4e3d283d54aa305779f349ad9a7f4a6e32aa80 100644 (file)
@@ -148,7 +148,8 @@ Getopt_long::report (Errorcod c)
     case E_UNKNOWNOPTION:
       str += _f ("unrecognized option: `%s\'",
       String (argument_index_i_ 
-             ? String ("-" + _f("%c",arg_value_ch_a_a_[array_index_i_][argument_index_i_]))
+             ? String ("-" + String_convert::form_str ("%c", 
+               arg_value_ch_a_a_[array_index_i_][argument_index_i_]))
              : String (arg_value_ch_a_a_[array_index_i_])));
       break;
     case E_ILLEGALARG:
index eab56c6d150c40c331434c81effccdb031144d0e..609bd4f458348bf1897a2073e9a57a12bf244e99 100644 (file)
@@ -62,7 +62,7 @@ Mapped_file_storage::map ()
  
      r = map_fd (fildes_i_, (vm_offset_t) 0, &address, TRUE, size_off_);
      if (r != KERN_SUCCESS)
-       warning (String (_ ("map_fd: ")) + mach_error_string (r));
+       warning (String ("map_fd: ") + mach_error_string (r));
      else
        data_caddr_ = (char *) address;
    }
@@ -106,7 +106,7 @@ Mapped_file_storage::unmap ()
        r = vm_deallocate (task_self (), (vm_address_t) data_caddr_, 
 size_off_);
        if (r != KERN_SUCCESS)
-       warning (String (_ ("vm_deallocate: ")) + mach_error_string (r));
+       warning (String ("vm_deallocate: ") + mach_error_string (r));
 #else
        munmap (data_caddr_, size_off_);
 #endif
index d3722420116299edcf62cde14efb27b603624686..339e74c8d35193ac127eac5eacc99a5bd40b7e53 100644 (file)
@@ -72,6 +72,6 @@ All_font_metrics::find_font (String name)
   if (f)
     return f;
   String s = _f("Can't find default font `%s\', giving up.", default_font_sz_);
-  s += String ("\n") + _f ("search path = %s", search_path_.str ());
+  s += String ("\n") + _f ("(search path: `%s)'", search_path_.str ());
   error (s);
 }
index 7568a7f700de906bb5ff532773ca5cdf6da5987b..d76252ae27be139e23084cfed4902936ed6e89d8 100644 (file)
@@ -39,7 +39,7 @@ Beam_engraver::do_try_music (Music *m)
 
       if (d == STOP && !beam_p_)
        {
-         m->warning (_ ("No Beam to end"));
+         m->warning (_ ("no beam to end"));
          return false;
        }
       reqs_drul_[d ] = c;
@@ -55,7 +55,7 @@ Beam_engraver::do_process_requests ()
   if (reqs_drul_[STOP])
     {
       if (!beam_p_)
-       reqs_drul_[STOP]->warning (_("No beam to end"));
+       reqs_drul_[STOP]->warning (_("no beam to end"));
       prev_start_req_ =0;
       finished_beam_p_ = beam_p_;
       finished_beam_info_p_ = beam_info_p_;
index b6b65d681dad5e44167db0deb56ed063cae22e60..22735719719340c4a64759ffc79b7e4994a74266 100644 (file)
@@ -309,8 +309,8 @@ Beam::check_stemlengths_f (bool set_b)
        { 
          // when all too short, normal stems win..
          if (dy_f < -epsilon_f)
-           warning (_ ("weird beam shift, check your knees"));
-         dy_f = dy_f >? sinfo_[i].miny_f_ - y;
+           warning (_ ("weird beam vertical offset"));
+         dy_f = dy_f >? sinfo_[i].miny_f_ - y; 
        }
     }
   return dy_f;
index d41c8185a21010c153b5cd89cc6ab905c5b7cfde..eac8f66427e9e16786b2ba0d64880c5100bdaf0b 100644 (file)
@@ -38,7 +38,7 @@ Chord_tremolo_engraver::do_try_music (Music* m)
 
       if ((d == STOP) && !abeam_p_)
        {
-         m->warning (_ ("No abbreviation beam to end"));
+         m->warning (_ ("no tremolo beam to end"));
          return false;
        }
 
@@ -55,7 +55,7 @@ Chord_tremolo_engraver::do_process_requests ()
   if (reqs_drul_[STOP])
     {
       if (!abeam_p_)
-       reqs_drul_[STOP]->warning (_("No abbreviation beam to end"));
+       reqs_drul_[STOP]->warning (_("no tremolo beam to end"));
       prev_start_req_ = 0;
       finished_abeam_p_ = abeam_p_;
       abeam_p_ = 0;
@@ -80,7 +80,7 @@ Chord_tremolo_engraver::do_process_requests ()
     {
       if (abeam_p_)
        {
-         reqs_drul_[START]->warning (_ ("Already have an abbreviation beam"));
+         reqs_drul_[START]->warning (_ ("already have a tremolo beam"));
          return;
        }
 
@@ -121,7 +121,7 @@ Chord_tremolo_engraver::do_removal_processing ()
   typeset_beam ();
   if (abeam_p_)
     {
-      prev_start_req_->warning (_ ("Unfinished abbreviation beam"));
+      prev_start_req_->warning (_ ("unfinished tremolo beam"));
       finished_abeam_p_ = abeam_p_;
       typeset_beam ();
     }
index 6da2f27f8de99dbf340395a82afd998317df4f07..c5424710cde4e17b39f8f9582c5fde99b5cdfb8b 100644 (file)
@@ -92,7 +92,7 @@ Collision::automatic_shift ()
        {
          if (shift[i-1] == shift[i])
            {
-             warning (_ ("Too many clashing notecolumns. Ignoring them."));
+             warning (_ ("Too many clashing notecolumns.  Ignoring them."));
              return tups;
            }
        }
index 894844de4502aa4979391ad0a4de7f817132b58c..988cf4f054e2410d2b5685821dfc57026726b70c 100644 (file)
@@ -59,7 +59,7 @@ Column_x_positions::set_stupid_solution(Vector v)
 void
 Column_x_positions::stupid_solution()
 {
-  set_stupid_solution (spacer_l_->default_solution());
+  //  set_stupid_solution (spacer_l_->default_solution());
 }
 
 void
index 9eceda73c7add2636d995531315f1fc4b8fc8ded..e9d0ecb801aa80167c4b4c8762dfb890e31ffcc2 100644 (file)
@@ -191,7 +191,6 @@ Gourlay_breaking::do_solve () const
 
 Gourlay_breaking::Gourlay_breaking ()
 {
-  get_line_spacer = Spring_spacer::constructor;
   energy_bound_f_ = infinity_f;
   max_measures_i_ = INT_MAX;
 }
index 924d57a3967fa5819fcadca85dde89d916e32cc4..843801274afbd3b82a48ec2d569ad68ea852f67c 100644 (file)
@@ -86,7 +86,7 @@ Grace_position_engraver::do_pre_move_processing ()
       if (elt)
        return;
 
-      warning (_("Unattached grace notes. Attaching to last musical column."));
+      warning (_("Unattached grace notes.  Attaching to last musical column."));
       Axis_group_element * ae = dynamic_cast<Axis_group_element*> (elt);
       if (ae)
        ae->remove_element (align_l_);
index 524519623cb585673f57b35a89b5f1dab03ef333..c913570387efda8c41c50733b4ff06050d1e73a9 100644 (file)
@@ -45,7 +45,9 @@ Includable_lexer::new_input (String s, Sources  * global_sources)
   if (!sl)
     {
       String msg = _f ("can't find file: `%s\'", s);
-      msg += _f ("\nSearch path is `%s'\n", global_sources->path_C_->str ().ch_C());
+      msg += "\n";
+      msg += _f ("(search path: `%s')", global_sources->path_C_->str ().ch_C());
+      msg += "\n";
       LexerError (msg.ch_C ());
 
       return;
index 454fb14bd12d387c1716b49c867fc46217bf0ac2..b81751e20a970bc59bea84685e99bc4a5c38ed5e 100644 (file)
@@ -15,7 +15,6 @@
 /// wordwrap type algorithm: move to next line if current is optimal.
 struct Word_wrap : Break_algorithm {
     virtual Array<Column_x_positions> do_solve() const;
-    Word_wrap();
 };
 
 #endif // WORD_WRAP_HH
index 96e140707b3baa31f4c292c02b8ea87236614a09..b28b18f695711a718d070d548b7c6ec956bcc85b 100644 (file)
@@ -79,9 +79,9 @@ read_lily_scm_file (String fn)
   String s = global_path.find (fn);
   if (s == "")
     {
-      String e = _f ("Can not find file `%s\'", fn);
+      String e = _f ("can't find file: `%s\'", fn);
       e += " ";
-      e += _f ("(Load path is `%s\'", global_path.str ());
+      e += _f ("(load path: `%s\')", global_path.str ());
       error (e);
     }
   else
@@ -102,9 +102,9 @@ ly_gulp_file (SCM name)
  String s = global_path.find (fn);
   if (s == "")
     {
-      String e = _f ("Can not find file `%s\'", fn);
+      String e = _f ("can't find file: `%s\'", fn);
       e += " ";
-      e += _f ("(Load path is `%s\'", global_path.str ());
+      e += _f ("(load path: `%s\')", global_path.str ());
       error (e);
     }
   else
index cd42a1d827997f79ca73674f5f46d02b1e0c55af..e99204b27d05440cd8f0994a11e2967c7b6af55a 100644 (file)
@@ -8,17 +8,16 @@
 
 
 #include "line-spacer.hh"
+#include "dimensions.hh"
 
 Line_spacer::Line_spacer()
 {
-  paper_l_ =0;
-}
-Paper_def*
-Line_spacer::paper_l() const
-{ 
-  return paper_l_ ;
+  indent_f_ =0.0;
+  default_space_f_ = 20 PT;
 }
 
+
 Line_spacer::~Line_spacer ()
 {
 }
+
index e2b81bfa6c70e2741d7cea31fc6e7700071306fe..41c2fa6da34af214d3f310997036eba481dd502b 100644 (file)
@@ -100,8 +100,8 @@ Lookup::afm_find (String s, bool warn) const
       me->afm_l_ = all_fonts_global_p->find_afm (font_name_);
       if (!me->afm_l_)
        {
-         warning (_f("Can't open `%s'\n", font_name_));
-         warning (_f("Search path %s\n", global_path.str ().ch_C()));
+         warning (_f("can't find font: `%s'", font_name_));
+         warning (_f("(search path: `%s')", global_path.str ().ch_C()));
          error (_f("Aborting"));
        }
     }
index 6cd822b26545427654acebc7c5352fb0e970eb3c..149783ac29f28a99399c60e21724c60ea1ef8777 100644 (file)
@@ -109,6 +109,7 @@ usage ()
 #ifdef STRING_UTILS_INLINED
     "STRING_UTILS_INLINED "
 #endif
+    "\n"
     "datadir =" DIR_DATADIR
     "\n"
     "localedir =" DIR_LOCALEDIR
@@ -132,8 +133,8 @@ version ()
   identify ();
   cout << '\n';
   cout << _f (""
-  "This is free software.  It is covered by the GNU General Public License,"
-  "and you are welcome to change it and/or distribute copies of it under"
+  "This is free software.  It is covered by the GNU General Public License,\n"
+  "and you are welcome to change it and/or distribute copies of it under\n"
   "certain conditions.  Invoke as `%s --warranty' for more information.\n",
     "lilypond");
   cout << endl;
index 62de2935b4166db3ffba63004f4397f31314af3c..ca1a8ed8f4ef8748f65438410a28e5d49d224a78 100644 (file)
@@ -80,7 +80,7 @@ Music_output_def::get_global_translator_p ()
 {
   Translator * t = find_translator_l ("Score");
   if (!t)
-    error (_("Can't find Score context"));
+    error (_ ("can't find Score context"));
   t = t->clone ();
   Global_translator *g = dynamic_cast <Global_translator *> (t);
   t->add_processing ();
index 462cead1b41ba19116c64c343c9030b18f23fdc0..0fa4be380db9d9b70d97dc63faec7b4dfacc4f6a 100644 (file)
@@ -73,7 +73,7 @@ Request_chord_iterator::do_process_and_next (Moment mom)
                req_l->warning (_f ("junking request: `%s\'", classname( req_l)));
            }
          else
-           i->car_->warning (_f ("Huh? Not a Request: `%s\'",
+           i->car_->warning (_f ("Huh?  Not a Request: `%s\'",
                                   classname (i->car_)));
        }
       first_b_ = false;
index 23f85ce5bcc3911201030742c15efeeb0920601f..d53643a9acfa2b9827f461128a4b793cb77aabb9 100644 (file)
@@ -106,7 +106,7 @@ do_one_file (String init_str, String file_str)
   if (init_str.length_i () && global_path.find (init_str).empty_b ())
     {
       warning (_f ("can't find file: `%s\'", init_str));
-      warning (_f ("Search path: %s", global_path.str ().ch_C()));
+      warning (_f ("(search path: `%s')", global_path.str ().ch_C()));
       return;
     }
   if ((file_str != "-") && global_path.find (file_str).empty_b ())
index 64ebe46a6b9b52b76cedb9eb4f8ed46c3f32c473..edc59bb49a170da802deb020a79541bfaaf81a23 100644 (file)
@@ -215,14 +215,13 @@ Spacing_spanner::note_spacing (Score_column *lc, Score_column *rc, Moment shorte
   Moment shortest_playing_len = lc->shortest_playing_mom_;
   if (! shortest_playing_len)
     {
-      warning (_f ("can't find a ruling note at %s", 
-                  lc->when_mom ().str ()));
+      programming_error ("can't find a ruling note at " + lc->when_mom ().str ());
       shortest_playing_len = 1;
     }
+  
   if (! shortest)
     {
-      warning (_f ("no minimum in measure at %s", 
-                  lc->when_mom ().str ()));
+      programming_error ("no minimum in measure at " + lc->when_mom ().str ());
       shortest = 1;
     }
   Moment delta_t = rc->when_mom () - lc->when_mom ();
index d6f6cbf7ceb763ea867cdf20190adcf3baa99253..28f96e852c630d83450418df78f4ed607c3ff967 100644 (file)
@@ -125,7 +125,3 @@ Word_wrap::do_solve () const
   return breaking;
 }
 
-Word_wrap::Word_wrap ()
-{
-  get_line_spacer = Spring_spacer::constructor;
-}
index 203169f394078ff9cbcbcfa206afbf2045862fcb..354779e019bfd033dc4046b1db2a87f3094e0db8 100644 (file)
@@ -282,6 +282,8 @@ stem_default_neutral_direction = 1.0;
 % in interline
 articulation_script_padding_default = 1.0;
 
+% 1.0 -> faster.
+simple_spacing_solver = 1.0;
 \include "engraver.ly";
 
 
index 5080ace0e4cf62283b54396d889e07563e829e2d..133f2dd536ef214583ebb6fadb994d2f24ccda8e 100644 (file)
@@ -4,7 +4,7 @@ all: $(OUT_FILES)
 
 
 local-WWW: $(ly_examples) $(fly_examples) $(ps_examples) $(png_examples)
-       (cd $(outdir); $(PYTHON) ../$(buildscripts)/mutopia-index.py --package=$(topdir) --prefix=../ --suffix=/$(outdir) $(html_subdirs) $(all_examples))
+       (cd $(outdir); $(PYTHON) ../$(buildscripts)/mutopia-index.py --prefix=../ --suffix=/$(outdir) $(html_subdirs) $(all_examples))
        echo $^ > $(depth)/wwwlist
 
 convert-mudela: local-convert-mudela
index 2c82a4b4b2e95b75f944dd03d6796f357d72f1a4..6272266da2eabb6f60e70b7401991d576db10c7b 100644 (file)
@@ -16,10 +16,12 @@ public:
   Mudela_voice (Mudela_staff* mudela_staff_l);
   void add_item (Mudela_item* mudela_item_l);
   void output (Mudela_stream& mudela_stream_r);
-
+  String get_clef () const;
+  Mudela_item * last_item_l_;
 private:
   Mudela_staff* mudela_staff_l_;
   Cons_list<Mudela_item> mudela_item_l_list_;
+
 };
 
 #endif // MUDELA_VOICE_HH
index ae4e2579389b998216a63239005090b9a9f65378..016921ed1befdf9ba9b062b576c84f27a9304ef8 100644 (file)
@@ -50,8 +50,8 @@ version ()
   identify ();
   cout << '\n';
   cout << _f (""
-  "This is free software.  It is covered by the GNU General Public License,"
-  "and you are welcome to change it and/or distribute copies of it under"
+  "This is free software.  It is covered by the GNU General Public License,\n"
+  "and you are welcome to change it and/or distribute copies of it under\n"
   "certain conditions.  Invoke as `%s --warranty' for more information.\n", 
     "midi2ly");
   cout << endl;
index 2f109da5d998af70db91c280b11baec2b6680f14..a8feafb0f4b7f9f11ae8add41c60d97f0bf5b105 100644 (file)
@@ -39,7 +39,13 @@ Mudela_staff::add_item (Mudela_item* mudela_item_p)
   if (mudela_item_p->mudela_column_l_)
     mudela_item_p->mudela_column_l_->add_item (mudela_item_p);
 }
+/**
+   Walk ITEMS and find voices.  Remove categorised items.
 
+   TODO: collect all channels into separate voices. Use chords for sim
+   notes on same channel.
+   
+ */
 void
 Mudela_staff::eat_voice (Cons_list<Mudela_item>& items)
 {
@@ -52,9 +58,6 @@ Mudela_staff::eat_voice (Cons_list<Mudela_item>& items)
   for (Cons<Mudela_item>** pp = &items.head_; *pp;)
     {
       Cons<Mudela_item>* i = *pp;
-      LOGOUT (DEBUG_ver) << "At: " << i->car_->at_mom ().str () << "; ";
-      LOGOUT (DEBUG_ver) << "dur: " << i->car_->duration_mom ().str () << "; ";
-      LOGOUT (DEBUG_ver) << "mom: " << mom.str () << " -> ";
       if (i->car_->at_mom () > mom)
        {
          Moment dur = i->car_->at_mom () - mom;
@@ -62,17 +65,67 @@ Mudela_staff::eat_voice (Cons_list<Mudela_item>& items)
          Mudela_column* start = mudela_score_l_g->find_column_l (mom);
          voice_p->add_item (new Mudela_skip (start, dur));
          mom = i->car_->at_mom ();
+         continue;             // unnecessary
        }
-      if (i->car_->at_mom () == mom)
+      
+      Link_array<Mudela_item> now_items;
+      for (Cons<Mudela_item> *cp = i; cp && cp->car_->at_mom () == mom; cp = cp->next_)
+       now_items.push (i->car_);
+
+      Mudela_item * which = 0;
+      Mudela_note * last_note = dynamic_cast<Mudela_note*> (voice_p->last_item_l_);
+
+      for (int i=0; !which && last_note && i < now_items.size (); i++)
        {
-         mom = i->car_->at_mom () + i->car_->duration_mom ();
-         Cons<Mudela_item>* c = items.remove_cons (pp);
-         voice_p->add_item (c->car_);
-         delete c;
+         Mudela_note * now_note = dynamic_cast<Mudela_note*> (now_items[i]);
+         if (now_note && last_note->channel_i_ != now_note->channel_i_)
+           which = now_note;
        }
-      else if (*pp)
-       pp = &i->next_;
-      LOGOUT (DEBUG_ver) << "mom: " << mom.str () << '\n';
+
+#if 0
+      // use pitch difference for determining which item to pick.
+      if (!which)
+       {
+         int mindiff = 100000; // ugh
+         for (int i=0; !which && last_note && i < now_items.size (); i++)
+           {
+             Mudela_note *nt = dynamic_cast<Mudela_note*> (now_items[i]);
+             if (!nt)
+               continue;
+             int diff = abs (last_note->pitch_i_ - nt->pitch_i_ );
+             if(diff < mindiff)
+               {
+                 mindiff =  diff;
+                 which = now_items [i];
+               }
+           }
+
+         if (which && mindiff > 18)            // more than 1.5 octaves apart.  Don't put in same voice.
+           {
+             which =0;
+           }
+
+       }
+#endif
+      
+      if (!which && now_items.size ())
+       which = now_items[0];
+
+      
+
+      if (!which)
+       {
+         pp = &(*pp)->next_;
+         continue;
+       }
+      
+      while ((*pp)->car_ != which)
+       pp = &(*pp)->next_;
+      
+      mom += (*pp)->car_->duration_mom ();
+      Cons<Mudela_item>* c = items.remove_cons (pp);
+      voice_p->add_item (c->car_);
+      delete c;
     }
 }
 
@@ -105,25 +158,27 @@ Mudela_staff::name_str ()
 void
 Mudela_staff::output (Mudela_stream& mudela_stream_r)
 {
-  mudela_stream_r << id_str () << " = \\notes";
-  mudela_stream_r << (mudela_voice_p_list_.size_i () > 1 ? "<" : "{");
-  mudela_stream_r << '\n';
+  int c =0;
+  
+  String trackbody = "";
+  for (Cons<Mudela_voice>* i = mudela_voice_p_list_.head_; i; i = i->next_)
+    {
+      String voicename = id_str () + "voice" + to_str (char (c + 'A'));
+      
+      mudela_stream_r << voicename << " = \\notes ";
+
+      trackbody += "\\"  + voicename + "\n";
+
+      mudela_stream_r << "\n";
+      i->car_->output (mudela_stream_r);
+      c++;      
+    }
+
   mudela_stream_r << _ ("% midi copyright:") << copyright_str_ << '\n';
   mudela_stream_r << _ ("% instrument:") << instrument_str_ << '\n';
+  mudela_stream_r << id_str () << " = ";
+  mudela_stream_r << "<\n " << trackbody << " >\n";
 
-  // don't use last duration mode
-  //  mudela_stream_r << "\\duration 4;\n";
-  if (mudela_voice_p_list_.size_i () == 1)
-    mudela_voice_p_list_.head_->car_->output (mudela_stream_r);
-  else
-      for (Cons<Mudela_voice>* i = mudela_voice_p_list_.head_; i; i = i->next_)
-      {
-       mudela_stream_r << "{ ";
-       i->car_->output (mudela_stream_r);
-       mudela_stream_r << "} ";
-      }
-
-  mudela_stream_r << (mudela_voice_p_list_.size_i () > 1 ? "\n>" : "\n}");
   mudela_stream_r << " % " << name_str () << '\n';
 }
 
index 402b6142b3aa29bba8c82eb22ff811862876cb4d..5484b658a25c5aafa850cc92bf4f4d9b474c08d5 100644 (file)
@@ -92,7 +92,7 @@ Mudela_stream::header()
   *os_p_ << filename_str_g;
   *os_p_ << "\n\n";
   // ugh
-  *os_p_ << "\\version \"1.1.60\";\n";
+  *os_p_ << "\\version \"1.2.7\";\n";
 }
 
 void
index 67070742efa884e48d0431fb29baf94eaaf37db9..65691d073c4c5436c318f2a86daa61c7a61e0b25 100644 (file)
@@ -17,26 +17,55 @@ extern Mudela_score* mudela_score_l_g;
 Mudela_voice::Mudela_voice (Mudela_staff* mudela_staff_l)
 {
   mudela_staff_l_ = mudela_staff_l;
+  last_item_l_ =0;
 }
 
 void
 Mudela_voice::add_item (Mudela_item* mudela_item_l)
 {
+  last_item_l_  = mudela_item_l;
   mudela_item_l_list_.append (new Cons<Mudela_item> (mudela_item_l, 0));
 }
 
+/**
+   analyse pitches to determine clef.
+ */
+String
+Mudela_voice::get_clef () const
+{
+  Mudela_note * n =0;
+
+  for (Cons<Mudela_item> *cp = mudela_item_l_list_.head_; !n && cp; cp = cp->next_)
+    {
+      n = dynamic_cast<Mudela_note*> (cp->car_);
+    }
+  
+  if (!n)
+    return "";
+
+  const int c0_pitch = 60;
+  int p = n->pitch_i_;
+
+  if (p < 56)
+    return "\\clef \"bass\";\n";
+  else if (p > 67)
+    return "\\clef \"treble\";\n";
+  else
+    return "";
+}
 
 static int const FAIRLY_LONG_VOICE_i = 6;
 
 void
 Mudela_voice::output (Mudela_stream& mudela_stream_r)
 {
-  if (!mudela_item_l_list_.size_i ())
-    return;
-  
+  mudela_stream_r << "{ ";
   if (mudela_item_l_list_.size_i () > FAIRLY_LONG_VOICE_i)
     mudela_stream_r << '\n';
 
+
+  mudela_stream_r << get_clef () << '\n';
+  
   int current_bar_i = 0;
   Moment bar_mom = mudela_staff_l_->mudela_time_signature_l_->bar_mom ();
 
@@ -65,5 +94,8 @@ Mudela_voice::output (Mudela_stream& mudela_stream_r)
 
   if (mudela_item_l_list_.size_i () > FAIRLY_LONG_VOICE_i)
     mudela_stream_r << '\n';
+
+  mudela_stream_r << "} ";
 }
 
+
index 66cadce854d39d215c6db3af5dc71a8633470e24..f48bb143cd6b15937de2715fb0967fb61076885e 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 1999-08-20 18:48+0200\n"
+"POT-Creation-Date: 1999-09-15 23:21+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -45,12 +45,7 @@ msgstr ""
 msgid "unrecognized option: `%s'"
 msgstr ""
 
-#: getopt-long.cc:151
-#, c-format
-msgid "%c"
-msgstr ""
-
-#: getopt-long.cc:155
+#: getopt-long.cc:156
 #, c-format
 msgid "invalid argument `%s' to option `%s'"
 msgstr ""
@@ -77,18 +72,10 @@ msgstr ""
 msgid "position unknown"
 msgstr ""
 
-#: mapped-file-storage.cc:65
-msgid "map_fd: "
-msgstr ""
-
 #: mapped-file-storage.cc:74
 msgid "can't map file"
 msgstr ""
 
-#: mapped-file-storage.cc:109
-msgid "vm_deallocate: "
-msgstr ""
-
 #: simple-file-storage.cc:56
 #, c-format
 msgid "Huh? got %d, expected %d characters"
@@ -124,7 +111,7 @@ msgstr ""
 
 #: all-font-metrics.cc:75
 #, c-format
-msgid "search path = %s"
+msgid "(search path: `%s)'"
 msgstr ""
 
 #: beam-engraver.cc:42
@@ -155,11 +142,11 @@ msgstr ""
 msgid "beam was started here"
 msgstr ""
 
-#: beam.cc:142
+#: beam.cc:147
 msgid "beam with less than two stems"
 msgstr ""
 
-#: beam.cc:307
+#: beam.cc:312
 msgid "weird beam shift, check your knees"
 msgstr ""
 
@@ -228,7 +215,7 @@ msgid "unknown clef type "
 msgstr ""
 
 #: collision.cc:95
-msgid "Too many clashing notecolumns. Ignoring them."
+msgid "Too many clashing notecolumns.  Ignoring them."
 msgstr ""
 
 #: crescendo.cc:42
@@ -289,7 +276,7 @@ msgid "No Grace context available!"
 msgstr ""
 
 #: grace-position-engraver.cc:89
-msgid "Unattached grace notes. Attaching to last musical column."
+msgid "Unattached grace notes.  Attaching to last musical column."
 msgstr ""
 
 #: hyphen-engraver.cc:60
@@ -305,16 +292,15 @@ msgstr ""
 msgid "%s expected"
 msgstr ""
 
-#: includable-lexer.cc:47 midi-score-parser.cc:24 scores.cc:108 scores.cc:114
+#: includable-lexer.cc:47 lily-guile.cc:82 lily-guile.cc:105
+#: midi-score-parser.cc:24 scores.cc:108 scores.cc:114
 #, c-format
 msgid "can't find file: `%s'"
 msgstr ""
 
-#: includable-lexer.cc:48
+#: includable-lexer.cc:49 lookup.cc:104 scores.cc:109
 #, c-format
-msgid ""
-"\n"
-"Search path is `%s'\n"
+msgid "(search path: `%s')"
 msgstr ""
 
 #: ineq-constrained-qp.cc:169
@@ -340,12 +326,7 @@ msgstr ""
 
 #: lily-guile.cc:84 lily-guile.cc:107
 #, c-format
-msgid "Can not find file `%s'"
-msgstr ""
-
-#: lily-guile.cc:86 lily-guile.cc:109
-#, c-format
-msgid "(Load path is `%s'"
+msgid "(load path: `%s')"
 msgstr ""
 
 #: local-key-engraver.cc:42
@@ -358,12 +339,7 @@ msgstr ""
 
 #: lookup.cc:103
 #, c-format
-msgid "Can't open `%s'\n"
-msgstr ""
-
-#: lookup.cc:104
-#, c-format
-msgid "Search path %s\n"
+msgid "can't find font: `%s'"
 msgstr ""
 
 #: lookup.cc:105
@@ -468,29 +444,29 @@ msgstr ""
 msgid "This binary was compiled with the following options:"
 msgstr ""
 
-#: main.cc:118 main.cc:119
+#: main.cc:119
 msgid "Report bugs to"
 msgstr ""
 
-#: main.cc:52 main.cc:134
+#: main.cc:52 main.cc:135
 #, c-format
 msgid ""
-"This is free software.  It is covered by the GNU General Public License,and "
-"you are welcome to change it and/or distribute copies of it undercertain "
-"conditions.  Invoke as `%s --warranty' for more information.\n"
+"This is free software.  It is covered by the GNU General Public License,\n"
+"and you are welcome to change it and/or distribute copies of it under\n"
+"certain conditions.  Invoke as `%s --warranty' for more information.\n"
 msgstr ""
 
-#: main.cc:59 main.cc:141 main.cc:153
+#: main.cc:59 main.cc:142 main.cc:154
 #, c-format
 msgid "Copyright (c) %s by"
 msgstr ""
 
 #. GNU GNU?
-#: main.cc:151
+#: main.cc:152
 msgid "GNU LilyPond -- The GNU Project music typesetter"
 msgstr ""
 
-#: main.cc:68 main.cc:159
+#: main.cc:68 main.cc:160
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
 "modify it under the terms of the GNU General Public License version 2\n"
@@ -534,7 +510,7 @@ msgid "Interpretation context with empty type"
 msgstr ""
 
 #: music-output-def.cc:83
-msgid "Can't find Score context"
+msgid "can't find Score context"
 msgstr ""
 
 #: musical-request.cc:42
@@ -647,7 +623,7 @@ msgstr ""
 
 #: request-chord-iterator.cc:76
 #, c-format
-msgid "Huh? Not a Request: `%s'"
+msgid "Huh?  Not a Request: `%s'"
 msgstr ""
 
 #: rest-collision.cc:64
@@ -694,18 +670,13 @@ msgstr ""
 msgid "score contains errors; will not process it"
 msgstr ""
 
-#: scores.cc:109
-#, c-format
-msgid "Search path: %s"
-msgstr ""
-
 #: script-engraver.cc:49
 #, c-format
 msgid "don't know how to interpret articulation `%s'\n"
 msgstr ""
 
 #. this shouldn't happen, but let's continue anyway.
-#: single-malt-grouping-item.cc:42
+#: single-malt-grouping-item.cc:43
 msgid "Single_malt_grouping_item: I've been drinking too much"
 msgstr ""
 
@@ -722,25 +693,25 @@ msgstr ""
 msgid "slur"
 msgstr ""
 
-#: slur.cc:39
+#: slur.cc:38
 msgid "Putting slur over rest. Ignoring"
 msgstr ""
 
-#: spacing-spanner.cc:215
+#: spacing-spanner.cc:218
 #, c-format
 msgid "can't find a ruling note at %s"
 msgstr ""
 
-#: spacing-spanner.cc:221
+#: spacing-spanner.cc:224
 #, c-format
 msgid "no minimum in measure at %s"
 msgstr ""
 
-#: spanner.cc:39
+#: spanner.cc:41
 msgid "left spanpoint is right spanpoint\n"
 msgstr ""
 
-#: spanner.cc:109
+#: spanner.cc:111
 #, c-format
 msgid "Spanner `%s' with equal left and right spanpoints"
 msgstr ""
@@ -753,6 +724,15 @@ msgstr ""
 msgid "solution doesn't satisfy constraints"
 msgstr ""
 
+#: spring-spacer.cc:378
+#, c-format
+msgid "Improbable distance: %f point, setting to 10 mm"
+msgstr ""
+
+#: spring-spacer.cc:383
+msgid "Negative distance. Setting to 10 mm"
+msgstr ""
+
 #: stem-engraver.cc:80
 #, c-format
 msgid "Adding note head to incompatible stem (type = %d)"
@@ -953,28 +933,6 @@ msgid ""
 "LilyPond is a music typesetter.  It produces beautiful sheet music\n"
 "using a high level description file as input.  LilyPond is part of \n"
 "the GNU Project.\n"
-"\n"
-msgstr ""
-
-#: out/COPERTINA.hh:2
-msgid ""
-"LilyPond è il programma di notazione musicale del progetto\n"
-"GNU. Questo programma può generare delle ottime partiture musicali\n"
-"a partire da un file contenente la descrizione della musica. Può\n"
-"anche generare esecuzioni meccaniche della partitura in formato\n"
-"MIDI. Le caratteristiche del programma includono un versatile\n"
-"linguaggio di descrizione musicale, pentagrammi multipli, segni di\n"
-"divisione, chiavi, tasti, parole, cadenze, legature, acciaccature,\n"
-"terzine, segni di formattazione ed estrazione delle parte. Nella\n"
-"distribuzione è compreso anche un fort di simboli musicali.\n"
-"\n"
-msgstr ""
-
-#: out/FLAPTEKST.hh:2
-msgid ""
-"LilyPond is een muziekzetter.  Zij maakt prachtige bladmuziek\n"
-"uitgaande van een hoog niveau beschrijving bestand.  LilyPond \n"
-"maakt deel uit van het GNU Project.\n"
 msgstr ""
 
 #: main.cc:90
index 1f5dfdd10cb1f26a793d11bafa19094812a7909c..64d3a1ebb20f4ae6071a8fff6128cec2d6ffb4fb 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -4,7 +4,7 @@
 #
 msgid ""
 msgstr ""
-"POT-Creation-Date: 1999-08-20 18:48+0200\n"
+"POT-Creation-Date: 1999-09-15 23:21+0200\n"
 "Content-Type: text/plain; charset=\n"
 "Date: 1998-05-26 11:26:28+0200\n"
 "From:  <janneke@gnu.org>\n"
@@ -43,12 +43,7 @@ msgstr "optie `%s' staat geen argument toe"
 msgid "unrecognized option: `%s'"
 msgstr "onbekende optie: `%s'"
 
-#: getopt-long.cc:151
-#, c-format
-msgid "%c"
-msgstr ""
-
-#: getopt-long.cc:155
+#: getopt-long.cc:156
 #, c-format
 msgid "invalid argument `%s' to option `%s'"
 msgstr "onjuist argument: `%s' voor optie `%s'"
@@ -75,18 +70,10 @@ msgstr "Niet noodlottige fout: "
 msgid "position unknown"
 msgstr "positie onbekend"
 
-#: mapped-file-storage.cc:65
-msgid "map_fd: "
-msgstr ""
-
 #: mapped-file-storage.cc:74
 msgid "can't map file"
 msgstr "kan bestand niet inkaarten"
 
-#: mapped-file-storage.cc:109
-msgid "vm_deallocate: "
-msgstr ""
-
 #: simple-file-storage.cc:56
 #, c-format
 msgid "Huh? got %d, expected %d characters"
@@ -122,16 +109,16 @@ msgstr "Kan verval font `%s' niet vinden, ik geef op."
 
 #: all-font-metrics.cc:75
 #, c-format
-msgid "search path = %s"
-msgstr "zoek pad = %s"
+msgid "(search path: `%s)'"
+msgstr "(zoekpad: `%s')"
 
 #: beam-engraver.cc:42
 msgid "No Beam to end"
-msgstr "Geen Balk te beëidigen"
+msgstr "geen Balk te beëidigen"
 
 #: beam-engraver.cc:58
 msgid "No beam to end"
-msgstr "Geen balk te beëindigen"
+msgstr "geen balk te beëindigen"
 
 #: beam-engraver.cc:87
 msgid "Already have a Beam"
@@ -153,13 +140,13 @@ msgstr "stok past niet in balk"
 msgid "beam was started here"
 msgstr "balk is hier gestart"
 
-#: beam.cc:142
+#: beam.cc:147
 msgid "beam with less than two stems"
 msgstr "balk met minder dan twee stokken"
 
-#: beam.cc:307
+#: beam.cc:312
 msgid "weird beam shift, check your knees"
-msgstr "vreemde balk verplaatsing, controleer uw knie-en"
+msgstr "vreemde balk verplaatsing, controleer balken"
 
 #: break-algorithm.cc:25
 msgid "0 lines"
@@ -201,33 +188,33 @@ msgstr "kan `%s' niet in `%s' veranderen"
 
 #: chord-tremolo-engraver.cc:41 chord-tremolo-engraver.cc:58
 msgid "No abbreviation beam to end"
-msgstr ""
+msgstr "Geen tremolo balk te beëindigen"
 
 #: chord-tremolo-engraver.cc:83
 msgid "Already have an abbreviation beam"
-msgstr ""
+msgstr "Heb al een tremolo balk"
 
 #: chord-tremolo-engraver.cc:124
 msgid "Unfinished abbreviation beam"
-msgstr ""
+msgstr "Onbeëindigde tremolo balk"
 
 #: chord.cc:231
 #, c-format
 msgid "invalid subtraction: not part of chord: %s"
-msgstr ""
+msgstr "ongeldige aftrek: maakt geen deel uit van accoord: %s"
 
 #: chord.cc:245
 #, c-format
 msgid "invalid inversion pitch: not part of chord: %s"
-msgstr ""
+msgstr "ongeldige inversie toon: maakt geen deel uit van accoord: %s"
 
 #: clef-engraver.cc:178
 msgid "unknown clef type "
-msgstr "onbekende sleutel"
+msgstr "onbekend type sleutel "
 
 #: collision.cc:95
-msgid "Too many clashing notecolumns. Ignoring them."
-msgstr "Te veel botsende nootkolommen.  Ik negeer ze."
+msgid "Too many clashing notecolumns.  Ignoring them."
+msgstr "Te veel botsende nootkolommen.  Negeer ze."
 
 #: crescendo.cc:42
 msgid "crescendo"
@@ -243,7 +230,7 @@ msgstr "Drijvende komma uitzondering"
 
 #: debug.cc:139
 msgid "can't set mem-checking"
-msgstr ""
+msgstr "kan geheugen controle niet zetten"
 
 #: dimensions.cc:13
 msgid "NaN"
@@ -251,15 +238,15 @@ msgstr "NaN"
 
 #: dynamic-engraver.cc:109
 msgid "Got a dynamic already.  Continuing dazed and confused"
-msgstr ""
+msgstr "Heb al een dynamiek.  Ga verder, verstrooid en verward"
 
 #: dynamic-engraver.cc:162
 msgid "can't find (de)crescendo to end"
-msgstr ""
+msgstr "kan te beëindigen (de)crescendo niet vinden"
 
 #: dynamic-engraver.cc:216
 msgid "Too many crescendi here"
-msgstr ""
+msgstr "Te veel cescendi hier"
 
 #: dynamic-engraver.cc:254
 msgid "unended crescendo"
@@ -267,28 +254,30 @@ msgstr "niet beeindigd crescendo"
 
 #: encompass-info.cc:32
 msgid "Slur over rest?"
-msgstr ""
+msgstr "Boogje over rust?"
 
 #: encompass-info.cc:67 stem-info.cc:140
 msgid ""
 "minVerticalAlign != maxVerticalAlign: interstaff beams/slurs may be broken"
 msgstr ""
+"minVerticalAlign != maxVerticalAlign: balken/boogjes tussen notenbalken "
+"kunnen breken"
 
 #: extender-engraver.cc:62
 msgid "unterminated extender"
-msgstr ""
+msgstr "onbeëindigde extender"
 
 #: folded-repeat-iterator.cc:64
 msgid "No one to print a repeat brace"
-msgstr ""
+msgstr "Niemand om een herhalings haak af te drukken"
 
 #: grace-iterator.cc:43
 msgid "No Grace context available!"
-msgstr ""
+msgstr "Geen Grace context voor handen"
 
 #: grace-position-engraver.cc:89
-msgid "Unattached grace notes. Attaching to last musical column."
-msgstr ""
+msgid "Unattached grace notes.  Attaching to last musical column."
+msgstr "Losse grace noten.  Maak ze vast aan vorige muziekale kolom."
 
 #: hyphen-engraver.cc:60
 msgid "unterminated hyphen"
@@ -296,24 +285,22 @@ msgstr "onafgesloten balk"
 
 #: identifier.cc:46
 msgid "Wrong identifier type: "
-msgstr ""
+msgstr "Verkeerd type identifier: "
 
 #: identifier.cc:47
 #, c-format
 msgid "%s expected"
 msgstr "%s verwacht"
 
-#: includable-lexer.cc:47 midi-score-parser.cc:24 scores.cc:108 scores.cc:114
+#: includable-lexer.cc:47 lily-guile.cc:82 lily-guile.cc:105
+#: midi-score-parser.cc:24 scores.cc:108 scores.cc:114
 #, c-format
 msgid "can't find file: `%s'"
 msgstr "kan bestand niet vinden: `%s'"
 
-#: includable-lexer.cc:48
-#, c-format
-msgid ""
-"\n"
-"Search path is `%s'\n"
-msgstr ""
+#: includable-lexer.cc:49 lookup.cc:104 scores.cc:109
+msgid "(search path: `%s')"
+msgstr "(zoekpad: `%s')"
 
 #: ineq-constrained-qp.cc:169
 #, c-format
@@ -322,29 +309,24 @@ msgstr "Ineq_constrained_qp::solve (): voorwaarde zit er %f naast"
 
 #: ineq-constrained-qp.cc:233
 msgid "didn't converge!"
-msgstr "ik convergederde niet!"
+msgstr "convergeerde niet!"
 
 #: ineq-constrained-qp.cc:235
 msgid "Too much degeneracy. "
-msgstr ""
+msgstr "Te veel degenaratie. "
 
 #: key-def.cc:31
 msgid "No key name: assuming `C'"
-msgstr ""
+msgstr "Geen toonsoort: ga uit van `C'"
 
 #: key-def.cc:92
 msgid "don't know how handle empty keys"
-msgstr ""
+msgstr "weet niet hoe lege toonsoorten te behandelen"
 
 #: lily-guile.cc:84 lily-guile.cc:107
 #, c-format
-msgid "Can not find file `%s'"
-msgstr ""
-
-#: lily-guile.cc:86 lily-guile.cc:109
-#, c-format
-msgid "(Load path is `%s'"
-msgstr ""
+msgid "(load path: `%s')"
+msgstr "(zoekpad: `%s')"
 
 #: local-key-engraver.cc:42
 msgid "out of tune"
@@ -355,23 +337,17 @@ msgid "can't find"
 msgstr "kan niet vinden"
 
 #: lookup.cc:103
-#, c-format
-msgid "Can't open `%s'\n"
-msgstr ""
-
-#: lookup.cc:104
-#, c-format
-msgid "Search path %s\n"
-msgstr ""
+msgid "can't find font: `%s'"
+msgstr "kan font niet vinden: `%s'"
 
 #: lookup.cc:105
 msgid "Aborting"
-msgstr ""
+msgstr "Breek af"
 
 #: lookup.cc:436
 #, c-format
 msgid "Non-matching braces in text `%s', adding braces."
-msgstr ""
+msgstr "Ongepaarde haakjes in tekst `%s', voeg haakje toe."
 
 #: main.cc:68
 msgid "BASENAME"
@@ -391,7 +367,7 @@ msgstr "deze hulp"
 
 #: main.cc:71
 msgid "switch on experimental features"
-msgstr "doe experimentele kunstjes"
+msgstr "zet experimentele kunstjes aan"
 
 #: main.cc:72 main.cc:91
 msgid "enable debugging output"
@@ -466,29 +442,33 @@ msgstr "Opties:"
 msgid "This binary was compiled with the following options:"
 msgstr "Dit programma is vertaald met de volgende instellingen:"
 
-#: main.cc:118 main.cc:119
+#: main.cc:119
 msgid "Report bugs to"
 msgstr "Rapporteer bugs naar"
 
-#: main.cc:52 main.cc:134
+#: main.cc:52 main.cc:135
 #, c-format
 msgid ""
-"This is free software.  It is covered by the GNU General Public License,and "
-"you are welcome to change it and/or distribute copies of it undercertain "
-"conditions.  Invoke as `%s --warranty' for more information.\n"
+"This is free software.  It is covered by the GNU General Public License,\n"
+"and you are welcome to change it and/or distribute copies of it under\n"
+"certain conditions.  Invoke as `%s --warranty' for more information.\n"
 msgstr ""
+"Dit is vrije programmatuur.  Het valt onder de GNU Algemene Openbare\n"
+"Licentie, en u wordt uitgenodigd het te veranderen en/of te verspreiden\n"
+"onder bepaalde voorwaarden.  Roep aan als `%s --warranty' voor meer\n"
+"informatie.\n"
 
-#: main.cc:59 main.cc:141 main.cc:153
+#: main.cc:59 main.cc:142 main.cc:154
 #, c-format
 msgid "Copyright (c) %s by"
 msgstr "Copyright (c) %s "
 
 #. GNU GNU?
-#: main.cc:151
+#: main.cc:152
 msgid "GNU LilyPond -- The GNU Project music typesetter"
 msgstr "GNU LilyPond -- De Muziekzetter van het GNU Project"
 
-#: main.cc:68 main.cc:159
+#: main.cc:68 main.cc:160
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
 "modify it under the terms of the GNU General Public License version 2\n"
@@ -504,7 +484,7 @@ msgid ""
 "the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
 "USA.\n"
 msgstr ""
-"    Dit programma is vrij bedenksel; u mag het verspreiden en/of\n"
+"    Dit programma is vrije programmatuur; u kunt het verspreiden en/of\n"
 "veranderen onder de voorwaarden van de GNU Algemene Openbare Licentie\n"
 "versie 2, zoals gepubliceerd door de Free Software Foundation.\n"
 "\n"
@@ -513,15 +493,15 @@ msgstr ""
 "het UITBATEN of als zijnde GESCHIKT VOOR EEN BEPAALD DOEL.  Zie de GNU\n"
 "Algemene Openbare Licentie voor details.\n"
 "\n"
-"    Als het goed is, heeft u bij dit programma een copie (zie het bestand\n"
-"COPYING) ontvangen van de GNU Algemene Openbare Licentie; zoniet, schrijf\n"
-"dan naar de Free Software Foundation, Inc., 675 Mass Ave, Cambridge, \n"
-"MA 02139, USA.\n"
+"    Als het goed is, heeft u bij dit programma een exemplaar (zie het\n"
+"bestand COPYING) ontvangen van de GNU Algemene Openbare Licentie;\n"
+"zoniet, schrijf dan naar de Free Software Foundation, Inc.,\n"
+"675 Mass Ave, Cambridge, MA 02139, USA.\n"
 
 #: midi-item.cc:303
 #, c-format
 msgid "No such instrument: `%s'"
-msgstr ""
+msgstr "Geen zulks instrument: `%s'"
 
 #: midi-item.cc:357
 #, c-format
@@ -538,15 +518,15 @@ msgstr "rare toonhoogte"
 
 #: midi-stream.cc:29 paper-stream.cc:36
 msgid "error syncing file (disk full?)"
-msgstr "kan file niet wegschrijven (disk vol?)"
+msgstr "fout by synchroniseren van bestand (disk vol?)"
 
 #: music-output-def.cc:56
 msgid "Interpretation context with empty type"
-msgstr ""
+msgstr "Vertaal context met leeg type"
 
 #: music-output-def.cc:83
-msgid "Can't find Score context"
-msgstr ""
+msgid "can't find Score context"
+msgstr "kan Score context niet vinden"
 
 #: musical-request.cc:42
 #, c-format
@@ -561,12 +541,12 @@ msgstr "`\\%s' wordt opnieuw gedeclareerd"
 #: my-lily-lexer.cc:143
 #, c-format
 msgid "Identifier name is a keyword (`%s')"
-msgstr ""
+msgstr "Identifier naam is een sleutelwoord (`%s')"
 
 #: my-lily-lexer.cc:172
 #, c-format
 msgid "error at EOF: %s"
-msgstr "fout aan het einde van file: %s"
+msgstr "fout bij EOF: %s"
 
 #: my-lily-parser.cc:60
 msgid "Parsing..."
@@ -574,26 +554,26 @@ msgstr "Ontleden..."
 
 #: my-lily-parser.cc:69
 msgid "braces don't match"
-msgstr "haakjes passen niet"
+msgstr "haakjes paren niet"
 
 #: paper-def.cc:95
 #, c-format
 msgid "unknown paper variable: `%s'"
-msgstr "onbekende \\paper variabele"
+msgstr "onbekende papier varanderlijke: `%s'"
 
 #: paper-def.cc:99
 msgid "not a real variable"
-msgstr "variabele is geen reeal getal"
+msgstr "niet een reële veranderlijke"
 
 #. for now; breaks -fscm output
 #: paper-def.cc:251
 msgid "outputting Score, defined at: "
-msgstr ""
+msgstr "uitvoer Score, gedefinieerd op: "
 
 #: paper-def.cc:280
 #, c-format
 msgid "Paper output to %s..."
-msgstr ""
+msgstr "Papier uitvoer naar %s..."
 
 #: mudela-stream.cc:85 paper-outputter.cc:76 performance.cc:97
 msgid ", at "
@@ -602,7 +582,7 @@ msgstr ", bij "
 #: paper-outputter.cc:130
 #, c-format
 msgid "Improbable offset for object type `%s'"
-msgstr ""
+msgstr "Onwaarschijnlijke verschuiving voor object type `%s'"
 
 #: paper-score.cc:131
 msgid "Can't solve this casting problem exactly; revert to Word_wrap"
@@ -618,15 +598,15 @@ msgstr "Berekenen van kolomposities..."
 
 #: paper-score.cc:179
 msgid " elements. "
-msgstr ""
+msgstr " elementen. "
 
 #: paper-score.cc:182
 msgid "Line ... "
-msgstr ""
+msgstr "Regel ..."
 
 #: performance.cc:50
 msgid "Track ... "
-msgstr ""
+msgstr "Spoor ... "
 
 #. perhaps multiple text events?
 #: performance.cc:77
@@ -658,16 +638,16 @@ msgstr "schroot verzoek: `%s'"
 
 #: request-chord-iterator.cc:76
 #, c-format
-msgid "Huh? Not a Request: `%s'"
-msgstr ""
+msgid "Huh?  Not a Request: `%s'"
+msgstr "Huh?  Geen Request: `%s'"
 
 #: rest-collision.cc:64
 msgid "Too many colliding rests."
-msgstr ""
+msgstr "Te veer botsende rusten."
 
 #: rest-collision.cc:68
 msgid "Too many notes for rest collision."
-msgstr ""
+msgstr "Te veel noten voor bosting met rusten."
 
 #: score-engraver.cc:149
 #, c-format
@@ -676,7 +656,7 @@ msgstr "Vrijgezelle spanner `%s'"
 
 #: score.cc:56
 msgid "no toplevel translator"
-msgstr ""
+msgstr "geen hoogste niveau vertaler"
 
 #: score.cc:59
 msgid "Interpreting music..."
@@ -689,7 +669,7 @@ msgstr "zonder muziek geen partituur"
 #. should we? hampers debugging.
 #: score.cc:83
 msgid "errors found, /*not processing score*/"
-msgstr ""
+msgstr "fouten gevonden, /*verwerk partituur niet */"
 
 #: score.cc:88
 #, c-format
@@ -699,16 +679,11 @@ msgstr "duur: %.2f seconden"
 #: scores.cc:35
 #, c-format
 msgid "writing dependency file: `%s'..."
-msgstr ""
+msgstr "schijven van afhankelijkheden bestand: `%s'..."
 
 #: scores.cc:79
 msgid "score contains errors; will not process it"
-msgstr ""
-
-#: scores.cc:109
-#, c-format
-msgid "Search path: %s"
-msgstr ""
+msgstr "partituur bevat fouten; zal hem niet verwerken"
 
 #: script-engraver.cc:49
 #, c-format
@@ -716,13 +691,13 @@ msgid "don't know how to interpret articulation `%s'\n"
 msgstr ""
 
 #. this shouldn't happen, but let's continue anyway.
-#: single-malt-grouping-item.cc:42
+#: single-malt-grouping-item.cc:43
 msgid "Single_malt_grouping_item: I've been drinking too much"
 msgstr ""
 
 #: slur-engraver.cc:64
 msgid "unterminated slur"
-msgstr "onsterfelijke boog"
+msgstr "onbeëindigde boog"
 
 #: slur-engraver.cc:80
 #, c-format
@@ -731,27 +706,27 @@ msgstr "kan uiteinden van %s niet beide vinden"
 
 #: slur-engraver.cc:80
 msgid "slur"
-msgstr ""
+msgstr "boog"
 
-#: slur.cc:39
+#: slur.cc:38
 msgid "Putting slur over rest. Ignoring"
 msgstr ""
 
-#: spacing-spanner.cc:215
+#: spacing-spanner.cc:218
 #, c-format
 msgid "can't find a ruling note at %s"
 msgstr ""
 
-#: spacing-spanner.cc:221
+#: spacing-spanner.cc:224
 #, c-format
 msgid "no minimum in measure at %s"
 msgstr ""
 
-#: spanner.cc:39
+#: spanner.cc:41
 msgid "left spanpoint is right spanpoint\n"
 msgstr ""
 
-#: spanner.cc:109
+#: spanner.cc:111
 #, c-format
 msgid "Spanner `%s' with equal left and right spanpoints"
 msgstr ""
@@ -764,6 +739,15 @@ msgstr ""
 msgid "solution doesn't satisfy constraints"
 msgstr ""
 
+#: spring-spacer.cc:378
+#, c-format
+msgid "Improbable distance: %f point, setting to 10 mm"
+msgstr ""
+
+#: spring-spacer.cc:383
+msgid "Negative distance. Setting to 10 mm"
+msgstr ""
+
 #: stem-engraver.cc:80
 #, c-format
 msgid "Adding note head to incompatible stem (type = %d)"
@@ -964,33 +948,10 @@ msgid ""
 "LilyPond is a music typesetter.  It produces beautiful sheet music\n"
 "using a high level description file as input.  LilyPond is part of \n"
 "the GNU Project.\n"
-"\n"
 msgstr ""
 "LilyPond is een muziekzetter.  Zij maakt prachtige bladmuziek\n"
 "uitgaande van een hoog niveau beschrijving bestand.  LilyPond \n"
 "maakt deel uit van het GNU Project.\n"
-"\n"
-
-#: out/COPERTINA.hh:2
-msgid ""
-"LilyPond è il programma di notazione musicale del progetto\n"
-"GNU. Questo programma può generare delle ottime partiture musicali\n"
-"a partire da un file contenente la descrizione della musica. Può\n"
-"anche generare esecuzioni meccaniche della partitura in formato\n"
-"MIDI. Le caratteristiche del programma includono un versatile\n"
-"linguaggio di descrizione musicale, pentagrammi multipli, segni di\n"
-"divisione, chiavi, tasti, parole, cadenze, legature, acciaccature,\n"
-"terzine, segni di formattazione ed estrazione delle parte. Nella\n"
-"distribuzione è compreso anche un fort di simboli musicali.\n"
-"\n"
-msgstr ""
-
-#: out/FLAPTEKST.hh:2
-msgid ""
-"LilyPond is een muziekzetter.  Zij maakt prachtige bladmuziek\n"
-"uitgaande van een hoog niveau beschrijving bestand.  LilyPond \n"
-"maakt deel uit van het GNU Project.\n"
-msgstr ""
 
 #: main.cc:90
 msgid "write exact durations, e.g.: a4*385/384"
@@ -1168,43 +1129,3 @@ msgstr ""
 #, c-format
 msgid "% from input file: "
 msgstr ""
-
-#~ msgid "this help "
-#~ msgstr "deze hulp"
-
-#~ msgid "GNU LilyPond is Free Software, see --warranty"
-#~ msgstr "GNU LilyPond is Vrij bedenksel, zie --warranty"
-
-#~ msgid "Midi2ly, translate midi to mudela"
-#~ msgstr "Midi2ly, vertaal midi naar mudela"
-
-#~ msgid "of"
-#~ msgstr "van"
-
-#~ msgid "please fix me"
-#~ msgstr "repareer mij alsjeblieft"
-
-#~ msgid "stem at %s doesn't fit in beam"
-#~ msgstr "stok op %s past niet in balk"
-
-#~ msgid "No stem direction set. Ignoring column in clash."
-#~ msgstr "Geen stokrichting gezet.  Negeer kolom in botsing."
-
-#~ msgid "script needs stem direction"
-#~ msgstr "schrift benodigt stokrichting"
-
-#~ msgid ""
-#~ "LilyPond is the GNU Project music typesetter.  This program can print\n"
-#~ "beautiful sheet music from a music definition file.  It can also play\n"
-#~ "mechanical performances to a MIDI file.  Features include multiple\n"
-#~ "staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,\n"
-#~ "beams, slurs, triplets, named chords, transposing, formatting scores, \n"
-#~ "part extraction.  It includes a nice font of musical symbols.\n"
-#~ msgstr ""
-#~ "LilyPond is de muziekzetter van het GNU Project.  Dit programma drukt\n"
-#~ "prachtige bladmuziek volgens een muzikaal definitie bestand.  Ook kan\n"
-#~ "het een mechanische uitvoering afspelen naar een MIDI bestand.\n"
-#~ "Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten, sleutels, \n"
-#~ "toonaarden, zangteksten, krachtige invoer taal, cadensa, balken, boogjes, \n"
-#~ "triolen, accoordnamen, transponeren, partituren, en uittreksels voor \n"
-#~ "individuele partijen.  Een fraaie set muziektekens is inbegrepen.\n"
index 1ab9987e84319aa2ee6b9a7694bb5ff2664a26a7..ca38faf6e9cfc7eaec52e13eab4eaf0ef56ea185 100644 (file)
@@ -26,7 +26,7 @@ except KeyError:
        pass
 
 
-webmaster= ''
+webmaster= mail_address
 try:
        webmaster= os.environ['WEBMASTER']
 except KeyError:
index d9e6cff3f363541f39727af563c8a066b4e7d0a0..72481671147dd5c594a9c41225b735cf7811c03a 100644 (file)
@@ -1,14 +1,13 @@
 #!@PYTHON@
 
-name = 'package-diff'
-version = '0.62'
 
+import find
 import sys
 import os
 import string
 import getopt
 import pipes
-
+topdir = ''
 def gulp_file(f):
        try:
                i = open(f)
@@ -24,9 +23,6 @@ def gulp_file(f):
        i.close ()
        return s
 
-def program_id ():
-       return name + ' ' + version;
-
 
 def mailaddress():
        try:
@@ -35,8 +31,6 @@ def mailaddress():
                return '(address unknown)'
 
 
-def identify ():
-       sys.stdout.write (program_id () + '\n')
 
 class Flags:
        def __init__ (self):
@@ -66,12 +60,18 @@ def untar (fn):
 
 def remove_automatic (dirnames):
        files = []
-       # urg, again?
-       from flower import *
-       files = files + multiple_find (pats, dirnames)
-       dirs = multiple_find (['out'], dirnames)
+
+       for d in dirnames:
+               for p in pats:
+                       files = files + find.find (p, d)
+
+       dirs = map (lambda d: find.find ('out', d), dirnames)
+       dirs = reduce (lambda x,y:  x + y, dirs)
+       
+       print dirs 
        for d in dirs:
-               files = files + multiple_find (['*'], [d])
+               files = files + find.find ('*', d)
+               
        for f in files:
                try:
                        os.remove (f)
@@ -92,23 +92,21 @@ def released_tarball(v):
 
 def remove_configure (dir):
        os.chdir (dir)
+
        # ugh
        os.system ('rm -f *.ly')
 
        # should do 'make distclean ?'
-       os.system ('rm -rf debian/out')
-       os.system ('rm -f GNUmakefile config.cache config.h config.hh config.log config.make config.status configure')
-       os.system ('rm -f stepmake/GNUmakefile stepmake/config.hh stepmake/config.log stepmake/config.status stepmake/config.make')
+       os.system ('rm -rf debian/out GNUmakefile config.cache config.h config.hh config.log config.make config.status configure stepmake/GNUmakefile stepmake/config.hh stepmake/config.log stepmake/config.status stepmake/config.make')
 
        # ugh: symlinks
-       os.system ('rm -f stepmake/stepmake/stepmake')
-       os.system ('rm -f stepmake/stepmake/bin')
+       os.system ('rm -f stepmake/stepmake/stepmake stepmake/stepmake/bin')
 
 
 # ugh, how to get rid of .tex files generated by lily?
 pats = ['configure', '*.diff', '*.diff.gz', '*.pyc',  '*.txt']
 
-header = """Generated by %s using %s,
+header = """Generated by %s,
 From = %s, To = %s
 
 usage 
@@ -141,7 +139,7 @@ def makediff (fromdir, todir, patch_name):
 
        f = open (patch_name, 'w')
        f.write (header %
-               (mailaddress (), program_id (),  fromname, toname, 
+               (mailaddress (),   fromname, toname, 
                 flags.package.name, os.path.basename (patch_name)))
 
        f.close ()
@@ -152,133 +150,130 @@ def makediff (fromdir, todir, patch_name):
        os.system ('diff -urN %s . >> %s' % (fromdir, patch_name))
        os.system ('gzip --quiet -9f %s' % patch_name)
    
-def main ():
-       os.environ['GZIP'] = '-q'
-       identify ()
-       print 'argv: ' + string.join (sys.argv[2:])
-       (options, files) = getopt.getopt (sys.argv[1:], 
-               'hF:f:o:p:rT:t:', ['from=', 'dir-from=', 'dir-to=', 'help', 'output=', 'package=', 'release', 'to='])
-
-       patch_name = ''
+
+os.environ['GZIP'] = '-q'
+print 'argv: ' + string.join (sys.argv[2:])
+(options, files) = getopt.getopt (sys.argv[1:], 
+       'hF:f:o:p:rT:t:', ['from=', 'dir-from=', 'dir-to=', 'help', 'output=', 'package=', 'release', 'to='])
+
+patch_name = ''
+from_src = ''
+to_src = ''
+release=0
+from_version=0
+to_version=0
+for opt in options:
+       o = opt[0]
+       a = opt[1]
+       if o == '--from' or o == '-f':
+                from_version = a
+       elif o == '--to' or o == '-t':
+                to_version = a
+       elif o == '--dir-from' or o == '-F':
+                from_src = a;
+       elif o == '--dir-to' or o == '-T':
+                to_src = a;
+       elif o == '--help' or o == '-h':
+               help ()
+               sys.exit (0)
+       elif o == '--output' or o == '-o':
+               patch_name = os.path.join (os.getcwd (), a)
+       elif o == '-p' or o == '--package':
+               topdir = a
+       elif o == '--release' or o == '-r':
+               release=1
+       else:
+               raise getopt.error
+
+sys.path.append (topdir + '/stepmake/bin')
+from packagepython import *
+package = Package (topdir)
+flags.package = package
+packager = Packager ()
+
+if from_src:
+       from_package = Package (from_src)
+       flags.from_version = from_package.version
+if from_version:
+       flags.from_version = version_str_to_tuple (from_version)
        from_src = ''
+
+if to_src:
+       to_package = Package (to_src)
+       flags.to_version = to_package.version
+if to_version:
+       flags.to_version = version_str_to_tuple (to_version)
        to_src = ''
-       release=0
-       from_version=0
-       to_version=0
-       for opt in options:
-               o = opt[0]
-               a = opt[1]
-               if o == '--from' or o == '-f':
-                        from_version = a
-               elif o == '--to' or o == '-t':
-                        to_version = a
-               elif o == '--dir-from' or o == '-F':
-                        from_src = a;
-               elif o == '--dir-to' or o == '-T':
-                        to_src = a;
-               elif o == '--help' or o == '-h':
-                       help ()
-                       return 0;
-               elif o == '--output' or o == '-o':
-                       patch_name = os.path.join (os.getcwd (), a)
-               elif o == '-p' or o == '--package':
-                       topdir = a
-               elif o == '--release' or o == '-r':
-                       release=1
-               else:
-                       raise getopt.error
-
-       sys.path.append (topdir + '/stepmake/bin')
-       from packagepython import *
-       package = Package (topdir)
-       flags.package = package
-       packager = Packager ()
-       from flower import *
 
-       if from_src:
-               from_package = Package (from_src)
-               flags.from_version = from_package.version
-       if from_version:
-               flags.from_version = version_str_to_tuple (from_version)
-               from_src = ''
-                       
-       if to_src:
-               to_package = Package (to_src)
-               flags.to_version = to_package.version
-       if to_version:
-               flags.to_version = version_str_to_tuple (to_version)
-               to_src = ''
-                       
-       if not flags.to_version:
-               flags.to_version = package.version
+if not flags.to_version:
+       flags.to_version = package.version
 
-       if not flags.from_version:
-               flags.from_version = prev_version (flags.to_version)
+if not flags.from_version:
+       flags.from_version = prev_version (flags.to_version)
 
-       # urg
-       if release:
-               flags.from_version = (flags.from_version[0], 
-                       flags.from_version[1], flags.from_version[2], '');
+# urg
+if release:
+       flags.from_version = (flags.from_version[0], 
+               flags.from_version[1], flags.from_version[2], '');
 
-       import tempfile
-       prev_cwd = os.getcwd ();
+import tempfile
+prev_cwd = os.getcwd ();
 
-       os.system ('rm -rf /tmp/package-diff') 
-       try:
-               os.mkdir ('/tmp/package-diff')
-       except:
-               pass
-               
-       from_diff = dirname (flags.from_version)
-       to_diff =  dirname (flags.to_version)
-       if to_diff == from_diff:
-               if from_src:
-                     from_diff = from_diff + '.src'
-               elif to_src:
-                     to_diff = to_diff + '.src'
-               else:
-                     sys.stderr.write (name + ': nothing to do: to == from == ' + from_diff + '\n')
-                     sys.exit (1)
-
-       if not patch_name:
-               pn = to_diff + '.diff'
-               patch_name =  os.path.join (os.getcwd (), pn)
-
-       from_diff = '/tmp/package-diff/' + from_diff
-       to_diff =  '/tmp/package-diff/' + to_diff
-
-       if not from_src:
-               os.chdir ('/tmp/package-diff')
-               untar (released_tarball (flags.from_version))
-               os.chdir (prev_cwd)
-       else:
-               sys.stderr.write ('copying ' + from_src + ' to ' + from_diff + '\n')
-               # os.system ('cp -pr %s %s' % (srcdir, from_diff))
-               os.system ('mkdir -p %s '% (from_diff))
-               os.chdir (from_src)
-               os.system ('tar cf - --exclude out --exclude out-www . \
-                       | tar -xf - -C %s' % from_diff)
-
-
-       if not to_src:
-               os.chdir ('/tmp/package-diff')
-               untar (released_tarball (flags.to_version))
-               os.chdir (prev_cwd)
+os.system ('rm -rf /tmp/package-diff') 
+try:
+       os.mkdir ('/tmp/package-diff')
+except:
+       pass
+
+from_diff = dirname (flags.from_version)
+to_diff =  dirname (flags.to_version)
+if to_diff == from_diff:
+       if from_src:
+             from_diff = from_diff + '.src'
+       elif to_src:
+             to_diff = to_diff + '.src'
        else:
-               sys.stderr.write ('copying ' + to_src + ' to ' + to_diff + '\n')
-               os.system ('mkdir -p %s '% (to_diff))
-               # os.system ('cp -pr %s %s'  (to_src, to_diff))%
-               os.chdir (to_src)
-               os.system ('tar -cf - --exclude out --exclude out-www . \
-                       . | tar -xf - -C %s ' % to_diff)
+             sys.stderr.write (name + ': nothing to do: to == from == ' + from_diff + '\n')
+             sys.exit (1)
+
+if not patch_name:
+       pn = to_diff + '.diff'
+       patch_name =  os.path.join (os.getcwd (), pn)
+
+from_diff = '/tmp/package-diff/' + from_diff
+to_diff =  '/tmp/package-diff/' + to_diff
+
+if not from_src:
+       os.chdir ('/tmp/package-diff')
+       untar (released_tarball (flags.from_version))
+       os.chdir (prev_cwd)
+else:
+       sys.stderr.write ('copying ' + from_src + ' to ' + from_diff + '\n')
+       # os.system ('cp -pr %s %s' % (srcdir, from_diff))
+       os.system ('mkdir -p %s '% (from_diff))
+       os.chdir (from_src)
+       os.system ('tar cf - --exclude out --exclude out-www . \
+               | tar -xf - -C %s' % from_diff)
 
-       os.chdir (to_diff)
-       makediff (from_diff, to_diff, patch_name) 
 
+if not to_src:
        os.chdir ('/tmp/package-diff')
-       sys.stderr.write ('cleaning ... ')
-       os.system ('rm -fr %s %s' % (from_diff, to_diff))
-       sys.stderr.write ('\n')
+       untar (released_tarball (flags.to_version))
        os.chdir (prev_cwd)
+else:
+       sys.stderr.write ('copying ' + to_src + ' to ' + to_diff + '\n')
+       os.system ('mkdir -p %s '% (to_diff))
+       # os.system ('cp -pr %s %s'  (to_src, to_diff))%
+       os.chdir (to_src)
+       os.system ('tar -cf - --exclude out --exclude out-www . \
+               . | tar -xf - -C %s ' % to_diff)
+
+os.chdir (to_diff)
+makediff (from_diff, to_diff, patch_name) 
+
+os.chdir ('/tmp/package-diff')
+sys.stderr.write ('cleaning ... ')
+os.system ('rm -fr %s %s' % (from_diff, to_diff))
+sys.stderr.write ('\n')
+os.chdir (prev_cwd)
 
-main ()
index d614eb5cd3e1568173a56920bc625ec9ed9892ad..d8ca76751c7ac8ba47608ed41e0a7bf411e9a579 100755 (executable)
@@ -31,7 +31,7 @@ sys.path.append (topdir + '/stepmake/bin')
 from packagepython import *
 package = Package (topdir)
 packager = Packager ()
-from flower import *
+
 
 os.chdir(package.topdir)
 status =os.system('make dist')