]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.0.1
authorfred <fred>
Sun, 24 Mar 2002 20:13:12 +0000 (20:13 +0000)
committerfred <fred>
Sun, 24 Mar 2002 20:13:12 +0000 (20:13 +0000)
134 files changed:
ANNOUNCE-0.1
Documentation/man/convert-mudela.yo [new file with mode: 0644]
Documentation/man/mi2mu.yo [new file with mode: 0644]
Documentation/man/mudela-book.yo [new file with mode: 0644]
Documentation/tex/computer-forms.el [new file with mode: 0644]
Documentation/topdocs/INSTALL.yo [new file with mode: 0644]
buildscripts/html-accents.py [new file with mode: 0644]
debian/changelog
debian/control.foka [new file with mode: 0644]
debian/control.in [new file with mode: 0644]
debian/copyright
flower/README
flower/include/international.hh
flower/include/list.icc
flower/international.cc [new file with mode: 0644]
flower/libc-extension.cc
lib/duration-convert.cc
lib/duration-iter.cc
lib/duration.cc
lib/include/binary-source-file.hh
lib/include/duration.hh
lib/include/source-file.hh
lib/include/source.hh
lib/include/string-storage.hh [new file with mode: 0644]
lib/mapped-file-storage.cc
lib/source-file.cc
lily/abbreviation-beam-engraver.cc
lily/abbreviation-beam.cc
lily/audio-column.cc
lily/audio-item.cc
lily/audio-staff.cc
lily/beam.cc
lily/bezier.cc
lily/bow.cc
lily/encompass-info.cc
lily/hara-kiri-line-group-engraver.cc
lily/hara-kiri-vertical-group-spanner.cc
lily/include/abbreviation-beam-engraver.hh
lily/include/abbreviation-beam.hh
lily/include/audio-column.hh
lily/include/audio-item.hh
lily/include/audio-staff.hh
lily/include/bezier.hh
lily/include/curve.hh
lily/include/encompass-info.hh
lily/include/hara-kiri-line-group-engraver.hh
lily/include/hara-kiri-vertical-group-spanner.hh
lily/include/key-performer.hh
lily/include/lyric-performer.hh
lily/include/mark-engraver.hh [new file with mode: 0644]
lily/include/midi-def.hh
lily/include/midi-item.hh
lily/include/midi-stream.hh
lily/include/midi-walker.hh
lily/include/mudela-version.hh
lily/include/multi-measure-rest-engraver.hh
lily/include/multi-measure-rest.hh
lily/include/note-performer.hh
lily/include/performance.hh
lily/include/performer-group-performer.hh
lily/include/performer.hh
lily/include/plet-engraver.hh
lily/include/plet-spanner.hh
lily/include/score-performer.hh
lily/include/staff-margin-engraver.hh [new file with mode: 0644]
lily/include/staff-performer.hh
lily/include/stem-info.hh
lily/include/time-signature-performer.hh [new file with mode: 0644]
lily/key-performer.cc
lily/lyric-performer.cc
lily/main.cc
lily/mark-engraver.cc [new file with mode: 0644]
lily/midi-def.cc
lily/midi-item.cc
lily/midi-stream.cc
lily/midi-walker.cc
lily/misc.cc
lily/mudela-version.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/note-performer.cc
lily/performance.cc
lily/performer-group-performer.cc
lily/performer.cc
lily/plet-engraver.cc
lily/plet-spanner.cc
lily/ps-plet.cc
lily/score-performer.cc
lily/slur.cc
lily/staff-margin-engraver.cc [new file with mode: 0644]
lily/stem-info.cc
lily/time-signature-performer.cc [new file with mode: 0644]
make/lelievijver.lsm.in
make/lilypond.lsm.in
mf/feta-autometric.mf
mf/feta-beum.mf
mf/feta-bolletjes.mf
mf/feta-brackets16.mf
mf/feta-brackets20.mf
mf/feta-klef.mf
mf/feta-schrift.mf
mf/feta-slag.mf
mf/feta-sleur.mf
mi2mu/include/mi2mu-global.hh
mi2mu/include/midi-parser.hh
mi2mu/include/midi-score-parser.hh
mi2mu/include/midi-track-parser.hh
mi2mu/include/mudela-column.hh
mi2mu/include/mudela-item.hh
mi2mu/include/mudela-score.hh
mi2mu/include/mudela-staff.hh
mi2mu/include/mudela-stream.hh
mi2mu/include/mudela-voice.hh
mi2mu/main.cc
mi2mu/mi2mu-version.cc
mi2mu/midi-parser.cc
mi2mu/midi-score-parser.cc
mi2mu/midi-track-parser.cc
mi2mu/mudela-column.cc
mi2mu/mudela-score.cc
mi2mu/mudela-staff.cc
mi2mu/mudela-voice.cc
mi2mu/template9.cc
po/TODO [new file with mode: 0644]
po/it.po [new file with mode: 0644]
po/lilypond.po [new file with mode: 0644]
po/nl.po [new file with mode: 0644]
stepmake/Documentation/topdocs/AUTHORS.yo [new file with mode: 0644]
stepmake/README [new file with mode: 0644]
stepmake/bin/packagepython.py [new file with mode: 0755]
stepmake/bin/table-to-html.py [new file with mode: 0644]
stepmake/bin/update.py [new file with mode: 0644]
stepmake/make/stepmake.lsm.in [new file with mode: 0644]
stepmake/make/stepmake.spec.in [new file with mode: 0644]

index 9f7d6e2e37180202b7390af6079bdac7d69244f8..8ed22c92be1798ca7ae7eabb37da38a2e8326312 100644 (file)
@@ -22,7 +22,7 @@ You can see some babyfood, diapers and pictures at
 
        http://www.stack.nl/~hanwen/lilypond/index.html
 
-You can send your congratulations to Janneke (jan@digicash.com) and
+You can send your congratulations to Janneke (janneke@gnu.org) and
 Wendy (hanwen@stack.nl)
 
 
diff --git a/Documentation/man/convert-mudela.yo b/Documentation/man/convert-mudela.yo
new file mode 100644 (file)
index 0000000..a9640b8
--- /dev/null
@@ -0,0 +1,67 @@
+
+mailto(janneke@gnu.org)
+COMMENT(ugh, should be automated)
+COMMENT(urg
+       (PIPETHROUGH(echo -n `date '+%d/%b/%y'|tr '[a-z]' '[A-Z]'`)())
+)
+manpage(convert-mudela)
+       (1)
+       (1998)
+       (The LilyPond package)
+       (convert-mudela)
+
+metalC(Automatically generated by yodl(1) from convert-mudela.yo.)
+
+node(Programs)(convert-mudela)(Invoking convert-mudela)(Programs)
+manpagename(convert-mudela)(convert-mudela to newer versions)
+
+convert-mudela sequentially applies different mudela-conversions to
+upgrade a Mudela input file.
+
+menu(
+mit(Invoking convert-mudela)(      Command options supported by file(convert-mudela))
+mit(Bugs convert-mudela)(          Bugs)
+mit(Author convert-mudela)(        Author)
+)
+
+manpagedescription()
+
+Upgrade a Mudela input file from FROM_PATCHLEVEL to TO_PATCHLEVEL.
+If no files are given, the standard input and output are used.
+
+node(convert-mudela)(Invoking convert-mudela)(Bugs convert-mudela)(convert-mudela)
+manpagesynopsis()
+
+        convert-mudela [options] [files]
+
+manpageoptions()
+description(
+dit(--output)
+    The output file to write
+dit(--edit)
+    Do an inline edit of the input file. override @samp{--output}
+dit(--show-rules)
+    shows all known conversions, and exit
+dit(--from=FROM_PATCHLEVEL)
+    Set the level to convert from. If this is not set, convert-mudela will
+    guess this, on the basis of code(\version) strings in the file
+dit(--to=TO_PATCHLEVEL)
+    Set the goal version of the conversion. It defaults to the latest
+    available version.  
+)
+
+node(Invoking convert-mudela)(Bugs convert-mudela)(Author convert-mudela)(convert-mudela)
+manpagesection(BUGS)
+
+Not all language changes are handled. Multiple output options won't
+work.
+
+convert-mudela is written in python, so you have install
+url(python)(http://www.python.org).
+
+
+node(Bugs convert-mudela)(Author convert-mudela)(LilyPond)(convert-mudela)
+manpageauthor()
+
+nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl), lurl(http://www.cs.uu.nl/people/hanwen)
+
diff --git a/Documentation/man/mi2mu.yo b/Documentation/man/mi2mu.yo
new file mode 100644 (file)
index 0000000..85decf2
--- /dev/null
@@ -0,0 +1,90 @@
+
+mailto(janneke@gnu.org)
+COMMENT(
+       (PIPETHROUGH(echo -n `date '+%d/%b/%y'|tr '[a-z]' '[A-Z]'`)())
+)
+manpage(LilyPond)
+       (1)
+       (1998)
+       (Mi2mu)
+       (The LilyPond package)
+
+metalC(Automatically generated by yodl(1) from mi2mu.yo.)
+
+node(Author Ly2dvi)(Mi2mu)(Invoking Mi2mu)(Programs)
+
+manpagename(Mi2mu)(convert MIDI to bf(mudela)(5))
+
+menu(
+mit(Invoking Mi2mu)(               Command options supported by file(Mi2mu))
+mit(Disclaimer Mi2mu)(             Disclaimer)
+mit(Author Mi2mu)(                 Author)
+)
+
+manpagedescription()
+Mi2mu translates a MIDI input file to Mudela (GNU LilyPond source
+format).  Mi2mu is part of the GNU LilyPond music typesetting package.
+
+node(Mi2mu)(Invoking Mi2mu)(Disclaimer Mi2mu)(Mi2mu)
+manpagessynopsis()
+
+       mi2mu [options] midi-file
+
+manpageoptions()
+
+description(
+dit(-b, --no-quantify,)
+    Write exact durations, e.g.: `a4*385/384'.
+dit(-D, --debug,)
+    Print lots of debugging stuff.
+dit(-h, --help,)
+    Show a summary of usage.
+dit(-I, --include=file(DIR),)
+    Add DIR to search path.
+dit(-k, --key=ACC[:MINOR],)
+    Set default key.  ACC > 0 sets number of sharps; ACC < 0 sets number 
+    of flats.  A minor key is indicated by ":1".
+dit(-n, --no-silly,)
+    Assume no plets or double dots, assume smallest (reciprocal) duration 16.
+dit(-o, --output=file(FILE),)
+    Set file(FILE) as default output.
+dit(-p, --no-plets,)
+    Assume no plets.
+dit(-q, --quiet,)
+    Be quiet.
+dit(-s, --smallest=N,)
+    Assume no shorter (reciprocal) durations than N.
+dit(-v, --verbose,)
+    Be verbose.
+dit(-w, --warranty,)
+    Show the warranty with which mi2mu comes. (It comes with bf(NO WARRANTY)!)
+dit(-x, --no-double-dots,)
+    Assume no double dotted notes.
+)
+
+node(Invoking Mi2mu)(Disclaimer Mi2mu)(Author Mi2mu)(Mi2mu)
+manpagesection(DISCLAIMER)
+
+Mi2mu is copyright 1996, 1997 by its authors. Mi2mu is distributed 
+as part of GNU LilyPond, under the terms of the GNU General Public
+License.  Mi2mu is provided without any warranty what so ever.
+Mi2mu may be freely distributed.  For further information consult
+the GNU General Public License, from the file file(COPYING).
+
+manpageseealso()
+
+description(
+dit(bf(lilypond)(1))
+    The GNU LilyPond music typesetter.
+dit(mudela-man)
+    On the input format. This is a LilyPond-enhanced LaTeX document.
+)
+
+node(Disclaimer Mi2mu)(Author Mi2mu)(mudela-book)(Mi2mu)
+manpageauthor()
+
+Please consult the documentation file file(AUTHORS) for more detailed
+information, and small contributions. 
+
+nemail(Jan Nieuwenhuizen)(janneke@gnu.org), lurl(http://www.digicash.com/~jan)
+
diff --git a/Documentation/man/mudela-book.yo b/Documentation/man/mudela-book.yo
new file mode 100644 (file)
index 0000000..4f19075
--- /dev/null
@@ -0,0 +1,75 @@
+
+mailto(janneke@gnu.org)
+COMMENT(
+       (PIPETHROUGH(echo -n `date '+%d/%b/%y'|tr '[a-z]' '[A-Z]'`)())
+)
+manpage(LilyPond)
+       (1)
+       (1998)
+       (The LilyPond package)
+       (mudela-book)
+
+metalC(Automatically generated by yodl(1) from mudela-book.yo.)
+
+node(Author Mi2mu)(mudela-book)(Invoking mudela-book)(Programs)
+
+manpagename(mudela-book)(integrate LaTeX and mudela)
+
+menu(
+mit(Invoking mudela-book)(Command options supported by file(mudela-book))
+mit(Bugs mudela-book)(Bugs)
+mit(Author mudela-book)(Author)
+)
+
+manpagedescription() file(mudela-book) is a script that helps
+integrating mudela and LaTeX().  mudela-book runs LilyPond on
+fragments of mudela in your source file, and includes the results into
+document that can be processed with LaTeX().  The result is a text
+document with formatted music integrated.
+
+
+If the file contains the ``block''
+
+verb(
+        \begin{mudela}
+        CONTENTS
+        \end{mudela}
+)
+
+then LilyPond is run on CONTENTS.  mudela-book puts the result back,
+surrounded by code(\preMudelaExample) and code(\postMudelaExample)
+commands. The code(\begin) takes the following options:
+
+description(
+dit(fragment)
+    mudela-book adds some redtape. You
+    can substitute voice-contents for CONTENTS in this case.
+dit(verbatim)
+    CONTENTS is copied into the TeX source enclosed in a verbatim block.
+)
+
+node(mudela-book)(Invoking mudela-book)(Bugs mudela-book)(mudela-book)
+manpagesection(Synopsis)
+
+description(
+dit(--outname)
+    The name of LaTeX() file to output. If this option  is not given,
+the output name derived from the input name.  The extension file(.doc)
+is stripped, and code(.mudtex) appended.
+dit(--outdir)
+    The directory to output lilypond output and input to.
+dit(--help)
+       print a short help message
+)
+
+node(Invoking mudela-book)(Bugs mudela-book)(Author mudela-book)(mudela-book)
+manpagebugs()
+  
+Doesn't handle incorrect input sanely.   mudela-book is written in
+python, so you have install url(python)(http://www.python.org).
+  
+node(Bugs mudela-book)(Author mudela-book)(Mutopia)(mudela-book)
+manpageauthor()
+
+nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl), lurl(http://www.cs.uu.nl/people/hanwen)
+
diff --git a/Documentation/tex/computer-forms.el b/Documentation/tex/computer-forms.el
new file mode 100644 (file)
index 0000000..bc750e9
--- /dev/null
@@ -0,0 +1,21 @@
+; Computer vocabularies are Copyright (C) 1998 
+; Jan Nieuwenhuizen <janneke@gnu.org>
+; Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+(setq forms-file "computer.data")
+(setq forms-number-of-fields 7)
+(setq forms-read-only nil)                 ; to make sure
+(setq forms-field-sep ":")
+(setq forms-multi-line nil)
+
+(setq forms-format-list
+      (list
+       "*** Musical vocabulary ***\n"
+       "\nUS English:        " 1
+       "\nFrancais:          " 2
+       "\nDeutsch:           " 3
+       "\nBritish English:   " 4
+       "\nNederlands:        " 5
+       "\nItaliano:          " 6
+       "\n\nExplanation\n\n" 7
+       ))
diff --git a/Documentation/topdocs/INSTALL.yo b/Documentation/topdocs/INSTALL.yo
new file mode 100644 (file)
index 0000000..19716b5
--- /dev/null
@@ -0,0 +1,298 @@
+article(INSTALL - compiling and installing GNU LilyPond)(HWN & JCN)()
+
+sect(ABSTRACT)
+
+You do something which looks remotely like
+verb(
+       configure    # Check out the buildscripts/set-lily.sh script
+       make
+       make install
+)
+
+The detailed instructions follow here.  The
+file(buildscripts/set-lily.sh) script sets some environment variables
+and symlinks, which comes in handly when you have to compile LilyPond
+very often.  It is aimed at people who run (or debug) LilyPond without 
+installing.
+
+sect(PREREQUISITES)
+
+For compilation you need:
+
+itemize(
+it()A GNU system: GNU LilyPond is known to run on these GNU systems: Linux
+    (PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and
+Solaris.
+
+Although we recommend to use Unix, LilyPond is known to run on Windows
+NT/95/98 as well.  See Section ref(w32).
+
+it() GNU C++ version 2.7 or newer (2.8 and egcs are also fine).
+it() Python 1.5
+)
+
+sect(RUNNING)
+
+GNU LilyPond does use a lot of resources. For operation you need the following:
+
+itemize(
+it()TeX
+it()A PostScript printer and/or viewer (such as Ghostscript) is strongly
+    recommended.  Xdvi will show all embedded PostScript too if you have
+    Ghostscript installed.
+)
+
+sect(RECOMMENDED)
+
+Although not strictly necessary, these are recommended to have.
+
+itemize(
+it()GNU make. 
+it()Flex (version 2.5.4 or newer). 
+it()Bison (version 1.25 or newer).
+it()Python (version 1.5 or newer).
+it()Yodl.  All documentation will be in Yodl. (1.30.17)
+lurl(ftp://pcnov095.win.tue.nl/pub/yodl)
+    lurl(http://www.cs.uu.nl/~hanwen/yodl)
+it()Texinfo. (version 3.12 or newer)
+
+it()GNU find
+it() A fast computer (a full page of music typically takes 1 minute on my
+    486/133, using the bf(--enable-checking) compile. It's lot slower than
+    most MusiXTeX preprocessors)
+)
+
+sect(WEBSITE)
+
+If you want to auto-generate Lily's website, you'll need some additional
+conversion tools.
+
+itemize(
+it()xpmtoppm (from the Portable Bitmap Utilities) (For RedHat Linux
+            users: it is included within the package libgr-progs).
+it()Bib2html lurl(http://pertsserver.cs.uiuc.edu/~hull/bib2html.)
+    Which, in turn depends on man2html for proper installation.
+man2html can be had from lurl(http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05).
+
+    TeTeX users should not forget to rerun texhash.
+)
+
+sect(CONFIGURING and COMPILING)
+
+to install GNU LilyPond, simply type:
+verb(
+       configure  --enable-tex-dir=XXXX --enable-mf-dir=YYYY
+       make
+       make install
+)
+
+This will install a number of files, something close to:
+verb(
+       /usr/local/man/man1/mi2mu.1
+       /usr/local/man/man1/convert-mudela.1
+       /usr/local/man/man1/mudela-book.1
+       /usr/local/man/man1/lilypond.1
+       /usr/local/bin/lilypond
+       /usr/local/bin/mi2mu
+       /usr/local/share/lilypond/*
+       /usr/local/share/locale/{it,nl}/LC_MESSAGES/lilypond.mo
+       /usr/lib/texmf/texmf/tex/lilypond/* 
+)
+
+
+You should specify directories that are in TeX()'s and MetaFont's
+include path with the options (--enable-tex-dir) and
+bf(--enable-mf-dir).  If you don't specify any directories, the TeX()
+include directory is detected dynamically, which is unreliable.  The
+above assumes that you are root and have the GNU development tools,
+and your make is GNU make.  If this is not the case, you can adjust
+your environment variables to your taste:
+
+verb(
+       export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR" 
+       configure
+)
+
+code(CPPFLAGS) are the preprocessor flags. 
+
+The configure script is Cygnus configure, and it will accept
+bf(--help). If you are not root, you will probably have to make it
+with a different bf(--prefix) option.  Our favourite location is
+
+verb(
+       configure --prefix=$HOME/usr
+)
+
+In this case, you will have to set up MFINPUTS, and TEXINPUTS accordingly.
+
+If you want to install GNU LilyPond in file(/usr/local), and your TeX has
+no default hooks for local stuff, you can do:
+
+verb(
+       configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf
+)
+
+Since GNU LilyPond currently is beta, you are advised to also use
+
+verb(
+       --enable-debugging
+       --enable-checking
+)
+
+Other options include:
+
+description(
+dit(bf(--enable-shared))
+    Make a shared library (gnu/linux, solaris (?) only )  (TEMPORARILY
+OUT OF ORDER)
+
+dit(bf(--enable-printing))
+    Enable debugging print routines (lilypond bf(-D) option)
+dit(bf(--enable-optimise))
+    Set maximum optimisation: compile with bf(-O2)
+dit(bf(--enable-profiling))
+    Compile with support for profiling.
+dit(bf(--enable-tex-prefix))
+    Set the directory where TeX and Metafont live.
+dit(bf(--enable-tex-dir))
+    Set then directory TeX input is in (detected as a subdir of
+    tex-prefix).  This should be a directory that is reachable both for
+    tex and latex.  On my system the best choice would be
+    file(/usr/lib/texmf/texmf/tex/generic//).
+dit(bf(--enable-mf-dir))
+    Set the directory metafont input is in (idem).   On my system the best
+    choice would be file(/usr/lib/texmf/texmf/fonts/source/public/).
+dit(bf(--enable-config))
+    Output to a different configuration file.  Needed for multi-platform
+    builds
+)
+
+All options are documented in the file(configure) help
+The option bf(--enable-optimise) is recommended for Real Life usage.
+
+If you do
+
+verb(
+       make all
+)
+
+everything will be compiled, but nothing will be installed.  The
+resulting binaries can be found in the subdirectories file(out/) (which
+contain all files generated during compilation).
+
+sect(CONFIGURING FOR MULTIPLE PLATFORMS)
+
+If you want to compile LilyPond with different configuration settings,
+then, you can use the bf(--enable-config) option.  Example: suppose I
+want to build with and   without profiling.  Then I'd use the
+following for the normal build, 
+
+verb(
+      configure --prefix=~ --disable-optimise --enable-checking
+      make
+      make install
+     )
+
+and for the profiling version, I specify a different configuration.
+
+verb(
+      configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking
+      make configuration=optprof
+      make configuration=optprof install
+)
+
+
+sect(INSTALLING)
+
+If you have done a successful code(make), then a simple
+
+verb(
+       make install
+)
+
+should do the trick.
+
+If you are doing an upgrade, please remember to remove obsolete
+file(.pk) and file(.tfm) files of the fonts.  A script has been
+provided to do the work for you, see file(bin/clean-fonts.sh).
+
+nsect(CAVEATS)
+
+itemize(
+it()The -O2 option to gcc triggers a gcc bug on DEC Alpha in dstream.cc. You
+    should turn off this flag for this file.
+)
+
+nsect(EXAMPLE)
+
+This is what I type in my xterm:
+
+verb(
+       lilypond someinput.ly
+       tex someinput.tex
+       xdvi someinput&
+)
+
+This is what the output looks like over here:
+
+verb(
+       GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0
+       Parsing ... [/home/hw/share/lilypond/init//
+               <..etc..>
+               init//performer.ly]]][input/kortjakje.ly]
+       Creating elements ...[8][16][24][25]
+       Preprocessing elements... 
+       Calculating column positions ... [14][25]
+       Postprocessing elements...
+       TeX output to someinput.tex ...
+       Creating MIDI elements ...MIDI output to someinput.midi ...
+
+
+       hw:~/musix/spacer$ xdvi someinput&
+       [1] 855
+)
+
+Check out the input files, some of them have comments
+Please refer to the man page for more information.
+
+sect(REDHAT LINUX)
+
+RedHat Linux users can compile an RPM. A spec file is in
+file(make/out/lilypond.spec).  You should install a gif file called
+file(lelie_icon.gif) along with the sources.  You can generate this
+gif file by typing
+
+verb(
+     make gifs
+)
+
+in the directory file(Documentation).
+
+You can make the rpm by issuing
+
+verb(
+       make rpm
+)
+
+
+sect(DEBIAN GNU/LINUX)
+
+A Debian package is also available; contact Anthony Fok
+email(foka@debian.org).  The build scripts are in the subdirectory file(debian/)
+
+
+sect(WINDOWS NT/95)
+label(w32)
+
+
+Separate instructions on building for W32 are avaible
+url(in the file README-W32.yo)(../../DOEXPAND(outdir)/README-W32.html).
+
+sect(AUTHORS)
+
+nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl)
+
+nemail(Jan Nieuwenhuizen)(janneke@gnu.org)
+
+
+Have fun!
diff --git a/buildscripts/html-accents.py b/buildscripts/html-accents.py
new file mode 100644 (file)
index 0000000..228ed74
--- /dev/null
@@ -0,0 +1,115 @@
+#!@PYTHON@
+
+# html-accents.py -- convert (some) latin1 chars to html
+# pod2html is so broken...
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+
+name = 'html-accents'
+version = '0.1'
+
+import os
+import sys
+sys.path.append ('@abs-step-bindir@')
+sys.path.append (os.environ['HOME'] + '/usr/src/lilypond/stepmake/bin')
+
+import getopt
+from string import *
+import regex
+import regsub
+import time
+
+def program_id ():
+    return name + ' version ' + version;
+
+def identify ():
+    sys.stdout.write (program_id () + '\n')
+
+def help ():
+    sys.stdout.write ("Usage: " + name + " [options] INFILE OUTFILE\n"
+                + "Convert (some) latin1 chars to html &xxx;\n\n"
+                + "Options:\n"
+                + "  -h, --help             print this help\n"
+                + "  -p, --package=DIR      specify package\n"
+                     )
+    sys.exit (0)
+
+# chars = {'è':'&egrave;', }
+chars = { 
+'á':'&aacute;',
+'â':'&acirc;', 
+'æ':'&aelig;',
+'à':'&agrave;', 
+'Ã¥':'&aring;', 
+'ã':'&atilde;',
+'ä':'&auml;',
+
+'ç':'&ccedil;',
+
+'é':'&eacute;', 
+'ê':'&ecirc;',
+'è':'&egrave;', 
+'ë':'&euml;',
+
+'í':'&iacute;',
+'î':'&icirc;',
+'ì':'&igrave;', 
+'ï':'&iuml;',
+
+'ñ':'&ntilde;',
+
+'ó':'&oacute;',
+'ô':'&ocirc;',
+'ò':'&ograve;', 
+'ø':'&oslash;',
+'õ':'&otilde;',
+'ö':'&ouml;',
+
+'ú':'&uacute;',
+'û':'&ucirc;',
+'ù':'&ugrave;', 
+'ü':'&uuml;' 
+}
+
+def convert_accents (inname, outname):
+    from flower import *
+    text = File (inname)
+    # ugh
+    html = File (outname, 'w')
+
+    while not text.eof ():
+       line = text.readline ()
+       for i in chars.keys ():
+           line = regsub.gsub (i, chars[i], line)
+       html.write (line)
+    text.close ()
+    html.close ()
+
+def main ():
+    identify ()
+    (options, files) = getopt.getopt (
+       sys.argv[1:], 'hp:', ['help', 'package='])
+    for opt in options:
+       o = opt[0]
+       a = opt[1]
+       if o== '--help' or o == '-h':
+           help ()
+       elif o == '-p' or o == '--package':
+           topdir = a
+       else:
+           print o
+           raise getopt.error
+
+    sys.path.append (topdir + '/stepmake/bin')
+    from packagepython import *
+    package = Package (topdir)
+    packager = Packager ()
+
+    from flower import *
+
+    convert_accents (files[0], files[1])
+
+main ()
+
index 0f86127f06610391a0bb8da93c0d099f12332568..c56fe5d3d164bec960fce23cf660040b6c9694c7 100644 (file)
@@ -1,3 +1,51 @@
+lilypond (0.1.76-1) unstable; urgency=low
+
+  * support for 'make deb' target
+
+ -- Jan Nieuwenhuizen <janneke@gnu.org> Fri,  3 Jul 1998 17:53:37 +0200
+
+lilypond (0.1.71-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Anthony Fok <foka@debian.org>  Sat,  6 Jun 1998 00:00:00 -0600
+
+lilypond (0.1.66-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Anthony Fok <foka@debian.org>  Wed, 20 May 1998 06:50:12 -0600
+
+lilypond (0.1.61-1) frozen unstable; urgency=low
+
+  * New upstream release with tons of bug fixes.
+    Please put this in Hamm.
+  * Revised debian/rules w.r.t. make/lilypond.spec.in.
+
+ -- Anthony Fok <foka@debian.org>  Mon,  4 May 1998 03:36:06 -0600
+
+lilypond (0.1.60-1) frozen unstable; urgency=medium
+
+  * New upstream release with lots of bug fixes, including the MIDI
+    generation bug in 0.1.48.  Please put this in Hamm.
+  * debian/rules:
+     - Upgraded to standards version 2.4.1.0 (no changes).
+     - lilypond now also depends on tetex-base (>= 0.9-5)
+       and conflicts with tetex-base (<< 0.9).
+  * Modified postinst and postrm to work with teTeX 0.9 / Web2C 7.2:
+     - Removed all the *ugly* kludges and functions that were supposed to
+       deal with non-Debian teTeX installations.  Those kludges were
+       specifically made for teTeX 0.4, but they failed to work as intended
+       due to the changes in teTeX 0.9.
+     - No longer messes with special.map because the standard
+       Web2C 7.2 special.map already lists the feta fonts.
+     - Since postinst is so much simpler, it is now a sh script!  :-)
+  * Removed preinst which contained yet another obsolete kludge to clean
+    obsolete/ancient lilypond fonts.
+  * Updated the GNU LilyPond Home Page URIs.
+
+ -- Anthony Fok <foka@debian.org>  Fri,  1 May 1998 01:14:49 -0600
+
 lilypond (0.1.48-1) unstable; urgency=low
 
   * New upstream release.
diff --git a/debian/control.foka b/debian/control.foka
new file mode 100644 (file)
index 0000000..2f98fdf
--- /dev/null
@@ -0,0 +1,30 @@
+Source: lilypond
+Section: tex
+Priority: optional
+Maintainer: Anthony Fok <foka@debian.org>
+Standards-Version: 2.4.1.0
+
+Package: lilypond
+Architecture: any
+Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5)
+Conflicts: musixtex-fonts, tetex-base (<< 0.9)
+Description: The GNU Project music typesetter.
+ LilyPond is the GNU Project music typesetter.  This program can print
+ beautiful sheet music from a music definition file.  It can also play
+ mechanical performances to a MIDI file.  Features include multiple
+ staffs, meters, clefs, keys, lyrics, versatile input language,
+ cadenzas, beams, slurs, triplets, formatting scores, part extraction.
+ It includes a nice font of musical symbols.
+ .
+ LilyPond is de muziek typesetter van het GNU Project.
+ Het programma genereert prachtige bladmuziek uit een muziek definitie
+ bestand.  Ook kan het (mechanische) uitvoeringen afspelen naar MIDI
+ bestanden.  Bijzondere mogelijkheden omvatten verscheidene notenbalken,
+ maatsoorten, sleutels, toonsoorten, zangteksten, krachtige invoer taal,
+ cadensa, balken, boogjes, triolen, partituren, en losse partijen.  Een
+ fraai font met muzikeksymbolen wordt meegeleverd.
+ .
+  URL: http://www.cs.ruu.nl/people/hanwen/lilypond/
+       http://sca.uwaterloo.ca/~praetzel/lilypond/
+  Authors: Han-Wen Nienhuys <hanwen@stack.nl>
+           Jan Nieuwenhuizen <janneke@gnu.org>
diff --git a/debian/control.in b/debian/control.in
new file mode 100644 (file)
index 0000000..c78565b
--- /dev/null
@@ -0,0 +1,16 @@
+Source: lilypond
+Section: tex
+Priority: optional
+Maintainer: Anthony Fok <foka@debian.org>
+Standards-Version: 2.4.1.0
+
+Package: lilypond
+Architecture: any
+Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5)
+Conflicts: musixtex-fonts, tetex-base (<< 0.9)
+Description: The GNU Project music typesetter.  @BLURB@
+ .
+  URL: http://www.cs.ruu.nl/people/hanwen/lilypond
+       http://sca.uwaterloo.ca/~praetzel/lilypond/
+  Authors: Han-Wen Nienhuys <hanwen@cs.uu.nl>
+           Jan Nieuwenhuizen <janneke@gnu.org>
index 9223c27f8c896fe584a2cbe7bbbfd09cc4465d87..cf496990ff07d2d3ce81ede8d31f12fff89449a4 100644 (file)
@@ -2,18 +2,19 @@ This package was debianized by Anthony Fok <foka@debian.org> on
 Wed,  6 Aug 1997 04:30:28 -0600
 
 It was downloaded from
-    ftp://pcnov095.win.tue.nl/pub/lilypond/development/
-        lilypond-0.1.48.tar.gz
+      ftp://pcnov095.win.tue.nl/pub/lilypond/development/
+          lilypond-0.1.71.tar.gz
 
 It is also available from:
-    ftp://alpha.gnu.org/gnu/
+      ftp://sca.uwaterloo.ca/pub/lilypond/development/
 
 For more information about GNU LilyPond, please visit:
-    http://www.stack.nl/~hanwen/lilypond/ for more information.
+      http://www.cs.ruu.nl/people/hanwen/lilypond/
+  or  http://sca.uwaterloo.ca/~praetzel/lilypond/
 
 Authors:
-    Han-Wen Nienhuys <hanwen@stack.nl>
-    Jan Nieuwenhuizen <jan@digicash.com>
+      Han-Wen Nienhuys <hanwen@stack.nl>
+      Jan Nieuwenhuizen <janneke@gnu.org>
  
 Copyright:
 
@@ -34,6 +35,13 @@ Copyright:
     along with this program; if not, write to the Free Software
     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
+    *** NOTE
+
+            This license applies to all files except the included example
+    input files (which are in the subdirectory input/ and mutopia/ )
+
+    *** END NOTE
+
 
 All the other scripts and control files for building and installing
 GNU LilyPond under Debian GNU/Linux are also under the GNU General
index 46a01d28e5333f571636739ec9b8e2ecea1a66f1..75bc0679e724aedc20692f69d1c4da468b87b570 100644 (file)
@@ -7,6 +7,6 @@ It was written by:
 
 and
 
-       Jan Nieuwenhuizen <jan@digicash.com>
+       Jan Nieuwenhuizen <janneke@gnu.org>
 
-It is licensed under the GNU GPL.
+It is licensed under the GNU LGPL.
index 730b9924e6e38511733763ef734f8aa63a155b86..3da5a26a2754a54ffdcda3b909603c9521169179 100644 (file)
@@ -3,14 +3,27 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
 #ifndef INTERNATIONAL_HH
 #define INTERNATIONAL_HH
 
-#define _(str) str
+#include "string.hh"
 
-#endif /* INTERNATIONAL_HH */
+// don't inline: get warnings only once
+/**
+ Internationalisation: _ ("to be translated") gets "translated" by GNU gettext
+*/
+String _ (char const *ch);
+
+/**
+ Internationalisation: _f ("Usage: %s [FILE]", "lilypond") gets "translated" by 
+ GNU gettext
+*/
+String _f (char const* format, ...);
+String _f (char const* format, String s, String s2 = "", String s3 = "");
+
+#endif // INTERNATIONAL_HH
 
index 7192c4d9f6749353ba2e52c1ad7fa22095a223a5..eb1179a300c5c19476251109cd8cfc164634085d 100644 (file)
@@ -4,8 +4,8 @@
   source file of the Flower Library
 
   (c) 1996, 1997--1998
-  Jan Nieuwenhuizen <jan@digicash.com>
-  Han-Wen Nienhuys <hanwen@stack.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>
+  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
diff --git a/flower/international.cc b/flower/international.cc
new file mode 100644 (file)
index 0000000..029d0f0
--- /dev/null
@@ -0,0 +1,46 @@
+/*   
+  international.cc -- implement stuff for internationalisation
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+  
+ */
+
+#include <stdarg.h>
+#include "config.hh"
+#include "string-convert.hh"
+#include "international.hh"
+
+#if !HAVE_GETTEXT
+inline char*
+gettext (char const* s)
+{
+  return s;
+}
+#else
+#include <libintl.h>
+#endif
+
+String 
+_ (char const *ch)
+{
+  return String (gettext (ch));
+}
+
+String 
+_f (char const* format, ...)
+{
+  va_list args;
+  va_start (args, format);
+  String str = String_convert::vform_str (gettext (format), args);
+  va_end (args);
+  return str;
+}
+
+String 
+_f (char const* format, String s, String s2, String s3)
+{
+  return String_convert::form_str (gettext (format), s.ch_C (), s2.ch_C (), 
+    s3.ch_C ());
+}
index c7f1b4bd0851e8ab404b03db02e9f4bbcf0843ed..9752c046942257efd560d9a7e114815091afbf84 100644 (file)
@@ -4,15 +4,18 @@
 
   source file of the flowerlib
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+         Jan Nieuwenhuizen <janneke@gnu.org>
 */
-#include <stdarg.h>
+
 #include <stdio.h>
 #include <string.h>
 #include <ctype.h>
 #include "libc-extension.hh"
 
-
+/*
+  urg: why soo wierd?
+ */
 char* 
 strnlwr (char* start_l ,int n)
 {
@@ -109,8 +112,8 @@ strrev (Byte* byte_l, int length_i)
 }
 
 #if ! HAVE_SNPRINTF
-int snprintf (char *str, size_t,
-             char const *format, ...)
+int 
+snprintf (char *str, size_t, char const *format, ...)
 {
   va_list ap;
   va_start (ap, format);
@@ -119,3 +122,13 @@ int snprintf (char *str, size_t,
   return i;
 }
 #endif
+
+#if ! HAVE_VSNPRINTF
+int 
+vsnprintf (char *str, size_t, char const *format, va_list args)
+{
+  int i = vsprintf (str, format, args);
+  return i;
+}
+#endif
+
index 1fc42aa3becccc27e5eb6ecd7969677e8340f2c1..c1240f3cddf73bd3320e56fb9a75490a53647b01 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-          Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+          Jan Nieuwenhuizen <janneke@gnu.org>
 */
 #include <assert.h>
 #include "duration-convert.hh"
@@ -23,19 +23,19 @@ String
 Duration_convert::dur2_str (Duration dur)
 {
   if (dur.ticks_i_)
-    return String ("[") + String (dur.ticks_i_) + "]";
+    return String ("[") + to_str (dur.ticks_i_) + "]";
   
   String str;
   if (dur.durlog_i_ >= 0)
-    str = String ( type2_i (dur.durlog_i_) );
+    str = to_str ( type2_i (dur.durlog_i_) );
   else if (dur.durlog_i_ == -1)
     str = "\\breve";
   else if (dur.durlog_i_ == -2)
     str = "\\longa";
-  str += String ('.', dur.dots_i_);
+  str += to_str ('.', dur.dots_i_);
   if (dur.plet_b ())
-    str += String ("*") + String (dur.plet_.iso_i_)
-      + String ("/") + String (dur.plet_.type_i_);
+    str += String ("*") + to_str (dur.plet_.iso_i_)
+      + String ("/") + to_str (dur.plet_.type_i_);
   return str;
 }
 
@@ -47,12 +47,11 @@ Duration_convert::dur2ticks_i (Duration dur)
   return dur2_mom (dur) * Moment (Duration::division_1_i_s);
 }
 
-
 int
 Duration_convert::i2_type (int i)
 {
   int t=0;
-  while (!(i & 1)) {
+  while (i && !(i & 1)) {
     i >>= 1;
     t++;
   }
index b1af3fd8dde1505b815a79ca0ee4ef98536ccfc1..eac7a759ab5d270045926fa59617667dcb3c4ce7 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-          Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+          Jan Nieuwenhuizen <janneke@gnu.org>
 */
 #include <assert.h>
 #include "duration-convert.hh"
index 95e056b7899cca83be869eed18079f5f72b14a89..7bdf8d00dccf0822f3b7bec7d4ea266124099ca7 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
-           Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+           Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <assert.h>
@@ -82,3 +82,4 @@ Duration::plet_b ()
 {
   return !plet_.unit_b ();
 }
+
index 33ee6bd784348c53d33e7239b533916e286a56f7..a6f252a1dac18ce2331311999d317b6d59bfc60f 100644 (file)
@@ -1,7 +1,7 @@
 //
 //  binary-source-file.hh -- declare Binary_source_file
 //
-//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+//  copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef BINARY_SOURCE_FILE_HH
 #define BINARY_SOURCE_FILE_HH
index 59c968f75126ae8ef0a3db8ab5fa2ebbd6743745..367672ac4e1b53cefc4998cf6710807315ab9d2b 100644 (file)
@@ -1,9 +1,9 @@
 /*
-  duration.hh -- declare Duration Plet
-
+  duration.hh -- declare Duration
+  
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
@@ -17,7 +17,7 @@
 #include "plet.hh"
 
 /**
-  Class to handle "musical" durations. This means: balltype 1,2,4,etc. and dots.
+   Handle "musical" durations. This means: balltype 1,2,4,etc. and dots.
    
   (dur)
   */
index 0983a829a4e0dc8012bae0da794b32e10b210d85..ee671c785a3bfee41bffeefce3e400c13a3412cb 100644 (file)
@@ -1,7 +1,7 @@
 //
 //  source-file.hh -- declare Source_file
 //
-//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+//  copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef SOURCE_FILE_HH
 #define SOURCE_FILE_HH
@@ -20,6 +20,7 @@ public:
   /** Ugh! filename gets changed! The path to the opened file may
     change, since it might be searched in multiple directories.  */
   Source_file (String filename_str_r );
+  Source_file (String name_str, String data_str);
   virtual ~Source_file ();
 
   char const* ch_C () const;
index f6a824fa70376e2bae81db7f248506c08ff2cbe4..395a9d8bb46602c215e39c75a72f5213a537897a 100644 (file)
@@ -1,7 +1,7 @@
 //
 //  source.hh -- part of LilyPond
 //
-//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+//  copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef SOURCE_HH
 #define SOURCE_HH
@@ -16,12 +16,12 @@ public:
 
   Source_file * get_file_l (String &filename );
   Source_file* sourcefile_l (char const* ch_C );
+  void add (Source_file* sourcefile_p );
   void set_path (File_path*p_C);
   void set_binary (bool);
 
 private:
   const File_path * path_C_;
-  void add (Source_file* sourcefile_p );
   Pointer_list<Source_file*> sourcefile_p_list_;
   bool binary_b_ ;
 };
diff --git a/lib/include/string-storage.hh b/lib/include/string-storage.hh
new file mode 100644 (file)
index 0000000..f1d5269
--- /dev/null
@@ -0,0 +1,30 @@
+/*   
+  string-storage.hh -- declare String_storage
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+  
+ */
+
+#ifndef STRING_STORAGE_HH
+#define STRING_STORAGE_HH
+
+#include "string.hh"
+#include "file-storage.hh"
+
+/**
+ Urg, let String act as file storage.
+ */
+class String_storage : public File_storage, protected String
+{
+public:
+  String_storage (String s) : String (s) { }
+
+protected:    
+  virtual char const* ch_C () const { return String::ch_C (); }
+  virtual int length_i () const { return String::length_i (); }
+};
+
+#endif /* STRING_STORAGE_HH */
+
index 17d451d1a66c2fee42291629c709f902ad5ca7ae..f9e6d88cbb149d80a654274410f9403afc4c154a 100644 (file)
@@ -5,8 +5,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-  Jan Nieuwenhuizen <jan@digicash.com>.
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>.
 
   Nextstep fixes by tiggr@ics.ele.tue.nl
 */
@@ -71,7 +71,7 @@ Mapped_file_storage::map ()
   data_caddr_ = (caddr_t)mmap ((void*)0, size_off_, PROT_READ, MAP_SHARED, fildes_i_, 0);
 
   if ((int)data_caddr_ == -1)
-    warning (String (_ ("can't map: error no: ")) + strerror (errno));
+    warning (_ ("can't map file") + ": " + strerror (errno));
 
 #endif
 }
@@ -84,7 +84,8 @@ Mapped_file_storage::open (String name_str)
 
   if (fildes_i_ == -1)
     {
-      warning (String (_ ("can't open: ")) + name_str + String (": ") + strerror (errno));
+      warning (_f ("can't open file: `%s\'", name_str)
+       + ": " + strerror (errno));
       return;
     }
 
