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)
--- /dev/null
+
+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)
+
--- /dev/null
+
+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)
+
--- /dev/null
+
+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)
+
--- /dev/null
+; 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
+ ))
--- /dev/null
+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!
--- /dev/null
+#!@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 = {'è':'è', }
+chars = {
+'á':'á',
+'â':'â',
+'æ':'æ',
+'Ã ':'à',
+'Ã¥':'å',
+'ã':'ã',
+'ä':'ä',
+
+'ç':'ç',
+
+'é':'é',
+'ê':'ê',
+'è':'è',
+'ë':'ë',
+
+'Ã':'í',
+'î':'î',
+'ì':'ì',
+'ï':'ï',
+
+'ñ':'ñ',
+
+'ó':'ó',
+'ô':'ô',
+'ò':'ò',
+'ø':'ø',
+'õ':'õ',
+'ö':'ö',
+
+'ú':'ú',
+'û':'û',
+'ù':'ù',
+'ü':'ü'
+}
+
+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 ()
+
+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.
--- /dev/null
+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>
--- /dev/null
+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>
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:
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
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.
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
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>
*/
--- /dev/null
+/*
+ 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 ());
+}
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)
{
}
#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);
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
+
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"
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;
}
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++;
}
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"
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>
{
return !plet_.unit_b ();
}
+
//
// 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
/*
- 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>
*/
#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)
*/
//
// 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
/** 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;
//
// 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
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_ ;
};
--- /dev/null
+/*
+ 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 */
+
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
*/
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
}
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;
}
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)
{
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 ()
{
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
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;
}
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"
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;
{
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]));
}
}
}
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;
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);
}
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"
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"
}
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;
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"
}
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*
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)
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"
#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);
}
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>
#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"
#include "lookup.hh"
#include "grouping.hh"
#include "stem-info.hh"
-#include "main.hh" // experimental features
IMPLEMENT_IS_TYPE_B1 (Beam, Spanner);
}
void
-Beam::add (Stem*s)
+Beam::add_stem (Stem*s)
{
stems_.push (s);
s->add_dependency (this);
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);
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
}
{
if (stems_.size () < 2)
{
- warning (_ ("Beam with less than 2 stems"));
+ warning (_ ("beam with less than two stems"));
transparent_b_ = true;
return ;
}
}
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
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++)
{
{
// 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;
}
}
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;
{
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);
}
}
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;
{
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?
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>
#ifndef STANDALONE
#include "direction.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "paper-def.hh"
#include "debug.hh"
#include "main.hh"
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;
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"
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"))
{
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;
}
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
{
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
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
{
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);
+}
+
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 ();
+}
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>
*/
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:
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
Abbreviation_beam();
- SCORE_ELEM_CLONE(Abbreviation_beam);
+ SCORE_ELEMENT_CLONE(Abbreviation_beam);
protected:
virtual void do_print() const;
/*
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
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;
/*
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
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 {
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;
};
/*
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
#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_;
/*
bezier.hh -- declare Bezier and Bezier_bow
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef BEZIER_HH
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 ();
/*
curve.hh -- declare point and curve
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef CURVE_HH
#include "real.hh"
#include "offset.hh"
-#include "varray.hh"
+#include "array.hh"
class Curve : public Array<Offset>
{
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
/*
- 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);
protected:
virtual void create_line_spanner ();
+ void typeset_element (Score_element*);
};
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
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_;
};
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
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 "lily-proto.hh"
#include "performer.hh"
-#include "varray.hh"
+#include "array.hh"
class Lyric_performer : public Performer {
public:
--- /dev/null
+/*
+ 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
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
/*
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
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_;
/*
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
/*
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
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
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
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
/*
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
/*
performance.hh -- declare Performance
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef PERFORMANCE_HH
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);
/*
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
/*
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"
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
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*);
/*
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
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&);
};
/*
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
--- /dev/null
+/*
+ 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
/*
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
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
--- /dev/null
+/*
+ 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
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"
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;
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"
{
#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;
}
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;
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'},
{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}
};
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
#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"
"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)
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 ();
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);
}
}
+ 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;
}
+
--- /dev/null
+/*
+ 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;
+ }
+}
+
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>
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"
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);
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)
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;
}
String str;
while (1)
{
- str += (char)buffer_i;
+ str += to_str ((char)buffer_i);
if (buffer_i & 0x80)
buffer_i >>= 8;
else
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";
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_;
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;
}
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;
}
//
// 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"
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_));
}
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"
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;
{
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);
}
}
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);
}
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>
return iv;
}
-
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)
{
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
/*
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"
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_)
|| 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 ();
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_;
}
}
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#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"
* 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);
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;
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;
}
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;
}
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>
}
void
-Performance::add (Audio_column* p)
+Performance::add_column (Audio_column* p)
{
p->performance_l_ = this;
audio_column_p_list_.bottom().add (p);
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);
}
void
-Performance::add (Audio_element *p)
+Performance::add_element (Audio_element *p)
{
audio_elem_p_list_.bottom().add (p);
}
{
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);
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"
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>
*/
/*
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"
}
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;
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)
return false;
}
- Plet_req* p = mus_l->plet ();
+ Plet_req* p = mus_l->access_Plet_req ();
if (!p)
return false;
{
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;
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
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;
}
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"
visibility_i_ = 3;
tdef_p_ = new Text_def;
- tdef_p_->align_i_ = CENTER;
+ tdef_p_->align_dir_ = CENTER;
tdef_p_->style_str_ = "italic";
}
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;
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;
}
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_;
}
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;
}
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>
#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"
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"
{
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
{
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 ();
}
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>
*/
/*
#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"
}
void
-Slur::add (Note_column*n)
+Slur::add_column (Note_column*n)
{
encompass_arr_.push (n);
add_dependency (n);
}
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);
}
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);
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);
--- /dev/null
+/*
+ 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;
+ }
+}
+
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"
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_))
{
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));
--- /dev/null
+/*
+ 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;
+}
+
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
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
% 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
%
% 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;
%
% 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>
%
% 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";
% 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";
% 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>
% music font
%
% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-% Jan Nieuwenhuizen <jan@digicash.com>
+% Jan Nieuwenhuizen <janneke@gnu.org>
%
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;
% 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
%
% 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
//
// 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
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
//
// 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
//
// 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
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();
private:
int useconds_per_4_i_;
- Real seconds_per_1_f_;
+ Moment seconds_per_1_mom_;
};
class Mudela_text : public Mudela_item
//
// 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
// ugh
Mudela_key* mudela_key_l_;
- Mudela_meter* mudela_meter_l_;
+ Mudela_time_signature* mudela_time_signature_l_;
Mudela_tempo* mudela_tempo_l_;
private:
//
// 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
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_;
//
// 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?
#include "mi2mu-proto.hh"
#include "string.hh"
+#include "scalar.hh"
/// Lily output
class Mudela_stream {
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:
//
// 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
//
-// 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;
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"
+ );
;
}
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'},
case 'b':
Duration_convert::no_quantify_b_s = true;
break;
- case 'd':
+ case 'D':
level_ver = DEBUG_ver;
break;
case 'h':
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':
//
// 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;
}
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>
{
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);
void
Midi_parser::warning (String str)
{
- ::message (message (String (_("warning: ")) + str));
+ ::message (message (String (_ ("warning: ")) + str));
}
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"
{
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;
{
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"));
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);
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 );
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);
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>
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
if (!eot())
return 0;
- // vangnet
+ // catch-all
note_end_all (col_l);
Mudela_staff* p = mudela_staff_p_;
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
// DATA_ENTRY [\x60-\x79]
if ((byte >= 0x60) && (byte <= 0x79))
{
- next_byte ();
+ next_byte ();
}
// ALL_NOTES_OFF [\x7a-\x7f]
else if ((byte >= 0x7a) && (byte <= 0x7f))
/*
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);
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
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))
{
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;
{
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_;
}
//
// mudela-column.cc -- implement Mudela_column
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#include "mudela-column.hh"
//
// 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"
#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);
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;
}
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_)
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";
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;
}
void
Mudela_score::filter_tempo()
{
- LOGOUT(NORMAL_ver) << _("\nNOT Filtering tempo...") << endl;
+ LOGOUT(NORMAL_ver) << '\n' << _ ("NOT Filtering tempo...") << endl;
}
void
// 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);
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;
}
}
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());
//
// 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>
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;
}
}
else if (i.ok())
i++;
- LOGOUT(DEBUG_ver) << "mom: " << mom.str () << "\n";
+ LOGOUT(DEBUG_ver) << "mom: " << mom.str () << '\n';
}
}
{
if (name_str_.length_i())
return name_str_;
- return String ("track") + String (number_i_);
+ return String ("track") + to_str (number_i_);
}
void
{
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
}
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)
{
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';
}
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;
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;
//
// 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"
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;
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';
}
// 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"
--- /dev/null
+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
+
--- /dev/null
+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 ""
--- /dev/null
+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 ""
--- /dev/null
+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"
--- /dev/null
+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.
+)
+
--- /dev/null
+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
+
--- /dev/null
+#!/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
+
+
--- /dev/null
+#!@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 ()
+
--- /dev/null
+#!@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'
--- /dev/null
+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
--- /dev/null
+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
+