-29/Jan/98 LilyPond 0.1.44 1
+29/Jan/98 LilyPond 0.1.45 1
-29/Jan/98 LilyPond 0.1.44 2
+29/Jan/98 LilyPond 0.1.45 2
=head1 DISCLAIMER AND COPYING POLICY
-GNU LilyPond is copyright 1996, 1997 by its authors. GNU LilyPond is
+GNU LilyPond is copyright 1996-1998 by its authors. GNU LilyPond is
distributed under the terms of the GNU General Public License. GNU LilyPond
is provided without any warranty what so ever.
GNU LilyPond may be freely distributed. For further information consult
\subsection{Durations}
A duration always starts with the duration type (1,2,4 etc), and then
-any optional multipliers/dots
+any optional multipliers/dots. Old fashioned durations can be entered
+as follows
+\begin{verbatim}
+'c\breve
+gis'\longa
+\end{verbatim}
+
+
\subsection{Meters/groupings}
A meter has this form:
-28/Jan/98 LilyPond 0.1.44 1
+28/Jan/98 LilyPond 0.1.45 1
-28/Jan/98 LilyPond 0.1.44 2
+28/Jan/98 LilyPond 0.1.45 2
-28/Jan/98 LilyPond 0.1.44 3
+28/Jan/98 LilyPond 0.1.45 3
-28/Jan/98 LilyPond 0.1.44 4
+28/Jan/98 LilyPond 0.1.45 4
-28/Jan/98 LilyPond 0.1.44 5
+28/Jan/98 LilyPond 0.1.45 5
-28/Jan/98 LilyPond 0.1.44 6
+28/Jan/98 LilyPond 0.1.45 6
+pl 45
+ - bf: translator switching
+ - SunOS and IRIX patches (AO)
+ - preludes bugfixes; preludes.tex ugh (JCN)
+ - shared lib numbering (AF)
+ - various fixes for debian (AF)
+ - ly2dvi .6.jaf (JAF)
+
+pl 44.jcn5
+ - bf: crescendo.cc: bigger and use bar_size
+ - slur: guess extra height for height limit for extending notes/stems
+ - ps: adjustable slur height limit, bf crescendo
+
+
+******
+feb 6
pl 44
- ly2dvi 0.6.hwn1
- ly2dvi 0.6 (JAF)
- configure.in
- clean-fonts.sh
- * check for abs()
-
* forced breakpoints
* --metafont
* cautionary accidental
* Output an output format independent (ofi) typeset file; and
- make ofi2 TeX, MusixTex, Display PostScript, PostScript,
+ make ofi2 TeX, MusiXTex, Display PostScript, PostScript,
Ascii... interpreters. (difficult)
- poor man's ascii output possible?
- - MusixTeX output possible? (would have to be done before break calc.)
+ - MusiXTeX output possible? (would have to be done before break calc.)
- NIFF ?
- Common Music Notation
- PostScript output (esp. Beams, Slurs, etc)
TOPLEVEL_MAJOR_VERSION = 0
TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 44
+TOPLEVEL_PATCH_LEVEL = 45
TOPLEVEL_MY_PATCH_LEVEL =
# use the above to send patches, always empty for released version:
-#!/usr/bin/perl
+#!@PERL@
open GREP, "egrep -h '^struct|^class' *.hh *.cc|";
open OUT, "|sort | uniq";
def __init__(self):
try:
self.topdir = os.environ['LILYPOND_SOURCEDIR'] + '/'
- except IndexError:
- self.topdir = os.environ['HOME'] + 'musix/current'
+
+ except KeyError:
+ print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
+ sys.exit(1)
self.release_dir = self.topdir + '../releases/'
self.patch_dir = self.topdir + '../patches/'
# Original LaTeX file made by Mats Bengtsson, 17/8 1997
#
-VERSION="0.6.hwn1"
+VERSION="0.6.jaf2"
NAME=ly2dvi.sh
IDENTIFICATION="$NAME $VERSION"
NOW=`date`
# NEWS
+# 0.6.hwn1.jaf
+# - LILYINCLUDE update
+#
# 0.6.hwn1
# - handle LILYINCLUDE
# - --output
EOF
}
- # ugh. GF is side-effect.
+# ugh. GF is side-effect.
findInput() {
- # should check for LILYINCLUDE
- for lypath in `echo $LILYINCLUDE| sed 's/:/ /g'`
- do
- if [ x$lypath = x ]
- then
- lypath="."
- fi
-
- if [ -f "$lypath/$1" ]
- then
- GF="$lypath/$1"
- return
- fi
+# should check for LILYINCLUDE
+ for lypath in "." `echo $LILYINCLUDE| sed 's/:/ /g'`
+ do
+ if [ -f "$lypath/$1" ]
+ then
+ GF="$lypath/$1"
+ return
+ fi
- if [ -f "$lypath/$1.ly" ]
- then
- GF="$lypath/$1.ly"
- return
- fi
- done
- $debug_echo $IDENTIFICATION": Input file "$GF" not found"
- echo $NAME": Input file "$GF" not found" 1>&2
- exit 2
+ if [ -f "$lypath/$1.ly" ]
+ then
+ GF="$lypath/$1.ly"
+ return
+ fi
+ done
+ $debug_echo $IDENTIFICATION": Input file "$GF" not found"
+ echo $NAME": Input file "$GF" not found" 1>&2
+ exit 2
}
#
# Loop through all files
lilypath =''
try:
lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except IndexError:
- lilypath = os.environ['HOME'] + 'musix/current'
+except KeyError:
+ print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
+ sys.exit(1)
+
lilypath = lilypath + '/bin/'
sys.path.append(lilypath)
stupid script to generate WWW site.
The WWW site is my test-suite for LilyPond, I usually don't
- distribute versions that fail to complete this script """
+ distribute versions that fail to complete this script
+
+You should set the following environment vars:
+
+LILYPOND_SOURCEDIR
+TEXINPUTS
+MAILADDRESS
+
+
+ """
import sys
import os
lilypath =''
try:
lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except IndexError:
- lilypath = os.environ['HOME'] + 'musix/current'
+except KeyError:
+ print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
+ sys.exit(1)
+
lilypath = lilypath + '/bin/'
sys.path.append(lilypath)
-#!@PERL@ -w
+#!@PERL@ -w
# -*-Perl-*-
my $mudcount = 0;
my $mudela_b = 0;
lilypath =''
try:
lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except IndexError:
- lilypath = os.environ['HOME'] + 'musix/current'
+except KeyError:
+ print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
+ sys.exit(1)
+
lilypath = lilypath + '/bin/'
sys.path.append(lilypath)
EXTRA_DISTFILES = README.Debian TODO changelog control copyright \
- info.ex menu.ex postinst postinst.old.sh postrm preinst rules watch
+ postinst postinst.old.sh postrm preinst rules watch
-* Move ly2dvi.sh to a proper place. It is currently placed in
- /usr/doc/lilypond. (1997-11-25)
+Fri, 6 Feb 1998 17:24:49 -0700:
+ * Compile mudela-mode.el into mudela-mode.elc
+ * Install /etc/emacs/site-start.d/50lilypond.el
+ * Figure out how to make mudela-mode work on my computer. :-)
+lilypond (0.1.44-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Anthony Fok <foka@debian.org> Fri, 6 Feb 1998 22:07:39 -0700
+
+lilypond (0.1.43-1) unstable; urgency=low
+
+ * New upstream release.
+ * Upgraded to standards version 2.4.0.0 (no changes).
+ * Minor fixes to the copyright file (GPL.gz -> GPL).
+ * Revised the package description based on the new lilypond.lsm.
+ * Now includes *.gif instead of *.xpm files.
+ * Other minor revisions to debian/rules.
+ * Added version numbering to the libflower shared library.
+ * Now installs /usr/lib/emacs/site-lisp/mudela-mode.el,
+ but I haven't figured out how to use it myself. <grin>
+
+ -- Anthony Fok <foka@debian.org> Fri, 6 Feb 1998 17:26:55 -0700
+
+lilypond (0.1.42-1) unstable; urgency=low
+
+ * New upstream release.
+ * Now places ly2dvi in /usr/bin.
+
+ -- Anthony Fok <foka@debian.org> Thu, 29 Jan 1998 02:50:36 -0700
+
+lilypond (0.1.41-1) unstable; urgency=low
+
+ * New upstream "The Birthday Release".
+
+ -- Anthony Fok <foka@debian.org> Wed, 21 Jan 1998 02:20:00 -0700
+
+lilypond (0.1.40-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Anthony Fok <foka@debian.org> Mon, 12 Jan 1998 19:19:50 -0700
+
lilypond (0.1.39-2) unstable; urgency=low
* debian/control:
Section: tex
Priority: optional
Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 2.3.0.1
+Standards-Version: 2.4.0.0
Package: lilypond
Architecture: any
Depends: ${shlibs:Depends}
Recommends: tetex-base
Conflicts: musixtex-fonts
-Description: A music typesetting program.
- GNU LilyPond is a program which converts a music-script (mudela) into TeX
- output, or MIDI to produce multi-staff scores. Features include multiple
- meters, clefs, keys, lyrics, versatile input-language, cadenzas beams,
- slurs, triplets, multiple voices.
+Description: The GNU Project music typesetter.
+ 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.
.
URL: http://www.stack.nl/~hanwen/lilypond/
Authors: Han-Wen Nienhuys <hanwen@stack.nl>
It was downloaded from
ftp://pcnov095.win.tue.nl/pub/lilypond/development/
- lilypond-0.1.39.tar.gz
+ lilypond-0.1.44.tar.gz
It is also available from:
ftp://alpha.gnu.org/gnu/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
All the other scripts and control files for building and installing
Public License (GPL) version 2 or later.
On Debian GNU/Linux systems, the complete text of the GNU General
-Public License can be found in `/usr/doc/copyright/GPL.gz'.
+Public License can be found in `/usr/doc/copyright/GPL'.
+++ /dev/null
-# This is a configuration files for installing a .info menu
-# The Description to be placed into the directory
-DESCR="Description"
-
-# The section this info file should be placed in (Regexp) followed by
-# the new section name to be created if the Regexp does not match
-# (Optional. If not given the .info will be appended to the directory)
-#SECTION_MATCH="Regexp"
-#SECTION_NAME="New Section Name"
-
-# The file referred to from the Info directory
-FILE=lilypond.info
-
-# Optional. The files to be copied to /usr/info
-#FILES=*.info
+++ /dev/null
-text Apps/Misc lilypond none "lilypond Description" /usr/bin/lilypond
# Currently maintained by Anthony Fok <foka@debian.org>
# for Debian GNU/Linux.
-package=lilypond
+package = lilypond
-SHELL=/bin/bash
+SHELL = /bin/bash
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
./configure --disable-checking --disable-debugging \
--enable-printing --prefix=/usr --enable-optimise \
--enable-shared
- make all
+ $(MAKE) all
+ $(MAKE) -C Documentation gifs
touch build-stamp
clean:
dh_testroot
rm -f build-stamp
-$(MAKE) distclean
- # Don't put dh_clean before "make distclean"! dh_clean is
- # "too smart" and it deletes too many files!
dh_clean
- rm -f {,*/}out/{*,.build} flower/config.{log,status}
# Build architecture-independent files here.
binary-indep: build
binary-arch: build
dh_testdir
dh_testroot
- dh_installdirs usr/lib/texmf/doc
- $(MAKE) prefix=`pwd`/debian/tmp/usr install
+ dh_installdirs usr/lib/texmf/doc usr/lib/emacs/site-lisp
ln -fs ../../../doc/lilypond debian/tmp/usr/lib/texmf/doc/lilypond
+ $(MAKE) prefix=`pwd`/debian/tmp/usr install
+ cp -av bin/out/ly2dvi debian/tmp/usr/bin
+ cp -av mudela-mode.el debian/tmp/usr/lib/emacs/site-lisp
dh_installdocs ANNOUNCE ANNOUNCE-0.1 README NEWS ONEWS DEDICATION \
BUGS TODO \
- Documentation/out/*.text Documentation/*.doc \
- Documentation/lelie_logo.xpm bin/ly2dvi.sh
- dh_installexamples input/*.ly input/*.tex
+ Documentation/*.doc Documentation/out/{*.txt,*.gif}
+ dh_installexamples input/{*.ly,TODO}
+ cp -aPv `find mutopia \( -name '*.ly' -o -name '*.tex' -o -name 'TODO' \)` \
+ debian/tmp/usr/doc/lilypond/examples
# dh_installmenu
# dh_installcron
# dh_installmanpages
dh_md5sums
dh_builddeb
+source diff:
+ @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
+
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary
#
localdistclean:
- rm -f config.cache config.status
+ rm -f config.cache config.status config.log
localinstall: $(LIBFLOWER)
ifeq ($(LIB_SUFFIX),.so)
$(INSTALL) -d $(libdir)
- $(INSTALL) $(LIBFLOWER) $(libdir)
+ $(INSTALL) $(LIBFLOWER).$(VERSION) $(libdir)
+ ln -s $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX).$(MAJOR_VERSION)
+ ln -s $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX)
endif
localuninstall:
- rm -f $(libdir)/libflower.{so,a}
+ rm -f $(libdir)/libflower.{so*,a}
$(outdir)/flower-version.o: $(outdir)/version.hh
* Automake, libtool
- * version numbering for shared lib.
-
* LGPL?
* disable this auto conv: const pointer -> bool -> string
optimise_b=yes
shared_b=no
LIB_SUFFIX=.a
+MODULE_CXXFLAGS="$MODULE_CXXFLAGS -D_REENTRANT"
if test x$host = xNONE; then
OUTDIR_NAME=${OUTDIR_NAME-"out"}
if test $shared_b = yes; then
- MODULE_CXXFLAGS="$MODULE_CXXFLAGS -fPIC"
- MODULE_LDFLAGS="-shared -Wl,-soname,libflower.so "
+ MODULE_CXXFLAGS="$MODULE_CXXFLAGS -fPIC -DPIC"
+ MODULE_LDFLAGS="-shared -Wl,-soname,libflower.so.\$(VERSION) "
LIB_SUFFIX=.so
fi
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:594: checking for $ac_word" >&5
+echo "configure:595: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:625: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:626: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 635 "configure"
+#line 636 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cxx_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
{ echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:659: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:660: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:664: checking whether we are using GNU C++" >&5
+echo "configure:665: checking whether we are using GNU C++" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:673: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:674: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gxx=yes
else
ac_cv_prog_gxx=no
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:688: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:689: checking whether ${CXX-g++} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:716: checking for 8-bit clean memcmp" >&5
+echo "configure:717: checking for 8-bit clean memcmp" >&5
if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_func_memcmp_clean=no
else
cat > conftest.$ac_ext <<EOF
-#line 724 "configure"
+#line 725 "configure"
#include "confdefs.h"
#ifdef __cplusplus
extern "C" void exit(int);
}
EOF
-if { (eval echo configure:737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
ac_cv_func_memcmp_clean=yes
else
test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:755: checking for vprintf" >&5
+echo "configure:756: checking for vprintf" >&5
if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 760 "configure"
+#line 761 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vprintf(); below. */
; return 0; }
EOF
-if { (eval echo configure:786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_vprintf=yes"
else
if test "$ac_cv_func_vprintf" != yes; then
echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:810: checking for _doprnt" >&5
+echo "configure:811: checking for _doprnt" >&5
if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 815 "configure"
+#line 816 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char _doprnt(); below. */
; return 0; }
EOF
-if { (eval echo configure:841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func__doprnt=yes"
else
for ac_func in memmem snprintf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:868: checking for $ac_func" >&5
+echo "configure:869: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 873 "configure"
+#line 874 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
optimise_b=yes
shared_b=no
LIB_SUFFIX=.a
+MODULE_CXXFLAGS="$MODULE_CXXFLAGS -D_REENTRANT"
if test x$host = xNONE; then
OUTDIR_NAME=${OUTDIR_NAME-"out"}
[])
if test $shared_b = yes; then
- MODULE_CXXFLAGS="$MODULE_CXXFLAGS -fPIC"
- MODULE_LDFLAGS="-shared -Wl,-soname,libflower.so "
+ MODULE_CXXFLAGS="$MODULE_CXXFLAGS -fPIC -DPIC"
+ MODULE_LDFLAGS="-shared -Wl,-soname,libflower.so.\$(VERSION) "
LIB_SUFFIX=.so
fi
// nextstep
#ifndef CLOCKS_PER_SEC
+#ifdef CLK_TCK
#define CLOCKS_PER_SEC CLK_TCK
+#elif defined _SC_CLK_TCK
+#define CLOCKS_PER_SEC sysconf(_SC_CLK_TCK)
+#else
+#error cannot determine CLOCKS_PER_SEC
+#endif
#endif
Score = \translator {
\type "Score_performer";
- instrument = piano;
+% instrument = piano;
\accepts Staff;
\accepts Grandstaff;
\accepts Lyrics;
- neaten/structure examples
- - rename/split into test/exapmles?
+ - rename/split into test/examples?
[c8 c] c4 c4 c4 |
}
+extend = {
+ c8(( c c )c c c c )c |
+ \[4/5c8( c c' c )c\]1/1 c c c c |
+ \[4/5c8( c c c c'\]1/1 c c c )c |
+ \[4/5c8( c c c c''\]1/1 c c c )c' |
+ \[4/5c8( c c c c'\]1/1 c c c )'c |
+ \[4/5c8( c c' c c\]1/1 c c c )c |
+ \[4/5c8( c c c ''c\]1/1 c c c )c |
+ \[4/5c8( c ''c c c\]1/1 c c c )c |
+}
+
\score{
\melodic{
\shortlong
\dirs
\complex
\beum
+ \stemup;
+ \octave c'';
+ \extend
+ \stemdown;
+ \octave c';
+ \extend
}
\paper{ }
}
melody = \melodic{
\clef violin;
\octave c';
+ \property Staff.instrument = "alto sax"
c4 c | g g | a a | g g |
f f | e e | d d8.( e16 | )c2 | % :|
EXTRA_DISTFILES = config.hh.in
#
+MODULE_CXXFLAGS += -D_REENTRANT
+
# list of custom libraries:
LOADLIBES +=
keyword.cc leastsquares.cc \
lookup.cc meter.cc\
parser.cc notename-table.cc lexer.cc\
- qlp.cc qlpsolve.cc\
template*.cc version.cc tex-stream.cc tex.cc\
identifier.cc note.cc
MAJOR_VERSION = 0
MINOR_VERSION = 1
-PATCH_LEVEL = 44
+PATCH_LEVEL = 45
MY_PATCH_LEVEL =
Midi_track midi_track;
midi_track.number_i_ = track_i;
for (Midi_walker i (this, &midi_track); i.ok(); i++)
- i.process();
+ i.process();
midi_stream_r << midi_track;
}
#include "molecule.hh"
#include "lookup.hh"
-Bow::Bow()
+IMPLEMENT_IS_TYPE_B1(Bow,Directional_spanner);
+
+Bow::Bow ()
{
dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0;
dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
Offset
-Bow::center() const
+Bow::center () const
{
Real dy = dy_f_drul_[RIGHT]-dy_f_drul_[LEFT];
- Real w = width().length ();
+ Real w = width ().length ();
return Offset (w/2,dy );
}
+Real
+Bow::height_f () const
+{
+ return 0;
+}
Molecule*
-Bow::brew_molecule_p() const
+Bow::brew_molecule_p () const
{
Molecule*output = new Molecule;
- Real w = width().length ();
+ Real w = width ().length ();
Real dy_f = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT];
- Real nw_f = paper()->note_width ();
- Real nh_f = paper()->internote_f ();
+ Real nw_f = paper ()->note_width ();
w+= (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]);
Real round_w = w; // slur lookup rounds the slurwidth .
- Atom a = paper()->lookup_l ()->slur (dy_f, round_w, dir_);
+ Atom a = paper ()->lookup_l ()->slur (dy_f, round_w, height_f (), dir_);
Real error = w-round_w;
- a.translate (Offset ((dx_f_drul_[LEFT] + 0.5*nw_f)
+ a.translate (Offset ( (dx_f_drul_[LEFT] + 0.5*nw_f)
+ error/2,
dy_f_drul_[LEFT]));
output->add (a);
return output;
}
-
-IMPLEMENT_IS_TYPE_B1(Bow,Directional_spanner);
/*
- change-iterator.cc -- implement
+ change-iterator.cc -- implement Change_iterator
source file of the GNU LilyPond music typesetter
#include "change-iterator.hh"
#include "translator-group.hh"
#include "change-translator.hh"
+#include "debug.hh"
Change_iterator::Change_iterator (Change_translator *change_l)
{
change_l_ = change_l;
}
+void
+Change_iterator::error (String reason)
+{
+ String to_type = change_l_->change_to_type_str_;
+ String to_id = change_l_->change_to_id_str_;
+
+ String warn1 =
+ _ ("Can't change ") + to_type
+ + _(" to ") + "`" + to_id + "\': " + reason;
+ String warn2= "Change_iterator::process_and_next (): " + report_to_l ()->type_str_ + " = `"
+ + report_to_l ()->id_str_ + "\': ";
+ warning (warn2);
+ change_l_->warning (warn1);
+}
+
/*
move to construct_children ?
*/
{
Translator_group * current = report_to_l ();
Translator_group * last = 0;
- while (current && current->type_str_ != change_l_->change_to_type_str_)
+
+ String to_type = change_l_->change_to_type_str_;
+ String to_id = change_l_->change_to_id_str_;
+
+ /* find the type of translator that we're changing.
+
+ If \translator Staff = bass, then look for Staff = *
+ */
+ while (current && current->type_str_ != to_type)
{
last = current;
current = current->daddy_trans_l_;
}
- if (current)
- {
- Translator_group * dest =
- report_to_l ()->find_create_translator_l (change_l_->change_to_type_str_,
- change_l_->change_to_id_str_);
- current->remove_translator_p (last);
- dest->add (last);
- }
+
+ if (current)
+ if (last)
+ {
+ Translator_group * dest =
+ report_to_l ()->find_create_translator_l (to_type, to_id);
+ current->remove_translator_p (last);
+ dest->add (last);
+ }
+ else
+ {
+
+ /*
+ We could change the current translator's id, but that would make
+ errors hard to catch
+
+ last->translator_id_str_ = change_l_->change_to_id_str_;
+ */
+ error ("I'm one myself");
+ }
+ else
+ error ("None of these in my family.");
Music_iterator::process_and_next (m);
}
Command_script_req::do_print() const
{}
Command_script_req::Command_script_req(){}
+Command_script_req::~Command_script_req(){}
IMPLEMENT_IS_TYPE_B1(Command_script_req,Command_req);
+++ /dev/null
-/*
- elem-group-item.cc -- implement Horizontal_vertical_group_item
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#include "elem-group-item.hh"
-#include "p-col.hh"
-
-void
-Horizontal_vertical_group_item::do_print() const
-{
- Horizontal_vertical_group_element::do_print();
-}
-
-IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group_item,Horizontal_vertical_group_element,Item);
--- /dev/null
+/*
+ horizontal-vertical-group-item.cc -- implement Horizontal_vertical_group_item
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#include "horizontal-vertical-group-item.hh"
+#include "p-col.hh"
+
+void
+Horizontal_vertical_group_item::do_print() const
+{
+ Horizontal_vertical_group_element::do_print();
+}
+
+IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group_item,Horizontal_vertical_group_element,Item);
Drul_array<Real> dy_f_drul_;
Drul_array<Real> dx_f_drul_;
- Molecule*brew_molecule_p() const;
+ virtual Real height_f () const;
+ virtual Molecule* brew_molecule_p () const;
public:
Bow();
DECLARE_MY_RUNTIME_TYPEINFO;
class Change_iterator : public Music_iterator
{
Change_translator *change_l_;
+
+ void error (String);
public:
DECLARE_MY_RUNTIME_TYPEINFO;
/*
- col-info.hh -- declare
+ col-info.hh -- declare Colinfo
source file of the GNU LilyPond music typesetter
/// helper struct for #Spacing_problem#
struct Colinfo {
- Paper_column *pcol_l_;
- P<Real> fixpos_p_;
- Interval width_;
- int rank_i_;
- /// did some tricks to make this column come out.
- bool ugh_b_;
- /* *************** */
- Colinfo();
- Colinfo (Paper_column *,Real const *);
-
- void print() const;
- bool fixed() const { return fixpos_p_.get_C();}
- Real fixed_position() const { return *fixpos_p_; }
+ Paper_column *pcol_l_;
+ P<Real> fixpos_p_;
+ Interval width_;
+ int rank_i_;
+ /// did some tricks to make this column come out.
+ bool ugh_b_;
+ /* *************** */
+ Colinfo();
+ Colinfo (Paper_column *,Real const *);
+
+ void print() const;
+ bool fixed() const { return fixpos_p_.get_C();}
+ Real fixed_position() const { return *fixpos_p_; }
};
#endif // COL_INFO_HH
#ifndef COLLISION_HH
#define COLLISION_HH
#include "lily-proto.hh"
-#include "elem-group-item.hh"
+#include "horizontal-vertical-group-item.hh"
/**
Resolve conflicts between various Note_columns (chords).
public:
// huh?
Command_script_req();
+ ~Command_script_req();
REQUESTMETHODS(Command_script_req, commandscript);
};
+++ /dev/null
-/*
- elem-group-item.hh -- declare Horizontal_vertical_group_item
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef ELEM_GROUP_ITEM_HH
-#define ELEM_GROUP_ITEM_HH
-
-#include "axis-group-item.hh"
-#include "elem-group.hh"
-
-
-/**
- Treat a collection of items as a unity
- */
-class Horizontal_vertical_group_item : public Axis_group_item, public Horizontal_vertical_group_element {
-protected:
- virtual void do_print() const;
- virtual void remove_all() { Horizontal_vertical_group_element::remove_all (); }
- virtual void do_unlink () { Horizontal_vertical_group_element::do_unlink (); }
- SCORE_ELEM_CLONE(Horizontal_vertical_group_item);
-public:
- virtual void add_element (Graphical_element*e) { Horizontal_vertical_group_element::add_element (e); }
- virtual void remove_element (Graphical_element*e) { Horizontal_vertical_group_element::remove_element (e); }
-
- DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-#endif // ELEM_GROUP_ITEM_HH
--- /dev/null
+/*
+ horizontal-vertical-group-item.hh -- declare Horizontal_vertical_group_item
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef HORIZONTAL_VERTICAL_GROUP_ITEM_HH
+#define HORIZONTAL_VERTICAL_GROUP_ITEM_HH
+
+#include "axis-group-item.hh"
+#include "elem-group.hh"
+
+
+/**
+ Treat a collection of items as a unity
+ */
+class Horizontal_vertical_group_item : public Axis_group_item, public Horizontal_vertical_group_element {
+protected:
+ virtual void do_print() const;
+ virtual void remove_all() { Horizontal_vertical_group_element::remove_all (); }
+ virtual void do_unlink () { Horizontal_vertical_group_element::do_unlink (); }
+ SCORE_HORIZONTAL_VERTICAL_CLONE(Horizontal_vertical_group_item);
+public:
+ virtual void add_element (Graphical_element*e) { Horizontal_vertical_group_element::add_element (e); }
+ virtual void remove_element (Graphical_element*e) { Horizontal_vertical_group_element::remove_element (e); }
+
+ DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // HORIZONTAL_VERTICAL_GROUP_ITEM_HH
Atom bar (String, Real height) const;
Atom dots () const;
- Atom slur (Real &dy, Real &dx, Direction dir) const;
+ Atom slur (Real &dy, Real &dx, Real ht, Direction dir) const;
Atom plet (Real &dy, Real &dx, Direction dir) const;
Atom tex_slur (int dy, Real &dx, Direction dir) const;
- Atom ps_slur (Real dy, Real dx, Real dir) const;
+ Atom ps_slur (Real dy, Real dx, Real ht, Real dir) const;
Atom half_slur (int dy, Real &dx, Direction dir, int xpart) const;
Atom half_slur_middlepart (Real &dx, Direction dir) const;
Atom big_slur (int dy, Real &dx, Direction dir) const;
Moment wholes (int dur, int dots);
double log_2(double x) ;
int intlog2(int d);
+#if ! defined(_ABS_)
inline int
abs (int i){
return (i < 0)?-i:i;
}
+#endif
inline int
sign (int i) {
if (i<0) return -1;
#ifndef SCRIPT_COLUMN_HH
#define SCRIPT_COLUMN_HH
-#include "elem-group-item.hh"
+#include "horizontal-vertical-group-item.hh"
/** a struct for treating a group of noteheads (noteheads, stem
(chord) and scripts) as a single entity. */
virtual void do_add_processing ();
virtual void do_pre_processing ();
virtual void do_substitute_dependency (Score_elem*, Score_elem*);
+ virtual Real height_f () const;
SCORE_ELEM_CLONE(Slur);
DECLARE_MY_RUNTIME_TYPEINFO;
Atom ret;
if (embedded_b)
{
- Real height = 2 PT;
+ Real height = paper_l_->get_var ("barsize") / 6;
embed = "\\embeddedps{\n" ;
embed += String (wid) + " "
+ String (height) + " "
#include "debug.hh"
#include "boxes.hh"
-
-
void
Slur::add (Note_column*n)
{
}
void
-Slur::set_default_dir()
+Slur::set_default_dir ()
{
dir_ = DOWN;
- for (int i=0; i < encompass_arr_.size(); i ++)
+ for (int i=0; i < encompass_arr_.size (); i ++)
{
if (encompass_arr_[i]->dir_ < 0)
{
- dir_ =UP;
+ dir_ = UP;
break;
}
}
}
void
-Slur::do_add_processing()
+Slur::do_add_processing ()
{
- set_bounds(LEFT, encompass_arr_[0]);
+ set_bounds (LEFT, encompass_arr_[0]);
if (encompass_arr_.size () > 1)
- set_bounds(RIGHT, encompass_arr_.top());
+ set_bounds (RIGHT, encompass_arr_.top ());
}
void
Slur::do_substitute_dependency (Score_elem*o, Score_elem*n)
{
int i;
- while ((i = encompass_arr_.find_i ((Note_column*)o->item())) >=0)
+ while ((i = encompass_arr_.find_i ((Note_column*)o->item ())) >=0)
{
if (n)
- encompass_arr_[i] = (Note_column*)n->item();
+ encompass_arr_[i] = (Note_column*)n->item ();
else
encompass_arr_.del (i);
}
}
-
static int
Note_column_compare (Note_column *const&n1 , Note_column* const&n2)
{
- return Item::left_right_compare(n1, n2);
+ return Item::left_right_compare (n1, n2);
}
void
-Slur::do_post_processing()
+Slur::do_post_processing ()
{
encompass_arr_.sort (Note_column_compare);
if (!dir_)
- set_default_dir();
+ set_default_dir ();
Real interline_f = paper ()->interline_f ();
Real inter_f = interline_f / 2;
Drul_array<Note_column*> extrema;
extrema[LEFT] = encompass_arr_[0];
- extrema[RIGHT] = encompass_arr_.top();
+ extrema[RIGHT] = encompass_arr_.top ();
Direction d=LEFT;
- Real nw_f = paper()->note_width ();
+ Real nw_f = paper ()->note_width ();
do
{
}
else if (extrema[d]->stem_l_ && !extrema[d]->stem_l_->transparent_b_)
{
- dy_f_drul_[d] = (int)rint (extrema[d]->stem_l_->height()[dir_]);
+ dy_f_drul_[d] = (int)rint (extrema[d]->stem_l_->height ()[dir_]);
/* normal slur from notehead centre to notehead centre, minus gap */
dx_f_drul_[d] += -d * gap_f;
}
else
{
- dy_f_drul_[d] = (int)rint (extrema[d]->head_positions_interval()[dir_])* inter_f;
+ dy_f_drul_[d] = (int)rint (extrema[d]->head_positions_interval ()[dir_])* inter_f;
}
dy_f_drul_[d] += dir_ * interline_f;
}
while ((d *= -1) != LEFT);
}
+Real
+Slur::height_f () const
+{
+ /*
+ rather braindead way that of adjusting slur height
+ for heads/stems that extend beyond default slur
+ works quite good
+ */
+
+ Real interline_f = paper ()->interline_f ();
+ Real nh_f = interline_f / 2;
+ Real h = 0;
+ Real dx = width ().length ();
+ Real dy = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT];
+ Stem* stem = encompass_arr_[0]->stem_l_;
+ Real lx = stem->hpos_f ();
+ Real centre = (width ().min () + width ().max ()) / 2;
+ Real ly = stem->dir_ == dir_ ? stem->stem_end_f () : stem->stem_begin_f ()
+ + dir_ * nh_f / 2;
+ for (int i = 0; i < encompass_arr_.size (); i++)
+ {
+ Stem* stem = encompass_arr_[i]->stem_l_;
+ Real sx = abs (centre - stem->hpos_f ());
+ Real sy = stem->dir_ == dir_ ? stem->stem_end_f ()
+ : stem->stem_begin_f () + dir_ * nh_f / 2;
+ sy = dir_ * (sy - (ly + ((stem->hpos_f () - lx) / dx) * dy));
+ /*
+ uhm, correct for guess bezier curve (more if further from centre)
+ forget the cos alpha...
+ */
+ if (sy > 0)
+ h = h >? sy * (1 + 2 * sx / dx);
+ }
+ Real ratio = 1.0/3; // duh
+ /*
+ correct h for slur ratio
+ */
+ Real staffheight = paper ()->get_var ("barsize");
+ if (h)
+ h *= ((h * interline_f) / dx ) / ratio;
+ return h;
+}
+
IMPLEMENT_IS_TYPE_B1(Slur,Spanner);
for (int j=0; j < cols.size(); j++)
if (cols[j].fixed())
qp.add_fixed_var (j,cols[j].fixed_position());
-}
+}
// put the constraints into the LP problem
void
Spring_spacer::make_constraints (Mixed_qp& lp) const
{
int dim=cols.size();
+ Real nw_f = paper_l ()->note_width ();
for (int j=0; j < dim; j++)
{
Colinfo c=cols[j];
c1(j)=1.0 ;
c1(j-1)=-1.0 ;
- lp.add_inequality_cons (c1,
- cols[j-1].width_[RIGHT] - cols[j].width_[LEFT]);
+
+ lp.add_inequality_cons (c1, cols[j-1].width_[RIGHT]
+ - cols[j].width_[LEFT]);
}
}
}
assert(h >=0);
Idealspacing * s = new Idealspacing;
- s->left_i_ = i;
+
+ s->left_i_ = i ;
s->right_i_ = j;
s->space_f_ = d;
s->hooke_f_ = h;
get_ruling_durations(shortest_playing_arr, context_shortest_arr);
Real interline_f = paper_l ()->interline_f ();
+ Real nw_f = paper_l ()->note_width ();
Array<Real> ideal_arr_;
Array<Real> hooke_arr_;
+ interline_f / 2;
dist = dist >? minimum;
}
+
ideal_arr_[i] = dist;
}
}
String
Staff_performer::instrument_str()
{
+ // mustn't ask Score for instrument: it will return piano!
return get_property ("instrument");
+
+/* ugh, but can't
+ if (properties_dict_.elt_b ("instrument"))
+ return properties_dict_["instrument"];
+ return "";
+*/
}
void
Real inter_f = paper()-> internote_f ();
Interval v= support_height();
- y = v[dir_] + 2*dir_*inter_f; // ugh
+// y = v[dir_] + 2*dir_*inter_f; // ugh
+ y = v[dir_]; // ugh
return y;
}
}
Atom
-Lookup::ps_slur (Real dy , Real dx, Real dir) const
+Lookup::ps_slur (Real dy , Real dx, Real ht, Real dir) const
{
String ps = "\\embeddedps{\n";
ps += String_convert::double_str (dx) + " "
+ String_convert::double_str (dy) + " "
+ + String_convert::double_str (ht) + " "
+ String_convert::double_str (dir) +
" draw_slur}";
Atom
-Lookup::slur (Real &dy_f , Real &dx, Direction dir) const
+Lookup::slur (Real &dy_f , Real &dx, Real ht, Direction dir) const
{
if (dx < 0)
{
Atom s;
if (postscript_global_b)
- s = ps_slur (dy_f, dx, dir);
+ s = ps_slur (dy_f, dx, ht, dir);
else
{
Real nh = paper_l_->internote_f ();
Translator *
Translator_group::remove_translator_p (Translator*trans_l)
{
+ assert (trans_l);
+
PCursor<Translator*> trans_cur (trans_p_list_.find (trans_l));
Translator * t = trans_cur.remove_p();
/*
$(SHAREDLIBRARY): $(build) $(OFILES) $(MODULE_LIBDEPS)
$(INCREASE_BUILD)
$(MAKE) $(OFILES) $(SILENT_LOG)
- $(LD_COMMAND) $(OFILES) -o $@
-# ln -sf $(outdir)/$(LIB_PREFIX)$(NAME).so.$(VERSION) $(outdir)/$(LIB_PREFIX)$(NAME).so
+ $(LD_COMMAND) $(OFILES) -o $@.$(VERSION)
+ rm -f $@
+ ln -sf $(outdir)/$(LIB_PREFIX)$(NAME).so.$(VERSION) $@.$(MAJOR_VERSION)
+ ln -sf $(LIB_PREFIX)$(NAME).so.$(VERSION) $@
+
#
lib: $(LIBRARY)
#
# all machine generated junk resides in out/
distclean:
set -e; for i in `find -type d -name 'out'`; do \
- rm -f $$i/*; done
+ rm -f $$i/* $$i/.build; done
rm -rf *-build-dir
+ ( cd flower && rm -f config.cache config.status config.log )
rm -f Makefile config.cache config.status config.log
Begin3
Titel: LilyPond
-Versie: 0.1.44
-Inschrijf datum: 06FEB98
+Versie: 0.1.45
+Inschrijf datum: 11FEB98
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:
jan@digicash.com (Jan Nieuwenhuizen)
Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
- 395k lilypond-0.1.44.tar.gz
+ 395k lilypond-0.1.45.tar.gz
Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
- 395k lilypond-0.1.44.tar.gz
+ 395k lilypond-0.1.45.tar.gz
Copi"eer politie: GPL
End
Begin3
Title: LilyPond
-Version: 0.1.44
-Entered-date: 06FEB98
+Version: 0.1.45
+Entered-date: 11FEB98
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
jan@digicash.com (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 470k lilypond-0.1.44.tar.gz
+ 470k lilypond-0.1.45.tar.gz
Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
- 470k lilypond-0.1.44.tar.gz
+ 470k lilypond-0.1.45.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 0.1.44
+Version: 0.1.45
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.44.tar.gz
+Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.45.tar.gz
Summary: A program for typesetting music.
URL: http://www.stack.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@stack.nl>
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.
%prep
%setup
make -C Documentation gifs
make prefix="$RPM_BUILD_ROOT/usr" install
%files
-%doc Documentation/out/ANNOUNCE.txt Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/DEDICATION.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/NEWS.txt Documentation/out/TODO.txt Documentation/out/cadenza.ly.txt Documentation/out/collisions.ly.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/font16.ly.txt Documentation/out/font20.ly.txt Documentation/out/gallina.ly.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/multi.ly.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt Documentation/out/preludes-1.ly.txt Documentation/out/preludes-2.ly.txt Documentation/out/rhythm.ly.txt Documentation/out/scsii-menuetto.ly.txt Documentation/out/standje.ly.txt Documentation/out/toccata-fuga-E.ly.txt Documentation/out/twinkle-pop.ly.txt Documentation/out/twinkle.ly.txt Documentation/out/wtk1-fugue2.ly.txt Documentation/out/wtk1-prelude1.ly.txt BUGS TODO NEWS DEDICATION ANNOUNCE README
+%doc Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt BUGS TODO NEWS DEDICATION ANNOUNCE README
%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/denneboom.ly input/font-body.ly input/font.ly input/font11.ly input/font13.ly input/font16.ly input/font20.ly input/font26.ly input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/sleur.ly input/slurs.ly input/spacing.ly input/stem.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly Documentation/mudela-course.doc Documentation/mudela-man.doc
%doc Documentation/out/lelie_logo.gif
/usr/bin/convert-mudela
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.
%prep
%setup
mv $(@F) $@
rm $(basename $< ).*gf
-$(lyout)/%.ly $(texout)/%.tex: $(outdir)/%.mf
- $(PYTHON) $(depth)/bin/mf-to-table.py --ly $(lyout)/$(<F:.mf=.ly) --tex $(texout)/$(<F:.mf=.tex) $<
+$(lyout)/%.ly $(texout)/%.tex: $(outdir)/%.log
+ $(PYTHON) $(depth)/bin/mf-to-table.py --ly $(lyout)/$(<F:.log=.ly) --tex $(texout)/$(<F:.log=.tex) $<
localinstall:
$(INSTALL) -d $(MFDIR)/public/lilypond
\header{
filename = "preludes-1.ly";
-title = "1";
+title = "DOUZE P\'ETITES PRELUDES";
+% tempo = "Moderato"
composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "jcn";
copyright = "public domain";
}
+\include "paper20.ly"
+
rh = \melodic{
\octave c'';
\textstyle "italic";
c4-5 e-3 [g32-1 fis-2 g8.-1] 'g4 |
d-5 f-3 [a32-1 gis a8.] 'a4 |
% ugh grouping32: 4..4
- e-5 e'-1 a-4 [e32-3 b c' b] [c' b a b] |
- c'4 e-4 fis [a32-1 gis fis gis] [ ais gis fis gis] |
+ e-5 e'-1 a-4 [a32-3 b c' b] [c' b a b] |
+ c'4 e-4 fis [a32-1 gis fis gis] [a gis fis gis] |
a4 c-4 d [d32 e f e] [f e d e] |
% ugh tril sign
% f4-1 e d-3\tr c |
>
>
\paper{
+ \paper_twenty
+ linewidth= 195.\mm;
}
\midi{
\tempo 4 = 70;
copyright = "public domain";
}
+\include "paper20.ly"
+
rh = \melodic{
\octave c'';
\textstyle "italic";
g4-5\ff
\multi 2 <
{ \stemup; c2-5 'b4-4 }
- { \stemdown; 'g2 'd4 }
+ { \stemdown; 'g2-2 'd4-1 }
>
\stemboth;
\multi 2 <
{ \stemdown; 'c1 ~ 'c ~ 'c }
>
\stemboth; |
- r8 [c-5( e-3 f-1] [e-3 c-5 c' e-4] |
+ r8 [c-5( e-3 g-1] [e-3 c-5 c' e-4] |
[)fis-3 d-5( fis-3 a-1] [fis-3 d-5 d' fis-4] |
)g2-3 r4 g-2( |
[)a8 'a-5( c-4 e-2] [c-4 'a-5 g e-3] |
>
>
\paper{
+ \paper_twenty
+ linewidth= 195.\mm;
}
\midi{
- \tempo 4 = 110;
+ \tempo 4 = 90;
}
}
copyright = "public domain";
}
+\include "paper20.ly"
+
define(comma, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
define(s, `comma(translit($*,` ', `,'))')
define(t, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
s('a c fis)
s('a c fis)
s('bes d g)
+
+
s(c fis a -"poco\\_a\\_poco\\_cresc.")
s(d g bes)
s(d fis c')
+
s(cis g bes)
s(c es a !-"dim.")
s('bes e g)
s('a c g)
+
s('a c fis)
s('g 'bes e)
- s('fis a es)
+ s('fis 'a es)
+
s('g 'bes d -"dim.")
s('g 'a c)
- s('fis a c)
- s('fis a c)
+ s('fis 'a c)
+ s('fis 'a c)
r16\p ['g 'a c] ['b 'g 'b 'g] r 'g r 'g
s('a c fis -"poco\\_cresc.")
s(c fis a)
'd4 r [d8 'a] |
'd4 r [d8 'bes] |
+
'd4 r [es8 c] |
- 'd4 r [es8 d] |
+ 'd4 r [g8 d] |
'd4 r [a8 fis] |
'd4 r [g8 es] |
'd4 r [cis8 'bes] |
'd4 r [c!8 'a] |
- 'd4 r ['bes8 g] |
+ 'd4 r ['bes8 'g] |
'd4 r [es8 c] |
'd4 r [d8 c] |
'g4 r [es8 c] |
'g4 r [es8 c] |
'g4 r r |
- 'g2.-\fermata
+ 'g2._\fermata
\bar "|.";
}
>
>
\paper{
+ \paper_twenty
+ linewidth= 195.\mm;
}
\midi{
\tempo 4 = 90;
copyright = "public domain";
}
-rh = \melodic{
+\include "paper20.ly"
+
+one = \melodic{
\octave c'';
\textstyle "italic";
- % ugh, start in multi, because of slurring an tieing over bars
- \multi 2 <
- {
- r16\p_"legato"
- ['d-1( 'fis-3 'd-1] ['a-2 'b-3 cis-4 'a-3]
- [d-3 cis-2 d-1 e-2] [d-1 fis-3 e-2 d-1] |
- \textstyle "finger";
- \stemup;
- )cis4-2 fis-5 ~ [fis8 fis-4] e4-3 ~ |
- e( )d8-2 s s4 s4 |
- r8 d4-> cis8-1 ~ cis 'b4-1 'b8 |
- }
- {
-% s1
- \stemdown;
- r8 'a4 'a8 'b4.-"2\\_1" cis8 ~ |
- cis16\< ['a( cis 'a] [d-2 e fis d-1]
- [g-3 fis g a-4] [a-3 b a \!g] |
- )fis4-"2\\_3" [e8-2 a-5] <fis4-4 d-2> <gis-5 e-3> |
- }
- >
- \stemboth;
+ r16\p_"legato"
+ \textstyle "finger";
+ ['d-1( 'fis-3 'd-1] ['a-2 'b-3 cis-4 'a-3]
+ [d-3 cis-2 d-1 e-2] [d-1 fis-3 e-2 d-1] |
+ \textstyle "finger";
+ \stemup;
+ )cis4-2 fis-5 ~ [fis8 fis-4] e4-3 ~ |
+ e16\< \stemboth ['a16( cis 'a] [d-2 e fis d-1]
+ [g-3 fis g a-4] [a-3 b a \!g] |
+ \stemup
+ )fis4-"2\\_3" [e8-2 a-5] <fis4-4 d-2> <gis-5 e-3> |
+ <a4-5( e> <fis-4 d-2> <[)g!16-5 d> fis-2 g-3 a-4]
+ \stemboth
+ [g-3 b a g] |
+ \textstyle "italic";
+ [fis_"dim." e fis-3 g] [fis-3 a-5 g fis]
+ \textstyle "finger";
+ e4-"2\\_5" ~ e16 ['e( 'fis 'g ] |
+ \textstyle "italic";
+ ['a-4_"dim." 'g-1 'a 'b] ['a-2 c-4 'b 'a]
+ ['g-1 'fis-2 'g-3 'a] ['g-3 'b 'a 'g] |
+ \stemup
+ )'fis4\p r16 [''b-1\< d-2 ''b~] <'g4-5 'e-3 ''b>
+ r16 ['cis-1 'e-2 \!cis] | % cis wants ~
+
+}
+
+two = \melodic{
+ \textstyle "finger";
+% ugh: koor
+% \translator Staff=bass \octave c; \stemup
+ fis4-1( e8-2 a4 a4 gis8-2 |
+ ) a8
+ \translator Staff=treble \octave c''; \stemdown
+ 'a4 'a8 'b4.-"2\\_1" cis8 ~ |
+ cis8
+ \translator Staff=bass \octave c; \stemup
+ a8 ~ [a d'] ~ d' d'4-> c'8 |
+ d'8
+ \translator Staff=treble \octave c''; \stemdown
+ d4-> cis8-1 ~ cis 'b4-1 'b8 |
+ r8 'a4 'a8
+ \translator Staff=bass \octave c; \stemup
+ [g'8-1( fis'-2] )e'4-1 ~ |
+ e'4 d' ~ [d'16 d-1 cis'-2 g-1] cis'4-2 ~ |
+ [c'8 a-3] d'4.-1 d'4-> cis'8-2 |
+ \translator Staff=treble \octave c''; \stemdown
+ 'd4 \skip 4*3; |
+}
+
+three = \melodic{
+ \octave c;
+ \stemdown;
+ d4-3 c-4 'b e-3 |
+ a16 ['a-5\mf( c-3 'a-5] [d-2 e-1 fis-2 d-4]
+ [g-1 fis-3 g a] [g b a g] |
+ )fis4 fis e a-4 |
+ d'16 \stemboth [d-5\f( fis-3 d-5] [a-2 b-1 c'-2 a-4]
+ [d'-1 c'-3 d' e'] [d'-4 fis'-2 e'-1 ) d'] |
+ [cis'-3 b-4 cis'-3 d'-2] [c'-4 e'-2 d'-3 c'-4]
+ \stemdown b4-5 [cis'8-4 b-3(] |
+ [a-4 )fis-5 b-2 a-3] [gis-4 e-5 a-3 g-4] |
+ fis4. d8-5 e4-5 a4-3 |
+ \stemboth
+ r16 [d-4( fis-2 d-4] [)g8-.-1 'g-.-5]
+ r16 [e-4( g-2 e-4] [)a8-. 'a-.-5] |
+}
+
+rh = \melodic{
+ \one
\bar "|.";
}
+
lh = \melodic{
- \octave c;
- \clef bass;
- s1 | s1 | s1 | s1
-% \multi 2 <
-% { \stemup; }
-% { \stemdown; }
-% >
-% \stemboth; |
+ \clef "bass";
+ \multi 2 <
+ \two
+ \three
+ >
\bar "|.";
}
+
global = \melodic{
\meter 4/4;
\key fis cis;
% Allegretto
% it would be nice to shut-off fingering...
\melodic \type Grandstaff <
- <
+ \type Staff=treble <
\global
- \rh
+% huh? try these iso directly!
+ \lh
+% \one
+% \two
>
- <
+ \type Staff=bass <
\global
- \lh
+ \rh
+% or try \two having here, iso above!
+% \two
+% \three
>
>
\paper{
+ \paper_twenty
+ linewidth= 195.\mm;
}
\midi{
\tempo 4 = 110;
--- /dev/null
+\documentclass{article} %UGH
+\usepackage{a4}
+
+\advance\oddsidemargin-30mm
+\evensidemargin\oddsidemargin
+% ugh, centre
+\advance\textwidth60mm
+\hsize210mm
+\vsize269mm
+\advance\topmargin-25mm
+\advance\textheight45mm
+\pagestyle{empty}
+
+\input titledefs
+
+\input lilyponddefs
+\def\interscoreline{\vskip2mm}
+%ugh
+\staffheight=20pt
+
+\font\numfont=feta-nummer10 scaled \magstep2
+\def\piece#1#2#3{%
+% \hbox to0pt{\vbox to\staffheight{\vss}}
+% \nopagebreak
+ \vbox to 0pt{\large\bf#3\vss}
+ \nopagebreak
+ \vbox to0pt{\vbox to4.5\staffheight{\vss\numfont#1}\vss}
+ \nopagebreak
+ \input#2%
+}
+
+\begin{document}
+
+\title{DOUZE PETITS PR\'ELUDES\\
+ TWAALF KLEINE PRELUDI\"EN}
+\composer{J.S.\ Bach (1685-1750)}
+
+\makelilytitle
+\kern-\staffheight
+
+\piece{1}{preludes-1}{Moderato}
+\vskip2\staffheight
+\piece{2}{preludes-2}{Moderato}
+\newpage
+\piece{3}{preludes-3}{Semplice e non troppo legato}
+\newpage
+\piece{4}{preludes-4}{Allegretto}
+
+\end{document}
+
% UGH UGH
\advance\oddsidemargin-30mm
\evensidemargin\oddsidemargin
-\advance\textwidth30mm
+% ugh, centre
+\advance\textwidth60mm
\addtolength{\textheight}{20mm}
\pagestyle{empty}
\begin{document}
% [a3 2\grace b] )
[2/3 a!8( ) gis] a \] c'4. a8 |
g!2. |
- [2/3 d'8\f cis'] d \] f'4. b8 |
+ [2/3 d'8\f cis'] d' \] f'4. b8 |
c'!2. |
}
Sil-8. ber-16 t\"o-4. nen8
\[2/3 Jed-4 es8 \] wei-4. che8
Herz.2.
+ \[2/3 Jed-4 es8 \] wei-4. che8
+ Herz.2.
}
$lyric_through1 = \lyric{
<e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
<f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
<e2 g\pp> <e4 g> |
- <f2\mf a(> <[as8.( c'> <)f16 )a]> |
+ <f2\mf a(> <[a8.( c'> <)f16 )a]> |
<e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
<f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
<e2. g> |
\score{
\melodic<
- \type Lyrics {
- \meter 3 /4;
- \skip 4 * 12;
- \$lyric_verse1
- \skip 4 * 24;
- \$lyric_verse2
- }
\type Staff { <
\global
{
+ \property Staff.instrument = "alto sax"
\skip 4 * 12;
\$vocal_verse1
\skip 4 * 24;
\$vocal_verse1
}
> }
-
+ \type Lyrics {
+ \meter 3 /4;
+ \skip 4 * 12;
+ \$lyric_verse1
+ \skip 4 * 24;
+ \$lyric_verse2
+ }
\type Grandstaff <
<
\global
bind def
/draw_cresc
{
+ staffrulethickness setlinewidth
/cresc_cont exch def
/cresc_ht exch def
/cresc_wd exch def
stroke
}
bind def
- staffheight 2 div
- /slurhtlimit exch def
+ staffheight 2 div /slurhtlimit exch def
/slurratio 0.3333 def
%
% (b*ratio)/(1 + b / htlimit)
/getslurcontrol
{
- slurhtlimit 90 div /slur_alpha exch def
+ slurhtlimit add /slurheight exch def
+ slurheight 90 div /slur_alpha exch def
slurratio 60 div slur_alpha div /slur_beta exch def
slur_beta mul 1 atan slur_alpha mul
} bind def
staffrulethickness setlinewidth
0 0 moveto
/slur_dir exch def
+ /slur_height exch def
/slur_dy exch def
/slur_dx exch def
slur_dy slur_dx lily_distance /slur_b exch def
- slur_b getslurcontrol
+ slur_b slur_height getslurcontrol
slur_dir mul /slur_ht exch def
- slur_b getslurcontrol /slur_indent exch def
+ slur_b slur_height getslurcontrol /slur_indent exch def
%
slur_dy slur_dx atan rotate
slur_indent slur_ht