index 14fabe795911d66e2084c95dae716e7e64e3eed5..5403abb5179b3452b862a8305b01d469cd11182c 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
-  & Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+  & Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #include "proto.hh"
 #include "plist.hh"
 #include "warn.hh"
-#include "windhoos-suck-suck-suck-thank-you-cygnus.hh"
+#include "thank-you-cygnus.hh"
 #include "source-file.hh"
 #include "simple-file-storage.hh"
+#include "string-storage.hh"
 
 Source_file::Source_file (String filename_str)
 {
@@ -26,6 +27,13 @@ Source_file::Source_file (String filename_str)
   storage_p_ = new Simple_file_storage (filename_str);
 }
 
+Source_file::Source_file (String name_str, String data_str)
+{
+  name_str_ = name_str;
+  istream_p_ = 0;
+  storage_p_ = new String_storage (data_str);
+}
+
 istream*
 Source_file::istream_l ()
 {
@@ -51,10 +59,10 @@ String
 Source_file::file_line_column_str (char const *context_ch_C) const
 {
   if  (!ch_C ())
-    return _ ("(unknown)");
+    return "(" + _ ("position unknown") + ")";
   else
-    return name_str () + ":" + String (line_i (context_ch_C))
-      + ":" + String (char_i (context_ch_C));
+    return name_str () + ":" + to_str (line_i (context_ch_C))
+      + ":" + to_str (char_i (context_ch_C));
 }
 
 String
@@ -144,14 +152,14 @@ String
 Source_file::error_str (char const* pos_ch_C) const
 {
   if (!in_b (pos_ch_C))
-    return _ ("(position unknown)");
+    return "(" + _ ("position unknown") + ")";
 
   int ch_i = char_i (pos_ch_C);
   String line = line_str (pos_ch_C);
   String context = line.left_str (ch_i)
-    + String ('\n')
-    + String (' ', column_i (pos_ch_C))
-    + line.cut (ch_i, INT_MAX);
+    + to_str ('\n')
+    + to_str (' ', column_i (pos_ch_C))
+    + line.cut_str (ch_i, INT_MAX);
 
   return context;
 }
index f2a69f5504cafd124308ea2c3d6c845ad2a4cc6f..67c09cb7fcbd097e50eed7929202c4d2e3402074 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-           Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+           Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "duration-convert.hh"
@@ -27,11 +27,11 @@ Abbreviation_beam_engraver::Abbreviation_beam_engraver ()
 bool
 Abbreviation_beam_engraver::do_try_request (Request*r)
 {
-  Musical_req* mus_l = r->musical ();
+  Musical_req* mus_l = r->access_Musical_req ();
   if (!mus_l)
     return false;
 
-  Abbreviation_beam_req * b = mus_l->abbrev_beam ();
+  Abbreviation_beam_req * b = mus_l->access_Abbreviation_beam_req ();
 
   if (!b)
     return false;
@@ -52,7 +52,7 @@ Abbreviation_beam_engraver::do_process_requests ()
 {
   if (!abeam_p_ && span_reqs_drul_[LEFT]) {
     abeam_p_ = new Abbreviation_beam;
-    announce_element (Score_elem_info (abeam_p_, span_reqs_drul_[LEFT]));
+    announce_element (Score_element_info (abeam_p_, span_reqs_drul_[LEFT]));
   }
 }
 
@@ -80,12 +80,12 @@ Abbreviation_beam_engraver::do_removal_processing ()
 }
 
 void
-Abbreviation_beam_engraver::acknowledge_element (Score_elem_info i)
+Abbreviation_beam_engraver::acknowledge_element (Score_element_info i)
 {
   if (!abeam_p_ || !i.elem_l_->is_type_b (Stem::static_name ()))
     return;
 
-  Stem* s = (Stem*)i.elem_l_->item ();
+  Stem* s = (Stem*)i.elem_l_->access_Item ();
 
   int type_i = span_reqs_drul_[LEFT]->type_i_;
   s->flag_i_ = intlog2 (type_i) - 2;
@@ -98,5 +98,5 @@ Abbreviation_beam_engraver::acknowledge_element (Score_elem_info i)
   if (s->type_i () != 1) // no abbrev gaps on half note
     s->beam_gap_i_ = s->flag_i_ - ((s->type_i () >? 2) - 2);
 
-  abeam_p_->add (s);
+  abeam_p_->add_stem (s);
 }
index 6637d19f0f3527c04b616648f454df9e6c079775..91f4ff21f978921ff24b646382613fd829292095 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-          Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+          Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "p-col.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "proto.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "abbreviation-beam.hh"
 #include "misc.hh"
 #include "debug.hh"
index 2f5ad611a68dc778118d1deb8961cf742951e7c3..5b6717c01519a952cc9cc4a296d3393e8a79a46d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "audio-column.hh"
@@ -19,7 +19,7 @@ Audio_column::Audio_column (Moment at_mom)
 }
 
 void
-Audio_column::add (Audio_item* l)
+Audio_column::add_audio_item (Audio_item* l)
 {
   audio_item_l_list_.bottom().add (l);
   l->audio_column_l_ = this; 
index 81b0285ba6356e13f6fc480992435529356b397c..71757314a7c75e82dd1a8bfd2687dad2f060a5ba 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 #include "debug.hh"
 #include "audio-item.hh"
@@ -42,9 +42,10 @@ Audio_key::midi_item_p()
 }
 IMPLEMENT_IS_TYPE_B1 (Audio_key, Audio_item);
 
-Audio_note::Audio_note (Request* req_l)
+Audio_note::Audio_note (Request* req_l, int transposing_i)
   : Audio_item (req_l)
 {
+  transposing_i_ = transposing_i;
 }
 
 Midi_item*
@@ -69,17 +70,17 @@ Audio_tempo::midi_item_p()
 
 IMPLEMENT_IS_TYPE_B1(Audio_tempo, Audio_item);
 
-Audio_meter::Audio_meter (Request* req_l)
+Audio_time_signature::Audio_time_signature (Request* req_l)
   : Audio_item (req_l)
 {
 }
 
 Midi_item*
-Audio_meter::midi_item_p()
+Audio_time_signature::midi_item_p()
 {
-  return new Midi_meter (this);
+  return new Midi_time_signature (this);
 }
-IMPLEMENT_IS_TYPE_B1(Audio_meter, Audio_item);
+IMPLEMENT_IS_TYPE_B1(Audio_time_signature, Audio_item);
 
 Audio_text::Audio_text (Audio_text::Type type, String text_str)
   : Audio_item (0)
index d35fb23a58c65b1b78c2bf5f15da92bd3247a493..235de874dedaa398b94fc4f52db23f10801dac73 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "audio-staff.hh"
@@ -13,7 +13,7 @@
 #include "midi-walker.hh"
 
 void
-Audio_staff::add (Audio_item* l)
+Audio_staff::add_audio_item (Audio_item* l)
 {
   audio_item_l_list_.bottom().add (l);
 }
index 55256fdd5b78321bf93ed65398adcb24e3a353d9..dea856499bc00ce6f59d42c0dd87c9d277487330 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
-    Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998, 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+    Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
@@ -19,9 +19,9 @@
 #include <math.h>
 
 #include "p-col.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "proto.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "beam.hh"
 #include "abbreviation-beam.hh"
 #include "misc.hh"
@@ -34,7 +34,6 @@
 #include "lookup.hh"
 #include "grouping.hh"
 #include "stem-info.hh"
-#include "main.hh"  // experimental features
 
 
 IMPLEMENT_IS_TYPE_B1 (Beam, Spanner);
@@ -50,7 +49,7 @@ Beam::Beam ()
 }
 
 void
-Beam::add (Stem*s)
+Beam::add_stem (Stem*s)
 {
   stems_.push (s);
   s->add_dependency (this);
@@ -79,7 +78,7 @@ Beam::brew_molecule_p () const
       Molecule sb = stem_beams (i, next, prev);
       Real  x = i->hpos_f ()-x0;
       sb.translate (Offset (x, (x * slope_f_ + left_y_) * internote_f));
-      mol_p->add (sb);
+      mol_p->add_molecule (sb);
     }
   mol_p->translate_axis (x0 
     - spanned_drul_[LEFT]->absolute_coordinate (X_AXIS), X_AXIS);
@@ -105,7 +104,7 @@ void
 Beam::do_print () const
 {
 #ifndef NPRINT
-  DOUT << "slope_f_ " <<slope_f_ << "left ypos " << left_y_;
+  DOUT << "slope_f_ " << slope_f_ << "left ypos " << left_y_;
   Spanner::do_print ();
 #endif
 }
@@ -115,7 +114,7 @@ Beam::do_post_processing ()
 {
   if (stems_.size () < 2)
     {
-      warning (_ ("Beam with less than 2 stems"));
+      warning (_ ("beam with less than two stems"));
       transparent_b_ = true;
       return ;
     }
@@ -124,10 +123,10 @@ Beam::do_post_processing ()
 }
 
 void
-Beam::do_substitute_dependent (Score_elem*o,Score_elem*n)
+Beam::do_substitute_dependent (Score_element*o,Score_element*n)
 {
   if (o->is_type_b (Stem::static_name ()))
-      stems_.substitute ((Stem*)o->item (),  n? (Stem*) n->item ():0);
+      stems_.substitute ((Stem*)o->access_Item (),  n? (Stem*) n->access_Item ():0);
 }
 
 Interval
@@ -173,15 +172,30 @@ Beam::set_default_dir ()
      But is that because it really looks better, or because he
      wants to provide some real simple hands-on rules.
      
-     We have our doubts.
+     We have our doubts, so we simply provide all sensible alternatives.
   */
 
-  // fixme.  make runtime.
-  // majority
-  // dir_ = (count[UP] > count[DOWN]) ? UP : DOWN;
-
-  // mean centre distance
-  dir_ = (total[UP] > total[DOWN]) ? UP : DOWN;
+  Dir_algorithm a = (Dir_algorithm)rint(paper ()->get_var ("beam_dir_algorithm"));
+  switch (a)
+    {
+    case MAJORITY:
+      dir_ = (count[UP] > count[DOWN]) ? UP : DOWN;
+      break;
+    case MEAN:
+      // mean centre distance
+      dir_ = (total[UP] > total[DOWN]) ? UP : DOWN;
+      break;
+    default:
+    case MEDIAN:
+      // median centre distance
+      if (!count[UP])
+       dir_ = DOWN;
+      else if (!count[DOWN])
+       dir_ = UP;
+      else
+       dir_ = (total[UP] / count[UP] > total[DOWN] / count[DOWN]) ? UP : DOWN;
+      break;
+    }
 
   for (int i=0; i <stems_.size (); i++)
     {
@@ -545,7 +559,7 @@ Beam::set_stemlens ()
            { 
              // when all too short, normal stems win..
              if (dy_f < -epsilon_f)
-               warning ( _("Weird beam shift, check your knees."));
+               warning (_ ("weird beam shift, check your knees"));
              dy_f = dy_f >? info.miny_f_ - y;
            }
        }
@@ -621,7 +635,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
   Real dy = interbeam_f;
   Real stemdx = staffline_f;
   Real sl = slope_f_* internote_f;
-  paper ()->lookup_l ()->beam (sl, 20 PT, 1 PT);
+  lookup_l ()->beam (sl, 20 PT, 1 PT);
 
   Molecule leftbeams;
   Molecule rightbeams;
@@ -631,16 +645,21 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
     {
       int lhalfs= lhalfs = here->beams_left_i_ - prev->beams_right_i_ ;
       int lwholebeams= here->beams_left_i_ <? prev->beams_right_i_ ;
-      Real w = (here->hpos_f () - prev->hpos_f ())/4 <? paper ()->note_width ();;
+      /*
+       Half beam should be one note-width, 
+       but let's make sure two half-beams never touch
+       */
+      Real w = here->hpos_f () - prev->hpos_f ();
+      w = w/2 <? paper ()->note_width ();
       Atom a;
       if (lhalfs)              // generates warnings if not
-       a =  paper ()->lookup_l ()->beam (sl, w, beam_f);
+       a =  lookup_l ()->beam (sl, w, beam_f);
       a.translate (Offset (-w, -w * sl));
       for (int j = 0; j  < lhalfs; j++)
        {
          Atom b (a);
          b.translate_axis (-dir_ * dy * (lwholebeams+j), Y_AXIS);
-         leftbeams.add (b);
+         leftbeams.add_atom (b);
        }
     }
 
@@ -650,7 +669,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
       int rwholebeams = here->beams_right_i_ <? next->beams_left_i_;
 
       Real w = next->hpos_f () - here->hpos_f ();
-      Atom a = paper ()->lookup_l ()->beam (sl, w + stemdx, beam_f);
+      Atom a = lookup_l ()->beam (sl, w + stemdx, beam_f);
       a.translate_axis( - stemdx/2, X_AXIS);
       int j = 0;
       Real gap_f = 0;
@@ -661,34 +680,34 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
            {
              Atom b (a);
              b.translate_axis (-dir_ * dy * j, Y_AXIS);
-             rightbeams.add (b);
+             rightbeams.add_atom (b);
            }
          // TODO: notehead widths differ for different types
          gap_f = paper ()->note_width () / 2;
          w -= 2 * gap_f;
-         a = paper ()->lookup_l ()->beam (sl, w + stemdx, beam_f);
+         a = lookup_l ()->beam (sl, w + stemdx, beam_f);
        }
 
       for (; j  < rwholebeams; j++)
        {
          Atom b (a);
          b.translate (Offset (gap_f, -dir_ * dy * j));
-         rightbeams.add (b);
+         rightbeams.add_atom (b);
        }
 
-      w = w/4 <? paper ()->note_width ();
+      w = w/2 <? paper ()->note_width ();
       if (rhalfs)
-       a = paper ()->lookup_l ()->beam (sl, w, beam_f);
+       a = lookup_l ()->beam (sl, w, beam_f);
 
       for (; j  < rwholebeams + rhalfs; j++)
        {
          Atom b (a);
          b.translate_axis (-dir_ * dy * j, Y_AXIS);
-         rightbeams.add (b);
+         rightbeams.add_atom (b);
        }
 
     }
