@node Top, , , (dir)
@top
+@contents
+
@chapter INSTALL - compiling and installing GNU LilyPond
-@section Downloading source code
+
+This document describes how to build LilyPond on Unix platforms. It is
+also known to run and compile on Windows NT/95/98 as well. More
+information on this topic can be found at the
+@uref{ftp://ftp.lilypond.org/pub/LilyPond/gnu-windows/, LilyPond on Windows
+page}.
+
@html
<a name="download-source">
@end html
+@section Downloading
+
+Even numbered versions are `stable'. The webpages for the stable version
+(1.2) reside @uref{http://www.gnu.org/software/lilypond, on the GNU
+servers}. Big enhancements go into the latest odd numbered version
+(1.3), whose webpages are on @uref{http://www.lilypond.org/,the lilypond
+site}.
+
+@subsection source code
+
+
If you want to compile LilyPond from source, download here:
@itemize @bullet
-@item Download stable releases at
-@uref{ftp://ftp.gnu.org/gnu/lilypond/,GNU}
@item Download development releases from
-@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/, by FTP} and
-@uref{http://ftp.cs.uu.nl/pub/GNU/LilyPond/development/, by HTTP}.
-@item @uref{ftp://sca.uwaterloo.ca/pub/, ftp (Canadian mirror)}
-@item at @code{lilypond.org} by
-@uref{ftp://ftp.lilypond.org/pub/LilyPond/, FTP} and
-@uref{http://www.lilypond.org/ftp/, HTTP}.
+@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/} by FTP and
+@uref{http://ftp.cs.uu.nl/pub/GNU/LilyPond/development/}, by HTTP.
+@item @uref{ftp://sca.uwaterloo.ca/pub/} by FTP (Canadian mirror)
+@item at @code{lilypond.org}
+@uref{ftp://ftp.lilypond.org/pub/LilyPond/} by FTP and
+@uref{http://www.lilypond.org/ftp/} by HTTP.
@end itemize
-Installing and compiling requires many additional packages, which are
-listed in the @uref{Documentation/topdocs/out-www/INSTALL.html,
-installation instructions}.
+@html
+<a name="download-binaries">
+@end html
-@section Downloading binaries
-@html
-<a name="download-binary">
-@end html
+@subsection Binaries
+
Binaries are available, but are not updated for every version released.
@itemize @bullet
-@item @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/, RedHat i386}
-@item @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/linuxppc, LinuxPPC}
+@item @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/binaries/RedHat/RPMS/, RedHat i386}
+@item @uref{ftp://ftp.lilypond.org/pub/LilyPond/binaries/linuxppc, LinuxPPC}
@item
@uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond,
Debian GNU/Linux Stable}
@uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond1.3,
Debian GNU/Linux Unstable}
@item @uref{http://home.austin.rr.com/jbr/jeff/lilypond/, Windows Stable}
-@item @uref{ftp://ftp.lilypond.org/pub/lilypond/gnu-windows, Windows
-Testing}
-@end itemize
-
+@c @item @uref{ftp://ftp.lilypond.org/pub/lilypond/gnu-windows, Windows
+@c Testing}
+@uref{http://www.lilypond.org/gnu-windows, Windows Testing}
+@end itemize
-@section Upgrading
+@subsection Upgrading
There are two options for upgrading sources.
@end example
@end itemize
-@section Build requirements
+@section Requirements
-This document describes how to build LilyPond on Unix platforms. It is
-also known to run and compile on Windows NT/95/98 as well. More
-information on this topic can be found at the
-@uref{ftp://ftp.lilypond.org/pub/LilyPond/gnu-windows/, LilyPond on Windows
-page}.
+@subsection Compilation
You need the following packages to compile Lilypond.
@end itemize
-@section Running requirements
+@subsection Running requirements
GNU LilyPond does use a lot of resources. For operation you need the
following software
LilyPond is a big and slow program. A fast CPU and plenty of RAM is
recommended for comfortable use.
-@section Website requirements
+@subsection Website requirements
The documentation comes in the form of a website. You can view this
website on the internet, but you can also build it locally. This process
@end itemize
-@section Configuring and compiling
+@section Building LilyPond
to install GNU LilyPond, type:
@example
-@section Configuring for multiple platforms
+@subsection Configuring for multiple platforms
If you want to build multiple versions of LilyPond with different
configuration settings, you can use the @code{--enable-config=CONF}
-
-
@section Emacs mode
An emacs mode for LilyPond is included with the source archive as
an RPM, it is in @file{/usr/share/doc/lilypond-X/}. You have to install
it yourself.
-Add this to your ~/.emacs or ~/.emacs.el:
+Add this to your @file{~/.emacs} or @file{~/.emacs.el}:
@example
(load-library "lilypond-mode.el")
(setq auto-mode-alist
If you have the latest LilyPond-1.3.x Debian package, LilyPond-mode is
automatically loaded, so you need not modify your @code{~/.emacs} file.
+@section Compiling for distributions
-@section Red Hat Linux
+@subsection Red Hat Linux
Red Hat 7.0 i386 RPMS are available from
@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/}.
You can also compile them yourself. A spec file is in
-@file{make/out/lilypond.spec}. This file is distributed along with the
+@file{make/out/redhat.spec}. This file is distributed along with the
sources. You can make the rpm by issuing
@example
@end example
For running on a Red Hat system you need these packages: guile, tetex,
-tetex-dvips, libstdc++, python, ghostscript.
+tetex-latex, tetex-dvips, libstdc++, python, ghostscript.
For compilation on a Red Hat system you need these packages, in addition
to the those needed for running: glibc-devel, gcc-c++, libstdc++-devel,
-guile-devel, flex, bison, texinfo, tetex-devel, groff, libgr-progs.
+guile-devel, flex, bison, texinfo, tetex-devel, groff,
+libgr-progs.
-@section SuSE
+@subsection SuSE
-[TODO: document this]
-
-Install @code{tetex}, @code{te_mpost}, @code{te_kpath}.
+You can also compile them yourself. A spec file is in
+@file{make/out/suse.spec}. This file is distributed along with the
+sources.
+You must have the following packages: guile tcsh tetex te_latex te_kpath
+te_mpost libpng python gpp libgpp gettext autoconf netpbm libnetpb
+gs_serv gs_lib gs_fonts guile
-@section Mandrake
+@subsection Mandrake
[TODO]
-@section Debian GNU/Linux
+@subsection Debian GNU/Linux
A Debian package is also available. You may install it easily by using
apt-get as root:
Bugs that are not fault of LilyPond are documented here.
-@unnumbered NetBSD
+@unnumberedsubsec NetBSD
@itemize @bullet
@item The flex precompiled in NetBSD-1.4.2 is broken.
@end itemize
-@unnumbered Solaris:
+@unnumberedsubsec Solaris:
@itemize @bullet
@item Sparc64/Solaris 2.6, GNU make-3.77
GNU make-3.77 is buggy on this platform, upgrade to 3.78.1 or newer.
-
@item Sparc64/Solaris 2.6, ld
Not yet resolved.
@end itemize
-@unnumbered AIX
+@unnumberedsubsec AIX
@itemize @bullet
@item AIX 4.3 ld
@end html
-@unnumberedsec What is LilyPond?
+@unnumberedsec What is LilyPond? What can it do for you?
-@c also use keywords: music notation software
-LilyPond is a music typesetter. It produces beautiful sheet music
-using a high level description file as input. It excels at typesetting
-classical music, but you can also print pop-songs. With LilyPond we
-hope to make music publication software available to anyone on the
-internet.
+LilyPond prints music notation. It produces beautiful sheet music from
+a description file. It excels at typesetting classical music, but you
+can also print pop-songs.
-@unnumberedsec Why should I use it?
-
-The input to LilyPond is plain text. So, you can use your favorite text
+LilyPond input is @b{plain text}. So, you can use your favorite text
editor to enter it, you can put it in mail or embed it in an article like
this:
-
-
-@lilypond[fragment,verbatim]
-\relative c'' { \key c \minor r8 c16 b c8 g as c16 b c8 d | g,4 }
+@lilypond[fragment,verbatim, relative 1]
+ \key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
@end lilypond
+Or you can use it to print music from other programs, using one of the
+numerous input filters.
-The output looks very good: the font and the layout algorithms were
-inspired by engraved music, so you can expect that same clear and
+LilyPond output looks @b{beautiful}. The font and the layout algorithms
+were inspired by engraved music, so you can expect that same clear and
elegant look from your LilyPond output. And if you don't like the
looks, you can tweak almost everything.
-The program also has limited MIDI functionality: you can write MIDI
-files with lilypond. You can also import files in PMX, MUP, MIDI, ABC,
-Finale and Musedata format.
-
-LilyPond is free software. It is licensed under GNU General Public
-License, so you can use, modify and redistribute the program with
-almost no restrictions. LilyPond is part of the
-@uref{http://www.gnu.org/,GNU Project}.
-
-The version numbers are in Linux-kernel style: even numbered versions
-are `stable'. The webpages for the stable version (1.2) reside
-@uref{http://www.gnu.org/software/lilypond, on the GNU servers}. Big
-enhancements go into the latest odd numbered version (1.3), whose
-webpages are on @uref{http://www.lilypond.org/,the lilypond site}.
-Information on the latest and greatest features can be found in the
-@uref{Documentation/out-www/CHANGES.html, Change Log}.
-
-If want more information, you can browse the
-@uref{Documentation/user/out-www/lilypond.html, manual} or other
-@uref{Documentation/out-www/index.html, documentation}.
-
-@html
-<a name="music">
-@end html
-@unnumberedsec Sheet music
-
-
-If you are interested in sheet music typeset by LilyPond, have a look at
-the examples included. We have @uref{short-examples.html,short
-examples} and @uref{long-examples.html,longer examples}. The
-examples include sound bites in MIDI, pictures in PNG, printable scores
-in PostScript, and LilyPond input. Others use LilyPond too, and have put
-scores on the web. Head over to @uref{http://appel.lilypond.org/wiki?DownloadLilyPondScores}
-
-
-@html
-<a name="mailing-lists">
-@end html
-@unnumberedsec Mailing lists
-
-If you have questions, do write to the mailing lists. But don't forget
-to read the @uref{Documentation/topdocs/out-www/FAQ.html,Very Frequently
-Asked Questions} and @uref{http://appel.dyndns.org/wiki?LilyPondFaqs,
-Frequently Asked Questions} first.
-
-
-@itemize @bullet
-@item @uref{http://mail.gnu.org/mailman/listinfo/info-gnu-music,info-gnu-music@@gnu.org}
-is a low-volume list for information on the GNU Music project.
- This list is moderated; ask
- @email{drl@@gnu.org, David R. Linn} or
- @email{hanwen@@cs.uu.nl, Han-Wen} to send announcements for this list.
-@item @uref{http://mail.gnu.org/mailman/listinfo/help-gnu-music,help-gnu-music@@gnu.org}
- For help with using LilyPond.
-@item @uref{http://mail.gnu.org/mailman/listinfo/bug-gnu-music,bug-gnu-music@@gnu.org}
-If you have bugreports, you should send them to this list.
-
-
+LilyPond is @b{free software}. It is part of the
+@uref{http://www.gnu.org/,GNU Project}. It is licensed under GNU General
+Public License, so you can use, modify and redistribute the program with
+almost no restrictions. LilyPond is part of the
- Please include in your bugreport the version of LilyPond that
-you experience the problem with, a description of your system and sample
-input to reproduce the problem. Do not send output files over the list,
-they tend to be very big and don't help with describing the problem.
+@unnumberedsec Want to know more?
+If you want to know more, visit the
+@uref{Documentation/out-www/index.html, documentation page}. If you want
+to see some sheet music, then have a look at the examples: we have
+@uref{short-examples.html,short examples} and
+@uref{long-examples.html,longer examples}. For even more sheet music,
+head over to @uref{http://www.mutopiaproject.org, the mutopia project}.
-@item @uref{http://mail.gnu.org/mailman/listinfo/gnu-music-discuss,gnu-music-discuss@@gnu.org}
- For discussions concerning LilyPond.
-@end itemize
-These pages were entirely created from a @strong{development snapshot}
-of the LilyPond package. The version of this webpage is printed at the
-bottom.
@bye
Until now, installing LilyPond on Windows was
@uref{http://mail.gnu.org/pipermail/help-gnu-music/2001-April/000620.html,
almost} a dull process that could easily be @uref{
-ftp://ftp.lilypond.org/pub/LilyPond/gnu-windows/latest/bin/tar/lily-install-0.6-i686-cygwin.bin.tar.gz,
+ftp://appel.lilypond.org/pub/gnu-windows/cygwin-1.1.7/bin/tar/lily-install-0.7-1.tar.gz,
automated} and scripted. This meant that you would have more time left
for actual work, and we all know that's not what computers were designed
for.
ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/mirrors/cygnus/snapshots/cygwin-src-20010410.tar.bz2,
Windows installer}.
No
-@uref{http://appel.lilypond.org/lilypond/gnu-windows/tar/lilypond/md5.sum,
+@uref{http://www.lilypond.org/gnu-windows/tar/lilypond/md5.sum,
difficult checksums} or signatures. Enjoy the the thrills of running
-@uref{ftp://ftp.lilypond.org/pub/LilyPond/gnu-windows/latest/setup.exe,
+@uref{http://www.lilypond.org/gnu-windows/latest/setup.exe,
untrusted binaries} with adminstrator rights, on your painfully
firewalled intranet.
--- /dev/null
+\score {
+ \context Staff \notes\relative c''<
+ \context Voice=one {
+ \voiceOne
+ e2->
+ }
+ \context Voice=two {
+ \voiceTwo
+ f,2->
+ }
+ >
+}
\ No newline at end of file
--- /dev/null
+\header{
+texidoc="running this through ly2dvi, or with -Hheader dumps core"
+tagline="{"
+}
+
+\score {
+ \notes c
+}
\ No newline at end of file
--- /dev/null
+\header {
+texidoc="slur or long note on other staffs fool lily into extending melisma"
+}
+\score {
+ <
+ \addlyrics
+ \notes {
+ \property Staff.automaticMelismata= ##t
+ c4 () c r c
+ }
+ \context Lyrics \lyrics { foo __ bar }
+ \context Staff=foolMelismata \notes{
+ c4 ( c c ) c
+ }
+ \context Staff=foolMelismata \notes{
+ c1
+ }
+ >
+}
\ No newline at end of file
--- /dev/null
+\header {
+texidoc="manual beam override is ignored in first triplet"
+}
+
+\score {
+ \context Voice \notes\relative c'' {
+ \times 2/3 { < [ a8 c > < a c > < a c ] > }
+ \times 2/3 < { [ a8 a a ] } { c c c ] } >
+ }
+}
(c) 1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
*/
+
+/*
+ Two shift/reduce problems:
+ -
+ -
+ */
+
#include <ctype.h>
#include <iostream.h>
steno_duration {
$$ = $1;
}
- | steno_duration '*' bare_unsigned {
+ | multiplied_duration '*' bare_unsigned {
$$ = unsmob_duration ($$)->compressed ( $3) .smobbed_copy ();
}
- | steno_duration '*' FRACTION {
+ | multiplied_duration '*' FRACTION {
Moment m (gh_scm2int (gh_car ($3)), gh_scm2int (gh_cdr ($3)));
$$ = unsmob_duration ($$)->compressed (m).smobbed_copy ();
--- /dev/null
+%define info yes
+
+Name: lilypond
+Version: @TOPLEVEL_VERSION@
+Release: 1
+License: GPL
+Group: Applications/Publishing
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz
+Summary: Create and print music notation
+URL: http://www.cs.uu.nl/~hanwen/lilypond
+BuildRoot: /tmp/lilypond-install
+# add lots of Buildreq: flex, bison, tetex, tetex-devel, tetex-latex, texinfo
+# better prereqs: tetex-latex, python, (mpost?) etc.
+Prereq: tetex
+
+
+%description
+LilyPond lets you create music notation. It produces
+beautiful sheet music from a high-level description file.
+
+%package documentation
+Summary: Prebuilt website containing all LilyPond documentation.
+Group: Applications/Publishing
+# BuildArchitectures: noarch
+
+%description documentation
+
+The documentation of LilyPond, both in HTML and PostScript.
+
+%prep
+%setup
+
+%build
+
+# DO NOT use % { configure } , it hardcodes all paths, runs libtool,
+# so we can't do make prefix=/tmp/ install.
+
+# In fact, do not take out the spaces between % and { in the above comment,
+# because RPM will gladly do a substitution anyway.
+
+./configure --disable-checking --disable-debugging --enable-printing --prefix=%{_prefix} --disable-optimise --enable-shared
+
+make all
+
+# ok, now make sure that lilypond package will succeed,
+# even if documentation fails to build
+make -C Documentation || true
+make web || true
+
+%install
+
+
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc
+
+strip lily/out/lilypond midi2ly/out/midi2ly
+make prefix="$RPM_BUILD_ROOT%{_prefix}" install
+
+%if info=="yes"
+gzip -9fn $RPM_BUILD_ROOT%{_prefix}/info/* || true
+%endif
+
+mkdir -p $RPM_BUILD_ROOT/usr/share/emacs/site-lisp/site-start.d
+install -m 644 lilypond-mode.el lilypond-font-lock.el $RPM_BUILD_ROOT/usr/share/emacs/site-lisp/
+install -m 644 lilypond-init.el $RPM_BUILD_ROOT/usr/share/emacs/site-lisp/site-start.d
+
+gzip -9fn $RPM_BUILD_ROOT%{_prefix}/man/man1/* || true
+
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d
+cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.sh
+cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.csh
+
+
+# again, make sure that main package installs even if doco fails
+mkdir -p web/out
+tar -C web -xzf out/web.tar.gz || true
+
+
+%post
+
+touch /tmp/.lilypond-install
+rm `find /var/lib/texmf -name 'feta*pk -print' -or -name 'feta*tfm -print'` /tmp/.lilypond-install
+
+%if info=="yes"
+/sbin/install-info %{_prefix}/info/lilypond.info.gz %{_prefix}/info/dir || true
+%endif
+
+%preun
+
+%if info=="yes"
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete %{_prefix}/info/lilypond.info.gz %{_prefix}/info/dir || true
+fi
+%endif
+
+
+%files
+
+%{_datadir}/emacs/site-lisp/*
+%{_datadir}/emacs/site-lisp/site-start.d/*
+
+%{_prefix}/bin/abc2ly
+%{_prefix}/bin/as2text
+%{_prefix}/bin/convert-ly
+%{_prefix}/bin/etf2ly
+%{_prefix}/bin/lilypond
+%{_prefix}/bin/ly2dvi
+%{_prefix}/bin/midi2ly
+%{_prefix}/bin/lilypond-book
+%{_prefix}/bin/mup2ly
+%{_prefix}/bin/musedata2ly
+%{_prefix}/bin/pmx2ly
+
+%if info=="yes"
+%{_prefix}/info/lilypond.info.gz
+%{_prefix}/info/lilypond-internals.info.gz
+%endif
+
+%{_prefix}/man/man1/abc2ly.1.gz
+%{_prefix}/man/man1/as2text.1.gz
+%{_prefix}/man/man1/convert-ly.1.gz
+%{_prefix}/man/man1/etf2ly.1.gz
+%{_prefix}/man/man1/lilypond.1.gz
+%{_prefix}/man/man1/ly2dvi.1.gz
+%{_prefix}/man/man1/midi2ly.1.gz
+%{_prefix}/man/man1/lilypond-book.1.gz
+%{_prefix}/man/man1/musedata2ly.1.gz
+%{_prefix}/man/man1/mup2ly.1.gz
+%{_prefix}/man/man1/pmx2ly.1.gz
+
+%{_prefix}/share/lilypond/
+%{_prefix}/share/locale/*/LC_MESSAGES/lilypond.mo
+%{_prefix}/../etc/profile.d/lilypond.*
+
+%files documentation
+%doc web/
--- /dev/null
+#
+# spec file for package lilypond (Version 1.3.149)
+# based on
+# spec file for package lilypond (Version 1.2.17)
+# Copyright (c) 2000 SuSE GmbH Nuernberg, Germany.
+#
+# Please send bug reports to schlemme@mathe.tu-freiberg.de
+
+%define info yes
+
+# neededforbuild guile tcsh tetex te_latex te_mpost libpng python gpp libgpp gettext autoconf netpbm libnetpb gs_serv gs_lib gs_fonts guile
+# usedforbuild aaa_base aaa_dir autoconf automake base bash bindutil binutils bison bzip compress cpio cracklib devs diff ext2fs file fileutil find flex gawk gcc gdbm gettext gpm gpp gppshare groff gs_fonts gs_lib gs_serv guile gzip kbd less libc libgpp libnetpb libpng libtool libz lx_suse make mktemp modules ncurses net_tool netcfg netpbm nkita nkitb nssv1 pam patch perl pgp ps python rcs rpm sendmail sh_utils shadow shlibs strace syslogd sysvinit tcsh te_ams te_latex te_mpost tetex texinfo textutil timezone unzip util vim xdevel xf86 xshared guile
+
+
+Distribution: SuSE Linux 7.0 (i386)
+Name: lilypond
+Version: @TOPLEVEL_VERSION@
+Release: 2
+Copyright: GPL
+Group: Applications/Publishing
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz
+# music notation software for.. ?
+Summary: A program for printing sheet music.
+URL: http://www.lilypond.org/
+# rpm: 4.0: broken for -ta builds: rpm doesn't look in tarball for xpm
+# Icon: lilypond-icon.xpm
+BuildRoot: /tmp/lilypond-install
+# add lots of Buildreq: tetex-kpath, te_mpost, bison
+# better prereqs: tetex-latex, python, (mpost?) etc.
+Prereq: tetex python
+
+# use keywords: music notation software
+%description
+LilyPond is a music typesetter. It produces beautiful
+sheet music using a high level description file as input. LilyPond is
+part of the GNU Project.
+
+Authors:
+--------
+ Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
+ Alexandre Oliva <oliva@dcc.unicamp.br>
+ Mats Bengtsson <matsb@s3.kth.se>
+ Eric Bullinger <eric@aut.ee.ethz.ch>
+ Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>
+ Anthony Fok <foka@debian.org>
+ Neil Jerram <nj104@cus.cam.ac.uk>
+ Donald Ervin Knuth
+ Werner Lemberg <wl@gnu.org>
+ David R. Linn <drl@vuse.vanderbilt.edu>
+ François Pinard <pinard@iro.umontreal.ca>
+ Jeffrey B. Reed <daboys@bga.com>
+ Shay Rojanski
+ Tom Cato Amundsen <tca@gnu.org>
+ Laura Conrad <lconrad@world.std.com>
+ James Hammons <jlhamm@pacificnet.net>
+ Bjoern Jacke <bjoern.jacke@gmx.de>
+ Michael Krause <m.krause@tu-harburg.de>
+ David R. Linn <drl@vuse.vanderbilt.edu>
+ Adrian Mariano
+ Stephen Peters <portnoy@ai.mit.edu>
+ Glen Prideaux <glenprideaux@iname.com>
+ Roy R. Rankin <Roy.Rankin@alcatel.com.au>
+ Juergen Reuter <reuterj@ira.uka.de>
+ August S.Sigov <august@infran.ru>
+ Rune Zedeler <rune@zedeler.dk>
+
+SuSE series: ap
+
+%package doc
+Summary: Prebuilt website containing all LilyPond documentation.
+Group: Applications/Publishing
+# BuildArchitectures: noarch
+
+%description doc
+
+The documentation of LilyPond, both in HTML and PostScript.
+
+%define INSTALL install -m755 -s
+%define INSTALL_DIR install -d -m755
+%define INSTALL_DATA install -m644
+%prep
+%setup
+
+%build
+
+#
+
+# DO NOT use % { configure } , it hardcodes all paths, runs libtool,
+# so we can't do make prefix=/tmp/ install.
+
+# In fact, do not take out the spaces between % and { , because RPM will gladly
+# do a substitution anyway.
+
+CFLAGS="$RPM_OPT_FLAGS" ./configure --disable-checking --disable-debugging --enable-printing --prefix=%{_prefix} --enable-optimise --enable-shared
+
+make LDFLAGS=-s "CFLAGS=$RPM_OPT_FLAGS" all
+
+# urg
+# %build doc
+# line 42: second %build
+# ok, now make sure that lilypond package will succeed,
+# even if documentation fails to build
+
+make -C Documentation || true
+make web || true
+
+%install
+
+
+
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc
+
+## this is an ugly hack
+mkdir -p scripts/share/lilypond/tex
+cp tex/titledefs.tex scripts/share/lilypond/tex
+## end of hack
+
+
+strip lily/out/lilypond midi2ly/out/midi2ly
+make prefix="$RPM_BUILD_ROOT%{_prefix}" install
+
+%{INSTALL_DIR} $RPM_BUILD_ROOT/usr/share/texmf/fonts/source/public/lilypond
+(cd $RPM_BUILD_ROOT/usr/share/lilypond \
+ && mv mf/* $RPM_BUILD_ROOT/usr/share/texmf/fonts/source/public/lilypond \
+ && rm -fr mf \
+ && ln -s ../texmf/fonts/source/public/lilypond mf)
+%{INSTALL_DIR} $RPM_BUILD_ROOT/usr/share/texmf/fonts/afm/lilypond
+(cd $RPM_BUILD_ROOT/usr/share/lilypond \
+ && mv afm/* $RPM_BUILD_ROOT/usr/share/texmf/fonts/afm/lilypond \
+ && rm -fr afm \
+ && ln -s ../texmf/fonts/afm/lilypond afm)
+%{INSTALL_DIR} $RPM_BUILD_ROOT/usr/share/texmf/tex/lilypond
+(cd $RPM_BUILD_ROOT/usr/share/lilypond \
+ && mv tex/* $RPM_BUILD_ROOT/usr/share/texmf/tex/lilypond \
+ && rm -fr tex \
+ && ln -s ../texmf/tex/lilypond tex)
+%{INSTALL_DIR} $RPM_BUILD_ROOT/usr/share/texmf/lilypond/ps
+(cd $RPM_BUILD_ROOT/usr/share/lilypond \
+ && mv ps/* $RPM_BUILD_ROOT/usr/share/texmf/lilypond/ps \
+ && rm -fr ps \
+ && ln -s ../texmf/lilypond/ps ps)
+
+
+%if info=="yes"
+gzip -9fn $RPM_BUILD_ROOT%{_prefix}/info/* || true
+%endif
+
+
+
+gzip -9fn $RPM_BUILD_ROOT%{_prefix}/man/man1/* || true
+
+
+
+
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d
+cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.sh
+cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.csh
+
+# urg
+#%install doc
+#line 63: second %install
+# again, make sure that main package installs even if doco fails
+mkdir -p web/out
+tar -C web -xzf out/web.tar.gz || true
+
+%ifos cygwin
+# urg, this symlink doesn't come through on cygwin
+# this is the way symlinks work over there, let's fake one
+rm -f $RPM_BUILD_ROOT%{_prefix}/share/lilypond/cmtfm
+echo '!<symlink>c:\\texmf\\fonts\\tfm\\public\\cm' > $RPM_BUILD_ROOT%{_prefix}/share/lilypond/cmtfm
+%{fix_suffixes}
+%endif
+
+%{?suse_check}
+
+
+%pre
+if [ -d usr/share/lilypond/ps ]; then
+ mv usr/share/lilypond/ps usr/share/lilypond/ps.old
+ echo "please, remove /usr/share/lilypond/ps.old manually."
+fi
+
+%post
+
+touch /tmp/.lilypond-install
+rm `find /var/lib/texmf -name 'feta*pk -print' -or -name 'feta*tfm -print'` /tmp/.lilypond-install
+%if info=="yes"
+/usr/bin/install-info %{_prefix}/info/lilypond.info.gz %{_prefix}/info/dir || true
+%endif
+mkdir -p var/adm/SuSEconfig
+touch var/adm/SuSEconfig/run-texhash
+
+
+%preun
+%if info=="yes"
+if [ $1 = 0 ]; then
+ /usr/bin/install-info --delete %{_prefix}/info/lilypond.info.gz %{_prefix}/info/dir || true
+fi
+%endif
+
+%postun
+mkdir -p var/adm/SuSEconfig
+touch var/adm/SuSEconfig/run-texhash
+
+
+
+%files
+%defattr(-, root, root)
+%doc CHANGES COPYING DEDICATION INSTALL.txt NEWS
+%doc README.txt FAQ.txt AUTHORS.txt VERSION ROADMAP
+%doc buildscripts/
+%doc scripts/
+# hairy to hook it in (possibly non-existing) emacs
+%doc lilypond-mode.el
+%doc lilypond-font-lock.el
+
+%config /etc/profile.d/*
+
+%ifnos cygwin
+%{_prefix}/bin/abc2ly
+%{_prefix}/bin/as2text
+%{_prefix}/bin/convert-ly
+%{_prefix}/bin/etf2ly
+%{_prefix}/bin/lilypond
+%{_prefix}/bin/ly2dvi
+%{_prefix}/bin/midi2ly
+%{_prefix}/bin/lilypond-book
+%{_prefix}/bin/mup2ly
+%{_prefix}/bin/musedata2ly
+%{_prefix}/bin/pmx2ly
+%else
+%{_prefix}/bin
+%endif
+
+%if info=="yes"
+%{_prefix}/info/lilypond.info.gz
+%{_prefix}/info/lilypond-internals.info.gz
+%endif
+
+%{_prefix}/man/man1/abc2ly.1.gz
+%{_prefix}/man/man1/as2text.1.gz
+%{_prefix}/man/man1/convert-ly.1.gz
+%{_prefix}/man/man1/etf2ly.1.gz
+%{_prefix}/man/man1/lilypond.1.gz
+%{_prefix}/man/man1/ly2dvi.1.gz
+%{_prefix}/man/man1/midi2ly.1.gz
+%{_prefix}/man/man1/lilypond-book.1.gz
+%{_prefix}/man/man1/musedata2ly.1.gz
+%{_prefix}/man/man1/mup2ly.1.gz
+%{_prefix}/man/man1/pmx2ly.1.gz
+
+%{_prefix}/share/lilypond/
+%{_prefix}/share/texmf/
+%{_prefix}/share/locale/*/LC_MESSAGES/lilypond.mo
+# urg?
+#%{_prefix}/../etc/profile.d/lilypond.*
+
+%files doc
+# this gets too messy...
+%doc mutopia/
+%doc input/
+%doc web/
+# verbatim include of input: list the directory without issuing a %dir
+
+%changelog -n lilypond
+* Sun Apr 22 2001 - schlemme@mathe.tu-freiberg.de
+- update: 1.3.149
+* Mon Apr 10 2000 - bk@suse.de
+- added suse update config macro
+* Thu Mar 16 2000 - kukuk@suse.de
+- Use gs_serv, not gs_both (doesn't exist on all platforms)
+* Wed Mar 01 2000 - uli@suse.de
+- moved man pages to /usr/share
+* Tue Dec 21 1999 - ke@suse.de
+- add documentation (#271).
+* Mon Dec 13 1999 - ke@suse.de
+- update: 1.2.17.
+- compiler fix (thanks to schwab@suse.de).
+- #271.
+* Mon Oct 25 1999 - ke@suse.de
+- update: 1.2.16.
+* Mon Sep 13 1999 - bs@suse.de
+- ran old prepare_spec on spec file to switch to new prepare_spec.
+* Mon Sep 06 1999 - ro@suse.de
+- update to 1.2.6 to make it compile with new guile
+- various fixes and one hack to make this compile at all
+* Sun Aug 22 1999 - ke@suse.de
+- provide /etc/profile.d scripts.
+- make lily.ps available (thanks to Ulrich Windl).
+* Tue Aug 17 1999 - ke@suse.de
+- update: version 1.2.1.
+* Thu Nov 05 1998 - ke@suse.de
+- use the TDS and provide links from /usr/share/lilypond.
+- install examples via %doc.
+* Wed Oct 28 1998 - ke@suse.de
+- update: version 1.0.17.
+* Fri Aug 07 1998 - ke@suse.de
+- initial package: version 1.0.0
poet = "Text by Ludwig Rellstab (1799-1860)"
enteredby = "JCN"
copyright = "public domain"
- instrument = \instrument
+ % instrument = \instrument
% mutopia headers.
mutopiatitle = "Standchen"
copyright = "Public Domain"
maintainer = "Jan Nieuwenhuizen"
maintainerEmail = "janneke@gnu.org"
- lastupdated = "2001/Mar/26"
- mutopiapublicdomain = "\\parbox{\hsize}{\\thefooter\\quad\\small
+ lastupdated = "2001/Apr/26"
+ mutopiapublicdomain = "\\parbox{\\hsize}{\\thefooter\\quad\\small
\\\\This music is part of the Mutopia project,
\\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset
and placed in the public domain by " + \maintainer +
".\\\\Unrestricted modification and redistribution is permitted
and encouraged---copy this music and share it.}"
tagline = \mutopiapublicdomain
- footer = "Mutopia-2001/03/26-xx"
+ footer = "Mutopia-2001/04/26-xx"
}
\version "1.3.146"
R2. |
g8. b16 es4. d8 |
c8. g16 es4. c8 |
- % CHECK
- % \grace { as'16 bes } \times 2/3 { [ )as8( )g] as } c4. as8 |
- \grace { as'16( bes } \times 2/3 { [ )as8( )g] as } c4. as8 |
+ \grace { [ as'32( bes ] } \times 2/3 { [ )as8( )g] as } c4. as8 |
g2. |
- \grace { f16( g } \times 2/3 { [ )f8( )e] f } as4. f8 |
+ \grace { [ f32( g ] } \times 2/3 { [ )f8( )e] f } as4. f8 |
es!2. |
g8. b16 es4. d8 |
c8. g16 e4. c8 |
- \grace { a'16( b } \times 2/3 { [ )a!8( ) gis] a } c4. a8 |
+ \grace { [ a'32( b ] } \times 2/3 { [ )a!8( ) gis] a } c4. a8 |
g!2. |
\times 2/3 { [ d'8\f( )cis] d } f4. b,8 |
c!2. |
a8. b16 c4-> a8 r |
R2. |
R2. |
- \grace { a16( b } \times 2/3 { [ )a!8( ) gis] a } c4. a8 |
+ \grace { [ a32( b ] } \times 2/3 { [ )a!8( ) gis] a } c4. a8 |
g!2. |
\times 2/3 { [ d'8\f( )cis] d } f4. b,8 |
c!2. ~ |
+ % bug: slur on other staff fools lily into extending melisma
c4 r c |
as2. |
g |
}
lyricVerseOne = \lyrics{
- Lei- se fleh- en mei- ne Lie- der
- Durch die Nacht zu dir
- In den stil- len Hain her- nie- der
- Lieb- chen, komm zu mir!
+ Lei -- se fle -- hen mei -- ne Lie -- der
+ durch die Nacht zu dir;
+ in den stil -- len Hain her nie -- der,
+ Lieb -- chen, komm zu mir!
- Fl\"us- ternd schlan- ke Wip- fel rau- schen
- In des Mon- des Licht,
- In des Mon- des Licht
+ Fl\"us -- ternd schlan -- ke Wip -- fel rau -- schen
+ in des Mon -- des Licht,
+ in des Mon -- des Licht;
- Des Ver- r\"a- ters feind- lich Lau- schen
- F\"urch- te, Hol- de, nicht,
- F\"urch- te, Hol- de, nicht.
+ des Ver -- r\"a -- ters feind -- lich Lau -- schen
+ f\"urch -- te, Hol -- de, nicht,
+ f\"urch -- te, Hol -- de, nicht.
}
lyricVerseTwo = \lyrics{
- H\"orst die Nach- ti- gal- len schla- gen?
- Ach! sie fleh- en dich,
- Mit der T\"o- ne s\"u- "\ss en" Kla- gen
- Fleh- en sie f\"ur mich.
+ H\"orst die Nach -- ti -- gal -- len schla -- gen?
+ ach! sie fle -- hen dich,
+ mit der T\"o -- ne s\"u -- "\ss en" Kla -- gen
+ fle -- hen sie f\"ur mich.
- Sie- ver- "steh'n" des Bus- ens Seh- nen
- Ken- nen Lieb- es- schmerz,
- Ken- nen Lieb- es- schmerz.
+ Sie -- ver -- "steh'n" des Bu -- sens Seh -- nen,
+ ken -- nen Lieb -- es -- schmerz,
+ ken -- nen Lieb -- es -- schmerz,
- R\"uh- ren mit den Sil- ber- t\"o- nen
- Jed- es wei- che Herz,
- Jed- es wei- che Herz.
+ r\"uh -- ren mit den Sil -- ber -- t\"o -- nen
+ jed -- es wei -- che Herz,
+ jed -- es wei -- che Herz.
}
lyricThrough = \lyrics{
- La\ss auch dir die Brust be- we- gen
- Lieb- chen, h\"o- re mich!
- Be- bend harr' ich dir ent- ge- gen!
+ La\ss auch dir die Brust be -- we -- gen
+ Lieb -- chen, h\"o -- re mich!
+ be -- bend harr' ich dir ent -- ge -- gen!
- Komm, be- gl\"uk- ke mich!
- Komm, be- gl\"uk- ke mich, __
- Be- gl\"uk- ke mich!
+ komm, be -- gl\"uk -- ke mich!
+ komm, be -- gl\"uk -- ke mich, __
+ be -- gl\"uk -- ke mich!
}
trebleIntro = \notes\relative c{
r8 <as-. c-.> <c-. es-.> <as-. c-.> <c-. es-.> <as-. c-.> |
r8 <as-. c-.> <c-. d-.> <as-. c-.> <c-. d-.> <as-. c-.> |
r8 <g-. b-.> <b-. d-.> <g-. b-.> <b-. d-.> <g-. b-.> |
- \break
}
trebleVerseOne = \notes\relative c{
r8 <f g b> <g b d> <f g b> <g b d> <f g b> |
r8 <es g c> <g c es> <es g c> <g c es> <es g c> |
<g''4.( b,> <)f8 d>
- \times 2/3 { < [ f( d> <es c> <)d b] > } |
+ % manual beam override bug
+ %\times 2/3 { < [f( d> <es c> <)d b] > } |
+ \times 2/3 < { [ f( es )d ] } { d c b } > |
%10
<c2. es> |
r8 <g, c> <c es> <g c> <c es> <g c> |
r8 <f c'> <c' d> <f, c'> <c' d> <f, c'> |
- r8 <f as bes> <as bes d> <f g bes> <as bes d> <f g bes> |
- r8 <es g bes> <g bes es> <es g bes> <g bes es>
- <{ es'( ) d4.() f8}{ c' | bes4. as8 } >
- \times 2/3 { < [f( as> <es g> <)d f] > } |
+ r8 <f as bes> <as bes d> <f g bes> <as bes d> <f as bes> |
+ % manual beam override bug
+ % r8 < [ es g bes> <g bes es> <es g bes> <g bes es ] >
+ r8 < { [ es g es g ] } { g bes g bes } { bes es bes es } >
+ <{ es'( ) d4.() f8}{ c' | bes4. as8 } >
+ % manual beam override bug
+ % \times 2/3 { < [f( as> <es g> <)d f] > } |
+ \times 2/3 < { [ f( es )d ] } { as g f } > |
%16
<es2. g> |
r8 <f, g> <g b> <f g> <g b> <f g> |
r8\pp <es as c> <as c es> <es as c> <as c es> <es as c> |
%20
r8 <es g bes> <g bes es> <es g bes> <g bes es> <es g bes> |
- \grace { as'16( bes } \times 2/3 { [ )as8( g as] } c4.-> ) as8 |
+ \property Voice.Slur \override #'attachment = #'(stem . stem)
+ \grace { [ as'32( bes ] } \times 2/3 { [ )as8( g as] } c4.-> ) as8 |
+ \property Voice.Slur \revert #'attachment
g2. |
r8 <f, g> <g b> <f g> <g b> <f g> |
r8 <e g> <g c> <e g> <g c> <e g> |
r8 <f a c> <a c f> <f a c> <a c f> <f a c> |
r8 <e g c> <g c e> <e g c> <g c e> <e g c> |
- \times 2/3 <
- { [ f'8\f( e f] }
- { f' e f } >
+ \times 2/3 < { [ f'8\f( e f] } { f' e f } >
< {a4.- > )f8} { a'4. f8 } > |
}
trebleEentje = \notes \relative c'{
\stemBoth
- <e2 e'> <e4 g>|
- <f2\mf as!(> <as8.->( c> <)f16 )as> |
+ <e2 e'> r4 |
+ <f2\mf as!\(> <as8.->( c> <f16 \))as> |
+ % urg: slurs with staccati are ugly
<e4. g> <e8-. g-.(> <e-. g-.> <e-. )g-.> |
<f4. g> <b,8-. g'-.(> <d-. g-.> <f-. )g-.> |
<e2 g> <e4\pp g> |
- <f2 a(> <a8. c> <f16 )a> |
- <e4. g> <e8-. g-.(> <e-. g-.> <e-. )g-.> |
+ <f2 a\(> <a8.( c> <f16 \))a> |
+ <e4.\( g> <e8-.( g-.> <e-. g-.> <e-. \))g-.> |
<f4. g> <b,8-. g'-.(> <d-. g-.> <f-. )g-.> |
%60
- <e2. g> |
+ <e2 g> r4 |
}
trebleThrough = \notes \relative c'{
<g4. g'> <b8 b'> [<d'8.-> d,-> > c16] |
%65
- < { d,2.\f a'2} { e2. ~ e2 } { b'2. c,2 }> r4 |
+ < { d,2.(\f )a'2} { e2. ~ e2 } { b'2.( )c,2 }> r4 |
\context Staff <
\context Voice=one {
\voiceOne
- a8. b16 c4-> () a8 r |
- a8. b16 c4-> () a8 r |
+ %urg
+ %a8. b16 c4-> () a8 r |
+ a8. b16 c4^> () a8 r |
+ %a8. b16 c4-> () a8 r |
+ a8. b16 c4^> () a8 r |
}
\context Voice=two {
\voiceTwo
r8 <f, a c> <a c f> <f a c> <a c f> <f a c> |
%70
r8 <e g c> <g c e> <e g c> <g c e> <e g c> |
- \times 2/3 < { [ f'8\f( e f] }
- { f' e f }>
+ \times 2/3 < { [ f'8\f( e f] } { f' e f } >
< { a4.-> )f8 } { a'4. f8 } > |
- <e2 e'> r4 |
- <es!2 es'! > r4 |
- \property Voice . TextItem \override #'font-style = #'italic
- <d2_"decresc." d'> r4 |
- \property Voice . TextItem \revert #'font-style
+ <e2. e'> |
+ <es!2. es'! > |
+ \property Voice . TextScript \override #'font-shape = #'italic
+ <d2._"decresc." d'> |
+ \property Voice . TextScript \revert #'font-shape
%75
- <b2 b'> r4 |
+ <b2. b'> |
<c2 c'> <e4\pp g> |
% four copied from begin eentje
<f4. g> <b,8-. g'-.(> <d-. g-.> <f-. )g-.> |
%80
- \property Voice . TextItem \override #'font-style = #'italic
+ \property Voice . TextScript \override #'font-shape = #'italic
<e2._"dim." g> |
- \property Voice . TextItem \revert #'font-style
+ \property Voice . TextScript \revert #'font-shape
<g,2. e' g> |
<g2.-\fermata e' g> |
<g,8 g'> [<g' d'> <d' f> <g, d'> <as-> b-> d->> <b d f>] |
% copied
<g,8 g'> [<g' d'> <d' f> <g, d'> <as-> b-> d->> <b d f>] |
- <g,8 g'> [<g' d' e> <d' f> <g, d'> <gis-> b-> d->> <b d f>] |
+ <g,8 g'> [<g' d'> <d' f> <g, d'> <gis-> b-> d->> <b d f>] |
%65
<gis,8 gis'> [<d''\> e> <e b'> <d e> <e b'> <d\! e>] |
<a,8 a'> [<c' e> <e a> <c e> <e a> <c e>] |
c,8 [<c' e> <e g> <c e> <e g> <c e>] |
c,8 [<c' f> <f as> <c f> <f as> <c f>] |
c,8 [<c' e> <e g> <c e> <e g> <c e>] |
- <g,8 g'> [<g' d'> <d' f> <g, d'> <d' f> <g, d'>] |
+ g,8 [<g' d'> <d' f> <g, d'> <d' f> <g, d'>] |
%80
c,8 [<c' e> <e g> <c e> <e g> <c e>] |
c,8 [<c' g> <e c> <c g> <e c> <c g>] |
global = \notes{
\time 3/4
\key es \major
- \skip 4 * 12
+ \skip 1 * 3/4 * 4
+ \break
+ \skip 1 * 3/4 * 25
\break
- \skip 4 * 234
+ \skip 1 * 3/4 * 6
+ \break
+ \skip 1 * 3/4 * 41
+ \break
+ \skip 1 * 3/4 * 6
\bar "|."
}
allLyrics = \lyrics {
+ % maybe should be bigger by default, in grob-description.scm ?
+ \property Lyrics . LyricText \override #'font-relative-size = #1
\lyricVerseOne
\lyricVerseTwo
\lyricThrough
\allLyrics
}
-vocals = \context Voice {
+vocals = \context Voice \notes {
\clef treble
% certainly no auto-beaming for vocals
\property Voice.noAutoBeaming = ##t
\property Staff.automaticMelismata= ##t
\dynamicUp
- \skip 4 * 12
+ % duh 1 != 3/4
+ R1 * 3/4 * 4
\vocalVerse
- \skip 4 * 24
+ R1 * 3/4 * 8
\vocalVerse
\vocalThrough
+ R1 * 3/4 * 6
}
vocalStaff = \context Staff = vocal<
- \property Staff.instrument = "synth voice"
+ \property Staff.midiInstrument = "synth voice"
\global
\vocals
>
}
trebleStaff = \context Staff = treble<
+ \property Staff.midiInstrument = "acoustic grand"
\global
\treble
>
}
bassStaff = \context Staff = bass<
+ \property Staff.midiInstrument = "acoustic grand"
\global
\bass
>
\lyricStaff
\grandStaff
>
- \paper {
-%{ \translator {
- \HaraKiriStaffContext
- %VerticalExtent = #'(0 . 0)
- %MinimumVerticalExtent = #'(0 . 0)
- %StaffMinimumVerticalExtent = #'(0 . 0)
- }
- %}
+ \paper {
+ % arg, if it weren't for the mutopia margins, this would
+ % fit on three a4 pages, like the original
+ % Mandatory Mutopia settings:
+ textheight = 270.0\mm
+ linewidth = 180.0\mm
+
\translator {
- \LyricsContext
- VerticalExtent = #'(1.2 . 1.2)
- MinimumVerticalExtent = #'(0 . 0)
- StaffMinimumVerticalExtent = #'(1.2 . 1.2)
+ \HaraKiriStaffContext
}
}
\midi{
{
dup base-line-skip gt {
/line-height exch def
- } if
+ }
+ {
+ pop /line-height base-line-skip def
+ } ifelse
line-y top-margin sub base-line-skip lt {
showpage
/line-y vsize top-margin sub def
l = -1.0;
else:
l = __main__.paperguru.get_linewidth()
-
- if 'relative' in opts:#ugh only when is_fragment
- body = '\\relative c { %s }' % body
+
+ for o in opts:
+ m= re.search ('relative(.*)', o)
+ v = 0
+ if m:
+ try:
+ v = string.atoi (m.group (1))
+ except ValueError:
+ pass
+
+ v = v + 1
+ pitch = 'c'
+ if v < 0:
+ pitch = pitch + '\,' * v
+ elif v > 0:
+ pitch = pitch + '\'' * v
+
+ body = '\\relative %s { %s }' %(pitch, body)
if is_fragment:
body = r"""\score {
"""
if ( os.name != 'posix' ):
+ cmd = re.sub (r'''\\''', r'''\\\\\\''', cmd)
cmd = "sh -c \'%s\'" % cmd
if verbose_p:
progress (_ ("Invoking `%s\'") % cmd)
orientation = extra['orientation'][0]
# set sane geometry width (a4-width) for linewidth = -1.
- if not extra['linewidth'] or extra['linewidth'][0] < 0:
+ maxlw = max (extra['linewidth'] + [-1])
+ if maxlw < 0:
+ # who the hell is 597 ?
linewidth = 597
else:
- linewidth = extra['linewidth'][0]
+ linewidth = maxlw
s = s + '\geometry{width=%spt%s,headheight=2mm,headsep=12pt,footskip=2mm,%s}\n' % (linewidth, textheight, orientation)
if extra['latexoptions']:
first = 0
s = s + r'''
-% I do not see why we want to clobber the footer here
-\vfill\hfill\parbox{\textwidth}{\mbox{}\makelilypondtagline}
-%\makeatletter
-%\renewcommand{\@oddfoot}{\parbox{\textwidth}{\mbox{}\makelilypondtagline}}%
-%\makeatother
+%% I do not see why we want to clobber the footer here
+%% \vfill\hfill\parbox{\textwidth}{\mbox{}\makelilypondtagline}
+%% Well, maybe you don't submit music to mutopia?
+%% I would not object to this kind of change, but I don't know how
+%% to get the last mutopia tagline right (ie: no footer on last page)
+%% Please check that mutopia footers and endfooter are OK before changing
+%% this again. -- jcn
+\makeatletter
+\renewcommand{\@oddfoot}{\parbox{\textwidth}{\makelilypondtagline}}%
+\makeatother
'''
s = s + '\\end{document}'
f.write (s)
f.close ()
- if ( os.name == 'posix' ):
- cmd = 'latex \\\\nonstopmode \\\\input %s' % latex_fn
- else:
- cmd = 'latex \\\\\\\\nonstopmode \\\\\\\\input %s' % latex_fn
+ cmd = 'latex \\\\nonstopmode \\\\input %s' % latex_fn
- if not verbose_p:
+ if not verbose_p and os.name == 'posix':
progress ( _("Running %s...") % 'LaTeX')
cmd = cmd + ' 1> /dev/null 2> /dev/null'
cmd = 'dvips %s -o%s %s' % (opts, outbase + '.ps', outbase + '.dvi')
- if not verbose_p:
+ if not verbose_p and os.name == 'posix':
progress ( _("Running %s...") % 'dvips')
cmd = cmd + ' 1> /dev/null 2> /dev/null'