-  leftbeams.add (rightbeams);
+  leftbeams.add_molecule (rightbeams);
 
   /*
     Does beam quanting think  of the asymetry of beams? 
index 2242c4ffa5b2f1518067cb487d12890f5f7842c9..e851e74f031b72e8274bbbcdf8c761dbb587d07f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <math.h>
@@ -12,7 +12,7 @@
 
 #ifndef STANDALONE
 #include "direction.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "paper-def.hh"
 #include "debug.hh"
 #include "main.hh"
@@ -168,6 +168,12 @@ Bezier_bow::blow_fit ()
   Real b = dy1;
   Real h = -b / a;
 
+  if (sign (h) != sign (h1))
+    return;
+
+  if (sign (h) != sign (h1))
+    return;
+
   control_[1].y () += -h1 +h; 
   control_[2].y () += -h1 +h; 
   return_[1].y () += -h1 +h;
index b986debd303d301679687daccb5e0c2047310692..04a09d7bc95968a6d9c90ecc8048291e3d1c3191 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-      Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+      Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "bow.hh"
@@ -33,9 +33,9 @@ Bow::brew_molecule_p () const
   Atom a;
 
   if (!dash_i_)
-    a = paper ()->lookup_l ()->slur (c);
+    a = lookup_l ()->slur (c);
   else
-    a = paper ()->lookup_l ()->dashed_slur (c, thick, dash_i_);
+    a = lookup_l ()->dashed_slur (c, thick, dash_i_);
 
   if (check_debug && !monitor->silent_b ("Bow"))
     {
@@ -53,7 +53,7 @@ Bow::brew_molecule_p () const
   a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
 
   Molecule* mol_p = new Molecule;
-  mol_p->add (a);
+  mol_p->add_atom (a);
 
   return mol_p;
 }
@@ -68,6 +68,26 @@ Bow::center () const
   return Offset (dx / 2, dy);
 }
 
+
+
+/*
+   
+   ugh .  Control points are too crude measures.
+ */
+Interval
+Bow::do_height () const
+{
+  Array<Offset> c (get_controls());
+
+  Interval iv;
+  for (int i=0; i < c.size (); i++)
+    {
+      Real y = c[i][Y_AXIS];
+      iv.unite (Interval (y,y));
+    }
+  return iv;
+}
+
 Interval
 Bow::do_width () const    
 {
index 193ef482b5d815d7dd2ac9c1104ad34f8e916a11..3da2c28559a74edb3e05f721e77475629fea2fa5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
index fecde2402d07be5dd5fc2a64805d6b32293844e0..ab12bf878026534798043651112d0f578277e04c 100644 (file)
@@ -3,16 +3,16 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "staff-sym.hh"
 #include "command-request.hh"
-#include "p-col.hh"
+#include "note-head.hh"
 #include "hara-kiri-vertical-group-spanner.hh"
 #include "hara-kiri-line-group-engraver.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Hara_kiri_line_group_engraver,Engraver);
+IMPLEMENT_IS_TYPE_B1 (Hara_kiri_line_group_engraver,Line_group_engraver_group);
 ADD_THIS_TRANSLATOR (Hara_kiri_line_group_engraver);
 
 void
@@ -20,3 +20,14 @@ Hara_kiri_line_group_engraver::create_line_spanner ()
 {
   staffline_p_ = new Hara_kiri_vertical_group_spanner;
 }
+
+void
+Hara_kiri_line_group_engraver::typeset_element(Score_element * e)
+{
+  if (e->is_type_b (Note_head::static_name ()))
+    ((Hara_kiri_vertical_group_spanner*)staffline_p_)->add_note 
+      ((Note_head*)e->access_Item ());
+
+  Line_group_engraver_group::typeset_element (e);
+}
+
index 92fc9e29ee3bbac06e451ca81ffc5ca123c08503..849a2552fa181a6ce70db8a52fea20d5f90bedb5 100644 (file)
@@ -4,51 +4,53 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "hara-kiri-vertical-group-spanner.hh"
-#include "item.hh"
+#include "debug.hh"
 #include "note-head.hh"
-#include "p-col.hh"
-#include "molecule.hh"
+#include "bar.hh"
 
 IMPLEMENT_IS_TYPE_B1 (Hara_kiri_vertical_group_spanner, Vertical_group_spanner);
 
-void 
-Hara_kiri_vertical_group_spanner::add_element (Graphical_element* e)
+Hara_kiri_vertical_group_spanner::Hara_kiri_vertical_group_spanner()
 {
-  if (e->is_type_b (Note_head::static_name ()))
-    add_dependency ((Score_elem*)e);
-  Vertical_group_spanner::add_element (e);
 }
 
-// we never get here, or indeed in axis-group-spanner::do_break_processing?
 void 
-Hara_kiri_vertical_group_spanner::do_break_processing ()
+Hara_kiri_vertical_group_spanner::add_note (Note_head* n)
 {
-  Vertical_group_spanner::do_break_processing ();
-  if (dependency_size ())
-    return;
-  transparent_b_ = true;
+  add_dependency (n);
+  head_l_arr_.push (n);
 }
 
-// too late ?
 void 
 Hara_kiri_vertical_group_spanner::do_post_processing ()
 {
-  if (dependency_size ())
+  if (!head_l_arr_.empty ())
     return;
-  transparent_b_ = true;
+
+  Link_array<Score_element> childs = get_children ();
+  for (int i = 0; i < childs.size (); i++)
+    {
+      childs[i]->transparent_b_ = true;
+      childs[i]->set_empty (true);
+    }
+  set_empty (true);
 }
 
-Molecule*
-Hara_kiri_vertical_group_spanner::brew_molecule_p() const
+void
+Hara_kiri_vertical_group_spanner::do_substitute_dependency (Score_element*o, Score_element*n)
 {
-  // aaarg: go away
-  if (1) // transparent_b_)
-    return new Molecule;
-  return Vertical_group_spanner::brew_molecule_p ();
+  if (o->is_type_b (Note_head::static_name ()))
+    head_l_arr_.substitute ((Note_head*)o->access_Item (), 
+      (n)? (Note_head*)n->access_Item () : 0);
 }
 
 
+void
+Hara_kiri_vertical_group_spanner::do_print () const
+{
+  Axis_group_spanner::do_print ();
+}
index df3244e4dd089766c5f25442ebdeda6270909c86..2a25c89d44913f99a4c1518fa4766b470f34e8c1 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-          Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+          Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
@@ -29,7 +29,7 @@ protected:
   virtual void do_removal_processing();
   virtual void do_process_requests();
   virtual bool do_try_request (Request*);
-  virtual void acknowledge_element (Score_elem_info);
+  virtual void acknowledge_element (Score_element_info);
   virtual void do_pre_move_processing();
 
 private:
index f6eb933e704aa88bc54be3d50054f1836168700a..629fb0286ecf0368c2cf026b4847ffc635efab3f 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-          Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+          Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef ABBREVIATION_BEAM_HH
@@ -21,7 +21,7 @@ public:
 
   Abbreviation_beam();
 
-  SCORE_ELEM_CLONE(Abbreviation_beam);
+  SCORE_ELEMENT_CLONE(Abbreviation_beam);
 
 protected:
   virtual void do_print() const;
index 6065e43a68c2d5783496f640d21cfae7a3ff4d11..9b60c3eb7d50f8c816a36e44d52fe5c96ea3025f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   audio-column.hh -- declare Audio_column
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef AUDIO_COLUMN_HH
@@ -21,7 +21,7 @@ class Audio_column {
 public:
     Audio_column (Moment at_mom);
 
-    void add (Audio_item* i_l);
+    void add_audio_item (Audio_item* i_l);
     Moment at_mom() const;
     void print() const;
 
index 3edfa01e48de848f0faac8853f391af598f4153b..b745c5b931bfab198c0afe982e5fb68f1b7113e4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   audio-item.hh -- declare Audio_items
 
-  (c) 1996,  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef AUDIO_ITEM_HH
@@ -58,8 +58,9 @@ struct Audio_instrument : public Audio_item {
                                       
 struct Audio_note : public Audio_item {
   DECLARE_MY_RUNTIME_TYPEINFO;
-  Audio_note (Request* req_l);
+  Audio_note (Request* req_l, int transposing_i = 0);
   virtual Midi_item* midi_item_p();
+  int transposing_i_;
 };
 
 struct Audio_text : Audio_item {
@@ -82,8 +83,8 @@ struct Audio_tempo : Audio_item {
   int per_minute_4_i_;
 };
 
-struct Audio_meter : Audio_item {
-  Audio_meter (Request* req_l);
+struct Audio_time_signature : Audio_item {
+  Audio_time_signature (Request* req_l);
   virtual Midi_item* midi_item_p();
   DECLARE_MY_RUNTIME_TYPEINFO;
 };
index 12f3d9c1e8ad1ec419300d6ec9c50358990028f3..3d13b28d6196ecfc38dbd36a7c580cce9b5b2059 100644 (file)
@@ -1,7 +1,7 @@
 /*
   audio-staff.hh -- declare Audio_staff
 
-  (c) 1996,  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef AUDIO_STAFF_HH
@@ -13,7 +13,7 @@
 #include "audio-element.hh"
 
 struct Audio_staff : public Audio_element {
-    void add (Audio_item*  l);
+    void add_audio_item (Audio_item*  l);
     void output (Midi_stream& midi_stream_r, int track_i);
 
     Link_list<Audio_item*> audio_item_l_list_;
index ea8c1ed00de0a24900d4f418af06ab93f5b470bf..80140377009c23682c838a9772dbb6d79991301d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   bezier.hh -- declare Bezier and Bezier_bow
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef BEZIER_HH
@@ -47,7 +47,7 @@ public:
   Bezier_bow (Paper_def* paper_l);
 
   /**
-   Calculate bezier curve for bow from bow parameters.
+   Calculate bezier curve for bow from bow paratime_signatures.
    */
   void blow_fit ();
   void calc ();
index a37be5c6690f7eff82744212512d0825cd149ea9..caa59895145701319df6310624685f9e69e2ab86 100644 (file)
@@ -1,7 +1,7 @@
 /*
   curve.hh -- declare point and curve
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef CURVE_HH
@@ -14,7 +14,7 @@
 #include "real.hh"
 
 #include "offset.hh"
-#include "varray.hh"
+#include "array.hh"
 
 class Curve : public Array<Offset>
 {
index 6180ba36775ef48c79e9edb2fa1777c32df285f9..511a24404d96046e0f7a66dbf59485f3f799b5ec 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
index 21ca5197d6f99648787534d177978feb717e9729..e1d21bcdc15e0fce55cd5df84aeca4c399d65556 100644 (file)
@@ -1,22 +1,22 @@
 /*
-  hara-kiri-line-group-grav.hh -- declare Hara_kiri_line_group_engraver
+  hara-kiri-line-group-engraver.hh -- declare Hara_kiri_line_group_engraver
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
 #ifndef HARA_KIRI_LINE_GROUP_GRAV_HH
 #define HARA_KIRI_LINE_GROUP_GRAV_HH
 
-#include "line-group-grav.hh"
+#include "line-group-group-engraver.hh"
 
 /**
   Just as Line_group_engraver, but won't disgrace Lily by typesetting 
   an empty line (for orchestral scores).
   */
-class Hara_kiri_line_group_engraver : public Line_group_engraver
+class Hara_kiri_line_group_engraver : public Line_group_engraver_group
 {
 public:
   TRANSLATOR_CLONE (Hara_kiri_line_group_engraver);
@@ -24,6 +24,7 @@ public:
 
 protected:
   virtual void create_line_spanner ();
+  void typeset_element (Score_element*);
 };
 
 
index d861e7c235f5433550d97535481144d9843fccd7..8492d976f687a35d96388f26f9e6cfa2c332ce68 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
@@ -20,14 +20,17 @@ class Hara_kiri_vertical_group_spanner : public Vertical_group_spanner
 public:
   DECLARE_MY_RUNTIME_TYPEINFO;
 
+  Hara_kiri_vertical_group_spanner ();
   virtual void do_post_processing ();
-  virtual void add_element (Graphical_element* e);
+  void add_note (Note_head* n);
 
 protected:
-  SCORE_ELEM_CLONE (Hara_kiri_vertical_group_spanner);
+  SCORE_ELEMENT_CLONE (Hara_kiri_vertical_group_spanner);
 
-  virtual void do_break_processing ();
-  virtual Molecule* brew_molecule_p () const;
+  virtual void do_substitute_dependency (Score_element*, Score_element*);
+  virtual void do_print ()const;
+
+  Link_array<Note_head> head_l_arr_;
 };
 
 
index f76b9e11fde996e2408fdfd8c72f39a6f61e879b..406ae94aebacf46ea634828868ca641c66c4a531 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef KEY_PERFOMER_HH
index 2660f890021e0c329e5eec18f061621904d33162..29a5f92390160778e235800a20f1dd40dde73cd0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
@@ -12,7 +12,7 @@
 
 #include "lily-proto.hh"
 #include "performer.hh"
-#include "varray.hh"
+#include "array.hh"
 
 class Lyric_performer : public Performer {
 public:
diff --git a/lily/include/mark-engraver.hh b/lily/include/mark-engraver.hh
new file mode 100644 (file)
index 0000000..b095669
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+  mark-engraver.hh -- declare Mark_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+
+#ifndef MARK_ENGRAVER_HH
+#define MARK_ENGRAVER_HH
+
+#include "engraver.hh"
+
+/**
+  */
+class Mark_engraver : public Engraver 
+{
+public:
+  Mark_engraver ();
+
+  TRANSLATOR_CLONE(Mark_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+
+protected:
+  virtual bool do_try_request (Request *req_l);
+  virtual void do_process_requests ();
+  virtual void do_pre_move_processing ();
+
+private:
+  Mark_req * mark_req_l_;
+  Script* script_p_;
+};
+
+#endif // MARK_ENGRAVER_HH
index 98951c10f17401cedd01df3a55839022a15b2d82..dcf0a9819dc7e7806e22b48a331b59584ec05ce4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index ca89bacec17cb4722dfb1cd45e37f81336b9f583..dc40138d137a46b7d0ddcf152d3a8b9f8ce57348 100644 (file)
@@ -1,7 +1,7 @@
 /*
   midi-item.hh -- declare Midi items
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef MIDI_ITEM_HH
@@ -96,10 +96,10 @@ struct Midi_key : public Midi_item {
   virtual String str () const;
 };
 
-struct Midi_meter : Midi_item {
+struct Midi_time_signature : Midi_item {
 
   DECLARE_MY_RUNTIME_TYPEINFO;
-  Midi_meter (Audio_item* audio_item_l); 
+  Midi_time_signature (Audio_item* audio_item_l); 
   
   virtual String str () const;
   int clocks_per_1_i_;
index f3a3781ed3c72662ae7136cee87c411745012a75..464bfba9e6756b3d8cae3546d1210c41e2d59805 100644 (file)
@@ -1,7 +1,7 @@
 /*
   midi-stream.hh -- declare Midi_stream
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef MIDI_STREAM_HH
index c7a20f76ace44ee60a397c26da9ae26c9336799f..3be3395e621f2a75b9530708b4380a0788fdadb5 100644 (file)
@@ -1,8 +1,8 @@
 /*
   midi-walker.hh -- declare Midi_walker
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys  <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef MIDI_WALKER_HH
index 0858c8178a9aa3980e1a698223edcd5c55e08069..4fc6104a4ea2f528fc7d80bad922e445058dfaea 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
index 067ff3eae18059c86bacfac2565d2ae3bdb94e0f..abb17be6e4178562d1f63bc0337d09edfeda40cc 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef MULTI_MEASURE_REST_ENGRAVER_HH
index afaeaf777040d7b6a92aa165a69eda93c8c40fe9..66cf89d004c6a86674a12a0b8b001dd103c310dc 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
index c3b77ea415af9e5526b7c0c09ffa076676412f46..057f61c4e7d84f83154d3e38c4c183f133d8af48 100644 (file)
@@ -1,8 +1,8 @@
 /*
   note-performer.hh -- declare Note_performer
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef NOTE_PERFORMER_HH
index 923575769d2f439bdde6b79da30558554547ce5b..bc7067a4af6fc6de155b46a90b34a85f0a64dc7c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   performance.hh -- declare Performance
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef PERFORMANCE_HH
@@ -20,9 +20,9 @@ public:
   Performance ();
   ~Performance () {}
 
-  void add (Audio_column*);
+  void add_column (Audio_column*);
   void add_staff (Audio_staff* l);
-  void add (Audio_element*p);
+  void add_element (Audio_element*p);
 
     
   void output (Midi_stream& midi_stream_r);
index f5bcb61b4a27bc52568d226f4ac673e851882692..8c9c8aa8d865d479023cedcf8b4e92f18ccd69dc 100644 (file)
@@ -1,8 +1,8 @@
 /*
   performer-group-performer.hh -- declare Performer_group_performer
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef PERFORMER_GROUP_PERFORMER_HH
index 5d17b6afef9a3daf791be342cadc7d12f7712921..11fbdbb397ca986781351ab51a41633ee2765397 100644 (file)
@@ -1,17 +1,17 @@
 /*
   performer.hh -- declare Performer
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef PERFORMER_HH
 #define PERFORMER_HH
 
 #include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "request.hh"
-#include "score-elem-info.hh"
+#include "score-element-info.hh"
 #include "staff-info.hh"
 #include "translator.hh"
 
index 7de90d45261d400dc9d1b8d23141fca6bc0604e5..005a475bf63c44fbc6a2e3e89154f4a233c99b38 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef PLET_ENGRAVER_HH
@@ -25,7 +25,7 @@ public:
   Plet_engraver ();
 
 protected:
-  virtual void acknowledge_element (Score_elem_info);
+  virtual void acknowledge_element (Score_element_info);
   virtual void do_removal_processing();
   virtual void do_process_requests();
   virtual bool do_try_request (Request*);
index 1625721bf45e0ad22f9597adc9dc5c8137926a43..39e7cac57d5789baf61667c97037c241a9b817aa 100644 (file)
@@ -1,7 +1,7 @@
 /*
   plet-spanner.hh -- part of GNU LilyPond
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef PLET_SPANNER_HH
@@ -28,12 +28,12 @@ protected:
   virtual Molecule* brew_molecule_p () const;
  
   DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEM_CLONE(Plet_spanner);
+  SCORE_ELEMENT_CLONE(Plet_spanner);
 
   virtual void do_add_processing ();
   virtual void do_post_processing ();
   virtual void set_default_dir ();
-  virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+  virtual void do_substitute_dependency (Score_element*,Score_element*);
   Plet_spanner (Plet_spanner const&);
 };
 
index 3aa4d4ba7e03ddade72d150029a1043bc60ebfef..adb462a2dd325faa64740d411bfdf03590106a21 100644 (file)
@@ -1,8 +1,8 @@
 /*
   score-performer.hh -- declare Score_performer
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef SCORE_PERFORMER_HH
diff --git a/lily/include/staff-margin-engraver.hh b/lily/include/staff-margin-engraver.hh
new file mode 100644 (file)
index 0000000..ae9d01b
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+  staff-margin-engraver.hh -- declare Staff_margin_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+
+#ifndef STAFF_MARGIN_ENGRAVER_HH
+#define STAFF_MARGIN_ENGRAVER_HH
+
+#include "engraver.hh"
+
+/**
+  put (instrument) text to left of line
+ */
+class Staff_margin_engraver : public Engraver 
+{
+public:
+  TRANSLATOR_CLONE(Staff_margin_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+
+  Staff_margin_engraver ();
+
+protected:
+  void acknowledge_element (Score_element_info);
+  void do_pre_move_processing ();
+
+private:
+  Script * script_p_;
+};
+
+#endif // STAFF_MARGIN_ENGRAVER_HH
index 3352e85b77ccbe193898fa84b28edf363e1bb20e..484ae5bafab705d47bf8c1fb39c4155849d103d3 100644 (file)
@@ -1,8 +1,8 @@
 /*
   staff-performer.hh -- declare Staff_performer
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef STAFF_PERFORMER_HH
index 06a6cb2918f4e741be7dfcfea51bccc9273ecc1e..bff7cfbdb38f69464c122b1220cd1a16d4fa00e3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
diff --git a/lily/include/time-signature-performer.hh b/lily/include/time-signature-performer.hh
new file mode 100644 (file)
index 0000000..a40a223
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+  time_signature-performer.hh -- declare Time_signature_performer
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#ifndef METER_PERFOMER_HH
+#define METER_PERFOMER_HH
+
+#include "lily-proto.hh"
+#include "performer.hh"
+
+class Time_signature_performer : public Performer {
+public:
+  TRANSLATOR_CLONE(Time_signature_performer);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Time_signature_performer();
+  ~Time_signature_performer();
+
+protected:
+  void do_print() const;
+  virtual bool do_try_request (Request* req_l);
+  virtual void do_process_requests();
+
+private:
+  Time_signature_change_req* time_signature_req_l_;
+};
+
+#endif // METER_PERFOMER_HH
index 527cf06cbbf6efcfbbc637179b68c0f8bbebc286..02e80fca2891fe469aec3c8005cb28d41f8a6b75 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "key-performer.hh"
@@ -47,8 +47,8 @@ Key_performer::do_try_request (Request* req_l)
   if (key_req_l_)
        return false;
 
-  if (req_l->command())
-       key_req_l_ = req_l->command()->keychange ();
+  if (req_l->access_Command_req ())
+       key_req_l_ = req_l->access_Command_req ()->access_Key_change_req ();
 
   if (key_req_l_)
        return true;
index d81875c95e72fb5bd1dffedf9a3c1a032efdc90e..bcbbc9d501961648ec39e1b74aab550aa52da127 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "lyric-performer.hh"
@@ -29,25 +29,25 @@ Lyric_performer::do_print() const
 {
 #ifndef NPRINT
   if (lreq_arr_.size())
-       lreq_arr_[ 0 ]->print();
+    lreq_arr_[ 0 ]->print();
 #endif
 }
 
 void
 Lyric_performer::do_process_requests()
 {
-  if (lreq_arr_.size() && lreq_arr_[ 0 ]->tdef_p_->text_str_.length_i())
-       play (new Audio_text (Audio_text::LYRIC, lreq_arr_[ 0 ]->tdef_p_->text_str_));
+  if (lreq_arr_.size() && lreq_arr_[0]->text_str_.length_i())
+    play (new Audio_text (Audio_text::LYRIC, lreq_arr_[ 0 ]->text_str_));
   lreq_arr_.clear();
 }
 
 bool
 Lyric_performer::do_try_request (Request* req_l)
 {
-  Musical_req* m_l = req_l->musical();
-  if (!m_l || ! m_l->lreq_l()) 
-       return false;
-  lreq_arr_.push (m_l->lreq_l());
+  Musical_req* m_l = req_l->access_Musical_req ();
+  if (!m_l || ! m_l->access_Lyric_req ()) 
+    return false;
+  lreq_arr_.push (m_l->access_Lyric_req ());
 
   return true;
 }
index bd5c6276dec7a6121bb88d70b998ec1f28a1102b..379e4daa46a6a2ce0268902601f0c47979c86146 100644 (file)
@@ -3,15 +3,16 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <stdlib.h>
 #include <iostream.h>
 #include <assert.h>
+#include <locale.h>
 #include "proto.hh"
 #include "plist.hh"
-#include "lgetopt.hh"
+#include "getopt-long.hh"
 #include "misc.hh"
 #include "string.hh"
 #include "main.hh"
 #include "file-results.hh"
 #include "debug.hh"
 
+#if HAVE_GETTEXT
+#include <libintl.h>
+#endif
+
 
 bool version_ignore_global_b = false;
 bool no_paper_global_b = false;
@@ -27,15 +32,18 @@ bool no_timestamps_global_b = false;
 bool find_quarts_global_b = false;
 String default_outname_base_global =  "lelie";
 int default_count_global;
+File_path global_path;
+
 
 bool experimental_features_global_b = false;
 bool dependency_global_b = false;
 
 int exit_status_i_;
 
-void destill_inname (String &name_str_r);
+String distill_inname_str (String name_str, String& ext_r);
 
 Long_option_init theopts[] = {
+  {0, "about", 'a'},
   {1, "output", 'o'},
   {0, "warranty", 'w'},
   {0, "help", 'h'},
@@ -46,7 +54,7 @@ Long_option_init theopts[] = {
   {0, "no-paper", 'M'},
   {0, "dependencies", 'd'},
   {0, "no-timestamps", 'T'},
-  {0, "find-quarts", 'Q'},
+  {0, "find-fourths", 'Q'},
   {0, "ignore-version", 'V'},
   {0,0,0}
 };
@@ -54,25 +62,55 @@ Long_option_init theopts[] = {
 void
 usage ()
 {
-  cout <<
-    _("Usage: lilypond [options] [mudela-files]\n"
-    "Typeset and or produce midi output from mudela-file or stdin\n"
-    "\n"
-    "Options:\n"
+  cout << _f ("Usage: %s [OPTION]... [FILE]...", "lilypond") << '\n';
+  cout << _ ("Typeset music and or play MIDI from FILE or <stdin>");
+  cout << '\n';
+  cout << '\n';
+  cout << _ ("Options:");
+  cout << '\n';
+  cout  << _ (
+    "  -a, --about            about LilyPond\n"
+    );
+  cout  << _ (
     "  -D, --debug            enable debugging output\n"
+    );
+  cout  << _ (
     "  -d, --dependencies     write Makefile dependencies for every input file\n"
-    "  -Q, --find-quarts      show all intervals bigger than a quart\n"
+    );
+  cout  << _ (
     "  -I, --include=DIR      add DIR to search path\n"
+    );
+  cout  << _ (
     "  -i, --init=FILE        use FILE as init file\n"
+    );
+  cout  << _ (
     "  -h, --help             this help\n"
+    );
+  cout  << _ (
     "  -M, --no-paper         produce midi output only\n"
-    "  -o, --output=FILE      set FILE as default output\n"
+    );
+  cout  << _ (
+    "  -o, --output=FILE      set FILE as default output base\n"
+    );
+  cout  << _ (
+    "  -Q, --find-fourths     show all intervals greater than a fourth\n"
+    );
+  cout  << _ (
     "  -t, --test             switch on experimental features\n"
+    );
+  cout  << _ (
     "  -T, --no-timestamps    don't timestamp the output\n"
+    );
+  cout  << _ (
     "  -V, --ignore-version   ignore mudela version\n"
+    );
+  cout  << _ (
     "  -w, --warranty         show warranty and copyright\n"
-    "\n"
-    "GNU LilyPond was compiled with the following settings:\n")
+    );
+  cout << '\n';
+  cout << _ ("GNU LilyPond was compiled with the following settings:");
+  cout << '\n';
+  cout <<
 #ifdef NDEBUG
     "NDEBUG "
 #endif
@@ -82,23 +120,44 @@ usage ()
 #ifdef STRING_UTILS_INLINED
     "STRING_UTILS_INLINED "
 #endif
-        "datadir= " DIR_DATADIR
+        "datadir=" DIR_DATADIR
+       " "
+        "localedir=" DIR_LOCALEDIR
 
     "\n";
 
   ;
 }
 
+void
+about ()
+{
+  cout << '\n';
+  cout << 
+  #include "BLURB.hh"
+  cout << '\n';
+  cout << _ ("GNU LilyPond is Free software, see --warranty");
+  cout << '\n';
+  cout << '\n';
+  cout << _f ("Copyright (c) %s by", "1996, 1997, 1998");
+  cout << '\n';
+  cout << "  " + _ ("Han-Wen Nienhuys <hanwen@cs.uu.nl>") + "\n";
+  cout << "  " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
+  cout << '\n';
+}
+
 void
 notice ()
 {
-  cout <<
-    _("\n"
-    "GNU LilyPond -- The GNU Project music typesetter.\n"
-    "Copyright 1996, 97, 98 by\n"
-    "  Han-Wen Nienhuys <hanwen@stack.nl>\n"
-    "  Jan Nieuwenhuizen <jan@digicash.com>\n"
-    "\n"
+  cout << '\n';
+  cout << _ ("GNU LilyPond -- The GNU Project music typesetter");
+  cout << '\n';
+  cout << _f ("Copyright (c) %s by", "1996, 1997, 1998");
+  cout << '\n';
+  cout << "  " + _ ("Han-Wen Nienhuys <hanwen@cs.uu.nl>") + "\n";
+  cout << "  " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
+  cout << '\n';
+  cout << _ (
     "    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"
     "as published by the Free Software Foundation.\n"
@@ -114,38 +173,43 @@ notice ()
     "USA.\n");
 }
 
-
- File_path path;
-
-
 void
 identify ()
 {
-  cout << get_version_str () << endl;
+  *mlog << get_version_str () << endl;
 }
 
 int
 main (int argc, char **argv)
 {
+
+#if HAVE_GETTEXT
+  setlocale (LC_ALL, "");
+//  setlocale (LC_MESSAGES, "");
+  String name (PACKAGE);
+  name.to_lower ();
+  bindtextdomain (name.ch_C (), DIR_LOCALEDIR);
+  textdomain (name.ch_C ());
+#endif
+
   identify ();
   call_constructors ();
   debug_init ();               // should be first
 
-
-  
-  path.add ("");
+  global_path.add ("");
   // must override (come before) "/usr/local/share/lilypond"!
   char const *env_sz = getenv ("LILYINCLUDE");
   if (env_sz)
-    path.parse_path (env_sz);
+    global_path.parse_path (env_sz);
 
-  path.add (String (DIR_DATADIR) + "/init/");
+  global_path.add (String (DIR_DATADIR) + "/init/");
 
-  path.push (DIR_DATADIR);
+  global_path.push (DIR_DATADIR);
 
   Getopt_long oparser (argc, argv,theopts);
-  String init_str ("lily-init.ly");
+  String init_str;
 
+  String outname_str;
   while (Long_option_init const * opt = oparser ())
     {
       switch (opt->shortname)
@@ -154,7 +218,7 @@ main (int argc, char **argv)
          experimental_features_global_b = true;
          break;
        case 'o':
-         default_outname_base_global = oparser.optional_argument_ch_C_;
+         outname_str = oparser.optional_argument_ch_C_;
          break;
        case 'w':
          notice ();
@@ -164,11 +228,14 @@ main (int argc, char **argv)
          find_quarts_global_b = true;
          break;
        case 'I':
-         path.push (oparser.optional_argument_ch_C_);
+         global_path.push (oparser.optional_argument_ch_C_);
          break;
        case 'i':
          init_str = oparser.optional_argument_ch_C_;
          break;
+       case 'a':
+         about ();
+         exit (0);
        case 'h':
          usage ();
          exit (0);
@@ -194,39 +261,83 @@ main (int argc, char **argv)
        }
     }
 
+  default_outname_base_global = "lelie";
+
+  
+
   int p=0;
   const char *arg ;
   while ((arg= oparser.get_next_arg ()))
     {
       String f (arg);
-      destill_inname (f);
-      do_one_file (init_str,f);
+      String i;
+      f = distill_inname_str (f, i);
+      if (f == "-")
+       default_outname_base_global = "-";
+      else
+       {
+         String a,b,c,d;
+         split_path (f, a, b, c, d);
+         default_outname_base_global = c;
+       }
+      if (outname_str.length_i ())
+       default_outname_base_global = outname_str;
+      if (init_str.length_i ())
+       i = init_str;
+      else
+       i = "init" + i;
+      do_one_file (i, f);
       p++;
     }
   if (!p)
     {
-      do_one_file (init_str, "");
+      String i;
+      if (init_str.length_i ())
+       i = init_str;
+      else
+       i = "init.ly";
+      default_outname_base_global = "-";
+      if (outname_str.length_i ())
+       default_outname_base_global = outname_str;
+      do_one_file (i, default_outname_base_global);
     }
 
   return exit_status_i_;
 }
 
-/// make input file name: add default extension. "" is stdin.
-void
-destill_inname (String &name_str_r)
+/*
+  urg: make input file name: 
+  input: file name
+  output: file name with added default extension. "" is stdin.
+          in reference argument: the extention. ".ly" if none
+ */
+
+String
+distill_inname_str (String name_str, String& ext_r)
 {
-  if (name_str_r.length_i ())
+  String str = name_str;
+  if (str.length_i ())
     {
-      if (name_str_r[ 0 ] != '-')
+      if (str != "-")
        {
-         String a,b,c,d;
-         split_path (name_str_r,a,b,c,d);
+         String a,b,c;
+         split_path (str,a,b,c,ext_r);
 
          // add extension if not present.
-         if (d.empty_b ())
-           d = ".ly";
-         name_str_r = a+b+c+d;
+         if (ext_r.empty_b ())
+           {
+             ext_r = ".fly";
+             if (global_path.find (a+b+c+ext_r).empty_b ())
+               ext_r = ".ly";
+           }
+         str = a+b+c+ext_r;
        }
     }
-  else name_str_r = "";
+  else 
+    {
+      str = "-";
+      ext_r = ".ly";
+    }
+  return str;
 }
+
diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc
new file mode 100644 (file)
index 0000000..2749119
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+  mark-engraver.cc -- implement Mark_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include "mark-engraver.hh"
+#include "text-def.hh"
+#include "script.hh"
+#include "paper-def.hh"
+#include "command-request.hh"
+#include "time-description.hh"
+#include "engraver-group.hh"
+
+IMPLEMENT_IS_TYPE_B1 (Mark_engraver, Engraver);
+ADD_THIS_TRANSLATOR (Mark_engraver);
+
+Mark_engraver::Mark_engraver ()
+{
+  mark_req_l_ = 0;
+  script_p_ = 0;
+}
+
+bool
+Mark_engraver::do_try_request (Request* r_l)
+{
+  Command_req* c_l = r_l->access_Command_req ();
+  if (!c_l || !c_l->access_Mark_req () || mark_req_l_) 
+    return false;
+
+  mark_req_l_ = c_l->access_Mark_req ();
+
+  return true;
+}
+
+void
+Mark_engraver::do_process_requests ()
+{  
+  if (!mark_req_l_ || script_p_)
+    return;
+
+  script_p_ = new Script;
+  script_p_->breakable_b_ = true;
+
+  Text_def *td_p = new Text_def;
+
+  td_p->text_str_ = mark_req_l_->str_;
+  td_p->align_dir_ = CENTER;
+
+  td_p->style_str_ = td_p->text_str_.index_any_i ("0123456789") >= 0 
+    ? "mark" : "Large";
+
+  script_p_->dir_ = UP;
+  script_p_->specs_p_ = td_p->clone ();
+  script_p_->postbreak_only_b_ = true;
+  
+  Scalar padding = get_property ("markScriptPadding");
+  if (padding.length_i() && padding.isnum_b ())
+    {
+      script_p_->padding_f_ = Real(padding);
+    }
+  Scalar break_priority = get_property ("markBreakPriority");
+  if (break_priority.length_i() && break_priority.isnum_b ())
+    {
+      script_p_->break_priority_i_ = int(break_priority);
+    }
+  
+  announce_element (Score_element_info (script_p_, mark_req_l_));
+}
+
+void 
+Mark_engraver::do_pre_move_processing ()
+{
+  if (script_p_) 
+    {
+      typeset_element (script_p_);
+      script_p_ = 0;
+      mark_req_l_ = 0;
+    }
+}
+
index 6eff15ea8e521367e2dc35a768985a5a20609ea8..202205d0899524a71a60fd9cf34cb54d1d4ccd11 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 #include <math.h>
index 543e8c088686eda502f0d460ad4e41330af14b74..525140102e0b249acc857720dc0f226cb9217bab 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "proto.hh"
@@ -25,7 +25,7 @@ IMPLEMENT_IS_TYPE_B1 (Midi_duration, Midi_item);
 IMPLEMENT_IS_TYPE_B1 (Midi_header, Midi_chunk);
 IMPLEMENT_IS_TYPE_B1 (Midi_instrument, Midi_item);
 IMPLEMENT_IS_TYPE_B1 (Midi_key,Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_meter, Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_time_signature, Midi_item);
 IMPLEMENT_IS_TYPE_B1 (Midi_note, Midi_item);
 IMPLEMENT_IS_TYPE_B1 (Midi_note_off, Midi_item);
 IMPLEMENT_IS_TYPE_B1 (Midi_tempo, Midi_item);
@@ -79,7 +79,7 @@ Midi_duration::Midi_duration (Real seconds_f)
 String
 Midi_duration::str () const
 {
-  return String ("<duration: ") + String (seconds_f_) + ">";
+  return String ("<duration: ") + to_str (seconds_f_) + ">";
 }
 
 Midi_event::Midi_event (Moment delta_mom, Midi_item* mitem_p)
@@ -312,8 +312,8 @@ Midi_instrument::str () const
        break;
       }
 
-  String str = String ( (char) (0xc0 + channel_i_));
-  str += String ( (char)program_byte);
+  String str = to_str ((char) (0xc0 + channel_i_));
+  str += to_str ((char)program_byte);
   return str;
 }
 
@@ -337,7 +337,7 @@ Midi_item::i2varint_str (int i)
   String str;
   while (1) 
     {
-      str += (char)buffer_i;
+      str += to_str ((char)buffer_i);
       if (buffer_i & 0x80)
        buffer_i >>= 8;
       else
@@ -354,13 +354,17 @@ Midi_key::Midi_key (Audio_item* audio_item_l)
 String
 Midi_key::str () const
 {
-  Key_change_req* k = audio_item_l_->req_l_->command ()->keychange ();
+  Key_change_req* k = audio_item_l_->req_l_->access_Command_req ()->access_Key_change_req ();
   int sharps_i = k->sharps_i ();
   int flats_i = k->flats_i ();
 
   // midi cannot handle non-conventional keys
   if (flats_i && sharps_i)
-    return "";
+    {
+      String str = _f ("unconventional key: flats: %d, sharps: %d", flats_i, 
+        sharps_i);
+      flats_i = sharps_i = 0;
+    }
   int accidentals_i = sharps_i - flats_i;
 
   String str = "ff5902";
@@ -370,16 +374,16 @@ Midi_key::str () const
   return String_convert::hex2bin_str (str);
 }
 
-Midi_meter::Midi_meter (Audio_item* audio_item_l)
+Midi_time_signature::Midi_time_signature (Audio_item* audio_item_l)
   : Midi_item (audio_item_l)
 {
   clocks_per_1_i_ = 18;
 }
 
 String
-Midi_meter::str () const
+Midi_time_signature::str () const
 {
-  Meter_change_req* m = audio_item_l_->req_l_->command ()->meterchange ();
+  Time_signature_change_req* m = audio_item_l_->req_l_->access_Command_req ()->access_Time_signature_change_req ();
   int num_i = m->beats_i_;
   int den_i = m->one_beat_i_;
 
@@ -400,28 +404,39 @@ Midi_note::Midi_note (Audio_item* audio_item_l)
 Moment
 Midi_note::duration () const
 {
-  return audio_item_l_->req_l_->musical ()->rhythmic ()->duration ();
+  Moment m = audio_item_l_->req_l_->access_Musical_req ()->access_Rhythmic_req ()->duration ();
+  if (m < Moment (1, 1000))
+    {
+      warning (_ ("silly duration"));
+      m = 1;
+     }
+  return m;
 }
 
 int
 Midi_note::pitch_i () const
 {
-  return audio_item_l_->req_l_->musical ()->melodic ()->pitch_.semitone_pitch ();
+  int p = audio_item_l_->req_l_->access_Musical_req ()->access_Melodic_req 
+    ()->pitch_.semitone_pitch () 
+    + ((Audio_note*)audio_item_l_)->transposing_i_;
+  if (p == INT_MAX)
+    {
+      warning (_ ("silly pitch"));
+      p = 0;
+     }
+  return p;
 }
 
 String
 Midi_note::str () const
 {
-  if (pitch_i () == INT_MAX)
-    return String ("");
-
   Byte status_byte = (char) (0x90 + channel_i_);
 
-  String str = String ( (char)status_byte);
-  str += (char) (pitch_i () + c0_pitch_i_c_);
+  String str = to_str ((char)status_byte);
+  str += to_str ((char) (pitch_i () + c0_pitch_i_c_));
 
   // poor man's staff dynamics:
-  str += (char) (dynamic_byte_ - 0x10 * channel_i_);
+  str += to_str ((char) (dynamic_byte_ - 0x10 * channel_i_));
 
   return str;
 }
@@ -437,20 +452,19 @@ Midi_note_off::Midi_note_off (Midi_note* midi_note_l)
 int
 Midi_note_off::pitch_i () const
 {
-  return audio_item_l_->req_l_->musical ()->melodic ()->pitch_.semitone_pitch ();
+  return audio_item_l_->req_l_->access_Musical_req ()->access_Melodic_req 
+    ()->pitch_.semitone_pitch ()
+    + ((Audio_note*)audio_item_l_)->transposing_i_;
 }
 
 String
 Midi_note_off::str () const
 {
-  if (pitch_i () == INT_MAX)
-    return String ("");
-
   Byte status_byte = (char) (0x80 + channel_i_);
 
-  String str = String ( (char)status_byte);
-  str += (char) (pitch_i () + Midi_note::c0_pitch_i_c_);
-  str += (char)aftertouch_byte_;
+  String str = to_str ((char)status_byte);
+  str += to_str ((char) (pitch_i () + Midi_note::c0_pitch_i_c_));
+  str += to_str ((char)aftertouch_byte_);
   return str;
 }
 
index 89aab84a8b618f7650d2e63b76917aa6b8b7a97d..caeeae55c623570772b89113f7e9b68fc6311d58 100644 (file)
@@ -3,7 +3,7 @@
 //
 // source file of the GNU LilyPond music typesetter
 //
-// (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+// (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <fstream.h>
 #include "string.hh"
@@ -72,7 +72,7 @@ Midi_stream::operator << (int i)
 void
 Midi_stream::open ()
 {
-  os_p_ = new ofstream (filename_str_.ch_C ());
+  os_p_ = new ofstream (filename_str_.ch_C (),ios::out|ios::bin);
   if (!*os_p_)
-    error (_ ("can't open `") + filename_str_ + "\'");
+    error (_f ("can't open file: `%s\'", filename_str_));
 }
index 75f7af9321b5c46530dad4ae6cd22ab30fc2c48c..81489c2ad0cfc7fe8045bce9a107c7e18eb21206 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-         Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+         Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "midi-walker.hh"
@@ -48,13 +48,16 @@ Midi_walker::do_start_note (Midi_note* note_p)
   Moment stop_mom = note_p->duration() + ptr ()->audio_column_l_->at_mom ();
   for (int i=0; i < stop_note_queue.size(); i++) 
     {
-       if (stop_note_queue[ i ].val->pitch_i() == note_p->pitch_i ()) 
-         {
-           if (stop_note_queue[ i ].key < stop_mom)
-               stop_note_queue[ i ].ignore_b_ = true;
-           else // skip the stopnote 
-               return; 
+      if (stop_note_queue[ i ].val->pitch_i() == note_p->pitch_i ()) 
+       {
+         if (stop_note_queue[ i ].key < stop_mom)
+           stop_note_queue[ i ].ignore_b_ = true;
+         else {
+           // skip the stopnote
+           delete note_p;
+           return;
          }
+       }
     }
 
   Midi_note_event e;
@@ -73,14 +76,17 @@ Midi_walker::do_stop_notes (Moment max_mom)
 {
   while (stop_note_queue.size() && stop_note_queue.front ().key <= max_mom) 
     {
-       Midi_note_event e = stop_note_queue.get();
-       if (e.ignore_b_) 
-           continue;
+      Midi_note_event e = stop_note_queue.get();
+      if (e.ignore_b_)
+       {
+         delete e.val;
+         continue;
+       }
+      
+      Moment stop_mom = e.key;
+      Midi_note_off* note_p = e.val;
        
-       Moment stop_mom = e.key;
-       Midi_note_off* note_p = e.val;
-       
-       output_event (stop_mom, note_p);
+      output_event (stop_mom, note_p);
     }
 }
 
@@ -102,12 +108,12 @@ Midi_walker::process()
 
   Midi_item* p = ptr()->midi_item_p ();
   if (!p)
-       return;
+    return;
   p->channel_i_ = track_l_->number_i_;
   
   if (p->name() != Midi_note::static_name ())
-       output_event (ptr()->audio_column_l_->at_mom (), p);
+    output_event (ptr()->audio_column_l_->at_mom (), p);
   else
-       do_start_note ((Midi_note*)p);
+    do_start_note ((Midi_note*)p);
 }
 
index c9cb8e5dcfcb720a2bc51ebb3825c6fc1baab9b0..381635b46dee4553c9dd4df732adfa6916454379 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
-    Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998, 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+    Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <math.h>
@@ -118,4 +118,3 @@ quantise_iv (Array<Real> const& positions, Real period, Real x)
 
   return iv;
 }
-
index dbcc1b593488c05831a00d88f0d3002b9c0addae..b699b168b998bcad946374fb313ae582d19ca444 100644 (file)
@@ -3,13 +3,13 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
 #include "mudela-version.hh"
 #include "string-convert.hh"
-#include "varray.hh"
+#include "array.hh"
 
 Mudela_version::Mudela_version (int major, int minor, int patch)
 {
@@ -31,7 +31,7 @@ Mudela_version::Mudela_version (String str)
 String
 Mudela_version::str () const
 {
-  return String (major_i_) + "." + String (minor_i_) + "." + String (patch_i_);
+  return to_str (major_i_) + "." + to_str (minor_i_) + "." + to_str (patch_i_);
 }
 
 Mudela_version::operator int () const
index 56a3b8d93c4b6abf9628902a7f73af467709264d..e8b23b67b39a2ba516ef6f0ecbbc863334af7c25 100644 (file)
@@ -1,8 +1,8 @@
 /*
   multi_measure_rest-engraver.cc -- implement Multi_measure_rest_engraver
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
-       Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+       Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
@@ -26,7 +26,7 @@ Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
 bool
 Multi_measure_rest_engraver::do_try_request (Request* req_l)
 {
-  if (!req_l->musical () || !req_l->musical ()->multi_measure ())
+  if (!req_l->access_Musical_req () || !req_l->access_Musical_req ()->access_Multi_measure_rest_req ())
     return false;
 
   if (multi_measure_req_l_)
@@ -34,7 +34,7 @@ Multi_measure_rest_engraver::do_try_request (Request* req_l)
        || req_start_mom_ != now_moment ())
       return false;
   
-  multi_measure_req_l_ = req_l->musical ()->multi_measure ();
+  multi_measure_req_l_ = req_l->access_Musical_req ()->access_Multi_measure_rest_req ();
   req_start_mom_ = now_moment ();
   
   rest_req_stop_mom_ = req_start_mom_ + multi_measure_req_l_->duration_.length ();
@@ -50,7 +50,7 @@ Multi_measure_rest_engraver::do_process_requests ()
       Time_description const *time = get_staff_info().time_C_;
       mmrest_p_ = new Multi_measure_rest;
       rest_item_creation_mom_ =  time->when_mom ();
-      announce_element (Score_elem_info (mmrest_p_, multi_measure_req_l_));
+      announce_element (Score_element_info (mmrest_p_, multi_measure_req_l_));
       start_measure_i_ = time->bars_i_;
     }
 }
index 4e7e05ff4c57a26c030bd1eff2fc7ffe7722f3d1..279b6b9b362573717a8f4212b23d824e07845b4a 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
@@ -11,7 +11,7 @@
 #include "debug.hh"
 #include "paper-def.hh"
 #include "lookup.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "rest.hh"
 #include "script.hh"
 #include "text-def.hh"
@@ -39,7 +39,7 @@ Multi_measure_rest::brew_molecule_p () const
      * make two,four,eight-measure-rest symbols
    */
 
-  Atom s (paper ()->lookup_l ()->rest (0, 0));
+  Atom s (lookup_l ()->rest (0, 0));
   Molecule* mol_p = new Molecule ( Atom (s));
   Real interline_f = paper ()->interline_f ();
   mol_p->translate_axis (interline_f, Y_AXIS);
@@ -47,11 +47,11 @@ Multi_measure_rest::brew_molecule_p () const
   if (measures_i_ > 1)
     {
       Text_def text;
-      text.text_str_ = measures_i_;
+      text.text_str_ = to_str (measures_i_);
       text.style_str_ = "number";
       Atom s = text.get_atom (paper (), UP);
       s.translate_axis (3.0 * interline_f, Y_AXIS);
-      mol_p->add (s);
+      mol_p->add_atom (s);
     }
 
   return mol_p;
index 6679f61ba6e04e6bb411aaf9c6b39d6acd80848d..12c8601da3a3e23c85363e67d3a3fb17f0ad0780 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "note-performer.hh"
 #include "audio-item.hh"
 #include "debug.hh"
 
-IMPLEMENT_IS_TYPE_B1(Note_performer,Performer);
-ADD_THIS_TRANSLATOR(Note_performer);
+IMPLEMENT_IS_TYPE_B1 (Note_performer,Performer);
+ADD_THIS_TRANSLATOR (Note_performer);
 
-Note_performer::Note_performer()
+Note_performer::Note_performer ()
 {
   note_req_l_ = 0;
 }
 
 void 
-Note_performer::do_print() const
+Note_performer::do_print () const
 {
 #ifndef NPRINT
   if (note_req_l_) 
-    {
-      note_req_l_->print();
-    }
+      note_req_l_->print ();
 #endif
 }
 
 void 
-Note_performer::do_process_requests() 
+Note_performer::do_process_requests () 
 {
   // this is _really_ braindead, but it generates some output
-  if (!note_req_l_ || !note_req_l_->melodic()  || !note_req_l_->rhythmic ())
+  if (!note_req_l_ || !note_req_l_->access_Melodic_req ()  || !note_req_l_->access_Rhythmic_req ())
     return;
 
-  play (new Audio_note (note_req_l_));
+  int transposing_i = 0;
+  //urg
+  Scalar prop = get_property ("transposing");
+  if (!prop.empty_b () && prop.isnum_b ()) 
+    transposing_i = prop;
+
+
+  play (new Audio_note (note_req_l_, transposing_i));
+
   note_req_l_ = 0;
 }
 
@@ -47,9 +53,10 @@ Note_performer::do_try_request (Request* req_l)
   if (note_req_l_)
     return false;
   
-  if (!req_l->musical() || !req_l->musical ()->note ())
+  if (!req_l->access_Musical_req () || !req_l->access_Musical_req ()->access_Note_req ())
     return false;
 
-  note_req_l_ = req_l->musical()->melodic ();
+  note_req_l_ = req_l->access_Musical_req ()->access_Melodic_req ();
+
   return true;
 }
index 81e281d659fa588d809e08c5a65b8f88726ea6f6..4332a23486bdf68f746fcd53b9c7d0cadd18194a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <time.h>
@@ -26,7 +26,7 @@ Performance::Performance ()
 }
 
 void
-Performance::add (Audio_column* p)
+Performance::add_column (Audio_column* p)
 {
   p->performance_l_ = this;
   audio_column_p_list_.bottom().add (p);
@@ -73,9 +73,8 @@ Performance::output_header_track (Midi_stream& midi_stream_r)
   Midi_text generate (Midi_text::TEXT, str);
   midi_track.add (Moment (0), &generate);
 
-  str = _("from musical definition: ");
+  str = _f ("from musical definition: %s", origin_str_);
 
-  str += origin_str_;
   Midi_text from (Midi_text::TEXT, str);
   midi_track.add (Moment (0), &from);
 
@@ -96,7 +95,7 @@ Performance::add_staff (Audio_staff* l)
 }
 
 void
-Performance::add (Audio_element *p)
+Performance::add_element (Audio_element *p)
 {
   audio_elem_p_list_.bottom().add (p);
 }
@@ -127,17 +126,19 @@ Performance::process()
     {
       
       out = default_outname_base_global;
+      if (out == "-")
+        out = "lelie";
       int def = midi_l_->get_next_default_count ();
       if (def)
        {
-         out += "-" + String(def);
+         out += "-" + to_str (def);
        }
 
       out += ".midi";
     }
   
   Midi_stream midi_stream (out);
-  *mlog << _("MIDI output to ") << out<< " ..." << endl;
+  *mlog << _f ("MIDI output to %s...", out) << endl;
   target_str_global_array.push (out);
 
   output (midi_stream);
index a33b967e439b0e4fbd0df56c288345d667bd03b9..510ff51e221c5ee2e4a8998ad190c0ec93417084 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-               Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+               Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "performer-group-performer.hh"
index b62f37ec074d16d8e8eae69ac2eefd9b54ec3907..aa24f97bd1a1f2088b7c09727ccc4d2666394d58 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-               Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+               Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 
index d4fc9005de83ce79ec746844634c72aae3fc7310..391ec74d402a4eb16535e65864ec34ec89596675 100644 (file)
@@ -1,7 +1,7 @@
 /*
   plet-engraver.cc -- implement Plet_engraver
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "proto.hh"
@@ -25,7 +25,7 @@ Plet_engraver::Plet_engraver ()
 }
 
 void
-Plet_engraver::acknowledge_element (Score_elem_info i)
+Plet_engraver::acknowledge_element (Score_element_info i)
 {
   if (!i.elem_l_->is_type_b (Stem::static_name ()))
     return;
@@ -35,20 +35,20 @@ Plet_engraver::acknowledge_element (Score_elem_info i)
     return;
 
   if (!plet_spanner_p_->stem_l_drul_[LEFT])
-    plet_spanner_p_->set_stem (LEFT, (Stem*)i.elem_l_->item ());
+    plet_spanner_p_->set_stem (LEFT, (Stem*)i.elem_l_->access_Item ());
   else
     if (span_reqs_drul_[RIGHT] && !plet_spanner_p_->stem_l_drul_[RIGHT]) 
-      plet_spanner_p_->set_stem (RIGHT, (Stem*)i.elem_l_->item());
+      plet_spanner_p_->set_stem (RIGHT, (Stem*)i.elem_l_->access_Item ());
 }
 
 bool
 Plet_engraver::do_try_request (Request* req_l)
 {
-  Musical_req* mus_l = req_l->musical ();
+  Musical_req* mus_l = req_l->access_Musical_req ();
   if (!mus_l)
     return false;
 
-  Beam_req* b = mus_l->beam ();
+  Beam_req* b = mus_l->access_Beam_req ();
   if (b)
     {
       if (b->spantype)
@@ -59,7 +59,7 @@ Plet_engraver::do_try_request (Request* req_l)
       return false;
     }
     
-  Plet_req* p = mus_l->plet ();
+  Plet_req* p = mus_l->access_Plet_req ();
   if (!p)
     return false;
 
@@ -80,7 +80,7 @@ Plet_engraver::do_removal_processing ()
 {
   if (plet_spanner_p_)
     {
-      span_reqs_drul_[LEFT]->warning (_("unterminated plet"));
+      span_reqs_drul_[LEFT]->warning (_ ("unterminated plet"));
       plet_spanner_p_->unlink ();
       delete plet_spanner_p_;
       plet_spanner_p_ = 0;
@@ -95,9 +95,9 @@ Plet_engraver::do_process_requests ()
     return;
 
   plet_spanner_p_ = new Plet_spanner;
-  plet_spanner_p_->tdef_p_->text_str_ = span_reqs_drul_[LEFT]->plet_i_;
+  plet_spanner_p_->tdef_p_->text_str_ = to_str (span_reqs_drul_[LEFT]->plet_i_);
 
-  announce_element (Score_elem_info (plet_spanner_p_, span_reqs_drul_[LEFT]));
+  announce_element (Score_element_info (plet_spanner_p_, span_reqs_drul_[LEFT]));
 }
 
 void
@@ -117,8 +117,11 @@ Plet_engraver::do_pre_move_processing ()
   if (plet_spanner_p_->visibility_i_)
     typeset_element (plet_spanner_p_);
   else
-    plet_spanner_p_->unlink ();
-
+    {
+      plet_spanner_p_->unlink ();
+      delete plet_spanner_p_;
+    }
+  
   plet_spanner_p_ = 0;
   span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
 }
index feeacc4db77930bff3f0787b7504686a65e050ca..cf257987812f4cea6dcd800ea6b4ec7741099f77 100644 (file)
@@ -3,11 +3,11 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "atom.hh"
-#include "boxes.hh"
+#include "box.hh"
 #include "debug.hh"
 #include "lookup.hh"
 #include "molecule.hh"
@@ -31,7 +31,7 @@ Plet_spanner::Plet_spanner ()
   visibility_i_ = 3;
 
   tdef_p_ = new Text_def;
-  tdef_p_->align_i_ = CENTER;
+  tdef_p_->align_dir_ = CENTER;
   tdef_p_->style_str_ = "italic";
 }
 
@@ -59,12 +59,12 @@ Plet_spanner::brew_molecule_p () const
   
   w += (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]);
   
-  Atom a = paper ()->lookup_l ()->plet (dy_f, w, dir_);
+  Atom a = lookup_l ()->plet (dy_f, w, dir_);
 
   a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
 
   if (visibility_i_ >= 2)
-      mol_p->add (a);
+      mol_p->add_atom (a);
 
   Real interline_f = paper ()->interline_f ();
   Real numy_f = (dir_ > 0 ? 0 : -interline_f) + dir_ * interline_f / 2;
@@ -73,7 +73,7 @@ Plet_spanner::brew_molecule_p () const
     dy_f_drul_[LEFT] + dy_f / 2 + numy_f));
 
   if (visibility_i_ >= 1)
-    mol_p->add (num);
+    mol_p->add_atom (num);
 
   return mol_p;
 }
@@ -82,7 +82,7 @@ void
 Plet_spanner::do_add_processing ()
 {
   if (! (stem_l_drul_[LEFT] && stem_l_drul_[RIGHT]))
-    warning (_ ("Lonely plet.. "));
+    warning (_ ("lonely plet"));
 
   Direction d = LEFT;
   Drul_array<Stem *> new_stem_drul = stem_l_drul_;
@@ -126,12 +126,12 @@ Plet_spanner::do_post_processing ()
 }
 
 void
-Plet_spanner::do_substitute_dependency (Score_elem* o, Score_elem* n)
+Plet_spanner::do_substitute_dependency (Score_element* o, Score_element* n)
 {
-  Stem* new_l = n ? (Stem*)n->item () : 0;
-  if (o->item () == stem_l_drul_[LEFT])
+  Stem* new_l = n ? (Stem*)n->access_Item () : 0;
+  if (o->access_Item () == stem_l_drul_[LEFT])
     stem_l_drul_[LEFT] = new_l;
-  else if (o->item () == stem_l_drul_[RIGHT])
+  else if (o->access_Item () == stem_l_drul_[RIGHT])
     stem_l_drul_[RIGHT] = new_l;
 }
   
index 8d08d22b2ba4d20f7e8210057cccc7eaf69413d7..47819d220317da655ad8730ec339b9122dc47d0b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <math.h>
@@ -11,7 +11,7 @@
 #include "misc.hh"
 #include "lookup.hh"
 #include "molecule.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "debug.hh"
 #include "paper-def.hh"
 #include "string-convert.hh"
index 7d596f90b935d719421c2993e23c1274e0c0ecc0..9e91c14b24993ff96dbac317f71f7dc22068a60e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "score-performer.hh"
@@ -37,13 +37,13 @@ Score_performer::play (Audio_element * p)
 {
   if  (p->is_type_b (Audio_item::static_name())) 
     {
-      audio_column_l_->add ((Audio_item*)p);
+      audio_column_l_->add_audio_item ((Audio_item*)p);
     }
   else if (p->is_type_b (Audio_staff::static_name())) 
     {
       performance_p_->add_staff ((Audio_staff*)p);
     }
-  performance_p_->add (p);
+  performance_p_->add_element (p);
 }
 
 void 
@@ -51,7 +51,7 @@ Score_performer::prepare (Moment m)
 {
   Global_translator::prepare (m);
   audio_column_l_ = new Audio_column (m);
-  performance_p_->add (audio_column_l_);
+  performance_p_->add_column (audio_column_l_);
   post_move_processing ();
 }
 
index 53b495f911c2574a83ac93b7a193059484ed7298..14edd7b3e2146d21354fd5955bbfe51fc554a32c 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
-    Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998, 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+    Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 /*
@@ -24,7 +24,7 @@
 #include "p-col.hh"
 #include "molecule.hh"
 #include "debug.hh"
-#include "boxes.hh"
+#include "box.hh"
 #include "bezier.hh"
 #include "encompass-info.hh"
 #include "main.hh"
@@ -36,7 +36,7 @@ Slur::Slur ()
 }
 
 void
-Slur::add (Note_column*n)
+Slur::add_column (Note_column*n)
 {
   encompass_arr_.push (n);
   add_dependency (n);
@@ -71,13 +71,13 @@ Slur::do_pre_processing ()
 }
 
 void
-Slur::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Slur::do_substitute_dependency (Score_element*o, Score_element*n)
 {
   int i;
-  while ((i = encompass_arr_.find_i ((Note_column*)o->item ())) >=0) 
+  while ((i = encompass_arr_.find_i ((Note_column*)o->access_Item ())) >=0) 
     {
       if (n)
-       encompass_arr_[i] = (Note_column*)n->item ();
+       encompass_arr_[i] = (Note_column*)n->access_Item ();
       else
        encompass_arr_.del (i);
     }
@@ -239,11 +239,13 @@ Slur::get_encompass_offset_arr () const
 
   Array<Offset> notes;
   notes.push (Offset (0,0));
+//  notes.push (left);
 
   for (int i = first; i < last; i++)
     {
       Encompass_info info (encompass_arr_[i], dir_);
       notes.push (info.o_ - left);
+//      notes.push (info.o_ - left);
     }
   notes.push (d);
 
@@ -252,11 +254,13 @@ Slur::get_encompass_offset_arr () const
   int n = last - first + 2;
   Array<Offset> notes (n);
   notes[0] = Offset (0,0);
+//  notes[0] = left;
 
   for (int i = first; i < last; i++)
     {
       Encompass_info info (encompass_arr_[i], dir_);
       notes[i - first + 1] = info.o_ - left;
+//     notes[i - first + 1] = info.o_;
     }
   notes[n - 1] = Offset (d);
 
diff --git a/lily/staff-margin-engraver.cc b/lily/staff-margin-engraver.cc
new file mode 100644 (file)
index 0000000..26150a6
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+  staff-margin-engraver.cc -- implement Staff_margin_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include "staff-margin-engraver.hh"
+#include "script.hh"
+#include "text-def.hh"
+#include "paper-def.hh"
+#include "command-request.hh"
+#include "bar.hh"
+#include "stem.hh"
+#include "time-description.hh"
+
+IMPLEMENT_IS_TYPE_B1 (Staff_margin_engraver, Engraver);
+ADD_THIS_TRANSLATOR (Staff_margin_engraver);
+
+Staff_margin_engraver::Staff_margin_engraver ()
+{
+  script_p_ = 0;
+}
+
+
+
+/*
+    TODO
+    fix alignment/support
+
+    should be able to set whole paragraph (multiple lines, centre) to
+    left (right?) of staff, e.g.:
+                    ______
+                   |_______
+      2 Clarinetti |________
+         (Bb)      |___________
+                  |______________
+*/
+void
+Staff_margin_engraver::acknowledge_element (Score_element_info i)
+{
+  Item * it =  i.elem_l_->access_Item ();
+
+  if (!it
+      || script_p_ 
+      || !it->is_type_b (Bar::static_name())
+      || (i.origin_grav_l_arr_.size() != 1))
+    return;
+
+  String string = get_property ("instrument");
+  String str = get_property ("instr");
+  if (now_moment () > Moment (0))
+    string = str;
+
+  if (!string.length_i ())
+    return;
+
+  script_p_ = new Script;
+  script_p_->axis_ = X_AXIS;
+  
+  Text_def *td_p =new Text_def;
+  td_p->align_dir_ = LEFT;
+  td_p->text_str_ = string;
+  // huh?
+  script_p_->dir_ = RIGHT;
+  script_p_->specs_p_ = td_p;
+  script_p_->breakable_b_ = true;
+
+  
+  Scalar pri = get_property ("marginBreakPriority");
+  if (pri.length_i () && pri.isnum_b ())
+    {
+      script_p_->break_priority_i_ = int (pri);
+    }
+  else
+    script_p_ ->break_priority_i_ = it->break_priority_i_;
+
+  announce_element (Score_element_info (script_p_, 0));
+}
+
+void
+Staff_margin_engraver::do_pre_move_processing ()
+{
+  if (script_p_) 
+    {
+      typeset_element (script_p_);
+      script_p_ =0;
+    }
+}
+
index 4251d294f9babd36f79214fc9c422e190466dd90..535cc6f7d771bbbf7a526fa20a68c80cdd6f65d0 100644 (file)
@@ -3,12 +3,12 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
 #include "proto.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "misc.hh"
 #include "debug.hh"
 #include "atom.hh"
@@ -68,6 +68,7 @@ Stem_info::Stem_info (Stem const *s)
   Real min_stem2_f = s->paper ()->get_var ("beam_minimum_stem2");
   Real ideal_stem1_f = s->paper ()->get_var ("beam_ideal_stem1");
   Real ideal_stem2_f = s->paper ()->get_var ("beam_ideal_stem2");
+  Real shorten_f = s->paper ()->get_var ("forced_stem_shorten");
 
   if (!beam_dir_ || (beam_dir_ == dir_))
     {
@@ -86,6 +87,10 @@ Stem_info::Stem_info (Stem const *s)
          miny_f_ += min_stem2_f;
        }
 
+      // stems in unnatural (forced) direction are shortened
+      if (s->dir_ != s->get_default_dir ())
+       idealy_f_ -= shorten_f;
+
       // lowest beam of (UP) beam must never be lower than second staffline
       miny_f_ = miny_f_ >? (- 2 * internote_f - beam_f
        + (mult_i_ > 0) * beam_f + interbeam_f * (mult_i_ - 1));
diff --git a/lily/time-signature-performer.cc b/lily/time-signature-performer.cc
new file mode 100644 (file)
index 0000000..df41bf5
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+  time_signature-performer.cc -- implement Time_signature_performer
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include "time-signature-performer.hh"
+#include "command-request.hh"
+#include "audio-item.hh"
+
+IMPLEMENT_IS_TYPE_B1(Time_signature_performer,Performer);
+ADD_THIS_TRANSLATOR(Time_signature_performer);
+
+Time_signature_performer::Time_signature_performer()
+{
+  time_signature_req_l_ = 0;
+}
+
+Time_signature_performer::~Time_signature_performer()
+{
+}
+
+void 
+Time_signature_performer::do_print() const
+{
+#ifndef NPRINT
+  if (time_signature_req_l_)
+    time_signature_req_l_->print();
+#endif
+}
+
+void
+Time_signature_performer::do_process_requests()
+{
+  if (time_signature_req_l_)
+    play (new Audio_time_signature (time_signature_req_l_));
+  time_signature_req_l_ = 0;
+}
+
+bool
+Time_signature_performer::do_try_request (Request* req_l)
+{
+  if (time_signature_req_l_)
+    return false;
+
+  if (req_l->access_Command_req ())
+    time_signature_req_l_ = req_l->access_Command_req ()->access_Time_signature_change_req ();
+
+  if (time_signature_req_l_)
+    return true;
+
+  return false;
+}
+
index 304674338530da56d0e99f3e74a1089d5f67980c..2e25e2a86369af371a759c62aa72d93cec258eb2 100644 (file)
@@ -2,22 +2,14 @@ Begin3
 Titel: LilyPond
 Versie: @TOPLEVEL_VERSION@
 Inschrijf datum: @DATE@
-Beschrijving: LilyPond is de muziek typesetter van het GNU Project.  
-               Het programma genereert muziek in zichtbare of 
-               hoorbare vorm uit uit een muzikale definitie file: 
-               voor bladmuziek wordt typeset informatie naar een 
-               TeX file geschreven, voor een (mechanische) uitvoering 
-               wordt een MIDI file geschreven.  Enkele kunstjes zijn 
-               verscheidene notenbalken, maatsoorten, sleutels, 
-               toonsoorten, teksten, krachtige invoer taal, cadensen, 
-               balken, boogjes, triolen.
+Beschrijving: @FLAPTEKST@
 Trefwoorden: muziek typezetten midi notatie
 Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
-       jan@digicash.com (Jan Nieuwenhuizen)
-Onderhouden door: 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
-       395k lilypond-@TOPLEVEL_VERSION@.tar.gz 
+       610k @package@-@TOPLEVEL_VERSION@.tar.gz 
 Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
-       395k lilypond-@TOPLEVEL_VERSION@.tar.gz 
-Copi"eer politie: GPL
+       610k @package@-@TOPLEVEL_VERSION@.tar.gz 
+Copi-eer voorwaarden: GPL
 End
index 995cbd5d6547405c51080e854fb67a03bc749660..b7b4b25bce3316475d18a9e82e3b987b64bce945 100644 (file)
@@ -2,21 +2,14 @@ Begin3
 Title: LilyPond
 Version: @TOPLEVEL_VERSION@
 Entered-date: @DATE@
-Description: LilyPond is the GNU Project music typesetter.  The program
-               generates visual or auditive output from a music 
-               definition file: it can typeset formatted sheet music 
-               to a TeX file and play (mechanical) performances to a 
-               MIDI file.  Features include multiple staffs, meters, 
-               clefs, keys, lyrics, versatile input-language, 
-               cadenzas, beams, slurs, triplets.
-               It includes a nice font of musical symbols.
+Description: @BLURB@
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
-       jan@digicash.com (Jan Nieuwenhuizen)
+       janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       570k lilypond-@TOPLEVEL_VERSION@.tar.gz 
+       730k @package@-@TOPLEVEL_VERSION@.tar.gz 
 Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
-       570k lilypond-@TOPLEVEL_VERSION@.tar.gz 
+       730k @package@-@TOPLEVEL_VERSION@.tar.gz 
 Copying-policy: GPL
 End
index 8d53d521501998d98836d8ff7bc69bd448046afe..c638935f85e6125426f07a5326263bcba749aca0 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (Font-En-Tja) pretty-but-neat music font
 % 
 % (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-%          Jan Nieuwenhuizen <jan@digicash.com>
+%          Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 % these macros help create ascii logging output
 % to automate generation of lily tables and tex backend
index 53c8cc4f241489cc48c1911194f079cb165a2f47..7097d68d3cb87cb34cf092e198ffe3608e8a9753 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 mode_setup;
 
index 402de0420c4b65c2d2db569078dacc77f45dde67..8a48d4bfc78091516d7ed27a80f6e10fa1c18efb 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 % & Han-Wen Nienhuys <hanwen@stack.nl>
 % 
 
index 8231f1dc3e9c276a30e2cc740e79e08dd07b8bb2..9e2a79eee5b0fc9041724a5a4bcc7a66773174cc 100644 (file)
@@ -5,7 +5,7 @@
 % source file of the Feta (Font-En-Tja) music font
 % 
 % (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-%      Jan Nieuwenhuizen <jan@digicash.com>
+%      Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 
 font_identifier:="feta-brackets16";
index 2884ce5da7b55a6e5b6db68b978d38e4443eec66..fb409093d046dfbd280ca252429f2fa29a7424db 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (Font-En-Tja) music font
 % 
 % (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-%      Jan Nieuwenhuizen <jan@digicash.com>
+%      Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 
 font_identifier:="feta-brackets20";
index 2cf10ca78826931f26477ad0b9fa28e8029fbd18..cccaef43fd3536b3d81991e4b6f73bdb00bc6617 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (Font-En-Tja) music font
 % 
 % (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>,
-% Jan Nieuwenhuizen <jan@digicash.com>
+% Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 
index 8b28f2a47bae2be60b2250a2a1b2659176e1d344..7257a45277f6bcfd8e471ed31a92c4b0714d4836 100644 (file)
@@ -5,7 +5,7 @@
 % music font
 % 
 % (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-%      Jan Nieuwenhuizen <jan@digicash.com>
+%      Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 
 
@@ -130,10 +130,10 @@ fet_endchar;
 
 fet_beginchar("portato/single tenuto", "tenuto", "tenuto")
        save thick;
-       thick# = 1.2 stafflinethickness#;
+       thick# = 1.4 stafflinethickness#;
        define_pixels(thick);
 
-       set_char_box(.9 interline#, .9 interline#, thick#/2,thick#/2);
+       set_char_box(.6 interline#, .6 interline#, thick#/2,thick#/2);
        pickup pencircle scaled thick;
        lft x1 = -b;
        rt x2 = w;
index 7d8f1d52ac969ccb0d9895c13cdda32ad36ed4c1..292a5db8998a5eb34a80e82adb073c895d07511c 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (defintively not an abbreviation for Font-En-Tja)
 % music font
 % 
-% (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 
 % this file is included by feta-scripts.mf
index 24637e273dd1b632c11c88286dfe0b4ccf9ff167..01c1e1406b9161d53e606bb5446169049e1a8b32 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 % & Han-Wen Nienhuys <hanwen@stack.nl>
 % 
 % see Documentation/fonts.tex
index 005870af7d6488bff91d489619d2b6dc57f33da0..4ed873fb54ebec6470060f95dcea3c59043f4d06 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mi2mu-global.hh -- declare global (sic) stuff for mi2mu
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MI2MU_GLOBAL_HH
 #define MI2MU_GLOBAL_HH
index cc883e2a1bcf74adbb2e9ac342c3f4435e2504cc..6659fb42cda102d9483b7f8dc18af0edda7b4ea4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index c13ea027276cdeb734619c9776dc1c66770060a9..0dc98237059baac11ef9893a05b61c9faf12eaf4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index 0115adecd59d3988f0947b3ad19adffd2e6f9d79..3679ef600796be31a80d6df42e6549314ca573d9 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index 24d519630891ad133a272fd32b6f9ba418d8fd91..b1ab97c24bb37c4f35b8833943b29f85829d93c5 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-column.hh -- declare Mudela_column
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MUDELA_COLUMN_HH
 #define MUDELA_COLUMN_HH
index 76754ebc80d04c4460cc4c631dad23a066fe3a40..461d43b71a7a7a8fed9500a781a27a51a347ed4f 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-item.hh -- declare mudela_item
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MUDELA_ITEM_HH
 #define MUDELA_ITEM_HH
@@ -45,10 +45,10 @@ public:
     int minor_i_;
 };
 
-class Mudela_meter : public Mudela_item 
+class Mudela_time_signature : public Mudela_item 
 {
 public:
-    Mudela_meter (int num_i, int den_i, int division_4_i, int count_32_i);
+    Mudela_time_signature (int num_i, int den_i, int division_4_i, int count_32_i);
 
     Duration i2_dur (int time_i, int division_1_i);
     int clocks_1_i();
@@ -108,7 +108,7 @@ public:
 
 private:
     int useconds_per_4_i_;
-    Real seconds_per_1_f_;
+    Moment seconds_per_1_mom_;
 };
 
 class Mudela_text : public Mudela_item 
index d1102f08088f80d234097c7cd1f183529f52746e..4d0992b35c2556d722a786cbb1de3a3123727a1a 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-score.hh -- declare Mudela_score
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MUDELA_SCORE_HH
 #define MUDELA_SCORE_HH
@@ -28,7 +28,7 @@ public:
 
     // ugh
     Mudela_key* mudela_key_l_;
-    Mudela_meter* mudela_meter_l_;
+    Mudela_time_signature* mudela_time_signature_l_;
     Mudela_tempo* mudela_tempo_l_;
 
 private:
index 6acb91b56a234fefe6a401de8184d0890b025f9d..4608e0859c66631d736c75719031138b51afbd64 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-staff.hh -- declare mudela_staff
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MUDELA_STAFF_HH
 #define MUDELA_STAFF_HH
@@ -27,7 +27,7 @@ public:
     String instrument_str_;
     String name_str_;
     Mudela_key* mudela_key_l_;
-    Mudela_meter* mudela_meter_l_;
+    Mudela_time_signature* mudela_time_signature_l_;
     Mudela_tempo* mudela_tempo_l_;
     int number_i_;
 
index f353838ea64f173af0c0a03f4ce694de418ad169..6953a961cd3112a7b71b4434581036f86f0384ea 100644 (file)
@@ -1,7 +1,7 @@
 //
 //  mudela-stream.hh -- part of LilyPond
 //
-//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+//  copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 // should i be named Mudela_stream?
 
@@ -10,6 +10,7 @@
 
 #include "mi2mu-proto.hh"
 #include "string.hh"
+#include "scalar.hh"
 
 /// Lily output
 class Mudela_stream {
@@ -17,7 +18,7 @@ public:
     Mudela_stream (String filename_str);
     ~Mudela_stream();
 
-    Mudela_stream& operator << (String str);
+    Mudela_stream& operator << (Scalar s);
     Mudela_stream& operator << (Mudela_item& mudela_item_r);
 
 private:
index ab4aef142d02101c63cc4e9c535532fb17411d13..28b4efcdb99e31bea3fe68f5b8b4ef3e2d315e48 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-voice.hh -- declare Mudela_voice
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MUDELA_VOICE_HH
 #define MUDELA_VOICE_HH
index 3ae4f3990569b81527372f25e71570642a7aa48d..20e1866a43d898db08c51ec2ce9d97d32d736536 100644 (file)
@@ -1,12 +1,14 @@
 //
-// main.cc -- implement silly main() entry point
+// main.cc -- implement silly main () entry point
 // should have Root class.
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <assert.h>
+#include <locale.h>
+#include "config.hh"
 #include "string-convert.hh"
-#include "lgetopt.hh"
+#include "getopt-long.hh"
 #include "file-path.hh"
 #include "duration-convert.hh"
 #include "source.hh"
 #include "midi-score-parser.hh"
 #include "mudela-item.hh"
 #include "mudela-score.hh"
-//#include "version.hh"
+
+#if HAVE_GETTEXT
+#include <libintl.h>
+#endif
+
 
 // ugh
 String filename_str_g;
@@ -34,25 +40,55 @@ Verbose level_ver = NORMAL_ver;
 void
 usage()
 {
-  LOGOUT(NORMAL_ver) <<
-       _("Usage: mi2mu [options] midi-file\n"
-  "Translate midi-file to mudela\n"
-  "\n"
-  "Options:\n"
+  cout << _f ("Usage: %s [OPTION]... [FILE]", "mi2mu");
+  cout << '\n';
+  cout << _ ("Translate midi-file to mudela");
+  cout << '\n';
+  cout << '\n';
+  cout << _ ("Options:");
+  cout << '\n';
+  cout << _ (
   "  -b, --no-quantify      write exact durations, e.g.: a4*385/384\n"
-  "  -d, --debug            print lots of debugging stuff\n"
+  );
+  cout << _ (
+  "  -D, --debug            enable debugging output\n"
+  );
+  cout << _ (
   "  -h, --help             this help\n"
+  );
+  cout << _ (
   "  -I, --include=DIR      add DIR to search path\n"
+  );
+  cout << _ (
   "  -k, --key=ACC[:MINOR]  set key: ACC +sharps/-flats; :1 minor\n"
+  );
+  cout << _ (
   "  -n, --no-silly         assume no plets or double dots, smallest is 32\n"
+  );
+  cout << _ (
   "  -o, --output=FILE      set FILE as default output\n"
+  );
+  cout << _ (
   "  -p, --no-plets         assume no plets\n"
+  );
+  cout << _ (
   "  -q, --quiet            be quiet\n"
+  );
+  cout << _ (
   "  -T, --no-timestamps    don't timestamp the output\n"
+  );
+  cout << _ (
   "  -s, --smallest=N       assume no shorter (reciprocal) durations than N\n"
+  );
+  cout << _ (
   "  -v, --verbose          be verbose\n"
+  );
+  cout << _ (
   "  -w, --warranty         show warranty and copyright\n"
-  "  -x, --no-double-dots   assume no double dotted notes\n")
+  );
+  cout << _ (
+  "  -x, --no-double-dots   assume no double dotted notes\n"
+  );
   ;
 }
 
@@ -65,37 +101,49 @@ identify()
 void
 notice()
 {
-  LOGOUT(NORMAL_ver) <<
-  _("\n"
-  "Mi2mu, translate midi to mudela.\n"
-  "Copyright (C) 1997 by\n"
-  "  Jan Nieuwenhuizen <jan@digicash.com>\n"
-  "  Han-Wen Nienhuys <hanwen@stack.nl>\n"
-  "\n"
-  "    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"
-  "as published by the Free Software Foundation.\n"
-  "\n"
-  "    This program is distributed in the hope that it will be useful,\n"
-  "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-  "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-  "General Public License for more details.\n"
-  "\n"
-  "    You should have received a copy (refer to the file COPYING) of the\n"
-  "GNU General Public License along with this program; if not, write to\n"
-  "the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
-  "USA.\n");
+  LOGOUT(NORMAL_ver) << '\n';
+  LOGOUT(NORMAL_ver) << _ ("Mi2mu, translate midi to mudela");
+  LOGOUT(NORMAL_ver) << '\n';
+  LOGOUT(NORMAL_ver) << _f ("Copyright (c) %s by", "1997, 1998");
+  LOGOUT(NORMAL_ver) << '\n';
+  LOGOUT(NORMAL_ver) << "  " + _ ("Han-Wen Nienhuys <hanwen@cs.uu.nl>") + "\n";
+  LOGOUT(NORMAL_ver) << "  " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
+  LOGOUT(NORMAL_ver) << '\n';
+  LOGOUT(NORMAL_ver) << _ (
+    "    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"
+    "as published by the Free Software Foundation.\n"
+    "\n"
+    "    This program is distributed in the hope that it will be useful,\n"
+    "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+    "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+    "General Public License for more details.\n"
+    "\n"
+    "    You should have received a copy (refer to the file COPYING) of the\n"
+    "GNU General Public License along with this program; if not, write to\n"
+    "the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+    "USA.\n");
 }
 
 int
 main (int argc_i, char* argv_sz_a[])
 {
+
+#if HAVE_GETTEXT
+  setlocale (LC_ALL, "");
+//  setlocale (LC_MESSAGES, "");
+  String name (PACKAGE);
+  name.to_lower ();
+  bindtextdomain (name.ch_C (), DIR_LOCALEDIR);
+  textdomain (name.ch_C ()) ;
+#endif
+
   Mudela_key key (0, 0);
 
   Long_option_init long_option_init_a[] =
     {
        {0, "no-quantify", 'b'},
-       {0, "debug", 'd'},
+       {0, "debug", 'D'},
        {0, "help", 'h'},
        {1, "key", 'k'},
        {0, "no-silly", 'n'},
@@ -118,7 +166,7 @@ main (int argc_i, char* argv_sz_a[])
        case 'b':
            Duration_convert::no_quantify_b_s = true;
            break;
-       case 'd':
+       case 'D':
            level_ver = DEBUG_ver;
            break;
        case 'h':
@@ -135,7 +183,7 @@ main (int argc_i, char* argv_sz_a[])
            int i = str.index_i (':');
            i = (i >=0 ? i : str.length_i ());
            key.accidentals_i_ = String_convert::dec2_i (str.left_str (i));
-           key.minor_i_ = (int)(bool)String_convert::dec2_i (str.cut (i + 1,1));
+           key.minor_i_ = (int)(bool)String_convert::dec2_i (str.cut_str (i + 1,1));
            break;
          }
        case 'n':
index 55946e5470df1828b8d259b5a6a6a0a93f211699..113512d363a9de3904e71d334e1ae48d4f70e980 100644 (file)
@@ -1,20 +1,20 @@
 //
 // version.cc -- implement inexpensive versioning
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <stdio.h>
 #include "config.hh"
+#include "version.hh"
 
+#define VERSION_SZ  MAJOR_VERSION "." MINOR_VERSION "."  PATCH_LEVEL "." MY_PATCH_LEVEL
 
-// static char *s = "mi2mu " MAJOR_VERSION "." MINOR_VERSION "."  PATCH_LEVEL MY_PATCH_LEVEL " #%d";
-//urg
-//static char *s = "mi2mu " TOPLEVEL_VERSION " #%d";
-static char *s = "mi2mu FIXME " ;
+static char *s = "mi2mu " VERSION_SZ;
 
 
 const char * 
 mi2mu_version_sz()
-{  return s;
+{
+  return s;
 }
 
index ad8e020d263c98c42edb39e9806cfdf15f190346..eafd50c004df9446a2b34fe7d90dc22fab63513e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <assert.h>
@@ -61,7 +61,7 @@ Midi_parser::get_str (int n)
 {
   assert (n >= 0);
   if (!n)
-    warning (_("Zero length string encountered"));
+    warning (_ ("zero length string encountered"));
 
   Byte const* p = forward_byte_L (n);
   return String (p, n);
@@ -97,5 +97,5 @@ Midi_parser::message (String str)
 void
 Midi_parser::warning (String str)
 {
-  ::message (message (String (_("warning: ")) + str));
+  ::message (message (String (_ ("warning: ")) + str));
 }
index b0cac0c889aa2ba297faaecf91dc27351551ad13..92eb74833e612886af2936e8276fd89254e463a1 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "moment.hh"
@@ -21,7 +21,7 @@ Midi_score_parser::open (String filename_str, Sources* sources_l)
 {
   info_l_->source_l_ = sources_l->get_file_l (filename_str);
   if (!info_l_->source_l_)
-    ::error (_("can't find: `") + filename_str + "'");
+    ::error (_f ("can't find file: `%s\'", filename_str));
   info_l_->byte_L_ = (Byte const*)info_l_->source_l_->ch_C ();
 //  info_l_->end_byte_L_ = info_l_->byte_L_ + info_l_->source_l_->length_i ();
   info_l_->end_byte_L_ = info_l_->byte_L_ + info_l_->source_l_->length_i () + 1;
@@ -42,12 +42,12 @@ Midi_score_parser::parse_header ()
 {
   String str = get_str (4);
   if ( str != "MThd" )
-    exit (_("MIDI header expected"));
+    exit (_ ("MIDI header expected"));
 
   int length_i = get_i (4);
   // is this signed?
   if (length_i < 6)
-    exit (_("Invalid header length"));
+    exit (_ ("Invalid header length"));
   info_l_->format_i_ = get_i (2);
   if (info_l_->format_i_ != 0 && info_l_->format_i_ != 1)
     exit (_("Invalid midi format"));
@@ -56,7 +56,7 @@ Midi_score_parser::parse_header ()
     exit (_("Invalid number of tracks"));
   info_l_->division_1_i_ = get_i (2) * 4;
   if (info_l_->division_1_i_ < 0)
-    exit (_("Cannot handle non-metrical time"));
+    exit (_f ("can't handle %s", _ ("non-metrical time")));
   // ugh
   Duration::division_1_i_s = info_l_->division_1_i_;
   forward_byte_L (length_i - 6);
@@ -82,7 +82,7 @@ Mudela_score*
 Midi_score_parser::parse_score ()
 {
   int current_bar_i = 0;
-  Mudela_meter m4 (4, 2, 24, 8);
+  Mudela_time_signature m4 (4, 2, 24, 8);
   Moment bar4_mom = m4.bar_mom ();
 
   Mudela_score* score_p = new Mudela_score( 1, 1, 1 );
@@ -92,7 +92,7 @@ Midi_score_parser::parse_score ()
   for (int i = 0; i < info_l_->tracks_i_; i++)
     tracks.push (new Midi_track_parser (info_l_, i));
 
-  LOGOUT (NORMAL_ver) << _("Parsing...\n");
+  LOGOUT (NORMAL_ver) << _ ("Parsing...\n");
   while (tracks.size ())
     {
       int i = find_earliest_i (tracks);
index ffc3380da3b55bf29fd3a9a3857cbee2dbfa82f9..ff7d4453d49f55fd9cab08c386c9b33a53c6973f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <assert.h>
@@ -60,16 +60,15 @@ Midi_track_parser::note_end (Mudela_column* col_l, int channel_i, int pitch_i, i
          i->end_column_l_ = col_l;
          // LOGOUT(DEBUG_ver) << "Note: " << pitch_i;
          // LOGOUT(DEBUG_ver) << "; " << i->mudela_column_l_->at_mom_;
-         // LOGOUT(DEBUG_ver) << ", " << i->end_column_l_->at_mom_ << "\n";
+         // LOGOUT(DEBUG_ver) << ", " << i->end_column_l_->at_mom_ << '\n';
          i.remove_p();
          return;
        }
       else
        i++;
     }
-  warning (String (_("junking note-end event: "))
-          + _(" channel = ") + String_convert::i2dec_str (channel_i, 0, ' ')
-          + _(", pitch = ") + String_convert::i2dec_str (pitch_i, 0, ' '));
+  warning (_f ("junking note-end event: channel = %d, pitch = %d", 
+              channel_i, pitch_i));
 }
 
 void
@@ -98,7 +97,7 @@ Midi_track_parser::parse (Mudela_column* col_l)
   if (!eot())
     return 0;
 
-  // vangnet
+  // catch-all
   note_end_all (col_l);
 
   Mudela_staff* p = mudela_staff_p_;
@@ -123,11 +122,11 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
   if (byte <= 0x5f)
     {
       if (running_byte_ <= 0x5f)
-       exit (_("Invalid running status"));
+       exit (_ ("invalid running status"));
       /*
        'running status' rather means 'missing status'.
        we'll just pretend we read the running status byte.
-       */
+      */
       byte = running_byte_;
     }
   else
@@ -137,7 +136,7 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
   // DATA_ENTRY        [\x60-\x79]
   if ((byte >= 0x60) && (byte <= 0x79))
     {
-           next_byte ();
+      next_byte ();
     }
   // ALL_NOTES_OFF     [\x7a-\x7f]
   else if ((byte >= 0x7a) && (byte <= 0x7f))
@@ -165,7 +164,7 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
       /*
        sss: some broken devices encode NOTE_OFF as
        NOTE_ON with zero volume
-       */
+      */
       if (dyn_i)
        {
          Mudela_note* p = new Mudela_note (col_l, channel_i, pitch_i, dyn_i);
@@ -250,11 +249,11 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
          Mudela_text* p = new Mudela_text (t, str);
          item_p = p;
          if (t == Mudela_text::COPYRIGHT)
-            mudela_staff_p_->copyright_str_ = p->text_str_;
+           mudela_staff_p_->copyright_str_ = p->text_str_;
          else if (t == Mudela_text::TRACK_NAME)
-            mudela_staff_p_->name_str_ = p->text_str_;
+           mudela_staff_p_->name_str_ = p->text_str_;
          else if (t == Mudela_text::INSTRUMENT_NAME)
-            mudela_staff_p_->instrument_str_ = p->text_str_;
+           mudela_staff_p_->instrument_str_ = p->text_str_;
        }
       // END_OF_TRACK  [\x2f][\x00]
       else
@@ -295,11 +294,11 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
              int den_i = (int)next_byte ();
              int clocks_4_i = (int)next_byte ();
              int count_32_i = (int)next_byte ();
-             Mudela_meter* p = new Mudela_meter ( num_i, den_i, clocks_4_i, count_32_i );
+             Mudela_time_signature* p = new Mudela_time_signature ( num_i, den_i, clocks_4_i, count_32_i );
              item_p = p;
-             info_l_->score_l_->mudela_meter_l_ = p;
+             info_l_->score_l_->mudela_time_signature_l_ = p;
              info_l_->bar_mom_ = p->bar_mom ();
-             mudela_staff_p_->mudela_meter_l_ = p;
+             mudela_staff_p_->mudela_time_signature_l_ = p;
            }
          // KEY                [\x59][\x02]
          else if ((byte == 0x59) && (next == 0x02))
@@ -324,12 +323,12 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
            {
              next_byte ();
              next_byte ();
-             warning (_("Unimplemented MIDI meta-event"));
+             warning (_ ("unimplemented MIDI meta-event"));
            }
        }
     }
   else
-    exit (_("Invalid MIDI event"));
+    exit (_ ("invalid MIDI event"));
 
   if (item_p)
     item_p->mudela_column_l_ = col_l;
@@ -344,16 +343,16 @@ Midi_track_parser::parse_header ()
 {
   String str = get_str (4);
   if ( str != "MTrk" )
-    exit (_("MIDI track expected"));
+    exit (_ ("MIDI track expected"));
 
   int length_i = get_i (4);
   // is this signed?
   if (length_i < 0)
-    exit (_("Invalid track length"));
+    exit (_ ("invalid track length"));
   assert (!track_info_p_);
   track_info_p_ = new Midi_parser_info (*info_l_);
   track_info_p_->end_byte_L_ = track_info_p_->byte_L_ + length_i;
   forward_byte_L (length_i);
-//  forward_byte_L (length_i-1);
+  //  forward_byte_L (length_i-1);
   info_l_ = track_info_p_;
 }
index a197fb8f15d9234c97af9a71e70cd968e57c3b69..5a00e8831054ce0d4f4c66cc54eaa730b6d875dc 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-column.cc -- implement Mudela_column
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include "mudela-column.hh"
 
index 3f8573c96fa07068cc22335a5aa986860842c9c0..92329cd74d6baa13339772fe7cfb53a76184dbfb 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-score.cc -- implement Mudela_score
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <assert.h>
 #include "moment.hh"
@@ -19,7 +19,7 @@
 #include "cursor.tcc"
 
 //static Mudela_key key_c (0, 0);
-static Mudela_meter meter_4 (4, 2, 24, 8);
+static Mudela_time_signature time_sig_4 (4, 2, 24, 8);
 // useconds per 4: 250000 === 60 4 per minute
 static Mudela_tempo tempo_60 (1000000);
 
@@ -31,7 +31,7 @@ Mudela_score::Mudela_score (int format_i, int tracks_i, int tempo_i)
   column_l_array_.push (new Mudela_column (this, Moment (0)));
   //  mudela_key_l_ = &key_c;
   mudela_key_l_ = 0;
-  mudela_meter_l_ = &meter_4;
+  mudela_time_signature_l_ = &time_sig_4;
   mudela_tempo_l_ = &tempo_60;
 }
 
@@ -91,21 +91,29 @@ Mudela_score::find_column_l (Moment mom)
 Mudela_column*
 Mudela_score::get_column_l (Moment mom)
 {
-  if ( column_l_array_ [column_l_array_.size() - 1]->at_mom () > mom )
+  int i;
+  Mudela_column *c=0;
+  for (i=column_l_array_.size() - 1; !c && i >=0; i--)
     {
-      error (_("ugh"));
-      exit (1);
+      if (column_l_array_ [i]->at_mom () == mom )
+       c = column_l_array_[i];
+      else if (column_l_array_[i]->at_mom () < mom)
+       break;
+    }
+  if (!c)
+    {
+      c = new Mudela_column (this, mom);
+      column_l_array_.insert (c, i+1);
     }
-  if ( column_l_array_[column_l_array_.size() - 1]->at_mom () < mom )
-    column_l_array_.push (new Mudela_column (this, mom));
 
-  return column_l_array_ [column_l_array_.size() - 1];
+  assert (c->at_mom () == mom);
+  return c;
 }
 
 void
 Mudela_score::output (String filename_str)
 {
-  LOGOUT(NORMAL_ver) << _("Lily output to ") << filename_str << " ..." << endl;
+  LOGOUT(NORMAL_ver) << _f ("Lily output to %s...", filename_str) << endl;
 
   // ugh, ugly midi type 1 fix
   if  ( (mudela_staff_p_list_.size() == 1) && !mudela_staff_p_list_.top()->number_i_)
@@ -115,23 +123,22 @@ Mudela_score::output (String filename_str)
   Mudela_stream mudela_stream (filename_str);
   for  (PCursor<Mudela_staff*> i (mudela_staff_p_list_); i.ok(); i++)
     {
-      LOGOUT(NORMAL_ver) << _("track ") << track_i++ << ": " << flush;
+      LOGOUT(NORMAL_ver) << _ ("track ") << track_i++ << ": " << flush;
       i->output (mudela_stream);
-      mudela_stream << "\n";
+      mudela_stream << '\n';
       LOGOUT(NORMAL_ver) << endl;
     }
 
   mudela_stream << "\\score{\n";
   if  (mudela_staff_p_list_.size() > 1)
-    mudela_stream << "\\multi 3 < \\type Staff\n";
+    mudela_stream << "\n";
   for  (PCursor<Mudela_staff*> i (mudela_staff_p_list_); i.ok(); i++)
     {
       if  ( (mudela_staff_p_list_.size() != 1)
            &&  (i == mudela_staff_p_list_.top()))
        continue;
-      mudela_stream << "< \\melodic{ ";
-      mudela_stream << "\\$" << i->id_str();
-      mudela_stream << " } >\n";
+      mudela_stream << "\\type Staff = \"" << i->id_str() << "\" ";
+      mudela_stream << "\\$" << i->id_str() << "\n";
     }
   if  (mudela_staff_p_list_.size() > 1)
     mudela_stream << ">\n";
@@ -149,22 +156,22 @@ Mudela_score::output (String filename_str)
 void
 Mudela_score::process()
 {
-  LOGOUT(NORMAL_ver) << _("\nProcessing...") << endl;
+  LOGOUT(NORMAL_ver) << '\n' << _ ("Processing...") << endl;
 
   LOGOUT(DEBUG_ver) << "columns\n";
   //  for  (PCursor<Mudela_column*> i (mudela_column_p_list_); i.ok(); i++)
-  //   LOGOUT(DEBUG_ver) << "At: " << i->at_mom() << "\n";
+  //   LOGOUT(DEBUG_ver) << "At: " << i->at_mom() << '\n';
 
   settle_columns();
   filter_tempo();
   quantify_columns();
   quantify_durations();
 
-  LOGOUT(NORMAL_ver) << _("\nCreating voices...") << endl;
+  LOGOUT(NORMAL_ver) << '\n' << _ ("Creating voices...") << endl;
   int track_i = 0;
   for  (PCursor<Mudela_staff*> i (mudela_staff_p_list_); i.ok(); i++)
     {
-      LOGOUT(NORMAL_ver) << _("track ") << track_i++ << ": " << flush;
+      LOGOUT(NORMAL_ver) << _ ("track ") << track_i++ << ": " << flush;
       i->process();
       LOGOUT(NORMAL_ver) << endl;
     }
@@ -173,7 +180,7 @@ Mudela_score::process()
 void
 Mudela_score::filter_tempo()
 {
-  LOGOUT(NORMAL_ver) << _("\nNOT Filtering tempo...") << endl;
+  LOGOUT(NORMAL_ver) << '\n' << _ ("NOT Filtering tempo...") << endl;
 }
 
 void
@@ -182,14 +189,14 @@ Mudela_score::quantify_columns()
   // ugh
   if  (Duration_convert::no_quantify_b_s)
     {
-      LOGOUT(NORMAL_ver) << _("\nNOT Quantifying columns...") << endl;
+      LOGOUT(NORMAL_ver) << '\n' << _("NOT Quantifying columns...") << endl;
       return;
     }
 
-  LOGOUT(NORMAL_ver) << _("\nQuantifying columns...") << endl;
+  LOGOUT(NORMAL_ver) << '\n' << _("Quantifying columns...") << endl;
 
   int current_bar_i = 0;
-  Moment bar_mom = mudela_meter_l_->bar_mom();
+  Moment bar_mom = mudela_time_signature_l_->bar_mom();
 
   int n = 5 >? Duration_convert::no_smaller_than_i_s;
   n = Duration_convert::type2_i (n);
@@ -203,7 +210,7 @@ Mudela_score::quantify_columns()
       int bar_i = (int) (column_l_array_ [i]->at_mom () / bar_mom) + 1;
       if (bar_i > current_bar_i)
        {
-         LOGOUT (NORMAL_ver) << '[' << bar_i << ']' << flush;
+         LOGOUT (NORMAL_ver) << "[" << bar_i << "]" << flush;
          current_bar_i = bar_i;
        }
     }
@@ -213,15 +220,15 @@ Mudela_score::quantify_columns()
 void
 Mudela_score::quantify_durations()
 {
-  //    LOGOUT(NORMAL_ver) << "\nQuantifying durations..." << endl;
+  //    LOGOUT(NORMAL_ver) << '\n' << "Quantifying durations..." << endl;
 }
 
 void
 Mudela_score::settle_columns()
 {
-  //    LOGOUT(NORMAL_ver) << "\nNOT Settling columns..." << endl;
+  //    LOGOUT(NORMAL_ver) << '\n' << "NOT Settling columns..." << endl;
   //    return;
-  LOGOUT(NORMAL_ver) << _("\nSettling columns...") << endl;
+  LOGOUT(NORMAL_ver) << '\n' << _("Settling columns...") << endl;
 
 #if 0
   assert (!column_l_array_.size());
index 67fcaf4ab2201568a84ad05a9b3b1c0edfbb455d..d6995e532affe5eb040e639102e95a0740d5216d 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-staff.cc -- implement Mudela_staff
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <assert.h>
 #include <ctype.h>
@@ -26,7 +26,7 @@ Mudela_staff::Mudela_staff (int number_i, String copyright_str, String track_nam
   instrument_str_ = instrument_str;
   name_str_ = track_name_str;
   mudela_key_l_ = 0;
-  mudela_meter_l_ = 0;
+  mudela_time_signature_l_ = 0;
   mudela_tempo_l_ = 0;
 }
 
@@ -68,7 +68,7 @@ Mudela_staff::eat_voice (Link_list<Mudela_item*>& items)
        }
       else if  (i.ok())
        i++;
-      LOGOUT(DEBUG_ver) << "mom: " << mom.str () << "\n";
+      LOGOUT(DEBUG_ver) << "mom: " << mom.str () << '\n';
     }
 }
 
@@ -88,7 +88,7 @@ Mudela_staff::name_str()
 {
   if  (name_str_.length_i())
     return name_str_;
-  return String ("track") + String (number_i_);
+  return String ("track") + to_str (number_i_);
 }
 
 void
@@ -96,12 +96,12 @@ Mudela_staff::output (Mudela_stream& mudela_stream_r)
 {
   mudela_stream_r << "$" << id_str() << " = \\melodic";
   mudela_stream_r <<  (mudela_voice_p_list_.size() > 1 ? "<" : "{");
-  mudela_stream_r << "\n";
-  mudela_stream_r << _("% midi copyright:") << copyright_str_ << "\n";
-  mudela_stream_r << _("% instrument:") << instrument_str_ << "\n";
+  mudela_stream_r << '\n';
+  mudela_stream_r << _ ("% midi copyright:") << copyright_str_ << '\n';
+  mudela_stream_r << _ ("% instrument:") << instrument_str_ << '\n';
 
   // don't use last duration mode
-  mudela_stream_r << "\\duration 4;\n";
+  //  mudela_stream_r << "\\duration 4;\n";
   if  (mudela_voice_p_list_.size() == 1)
     mudela_voice_p_list_.top()->output (mudela_stream_r);
   else
@@ -113,13 +113,13 @@ Mudela_staff::output (Mudela_stream& mudela_stream_r)
       }
 
   mudela_stream_r <<  (mudela_voice_p_list_.size() > 1 ? "\n>" : "\n}");
-  mudela_stream_r << " % " << name_str() << "\n";
+  mudela_stream_r << " % " << name_str() << '\n';
 }
 
 void
 Mudela_staff::output_mudela_begin_bar (Mudela_stream& mudela_stream_r, Moment now_mom, int bar_i)
 {
-  Moment bar_mom = mudela_meter_l_->bar_mom();
+  Moment bar_mom = mudela_time_signature_l_->bar_mom();
   Moment into_bar_mom = now_mom - Moment (bar_i - 1) * bar_mom;
   if  (bar_i > 1)
     {
@@ -129,7 +129,7 @@ Mudela_staff::output_mudela_begin_bar (Mudela_stream& mudela_stream_r, Moment no
   mudela_stream_r << "% " << String_convert::i2dec_str (bar_i, 0, ' ');
   if  (into_bar_mom)
     mudela_stream_r << ":" << Duration_convert::dur2_str (Duration_convert::mom2_dur (into_bar_mom));
-  mudela_stream_r << "\n";
+  mudela_stream_r << '\n';
 }
 
 
@@ -137,7 +137,7 @@ Mudela_staff::output_mudela_begin_bar (Mudela_stream& mudela_stream_r, Moment no
 void
 Mudela_staff::output_mudela_rest (Mudela_stream& mudela_stream_r, Moment begin_mom, Moment end_mom)
 {
-  Moment bar_mom = mudela_meter_l_->bar_mom();
+  Moment bar_mom = mudela_time_signature_l_->bar_mom();
   Moment now_mom = begin_mom;
 
   int begin_bar_i = (int) (now_mom / bar_mom) + 1;
@@ -229,7 +229,7 @@ Mudela_staff::process()
 
   assert (mudela_score_l_g);
   mudela_key_l_ = mudela_score_l_g->mudela_key_l_;
-  mudela_meter_l_ = mudela_score_l_g->mudela_meter_l_;
+  mudela_time_signature_l_ = mudela_score_l_g->mudela_time_signature_l_;
   mudela_tempo_l_ = mudela_score_l_g->mudela_tempo_l_;
 
   Link_list<Mudela_item*> items;
index 6f91c8ff256cc742a07ba1b142a0c2ae6fb32166..6f92d03f2257fd3a4e8258dba6db7d2c79f06d63 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-voice.cc -- implement Mudela_voice
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include "string-convert.hh"
 #include "mi2mu-global.hh"
@@ -26,14 +26,14 @@ Moment
 Mudela_voice::begin_mom()
 {
   return mudela_item_l_list_.size() ? 
-       mudela_item_l_list_.top()->at_mom() : Moment (0);
+    mudela_item_l_list_.top()->at_mom() : Moment (0);
 }
 
 Moment 
 Mudela_voice::end_mom()
 {
   return mudela_item_l_list_.size() ? 
-       mudela_item_l_list_.bottom()->at_mom() : Moment (0);
+    mudela_item_l_list_.bottom()->at_mom() : Moment (0);
 }
 
 static int const FAIRLY_LONG_VOICE_i = 6;
@@ -42,36 +42,36 @@ void
 Mudela_voice::output (Mudela_stream& mudela_stream_r)
 {
   if  (!mudela_item_l_list_.size())
-       return;
+    return;
   
   if  (mudela_item_l_list_.size() > FAIRLY_LONG_VOICE_i)
-       mudela_stream_r << "\n";
+    mudela_stream_r << '\n';
 
   int current_bar_i = 0;
-  Moment bar_mom = mudela_staff_l_->mudela_meter_l_->bar_mom();
+  Moment bar_mom = mudela_staff_l_->mudela_time_signature_l_->bar_mom();
 
   for  (PCursor<Mudela_item*> i (mudela_item_l_list_); i.ok(); i++) 
     {
-       Moment at_mom = i->mudela_column_l_->at_mom();
-       int bar_i = (int) (at_mom / bar_mom) + 1;
-       if  (bar_i > current_bar_i) 
-         {
-           if  (current_bar_i) 
-             {
-               if  (at_mom == Moment (bar_i - 1) * bar_mom)
-                   mudela_stream_r << "|";
-               mudela_stream_r << "\n% ";
-               mudela_stream_r << String_convert::i2dec_str (bar_i, 0, ' ');
-               mudela_stream_r << "\n";
-             }
-           LOGOUT(NORMAL_ver) << '[' << bar_i << ']' << flush; 
-           current_bar_i = bar_i;
-         }
+      Moment at_mom = i->mudela_column_l_->at_mom();
+      int bar_i = (int) (at_mom / bar_mom) + 1;
+      if  (bar_i > current_bar_i) 
+       {
+         if  (current_bar_i) 
+           {
+             if  (at_mom == Moment (bar_i - 1) * bar_mom)
+               mudela_stream_r << "|";
+             mudela_stream_r << "\n% ";
+             mudela_stream_r << String_convert::i2dec_str (bar_i, 0, ' ');
+             mudela_stream_r << '\n';
+           }
+         LOGOUT(NORMAL_ver) << "[" << bar_i << "]" << flush; 
+         current_bar_i = bar_i;
+       }
 
-       mudela_stream_r << **i;
+      mudela_stream_r << **i;
     }
 
   if  (mudela_item_l_list_.size() > FAIRLY_LONG_VOICE_i)
-       mudela_stream_r << "\n";
+    mudela_stream_r << '\n';
 }
 
index 06d53f9aceca125b478880e7d21d1135bf4b8f1d..7d99a4b9205ab294a96327e02c9044a195de6429 100644 (file)
@@ -4,7 +4,7 @@
 // liblily.a(template.o): In function `GLOBAL_$I$template.cc':
 // template.cc:28: multiple definition of `global constructors keyed to template.cc'
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include "proto.hh"
 #include "list.hh"
diff --git a/po/TODO b/po/TODO
new file mode 100644 (file)
index 0000000..b854f34
--- /dev/null
+++ b/po/TODO
@@ -0,0 +1,63 @@
+ISSUES -- please read this before doing too much real translating...
+
+       * encapsulate locale strings in _( ) or _f ( )
+       * fix/standardise messages
+         - it's silly to translate wrong strings
+         - no leading/trailing punctuation in strings: e.g.
+           _ ("foo found") iso _ ("foo found.), _ ("foo found.\n), ...
+         - no leading/trailing whitespace in strings
+
+         - Think about translation issues.  
+           In a lot of cases,it's better to translate a whole message
+           the english grammar mustn't be imposed on the transator.
+           So, iso
+             _ ("stem at") + moment.str () + _("doen't fit in beam")
+           have
+             _f ("stem at %s doen't fit in beam", moment.str ())
+           ?
+
+           Otoh:
+             en: can't open: `foo.ly'
+             nl: kan `foo.ly' niet openen     (1)
+                 kan niet openen: `foo.ly'*   (2)
+                 niet te openen: `foo.ly'*    (3)
+
+           The first nl message, although gramatically and stylish correct,
+           is not friendly for parsing by humans (even if they speak dutch).
+           I guess we'd prefer something like (2) or (3)...
+
+         - don't modularise too much; a lot of words cannot be translated
+           without context.
+           it's probably safe to treat most occurences of words like
+             stem, beam, crescendo as separately translatable words.
+
+       * don't! translate/gettextify:
+         - debug strings
+         - output (ps) strings
+
+TODO
+       * native speakers (naïeve sprekerds) that make/take care of {it,..}.po
+       * concurrently update Documentation/tex/computer.data
+       * convince xgettext my name is <janneke@gnu.org> iso 
+         <fred@botervlieg.flower> :-)
+       * create user-friendly input format for multiple languages?
+
+SOLVED/HOWTO
+       * because i never install LilyPond, i made these links:
+
+           ln -s $LILYPOND_SOURCEDIR/po/out/nl.mo 
+               /usr/share/locale/nl/LC_MESSAGES/lilypond.mo
+           ln -s $LILYPOND_SOURCEDIR/po/out/it.mo 
+               /usr/share/locale/it/LC_MESSAGES/lilypond.mo
+
+         then simply type, e.g.
+
+           LANG=nl lilypond -h
+
+       * (howto?) avoid keep translating for moving target
+         - make po-update
+         - mv po/out/*.po po (manually!)
+         - edit po/*.po
+         - make -C po
+         - make show-po-update LANGUAGE=xx
+
diff --git a/po/it.po b/po/it.po
new file mode 100644 (file)
index 0000000..d8ac69d
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,891 @@
+msgid ""
+msgstr ""
+"Date: 1998-05-30 00:17:12+0200\n"
+"From:  <tdemunni@sybase.com>\n"
+"Content-Type: text/plain; charset=\n"
+"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po/out --add-comments --keyword=_ --keyword=_f\n"
+"Files: bow.cc int.cc\n"
+
+#: data-file.cc:52
+msgid "EOF in a string"
+msgstr "EOF in una corda"
+
+#: data-file.cc:121 input.cc:86 midi-parser.cc:100 warn.cc:21
+msgid "warning: "
+msgstr "attentione: "
+
+#: dstream.cc:159
+msgid "Not enough fields in Dstream init."
+msgstr ""
+
+#: flower-debug.cc:17
+msgid "Debug output disabled.  Compiled with NPRINT."
+msgstr ""
+
+#: lgetopt.cc:103
+msgid "option `%s' requires an argument"
+msgstr "opzione `%s' chiede un argumento"
+
+#: lgetopt.cc:107
+msgid "option `%s' doesn't allow an argument"
+msgstr "opzione `%s' non permette un argumento"
+
+#: lgetopt.cc:111
+msgid "unrecognized option: `%s'"
+msgstr "opzione non riconosciuto `%s'"
+
+#: lgetopt.cc:117
+msgid "invalid argument `%s' to option `%s'"
+msgstr "argumento non valide `%s' all'opzione `%s'"
+
+#: text-stream.cc:8
+msgid "<stdin>"
+msgstr ""
+
+#: mapped-file-storage.cc:87 midi-stream.cc:77 mudela-stream.cc:102 parser.yy:1378 scores.cc:37 simple-file-storage.cc:44 tex-stream.cc:28 text-stream.cc:21
+msgid "can't open file: `%s'"
+msgstr "non posso aprire il documento: `%s'"
+
+#: input.cc:91 warn.cc:7 warn.cc:15
+msgid "error: "
+msgstr "errore: "
+
+#: input.cc:97
+msgid "Non fatal error: "
+msgstr "Errore non fatale: "
+
+#: input.cc:105 source-file.cc:62 source-file.cc:155
+msgid "position unknown"
+msgstr "posizione sconosciuto"
+
+#: mapped-file-storage.cc:65
+msgid "map_fd: "
+msgstr ""
+
+#: mapped-file-storage.cc:74
+msgid "can't map file"
+msgstr "non posso mappare il documento"
+
+#: mapped-file-storage.cc:109
+msgid "vm_deallocate: "
+msgstr ""
+
+#: simple-file-storage.cc:56
+msgid "Huh? got %d, expected %d characters"
+msgstr "Come? ce ne ho %d, ho aspettato %d carattere"
+
+#: abbreviation-beam-engraver.cc:76 beam-grav.cc:90
+msgid "unterminated beam"
+msgstr ""
+
+#: afm.cc:114
+msgid "can't find character called `%s'"
+msgstr ""
+
+#: atom.cc:31
+msgid "ridiculous dimension: %s, %s"
+msgstr "dimensione da ridere: %s, %s"
+
+#: beam-grav.cc:106
+msgid "Stem must have Rhythmic structure."
+msgstr ""
+
+#: beam-grav.cc:113
+msgid "stem doesn't fit in beam"
+msgstr ""
+
+#: beam-grav.cc:124
+msgid "please fix me"
+msgstr "aggiustami per favore"
+
+#: beam-grav.cc:125
+msgid "stem at %s doesn't fit in beam"
+msgstr ""
+
+#: beam.cc:117
+msgid "beam with less than two stems"
+msgstr ""
+
+#. when all too short, normal stems win..
+#: beam.cc:562
+msgid "weird beam shift, check your knees"
+msgstr ""
+
+#: break.cc:25
+msgid "0 lines"
+msgstr "0 linee"
+
+#: break.cc:27
+msgid "1 line (of %.0f columns)"
+msgstr "1 linea (da %.0f colonne)"
+
+#: break.cc:29
+msgid "%d lines (with an average of %.1f columns)"
+msgstr "%d linee (con una media di %.f colonne)"
+
+#: break.cc:159
+msgid "score does not have any columns"
+msgstr ""
+
+#: break.cc:183
+msgid "approximated: %s"
+msgstr "approssimato: %s:"
+
+#: break.cc:185
+msgid "calculated exactly: %s"
+msgstr "calcolato esattamente: %s"
+
+#: break.cc:186 score.cc:111
+msgid "time: %.2f seconds"
+msgstr "durata: %.2f secondi"
+
+#: change-iterator.cc:25
+msgid "can't change `%s' to `%s'"
+msgstr ""
+
+#: clef-grav.cc:137
+msgid "unknown clef type "
+msgstr ""
+
+#: collision.cc:62
+msgid "No stem direction set. Ignoring column in clash."
+msgstr ""
+
+#: collision.cc:75
+msgid "Too many clashing notecolumns. Ignoring them."
+msgstr ""
+
+#: command-request.cc:209
+msgid "don't know how handle empty keys"
+msgstr ""
+
+#: crescendo.cc:47
+msgid "crescendo"
+msgstr ""
+
+#: crescendo.cc:47 lookup.cc:338 lookup.cc:371 lookup.cc:389
+msgid "too small"
+msgstr ""
+
+#: debug.cc:56
+msgid "Floating point exception"
+msgstr ""
+
+#: debug.cc:140
+msgid "can't set mem-checking"
+msgstr ""
+
+#: dimen.cc:31
+msgid "unknown length unit: `%s'"
+msgstr ""
+
+#: dimen.cc:40
+msgid "NaN"
+msgstr ""
+
+#: dynamic-grav.cc:85 slur-grav.cc:72
+msgid "can't find both ends of %s"
+msgstr ""
+
+#: dynamic-grav.cc:86
+msgid "cresc"
+msgstr ""
+
+#: dynamic-grav.cc:162
+msgid "unended crescendo"
+msgstr ""
+
+#: identifier.cc:49
+msgid "Wrong identifier type: "
+msgstr ""
+
+#: identifier.cc:50
+msgid "%s expected"
+msgstr "%s aspettato"
+
+#: includable-lexer.cc:38 midi-score-parser.cc:24 scores.cc:108 scores.cc:113
+msgid "can't find file: `%s'"
+msgstr ""
+
+#: ineq-constrained-qp.cc:167
+msgid "Ineq_constrained_qp::solve (): Constraint off by %f"
+msgstr ""
+
+#: ineq-constrained-qp.cc:222
+msgid "didn't converge!"
+msgstr ""
+
+#: ineq-constrained-qp.cc:224
+msgid "Too much degeneracy. "
+msgstr ""
+
+#: key-grav.cc:109
+msgid "No key name: assuming `C'"
+msgstr ""
+
+#: local-key-grav.cc:34
+msgid "out of tune"
+msgstr ""
+
+#: local-key-grav.cc:34 meter-grav.cc:28
+msgid "can't find"
+msgstr ""
+
+#: lookup.cc:337 lookup.cc:343
+msgid "piano brace"
+msgstr ""
+
+#: lookup.cc:344 lookup.cc:395
+msgid "too big"
+msgstr ""
+
+#: lookup.cc:370 lookup.cc:388 lookup.cc:394
+msgid "bracket"
+msgstr ""
+
+#: main.cc:65
+msgid "Usage: %s [OPTION]... [FILE]..."
+msgstr "Uso: %s [OPZIONE]... [DOCUMENTO]..."
+
+#: main.cc:66
+msgid "Typeset music and or play MIDI from FILE or <stdin>"
+msgstr "Stampa partitura oppure suona MIDI dal FILE o <stdin>"
+
+#: main.cc:48 main.cc:69
+msgid "Options:"
+msgstr "Opzioni: "
+
+#: main.cc:72
+msgid "  -a, --about            about LilyPond\n"
+msgstr "  -a, --about            cos'è LilyPond\n"
+
+#: main.cc:54 main.cc:75
+msgid "  -D, --debug            enable debugging output\n"
+msgstr ""
+
+#: main.cc:78
+msgid "  -d, --dependencies     write Makefile dependencies for every input file\n"
+msgstr ""
+
+#: main.cc:60 main.cc:81
+msgid "  -I, --include=DIR      add DIR to search path\n"
+msgstr "  -I, --include=DIR      add DIR to search path\n"
+
+#: main.cc:84
+msgid "  -i, --init=FILE        use FILE as init file\n"
+msgstr "  -i, --init=DOC         usa DOC come documento iniziale\n"
+
+#: main.cc:57 main.cc:87
+msgid "  -h, --help             this help\n"
+msgstr "  -h, --help             questo sostegno\n"
+
+#: main.cc:90
+msgid "  -M, --no-paper         produce midi output only\n"
+msgstr "  -M, --no-paper         produce solo output midi\n"
+
+#: main.cc:93
+msgid "  -o, --output=FILE      set FILE as default output base\n"
+msgstr ""
+
+#: main.cc:96
+msgid "  -Q, --find-fourths     show all intervals greater than a fourth\n"
+msgstr ""
+
+#: main.cc:99
+msgid "  -t, --test             switch on experimental features\n"
+msgstr "  -t, --test             usa truchi sperimentali\n"
+
+#: main.cc:78 main.cc:102
+msgid "  -T, --no-timestamps    don't timestamp the output\n"
+msgstr ""
+
+#: main.cc:105
+msgid "  -V, --ignore-version   ignore mudela version\n"
+msgstr ""
+
+#: main.cc:87 main.cc:108
+msgid "  -w, --warranty         show warranty and copyright\n"
+msgstr ""
+
+#: main.cc:111
+msgid "GNU LilyPond was compiled with the following settings:"
+msgstr ""
+
+#: main.cc:139
+msgid "GNU LilyPond is Free software, see --warranty"
+msgstr ""
+
+#: main.cc:107 main.cc:142 main.cc:155
+msgid "Copyright (c) %s by"
+msgstr ""
+
+#: main.cc:109 main.cc:144 main.cc:157
+msgid "Han-Wen Nienhuys <hanwen@cs.uu.nl>"
+msgstr ""
+
+#: main.cc:110 main.cc:145 main.cc:158
+msgid "Jan Nieuwenhuizen <janneke@gnu.org>"
+msgstr ""
+
+#: main.cc:153
+msgid "GNU LilyPond -- The GNU Project music typesetter"
+msgstr "GNU LilyPond -- Il tipografo musicale del progetto GNU"
+
+#: main.cc:113 main.cc:161
+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"
+"as published by the Free Software Foundation.\n"
+"\n"
+"    This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+"    You should have received a copy (refer to the file COPYING) of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+"USA.\n"
+msgstr ""
+
+#: meter-grav.cc:28
+msgid "lost in time"
+msgstr ""
+
+#: midi-item.cc:364
+msgid "unconventional key: flats: %d, sharps: %d"
+msgstr ""
+
+#: midi-item.cc:410
+msgid "silly duration"
+msgstr ""
+
+#: midi-item.cc:424
+msgid "silly pitch"
+msgstr ""
+
+#: midi-stream.cc:29 tex-stream.cc:58
+msgid "error syncing file (disk full?)"
+msgstr ""
+
+#: musical-pitch.cc:145
+msgid "Interval greater than quart, relative: %s"
+msgstr ""
+
+#: musical-request.cc:93
+msgid "transposition by %s makes accidental larger than two"
+msgstr ""
+
+#: musical-request.cc:439
+msgid "never heard of dynamic scale `\\%s', assuming %s"
+msgstr ""
+
+#: my-lily-lexer.cc:120
+msgid "redeclaration of `\\%s'"
+msgstr ""
+
+#: my-lily-lexer.cc:149
+msgid "error at EOF: %s"
+msgstr ""
+
+#: my-lily-parser.cc:62
+msgid "Parsing..."
+msgstr "Analizzare..."
+
+#: my-lily-parser.cc:71
+msgid "braces don't match"
+msgstr ""
+
+#: p-score.cc:178
+msgid "Can't solve this casting problem exactly; revert to Word_wrap"
+msgstr ""
+
+#: p-score.cc:197
+msgid "Preprocessing elements..."
+msgstr "Preprocessare elementi..."
+
+#: p-score.cc:201
+msgid "Calculating column positions..."
+msgstr "Calcolare posizioni di colonne..."
+
+#: p-score.cc:205
+msgid "Postprocessing elements..."
+msgstr "Postprocessare elementi..."
+
+#: p-score.cc:231
+msgid "TeX output to %s..."
+msgstr "Prodotto di TeX verso %s..."
+
+#: p-score.cc:245
+msgid "% outputting Score, defined at: "
+msgstr ""
+
+#: paper-def.cc:61
+msgid "unknown paper variable: `%s'"
+msgstr ""
+
+#: paper-def.cc:65
+msgid "not a real variable"
+msgstr ""
+
+#. perhaps multiple text events?
+#: performance.cc:54
+msgid "Creator: "
+msgstr ""
+
+#: performance.cc:63
+msgid "Automatically generated"
+msgstr ""
+
+#: mudela-stream.cc:84 performance.cc:68 tex-stream.cc:47
+msgid ", at "
+msgstr ""
+
+#: performance.cc:76
+msgid "from musical definition: %s"
+msgstr ""
+
+#: performance.cc:141
+msgid "MIDI output to %s..."
+msgstr "Prodotto di MIDI verso %s..."
+
+#: plet-engraver.cc:83
+msgid "unterminated plet"
+msgstr ""
+
+#: plet-spanner.cc:85
+msgid "lonely plet"
+msgstr ""
+
+#: qlpsolve.cc:88 qlpsolve.cc:139
+msgid "degenerate constraints"
+msgstr ""
+
+#: request-iterator.cc:68
+msgid "junking request: `%s'"
+msgstr ""
+
+#: score-column.cc:55
+msgid "ignoring zero duration added to column at %s"
+msgstr ""
+
+#: score-grav.cc:145
+msgid "Unbound spanner `%s'"
+msgstr ""
+
+#: score.cc:57
+msgid "no toplevel translator"
+msgstr ""
+
+#: score.cc:60
+msgid "Interpreting music..."
+msgstr "Interpretare musica..."
+
+#: score.cc:70
+msgid "need music in a score"
+msgstr ""
+
+#. should we? hampers debugging.
+#: score.cc:106
+msgid "errors found, /*not processing score*/"
+msgstr ""
+
+#: scores.cc:34
+msgid "writing dependency file: `%s'..."
+msgstr ""
+
+#: scores.cc:78
+msgid "score contains errors; will not process it"
+msgstr ""
+
+#: script.cc:60
+msgid "script needs stem direction"
+msgstr ""
+
+#: slur-grav.cc:49
+msgid "unterminated slur"
+msgstr ""
+
+#: slur-grav.cc:72
+msgid "slur"
+msgstr ""
+
+#: spanner.cc:44
+msgid "left spanpoint is right spanpoint\n"
+msgstr ""
+
+#: spanner.cc:101
+msgid "Spanner `%s' with equal left and right spanpoints"
+msgstr ""
+
+#: spring-spacer.cc:82
+msgid "unconnected column: %d"
+msgstr ""
+
+#: spring-spacer.cc:186
+msgid "I'm too fat; call Oprah"
+msgstr ""
+
+#: spring-spacer.cc:344
+msgid "solution doesn't satisfy constraints"
+msgstr ""
+
+#: spring-spacer.cc:623
+msgid "can't find a ruling note at %s"
+msgstr ""
+
+#: spring-spacer.cc:629
+msgid "no minimum in measure at %s"
+msgstr ""
+
+#: staff-side.cc:61
+msgid "Staff_side::get_position_f(): somebody forgot to set my direction, returning -20"
+msgstr ""
+
+#: stem.cc:102
+msgid "weird stem size; check for narrow beams"
+msgstr ""
+
+#: symtable.cc:50
+msgid "Symtable `%s': unknown symbol: `%s'"
+msgstr ""
+
+#: symtable.cc:61
+msgid "Symtable `%s' unknown"
+msgstr ""
+
+#: mudela-stream.cc:74 tex-stream.cc:37
+msgid "% Creator: "
+msgstr ""
+
+#: mudela-stream.cc:79 tex-stream.cc:42
+msgid "% Automatically generated"
+msgstr ""
+
+#: text-item.cc:47
+msgid "Text_item::get_position_f(): somebody forgot to set my vertical direction, returning -20"
+msgstr ""
+
+#: tie-grav.cc:114 tie.cc:50
+msgid "lonely tie"
+msgstr ""
+
+#: ties-grav.cc:82
+msgid "Can't find a note head at the right to attach Tie"
+msgstr ""
+
+#: time-description.cc:17
+msgid "cadenza"
+msgstr ""
+
+#: time-description.cc:106
+msgid "partial measure must be non-negative"
+msgstr ""
+
+#: time-description.cc:108
+msgid "partial measure too large"
+msgstr ""
+
+#: timing-translator.cc:32
+msgid "conflicting timing request"
+msgstr ""
+
+#: timing-translator.cc:64
+msgid "meter change not allowed here"
+msgstr ""
+
+#: timing-translator.cc:87
+msgid "barcheck failed by: %s"
+msgstr ""
+
+#: translator-ctors.cc:40
+msgid "unknown translator `%s'"
+msgstr ""
+
+#: translator-group.cc:149
+msgid "can't find or create `%s' called `%s'"
+msgstr ""
+
+#: translator-group.cc:263
+msgid "can't find or create `%s'"
+msgstr ""
+
+#: translator-group.cc:353
+msgid "can't find `%s'"
+msgstr ""
+
+#: word-wrap.cc:68
+msgid "ugh, this measure is too long"
+msgstr ""
+
+#: word-wrap.cc:69
+msgid "breakpoint: %d"
+msgstr ""
+
+#: word-wrap.cc:70
+msgid "generating stupido solution"
+msgstr ""
+
+#: word-wrap.cc:88
+msgid "I don't fit; put me on Montignac"
+msgstr ""
+
+#: parser.yy:300 parser.yy:303
+msgid "incorrect mudela version: %s (%s, %s)"
+msgstr ""
+
+#: parser.yy:477
+msgid "More than one music block"
+msgstr ""
+
+#: parser.yy:1047 parser.yy:1225 parser.yy:1252
+msgid "not a duration: %d"
+msgstr ""
+
+#: parser.yy:1049 parser.yy:1254
+msgid "can't abbreviate"
+msgstr ""
+
+#: parser.yy:1264
+msgid "have to be in Note mode for notes"
+msgstr ""
+
+#: parser.yy:1286
+msgid "have to be in Lyric mode for lyrics"
+msgstr ""
+
+#: lexer.ll:125
+msgid "EOF found inside a comment"
+msgstr ""
+
+#: lexer.ll:163
+msgid "undefined identifier: `%s'"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:168
+msgid "missing end quote"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:191 lexer.ll:195
+msgid "white expected"
+msgstr ""
+
+#: lexer.ll:342
+msgid "illegal character: `%c'"
+msgstr ""
+
+#: lexer.ll:392
+msgid "unknown escaped string: `\\%s'"
+msgstr ""
+
+#: out/BLURB.hh:2
+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, formatting scores, part extraction.  It includes\n"
+"a nice font of musical symbols.\n"
+msgstr ""
+"LilyPond \350 il tipografo musicale del progetto GNU.   Questo programma e\n"
+"fatto per stampare bella partitura da un documento definito per musica.\n"
+"Pu\362 anche sonare le prestazioni meccaniche ad un documento MIDI.  Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenzas, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione della parte.  Una seria completa di\n"
+"caratteri musicali \350 compresa.\n"
+
+#: out/COPERTINA.hh:2
+msgid ""
+"LilyPond \350 il tipografo musicale del progetto GNU.   Questo programma \350\n"
+"fatto per stampare belle partiture da un documento definito per musica.\n"
+"Pu\362 anche suonare le prestazioni meccaniche ad un documento MIDI.  Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione delle parte.  \310 compresa una seria \n"
+"completa di caratteri musicali.\n"
+msgstr ""
+
+#: out/FLAPTEKST.hh:2
+msgid ""
+"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,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en uittreksels voor individuele \n"
+"partijen.  Een fraaie set muziektekens is inbegrepen.\n"
+msgstr ""
+
+#: main.cc:43
+msgid "Usage: %s [OPTION]... [FILE]"
+msgstr ""
+
+#: main.cc:45
+msgid "Translate midi-file to mudela"
+msgstr ""
+
+#: main.cc:51
+msgid "  -b, --no-quantify      write exact durations, e.g.: a4*385/384\n"
+msgstr ""
+
+#: main.cc:63
+msgid "  -k, --key=ACC[:MINOR]  set key: ACC +sharps/-flats; :1 minor\n"
+msgstr ""
+
+#: main.cc:66
+msgid "  -n, --no-silly         assume no plets or double dots, smallest is 32\n"
+msgstr ""
+
+#: main.cc:69
+msgid "  -o, --output=FILE      set FILE as default output\n"
+msgstr ""
+
+#: main.cc:72
+msgid "  -p, --no-plets         assume no plets\n"
+msgstr ""
+
+#: main.cc:75
+msgid "  -q, --quiet            be quiet\n"
+msgstr ""
+
+#: main.cc:81
+msgid "  -s, --smallest=N       assume no shorter (reciprocal) durations than N\n"
+msgstr ""
+
+#: main.cc:84
+msgid "  -v, --verbose          be verbose\n"
+msgstr ""
+
+#: main.cc:90
+msgid "  -x, --no-double-dots   assume no double dotted notes\n"
+msgstr ""
+
+#: main.cc:105
+msgid "Mi2mu, translate midi to mudela"
+msgstr ""
+
+#: midi-parser.cc:64
+msgid "zero length string encountered"
+msgstr ""
+
+#: midi-score-parser.cc:45
+msgid "MIDI header expected"
+msgstr ""
+
+#. is this signed?
+#: midi-score-parser.cc:50
+msgid "Invalid header length"
+msgstr ""
+
+#: midi-score-parser.cc:53
+msgid "Invalid midi format"
+msgstr ""
+
+#: midi-score-parser.cc:56
+msgid "Invalid number of tracks"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "can't handle %s"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "non-metrical time"
+msgstr ""
+
+#: midi-score-parser.cc:95
+msgid "Parsing...\n"
+msgstr ""
+
+#: midi-track-parser.cc:70
+msgid "junking note-end event: channel = %d, pitch = %d"
+msgstr ""
+
+#: midi-track-parser.cc:125
+msgid "invalid running status"
+msgstr ""
+
+#: midi-track-parser.cc:326
+msgid "unimplemented MIDI meta-event"
+msgstr ""
+
+#: midi-track-parser.cc:331
+msgid "invalid MIDI event"
+msgstr ""
+
+#: midi-track-parser.cc:346
+msgid "MIDI track expected"
+msgstr ""
+
+#: midi-track-parser.cc:351
+msgid "invalid track length"
+msgstr ""
+
+#. heu, -2: should be - 1 1/2: A -> fis
+#: mudela-item.cc:62
+msgid "%% \"%s\"; %% not supported yet"
+msgstr ""
+
+#: mudela-item.cc:107
+msgid "#32 in quarter: %d"
+msgstr ""
+
+#: mudela-score.cc:96
+msgid "ugh"
+msgstr ""
+
+#: mudela-score.cc:108
+msgid "Lily output to %s..."
+msgstr ""
+
+#: mudela-score.cc:118 mudela-score.cc:167
+msgid "track "
+msgstr ""
+
+#: mudela-score.cc:152
+msgid "Processing..."
+msgstr ""
+
+#: mudela-score.cc:163
+msgid "Creating voices..."
+msgstr ""
+
+#: mudela-score.cc:176
+msgid "NOT Filtering tempo..."
+msgstr ""
+
+#: mudela-score.cc:185
+msgid "NOT Quantifying columns..."
+msgstr ""
+
+#: mudela-score.cc:189
+msgid "Quantifying columns..."
+msgstr ""
+
+#.    return;
+#: mudela-score.cc:224
+msgid "Settling columns..."
+msgstr ""
+
+#: mudela-staff.cc:100
+msgid "% midi copyright:"
+msgstr ""
+
+#: mudela-staff.cc:101
+msgid "% instrument:"
+msgstr ""
+
+#: mudela-stream.cc:36
+msgid "lily indent level: %d"
+msgstr ""
+
+#: mudela-stream.cc:88
+msgid "% from input file: "
+msgstr ""
+
+#: version.cc:12
+msgid "of"
+msgstr ""
diff --git a/po/lilypond.po b/po/lilypond.po
new file mode 100644 (file)
index 0000000..2352a85
--- /dev/null
@@ -0,0 +1,884 @@
+msgid ""
+msgstr ""
+"Date: 1998-07-21 09:44:01+0200\n"
+"From:  <fred@botervlieg.flower>\n"
+"Content-Type: text/plain; charset=\n"
+"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po/out --add-comments --keyword=_ --keyword=_f\n"
+"Files: config.h gettext.h gettextP.h hash-string.h libgettext.h bindtextdom.c dcgettext.c dgettext.c finddomain.c gettext.c intl-compat.c loadmsgcat.c localealias.c textdomain.c\n"
+
+#: data-file.cc:52
+msgid "EOF in a string"
+msgstr ""
+
+#: data-file.cc:121 input.cc:86 midi-parser.cc:100 warn.cc:21
+msgid "warning: "
+msgstr ""
+
+#: dstream.cc:159
+msgid "Not enough fields in Dstream init."
+msgstr ""
+
+#: flower-debug.cc:17
+msgid "Debug output disabled.  Compiled with NPRINT."
+msgstr ""
+
+#: lgetopt.cc:103
+msgid "option `%s' requires an argument"
+msgstr ""
+
+#: lgetopt.cc:107
+msgid "option `%s' doesn't allow an argument"
+msgstr ""
+
+#: lgetopt.cc:111
+msgid "unrecognized option: `%s'"
+msgstr ""
+
+#: lgetopt.cc:117
+msgid "invalid argument `%s' to option `%s'"
+msgstr ""
+
+#: text-stream.cc:8
+msgid "<stdin>"
+msgstr ""
+
+#: mapped-file-storage.cc:87 midi-stream.cc:77 mudela-stream.cc:102 parser.yy:1378 scores.cc:37 simple-file-storage.cc:44 tex-stream.cc:28 text-stream.cc:21
+msgid "can't open file: `%s'"
+msgstr ""
+
+#: input.cc:91 warn.cc:7 warn.cc:15
+msgid "error: "
+msgstr ""
+
+#: input.cc:97
+msgid "Non fatal error: "
+msgstr ""
+
+#: input.cc:105 source-file.cc:62 source-file.cc:155
+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
+msgid "Huh? got %d, expected %d characters"
+msgstr ""
+
+#: abbreviation-beam-engraver.cc:76 beam-grav.cc:90
+msgid "unterminated beam"
+msgstr ""
+
+#: afm.cc:114
+msgid "can't find character called `%s'"
+msgstr ""
+
+#: atom.cc:31
+msgid "ridiculous dimension: %s, %s"
+msgstr ""
+
+#: beam-grav.cc:106
+msgid "Stem must have Rhythmic structure."
+msgstr ""
+
+#: beam-grav.cc:113
+msgid "stem doesn't fit in beam"
+msgstr ""
+
+#: beam-grav.cc:124
+msgid "please fix me"
+msgstr ""
+
+#: beam-grav.cc:125
+msgid "stem at %s doesn't fit in beam"
+msgstr ""
+
+#: beam.cc:117
+msgid "beam with less than two stems"
+msgstr ""
+
+#. when all too short, normal stems win..
+#: beam.cc:562
+msgid "weird beam shift, check your knees"
+msgstr ""
+
+#: break.cc:25
+msgid "0 lines"
+msgstr ""
+
+#: break.cc:27
+msgid "1 line (of %.0f columns)"
+msgstr ""
+
+#: break.cc:29
+msgid "%d lines (with an average of %.1f columns)"
+msgstr ""
+
+#: break.cc:159
+msgid "score does not have any columns"
+msgstr ""
+
+#: break.cc:183
+msgid "approximated: %s"
+msgstr ""
+
+#: break.cc:185
+msgid "calculated exactly: %s"
+msgstr ""
+
+#: break.cc:186 score.cc:111
+msgid "time: %.2f seconds"
+msgstr ""
+
+#: change-iterator.cc:25
+msgid "can't change `%s' to `%s'"
+msgstr ""
+
+#: clef-grav.cc:137
+msgid "unknown clef type "
+msgstr ""
+
+#: collision.cc:62
+msgid "No stem direction set. Ignoring column in clash."
+msgstr ""
+
+#: collision.cc:75
+msgid "Too many clashing notecolumns. Ignoring them."
+msgstr ""
+
+#: command-request.cc:209
+msgid "don't know how handle empty keys"
+msgstr ""
+
+#: crescendo.cc:47
+msgid "crescendo"
+msgstr ""
+
+#: crescendo.cc:47 lookup.cc:338 lookup.cc:371 lookup.cc:389
+msgid "too small"
+msgstr ""
+
+#: debug.cc:56
+msgid "Floating point exception"
+msgstr ""
+
+#: debug.cc:140
+msgid "can't set mem-checking"
+msgstr ""
+
+#: dimen.cc:31
+msgid "unknown length unit: `%s'"
+msgstr ""
+
+#: dimen.cc:40
+msgid "NaN"
+msgstr ""
+
+#: dynamic-grav.cc:85 slur-grav.cc:72
+msgid "can't find both ends of %s"
+msgstr ""
+
+#: dynamic-grav.cc:86
+msgid "cresc"
+msgstr ""
+
+#: dynamic-grav.cc:162
+msgid "unended crescendo"
+msgstr ""
+
+#: identifier.cc:49
+msgid "Wrong identifier type: "
+msgstr ""
+
+#: identifier.cc:50
+msgid "%s expected"
+msgstr ""
+
+#: includable-lexer.cc:38 midi-score-parser.cc:24 scores.cc:108 scores.cc:113
+msgid "can't find file: `%s'"
+msgstr ""
+
+#: ineq-constrained-qp.cc:167
+msgid "Ineq_constrained_qp::solve (): Constraint off by %f"
+msgstr ""
+
+#: ineq-constrained-qp.cc:222
+msgid "didn't converge!"
+msgstr ""
+
+#: ineq-constrained-qp.cc:224
+msgid "Too much degeneracy. "
+msgstr ""
+
+#: key-grav.cc:109
+msgid "No key name: assuming `C'"
+msgstr ""
+
+#: local-key-grav.cc:34
+msgid "out of tune"
+msgstr ""
+
+#: local-key-grav.cc:34 meter-grav.cc:28
+msgid "can't find"
+msgstr ""
+
+#: lookup.cc:337 lookup.cc:343
+msgid "piano brace"
+msgstr ""
+
+#: lookup.cc:344 lookup.cc:395
+msgid "too big"
+msgstr ""
+
+#: lookup.cc:370 lookup.cc:388 lookup.cc:394
+msgid "bracket"
+msgstr ""
+
+#: main.cc:65
+msgid "Usage: %s [OPTION]... [FILE]..."
+msgstr ""
+
+#: main.cc:66
+msgid "Typeset music and or play MIDI from FILE or <stdin>"
+msgstr ""
+
+#: main.cc:48 main.cc:69
+msgid "Options:"
+msgstr ""
+
+#: main.cc:72
+msgid "  -a, --about            about LilyPond\n"
+msgstr ""
+
+#: main.cc:54 main.cc:75
+msgid "  -D, --debug            enable debugging output\n"
+msgstr ""
+
+#: main.cc:78
+msgid "  -d, --dependencies     write Makefile dependencies for every input file\n"
+msgstr ""
+
+#: main.cc:60 main.cc:81
+msgid "  -I, --include=DIR      add DIR to search path\n"
+msgstr ""
+
+#: main.cc:84
+msgid "  -i, --init=FILE        use FILE as init file\n"
+msgstr ""
+
+#: main.cc:57 main.cc:87
+msgid "  -h, --help             this help\n"
+msgstr ""
+
+#: main.cc:90
+msgid "  -M, --no-paper         produce midi output only\n"
+msgstr ""
+
+#: main.cc:93
+msgid "  -o, --output=FILE      set FILE as default output base\n"
+msgstr ""
+
+#: main.cc:96
+msgid "  -Q, --find-fourths     show all intervals greater than a fourth\n"
+msgstr ""
+
+#: main.cc:99
+msgid "  -t, --test             switch on experimental features\n"
+msgstr ""
+
+#: main.cc:78 main.cc:102
+msgid "  -T, --no-timestamps    don't timestamp the output\n"
+msgstr ""
+
+#: main.cc:105
+msgid "  -V, --ignore-version   ignore mudela version\n"
+msgstr ""
+
+#: main.cc:87 main.cc:108
+msgid "  -w, --warranty         show warranty and copyright\n"
+msgstr ""
+
+#: main.cc:111
+msgid "GNU LilyPond was compiled with the following settings:"
+msgstr ""
+
+#: main.cc:139
+msgid "GNU LilyPond is Free software, see --warranty"
+msgstr ""
+
+#: main.cc:107 main.cc:142 main.cc:155
+msgid "Copyright (c) %s by"
+msgstr ""
+
+#: main.cc:109 main.cc:144 main.cc:157
+msgid "Han-Wen Nienhuys <hanwen@cs.uu.nl>"
+msgstr ""
+
+#: main.cc:110 main.cc:145 main.cc:158
+msgid "Jan Nieuwenhuizen <janneke@gnu.org>"
+msgstr ""
+
+#: main.cc:153
+msgid "GNU LilyPond -- The GNU Project music typesetter"
+msgstr ""
+
+#: main.cc:113 main.cc:161
+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"
+"as published by the Free Software Foundation.\n"
+"\n"
+"    This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+"    You should have received a copy (refer to the file COPYING) of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+"USA.\n"
+msgstr ""
+
+#: meter-grav.cc:28
+msgid "lost in time"
+msgstr ""
+
+#: midi-item.cc:364
+msgid "unconventional key: flats: %d, sharps: %d"
+msgstr ""
+
+#: midi-item.cc:410
+msgid "silly duration"
+msgstr ""
+
+#: midi-item.cc:424
+msgid "silly pitch"
+msgstr ""
+
+#: midi-stream.cc:29 tex-stream.cc:58
+msgid "error syncing file (disk full?)"
+msgstr ""
+
+#: musical-pitch.cc:145
+msgid "Interval greater than quart, relative: %s"
+msgstr ""
+
+#: musical-request.cc:93
+msgid "transposition by %s makes accidental larger than two"
+msgstr ""
+
+#: musical-request.cc:439
+msgid "never heard of dynamic scale `\\%s', assuming %s"
+msgstr ""
+
+#: my-lily-lexer.cc:120
+msgid "redeclaration of `\\%s'"
+msgstr ""
+
+#: my-lily-lexer.cc:149
+msgid "error at EOF: %s"
+msgstr ""
+
+#: my-lily-parser.cc:62
+msgid "Parsing..."
+msgstr ""
+
+#: my-lily-parser.cc:71
+msgid "braces don't match"
+msgstr ""
+
+#: p-score.cc:178
+msgid "Can't solve this casting problem exactly; revert to Word_wrap"
+msgstr ""
+
+#: p-score.cc:197
+msgid "Preprocessing elements..."
+msgstr ""
+
+#: p-score.cc:201
+msgid "Calculating column positions..."
+msgstr ""
+
+#: p-score.cc:205
+msgid "Postprocessing elements..."
+msgstr ""
+
+#: p-score.cc:231
+msgid "TeX output to %s..."
+msgstr ""
+
+#: p-score.cc:245
+msgid "% outputting Score, defined at: "
+msgstr ""
+
+#: paper-def.cc:61
+msgid "unknown paper variable: `%s'"
+msgstr ""
+
+#: paper-def.cc:65
+msgid "not a real variable"
+msgstr ""
+
+#. perhaps multiple text events?
+#: performance.cc:54
+msgid "Creator: "
+msgstr ""
+
+#: performance.cc:63
+msgid "Automatically generated"
+msgstr ""
+
+#: mudela-stream.cc:84 performance.cc:68 tex-stream.cc:47
+msgid ", at "
+msgstr ""
+
+#: performance.cc:76
+msgid "from musical definition: %s"
+msgstr ""
+
+#: performance.cc:141
+msgid "MIDI output to %s..."
+msgstr ""
+
+#: plet-engraver.cc:83
+msgid "unterminated plet"
+msgstr ""
+
+#: plet-spanner.cc:85
+msgid "lonely plet"
+msgstr ""
+
+#: qlpsolve.cc:88 qlpsolve.cc:139
+msgid "degenerate constraints"
+msgstr ""
+
+#: request-iterator.cc:68
+msgid "junking request: `%s'"
+msgstr ""
+
+#: score-column.cc:55
+msgid "ignoring zero duration added to column at %s"
+msgstr ""
+
+#: score-grav.cc:145
+msgid "Unbound spanner `%s'"
+msgstr ""
+
+#: score.cc:57
+msgid "no toplevel translator"
+msgstr ""
+
+#: score.cc:60
+msgid "Interpreting music..."
+msgstr ""
+
+#: score.cc:70
+msgid "need music in a score"
+msgstr ""
+
+#. should we? hampers debugging.
+#: score.cc:106
+msgid "errors found, /*not processing score*/"
+msgstr ""
+
+#: scores.cc:34
+msgid "writing dependency file: `%s'..."
+msgstr ""
+
+#: scores.cc:78
+msgid "score contains errors; will not process it"
+msgstr ""
+
+#: script.cc:60
+msgid "script needs stem direction"
+msgstr ""
+
+#: slur-grav.cc:49
+msgid "unterminated slur"
+msgstr ""
+
+#: slur-grav.cc:72
+msgid "slur"
+msgstr ""
+
+#: spanner.cc:44
+msgid "left spanpoint is right spanpoint\n"
+msgstr ""
+
+#: spanner.cc:101
+msgid "Spanner `%s' with equal left and right spanpoints"
+msgstr ""
+
+#: spring-spacer.cc:82
+msgid "unconnected column: %d"
+msgstr ""
+
+#: spring-spacer.cc:186
+msgid "I'm too fat; call Oprah"
+msgstr ""
+
+#: spring-spacer.cc:344
+msgid "solution doesn't satisfy constraints"
+msgstr ""
+
+#: spring-spacer.cc:623
+msgid "can't find a ruling note at %s"
+msgstr ""
+
+#: spring-spacer.cc:629
+msgid "no minimum in measure at %s"
+msgstr ""
+
+#: staff-side.cc:61
+msgid "Staff_side::get_position_f(): somebody forgot to set my direction, returning -20"
+msgstr ""
+
+#: stem.cc:102
+msgid "weird stem size; check for narrow beams"
+msgstr ""
+
+#: symtable.cc:50
+msgid "Symtable `%s': unknown symbol: `%s'"
+msgstr ""
+
+#: symtable.cc:61
+msgid "Symtable `%s' unknown"
+msgstr ""
+
+#: mudela-stream.cc:74 tex-stream.cc:37
+msgid "% Creator: "
+msgstr ""
+
+#: mudela-stream.cc:79 tex-stream.cc:42
+msgid "% Automatically generated"
+msgstr ""
+
+#: text-item.cc:47
+msgid "Text_item::get_position_f(): somebody forgot to set my vertical direction, returning -20"
+msgstr ""
+
+#: tie-grav.cc:114 tie.cc:50
+msgid "lonely tie"
+msgstr ""
+
+#: ties-grav.cc:82
+msgid "Can't find a note head at the right to attach Tie"
+msgstr ""
+
+#: time-description.cc:17
+msgid "cadenza"
+msgstr ""
+
+#: time-description.cc:106
+msgid "partial measure must be non-negative"
+msgstr ""
+
+#: time-description.cc:108
+msgid "partial measure too large"
+msgstr ""
+
+#: timing-translator.cc:32
+msgid "conflicting timing request"
+msgstr ""
+
+#: timing-translator.cc:64
+msgid "meter change not allowed here"
+msgstr ""
+
+#: timing-translator.cc:87
+msgid "barcheck failed by: %s"
+msgstr ""
+
+#: translator-ctors.cc:40
+msgid "unknown translator `%s'"
+msgstr ""
+
+#: translator-group.cc:149
+msgid "can't find or create `%s' called `%s'"
+msgstr ""
+
+#: translator-group.cc:263
+msgid "can't find or create `%s'"
+msgstr ""
+
+#: translator-group.cc:353
+msgid "can't find `%s'"
+msgstr ""
+
+#: word-wrap.cc:68
+msgid "ugh, this measure is too long"
+msgstr ""
+
+#: word-wrap.cc:69
+msgid "breakpoint: %d"
+msgstr ""
+
+#: word-wrap.cc:70
+msgid "generating stupido solution"
+msgstr ""
+
+#: word-wrap.cc:88
+msgid "I don't fit; put me on Montignac"
+msgstr ""
+
+#: parser.yy:300 parser.yy:303
+msgid "incorrect mudela version: %s (%s, %s)"
+msgstr ""
+
+#: parser.yy:477
+msgid "More than one music block"
+msgstr ""
+
+#: parser.yy:1047 parser.yy:1225 parser.yy:1252
+msgid "not a duration: %d"
+msgstr ""
+
+#: parser.yy:1049 parser.yy:1254
+msgid "can't abbreviate"
+msgstr ""
+
+#: parser.yy:1264
+msgid "have to be in Note mode for notes"
+msgstr ""
+
+#: parser.yy:1286
+msgid "have to be in Lyric mode for lyrics"
+msgstr ""
+
+#: lexer.ll:125
+msgid "EOF found inside a comment"
+msgstr ""
+
+#: lexer.ll:163
+msgid "undefined identifier: `%s'"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:168
+msgid "missing end quote"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:191 lexer.ll:195
+msgid "white expected"
+msgstr ""
+
+#: lexer.ll:342
+msgid "illegal character: `%c'"
+msgstr ""
+
+#: lexer.ll:392
+msgid "unknown escaped string: `\\%s'"
+msgstr ""
+
+#: out/BLURB.hh:2
+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, formatting scores, part extraction.  It includes\n"
+"a nice font of musical symbols.\n"
+msgstr ""
+
+#: out/COPERTINA.hh:2
+msgid ""
+"LilyPond \350 il tipografo musicale del progetto GNU.   Questo programma \350\n"
+"fatto per stampare belle partiture da un documento definito per musica.\n"
+"Pu\362 anche suonare le prestazioni meccaniche ad un documento MIDI.  Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione delle parte.  \310 compresa una seria \n"
+"completa di caratteri musicali.\n"
+msgstr ""
+
+#: out/FLAPTEKST.hh:2
+msgid ""
+"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,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en uittreksels voor individuele \n"
+"partijen.  Een fraaie set muziektekens is inbegrepen.\n"
+msgstr ""
+
+#: main.cc:43
+msgid "Usage: %s [OPTION]... [FILE]"
+msgstr ""
+
+#: main.cc:45
+msgid "Translate midi-file to mudela"
+msgstr ""
+
+#: main.cc:51
+msgid "  -b, --no-quantify      write exact durations, e.g.: a4*385/384\n"
+msgstr ""
+
+#: main.cc:63
+msgid "  -k, --key=ACC[:MINOR]  set key: ACC +sharps/-flats; :1 minor\n"
+msgstr ""
+
+#: main.cc:66
+msgid "  -n, --no-silly         assume no plets or double dots, smallest is 32\n"
+msgstr ""
+
+#: main.cc:69
+msgid "  -o, --output=FILE      set FILE as default output\n"
+msgstr ""
+
+#: main.cc:72
+msgid "  -p, --no-plets         assume no plets\n"
+msgstr ""
+
+#: main.cc:75
+msgid "  -q, --quiet            be quiet\n"
+msgstr ""
+
+#: main.cc:81
+msgid "  -s, --smallest=N       assume no shorter (reciprocal) durations than N\n"
+msgstr ""
+
+#: main.cc:84
+msgid "  -v, --verbose          be verbose\n"
+msgstr ""
+
+#: main.cc:90
+msgid "  -x, --no-double-dots   assume no double dotted notes\n"
+msgstr ""
+
+#: main.cc:105
+msgid "Mi2mu, translate midi to mudela"
+msgstr ""
+
+#: midi-parser.cc:64
+msgid "zero length string encountered"
+msgstr ""
+
+#: midi-score-parser.cc:45
+msgid "MIDI header expected"
+msgstr ""
+
+#. is this signed?
+#: midi-score-parser.cc:50
+msgid "Invalid header length"
+msgstr ""
+
+#: midi-score-parser.cc:53
+msgid "Invalid midi format"
+msgstr ""
+
+#: midi-score-parser.cc:56
+msgid "Invalid number of tracks"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "can't handle %s"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "non-metrical time"
+msgstr ""
+
+#: midi-score-parser.cc:95
+msgid "Parsing...\n"
+msgstr ""
+
+#: midi-track-parser.cc:70
+msgid "junking note-end event: channel = %d, pitch = %d"
+msgstr ""
+
+#: midi-track-parser.cc:125
+msgid "invalid running status"
+msgstr ""
+
+#: midi-track-parser.cc:326
+msgid "unimplemented MIDI meta-event"
+msgstr ""
+
+#: midi-track-parser.cc:331
+msgid "invalid MIDI event"
+msgstr ""
+
+#: midi-track-parser.cc:346
+msgid "MIDI track expected"
+msgstr ""
+
+#: midi-track-parser.cc:351
+msgid "invalid track length"
+msgstr ""
+
+#. heu, -2: should be - 1 1/2: A -> fis
+#: mudela-item.cc:62
+msgid "%% \"%s\"; %% not supported yet"
+msgstr ""
+
+#: mudela-item.cc:107
+msgid "#32 in quarter: %d"
+msgstr ""
+
+#: mudela-score.cc:96
+msgid "ugh"
+msgstr ""
+
+#: mudela-score.cc:108
+msgid "Lily output to %s..."
+msgstr ""
+
+#: mudela-score.cc:118 mudela-score.cc:167
+msgid "track "
+msgstr ""
+
+#: mudela-score.cc:152
+msgid "Processing..."
+msgstr ""
+
+#: mudela-score.cc:163
+msgid "Creating voices..."
+msgstr ""
+
+#: mudela-score.cc:176
+msgid "NOT Filtering tempo..."
+msgstr ""
+
+#: mudela-score.cc:185
+msgid "NOT Quantifying columns..."
+msgstr ""
+
+#: mudela-score.cc:189
+msgid "Quantifying columns..."
+msgstr ""
+
+#.    return;
+#: mudela-score.cc:224
+msgid "Settling columns..."
+msgstr ""
+
+#: mudela-staff.cc:100
+msgid "% midi copyright:"
+msgstr ""
+
+#: mudela-staff.cc:101
+msgid "% instrument:"
+msgstr ""
+
+#: mudela-stream.cc:36
+msgid "lily indent level: %d"
+msgstr ""
+
+#: mudela-stream.cc:88
+msgid "% from input file: "
+msgstr ""
+
+#: version.cc:12
+msgid "of"
+msgstr ""
diff --git a/po/nl.po b/po/nl.po
new file mode 100644 (file)
index 0000000..85fb726
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,905 @@
+msgid ""
+msgstr ""
+"Date: 1998-05-26 11:26:28+0200\n"
+"From:  <janneke@gnu.org>\n"
+"Content-Type: text/plain; charset=\n"
+"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po --add-comments --keyword=_\n"
+"Files: bow.cc int.cc\n"
+
+#: data-file.cc:52
+msgid "EOF in a string"
+msgstr "EOF in een string"
+
+#: data-file.cc:121 input.cc:86 midi-parser.cc:100 warn.cc:21
+msgid "warning: "
+msgstr "waarschuwing: "
+
+#: dstream.cc:159
+msgid "Not enough fields in Dstream init."
+msgstr "Onvoldoende velden in Dstream init."
+
+#: flower-debug.cc:17
+msgid "Debug output disabled.  Compiled with NPRINT."
+msgstr "Ontluis berichten zijn uitgeschakeld.  Vertaald met NPRINT."
+
+#: lgetopt.cc:103
+msgid "option `%s' requires an argument"
+msgstr "optie `%s' vereist een argument"
+
+#: lgetopt.cc:107
+msgid "option `%s' doesn't allow an argument"
+msgstr "optie `%s' staat geen argument toe"
+
+#: lgetopt.cc:111
+msgid "unrecognized option: `%s'"
+msgstr "onbekende optie: `%s'"
+
+#: lgetopt.cc:117
+msgid "invalid argument `%s' to option `%s'"
+msgstr "onjuist argument: `%s' voor optie `%s'"
+
+#: text-stream.cc:8
+msgid "<stdin>"
+msgstr ""
+
+#: mapped-file-storage.cc:87 midi-stream.cc:77 mudela-stream.cc:102 parser.yy:1378 scores.cc:37 simple-file-storage.cc:44 tex-stream.cc:28 text-stream.cc:21
+msgid "can't open file: `%s'"
+msgstr "kan bestand niet openen: `%s'"
+
+#: input.cc:91 warn.cc:7 warn.cc:15
+msgid "error: "
+msgstr "fout: "
+
+#: input.cc:97
+msgid "Non fatal error: "
+msgstr "Niet noodlottige fout: "
+
+#: input.cc:105 source-file.cc:62 source-file.cc:155
+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
+msgid "Huh? got %d, expected %d characters"
+msgstr "Huh? kreeg %d, verwachtte %d tekens"
+
+#: abbreviation-beam-engraver.cc:76 beam-grav.cc:90
+msgid "unterminated beam"
+msgstr "onafgesloten balk"
+
+#: afm.cc:114
+msgid "can't find character called `%s'"
+msgstr ""
+
+#: atom.cc:31
+msgid "ridiculous dimension: %s, %s"
+msgstr "belachelijke dimensie: %s, %s"
+
+#: beam-grav.cc:106
+msgid "Stem must have Rhythmic structure."
+msgstr ""
+
+#: beam-grav.cc:113
+msgid "stem doesn't fit in beam"
+msgstr "stok past niet in balk"
+
+#: beam-grav.cc:124
+msgid "please fix me"
+msgstr "repareer mij alsjeblieft"
+
+#: beam-grav.cc:125
+msgid "stem at %s doesn't fit in beam"
+msgstr "stok op %s past niet in balk"
+
+#: beam.cc:117
+msgid "beam with less than two stems"
+msgstr "balk met minder dan twee stokken"
+
+#. when all too short, normal stems win..
+#: beam.cc:562
+msgid "weird beam shift, check your knees"
+msgstr "vreemde balk verplaatsing, controleer uw knie-en"
+
+#: break.cc:25
+msgid "0 lines"
+msgstr "0 regels"
+
+#: break.cc:27
+msgid "1 line (of %.0f columns)"
+msgstr "1 regel (van %.0f kolommen)"
+
+#: break.cc:29
+msgid "%d lines (with an average of %.1f columns)"
+msgstr "%d regels (van gemiddeld %.1f kolommen)"
+
+#: break.cc:159
+msgid "score does not have any columns"
+msgstr "partituur heeft geen enkele kolom"
+
+#: break.cc:183
+msgid "approximated: %s"
+msgstr "geschat: %s"
+
+#: break.cc:185
+msgid "calculated exactly: %s"
+msgstr "exact berekend: %s"
+
+#: break.cc:186 score.cc:111
+msgid "time: %.2f seconds"
+msgstr "duur: %.2f seconden"
+
+#: change-iterator.cc:25
+msgid "can't change `%s' to `%s'"
+msgstr "kan `%s' niet in `%s' veranderen"
+
+#: clef-grav.cc:137
+msgid "unknown clef type "
+msgstr "onbekende sleutel"
+
+#: collision.cc:62
+msgid "No stem direction set. Ignoring column in clash."
+msgstr "Geen stokrichting gezet.  Negeer kolom in botsing."
+
+#: collision.cc:75
+msgid "Too many clashing notecolumns. Ignoring them."
+msgstr "Te veel botsende nootkolommen.  Ik negeer ze."
+
+#: command-request.cc:209
+msgid "don't know how handle empty keys"
+msgstr ""
+
+#: crescendo.cc:47
+msgid "crescendo"
+msgstr ""
+
+#: crescendo.cc:47 lookup.cc:338 lookup.cc:371 lookup.cc:389
+msgid "too small"
+msgstr "te klein"
+
+#: debug.cc:56
+msgid "Floating point exception"
+msgstr "Drijvende komma uitzondering"
+
+#: debug.cc:140
+msgid "can't set mem-checking"
+msgstr ""
+
+#: dimen.cc:31
+msgid "unknown length unit: `%s'"
+msgstr ""
+
+#: dimen.cc:40
+msgid "NaN"
+msgstr "NaN"
+
+#: dynamic-grav.cc:85 slur-grav.cc:72
+msgid "can't find both ends of %s"
+msgstr "kan uiteinden van %s niet beide vinden"
+
+#: dynamic-grav.cc:86
+msgid "cresc"
+msgstr ""
+
+#: dynamic-grav.cc:162
+msgid "unended crescendo"
+msgstr "niet beeindigd crescendo"
+
+#: identifier.cc:49
+msgid "Wrong identifier type: "
+msgstr ""
+
+#: identifier.cc:50
+msgid "%s expected"
+msgstr "%s verwacht"
+
+#: includable-lexer.cc:38 midi-score-parser.cc:24 scores.cc:108 scores.cc:113
+msgid "can't find file: `%s'"
+msgstr "kan bestand niet vinden: `%s'"
+
+#: ineq-constrained-qp.cc:167
+msgid "Ineq_constrained_qp::solve (): Constraint off by %f"
+msgstr "Ineq_constrained_qp::solve (): voorwaarde zit er %f naast"
+
+#: ineq-constrained-qp.cc:222
+msgid "didn't converge!"
+msgstr "ik convederde niet!"
+
+#: ineq-constrained-qp.cc:224
+msgid "Too much degeneracy. "
+msgstr ""
+
+#: key-grav.cc:109
+msgid "No key name: assuming `C'"
+msgstr ""
+
+#: local-key-grav.cc:34
+msgid "out of tune"
+msgstr "vals"
+
+#: local-key-grav.cc:34 meter-grav.cc:28
+msgid "can't find"
+msgstr "kan niet vinden"
+
+#: lookup.cc:337 lookup.cc:343
+msgid "piano brace"
+msgstr "piano accolade"
+
+#: lookup.cc:344 lookup.cc:395
+msgid "too big"
+msgstr "te groot"
+
+#: lookup.cc:370 lookup.cc:388 lookup.cc:394
+msgid "bracket"
+msgstr "haak"
+
+#: main.cc:65
+msgid "Usage: %s [OPTION]... [FILE]..."
+msgstr "Gebruik: %s [OPTIE]... [BESTAND]..."
+
+#: main.cc:66
+msgid "Typeset music and or play MIDI from FILE or <stdin>"
+msgstr "Zet muziek en of speel MIDI van FILE of <stdin>"
+
+#: main.cc:48 main.cc:69
+msgid "Options:"
+msgstr "Opties:"
+
+#: main.cc:72
+msgid "  -a, --about            about LilyPond\n"
+msgstr "  -a, --about            over LilyPond\n"
+
+#: main.cc:54 main.cc:75
+msgid "  -D, --debug            enable debugging output\n"
+msgstr "  -D, --debug            toon ontluis berichten\n"
+
+#: main.cc:78
+msgid "  -d, --dependencies     write Makefile dependencies for every input file\n"
+msgstr "  -d, --dependencies     schrijf Makefile afhankelijkheden voor elk\n"
+"                           invoerbestand\n"
+
+#: main.cc:60 main.cc:81
+msgid "  -I, --include=DIR      add DIR to search path\n"
+msgstr "  -I, --include=INDEX    voeg INDEX toe aan zoekpad\n"
+
+#: main.cc:84
+msgid "  -i, --init=FILE        use FILE as init file\n"
+msgstr "  -i, --init=BESTAND     gebruik BESTAND voor initialisatiebestand\n"
+
+#: main.cc:57 main.cc:87
+msgid "  -h, --help             this help\n"
+msgstr "  -h, --help             deze hulp\n"
+
+#: main.cc:90
+msgid "  -M, --no-paper         produce midi output only\n"
+msgstr "  -M, --no-paper         produceer alleen midi uitvoer\n"
+
+#: main.cc:93
+msgid "  -o, --output=FILE      set FILE as default output base\n"
+msgstr ""
+
+#: main.cc:96
+msgid "  -Q, --find-fourths     show all intervals greater than a fourth\n"
+msgstr "  -Q, --find-fourths     toon alle intervallen groter dan een kwart\n"
+
+#: main.cc:99
+msgid "  -t, --test             switch on experimental features\n"
+msgstr "  -t, --test             doe experimentele kunstjes\n"
+
+#: main.cc:78 main.cc:102
+msgid "  -T, --no-timestamps    don't timestamp the output\n"
+msgstr "  -T, --no-timestamps    zet geen tijdstempel in de uitvoer\n"
+
+#: main.cc:105
+msgid "  -V, --ignore-version   ignore mudela version\n"
+msgstr "  -V, --ignore-version   negeer mudela versie\n"
+
+#: main.cc:87 main.cc:108
+msgid "  -w, --warranty         show warranty and copyright\n"
+msgstr "  -w, --warranty         toon garantie en copyright\n"
+
+#: main.cc:111
+msgid "GNU LilyPond was compiled with the following settings:"
+msgstr "GNU LilyPond is vertaald met de volgende instellingen:"
+
+#: main.cc:139
+msgid "GNU LilyPond is Free software, see --warranty"
+msgstr "GNU LilyPond is Vrij bedenksel, zie --warranty"
+
+#: main.cc:107 main.cc:142 main.cc:155
+msgid "Copyright (c) %s by"
+msgstr "Copyright (c) %s "
+
+#: main.cc:109 main.cc:144 main.cc:157
+msgid "Han-Wen Nienhuys <hanwen@cs.uu.nl>"
+msgstr ""
+
+#: main.cc:110 main.cc:145 main.cc:158
+msgid "Jan Nieuwenhuizen <janneke@gnu.org>"
+msgstr ""
+
+#: main.cc:153
+msgid "GNU LilyPond -- The GNU Project music typesetter"
+msgstr "GNU LilyPond -- De Muziekzetter van het GNU Project"
+
+#: main.cc:113 main.cc:161
+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"
+"as published by the Free Software Foundation.\n"
+"\n"
+"    This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+"    You should have received a copy (refer to the file COPYING) of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"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"
+"veranderen onder de voorwaarden van de GNU Algemene Openbare Licentie\n"
+"versie 2, zoals gepubliceerd door de Free Software Foundation.\n"
+"\n"
+"    Dit programma wordt verspreid in de hoop dat het nuttig zal zijn,\n"
+"maar ZONDER ENIGE GARANTIE; zelfs zonder de impliciete garantie voor\n"
+"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"
+
+#: meter-grav.cc:28
+msgid "lost in time"
+msgstr "hoe laat is het"
+
+#: midi-item.cc:364
+msgid "unconventional key: flats: %d, sharps: %d"
+msgstr "vreemde toonsoort: %d mollen, %d kruizen"
+
+#: midi-item.cc:410
+msgid "silly duration"
+msgstr ""
+
+#: midi-item.cc:424
+msgid "silly pitch"
+msgstr ""
+
+#: midi-stream.cc:29 tex-stream.cc:58
+msgid "error syncing file (disk full?)"
+msgstr "kan file niet wegschrijven (disk vol?)"
+
+#: musical-pitch.cc:145
+msgid "Interval greater than quart, relative: %s"
+msgstr "Interval groter dan kwart, relatief: %s"
+
+#: musical-request.cc:93
+msgid "transposition by %s makes accidental larger than two"
+msgstr "transpositie van %s geeft tripel kruizen/mollen  "
+
+#: musical-request.cc:439
+msgid "never heard of dynamic scale `\\%s', assuming %s"
+msgstr "zo hard kan ik niet `\\%s', ik doe gewoon %s"
+
+#: my-lily-lexer.cc:120
+msgid "redeclaration of `\\%s'"
+msgstr "`\\%s' wordt opnieuw gedeclareerd"
+
+#: my-lily-lexer.cc:149
+msgid "error at EOF: %s"
+msgstr "fout aan het einde van file: %s"
+
+#: my-lily-parser.cc:62
+msgid "Parsing..."
+msgstr "Ontleden..."
+
+#: my-lily-parser.cc:71
+msgid "braces don't match"
+msgstr "haakjes passen niet"
+
+#: p-score.cc:178
+msgid "Can't solve this casting problem exactly; revert to Word_wrap"
+msgstr "Kan breekprobleem niet exact oplossen; verval naar Word_wrap"
+
+#: p-score.cc:197
+msgid "Preprocessing elements..."
+msgstr "Voorbewerken van elementen..."
+
+#: p-score.cc:201
+msgid "Calculating column positions..."
+msgstr "Berekenen van kolomposities..."
+
+#: p-score.cc:205
+msgid "Postprocessing elements..."
+msgstr "Nabewerken van elementen..."
+
+#: p-score.cc:231
+msgid "TeX output to %s..."
+msgstr "TeX uitvoer naar %s..."
+
+#: p-score.cc:245
+msgid "% outputting Score, defined at: "
+msgstr ""
+
+#: paper-def.cc:61
+msgid "unknown paper variable: `%s'"
+msgstr "onbekende \\paper variabele"
+
+#: paper-def.cc:65
+msgid "not a real variable"
+msgstr "variabele is geen reeal getal"
+
+#. perhaps multiple text events?
+#: performance.cc:54
+msgid "Creator: "
+msgstr "Schepper: "
+
+#: performance.cc:63
+msgid "Automatically generated"
+msgstr "Automatisch gegenerederd"
+
+#: mudela-stream.cc:84 performance.cc:68 tex-stream.cc:47
+msgid ", at "
+msgstr ", bij "
+
+#: performance.cc:76
+msgid "from musical definition: %s"
+msgstr "van muzikale definitie: %s"
+
+#: performance.cc:141
+msgid "MIDI output to %s..."
+msgstr "MIDI uitvoer naar %s..."
+
+#: plet-engraver.cc:83
+msgid "unterminated plet"
+msgstr "onsterfelijke -ool"
+
+#: plet-spanner.cc:85
+msgid "lonely plet"
+msgstr "eenzame -ool"
+
+#: qlpsolve.cc:88 qlpsolve.cc:139
+msgid "degenerate constraints"
+msgstr "voorwaarde is gedegenerederd"
+
+#: request-iterator.cc:68
+msgid "junking request: `%s'"
+msgstr "schroot verzoek: `%s'"
+
+#: score-column.cc:55
+msgid "ignoring zero duration added to column at %s"
+msgstr ""
+
+#: score-grav.cc:145
+msgid "Unbound spanner `%s'"
+msgstr "Vrijgezelle spanner `%s'"
+
+#: score.cc:57
+msgid "no toplevel translator"
+msgstr ""
+
+#: score.cc:60
+msgid "Interpreting music..."
+msgstr "Vertolken van muziek..."
+
+#: score.cc:70
+msgid "need music in a score"
+msgstr "zonder muziek geen partituur"
+
+#. should we? hampers debugging.
+#: score.cc:106
+msgid "errors found, /*not processing score*/"
+msgstr ""
+
+#: scores.cc:34
+msgid "writing dependency file: `%s'..."
+msgstr ""
+
+#: scores.cc:78
+msgid "score contains errors; will not process it"
+msgstr ""
+
+#: script.cc:60
+msgid "script needs stem direction"
+msgstr "schrift benodigt stokrichting"
+
+#: slur-grav.cc:49
+msgid "unterminated slur"
+msgstr "onsterfelijke boog"
+
+#: slur-grav.cc:72
+msgid "slur"
+msgstr ""
+
+#: spanner.cc:44
+msgid "left spanpoint is right spanpoint\n"
+msgstr ""
+
+#: spanner.cc:101
+msgid "Spanner `%s' with equal left and right spanpoints"
+msgstr ""
+
+#: spring-spacer.cc:82
+msgid "unconnected column: %d"
+msgstr ""
+
+#: spring-spacer.cc:186
+msgid "I'm too fat; call Oprah"
+msgstr ""
+
+#: spring-spacer.cc:344
+msgid "solution doesn't satisfy constraints"
+msgstr ""
+
+#: spring-spacer.cc:623
+msgid "can't find a ruling note at %s"
+msgstr ""
+
+#: spring-spacer.cc:629
+msgid "no minimum in measure at %s"
+msgstr ""
+
+#: staff-side.cc:61
+msgid "Staff_side::get_position_f(): somebody forgot to set my direction, returning -20"
+msgstr ""
+
+#: stem.cc:102
+msgid "weird stem size; check for narrow beams"
+msgstr "vreemde stoklengte; controleer op krappe balken"
+
+#: symtable.cc:50
+msgid "Symtable `%s': unknown symbol: `%s'"
+msgstr ""
+
+#: symtable.cc:61
+msgid "Symtable `%s' unknown"
+msgstr ""
+
+#: mudela-stream.cc:74 tex-stream.cc:37
+msgid "% Creator: "
+msgstr ""
+
+#: mudela-stream.cc:79 tex-stream.cc:42
+msgid "% Automatically generated"
+msgstr ""
+
+#: text-item.cc:47
+msgid "Text_item::get_position_f(): somebody forgot to set my vertical direction, returning -20"
+msgstr ""
+
+#: tie-grav.cc:114 tie.cc:50
+msgid "lonely tie"
+msgstr ""
+
+#: ties-grav.cc:82
+msgid "Can't find a note head at the right to attach Tie"
+msgstr ""
+
+#: time-description.cc:17
+msgid "cadenza"
+msgstr "cadens"
+
+#: time-description.cc:106
+msgid "partial measure must be non-negative"
+msgstr ""
+
+#: time-description.cc:108
+msgid "partial measure too large"
+msgstr ""
+
+#: timing-translator.cc:32
+msgid "conflicting timing request"
+msgstr ""
+
+#: timing-translator.cc:64
+msgid "meter change not allowed here"
+msgstr "maatwisseling is hier niet geoorloofd"
+
+#: timing-translator.cc:87
+msgid "barcheck failed by: %s"
+msgstr "misplaatste maatstreep: %s"
+
+#: translator-ctors.cc:40
+msgid "unknown translator `%s'"
+msgstr ""
+
+#: translator-group.cc:149
+msgid "can't find or create `%s' called `%s'"
+msgstr ""
+
+#: translator-group.cc:263
+msgid "can't find or create `%s'"
+msgstr ""
+
+#: translator-group.cc:353
+msgid "can't find `%s'"
+msgstr "kan niet vinden `%s'"
+
+#: word-wrap.cc:68
+msgid "ugh, this measure is too long"
+msgstr "ugh, deze maat is te lang"
+
+#: word-wrap.cc:69
+msgid "breakpoint: %d"
+msgstr ""
+
+#: word-wrap.cc:70
+msgid "generating stupido solution"
+msgstr ""
+
+#: word-wrap.cc:88
+msgid "I don't fit; put me on Montignac"
+msgstr "Ik ben te dik."
+
+#: parser.yy:300 parser.yy:303
+msgid "incorrect mudela version: %s (%s, %s)"
+msgstr "verkeerde mudela versie: %s (%s, %s)"
+
+#: parser.yy:477
+msgid "More than one music block"
+msgstr ""
+
+#: parser.yy:1047 parser.yy:1225 parser.yy:1252
+msgid "not a duration: %d"
+msgstr "is geen duur: %d"
+
+#: parser.yy:1049 parser.yy:1254
+msgid "can't abbreviate"
+msgstr ""
+
+#: parser.yy:1264
+msgid "have to be in Note mode for notes"
+msgstr ""
+
+#: parser.yy:1286
+msgid "have to be in Lyric mode for lyrics"
+msgstr ""
+
+#: lexer.ll:125
+msgid "EOF found inside a comment"
+msgstr ""
+
+#: lexer.ll:163
+msgid "undefined identifier: `%s'"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:168
+msgid "missing end quote"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:191 lexer.ll:195
+msgid "white expected"
+msgstr ""
+
+#: lexer.ll:342
+msgid "illegal character: `%c'"
+msgstr ""
+
+#: lexer.ll:392
+msgid "unknown escaped string: `\\%s'"
+msgstr ""
+
+#: out/BLURB.hh:2
+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, formatting scores, part extraction.  It includes\n"
+"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,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en losse partijen.  Een fraaie set\n"
+"muziektekens is inbegrepen.\n"
+
+#: out/COPERTINA.hh:2
+msgid ""
+"LilyPond \350 il tipografo musicale del progetto GNU.   Questo programma \350\n"
+"fatto per stampare belle partiture da un documento definito per musica.\n"
+"Pu\362 anche suonare le prestazioni meccaniche ad un documento MIDI.  Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione delle parte.  \310 compresa una seria \n"
+"completa di caratteri musicali.\n"
+msgstr ""
+
+#: out/FLAPTEKST.hh:2
+msgid ""
+"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,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en uittreksels voor individuele \n"
+"partijen.  Een fraaie set muziektekens is inbegrepen.\n"
+msgstr ""
+
+#: main.cc:43
+msgid "Usage: %s [OPTION]... [FILE]"
+msgstr ""
+
+#: main.cc:45
+msgid "Translate midi-file to mudela"
+msgstr ""
+
+#: main.cc:51
+msgid "  -b, --no-quantify      write exact durations, e.g.: a4*385/384\n"
+msgstr ""
+
+#: main.cc:63
+msgid "  -k, --key=ACC[:MINOR]  set key: ACC +sharps/-flats; :1 minor\n"
+msgstr ""
+
+#: main.cc:66
+msgid "  -n, --no-silly         assume no plets or double dots, smallest is 32\n"
+msgstr ""
+
+#: main.cc:69
+msgid "  -o, --output=FILE      set FILE as default output\n"
+msgstr "  -o, --output=BESTAND   zet BESTAND als verval uitvoer\n"
+
+#: main.cc:72
+msgid "  -p, --no-plets         assume no plets\n"
+msgstr ""
+
+#: main.cc:75
+msgid "  -q, --quiet            be quiet\n"
+msgstr ""
+
+#: main.cc:81
+msgid "  -s, --smallest=N       assume no shorter (reciprocal) durations than N\n"
+msgstr ""
+
+#: main.cc:84
+msgid "  -v, --verbose          be verbose\n"
+msgstr ""
+
+#: main.cc:90
+msgid "  -x, --no-double-dots   assume no double dotted notes\n"
+msgstr ""
+
+#: main.cc:105
+msgid "Mi2mu, translate midi to mudela"
+msgstr ""
+
+#: midi-parser.cc:64
+msgid "zero length string encountered"
+msgstr ""
+
+#: midi-score-parser.cc:45
+msgid "MIDI header expected"
+msgstr ""
+
+#. is this signed?
+#: midi-score-parser.cc:50
+msgid "Invalid header length"
+msgstr ""
+
+#: midi-score-parser.cc:53
+msgid "Invalid midi format"
+msgstr ""
+
+#: midi-score-parser.cc:56
+msgid "Invalid number of tracks"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "can't handle %s"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "non-metrical time"
+msgstr ""
+
+#: midi-score-parser.cc:95
+msgid "Parsing...\n"
+msgstr ""
+
+#: midi-track-parser.cc:70
+msgid "junking note-end event: channel = %d, pitch = %d"
+msgstr ""
+
+#: midi-track-parser.cc:125
+msgid "invalid running status"
+msgstr ""
+
+#: midi-track-parser.cc:326
+msgid "unimplemented MIDI meta-event"
+msgstr ""
+
+#: midi-track-parser.cc:331
+msgid "invalid MIDI event"
+msgstr ""
+
+#: midi-track-parser.cc:346
+msgid "MIDI track expected"
+msgstr ""
+
+#: midi-track-parser.cc:351
+msgid "invalid track length"
+msgstr ""
+
+#. heu, -2: should be - 1 1/2: A -> fis
+#: mudela-item.cc:62
+msgid "%% \"%s\"; %% not supported yet"
+msgstr ""
+
+#: mudela-item.cc:107
+msgid "#32 in quarter: %d"
+msgstr ""
+
+#: mudela-score.cc:96
+msgid "ugh"
+msgstr ""
+
+#: mudela-score.cc:108
+msgid "Lily output to %s..."
+msgstr ""
+
+#: mudela-score.cc:118 mudela-score.cc:167
+msgid "track "
+msgstr ""
+
+#: mudela-score.cc:152
+msgid "Processing..."
+msgstr ""
+
+#: mudela-score.cc:163
+msgid "Creating voices..."
+msgstr ""
+
+#: mudela-score.cc:176
+msgid "NOT Filtering tempo..."
+msgstr ""
+
+#: mudela-score.cc:185
+msgid "NOT Quantifying columns..."
+msgstr ""
+
+#: mudela-score.cc:189
+msgid "Quantifying columns..."
+msgstr ""
+
+#.    return;
+#: mudela-score.cc:224
+msgid "Settling columns..."
+msgstr ""
+
+#: mudela-staff.cc:100
+msgid "% midi copyright:"
+msgstr ""
+
+#: mudela-staff.cc:101
+msgid "% instrument:"
+msgstr ""
+
+#: mudela-stream.cc:36
+msgid "lily indent level: %d"
+msgstr ""
+
+#: mudela-stream.cc:88
+msgid "% from input file: "
+msgstr ""
+
+#: version.cc:12
+msgid "of"
+msgstr "van"
diff --git a/stepmake/Documentation/topdocs/AUTHORS.yo b/stepmake/Documentation/topdocs/AUTHORS.yo
new file mode 100644 (file)
index 0000000..e14f5d0
--- /dev/null
@@ -0,0 +1,27 @@
+nsect(NAME)
+
+AUTHORS - who did what on StepMake?
+
+nsect(DESCRIPTION)
+
+This file lists authors of StepMake, and what they wrote.
+
+nsect(AUTHORS)
+itemize(
+it()nemail(Jan Nieuwenhuizen)(janneke@gnu.org),
+    lurl(http://www.digicash.com/~jan)
+    nl()
+    Main author.
+it()nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl), 
+    lurl(http://www.cs.uu.nl/people/hanwen)
+    nl()
+    Main author.
+)
+
+nsect(CONTRIBUTORS)
+
+itemize(
+it()nemail(Jeffrey B. Reed)(daboys@bga.com),
+    Windows-nt fixes.
+)
+
diff --git a/stepmake/README b/stepmake/README
new file mode 100644 (file)
index 0000000..22375a6
--- /dev/null
@@ -0,0 +1,18 @@
+StepMake
+
+This is a simple generic make package.
+It is being used by LilyPond and Harmonia
+(and StepMake itself, of course)
+
+You're looking at her embryonal state -- things are *supposed* 
+to be broken.
+
+Fixes/patches/suggestions appreciated.
+
+StepMake is Free Software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License 
+version 2 as published by the Free Software Foundation.
+
+Jan Nieuwenhuizen <janneke@gnu.org>
+ftp://pcnov095.win.tue.nl/pub/lilypond/development
+
diff --git a/stepmake/bin/packagepython.py b/stepmake/bin/packagepython.py
new file mode 100755 (executable)
index 0000000..68c7abd
--- /dev/null
@@ -0,0 +1,173 @@
+#!/usr/bin/python
+
+# packagepython.py --  implement general StepMake-wide python stuff
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+#                Jan Nieuwenhuizen <janneke@gnu.org>
+
+import regex
+import regsub
+from string import *
+# from flower import *
+import sys
+import os
+import getopt
+
+make_assign_re = regex.compile('^\([A-Z_]*\)=\(.*\)$')
+
+def read_makefile (fn):
+       file = open (fn)
+       lines = file.readlines()
+
+       mi = pa = mj = 0
+       mp = ''
+
+       make_dict = {}
+       for l in lines:
+               if make_assign_re.search(l) <> -1:
+                       nm = make_assign_re.group(1)
+                       val = make_assign_re.group(2)
+                       make_dict[nm] = val
+       return make_dict
+
+class Package:
+       def __init__ (self, dirname):
+               dict = read_makefile (dirname + '/VERSION')
+               version_list = []
+               for x in [ 'MAJOR_VERSION', 'MINOR_VERSION',   'PATCH_LEVEL']:
+                       version_list.append (atoi (dict[x]))
+               version_list.append (dict['MY_PATCH_LEVEL'])
+               self.topdir = dirname
+               self.groupdir = self.topdir + '/..'
+               self.patch_dir = self.groupdir + '/patches/'
+               self.release_dir = self.groupdir + '/releases/'
+               self.test_dir = self.groupdir + '/test/'
+               self.version =  tuple(version_list)
+               self.Name = dict['PACKAGE_NAME']
+               self.name = lower (self.Name)
+               if self.name == 'lilypond':
+                       self.nickname = 'lelie'
+               else:
+                       self.nickname = self.name
+               self.NAME = upper (self.Name)
+
+
+class Packager:
+       def __init__ (self):
+               try:
+                       m= os.environ['MAILADDRESS']
+               except KeyError:
+                       m= '(address unknown)'
+               self.mail= m
+
+
+def full_version_tup(tup):
+       t = [0,0,0,'']
+       for i in range (4):
+         try:
+                 t[i] = tup[i]
+         except IndexError:
+                 break
+       return tuple(t)
+
+def split_my_patchlevel(str):
+       return (regsub.sub('[0-9]*$', '', str),
+               atoi(regsub.sub('[^0-9]*', '', str)))
+       
+
+def next_version(tup):
+       l = list(full_version_tup (tup))
+       t3name=t3num=''
+       if l[3]:
+               (t3name,t3num)= split_my_patchlevel (l[3])
+               if t3num: 
+                       t3num = '%d' % (t3num + 1)
+               else:
+                       t3num = t3name =''
+       else:
+               l[2] = l[2] +1
+
+       return tuple(l[0:3] + [t3name +  t3num])
+
+def prev_version(tup):
+       l = list(full_version_tup (tup))
+       t3name=t3num=''
+       if l[3]:
+               (t3name,t3num)= split_my_patchlevel (l[3])
+               if t3num and t3num - 1 > 0:
+                       t3num = '%d' %(t3num - 1)
+               else:
+                       t3num = t3name =''
+
+       else:
+               l[2] = l[2] -1
+               
+       return tuple(l[0:3] + [t3name +  t3num])
+
+def version_tuple_to_str(tup):
+       tup = full_version_tup (tup)
+       if tup[3]:
+               my = '.' + tup[3]
+       else:
+               my = ''
+       return ('%d.%d.%d' % tup[0:3]) + my
+
+def version_str_to_tuple(str):
+       t = split(str, '.')
+       try:
+               mypatch = t[3]
+       except IndexError:
+               mypatch = ''
+       return (atoi(t[0]), atoi(t[1]), atoi(t[2]), mypatch)
+
+def version_compare (tupl, tupr):
+       tupl = full_version_tup (tupl)
+       tupr = full_version_tup (tupr)
+       for i in (0,1,2):
+               if tupl[i] - tupr[i]: return tupl[i] - tupr[i]
+       if tupl[3] and tupr[3]:
+               lname = regsub.sub('[0-9]*$', '', tupl[3])
+               lnum = atoi(regsub.sub('[^0-9]*', '', tupl[3]))
+               rname = regsub.sub('[0-9]*$', '', tupr[3])
+               rnum = atoi(regsub.sub('[^0-9]*', '', tupr[3]))
+               if lname != rname:
+                       raise 'ambiguous'
+               return sign (lnum - rnum)
+       if tupl[3]:
+               return 1
+       else:
+               return -1
+
+       
+if __name__ == '__main__':
+       p = Package ('.')
+       v=  p.version
+       print v, prev_version(v), next_version(v)
+       pv=(0,1,1,'jcn4')
+       print version_tuple_to_str(pv), prev_version(pv), next_version(pv)
+       print version_tuple_to_str((0,1,1,''))    
+       print full_version_tup ((0,1))
+
+       
+def dump_file(f, s):
+       i = open(f, 'w')
+       i.write(s)
+       i.close ()
+
+def gulp_file(f):
+       try:
+               i = open(f)
+               i.seek (0, 2)
+               n = i.tell ()
+               i.seek (0,0)
+       except:
+               sys.stderr.write( 'can\'t open file %s\n ' % f)
+               return ''
+       s = i.read (n)
+       if len (s) <= 0:
+               sys.stderr.write( 'gulped empty file: %s\n'% f)
+       return s
+
+
diff --git a/stepmake/bin/table-to-html.py b/stepmake/bin/table-to-html.py
new file mode 100644 (file)
index 0000000..d43590f
--- /dev/null
@@ -0,0 +1,137 @@
+#!@PYTHON@
+
+# table-to-html.py -- convert char-separated table to html table
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+
+version = '0.1'
+name = 'table-to-html'
+
+import os
+import sys
+
+import getopt
+from string import *
+import regex
+import regsub
+import time
+
+def program_id ():
+    return name + ' version ' + version;
+
+def identify ():
+    sys.stdout.write (program_id () + '\n')
+
+def help ():
+    sys.stdout.write ("Usage: table-to-html [OPTION]... TABLE-FILE HTML-FILENAME\n"
+                + "Generate pretty table from char separated table\n\n"
+                + "Options:\n"
+                + "  -h, --help             print this help\n"
+                + "  -p, --package=DIR      specify package\n"
+                + "  -s, --separator=SEP    specify separator [:]\n"
+                + "  -t, --latex            do latex output instead\n"
+                     )
+    
+    sys.exit (0)
+
+
+def header (html):
+    html.write ('<body bgcolor=white><table cellspacing=10>')
+
+def footer (html):
+    html.write ('</table></body>')
+
+def convert_html (inname, outname, separator):
+    # urg, again?
+    from flower import *
+    table = File (inname)
+    # ugh
+    html = File (outname, 'w')
+
+    header (html)
+    i = 0
+    while not table.eof ():
+       line = table.readline ()
+       i = i + 1
+       if not len(line):
+           continue
+       columns = split (line, separator)
+       html_line = '<tr><td>' + join (columns, '</td><td>') + '</td></tr>'
+       html.write (html_line)
+       if len (columns) < 7:
+           print inname + ': ' + str(i) + ':warning: not enough cols\n'
+           continue
+       if len (columns) > 7:
+           print inname + ': ' + str(i) + ':warning: too many cols\n'
+           continue
+
+    table.close ()
+    footer (html)
+    html.close ()
+
+def convert_tex (inname, outname, separator):
+    # urg, again?
+    from flower import *
+    table = File (inname)
+    # ugh
+    html = File (outname, 'w')
+
+    i = 0
+    while not table.eof ():
+       line = table.readline ()
+       i = i + 1
+       if not len(line):
+           continue
+       columns = split (line, separator)
+       if len (columns) < 7:
+           print inname + ': ' + str(i) + ':warning: not enough cols\n'
+           continue
+       if len (columns) > 7:
+           print inname + ': ' + str(i) + ':warning: too many cols\n'
+           continue
+
+       html_line =  '\\tableentry{' + join (columns, '}{') + '}\n'
+       html.write (html_line)
+    table.close ()
+    html.close ()
+
+def main ():
+    identify ()
+    (options, files) = getopt.getopt (
+       sys.argv[1:], 'to:hp:s:', ['help', 'latex', 'output=', 'package=', 'separator='])
+    latex = 0
+    separator = ':'
+    output = ''
+    for opt in options:
+       o = opt[0]
+       a = opt[1]
+       if o == '--separator' or o == '-s':
+           separator = a
+       elif o== '--help' or o == '-h':
+           help ()
+       elif o=='--latex' or o == '-t':
+           latex = 1
+       elif o == '--output' or o == '-o':
+           output = a
+       elif o == '--package' or o == '-p':
+           topdir=a
+       else:
+           print o
+           raise getopt.error
+
+    sys.path.append (topdir + '/stepmake/bin')
+    from packagepython import *
+    package = Package (topdir)
+    packager = Packager ()
+
+    from flower import *
+
+    if latex:
+       convert_tex (files[0], output, separator)
+    else:
+       convert_html (files[0], output, separator)
+
+main ()
+
diff --git a/stepmake/bin/update.py b/stepmake/bin/update.py
new file mode 100644 (file)
index 0000000..60521ae
--- /dev/null
@@ -0,0 +1,173 @@
+#!@PYTHON@
+
+# update.py -- update current source tree
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+
+program_name = 'update'
+version = '0.1'
+
+import os
+import sys
+
+sys.path.append ('@abs-step-bindir@')
+sys.path.append (os.environ['HOME'] + '/usr/src/lilypond/stepmake/bin')
+
+import getopt
+from string import *
+import regex
+import regsub
+import time
+
+def program_id ():
+    return program_name + ' version ' + version;
+
+def identify ():
+    sys.stdout.write (program_id () + '\n')
+
+def help ():
+    sys.stdout.write ("Usage: %s [OPTION]...\n"
+                      "Update sourcetree\n\n"
+                      + "Options:\n"
+                     + "  -f, --file=FILE      specify patch file\n"
+                      + "  -h, --help           print this help\n"
+                     + "  -p, --package=DIR    specify package\n"
+                     + "  -v, --version=VER    specify patch version\n"
+                      % (program_name)
+                     )
+    sys.exit (0)
+
+identify ()
+(options, files) = getopt.getopt (
+    sys.argv[1:], 'f:hp:v:', ['file=', 'help', 'package=', 'version='])
+patch=''
+ver=''
+for opt in options:
+    o = opt[0]
+    a = opt[1]
+    if o == '--help' or o == '-h':
+       help ()
+    elif o == '-f' or o == '--file':
+       patch = a
+    elif o == '-p' or o == '--package':
+       topdir = a
+    elif o == '-v' or o == '--version':
+       ver = a
+    else:
+       print o
+       raise getopt.error
+
+sys.path.append (topdir + '/stepmake/bin')
+from packagepython import *
+package = Package (topdir)
+packager = Packager ()
+
+from flower import *
+
+def read_patch_vector (patch):
+    vec = []
+    pipe = os.popen ('gzip -dc ' + patch)
+    line = pipe.readline ()
+    while line and line != '--state\n':
+       line = pipe.readline ()
+    line = pipe.readline ()
+    while line and line != '++state\n':
+       vec.append (line[:len (line)-1])
+       line = pipe.readline ()
+    pipe.close ()
+    return vec 
+    
+def read_state_vector (states):
+    vec = []
+    file = File (states)
+    while not file.eof ():
+       line = file.readline ()
+       if line:
+           vec.append (line[:len (line)-1])
+    return vec
+
+def read_relevant_state_vector (states, from_str):
+    vec = read_state_vector (states)
+    for i in range (len (vec)):
+       if vec[i] == from_str:
+           return vec[i:]
+    return []
+
+def find_revert (states, patch):
+    for i in range (len (state_vector)):
+       for j in doubles:
+           if j in state_vector[:i+1]:
+               return state_vector[i:]
+    return []
+
+if patch == '' and ver != '':
+    patch = package.patch_dir + '/' + package.name + '-%s.diff.gz' % ver
+if patch == '':
+    if 0:
+       files = os.listdir (package.patch_dir)
+       patches = []
+       for i in files:
+           if regex.search (package.name + '-.*.diff.gz', i) == 0:
+               patches.append (i)
+       # urg: sort
+       patch = package.patch_dir + '/' + patches[len (patches) -1]
+    else:
+       os.chdir (package.patch_dir)
+       pipe = os.popen ('/bin/ls -t1 ' + package.name 
+           + '-*.diff.gz 2> /dev/null')
+       patch = pipe.readline ()
+       patch = patch[:len (patch) -1]
+       pipe.close ()
+       if not patch:
+           raise 'patch not found'
+       patch = package.patch_dir + '/' + patch
+       print patch
+
+os.chdir (package.topdir)
+patch_vector = read_patch_vector (patch)
+print 'patch vector: ' + str (patch_vector)
+from_str = patch_vector[0]
+state_vector = read_relevant_state_vector ('make/STATE-VECTOR', from_str)
+print 'relevant state vector: ' + str (state_vector)
+
+doubles = []
+for i in patch_vector[1:]:
+    if i in state_vector:
+       doubles.append (i)
+print 'doubles: ' + str (doubles)
+
+revert = find_revert (state_vector, patch_vector)
+redo = []
+for i in revert:
+    redo.append (i)
+revert.reverse ()
+
+for i in doubles:
+    redo.remove (i)
+
+if revert or redo or doubles:
+    print 'not smart enough; please do:'
+    print '  * revert: ' + str (revert)
+    print '  * apply: ' + os.path.basename (patch)
+    print '  * redo: ' + str (redo)
+    sys.exit (1)
+
+status = os.system ('echo "gzip -dc %s | patch -p1 -E --force"' % patch)
+if status:
+    raise 'apply patch failed'
+
+sys.stdout.write ('checking...')
+rejects = my_find (['*.rej'], '.')
+if len (rejects):
+    print 'rejects found:'
+    for i in rejects:
+       print i
+    sys.exit (1)
+print 'ok'
+sys.stdout.write ('cleaning...')
+origs = my_find (['*.orig'], '.')
+for i in origs:
+    os.remove (i)
+print 'ok'
diff --git a/stepmake/make/stepmake.lsm.in b/stepmake/make/stepmake.lsm.in
new file mode 100644 (file)
index 0000000..1e00adf
--- /dev/null
@@ -0,0 +1,15 @@
+Begin3
+Title: StepMake
+Version: @TOPLEVEL_VERSION@
+Entered-date: @DATE@
+Description: @BLURB@
+Keywords: music notation typesetting midi fonts engraving
+Author: janneke@gnu.org (Jan Nieuwenhuizen)
+       hanwen@cs.ruu.nl (Han-Wen Nienhuys)
+Maintained-by: janneke@gnu.org (Jan Nieuwenhuizen)
+Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
+       40k @package@-@TOPLEVEL_VERSION@.tar.gz 
+Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
+       40k @package@-@TOPLEVEL_VERSION@.tar.gz 
+Copying-policy: GPL
+End
diff --git a/stepmake/make/stepmake.spec.in b/stepmake/make/stepmake.spec.in
new file mode 100644 (file)
index 0000000..ded7146
--- /dev/null
@@ -0,0 +1,26 @@
+Name: @package@
+Version: @TOPLEVEL_VERSION@
+Release: 1
+Copyright: GPL
+Group: Development
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/@package@-@TOPLEVEL_VERSION@.tar.gz
+Summary: generic make package
+Packager: janneke@gnu.org (Jan Nieuwenhuizen)
+Buildroot: /tmp/stepmake-install
+
+%description 
+@BLURB@
+
+%prep
+%setup
+%build
+./configure --prefix=/usr
+make all
+%install
+rm -rf $RPM_BUILD_ROOT
+make prefix="$RPM_BUILD_ROOT/usr" install
+%files
+# urg
+/usr/bin/make-patch
+%post
+