Group_change_req 0
Head_column 0
Idealspacing 0
-Ineq_constrained_qp 0
+Ineq_constrained_qp 1
Input_translator 0
Item 0
Key_item 0
Note_req 0
Paper_col 1
Paper_score 1
-Paper_def 0
+Paper_def 1
Paperdef 0
Performer 0
Performer_group_performer 0
Rest_collision_engraver 0
Rest_req 0
Rhythmic_req 0
-Score 0
+Score 1
Score_column 0
Score_elem 0
Score_engraver 0
GNU LilyPond - The GNU Project Music Typesetter
-``WHAT IS GNU LilyPond?''
+WHAT IS LilyPond?
GNU LilyPond is the GNU Project Music typesetter: it reads a music
definition file and outputs formatted sheet music to a TeX file or
(mechanical) performances to MIDI files.
-WHY ?
+WHAT'S NEW SINCE VERSION 0.1?
-We want to create tools to produce production quality scores and parts
-of public domain music.
-
-
-WHAT'S NEW
-
-* LilyPond now includes a completely rewritten font: the Feta font.
-We did our best to copy the best symbol designs available and We're
-proud of the result. We hope you agree, so go check it out!
+* LilyPond now includes a completely new music font: the Feta font.
+ We were quite disappointed with available music fonts, so we rolled
+ our own. We did our best to copy the best symbol designs available,
+ and we think that we've succeeded in doing so. We're proud of the
+ result, and we hope you agree, so go check it out!
* More elegant output due to
* better spacing
- * better breaking
+ * better line breaking
* better font design
- * PostScript output for variable symbols.
+ * PostScript output for variable symbols
* Lots of bugfixes
* Better MIDI importing
-* Easier to use due to better scripts and input format enhancements.
+* Easier to use due to better scripts and input format enhancements
* MusixTeX not needed anymore
MIDI output lets you check if you have entered the correct notes.
MIDI to Mudela conversion through the mi2mu program.
-Multiple staffs in one score. Each staff can have a different meters.
-Multiple voices within one staff (up to four handled graciously);
-beams optionally shared between voices. Multiple scores within one
-input file. Each score is output to a different file.
+Font size selectable (26pt, 20pt, 16pt staffsize) for each score.
+Multiple staffs in one score. Each staff may have various different
+meters. Multiple voices within one staff (up to four handled
+graciously); beams optionally shared between voices. Multiple scores
+within one input file. Each score is output to a different file.
Beams, slurs, chords, super/subscripts (accents and text),
general n-plet (triplet, quadruplets, etc.), lyrics, transposition,
-5/Jan/98 LilyPond 0.1.39 1
+5/Jan/98 LilyPond 0.1.41 1
-5/Jan/98 LilyPond 0.1.39 2
+5/Jan/98 LilyPond 0.1.41 2
Document Really Ugly Bugs (coredumps, assert fails, etc)
+[GNU libc]
+
+The GNU extension memmem() is known to be buggy on linux libc 5.0.9
+and before. Glibc upto 2.0.5 also has problems with memmem (), but
+these should not affect LilyPond.
+
+
[Linux Intel]
LilyPond occasionally crashes while parsing the initialisation files.
=item *
A GNU system: GNU LilyPond is known to run on these GNU systems:
-Linux, AIX, Digital Unix and Solaris.
+Linux, FreeBSD, AIX, Digital Unix and Solaris.
If you have the Cygnus WINDOWS32 port of the GNU utils, it will even
work in Windows NT/95, but we don't promise to support it.
=item *
-A PostScript printer and/or viewer (such as Ghostscript).
+A PostScript printer and/or viewer (such as Ghostscript) is strongly
+recommended. Xdvi will show all embedded PostScript too if you have
+Ghostscript installed.
=back
make install
-should do the trick.
+should do the trick.
+
+If you are doing an upgrade, please remember to remove obsolete .pk
+and .tfm files of the fonts. A script has been provided to do the
+work, see F<bin/clean-fonts.sh>.
=head1 CAVEATS
Previous versions (before 0.1.39) used fonts from the TeX macro
package "MusixTeX". You can still use these, but they are not
supported. Since LilyPond's Feta font is much prettier, you'd be
-stupid to use them, but anyway, here are the installation instructions
-for those deprecated fonts.
+seriously misguided if you used them, but anyway, here are the
+installation instructions for those deprecated fonts.
[obsolete] I use the MusixTeX fonts those found in MusixTeX
=head1 DESCRIPTION
-Some questions that have been answered before.
+Some questions that have been answered before. (note: relative paths
+are meant to be relative to the source directory)
=head2 Installing
A: [This only applies if you don't do C<make install>, and develop out
of the source directory]
-
+I have a directory which contains all music related stuff,
+
~/something/
which contains:
lilypond/ # the directory as unpacked from the tarball
releases/ # directory for .tar.gz releases
patches/ # directory for patches between different releases
- test/
+ test/ # create tarballs and do diffs from this directory
~/something/lilypond/bin is in the PATH, and contains symlinks to the
-compiled executables.
+compiled executables. For some of the scripts to work, you have to set
+
+ LILYPOND_SOURCEDIR=/home/myself/something/lilypond
+
+in the environment.
If you don't use patches, you'd probably want to symlink
good idea, please let us know.
Be warned we will I<not> allow you to leave out the C<#> if the note
-already has an accidental. We won't allow
+already has an accidental, or if the key has a C-sharp. We won't allow
c# c % no way!
a()a()a
-Q: How do I place lyrics under I<each> of the staves in a score, as in
-choral music. I can work out how to put lyrics for each line all under
-the top line, or at the bottom but not between!
-
-A: You change the order lyrics and staves. You have to name all
-staves (lyric and melodic), otherwise they will end up in the same
-staff/lyricline
-
-
- \score {
- < \melodic \type Staff = "treble" \trebleMelody
- \lyric \type Lyrics = "tlyrics" \trebtext
- \type Staff = "bass" \melodic \bassMelody
- \lyric \type Lyrics = "blyrics" \basstext
- >
- \paper { }
- }
-
-
-
Q: I want to insert some TeX commands
output PostScript or render to an X window too), so using TeX will
make sources non-portable at some time.
-=head2 Miscellaneous
+=head2 Do you support ...
Q: Do you support pop songs (chords, single staff, lyrics)?
-A: Yes, see the F<twinkle-pop> example
+A: Yes, see the F<twinkle-pop> example.
Q: Do you support guitar chord diagrams?
fine points of this notation. We would welcome anyone who could give
this a try.
-Q: Do you support TAB notation
+Q: Do you support TAB notation?
A: No. The same as for the previous question goes, but TAB is a lot
more work than diagrams (TAB needs modification of Parser, Lexer,
Staff, Notehead, Stem code and all the code that creates these graphic
elements.)
+Q: Do you support multiple staff-sizes?
+
+A: Yes and no. At this time you can choose between 16 or 20 pt
+staff-size (you can have other sizes, but you need to tinker with the
+fonts to get those). The sizes can't be changed per staff (yet).
+Look at F<standchen.ly> for an example.
+
+
+=head2 How do I ....
+
Q: How do I change the TeX layout?
A: See F<lilyponddefs.tex>, it has some comments.
+Q: How do I place lyrics under I<each> of the staves in a score, as in
+choral music. I can work out how to put lyrics for each line all under
+the top line, or at the bottom but not between!
+
+A: You change the order lyrics and staves. You have to name all
+staves (lyric and melodic), otherwise they will end up in the same
+staff/lyricline
+
+
+ \score {
+ < \melodic \type Staff = "treble" \trebleMelody
+ \lyric \type Lyrics = "tlyrics" \trebtext
+ \type Staff = "bass" \melodic \bassMelody
+ \lyric \type Lyrics = "blyrics" \basstext
+ >
+ \paper { }
+ }
+
+
+Q: How do I put more than one marking on a note.
+
+A: You can stack them
+
+ c4^"a"^"b"
+
+or use spacing-notes to put markings at different horizontal positions
+
+ < c1
+ { s4\ff s4^"text" s4-\marcato s4 }
+ >
+
=head2 Development
"fait accompli", ie., to send me a patch.
+Q: I made some code, how do I get you to include it?
+
+A: Send in a patch:
+
+ diff -urN old-file new-file > patch
+
+or
+
+ diff -urN old-directory/ new-directory/ > patch
+
+Alternatively, you can use bin/make-patch.py
Q: How do I learn the C++ code?
=head2 Running
-Q: I don't get midi-output, even if I use B<-M>
+Q: There are lots of warning messages for the printing, all
+beginning with:
+
+ dvilj4l: warning: Invalid keyword or value in \special -
+
+A: You should use dvips and ghostscript to print it: the slurs and
+beams are PS C<\special> commands
+
+
+Q: My symbols are all messed up after I upgraded, and I get
+dvi-checksum errors!
+
+A: We mucked with the fonts in the upgrade. Remove I<all> previous
+fonts, including the .pk and .tfm fonts in F</var/lib/texmf>. A
+script automating this has been included, see F<bin/clean-fonts.sh>
+
+Q: I don't get midi-output, even if I use B<-M>!
A: Your \score should include a \midi block, eg.
Make incompatible mudela version non-fatal.
-=item B<--postscript, -p>,
+=item B<--no-postscript, -P>,
-Try to use PostScript where possible.
+Don't generate embedded PostScript (or MetaFont) symbols, but resort to
+less beautiful fixed-size versions.
+
+LilyPond uses PostScript for variable symbols where possible. (For some
+of these symbols runtime MetaFont source will be genarated too. These are
+not used unless you also include the appropriate TeX file too. See
+F<tex/fetdefs.tex>.)
=back
=head1 PROBLEMS
-There is an extensive list of todoes and bugs. See F<TODO>. In
-general, try to find out
+There is an extensive list of todoes and bugs. See F<TODO>. If you
+have a problem you should try to find out
=over 4
Send a description of the bug itself.
=item *
-Send it to bug-gnu-music@gnu.org.
+Send it to bug-gnu-music@gnu.org (you don't have to subscribe
+to this mailinglist).
=back
=item ftp://pcnov095.win.tue.nl/pub/lilypond/development
-=item ftp://alpha.gnu.org/gnu/lilypond/development
+=item ftp://sca.uwaterloo.ca/pub/lilypond
+
+=item [your mirror here]
=back
\section{Who is who}
-This document describes two different things
+This document describes various things, but let's first point out the
+different parts of the package, and their names.
\begin{description}
\item[Mudela] A language for defining music.
-
\item[LilyPond] A package (the only one existing :-) which can
read a mudela file and interpret it.
-
- The name ``LilyPond'' does not have much to do with the purpose of
- the package, but we have a special emotional attachment with the
- name. (Of course we are not telling why we chose it; this is an
- excercise for the reader, most of the vital clues are contained in
- the documentation and the source code. If you have guess, then let
- me know)
+\item[Feta] A (Meta)Font of musical symbols. LilyPond uses it to
+ render sheet music.
\end{description}
\section{Overview}
-
-Let's start with a very simple example, we will enter ``twinkle twinkle
-little star.'' We start with the most important part: the notes.
+Let's start with a very simple example, we will enter ``twinkle
+twinkle little star.'' We start with the most important part: the
+notes.
Imagine being in a music-lesson, and that you made an error playing
``twinkle twinkle''. Your teacher asks you to read out loud the
% -*-latex-*-
% this document should be run through the mudela-book script after lilypond
-% has been installed.
+% has been installed. The rules have been precooked into the
+% Documentation/Rules.make file; do
+%
+% make out/mudela-man.dvi
+%
+% or
+%
+% mudela-book --outdir=out/ --outname=mudela-course.mudtex mudela-course.doc
+% latex '\nonstopmode \input out/mudela-course.mudtex'
+
\documentclass{article}
\usepackage{a4wide}
For compilation you need.
+\bo A GNU system: GNU LilyPond is known to run on these
- GNU systems: Linux, AIX, Digital Unix and Solaris.
+ GNU systems: Linux, FreeBSD, AIX, Digital Unix and
+ Solaris.
If you have the Cygnus WINDOWS32 port of the GNU
utils, it will even work in Windows NT/95, but we
+\bo TeX
+\bo A PostScript printer and/or viewer (such as
- Ghostscript).
+ Ghostscript) is strongly recommended. Xdvi will show
+ all embedded PostScript too if you have Ghostscript
+ installed.
R\bR\bR\bRE\bE\bE\bEC\bC\bC\bCO\bO\bO\bOM\bM\bM\bMM\bM\bM\bME\bE\bE\bEN\bN\bN\bND\bD\bD\bDE\bE\bE\bED\bD\bD\bD
Although not strictly necessary, these are recommended to
+\bo Perl-5. Most documentation was created with the
perl's Plain Old Documentation. (I use 5.003)
- +\bo Python. Although perl is nice, python is better. We
- will shift towards python for build scripts
-
-5/Jan/98 LilyPond 0.1.39 1
+11/Jan/98 LilyPond 0.1.41 1
INSTALL(1) LilyPond documentation INSTALL(1)
+ +\bo Python. Although perl is nice, python is better. We
+ will shift towards python for build scripts
+
+\bo GNU find
+\bo A fast computer (a full page of music typically takes
configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf
- Since GNU LilyPond currently is beta, you are advised to
- also use
-
-5/Jan/98 LilyPond 0.1.39 2
+11/Jan/98 LilyPond 0.1.41 2
INSTALL(1) LilyPond documentation INSTALL(1)
+ Since GNU LilyPond currently is beta, you are advised to
+ also use
+
--enable-debugging
--enable-checking
source-tree, by overriding the setting for the output
directory.
- Example: on my system, I do debugging and lots compiling.
- For this I use the configuration as follows:
-
-5/Jan/98 LilyPond 0.1.39 3
+11/Jan/98 LilyPond 0.1.41 3
INSTALL(1) LilyPond documentation INSTALL(1)
+ Example: on my system, I do debugging and lots compiling.
+ For this I use the configuration as follows:
+
configure --prefix=~ --enable-debugging --enable-printing --enable-checking
make all
should do the trick.
+ If you are doing an upgrade, please remember to remove
+ obsolete .pk and .tfm files of the fonts. A script has
+ been provided to do the work, see _\bb_\bi_\bn_\b/_\bc_\bl_\be_\ba_\bn_\b-_\bf_\bo_\bn_\bt_\bs_\b._\bs_\bh.
+
C\bC\bC\bCA\bA\bA\bAV\bV\bV\bVE\bE\bE\bEA\bA\bA\bAT\bT\bT\bTS\bS\bS\bS
+\bo The -O2 option to gcc triggers a gcc bug on DEC Alpha
in dstream.cc. You should turn off this flag for this
This is what the output looks like over here:
+
+
+
+
+
+
+
+
+
+11/Jan/98 LilyPond 0.1.41 4
+
+
+
+
+
+INSTALL(1) LilyPond documentation INSTALL(1)
+
+
GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0
Parsing ... [/home/hw/share/lilypond/init//
<..etc..>
hw:~/musix/spacer$ xdvi someinput&
[1] 855
-
-
-5/Jan/98 LilyPond 0.1.39 4
-
-
-
-
-
-INSTALL(1) LilyPond documentation INSTALL(1)
-
-
Check out the input files, some of them have comments
Please refer to the man page for more information.
Previous versions (before 0.1.39) used fonts from the TeX
macro package "MusixTeX". You can still use these, but
they are not supported. Since LilyPond's Feta font is
- much prettier, you'd be stupid to use them, but anyway,
- here are the installation instructions for those
- deprecated fonts.
-
- [obsolete] I use the MusixTeX fonts those found in
- MusixTeX T.73. Beware, the clef symbol seems to have
- changed its position in some versions, (notably Egler's,
- a.k.a. OpusTeX). The MusixTeX fonts are included in
- MusixTeX (T73 or better), which can be had from any CTAN
- site, e.g. at
+ much prettier, you'd be seriously misguided if you used
+ them, but anyway, here are the installation instructions
+ for those deprecated fonts.
- ftp://ftp.shsu.edu/tex-archive/macros/musixtex/taupin
- ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin
- ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin
+11/Jan/98 LilyPond 0.1.41 5
-5/Jan/98 LilyPond 0.1.39 5
+INSTALL(1) LilyPond documentation INSTALL(1)
+ [obsolete] I use the MusixTeX fonts those found in
+ MusixTeX T.73. Beware, the clef symbol seems to have
+ changed its position in some versions, (notably Egler's,
+ a.k.a. OpusTeX). The MusixTeX fonts are included in
+ MusixTeX (T73 or better), which can be had from any CTAN
+ site, e.g. at
+ ftp://ftp.shsu.edu/tex-archive/macros/musixtex/taupin
-INSTALL(1) LilyPond documentation INSTALL(1)
+ ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin
+ ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin
You only need the contents of the _\bm_\bf_\b/ subdirectory of the
package. The primary site of the Taupin version is
-
-
-
-
-
-
-
-
-
-
-
-
-
-5/Jan/98 LilyPond 0.1.39 6
+11/Jan/98 LilyPond 0.1.41 6
+pl 41
+ - warn for score with multiple Music blocks
+ - bf: \plet (MB)
+ - \textsharp in 16pt
+ - malloc frobnifying
+ - more fontsizes: 26pt, 11pt, 13pt
+ - \textstyle "bold"
+ - .rpm: remove old fonts
+
+pl 40.jcn2
+ - bf: typo scores.cc
+ - bfs: non-default base constructor calls
+ - bfs: virtual destructors
+ - standje.ly: the real standchen (first bit)
+ - gcc 2.8 compile
+ - nicer scsii-menuetto
+
+pl 40.jcn1
+ - bf: breaking of :| bar
+ - bf: lyric substitution of _ -> ' ' flower/libc-ext:memmem
+ - no slope=0 beams between stafflines
+ - bf: tex without lily-ps-defs
+ - bf: embedded mf shift: added '%' to \embeddedps
+ - doos compile
+
+******
+jan 12
+pl 40
+ - some doco fixes
+ - debian diffs (AF)
+
+pl 39.jcn2
+ - bf: bit smarter atan() for feta-sleur (thanks wendy)
+ - bf: y quantise of multiple down beams (typo)
+ - minor doc fixes
+ - bf: distribute mfdeps and moved from mf/out/mfdeps to mf/mf.dep
+ - some changes to ANNOUNCE
+ - fixes for simple slur/tie placement
+ - embedded MF fonts identified by parameters -> reusable runtime fonts
+ - clean-embeds.sh
+ - runtime MF beams: feta-beum.mf
+ - bf: enable switching PS off
+ - updated runtime MF feta-sleur.mf with new PS slur algorithm
+
+******
+jan 5 1998
pl 39
- 0.2 ANNOUNCE sketch
- unix style paths for LILYINCLUDE env
grep for TODO and ugh/ugr
0.2:
+ * forced breakpoints
- * beam quanting
+ * --metafont
* disable spaces in TeX stuff
* Fix profiling. gprof bugreport?
+ * GS: /undefined in draw_beam after XDVI magnification.
+
PROJECTS
* Unicode support?
* Documentation
- Doc Mutopia (Music To The People)
- Doc (C) stuff of sheet music
+ - a better format? SGML? TeX? Info?
- a tutorial
* TeX spanners , use texbeam.cc as an example (smallish)
TOPLEVEL_MAJOR_VERSION = 0
TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 39
+TOPLEVEL_PATCH_LEVEL = 41
TOPLEVEL_MY_PATCH_LEVEL =
# use the above to send patches, always empty for released version:
rm -vf `grep -li "Creator: GNU LilyPond" *.midi`
rm -vf `grep -li "Creator: ly2dvi" *.tex`
rm -vf `find -name 'core'`
-rm -vf `find -name *.orig`
-rm -vf `find -name *.rej`
+rm -vf `find -name '*.orig'`
+rm -vf `find -name '*.rej'`
# docxx mess
--- /dev/null
+#!/bin/sh
+
+rm -f feta-sleur-[0-9x\-]*.mf
+rm -f feta-sleur-[0-9x\-]*.log
+rm -f feta-beum-[0-9x\-]*.mf
+rm -f feta-beum-[0-9x\-]*.log
+rm -f feta-embed.aux
+rm -f missfont.log
+clean-fonts sleur
+clean-fonts beum
1)
WHAT=$1;;
esac
+
+if [ X$LILYPOND_SOURCEDIR = X ];
+then
+ LILYPOND_SOURCEDIR=..
+fi
+
+if [ -d /var/lib/texmf ]; then
+ TEXDIR=/var/lib/texmf
+elif [ -d /var/texfonts ]; then
+ TEXDIR=/var/texfonts
+else
+ TEXDIR=/var/
+fi
+
+#if [ -f $LILYPOND_SOURCEDIR/config.status ]; then
+#TEXDIR=`awk -F % '/TEXPREFIX/ {print $3}' $LILYPOND_SOURCEDIR/config.status`
+
# remove possibly stale .pk/.tfm files
echo> /tmp/cleaning-font-dummy
-FILES=`find /var/lib/texmf/ -name "feta*$WHAT*"`
+FILES=`find $TEXDIR -name "feta*$WHAT*tfm" -or -name "feta*$WHAT*pk"`
echo removing $FILES
rm $FILES /tmp/cleaning-font-dummy
--- /dev/null
+#!@PYTHON@
+
+#
+# flower.py -- python flower lib
+#
+# source file of the GNU LilyPond music typesetter
+#
+# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+#
+
+class File:
+ """silly wrapper for Python file object."""
+ def __init__ (self,nm, mode='r'):
+ if nm:
+ self.file_ = open (nm, mode);
+ elif mode == 'w':
+ self.file_ = sys.stdout
+ else:
+ self.file_ = sys.stdin
+
+ self.eof_ = 0;
+ def readline (self):
+ l= self.file_.readline ();
+ if not l:
+ self.eof_ = 1;
+ return l;
+ def write (self, str):
+ self.file_.write (str)
+ def eof (self):
+ return self.eof_
+ def close (self):
+ self.file_.close ()
+ def __del__ (self):
+ self.close ();
+
def extension(ext,nm):
- ext = '\.' + ext
+ ext = '\\.' + ext
return regex.search(ext, nm) <> -1
+def c_extension(nm):
+ return extension('hh',nm) or extension('cc',nm) \
+ or extension('icc', nm) or extension('tcc',nm)
def select_commentification(nm):
- if extension('hh',nm) or extension('cc',nm):
+ if c_extension (nm):
return c_commentify
elif extension('py',nm) or extension('pl',nm) or extension('sh',nm):
return sh_commentify
raise 'help'
for nm in files:
- if extension('hh', nm):
+ if extension('hh', nm) or extension('icc', nm) or extension('tcc', nm):
my_options.add_hdr_def = 1
if my_options.commentify == None:
my_options.commentify = select_commentification(nm)
fi
p1=`find $LILYTOP -name '*.hh' |egrep -v out/`
p2=`find $LILYTOP -name '*.cc' |egrep -v out/`
-doc++ -d docxx/ -S -k -p $p1 $p2
+doc++ -d docxx/ -S -k -p $BANNEROPT $p1 $p2
#!@PYTHON@
+
+import sys
+import os
+
+lilypath =''
+try:
+ lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
+except IndexError:
+ lilypath = os.environ['HOME'] + 'musix/current'
+lilypath = lilypath + '/bin/'
+sys.path.append(lilypath)
+
+
from lilypython import *
import getopt
import pipes
-mp_version = '2'
+mp_version = '0.3'
class Options:
def __init__(self):
The WWW site is my test-suite for LilyPond, I usually don't
distribute versions that fail to complete this script """
+import sys
+import os
+
+lilypath =''
+try:
+ lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
+except IndexError:
+ lilypath = os.environ['HOME'] + 'musix/current'
+lilypath = lilypath + '/bin/'
+sys.path.append(lilypath)
+
from lilypython import *
import __main__
import glob
depth = ''
makewebsite_id = "<!make_website!>";
-id_str = "make-website 0.6";
+id_str = "make-website 0.7";
tar = "tar";
make = "make";
mailaddress = "unknown"
"gallina",
"twinkle",
"collisions",
- "font",
+ "font16",
"font20",
#"scales",
"rhythm",
import sys;
import os;
+
+version = "0.2"
input_re = compile('^[ \t]*input *\([^;]+\);')
postfixes = ['log', 'dvi', '2602gf', 'tfm']
+def identify ():
+ return "mf-deps.py %s" % version
+
+
def print_one(x):
print x
return reduce(line_concat, dependencies)
-
+print "# Automatically generated by %s\n" % identify ()
for file in sys.argv[1:]: # skip programname
t = Targetdeps(file)
import os
import sys
import time
+from flower import *
begin_autometric_re = regex.compile('@{')
end_autometric_re = regex.compile('@}')
autometric_re = regex.compile('@{\(.*\)@}')
-version = '0.4'
-
-class File:
- """silly wrapper for Python file object."""
- def __init__(self,nm, mode='r'):
- if nm:
- self.file_ = open(nm, mode);
- elif mode == 'w':
- self.file_ = sys.stdout
- else:
- self.file_ = sys.stdin
-
- self.eof_ = 0;
- def readline(self):
- l= self.file_.readline();
- if not l:
- self.eof_ = 1;
- return l;
- def write(self, str):
- self.file_.write(str)
- def eof(self):
- return self.eof_
- def close(self):
- self.file_.close()
- def __del__(self):
- self.close();
+version = '0.5'
class Feta_file(File):
"""Read Feta metrics from a metafont log-file."""
self.texfile = Indentable_file(texfile_nm, 'w')
- headerstr = '%% Creator: %s\n%% Automatically generated on %s\n%% Do not edit' % \
- (program_id(), today_str())
+ headerstr = '%% Creator: %s\n%% Automatically generated on\n%% Do not edit' % \
+ (program_id() )
self.lyfile.write(headerstr)
self.texfile.write(headerstr)
#!@PYTHON@
+import sys
+import os
+
+lilypath =''
+try:
+ lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
+except IndexError:
+ lilypath = os.environ['HOME'] + 'musix/current'
+lilypath = lilypath + '/bin/'
+sys.path.append(lilypath)
+
from lilypython import *
os.chdir(lilydirs.topdir)
# -*-Perl-*-
-$reldir="/home/hw/musix/releases";
+$reldir="/home/hanwen/musix/releases";
use FileHandle;
use Getopt::Long;
+lilypond (0.1.39-2) unstable; urgency=low
+
+ * debian/control:
+ - Description: Remove the note about installing musixtex or
+ musixtex-fonts.
+ - Added "Conflicts: musixtex-fonts".
+
+ -- Anthony Fok <foka@debian.org> Tue, 6 Jan 1998 02:42:56 -0700
+
+lilypond (0.1.39-1) unstable; urgency=low
+
+ * New upstream LilyPond '98 "New Year Gift" release.
+ * debian/control:
+ - No longer Recommends: "musixtex" or "musixtex-fonts" because
+ LilyPond no longer needs them.
+ - Therefore, Section: is changed from "contrib/tex" to "tex".
+ LilyPond can finally go into the main distribution. Hurray!
+ * debian/rules: Now also dh_installdocs ANNOUNCE-0.1 and ONEWS.
+ * preinst, postinst, postrm: Added #DEBHELPER#.
+ * preinst, postrm: Changed #!/bin/bash to #!/bin/sh.
+
+ -- Anthony Fok <foka@debian.org> Mon, 5 Jan 1998 18:42:30 -0700
+
+lilypond (0.1.38-1) unstable; urgency=low
+
+ * New upstream Xmas release.
+ * Applied patch patch-0.1.38.jcn1 from Jan Nieuwenhuizen.
+ * Have fun, Merry Christmas and a Happy 1998. -- Han-Wen Nienhuys
+
+ -- Anthony Fok <foka@debian.org> Wed, 24 Dec 1997 16:38:14 -0700
+
+lilypond (0.1.37-1) unstable; urgency=low
+
+ * New upstream release
+ * Minor modifications to debian/rules due to changes in
+ debhelper 0.32.
+
+ -- Anthony Fok <foka@debian.org> Fri, 12 Dec 1997 11:11:12 -0700
+
+lilypond (0.1.36-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Anthony Fok <foka@debian.org> Tue, 9 Dec 1997 18:33:50 -0700
+
lilypond (0.1.35-1) unstable; urgency=low
* New upstream release
Source: lilypond
-Section: contrib/tex
+Section: tex
Priority: optional
Maintainer: Anthony Fok <foka@debian.org>
Standards-Version: 2.3.0.1
Package: lilypond
Architecture: any
Depends: ${shlibs:Depends}
-Recommends: tetex-base, musixtex | musixtex-fonts
+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.
- .
- Note: LilyPond uses the fonts from MusiXTeX. Please install the package
- musixtex or musixtex-fonts when you install lilypond.
.
URL: http://www.stack.nl/~hanwen/lilypond/
Authors: Han-Wen Nienhuys <hanwen@stack.nl>
-This package was debianized by Anthony Fok foka@debian.org on
+This package was debianized by Anthony Fok <foka@debian.org> on
Wed, 6 Aug 1997 04:30:28 -0600
It was downloaded from
- ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-0.1.35.tar.gz
+ ftp://pcnov095.win.tue.nl/pub/lilypond/development/
+ lilypond-0.1.39.tar.gz
It is also available from:
ftp://alpha.gnu.org/gnu/
Copyright:
- GNU LilyPond is Copyright (C) 1996,1997
+ GNU LilyPond is Copyright (C) 1996-1998
Jan Nieuwenhuizen & Han-Wen Nienhuys
This program is free software; you can redistribute it and/or modify
#
# by Anthony Fok <foka@debian.org>
# Initial release: Sun, 26 Oct 1997 03:23:00 -0700
-# Last modified: Sun, 23 Nov 1997 03:04:16 -0700
+# Last modified: Mon, 5 Jan 1998 18:36:51 -0700
use strict;
use File::Copy;
print " $pkg_name configuration completed.\n";
print " Please read /usr/doc/$package/README.Debian to get started.\n";
+
+print << `EOF`
+#DEBHELPER#
+EOF
-#!/bin/bash -e
+#!/bin/sh
#
# postrm script for the Debian GNU/Linux lilypond package
# by Anthony Fok <foka@debian.org>
# This is free software; see the GNU General Public Licence
# version 2 or later for copying conditions. There is NO warranty.
-# Last modified: Mon, 10 Nov 1997 22:44:37 -0700
+# Last modified: Mon, 5 Jan 1998 18:38:11 -0700
+
+set -e
package=lilypond
font_supplier=public
font_typeface=lilypond
std_TEXMF=/usr/lib/texmf
+#DEBHELPER#
+
if [ "`which kpsetool`" ]; then
TEXMF=`kpsetool -v '$TEXMF'`
fi
-#!/bin/bash -e
+#!/bin/sh
#
# preinst script for the Debian GNU/Linux lilypond package
# by Anthony Fok <foka@debian.org>
# This is free software; see the GNU General Public Licence
# version 2 or later for copying conditions. There is NO warranty.
-# Last modified: Tue, 11 Nov 1997 01:25:15 -0700
+# Last modified: Mon, 5 Jan 1998 18:39:30 -0700
+
+set -e
package=lilypond
font_supplier=public
font_typeface=lilypond
std_TEXMF=/usr/lib/texmf
+#DEBHELPER#
+
if [ "`which kpsetool`" ]; then
TEXMF=`kpsetool -v '$TEXMF'`
fi
dh_installdirs usr/lib/texmf/doc
$(MAKE) prefix=`pwd`/debian/tmp/usr install
ln -fs ../../../doc/lilypond debian/tmp/usr/lib/texmf/doc/lilypond
- dh_installdocs BUGS TODO NEWS DEDICATION ANNOUNCE README \
+ 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
dh_compress
dh_fixperms
dh_suidregister
- dh_installdebfiles
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
# dh_makeshlibs
dh_du
dh_md5sums
+pl 34.jcn2
+ - memmem optimise
+
+pl 35
+ - bf: libc-extension: memmem
+
+pl 34
+ - string.icc
+ - String_convert::precision_str: double to string with fixed precision
+
pl 33
- String naming
- unix style paths
MAJOR_VERSION = 1
MINOR_VERSION = 1
-PATCH_LEVEL = 33
+PATCH_LEVEL = 35
# use to send patches, always empty for released version:
MY_PATCH_LEVEL = # include separator: "-1" or ".a"
#
// forward substitution
for (int i=0; i < n; i++)
{
- Real sum (0.0);
- for (int j=0; j < i; j++)
- sum += y (j) * L(i,j);
- y (i) = (rhs (i) - sum)/L(i,i);
+ Real sum (0.0);
+ for (int j=0; j < i; j++)
+ sum += y (j) * L(i,j);
+ y (i) = (rhs (i) - sum)/L(i,i);
}
for (int i=0; i < n; i++)
- y (i) /= D(i);
+ y (i) /= D(i);
// backward subst
Vector &x (out); // using input as return val.
for (int i=n-1; i >= 0; i--)
{
- Real sum (0.0);
- for (int j=i+1; j < n; j++)
- sum += L(j,i)*x (j);
- x (i) = (y (i) - sum)/L(i,i);
+ Real sum (0.0);
+ for (int j=i+1; j < n; j++)
+ sum += L(j,i)*x (j);
+ x (i) = (y (i) - sum)/L(i,i);
}
}
int b = L.band_i();
assert (n == L.dim());
- out.set_dim (n);
+ out.set_dim (n);
Vector y;
y.set_dim (n);
// forward substitution
for (int i=0; i < n; i++)
{
- Real sum (0.0);
- for (int j= 0 >? i - b; j < i; j++)
- sum += y (j) * L(i,j);
- y (i) = (rhs (i) - sum)/L(i,i);
+ Real sum (0.0);
+ for (int j= 0 >? i - b; j < i; j++)
+ sum += y (j) * L(i,j);
+ y (i) = (rhs (i) - sum)/L(i,i);
}
for (int i=0; i < n; i++)
- y (i) /= D(i);
+ y (i) /= D(i);
// backward subst
Vector &x (out); // using input as return val.
for (int i=n-1; i >= 0; i--)
{
- Real sum (0.0);
- for (int j=i+1; j <= i + b&&j < n ; j++)
- sum += L(j,i)*x (j);
- x (i) = (y (i) - sum)/L(i,i);
+ Real sum (0.0);
+ for (int j=i+1; j <= i + b&&j < n ; j++)
+ sum += L(j,i)*x (j);
+ x (i) = (y (i) - sum)/L(i,i);
}
}
{
if (L.band_b())
{
- band_matrix_solve (x,rhs);
+ band_matrix_solve (x,rhs);
}
else
- full_matrix_solve (x,rhs);
+ full_matrix_solve (x,rhs);
}
Vector
Choleski_decomposition::full_matrix_decompose (Matrix const & P)
{
- int n = P.dim();
+ int n = P.dim();
L.unit();
for (int k= 0; k < n; k++)
{
- for (int j = 0; j < k; j++)
- {
- Real sum (0.0);
- for (int l=0; l < j; l++)
- sum += L(k,l)*L(j,l)*D(l);
- L(k,j) = (P(k,j) - sum)/D(j);
- }
- Real sum=0.0;
+ for (int j = 0; j < k; j++)
+ {
+ Real sum (0.0);
+ for (int l=0; l < j; l++)
+ sum += L(k,l)*L(j,l)*D(l);
+ L(k,j) = (P(k,j) - sum)/D(j);
+ }
+ Real sum=0.0;
- for (int l=0; l < k; l++)
- sum += sqr (L(k,l))*D(l);
- Real d = P(k,k) - sum;
- D(k) = d;
+ for (int l=0; l < k; l++)
+ sum += sqr (L(k,l))*D(l);
+ Real d = P(k,k) - sum;
+ D(k) = d;
}
}
for (int i= 0; i < n; i++)
{
- for (int j = 0 >? i - b; j < i; j++)
- {
- Real sum (0.0);
- for (int l=0 >? i - b; l < j; l++)
- sum += L(i,l)*L(j,l)*D(l);
- L(i,j) = (P(i,j) - sum)/D(j);
- }
- Real sum=0.0;
+ for (int j = 0 >? i - b; j < i; j++)
+ {
+ Real sum (0.0);
+ for (int l=0 >? i - b; l < j; l++)
+ sum += L(i,l)*L(j,l)*D(l);
+ L(i,j) = (P(i,j) - sum)/D(j);
+ }
+ Real sum=0.0;
- for (int l=0 >? i - b; l < i; l++)
- sum += sqr (L(i,l))*D(l);
- Real d = P(i,i) - sum;
- D(i) = d;
+ for (int l=0 >? i - b; l < i; l++)
+ sum += sqr (L(i,l))*D(l);
+ Real d = P(i,i) - sum;
+ D(i) = d;
}
L.try_set_band();
assert (L.band_i() == P.band_i ());
*/
Choleski_decomposition::Choleski_decomposition (Matrix const & P)
- : L(P.dim()), D(P.dim ())
+ : L(P.dim()), D(P.dim ())
{
#ifdef PARANOID
assert ((P-P.transposed()).norm ()/P.norm () < EPS);
#endif
if (P.band_b())
- band_matrix_decompose (P);
+ band_matrix_decompose (P);
else
- full_matrix_decompose (P);
+ full_matrix_decompose (P);
#ifdef PARANOID
Vector inv (n);
for (int i = 0; i < n; i++)
{
- e_i.set_unit (i);
- solve (inv, e_i);
- for (int j = 0 ; j<n; j++)
- invm (i,j) = inv (j);
+ e_i.set_unit (i);
+ solve (inv, e_i);
+ for (int j = 0 ; j<n; j++)
+ invm (i,j) = inv (j);
}
#ifdef PARANOID
Directed_graph_node::copy_edges_out (Directed_graph_node const &s)
{
for (int i=0; i < s.edge_out_l_arr_.size(); i++)
- add (s.edge_out_l_arr_[i]);
+ add (s.edge_out_l_arr_[i]);
}
void
#ifndef NDEBUG
for (int i=0; i < edge_out_l_arr_.size(); i++)
{
- assert (edge_out_l_arr_[i]->
- edge_in_l_arr_.find_l (this));
+ assert (edge_out_l_arr_[i]->
+ edge_in_l_arr_.find_l (this));
}
for (int i=0; i < edge_in_l_arr_.size(); i++)
- assert (edge_in_l_arr_[i]->contains_b (this));
+ assert (edge_in_l_arr_[i]->contains_b (this));
#endif
}
PARANOID_OK();
for (int i=0; i < edge_out_l_arr_.size();)
{
- if (edge_out_l_arr_[i]== d_l)
- remove_edge_out_idx (i);
- else
- i++;
+ if (edge_out_l_arr_[i]== d_l)
+ remove_edge_out_idx (i);
+ else
+ i++;
}
PARANOID_OK();
}
Directed_graph_node::unlink()
{
#ifdef PARANOID
- PARANOID_OK();
+ PARANOID_OK();
- Link_array<Directed_graph_node> t = edge_out_l_arr_;
- t.concat (edge_in_l_arr_);
+ Link_array<Directed_graph_node> t = edge_out_l_arr_;
+ t.concat (edge_in_l_arr_);
#endif
- while (edge_out_l_arr_.size())
- remove_edge_out_idx (0);
+ while (edge_out_l_arr_.size())
+ remove_edge_out_idx (0);
- while (edge_in_l_arr_.size())
- remove_edge_in (edge_in_l_arr_[0]);
+ while (edge_in_l_arr_.size())
+ remove_edge_in (edge_in_l_arr_[0]);
#ifdef PARANOID
- for (int i =0; i < t.size(); i++)
- t[i]->OK();
+ for (int i =0; i < t.size(); i++)
+ t[i]->OK();
#endif
}
{
PARANOID_OK();
if (!dep_l)
- return ;
+ return ;
dep_l->edge_in_l_arr_.push (this);
edge_out_l_arr_.push (dep_l);
PARANOID_OK();
{
#ifdef NPRINT
if (b)
- cout << _("Debug printout disabled, see the installation guide.") << endl;
+ cout << _("Debug printout disabled. Compiled with NPRINT.") << endl;
#endif
flower_check_debug = b;
int
Cursor<T>::operator-(Cursor<T> rhs) const
{
- assert (rhs.list == list);
+ assert (&rhs.list_ == &list_);
int dif = 0;
// search from *this on further up (positive difference)
struct Getopt_long;
struct Matrix;
struct String_data;
+struct FlowerString;
struct String_handle;
struct String_convert;
struct String;
public:
void junk();
- Pointer_list (Pointer_list const &) { set_empty(); }
+ Pointer_list (Pointer_list const& l) : Link_list<T> (l) { set_empty(); }
Pointer_list() { }
~Pointer_list() { junk (); }
};
static String i2dec_str (int i, int length_i, char ch);
static String rational_str (Rational);
static String pointer_str (void const *);
+ static String precision_str (double x, int n);
static String i64_str (I64, char const * fmt = 0);
};
#include "string-handle.hh"
-/**
+/*
technically incorrect, but lets keep it here: this is a
catch all place for this stuff.
*/
#include "international.hh"
+/* Libg++ also has a String class. Programming errors can lead to
+ confusion about which String is in use. Uncomment the following if you have
+ unexplained crashes after mucking with String
+ */
+
+// #define String FlowerString
+
/**
Intuitive string class. provides
protected:
String_handle strh_;
- bool null_terminated();
+ bool null_terminated ();
public:
/** init to empty string. This is needed because other
constructors are provided.*/
- String() { }
+ String ();
String (Rational);
/// String s = "abc";
String (bool);
/// return a "new"-ed copy of contents
- Byte* copy_byte_p() const; // return a "new"-ed copy of contents
+ Byte* copy_byte_p () const; // return a "new"-ed copy of contents
- char const* ch_C() const;
- Byte const* byte_C() const;
- char* ch_l();
- Byte* byte_l();
+ char const* ch_C () const;
+ Byte const* byte_C () const;
+ char* ch_l ();
+ Byte* byte_l ();
String &operator =(String const & source);
void operator += (char const* s) { strh_ += s; }
void operator += (String s);
- bool empty_b () const;
+ bool empty_b () const;
#if 0
/** is the string empty?
Ugh-ugh-thank-you-cygnus. W32 barfs on this
*/
- operator bool () const;
+ operator bool () const;
{
- return length_i ();
+ return length_i ();
}
#endif
void append (String);
void prepend (String);
- char operator [](int n) const { return strh_[n]; }
+ /**
+ Return a char. UNSAFE because it may change strlen () result
+ */
+ char &operator [](int n);
+ char operator [](int n) const;
/// return n leftmost chars
String left_str (int n) const;
String right_str (int n) const;
/// return uppercase of *this
- String upper_str() const;
+ String upper_str () const;
/// return lowercase of *this
- String lower_str() const;
+ String lower_str () const;
/// return the "esrever" of *this
- String reversed_str() const;
+ String reversed_str () const;
/// return a piece starting at index_i (first char = index_i 0), length n
int index_i (String) const;
int index_any_i (String) const;
- void to_upper();
- void to_lower();
+ void to_upper ();
+ void to_lower ();
/// provide Stream output
void print_on (ostream& os) const;
/// the length of the string
- int length_i() const;
+ int length_i () const;
// ***** depreciated
- int len() const {
- return length_i();
+ int len () const {
+ return length_i ();
}
/// convert to an integer
- int value_i() const;
+ int value_i () const;
/// convert to a double
- double value_f() const;
+ double value_f () const;
};
#include "compare.hh"
-
INSTANTIATE_COMPARE(String const &, String::compare_i);
+#ifdef STRING_UTILS_INLINED
+#ifndef INLINE
+#define INLINE inline
+#endif
+#include "string.icc"
+/* we should be resetting INLINE. oh well. */
+#endif
+
+
// because char const* also has an operator ==, this is for safety:
-inline bool operator==(String s1, char const* s2){
+inline bool operator==(String s1, char const* s2)
+{
return s1 == String (s2);
}
inline bool operator==(char const* s1, String s2)
return os;
}
+
+
#endif
--- /dev/null
+/*
+ string.icc -- implement String inlines
+
+ source file of the Flower Library
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ */
+
+#ifndef STRING_ICC
+#define STRING_ICC
+
+
+INLINE
+char &
+String::operator [](int n)
+{
+ return (char &) strh_[n];
+}
+
+INLINE
+char
+String::operator [](int n) const
+{
+ return strh_[n];
+}
+
+INLINE
+String::String ()
+{
+}
+
+
+
+#endif /* STRING_ICC */
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
*/
+
#include "interval.hh"
#include "real.hh"
#include "interval.tcc"
+
template INTERVAL__INSTANTIATE(Real);
Real
char*
strnlwr (char* start_l ,int n)
{
- char * p = start_l + n;
- while (--p >= start_l)
+ char * p = start_l + n;
+ while (--p >= start_l)
{
- *p = tolower (*p); /* a macro on some compilers */
+ *p = tolower (*p); /* a macro on some compilers */
}
- return start_l;
+ return start_l;
}
char*
strnupr (char* start_l, int n)
{
- char * p = start_l + n;
- while (--p >= start_l)
+ char * p = start_l + n;
+ while (--p >= start_l)
{
- *p = toupper (*p); /* a macro on some compilers */
+ *p = toupper (*p); /* a macro on some compilers */
}
- return start_l;
+ return start_l;
}
#if !HAVE_MEMMEM
/** locate a substring. #memmem# finds the first occurrence of
- #needle# in #haystack#
- */
+ #needle# in #haystack#. This is not ANSI-C.
-char *
-memmem (Byte const * haystack, int haystack_len,
- Byte const *needle,int needle_len)
+ The prototype is not in accordance with the Linux Programmer's
+ Manual v1.15, but it is with /usr/include/string.h */
+
+Byte *
+memmem (Byte const *needle,int needle_len,
+ Byte const *haystack, int haystack_len)
{
- Byte const * end_haystack = haystack + haystack_len - needle_len;
- Byte const * end_needle = needle + needle_len ;
+ Byte const * end_haystack = haystack + haystack_len - needle_len + 1;
+ Byte const * end_needle = needle + needle_len ;
- /* Ahhh ... Some minimal lowlevel stuff. This *is* nice; Varation
- is the spice of life */
- while (haystack < end_haystack)
+ /* Ahhh ... Some minimal lowlevel stuff. This *is* nice; Varation
+ is the spice of life */
+ while (haystack < end_haystack)
{
- Byte const *subneedle_l = needle;
- Byte const *subhaystack_l = haystack;
- while (subneedle_l < end_needle)
+ Byte const *subneedle_l = needle;
+ Byte const *subhaystack_l = haystack;
+ while (subneedle_l < end_needle)
{
- if (*subneedle_l++ != *subhaystack_l++)
- goto next; // yeah. I should be prosecuted.
+ if (*subneedle_l++ != *subhaystack_l++)
+ {
+ haystack ++;
+ continue;
+ }
}
- // completed the needle. Gotcha.
- return (char*) haystack;
- next:
- haystack++;
+ // completed the needle. Gotcha.
+ return (Byte *) haystack;
}
- return 0;
+ return 0;
}
+
#endif
Byte *
memrchr (Byte const * p, int n, char c)
{
- const Byte * q = p+n;
- while (q > p)
+ const Byte * q = p+n;
+ while (q > p)
{
- if (*--q == c)
- return (Byte*)q;
+ if (*--q == c)
+ return (Byte*)q;
}
- return 0;
+ return 0;
}
inline void
my_swap (T &t1, T &t2, T &tmp)
{
- tmp = t1;
- t1 = t2;
- t2 = tmp;
+ tmp = t1;
+ t1 = t2;
+ t2 = tmp;
}
Byte*
strrev (Byte* byte_l, int length_i)
{
- Byte tmp_byte;
+ Byte tmp_byte;
- Byte* left_l = byte_l;
- Byte* right_l = byte_l + length_i;
+ Byte* left_l = byte_l;
+ Byte* right_l = byte_l + length_i;
- while (right_l > left_l)
+ while (right_l > left_l)
{
- my_swap (*right_l-- , *left_l++ , tmp_byte);
+ my_swap (*right_l-- , *left_l++ , tmp_byte);
}
- return byte_l;
+ return byte_l;
}
#if ! HAVE_SNPRINTF
int snprintf (char *str, size_t,
- char const *format, ...)
+ char const *format, ...)
{
- va_list ap;
- va_start (ap, format);
- int i = vsprintf (str, format, ap);
- va_end (ap);
- return i;
+ va_list ap;
+ va_start (ap, format);
+ int i = vsprintf (str, format, ap);
+ va_end (ap);
+ return i;
}
#endif
}
/**
- Make a string from a single character.
+Make a string from a single character.
@param
#n# is a repetition count, default value is 1
snprintf (buffer, STRING_BUFFER_LEN, "%p", l); // assume radix 10
return String (buffer);
}
+
+/**
+ Convert a double to a string.
+
+ @param
+ #n# is the number of nonzero digits
+ */
+String
+String_convert::precision_str (double x, int n)
+{
+ String format = "%." + String (0 >? n - 1) + "e";
+ String str = double_str (abs (x), format.ch_C ());
+
+ int exp = str.right_str (3).value_i ();
+ str = str.left_str (str.len () - 4);
+
+ while (str[str.len () - 1] == '0')
+ str = str.left_str (str.len () - 1);
+ if (str[str.len () - 1] == '.')
+ str = str.left_str (str.len () - 1);
+
+ if (exp == 0)
+ return (sign (x) > 0 ? str : "-" + str);
+
+ str = str.left_str (1) + str.cut (2, INT_MAX);
+ int dot = 1 + exp;
+ if (dot <= 0)
+ str = "0." + String ('0', -dot) + str;
+ else if (dot >= str.len ())
+ str += String ('0', dot - str.len ());
+ else if (( dot > 0) && (dot < str.len ()))
+ str = str.left_str (dot) + '.' + str.cut (dot, INT_MAX);
+ else
+ assert (0);
+
+ return (sign (x) > 0 ? str : "-" + str);
+}
+
return -1;
char const* me = strh_.ch_C();
- char const* p = memrchr (me, length_i(), c);
+ char const* p = memrchr ((Byte*)me, length_i(), c);
if (p)
return p - me;
return -1;
}
/**
- find the substring.
+ find a substring.
@return
1 index of leftmost occurrence of #searchfor#
String::index_i (String searchfor) const
{
char const* me = strh_.ch_C();
- char const* p = (char const *) memmem (
- me, length_i(), searchfor.ch_C(), searchfor.length_i ());
+
+ char const* p = (char const *)
+ memmem (me, length_i(), searchfor.ch_C(), searchfor.length_i ());
if (p)
return p - me;
return String_convert::dec2_f (*this);
}
-
/*
stringutil.cc -- generate non-inline members.
+ This should be in a separate file, because one can include the .icc
+ only once.
+
source file of the LilyPond music typesetter
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> */
#ifdef STRING_DEBUG
-#include <sys/types.h>
-#include <memory.h>
-void*
-mymemmove (void* dest, void const* src, size_t n)
-{
- return memcpy (dest, src, n); // wohltempererit: 69006
-}
#define memmove mymemmove
#endif
#include "string-handle.hh"
#include "string-data.hh"
+#include "string.hh"
#include "string-data.icc"
#include "string-handle.icc"
+#include "string.icc"
+
+#ifdef STRING_DEBUG
+#include <sys/types.h>
+#include <memory.h>
+void*
+mymemmove (void* dest, void const* src, size_t n)
+{
+ return memcpy (dest, src, n);
+}
+#endif
#
MODULE_LIBDEPS=check-flower-deps
-MODULE_LIBES = -lflower
+MODULE_LIBES = -lflower
#
void reg_test (fptr f)
{
- if (!test_arr_p)
- test_arr_p = new Array<fptr>;
- test_arr_p->push(f);
+ if (!test_arr_p)
+ test_arr_p = new Array<fptr>;
+ test_arr_p->push(f);
}
int
main()
{
- if (test_arr_p) {
- for (int i=0; i < test_arr_p->size(); i++)
- (*test_arr_p)[i] ();
- }
+ if (test_arr_p) {
+ for (int i=0; i < test_arr_p->size(); i++)
+ (*test_arr_p)[i] ();
+ }
}
void
matrix()
{
- int N=10;
- Matrix m(N,N), q(N,N);
- Vector v(N);
+ int N=10;
+ Matrix m(N,N), q(N,N);
+ Vector v(N);
- for (int i=0; i < N; i++) {
- v(i) =i;
- for (int j=0; j < N; j++) {
- m(i,j) = i+j;
- q(i,j) = (abs(i-j) > 3) ?0 :i-j;
- }
+ for (int i=0; i < N; i++) {
+ v(i) =i;
+ for (int j=0; j < N; j++) {
+ m(i,j) = i+j;
+ q(i,j) = (abs(i-j) > 3) ?0 :i-j;
}
+ }
- cout << "v: " << String(v);
- cout << "m: " << String(m );
- cout << "q: " << String(q);
- cout << "m*q; " << String(m*q);
- cout << "m*m: " << String(m*m);
- m.OK();
- cout << "m: " << String(m);
- cout << "q.band " << q.band_i() << endl;
- q.try_set_band();
- cout << "q(B): " << q;
- q.OK();
- Matrix sum(q+q);
- cout << "q + q " << sum;
- q.OK();
- cout << "q*q: " << q*q;
- q.OK();
+ cout << "v: " << String(v);
+ cout << "m: " << String(m );
+ cout << "q: " << String(q);
+ cout << "m*q; " << String(m*q);
+ cout << "m*m: " << String(m*m);
+ m.OK();
+ cout << "m: " << String(m);
+ cout << "q.band " << q.band_i() << endl;
+ q.try_set_band();
+ cout << "q(B): " << q;
+ q.OK();
+ Matrix sum(q+q);
+ cout << "q + q " << sum;
+ q.OK();
+ cout << "q*q: " << q*q;
+ q.OK();
- Matrix hilbert(N,N), h2(hilbert);
- for (int i=0; i < N; i++) {
- for (int j=0; j < N; j++) {
- hilbert(i,j) = 1/Real(i+j+1);
- h2 (i,j) = (abs(i-j) > 3) ?0 : hilbert(i,j);
- }
+ Matrix hilbert(N,N), h2(hilbert);
+ for (int i=0; i < N; i++) {
+ for (int j=0; j < N; j++) {
+ hilbert(i,j) = 1/Real(i+j+1);
+ h2 (i,j) = (abs(i-j) > 3) ?0 : hilbert(i,j);
}
- h2.try_set_band();
- Choleski_decomposition ch(h2);
- cout << "red Hilbert " << h2;
- cout << "choleski " << ch.L;
- Matrix T =ch.L.transposed();
- cout << "L^T " << T;
- cout << "L * L^T" << ch.L * T;
- cout << "H2^{-1} * H2" << h2 * ch.inverse();
+ }
+ h2.try_set_band();
+ Choleski_decomposition ch(h2);
+ cout << "red Hilbert " << h2;
+ cout << "choleski " << ch.L;
+ Matrix T =ch.L.transposed();
+ cout << "L^T " << T;
+ cout << "L * L^T" << ch.L * T;
+ cout << "H2^{-1} * H2" << h2 * ch.inverse();
}
ADD_TEST(matrix);
int compare(int i, int j)
{
- return i-j;
+ return i-j;
}
void
pqtest()
{
- PQueue<int> pq;
+ PQueue<int> pq;
- for (int i=0; i < 10; i++) {
- int r = rand()/10000;
- pq.insert(r);
- cout << "adding: " << r<< endl;
- }
- while (pq.size()) {
- cout << "getting : "<< flush;
- cout << pq.get() << "\n";
- }
+ for (int i=0; i < 10; i++) {
+ int r = rand()/10000;
+ pq.insert(r);
+ cout << "adding: " << r<< endl;
+ }
+ while (pq.size()) {
+ cout << "getting : "<< flush;
+ cout << pq.get() << "\n";
+ }
}
ADD_TEST(pqtest);
void
ctors()
{
- cout << "constructors"<<endl;
-
+ cout << "constructors"<<endl;
+ {
String str( "hai" );
- String def;
- String fromi(10);
- String fromc('c');
- String fromf(1.32e-2, "%g");
-
cout << str << endl;
- cout << def << endl;
+ }
+ {
+ String fromi(10);
cout << fromi<< endl;
+ }
+ {String fromf(1.32e-2, "%g");
+ cout << fromf<< endl;
+ }
+ {
+ String def;
+ cout << def << endl;
+ }
+ {
+ String fromc('c');
cout << fromc<< endl;
- cout << fromf<< endl;
+ }
}
-
void
cmp()
{
- Array<String> a;
- a.push("abcd");
- a.push("zxy");
- a.push("abc");
- a.push("");
- a.sort(String::compare_i);
- cout << "compares: "<<endl;
- for (int i=0; i < a.size(); i++)
- cout << a[i] << endl;
+ Array<String> a;
+ a.push("abcd");
+ a.push("zxy");
+ a.push("abc");
+ a.push("");
+ a.sort(String::compare_i);
+ cout << "compares: "<<endl;
+ for (int i=0; i < a.size(); i++)
+ cout << a[i] << endl;
}
void
searching()
{
- String hay = "foobarbazblub";
-
- char c = 'b';
- String cstr =c;
- String set = "bar";
- cout << "hay = \"" << hay << "\" len="<< hay.length_i()<<endl;
- cout << "index_i('"<< c<<"') " << c << "= " << hay.index_i(c) <<endl;
- cout << "last_index_i('"<< c<<"') " << c << "= " << hay.index_last_i(c) <<endl;
-// cout << "last index of cstr " << c << ": " << hay.index_last_i(cstr) <<endl;
-// cout << "index_last_i(\""<<set<<"\"): " << hay.index_last_i(set) <<endl;
- cout << "index_i(\""<<set<<"\"): " << hay.index_i(set) <<endl;
- cout << "index_any(\"" << set << "\"): " << cstr << ": " << hay.index_any_i(cstr) <<endl;
+ String hay = "foobarbazblub";
+
+ char c = 'b';
+ String cstr =c;
+ String set = "bar";
+ cout << "hay = \"" << hay << "\" len="<< hay.length_i()<<endl;
+ cout << "index_i('"<< c<<"') " << c << "= " << hay.index_i(c) <<endl;
+ cout << "last_index_i('"<< c<<"') " << c << "= " << hay.index_last_i(c) <<endl;
+ // cout << "last index of cstr " << c << ": " << hay.index_last_i(cstr) <<endl;
+ // cout << "index_last_i(\""<<set<<"\"): " << hay.index_last_i(set) <<endl;
+ cout << "index_i(\""<<set<<"\"): " << hay.index_i(set) <<endl;
+ cout << "index_any(\"" << set << "\"): " << cstr << ": " << hay.index_any_i(cstr) <<endl;
void
kutenpeer()
{
- String str( "hai" );
- for (int i=-1; i < str.length_i()+2; i++) {
- cout<<" left_str(" << i<<"): " << str.left_str( i ) << endl;
- cout<<" right_str( "<<i<<"): " << str.right_str( i ) << endl;
- }
- str = "blonde haren";
- cout << str<<endl;
- cout << "mid(2,6)="<<str.mid_str(2,6)<<endl;
- cout << "nomid(2,6)="<<str.nomid_str(2,6)<<endl;
+ String str( "hai" );
+ for (int i=-1; i < str.length_i()+2; i++) {
+ cout<<" left_str(" << i<<"): " << str.left_str( i ) << endl;
+ cout<<" right_str( "<<i<<"): " << str.right_str( i ) << endl;
+ }
+ str = "blonde haren";
+ cout << str<<endl;
+ cout << "mid(2,6)="<<str.cut(2,6)<<endl;
+ cout << "nomid(2,6)="<<str.nomid_str(2,6)<<endl;
}
bool
test_empty_b( String str )
{
- cout << "`" << str << "' is ";
+ cout << "`" << str << "' is ";
- if ( str == String( "" ) ) {
- cout << "empty" << endl;
- return true;
- }
+ if ( str == String( "" ) ) {
+ cout << "empty" << endl;
+ return true;
+ }
- cout << "not empty" << endl;
- return false;
+ cout << "not empty" << endl;
+ return false;
}
void
stringtest()
{
- ctors();
- cmp();
- searching();
- kutenpeer();
- String str( "hai" );
- cout << str << endl;
- cout << "left" << endl;
- str += " daar";
- cout << str << endl;
-
-// str = String( "Hallo" ) + " daaR" + '!'; // no go on doze-s gcc2.7.2?
- str = String( "Hallo" ) + " daaR" + "!";
- cout << str << endl;
-
- cout << "up: " << str.upper_str() << " down: " << str.lower_str()<<endl;
+ ctors();
+ cmp();
+ searching();
+ kutenpeer();
+ String str( "hai" );
+ cout << str << endl;
+ cout << "left" << endl;
+ str += " daar";
+ cout << str << endl;
+
+ // str = String( "Hallo" ) + " daaR" + '!'; // no go on doze-s gcc2.7.2?
+ str = String( "Hallo" ) + " daaR" + "!";
+ cout << str << endl;
+
+ cout << "up: " << str.upper_str() << " down: " << str.lower_str()<<endl;
- if ( test_empty_b( str ) )
- cout << "failed";
+ if ( test_empty_b( str ) )
+ cout << "failed";
- String fn = "";
- if ( !test_empty_b( fn ) )
- cout << "failed";
+ String fn = "";
+ if ( !test_empty_b( fn ) )
+ cout << "failed";
- fn = "";
- fn += "";
- delete fn.copy_byte_p();
- delete str.copy_byte_p();
-
- cout << String_convert::bin2hex_str( String( (char)0xff ) ) << endl;
- cout << "-1:" << String_convert::i2hex_str( -1, 2, '0' );
- cout << endl;
+ fn = "";
+ fn += "";
+ delete fn.copy_byte_p();
+ delete str.copy_byte_p();
+
+ cout << String_convert::bin2hex_str( String( (char)0xff ) ) << endl;
+ cout << "-1:" << String_convert::i2hex_str( -1, 2, '0' );
+ cout << endl;
}
--- /dev/null
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from out/feta11.log
+% name=\symboltables {
+ "rests" = \table {
+ "0" "\\wholerest" -0.00\pt 4.13\pt -1.72\pt 0.00\pt
+ "1" "\\halfrest" -0.00\pt 4.13\pt -0.00\pt 1.72\pt
+ "0o" "\\outsidewholerest" -1.72\pt 5.84\pt -1.72\pt 0.28\pt
+ "1o" "\\outsidehalfrest" -1.72\pt 5.84\pt -0.28\pt 1.72\pt
+ "2" "\\quartrest" -0.00\pt 2.97\pt 2.06\pt 9.90\pt
+ "3" "\\eighthrest" -0.00\pt 3.67\pt 2.75\pt 7.81\pt
+ "4" "\\sixteenthrest" -0.00\pt 4.27\pt -0.00\pt 7.81\pt
+ "5" "\\thirtysecondrest" -0.00\pt 4.81\pt -0.00\pt 10.56\pt
+ "6" "\\sixtyfourthrest" -0.00\pt 5.16\pt -0.00\pt 13.31\pt
+ "7" "\\hundredtwentyeighthrest" -0.00\pt 5.75\pt -0.00\pt 16.06\pt
+ }
+ "accidentals" = \table {
+ "1" "\\sharp" -0.00\pt 3.03\pt -4.13\pt 4.13\pt
+ "0" "\\natural" -0.00\pt 1.83\pt -4.13\pt 4.13\pt
+ "-1" "\\flat" -0.33\pt 2.20\pt -1.38\pt 5.50\pt
+ "-2" "\\flatflat" -0.33\pt 3.99\pt -1.38\pt 5.50\pt
+ "2" "\\sharpsharp" -0.00\pt 2.75\pt -1.38\pt 1.38\pt
+ }
+ "dots" = \table {
+ "dot" "\\dot" -0.00\pt 1.24\pt -0.62\pt 0.62\pt
+ "repeatcolon" "\\repeatcolon" -0.00\pt 1.24\pt -1.38\pt 1.38\pt
+ }
+ "balls" = \table {
+ "-1" "\\brevisball" -0.00\pt 5.50\pt -1.51\pt 1.51\pt
+ "-1l" "\\brevisledger" -1.38\pt 6.88\pt -0.28\pt 0.28\pt
+ "-2" "\\longaball" -0.00\pt 5.50\pt -1.51\pt 1.51\pt
+ "-2l" "\\longaledger" -1.38\pt 6.88\pt -0.28\pt 0.28\pt
+ "0" "\\wholeball" -0.00\pt 5.45\pt -1.51\pt 1.51\pt
+ "0l" "\\wholeledger" -1.36\pt 6.81\pt -0.28\pt 0.28\pt
+ "1" "\\halfball" -0.00\pt 3.79\pt -1.51\pt 1.51\pt
+ "1l" "\\halfledger" -0.95\pt 4.74\pt -0.28\pt 0.28\pt
+ "2" "\\quartball" -0.00\pt 3.63\pt -1.51\pt 1.51\pt
+ "2l" "\\quartledger" -0.91\pt 4.54\pt -0.28\pt 0.28\pt
+ }
+ "scripts" = \table {
+ "ufermata" "\\ufermata" -3.64\pt 3.64\pt -0.21\pt 3.99\pt
+ "dfermata" "\\dfermata" -3.64\pt 3.64\pt -3.99\pt 0.21\pt
+ "sforzato" "\\sforzatoaccent" -2.47\pt 2.47\pt -1.38\pt 1.38\pt
+ "staccato" "\\staccato" -0.41\pt 0.41\pt -0.41\pt 0.41\pt
+ "ustaccatissimo" "\\ustaccatissimo" -0.55\pt 0.55\pt -0.20\pt 2.75\pt
+ "dstaccatissimo" "\\dstaccatissimo" -0.55\pt 0.55\pt -2.75\pt 0.20\pt
+ "tenuto" "\\tenuto" -2.47\pt 2.47\pt -0.17\pt 0.17\pt
+ "umarcato" "\\umarcato" -1.38\pt 1.38\pt -0.00\pt 3.03\pt
+ "dmarcato" "\\dmarcato" -1.38\pt 1.38\pt -3.03\pt 0.00\pt
+ "open" "\\ouvert" -1.10\pt 1.10\pt -1.38\pt 1.38\pt
+ "stopped" "\\plusstop" -1.51\pt 1.51\pt -1.51\pt 1.51\pt
+ "upbow" "\\upbow" -1.79\pt 1.79\pt -0.00\pt 5.72\pt
+ "downbow" "\\downbow" -2.06\pt 2.06\pt -0.00\pt 3.67\pt
+ "turn" "\\turn" -3.01\pt 3.01\pt -1.46\pt 1.46\pt
+ "trill" "\\trill" -2.75\pt 2.75\pt -0.00\pt 6.19\pt
+ "pedalheel" "\\pedalheel" -1.38\pt 1.38\pt -1.38\pt 1.83\pt
+ "pedaltoe" "\\pedaltoe" -1.38\pt 1.38\pt -0.00\pt 4.13\pt
+ "flageolet" "\\flageolet" -1.47\pt 1.47\pt -1.47\pt 1.47\pt
+ }
+ "flags" = \table {
+ "u3" "\\eighthflag" -0.14\pt 3.39\pt -8.43\pt 0.14\pt
+ "u4" "\\sixteenthflag" -0.14\pt 3.39\pt -9.80\pt 0.14\pt
+ "u5" "\\thirtysecondflag" -0.14\pt 3.39\pt -11.87\pt 0.14\pt
+ "u6" "\\sixtyfourthflag" -0.14\pt 3.39\pt -14.62\pt 0.14\pt
+ "d3" "\\deighthflag" -0.14\pt 3.76\pt -0.14\pt 8.02\pt
+ "d4" "\\dsixteenthflag" -0.14\pt 3.76\pt -0.14\pt 8.43\pt
+ "d5" "\\dthirtysecondflag" -0.14\pt 3.76\pt -0.14\pt 10.77\pt
+ "d6" "\\dsixtyfourthflag" -0.14\pt 3.76\pt -0.14\pt 12.14\pt
+ }
+ "clefs" = \table {
+ "alto" "\\altoclef" -2.75\pt 10.24\pt -5.50\pt 5.50\pt
+ "alto_change" "\\caltoclef" -2.20\pt 8.19\pt -4.40\pt 4.40\pt
+ "bass" "\\bassclef" -1.38\pt 9.90\pt -6.88\pt 2.75\pt
+ "bass_change" "\\cbassclef" -1.10\pt 7.92\pt -5.50\pt 2.20\pt
+ "violin" "\\violinclef" -2.40\pt 10.28\pt -8.25\pt 13.75\pt
+ "violin_change" "\\cviolinclef" -2.08\pt 8.06\pt -6.60\pt 11.00\pt
+ }
+ % } % $name
--- /dev/null
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from out/feta13.log
+% name=\symboltables {
+ "rests" = \table {
+ "0" "\\wholerest" -0.00\pt 4.88\pt -2.03\pt 0.00\pt
+ "1" "\\halfrest" -0.00\pt 4.88\pt -0.00\pt 2.03\pt
+ "0o" "\\outsidewholerest" -2.03\pt 6.91\pt -2.03\pt 0.33\pt
+ "1o" "\\outsidehalfrest" -2.03\pt 6.91\pt -0.33\pt 2.03\pt
+ "2" "\\quartrest" -0.00\pt 3.51\pt 2.44\pt 11.70\pt
+ "3" "\\eighthrest" -0.00\pt 4.33\pt 3.25\pt 9.24\pt
+ "4" "\\sixteenthrest" -0.00\pt 5.04\pt -0.00\pt 9.24\pt
+ "5" "\\thirtysecondrest" -0.00\pt 5.69\pt -0.00\pt 12.49\pt
+ "6" "\\sixtyfourthrest" -0.00\pt 6.10\pt -0.00\pt 15.74\pt
+ "7" "\\hundredtwentyeighthrest" -0.00\pt 6.79\pt -0.00\pt 18.99\pt
+ }
+ "accidentals" = \table {
+ "1" "\\sharp" -0.00\pt 3.58\pt -4.88\pt 4.88\pt
+ "0" "\\natural" -0.00\pt 2.17\pt -4.88\pt 4.88\pt
+ "-1" "\\flat" -0.39\pt 2.60\pt -1.63\pt 6.50\pt
+ "-2" "\\flatflat" -0.39\pt 4.71\pt -1.63\pt 6.50\pt
+ "2" "\\sharpsharp" -0.00\pt 3.25\pt -1.63\pt 1.63\pt
+ }
+ "dots" = \table {
+ "dot" "\\dot" -0.00\pt 1.46\pt -0.73\pt 0.73\pt
+ "repeatcolon" "\\repeatcolon" -0.00\pt 1.46\pt -1.63\pt 1.63\pt
+ }
+ "balls" = \table {
+ "-1" "\\brevisball" -0.00\pt 6.50\pt -1.79\pt 1.79\pt
+ "-1l" "\\brevisledger" -1.63\pt 8.13\pt -0.33\pt 0.33\pt
+ "-2" "\\longaball" -0.00\pt 6.50\pt -1.79\pt 1.79\pt
+ "-2l" "\\longaledger" -1.63\pt 8.13\pt -0.33\pt 0.33\pt
+ "0" "\\wholeball" -0.00\pt 6.44\pt -1.79\pt 1.79\pt
+ "0l" "\\wholeledger" -1.61\pt 8.04\pt -0.33\pt 0.33\pt
+ "1" "\\halfball" -0.00\pt 4.48\pt -1.79\pt 1.79\pt
+ "1l" "\\halfledger" -1.12\pt 5.60\pt -0.33\pt 0.33\pt
+ "2" "\\quartball" -0.00\pt 4.29\pt -1.79\pt 1.79\pt
+ "2l" "\\quartledger" -1.07\pt 5.37\pt -0.33\pt 0.33\pt
+ }
+ "scripts" = \table {
+ "ufermata" "\\ufermata" -4.31\pt 4.31\pt -0.24\pt 4.71\pt
+ "dfermata" "\\dfermata" -4.31\pt 4.31\pt -4.71\pt 0.24\pt
+ "sforzato" "\\sforzatoaccent" -2.92\pt 2.92\pt -1.63\pt 1.63\pt
+ "staccato" "\\staccato" -0.49\pt 0.49\pt -0.49\pt 0.49\pt
+ "ustaccatissimo" "\\ustaccatissimo" -0.65\pt 0.65\pt -0.20\pt 3.25\pt
+ "dstaccatissimo" "\\dstaccatissimo" -0.65\pt 0.65\pt -3.25\pt 0.20\pt
+ "tenuto" "\\tenuto" -2.92\pt 2.92\pt -0.20\pt 0.20\pt
+ "umarcato" "\\umarcato" -1.63\pt 1.63\pt -0.00\pt 3.58\pt
+ "dmarcato" "\\dmarcato" -1.63\pt 1.63\pt -3.58\pt 0.00\pt
+ "open" "\\ouvert" -1.30\pt 1.30\pt -1.63\pt 1.63\pt
+ "stopped" "\\plusstop" -1.79\pt 1.79\pt -1.79\pt 1.79\pt
+ "upbow" "\\upbow" -2.11\pt 2.11\pt -0.00\pt 6.76\pt
+ "downbow" "\\downbow" -2.44\pt 2.44\pt -0.00\pt 4.33\pt
+ "turn" "\\turn" -3.55\pt 3.55\pt -1.72\pt 1.72\pt
+ "trill" "\\trill" -3.25\pt 3.25\pt -0.00\pt 7.31\pt
+ "pedalheel" "\\pedalheel" -1.63\pt 1.63\pt -1.63\pt 2.17\pt
+ "pedaltoe" "\\pedaltoe" -1.63\pt 1.63\pt -0.00\pt 4.88\pt
+ "flageolet" "\\flageolet" -1.73\pt 1.73\pt -1.73\pt 1.73\pt
+ }
+ "flags" = \table {
+ "u3" "\\eighthflag" -0.16\pt 4.01\pt -9.96\pt 0.16\pt
+ "u4" "\\sixteenthflag" -0.16\pt 4.01\pt -11.59\pt 0.16\pt
+ "u5" "\\thirtysecondflag" -0.16\pt 4.01\pt -14.02\pt 0.16\pt
+ "u6" "\\sixtyfourthflag" -0.16\pt 4.01\pt -17.27\pt 0.16\pt
+ "d3" "\\deighthflag" -0.16\pt 4.44\pt -0.16\pt 9.47\pt
+ "d4" "\\dsixteenthflag" -0.16\pt 4.44\pt -0.16\pt 9.96\pt
+ "d5" "\\dthirtysecondflag" -0.16\pt 4.44\pt -0.16\pt 12.72\pt
+ "d6" "\\dsixtyfourthflag" -0.16\pt 4.44\pt -0.16\pt 14.35\pt
+ }
+ "clefs" = \table {
+ "alto" "\\altoclef" -3.25\pt 12.10\pt -6.50\pt 6.50\pt
+ "alto_change" "\\caltoclef" -2.60\pt 9.68\pt -5.20\pt 5.20\pt
+ "bass" "\\bassclef" -1.63\pt 11.70\pt -8.13\pt 3.25\pt
+ "bass_change" "\\cbassclef" -1.30\pt 9.36\pt -6.50\pt 2.60\pt
+ "violin" "\\violinclef" -2.83\pt 12.15\pt -9.75\pt 16.25\pt
+ "violin_change" "\\cviolinclef" -2.46\pt 9.52\pt -7.80\pt 13.00\pt
+ }
+ % } % $name
-% Creator: mf-to-table.py version 0.4
-% Automatically generated on Mon Jan 5 15:23:51 1998
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
% Do not edit
% input from out/feta16.log
% name=\symboltables {
--- /dev/null
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from out/feta19.log
+% name=\symboltables {
+ "rests" = \table {
+ "0" "\\wholerest" -0.00\pt 7.13\pt -2.97\pt 0.00\pt
+ "1" "\\halfrest" -0.00\pt 7.13\pt -0.00\pt 2.97\pt
+ "0o" "\\outsidewholerest" -2.97\pt 10.09\pt -2.97\pt 0.48\pt
+ "1o" "\\outsidehalfrest" -2.97\pt 10.09\pt -0.48\pt 2.97\pt
+ "2" "\\quartrest" -0.00\pt 5.13\pt 3.56\pt 17.10\pt
+ "3" "\\eighthrest" -0.00\pt 6.33\pt 4.75\pt 13.50\pt
+ "4" "\\sixteenthrest" -0.00\pt 7.37\pt -0.00\pt 13.50\pt
+ "5" "\\thirtysecondrest" -0.00\pt 8.32\pt -0.00\pt 18.25\pt
+ "6" "\\sixtyfourthrest" -0.00\pt 8.92\pt -0.00\pt 23.00\pt
+ "7" "\\hundredtwentyeighthrest" -0.00\pt 9.93\pt -0.00\pt 27.75\pt
+ }
+ "accidentals" = \table {
+ "1" "\\sharp" -0.00\pt 5.23\pt -7.13\pt 7.13\pt
+ "0" "\\natural" -0.00\pt 3.17\pt -7.13\pt 7.13\pt
+ "-1" "\\flat" -0.57\pt 3.80\pt -2.38\pt 9.50\pt
+ "-2" "\\flatflat" -0.57\pt 6.89\pt -2.38\pt 9.50\pt
+ "2" "\\sharpsharp" -0.00\pt 4.75\pt -2.38\pt 2.38\pt
+ }
+ "dots" = \table {
+ "dot" "\\dot" -0.00\pt 2.14\pt -1.07\pt 1.07\pt
+ "repeatcolon" "\\repeatcolon" -0.00\pt 2.14\pt -2.38\pt 2.38\pt
+ }
+ "balls" = \table {
+ "-1" "\\brevisball" -0.00\pt 9.50\pt -2.61\pt 2.61\pt
+ "-1l" "\\brevisledger" -2.38\pt 11.88\pt -0.48\pt 0.48\pt
+ "-2" "\\longaball" -0.00\pt 9.50\pt -2.61\pt 2.61\pt
+ "-2l" "\\longaledger" -2.38\pt 11.88\pt -0.48\pt 0.48\pt
+ "0" "\\wholeball" -0.00\pt 9.41\pt -2.61\pt 2.61\pt
+ "0l" "\\wholeledger" -2.35\pt 11.76\pt -0.48\pt 0.48\pt
+ "1" "\\halfball" -0.00\pt 6.54\pt -2.61\pt 2.61\pt
+ "1l" "\\halfledger" -1.64\pt 8.18\pt -0.48\pt 0.48\pt
+ "2" "\\quartball" -0.00\pt 6.27\pt -2.61\pt 2.61\pt
+ "2l" "\\quartledger" -1.57\pt 7.84\pt -0.48\pt 0.48\pt
+ }
+ "scripts" = \table {
+ "ufermata" "\\ufermata" -6.29\pt 6.29\pt -0.36\pt 6.89\pt
+ "dfermata" "\\dfermata" -6.29\pt 6.29\pt -6.89\pt 0.36\pt
+ "sforzato" "\\sforzatoaccent" -4.27\pt 4.27\pt -2.38\pt 2.38\pt
+ "staccato" "\\staccato" -0.71\pt 0.71\pt -0.71\pt 0.71\pt
+ "ustaccatissimo" "\\ustaccatissimo" -0.95\pt 0.95\pt -0.20\pt 4.75\pt
+ "dstaccatissimo" "\\dstaccatissimo" -0.95\pt 0.95\pt -4.75\pt 0.20\pt
+ "tenuto" "\\tenuto" -4.27\pt 4.27\pt -0.29\pt 0.29\pt
+ "umarcato" "\\umarcato" -2.38\pt 2.38\pt -0.00\pt 5.23\pt
+ "dmarcato" "\\dmarcato" -2.38\pt 2.38\pt -5.23\pt 0.00\pt
+ "open" "\\ouvert" -1.90\pt 1.90\pt -2.38\pt 2.38\pt
+ "stopped" "\\plusstop" -2.61\pt 2.61\pt -2.61\pt 2.61\pt
+ "upbow" "\\upbow" -3.09\pt 3.09\pt -0.00\pt 9.88\pt
+ "downbow" "\\downbow" -3.56\pt 3.56\pt -0.00\pt 6.33\pt
+ "turn" "\\turn" -5.20\pt 5.20\pt -2.51\pt 2.51\pt
+ "trill" "\\trill" -4.75\pt 4.75\pt -0.00\pt 10.69\pt
+ "pedalheel" "\\pedalheel" -2.38\pt 2.38\pt -2.38\pt 3.17\pt
+ "pedaltoe" "\\pedaltoe" -2.38\pt 2.38\pt -0.00\pt 7.13\pt
+ "flageolet" "\\flageolet" -2.53\pt 2.53\pt -2.53\pt 2.53\pt
+ }
+ "flags" = \table {
+ "u3" "\\eighthflag" -0.24\pt 5.86\pt -14.56\pt 0.24\pt
+ "u4" "\\sixteenthflag" -0.24\pt 5.86\pt -16.93\pt 0.24\pt
+ "u5" "\\thirtysecondflag" -0.24\pt 5.86\pt -20.50\pt 0.24\pt
+ "u6" "\\sixtyfourthflag" -0.24\pt 5.86\pt -25.25\pt 0.24\pt
+ "d3" "\\deighthflag" -0.24\pt 6.49\pt -0.24\pt 13.85\pt
+ "d4" "\\dsixteenthflag" -0.24\pt 6.49\pt -0.24\pt 14.56\pt
+ "d5" "\\dthirtysecondflag" -0.24\pt 6.49\pt -0.24\pt 18.60\pt
+ "d6" "\\dsixtyfourthflag" -0.24\pt 6.49\pt -0.24\pt 20.97\pt
+ }
+ "clefs" = \table {
+ "alto" "\\altoclef" -4.75\pt 17.68\pt -9.50\pt 9.50\pt
+ "alto_change" "\\caltoclef" -3.80\pt 14.14\pt -7.60\pt 7.60\pt
+ "bass" "\\bassclef" -2.38\pt 17.10\pt -11.88\pt 4.75\pt
+ "bass_change" "\\cbassclef" -1.90\pt 13.68\pt -9.50\pt 3.80\pt
+ "violin" "\\violinclef" -4.14\pt 17.75\pt -14.25\pt 23.75\pt
+ "violin_change" "\\cviolinclef" -3.60\pt 13.92\pt -11.40\pt 19.00\pt
+ }
+ % } % $name
-% Creator: mf-to-table.py version 0.4
-% Automatically generated on Mon Jan 5 15:23:56 1998
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
% Do not edit
% input from out/feta20.log
% name=\symboltables {
--- /dev/null
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from out/feta23.log
+% name=\symboltables {
+ "rests" = \table {
+ "0" "\\wholerest" -0.00\pt 8.44\pt -3.52\pt 0.00\pt
+ "1" "\\halfrest" -0.00\pt 8.44\pt -0.00\pt 3.52\pt
+ "0o" "\\outsidewholerest" -3.52\pt 11.95\pt -3.52\pt 0.56\pt
+ "1o" "\\outsidehalfrest" -3.52\pt 11.95\pt -0.56\pt 3.52\pt
+ "2" "\\quartrest" -0.00\pt 6.08\pt 4.22\pt 20.25\pt
+ "3" "\\eighthrest" -0.00\pt 7.50\pt 5.63\pt 15.98\pt
+ "4" "\\sixteenthrest" -0.00\pt 8.73\pt -0.00\pt 15.98\pt
+ "5" "\\thirtysecondrest" -0.00\pt 9.85\pt -0.00\pt 21.61\pt
+ "6" "\\sixtyfourthrest" -0.00\pt 10.56\pt -0.00\pt 27.23\pt
+ "7" "\\hundredtwentyeighthrest" -0.00\pt 11.75\pt -0.00\pt 32.86\pt
+ }
+ "accidentals" = \table {
+ "1" "\\sharp" -0.00\pt 6.19\pt -8.44\pt 8.44\pt
+ "0" "\\natural" -0.00\pt 3.75\pt -8.44\pt 8.44\pt
+ "-1" "\\flat" -0.68\pt 4.50\pt -2.81\pt 11.25\pt
+ "-2" "\\flatflat" -0.68\pt 8.16\pt -2.81\pt 11.25\pt
+ "2" "\\sharpsharp" -0.00\pt 5.63\pt -2.81\pt 2.81\pt
+ }
+ "dots" = \table {
+ "dot" "\\dot" -0.00\pt 2.53\pt -1.27\pt 1.27\pt
+ "repeatcolon" "\\repeatcolon" -0.00\pt 2.53\pt -2.81\pt 2.81\pt
+ }
+ "balls" = \table {
+ "-1" "\\brevisball" -0.00\pt 11.25\pt -3.09\pt 3.09\pt
+ "-1l" "\\brevisledger" -2.81\pt 14.06\pt -0.56\pt 0.56\pt
+ "-2" "\\longaball" -0.00\pt 11.25\pt -3.09\pt 3.09\pt
+ "-2l" "\\longaledger" -2.81\pt 14.06\pt -0.56\pt 0.56\pt
+ "0" "\\wholeball" -0.00\pt 11.14\pt -3.09\pt 3.09\pt
+ "0l" "\\wholeledger" -2.78\pt 13.92\pt -0.56\pt 0.56\pt
+ "1" "\\halfball" -0.00\pt 7.75\pt -3.09\pt 3.09\pt
+ "1l" "\\halfledger" -1.94\pt 9.69\pt -0.56\pt 0.56\pt
+ "2" "\\quartball" -0.00\pt 7.43\pt -3.09\pt 3.09\pt
+ "2l" "\\quartledger" -1.86\pt 9.29\pt -0.56\pt 0.56\pt
+ }
+ "scripts" = \table {
+ "ufermata" "\\ufermata" -7.45\pt 7.45\pt -0.42\pt 8.16\pt
+ "dfermata" "\\dfermata" -7.45\pt 7.45\pt -8.16\pt 0.42\pt
+ "sforzato" "\\sforzatoaccent" -5.06\pt 5.06\pt -2.81\pt 2.81\pt
+ "staccato" "\\staccato" -0.84\pt 0.84\pt -0.84\pt 0.84\pt
+ "ustaccatissimo" "\\ustaccatissimo" -1.13\pt 1.13\pt -0.20\pt 5.63\pt
+ "dstaccatissimo" "\\dstaccatissimo" -1.13\pt 1.13\pt -5.63\pt 0.20\pt
+ "tenuto" "\\tenuto" -5.06\pt 5.06\pt -0.34\pt 0.34\pt
+ "umarcato" "\\umarcato" -2.81\pt 2.81\pt -0.00\pt 6.19\pt
+ "dmarcato" "\\dmarcato" -2.81\pt 2.81\pt -6.19\pt 0.00\pt
+ "open" "\\ouvert" -2.25\pt 2.25\pt -2.81\pt 2.81\pt
+ "stopped" "\\plusstop" -3.09\pt 3.09\pt -3.09\pt 3.09\pt
+ "upbow" "\\upbow" -3.66\pt 3.66\pt -0.00\pt 11.70\pt
+ "downbow" "\\downbow" -4.22\pt 4.22\pt -0.00\pt 7.50\pt
+ "turn" "\\turn" -6.15\pt 6.15\pt -2.98\pt 2.98\pt
+ "trill" "\\trill" -5.63\pt 5.63\pt -0.00\pt 12.66\pt
+ "pedalheel" "\\pedalheel" -2.81\pt 2.81\pt -2.81\pt 3.75\pt
+ "pedaltoe" "\\pedaltoe" -2.81\pt 2.81\pt -0.00\pt 8.44\pt
+ "flageolet" "\\flageolet" -3.00\pt 3.00\pt -3.00\pt 3.00\pt
+ }
+ "flags" = \table {
+ "u3" "\\eighthflag" -0.28\pt 6.94\pt -17.24\pt 0.28\pt
+ "u4" "\\sixteenthflag" -0.28\pt 6.94\pt -20.05\pt 0.28\pt
+ "u5" "\\thirtysecondflag" -0.28\pt 6.94\pt -24.27\pt 0.28\pt
+ "u6" "\\sixtyfourthflag" -0.28\pt 6.94\pt -29.90\pt 0.28\pt
+ "d3" "\\deighthflag" -0.28\pt 7.68\pt -0.28\pt 16.40\pt
+ "d4" "\\dsixteenthflag" -0.28\pt 7.68\pt -0.28\pt 17.24\pt
+ "d5" "\\dthirtysecondflag" -0.28\pt 7.68\pt -0.28\pt 22.02\pt
+ "d6" "\\dsixtyfourthflag" -0.28\pt 7.68\pt -0.28\pt 24.83\pt
+ }
+ "clefs" = \table {
+ "alto" "\\altoclef" -5.63\pt 20.94\pt -11.25\pt 11.25\pt
+ "alto_change" "\\caltoclef" -4.50\pt 16.75\pt -9.00\pt 9.00\pt
+ "bass" "\\bassclef" -2.81\pt 20.25\pt -14.06\pt 5.63\pt
+ "bass_change" "\\cbassclef" -2.25\pt 16.20\pt -11.25\pt 4.50\pt
+ "violin" "\\violinclef" -4.90\pt 21.02\pt -16.88\pt 28.12\pt
+ "violin_change" "\\cviolinclef" -4.26\pt 16.48\pt -13.50\pt 22.50\pt
+ }
+ % } % $name
--- /dev/null
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from out/feta26.log
+% name=\symboltables {
+ "rests" = \table {
+ "0" "\\wholerest" -0.00\pt 9.75\pt -4.06\pt 0.00\pt
+ "1" "\\halfrest" -0.00\pt 9.75\pt -0.00\pt 4.06\pt
+ "0o" "\\outsidewholerest" -4.06\pt 13.81\pt -4.06\pt 0.65\pt
+ "1o" "\\outsidehalfrest" -4.06\pt 13.81\pt -0.65\pt 4.06\pt
+ "2" "\\quartrest" -0.00\pt 7.02\pt 4.88\pt 23.40\pt
+ "3" "\\eighthrest" -0.00\pt 8.67\pt 6.50\pt 18.47\pt
+ "4" "\\sixteenthrest" -0.00\pt 10.08\pt -0.00\pt 18.47\pt
+ "5" "\\thirtysecondrest" -0.00\pt 11.38\pt -0.00\pt 24.97\pt
+ "6" "\\sixtyfourthrest" -0.00\pt 12.20\pt -0.00\pt 31.47\pt
+ "7" "\\hundredtwentyeighthrest" -0.00\pt 13.58\pt -0.00\pt 37.97\pt
+ }
+ "accidentals" = \table {
+ "1" "\\sharp" -0.00\pt 7.15\pt -9.75\pt 9.75\pt
+ "0" "\\natural" -0.00\pt 4.33\pt -9.75\pt 9.75\pt
+ "-1" "\\flat" -0.78\pt 5.20\pt -3.25\pt 13.00\pt
+ "-2" "\\flatflat" -0.78\pt 9.42\pt -3.25\pt 13.00\pt
+ "2" "\\sharpsharp" -0.00\pt 6.50\pt -3.25\pt 3.25\pt
+ }
+ "dots" = \table {
+ "dot" "\\dot" -0.00\pt 2.92\pt -1.46\pt 1.46\pt
+ "repeatcolon" "\\repeatcolon" -0.00\pt 2.92\pt -3.25\pt 3.25\pt
+ }
+ "balls" = \table {
+ "-1" "\\brevisball" -0.00\pt 13.00\pt -3.58\pt 3.58\pt
+ "-1l" "\\brevisledger" -3.25\pt 16.25\pt -0.65\pt 0.65\pt
+ "-2" "\\longaball" -0.00\pt 13.00\pt -3.58\pt 3.58\pt
+ "-2l" "\\longaledger" -3.25\pt 16.25\pt -0.65\pt 0.65\pt
+ "0" "\\wholeball" -0.00\pt 12.87\pt -3.58\pt 3.58\pt
+ "0l" "\\wholeledger" -3.22\pt 16.09\pt -0.65\pt 0.65\pt
+ "1" "\\halfball" -0.00\pt 8.95\pt -3.58\pt 3.58\pt
+ "1l" "\\halfledger" -2.24\pt 11.19\pt -0.65\pt 0.65\pt
+ "2" "\\quartball" -0.00\pt 8.59\pt -3.58\pt 3.58\pt
+ "2l" "\\quartledger" -2.15\pt 10.73\pt -0.65\pt 0.65\pt
+ }
+ "scripts" = \table {
+ "ufermata" "\\ufermata" -8.61\pt 8.61\pt -0.49\pt 9.43\pt
+ "dfermata" "\\dfermata" -8.61\pt 8.61\pt -9.43\pt 0.49\pt
+ "sforzato" "\\sforzatoaccent" -5.85\pt 5.85\pt -3.25\pt 3.25\pt
+ "staccato" "\\staccato" -0.98\pt 0.98\pt -0.98\pt 0.98\pt
+ "ustaccatissimo" "\\ustaccatissimo" -1.30\pt 1.30\pt -0.20\pt 6.50\pt
+ "dstaccatissimo" "\\dstaccatissimo" -1.30\pt 1.30\pt -6.50\pt 0.20\pt
+ "tenuto" "\\tenuto" -5.85\pt 5.85\pt -0.39\pt 0.39\pt
+ "umarcato" "\\umarcato" -3.25\pt 3.25\pt -0.00\pt 7.15\pt
+ "dmarcato" "\\dmarcato" -3.25\pt 3.25\pt -7.15\pt 0.00\pt
+ "open" "\\ouvert" -2.60\pt 2.60\pt -3.25\pt 3.25\pt
+ "stopped" "\\plusstop" -3.58\pt 3.58\pt -3.58\pt 3.58\pt
+ "upbow" "\\upbow" -4.23\pt 4.23\pt -0.00\pt 13.52\pt
+ "downbow" "\\downbow" -4.88\pt 4.88\pt -0.00\pt 8.67\pt
+ "turn" "\\turn" -7.11\pt 7.11\pt -3.44\pt 3.44\pt
+ "trill" "\\trill" -6.50\pt 6.50\pt -0.00\pt 14.62\pt
+ "pedalheel" "\\pedalheel" -3.25\pt 3.25\pt -3.25\pt 4.33\pt
+ "pedaltoe" "\\pedaltoe" -3.25\pt 3.25\pt -0.00\pt 9.75\pt
+ "flageolet" "\\flageolet" -3.47\pt 3.47\pt -3.47\pt 3.47\pt
+ }
+ "flags" = \table {
+ "u3" "\\eighthflag" -0.33\pt 8.02\pt -19.92\pt 0.33\pt
+ "u4" "\\sixteenthflag" -0.33\pt 8.02\pt -23.17\pt 0.33\pt
+ "u5" "\\thirtysecondflag" -0.33\pt 8.02\pt -28.05\pt 0.33\pt
+ "u6" "\\sixtyfourthflag" -0.33\pt 8.02\pt -34.55\pt 0.33\pt
+ "d3" "\\deighthflag" -0.33\pt 8.88\pt -0.33\pt 18.95\pt
+ "d4" "\\dsixteenthflag" -0.33\pt 8.88\pt -0.33\pt 19.92\pt
+ "d5" "\\dthirtysecondflag" -0.33\pt 8.88\pt -0.33\pt 25.45\pt
+ "d6" "\\dsixtyfourthflag" -0.33\pt 8.88\pt -0.33\pt 28.70\pt
+ }
+ "clefs" = \table {
+ "alto" "\\altoclef" -6.50\pt 24.19\pt -13.00\pt 13.00\pt
+ "alto_change" "\\caltoclef" -5.20\pt 19.36\pt -10.40\pt 10.40\pt
+ "bass" "\\bassclef" -3.25\pt 23.40\pt -16.25\pt 6.50\pt
+ "bass_change" "\\cbassclef" -2.60\pt 18.72\pt -13.00\pt 5.20\pt
+ "violin" "\\violinclef" -5.66\pt 24.29\pt -19.50\pt 32.50\pt
+ "violin_change" "\\cviolinclef" -4.92\pt 19.04\pt -15.60\pt 26.00\pt
+ }
+ % } % $name
Wordwrap = 0.0
\include "paper16.ly"
-\include "paper20.ly"
default_paper = \paper{
\paper_sixteen
--- /dev/null
+% paper20.ly
+
+\include "table11.ly"
+
+paper_eleven = \paper {
+ linewidth = 15.0 \cm;
+ rulethickness = 0.25\pt;
+ barsize = 11.0 \pt;
+ interline = 2.75\pt;
+ notewidth = 7.15\pt; % ugh see table20 for sizes
+ wholewidth = 10.44\pt;
+ unitspace = 22.\pt;
+% basicspace = 4.\pt;
+% geometric = 1.414;
+ geometric = 0.;
+ basicspace = 9.\pt;
+
+ arithmetic_basicspace = 2.;
+ arithmetic_multiplier = 7.\pt;
+
+ %
+ % three beams span two interlines, including stafflines:
+ % 2 interbeam + beam_thickness = 2 interline - staffline_thickness
+ % ( beam_thickness = 0.48 interline for now...)
+ % interbeam = interline - (beam_thickness + staffline_thickness) / 2
+ % interbeam = 3.6;
+ % ugh: interline *in fact* is rule_thickness + "interline"?
+ interbeam = 3.9;
+
+ gourlay_energybound = 100000.;
+ gourlay_maxmeasures = 12.;
+
+ castingalgorithm = \Gourlay;
+ \symboltables { \table_eleven }
+\include "engraver.ly"
+}
+
--- /dev/null
+% paper20.ly
+
+\include "table13.ly"
+
+paper_thirteen = \paper {
+ linewidth = 15.0 \cm;
+ rulethickness = 0.25\pt;
+ barsize = 13.0 \pt;
+ interline = 3.25\pt;
+ notewidth = 7.15\pt; % ugh see table20 for sizes
+ wholewidth = 10.44\pt;
+ unitspace = 22.\pt;
+% basicspace = 4.\pt;
+% geometric = 1.414;
+ geometric = 0.;
+ basicspace = 9.\pt;
+
+ arithmetic_basicspace = 2.;
+ arithmetic_multiplier = 7.\pt;
+
+ %
+ % three beams span two interlines, including stafflines:
+ % 2 interbeam + beam_thickness = 2 interline - staffline_thickness
+ % ( beam_thickness = 0.48 interline for now...)
+ % interbeam = interline - (beam_thickness + staffline_thickness) / 2
+ % interbeam = 3.6;
+ % ugh: interline *in fact* is rule_thickness + "interline"?
+ interbeam = 3.9;
+
+ gourlay_energybound = 100000.;
+ gourlay_maxmeasures = 12.;
+
+ castingalgorithm = \Gourlay;
+ \symboltables { \table_thirteen }
+ \include "engraver.ly"
+}
+
%}
paper_sixteen = \paper {
linewidth = 15.5 \cm;
- rule_thickness = 0.4\pt;
- bar_size = 16.0 \pt;
+ rulethickness = 0.4\pt;
+ barsize = 16.0 \pt;
interline = 4.\pt;
notewidth = 5.93\pt; % ugh, see table16 for sizes
wholewidth = 8.64\pt;
paper_twenty = \paper {
linewidth = 15.0 \cm;
- rule_thickness = 0.4\pt;
- bar_size = 20.0 \pt;
+ rulethickness = 0.4\pt;
+ barsize = 20.0 \pt;
interline = 5.\pt;
notewidth = 7.15\pt; % ugh see table20 for sizes
wholewidth = 10.44\pt;
--- /dev/null
+% paper20.ly
+
+\include "table26.ly"
+
+paper_twentysix = \paper {
+ linewidth = 15.0 \cm;
+ rulethickness = 0.5\pt;
+ barsize = 26.0 \pt;
+ interline = 6.5\pt;
+ notewidth = 7.15\pt; % ugh see table20 for sizes
+ wholewidth = 10.44\pt;
+ unitspace = 22.\pt;
+% basicspace = 4.\pt;
+% geometric = 1.414;
+ geometric = 0.;
+ basicspace = 9.\pt;
+
+ arithmetic_basicspace = 2.;
+ arithmetic_multiplier = 7.\pt;
+
+ %
+ % three beams span two interlines, including stafflines:
+ % 2 interbeam + beam_thickness = 2 interline - staffline_thickness
+ % ( beam_thickness = 0.48 interline for now...)
+ % interbeam = interline - (beam_thickness + staffline_thickness) / 2
+ % interbeam = 3.6;
+ % ugh: interline *in fact* is rule_thickness + "interline"?
+ interbeam = 3.9;
+
+ gourlay_energybound = 100000.;
+ gourlay_maxmeasures = 12.;
+
+ castingalgorithm = \Gourlay;
+ \symboltables { \table_twentysix }
+\include "engraver.ly"
+}
+
--- /dev/null
+% table26.ly
+%
+% spacing info for LilyPond. Do not edit this.
+% It has a lot of hard-wired stringconstants
+%
+
+table_eleven = \symboltables {
+
+ \texid "\input lilyponddefs \musixelevendefs"
+
+ % index TeXstring, xmin xmax ymin ymax
+
+ "style" = \table {
+ "roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt
+ "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt
+ }
+
+ "dynamics" = \table {
+
+ "mf" "\dynmf"
+ "fff" "\dynfff"
+ "ff" "\dynff"
+ "f" "\dynf"
+
+ "mp" "\dynmp"
+ "p" "\dynp"
+ "pp" "\dynpp"
+ "ppp" "\dynppp"
+ "fp" "\dynfp"
+ "sf" "\dynsf"
+ "sfz" "\dynsfz"
+
+ }
+ "align" = \table {
+ "-1" "\leftalign{%}"
+ "0" "\centeralign{%}"
+ "1" "\rightalign{%}"
+ }
+
+
+
+
+ "bars" = \table {
+ "empty" "\emptybar"
+ "" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt
+ "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt
+ "||" "\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt
+ "|." "\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt
+ ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt
+ ":|" "\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt
+ "|:" "\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|:" "\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt
+ }
+
+ "meters" = \table {
+ "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ }
+
+ % dims ignored for this table
+ "param" = \table {
+ "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt
+ "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "stem" "\stem{%}{%}"
+ "fill" "\hbox{}"
+ "rule" "\rulesym{%}{%}"
+ }
+
+ % ugh what's our outdir called?
+ \include "feta11.ly"
+}
+
--- /dev/null
+% table26.ly
+%
+% spacing info for LilyPond. Do not edit this.
+% It has a lot of hard-wired stringconstants
+%
+
+table_thirteen = \symboltables {
+
+ \texid "\input lilyponddefs \musixthirteendefs"
+
+ % index TeXstring, xmin xmax ymin ymax
+
+ "style" = \table {
+ "roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt
+ "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt
+ }
+
+ "dynamics" = \table {
+
+ "mf" "\dynmf"
+ "fff" "\dynfff"
+ "ff" "\dynff"
+ "f" "\dynf"
+
+ "mp" "\dynmp"
+ "p" "\dynp"
+ "pp" "\dynpp"
+ "ppp" "\dynppp"
+ "fp" "\dynfp"
+ "sf" "\dynsf"
+ "sfz" "\dynsfz"
+
+ }
+ "align" = \table {
+ "-1" "\leftalign{%}"
+ "0" "\centeralign{%}"
+ "1" "\rightalign{%}"
+ }
+
+
+
+
+ "bars" = \table {
+ "empty" "\emptybar"
+ "" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt
+ "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt
+ "||" "\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt
+ "|." "\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt
+ ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt
+ ":|" "\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt
+ "|:" "\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|:" "\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt
+ }
+
+ "meters" = \table {
+ "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ }
+
+ % dims ignored for this table
+ "param" = \table {
+ "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt
+ "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "stem" "\stem{%}{%}"
+ "fill" "\hbox{}"
+ "rule" "\rulesym{%}{%}"
+ }
+
+ % ugh what's our outdir called?
+ \include "feta13.ly"
+}
+
% index TeXstring, xmin xmax ymin ymax
"style" = \table {
+ "bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
"roman" "\settext{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
"italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt
"dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt
% "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt
"brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 80.0\pt
"meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -8.0\pt 8.0\pt
+ "rule" "\rulesym{%}{%}"
"stem" "\stem{%}{%}"
"fill" "\hbox{}"
% ugh. 8pt
% dims ignored for this table
"param" = \table {
% "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt
- "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 40.0\pt 100.0\pt
+ "rule" "\rulesym{%}{%}"
+ "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 40.0\pt 100.0\pt
"meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
"stem" "\stem{%}{%}"
"fill" "\hbox{}"
--- /dev/null
+% table26.ly
+%
+% spacing info for LilyPond. Do not edit this.
+% It has a lot of hard-wired stringconstants
+%
+
+table_twentysix = \symboltables {
+
+ \texid "\input lilyponddefs \musixtwentysixdefs"
+
+ % index TeXstring, xmin xmax ymin ymax
+
+ "style" = \table {
+ "roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt
+ "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt
+ }
+
+ "dynamics" = \table {
+
+ "mf" "\dynmf"
+ "fff" "\dynfff"
+ "ff" "\dynff"
+ "f" "\dynf"
+
+ "mp" "\dynmp"
+ "p" "\dynp"
+ "pp" "\dynpp"
+ "ppp" "\dynppp"
+ "fp" "\dynfp"
+ "sf" "\dynsf"
+ "sfz" "\dynsfz"
+
+ }
+ "align" = \table {
+ "-1" "\leftalign{%}"
+ "0" "\centeralign{%}"
+ "1" "\rightalign{%}"
+ }
+
+
+
+
+ "bars" = \table {
+ "empty" "\emptybar"
+ "" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt
+ "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt
+ "||" "\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt
+ "|." "\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt
+ ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt
+ ":|" "\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt
+ "|:" "\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|:" "\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt
+ }
+
+ "meters" = \table {
+ "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ }
+
+ % dims ignored for this table
+ "param" = \table {
+ "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt
+ "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "stem" "\stem{%}{%}"
+ "fill" "\hbox{}"
+ "rule" "\rulesym{%}{%}"
+ }
+
+ % ugh what's our outdir called?
+ \include "feta26.ly"
+}
+
--- /dev/null
+\version "0.1.7";
+FontBody= \melodic{
+ \octave c';
+ \bar "|:";
+ \meter 4/4;
+ \multi 2 < { \stemup e'\longa a\breve | }
+ { \stemdown
+ c1 \clef "bass"; ''b \clef "violin"; c' a'
+ c2 \clef "alto"; g c' \clef "violin"; a'
+ } >
+ \stemboth
+ c4 g c' a' \bar ":|";
+ a\ppp-\upbow a\pp-\downbow a\p^\turn a\mp^\fermata |
+ a\mf_\fermata a\f-\stopped a\ff-\open a\fff^\trill|
+ a\fp a4.\sf a4.\sfz | % a\fz a\rf
+ [c8 c] [a' a']
+ [c a'] [a' c] |
+ [c \< d e f] [as' ges' f' e']
+ [cis' dis' c' des'] [cisis' disis' \! ceses' deses'] |
+ \clef "bass";
+ r1 r2 r4 r8 r16 r32 r64 r128 r128 |
+ \multi 2 < { \stemup r2 r2} {\stemdown c c }>
+ \multi 2 < { \stemup ''c1 } {\stemdown r1}>
+ \stemboth
+ \clef "violin";
+ e8_. g'8-> e16^^ g'16_^
+ e32 _| g'32^| g''32-\ltoe g''32-\lheel
+ e64 g'64 c4... |
+
+ \octave c'';
+ \meter 4/4;
+ \textstyle "finger";
+ c4^"1" d^"2" e^"3" f^"4" g^"5"
+
+ % Music to the Martians!
+ < bes4^"6" e_"7" c_"8" >
+ a^"0"_"9"
+
+ a'^\flageolet
+ \textstyle "roman";
+%{ % default abbreviations
+ c4 c4: c4:32 c4: c4 c2.
+ 'a1
+ 'a1:32
+ 'c4:8 c': 'c4:16 c':
+% [ 'c8:16 'c 'c 'c ] [ a a a a ]
+% [ 'c 'f 'b e ]
+% [ 'c16:32 'c 'c 'c ] [ a16:32 a a a ]
+%% % there's still some hairy beam bugfixing todo
+%% [ c'8:16 g d 'a ]
+%% [ c'16:32 g d 'a ]
+%% [ 'c8:32 'f 'b e ]
+ [:32 c16 e]
+ [:32 c16 e]
+ [:16 c8 e]
+ [:16 e4 g]
+ [:16 e2 g]
+ [:16 e1 g]
+%}
+ \meter 1/2; a2 |
+ \meter 3/2; < a1.
+ { s4 \ppp \< s4 \! s4 \fff s4 \> s4 \! s4\ppp} >
+ |
+ \meter 2/4; a2 |
+ \meter 5/4; a1.. |
+ \meter 6/8; a2. |
+ \meter 7/8; a2.. |
+ \meter 9/8; a1... |
+ \meter 12/8; a1. |
+ \meter 12/4;
+ r1. r2. r4. r8. r16. r32. r64. r64. |
+ }
\version "0.1.7";
+\include "font-body.ly";
\score{
- \melodic{
- \octave c';
- \bar "|:";
- \meter 4/4;
- \multi 2 < { \stemup e'\longa a\breve | }
- { \stemdown
- c1 \clef "bass"; ''b \clef "violin"; c' a'
- c2 \clef "alto"; g c' \clef "violin"; a'
- } >
- \stemboth
- c4 g c' a' \bar ":|";
- a\ppp-\upbow a\pp-\downbow a\p^\turn a\mp^\fermata |
- a\mf_\fermata a\f-\stopped a\ff-\open a\fff^\trill|
- a\fp a4.\sf a4.\sfz | % a\fz a\rf
- [c8 c] [a' a']
- [c a'] [a' c] |
- [c \< d e f] [as' ges' f' e']
- [cis' dis' c' des'] [cisis' disis' \! ceses' deses'] |
- \clef "bass";
- r1 r2 r4 r8 r16 r32 r64 r128 r128 |
- \multi 2 < { \stemup r2 r2} {\stemdown c c }>
- \multi 2 < { \stemup ''c1 } {\stemdown r1}>
- \stemboth
- \clef "violin";
- e8_. g'8-> e16^^ g'16_^
- e32 _| g'32^| g''32-\ltoe g''32-\lheel
- e64 g'64 c4... |
-
- \octave c'';
- \meter 4/4;
- \textstyle "finger";
- c4^"1" d^"2" e^"3" f^"4" g^"5"
-
- % Music to the Martians!
- < bes4^"6" e_"7" c_"8" >
- a^"0"_"9"
-
- a'^\flageolet
- \textstyle "roman";
-%{ % default abbreviations
- c4 c4: c4:32 c4: c4 c2.
- 'a1
- 'a1:32
- 'c4:8 c': 'c4:16 c':
-% [ 'c8:16 'c 'c 'c ] [ a a a a ]
-% [ 'c 'f 'b e ]
-% [ 'c16:32 'c 'c 'c ] [ a16:32 a a a ]
-%% % there's still some hairy beam bugfixing todo
-%% [ c'8:16 g d 'a ]
-%% [ c'16:32 g d 'a ]
-%% [ 'c8:32 'f 'b e ]
- [:32 c16 e]
- [:32 c16 e]
- [:16 c8 e]
- [:16 e4 g]
- [:16 e2 g]
- [:16 e1 g]
-%}
- \meter 1/2; a2 |
- \meter 3/2; < a1.
- { s4 \ppp \< s4 \! s4 \fff s4 \> s4 \! s4\ppp} >
- |
- \meter 2/4; a2 |
- \meter 5/4; a1.. |
- \meter 6/8; a2. |
- \meter 7/8; a2.. |
- \meter 9/8; a1... |
- \meter 12/8; a1. |
- \meter 12/4;
- r1. r2. r4. r8. r16. r32. r64. r64. |
- }
\paper{
% don't change this.
% otherwise 16pt and 20pt layouts differ.
--- /dev/null
+
+\header{
+title= "The Feta Font";
+subtitle = "proofsheet";
+enteredby = "jcn & hwn";
+copyright = "public domain";
+description = "This file tests the Feta music font, 11pt";
+% "(Feta definitively is not an abbreviation of Font-En-TjA)";
+}
+
+
+\include "paper11.ly"
+\include "font-body.ly"
+\score{
+ \FontBody
+ \paper{
+ \paper_eleven
+ linewidth = 17.5 \cm;
+ gourlay_maxmeasures =5.;
+ }
+}
+
--- /dev/null
+
+\header{
+title= "The Feta Font";
+subtitle = "proofsheet";
+enteredby = "jcn & hwn";
+copyright = "public domain";
+description = "This file tests the Feta music font, 11pt";
+% "(Feta definitively is not an abbreviation of Font-En-TjA)";
+}
+
+
+\include "paper13.ly"
+\include "font-body.ly"
+\score{
+ \FontBody
+ \paper{
+ \paper_thirteen
+ linewidth = 17.5 \cm;
+ gourlay_maxmeasures =5.;
+ }
+}
+
--- /dev/null
+\header{
+title= "The Feta Font";
+subtitle = "proofsheet";
+enteredby = "jcn & hwn";
+copyright = "public domain";
+description = "This file tests the Feta music font";
+% "(Feta definitively is not an abbreviation of Font-En-TjA)";
+}
+
+\version "0.1.7";
+\include "font-body.ly"
+
+\score{
+ \FontBody
+ \paper{
+ % don't change this.
+ % otherwise 16pt and 20pt layouts differ.
+ linewidth = 12.5 \cm;
+ gourlay_maxmeasures =5.;
+ }
+}
+
-% "This file is a stub to fool make-website"
-
\header{
title= "The Feta font";
subtitle = "proofsheet";
enteredby = "jcn";
copyright = "public domain";
-description = "This file tests the Feta music-font";
+description = "This file tests the Feta music-font in the 20pt version";
TestedFeatures =
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-
-
-
-
+\include "paper20.ly"
+\include "font-body.ly"
+\score{
+ \FontBody
+ \paper{
+ \paper_twenty
+ linewidth = 17.5 \cm;
+ gourlay_maxmeasures =5.;
+ }
+ }
--- /dev/null
+\header{
+title= "The Feta Font";
+subtitle = "proofsheet";
+enteredby = "jcn & hwn";
+copyright = "public domain";
+description = "This file tests the Feta music font";
+% "(Feta definitively is not an abbreviation of Font-En-TjA)";
+}
+
+\include "paper26.ly";
+\include "font-body.ly"
+\score{
+ \FontBody
+ \paper{
+ \paper_twentysix
+ linewidth = 17.5 \cm;
+ gourlay_maxmeasures =5.;
+ }
+}
+
\addtolength{\topmargin}{-1cm}
\setlength{\textwidth}{15cm}
\input lilyponddefs
-\musixsixteendefs
\input titledefs
\begin{document}
description = "Cello suite transcribed for Viola";
source = "?";
opus = "BWV 1008 no. 5";
-composer = "Johann Sebastian Bach (1685-1750)";
+composer = "Johann Sebastian Bach(1685-1750)";
enteredby = "JCN";
copyright = "public domain";
}
% \tempo{Moderato}
% \metron{4=120}
%
-% \key\F % \key is F ( f-major )
+% \key\F % \key is F( f-major )
%
% \slope{30} % Fool MusiXTeX into 30 / 10 steeper beam
% % because piece is set very tightly
IImenuetto = \melodic{
- \property Voice.beamslopedamping = \infinity
+% \property Voice.beamslopedamping = \infinity
\clef"alto";
\property Staff.instrument = cello
\meter 3/4;
%%2
\textstyle "finger"; % ugh.
- < [ bes8^"1"( e8 c8_"2"_"4" >
- )a8 bes8-. g8-. ] a4-.^"4" |
-
+ \multi 2 <
+ { \stemup; [ bes8^"1"( )a8 bes8-. g8-. ] a4-.^"4" }
+
+ { \stemdown; < e8_"2" c8_"4" > }
+ > |
+ \stemboth;
%%3
- \property Voice.beamslopedamping = \normal
+% \property Voice.beamslopedamping = \normal
< d4 'bes4-. > g4-. [ f8-. e8-. ] |
- \property Voice.beamslopedamping = \infinity
+% \property Voice.beamslopedamping = \infinity
%%4
- < [ f8( 'a > e8 )d8 cis8-. 'b8-. 'a8-. ]
+ \multi 2 <
+ { \stemup; [ f8( e8 )d8 cis8-. 'b8-. 'a8-. ] }
+ { \stemdown; 'a }
+ > |
+ \stemboth;
%%5
< a2 f2 d2 > bes!4-. |
%%6
- < [ bes8 e8 > a8 bes8-. g8-. ]
+ \multi 2 <
+ { \stemup; [ bes8 a8 bes8-. g8-. ] }
+ { \stemdown; e8 }
+ >
+ \stemboth;
c'!4-. |
%%7
< a4-. f4>
< e'4-.-\downbow g4 'g4 > |
%%8
< cis'2.-\upbow e2. 'a2. >
- \bar ":|:";
+ \bar ":|:";
%%9
\clef "violin";
< e'2 a2 \f >
- \property Voice.beamslopedamping = \normal
+% \property Voice.beamslopedamping = \normal
[ d'8( e'16 )f'16 ] |
- \property Voice.beamslopedamping = \infinity
+% \property Voice.beamslopedamping = \infinity
%%10
- < [ e'8( g8 > d' cis'_"2" )e' a () g8 ] |
+ \multi 2 <
+ { \stemup; [ e'8( d' cis'_"2" )e' a( )g8 ] }
+ { \stemdown; g8 }
+ > |
+ \stemboth;
%%11
- \multi 2 <
- {\stemup a4() d'4 cis'4-. }
- { \stemdown f2 e4 } > |
- \stemboth
+ \multi 2 <
+ { \stemup; a4( )d'4 cis'4-. }
+ { \stemdown; f2 e4 }
+ > |
+ \stemboth;
%%12
- % oeps: slur gets attached at d8 iso g'8!
-% < [ g'8^"4"( d8 > f' e' )f' d'^"3"() c' ] |
- % wrong still...
- < { [ g'8^"4"( f' e' )f' d'^"3"() c' ] } { [ d8 ] } > |
+ \multi 2 <
+ { \stemup; [ g'8^"4"( f' e' )f' d'^"3"( ) c' ] }
+ { \stemdown; d8 }
+ > |
+ \stemboth;
%%13
\clef "alto";
\multi 2 <
- { \stemup bes2 c'4 }
- { \stemdown g4() f4 e4 }% ugh
+
+ { \stemup; bes2 c'4 }
+ { \stemdown; g4( )f4 e4 }% ugh
> |
- \stemboth
+ \stemboth;
%%14
- < [ a8 f8 > g8 a8 f8 ] < d'4-\upbow e4 'bes4 > |
+ \multi 2 <
+ { \stemup; [ a8 g8 a8 f8 ] }
+ { \stemdown; f8 }
+ >
+ \stemboth;
+ < d'4-\upbow e4 'bes4 > |
%%15
- < c'4-\downbow f4 'a4 > [ bes8() a8 g8 a8 ] |
+ < c'4-\downbow f4 'a4 > [ bes8( )a8 g8 a8 ] |
%%16
[ f( e8 )f a8-. g8-. bes8-. ] |
%%17
< a2^"0"^\trill fis2_"3" > bes4 |
%%18
- < { [ c'8 () bes8 c' a8 ] } es8 > fis4^\trill |
+ \multi 2 <
+ { \stemup; [ c'8( )bes8 c' a8 ] }
+ { \stemdown; es8 }
+ >
+ \stemboth;
+ fis4^\trill |
%%19
< d'4-\downbow g4 'bes4 > < c'4-\upbow g4 c4 > < [ bes8 d8 > a8 ] |
%%20
- < { [ c'8 ( bes8 a8 )bes g() bes8 ] } d8 g8 > |
+ \multi 2 <
+ { \stemup; [ c'8( bes8 a8 )bes g( )bes8 ] }
+ { \stemdown; < d8 g8 > }
+ > |
+ \stemboth;
%%21
\multi 2 <
- {\stemup d'4( \stemup )cis'4 d'4 }
- { \stemdown g2 f4 }
+ { \stemup; d'4( )cis'4 d'4 }
+ { \stemdown; g2 f4 }
> |
- \stemboth
+ \stemboth;
%%22
- < { [ g8 () f8 g8 e8 ] } cis8 > < f4 d4 > |
+ \multi 2 <
+ { \stemup; [ g8( )f8 g8 e8 ] f4 }
+ { \stemdown; cis8 d4 }
+ > |
+ \stemboth;
%%23
- \property Voice.beamslopedamping = \normal
+% \property Voice.beamslopedamping = \normal
[ 'g8 g8 ] < e4.^\trill 'a4. > d8-\upbow |
- \property Voice.beamslopedamping = \infinity
+% \property Voice.beamslopedamping = \infinity
%%24
\textstyle "roman"; % ugh
< d2.^"fine" 'a2. 'd2._"3 mins.">
}
\paper{
linewidth= 150.0\mm;
+ % how does this work?
+ % why does space not have dim?
+ arithmetic_basicspace = 3.2;
+ % how can multiplier have dim?
+ arithmetic_mulitplier = 9.\pt;
\output "scsii-menuetto.out";
}
\midi{
\advance\textwidth30mm
\begin{document}
\input lilyponddefs
-\musixsixteendefs
\input titledefs
\def\interscoreline{\vskip6pt}
\title{Solo Cello Suites\normalsize\\[2ex]Suite II}
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-%{ remember to:
-rm `find /var/lib/texmf -name "feta-sleur-*"`
-%}
-
\version "0.1.7";
+shortlong = \melodic{
+ c4()c( c c |
+ c c c c |
+ c c c c |
+ c c c )c |
+}
+
+dirs = \melodic {
+ \octave c';
+ c'1() g' () c () g () c |
+}
+
+complex = \melodic{
+ \octave c';
+ 'c16( 'e( 'g( 'b( d( f( a( c'~ )))))))c4 c4 |
+ \octave c''';
+ 'c16( a( f( d( 'b( 'g( 'e( 'c~ )))))))c4 c4 |
+}
+
+beum = \melodic{
+ [c8 c] c4 c4 c4 |
+}
+
\score{
\melodic{
- \octave c'
- ;c'1() g' () c () g () c
+ \shortlong
+ \dirs
+ \complex
+ \beum
}
\paper{ }
}
\score{
\melodic{\octave c';
\duration "last";
+
'c4 ~ 'c c'' ~ c'' ~ g ~ c ~
d ~ e ~ f ~ g ~
a ~ b ~ 'c ~ c
< { c ~ d }
{ e ~ f }
>
- \multi 2 <
- { \stemup c'8 ~g ~e( ~c~ [c'~ g' e' )c'] c'' ~ c'' c~c }
- { \stemdown c (e g )c'~( [b a g )d] r2 }
- >
+% \multi 2 <
+% { \stemup c'8 ~g ~e( ~c~ [c'~ g' e' )c'] c'' ~ c'' c~c }
+% { \stemdown c (e g )c'~( [b a g )d] r2 }
+% >
+
+ {
+% \octave c';
+% 'c16( 'e( 'g( 'b( d( f( a( c'~ )))))))c4 c4 |
+% \octave c''';
+% 'c16( a( f( d( 'b( 'g( 'e( 'c~ )))))))c4 c4 |
+% \octave c';
+% c'1() g' () c () g () c |
+ c4()c( c c |
+ c c c c |
+ c c c c |
+ c c c )c |
+ }
+ }
}
}
\input titledefs
%\pagestyle{empty}
\begin{document}
-\musixsixteendefs
\def\interscoreline{\vskip3mm}
\title{St\"andchen\normalsize\\[2ex](Serenade)}
\composer{Franz Schubert (1797-1828)}
\pagestyle{empty}
\begin{document}
\input lilyponddefs
-\musixtwentydefs
\input titledefs
\def\interscoreline{\vskip3mm}
\title{St\"andchen\normalsize\\[2ex](Serenade)}
multiple \paper{}s in one \score
%}
+\include "paper20.ly"
\version "0.1.7";
commands = \melodic{
--- /dev/null
+\header{
+filename = "standchen.ly";
+title = "St\"andchen (Serenade) \"Leise flehen meine Lieder\"";
+opus = "D. 957 No. 4";
+composer = "Franz Schubert (1797-1828)"
+ "Text by Ludwig Rellstab (1799-1860)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+%{
+ Tested Features: multivoice, accents, lyrics, chords, piano music,
+multiple \paper{}s in one \score
+%}
+
+\version "0.1.7";
+
+$vocal_verse1 = \melodic{
+ \octave c';
+ % ugh: treble/bass
+% \clef treble;
+ \clef violin;
+ % ugh: '3' of plet should hang over middle note
+ % ugh: barcheck fails if i write 'g8' below:
+% [2/3 g8( )as]1/1 \plet 2/3; g8 \plet 1/1; c'4. g8 |
+ % anyway, for typping this plet stuff sucks
+ [2/3 g8( )as]1/1 \plet 2/3; g \plet 1/1; c'4. g8 |
+ [2/3 f8( )g]1/1 \plet 2/3; f \plet 1/1; c'4 f8 r |
+ g4.-> f8 [2/3 f( )es]1/1 \plet 2/3; d \plet 1/1; |
+ es2 r4 |
+ % ugh: a whole should be a measure
+ %r1 |
+ r2. |
+ r2. |
+ [2/3 g8( )as]1/1 \plet 2/3; g \plet 1/1; es'4. g8 |
+ [2/3 f8( )g]1/1 \plet 2/3; f \plet 1/1; d'4. c'8 |
+ bes4. as8 [2/3 as( )g]1/1 \plet 2/3; f \plet 1/1; |
+ g2 r4 |
+ r2. |
+ r2. |
+ g8. b16 es'4. d'8 |
+ c'8. g16 es4. c8 |
+ % [as32\grace( bes32\grace] )
+ [2/3 as8( )g]1/1 \plet 2/3; as \plet 1/1; c'4. as8 |
+ g2. |
+ %[f32\grace( g] )
+ [2/3 f8( )e]1/1 \plet 2/3; f \plet 1/1; as4. f8 |
+ es!2. |
+ g8. b16 es'4. d'8 |
+ c'8. g16 e4. c8 |
+ % [a32\grace b] )
+ [2/3 a!8( ) gis]1/1 \plet 2/3; a \plet 1/1; c'4. a8 |
+ g!2. |
+ [2/3 d'8\f cis']1/1 \plet 2/3; d \plet 1/1; f'4. b8 |
+ c'2. |
+ r2. |
+ r2. |
+}
+
+$lyric_verse1 = \lyric{
+% 5
+ [2/3 Lei-4 se8 ]1/1 fleh-4. en8 |
+ [2/3 mei-4 ne8 ]1/1 Lie-4 der8 _8 |
+ Durch4. die8 [2/3 Nacht4 zu8 ]1/1 |
+ dir;2 _4 |
+ _4 _ _ |
+ _ _ _ |
+% 11
+ [2/3 In4 den8 ]1/1 stil-4. len8 |
+ [2/3 Hainr4 her-8 ]1/1 nie-4. der,8 |
+ Lieb4. chen,8 [2/3 komm4 zu8 ]1/1 |
+ mir!2 _4 |
+ _4 _ _ |
+ _ _ _ |
+% 17
+ Fl\"us-8. ternd16 schlan-4. ke8 |
+ Wip-8. fel16 rau-4. schen8 |
+ [2/3 In4 des8 ]1/1 Mon-4. des8 |
+ Licht;2. |
+ _4 _ _ |
+ _4 _ _ |
+% 23
+ Des8. Ver-16 r\"a-4. ters8 |
+ feind-8. lich16 Lau-4. schen8 |
+ [2/3 F\"urch-4 te,8 ]1/1 Hol-4. de,8 |
+ nicht,2. |
+ [2/3 f\"urch-4 te,8 ]1/1 Hol-4. de,8 |
+ nicht.2. |
+ _4 _ _
+ _ _ _
+}
+
+$treble_intro = \melodic{
+ \octave c';
+ \clef violin;
+ % ugh: i'd like to type this!
+ %r8 [<'g-. c-.> <c-. es-.> <'g-. c-.> <c-. es-.> <'g-. c-.>] |
+ r8 <['g-. c-.> <c-. es-.> <'g-. c-.> <c-. es-.> <'g-. 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-.]> |
+
+}
+
+$treble_verse1 = \melodic{
+ \octave c';
+ \clef violin;
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['f c> <c d> <'f c> <c d> <'f 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> <)f'8 d'> <[2/3 f' d'> <es' c'> <d' b]1/1> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+ r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+}
+
+$bass_intro = \melodic{
+ \octave c;
+ \clef bass;
+ <'c2 c> r4 |
+ <''as2 'as> r4 |
+ <''f2 'f> r4 |
+ <''g2 g> r4 |
+}
+
+$bass_verse1 = \melodic{
+ \octave c;
+ \clef bass;
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+ <'c2 c> r4 |
+}
+
+
+global= \melodic {\meter 3/4; \key bes es as; }
+
+
+\score{
+ \melodic<
+ \type Lyrics { \skip 4 * 12; \$lyric_verse1 }
+ \type Staff
+ { \skip 4 * 12; \$vocal_verse1 }
+
+ % i want a (grand) staff!!!
+
+ \type Grandstaff <
+ < { \$treble_intro \$treble_verse1 }
+ \global
+ >
+ < \global
+ { \$bass_intro \$bass_verse1 }
+ >
+ >
+ >
+ \paper{
+ % how does this work?
+ % previously we had the clear 'ideal whole note space' setting?
+ arithmetic_multiplier = 6.\pt;
+ % ugh: the *first* (intro) line may only have four measures...
+ gourlay_maxmeasures = 4.;
+ }
+}
+
MAJOR_VERSION = 0
MINOR_VERSION = 1
-PATCH_LEVEL = 39
+PATCH_LEVEL = 41
MY_PATCH_LEVEL =
{
Paper_def *p = paper();
Atom s = p->lookup_l()->bar (type_str_,
- p->get_var ("bar_size"));
+ p->get_var ("barsize"));
Molecule*output = new Molecule (Atom (s));
return output;
Real staffline_thickness = paper ()->rule_thickness ();
Real beam_thickness = 0.48 * (interline_f - staffline_thickness);
- const int QUANTS = 6;
- Real qy[QUANTS] = {
+ const int QUANTS = 7;
+ Real qy[QUANTS] =
+ {
0,
beam_thickness / 2,
beam_thickness,
interline_f / 2 + beam_thickness / 2 + staffline_thickness / 2,
interline_f,
interline_f + beam_thickness / 2,
+ interline_f + beam_thickness
};
/*
ugh, using i triggers gcc 2.7.2.1 internal compiler error (far down):
for (int i = 0; i < QUANTS; i++)
*/
+
+ // fixme!
for (int ii = 0; ii < QUANTS; ii++)
- qy[ii] -= beam_thickness / 2;
- Pos qpos[QUANTS] = {
+ qy[ii] -= 0.5 *beam_thickness;
+ Pos qpos[QUANTS] =
+ {
HANG,
STRADDLE,
SIT,
INTER,
HANG,
- STRADDLE
+ STRADDLE,
+ SIT
};
// y-values traditionally use internote dimension
if (extend_b)
left_y_ = (dir_ > 0 ? upper_y : lower_y);
else
- left_y_ = (upper_y - left_y_ < y - lower_y ? upper_y : lower_y);
+ left_y_ = (upper_y - y < y - lower_y ? upper_y : lower_y);
}
void
for (int j=0; j < stems_.size (); j++)
{
Stem *s = stems_[j];
+ if (s->transparent_b_)
+ continue;
Real x = s->hpos_f () - x0;
s->set_stemend (left_y_ + slope_f_ * x);
+/*
+ debug.cc -- implement debugging routines
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1996,98 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ */
+#include <malloc.h>
#include <fstream.h>
#include <signal.h>
#include <std/new.h>
#include "dstream.hh"
#include "flower-debug.hh"
#include "moment.hh"
-
+#include "main.hh"
Dstream *monitor=0;
ostream * nulldev =0;
bool check_debug=false;
+
+bool check_malloc_b = false;
+
+// #define MEMORY_PARANOID
+
+#ifdef MEMORY_PARANOID
+
+
+void *
+operator new (size_t size)
+{
+ void *result;
+ result = malloc (size);
+ if (check_malloc_b)
+ memfrob (result, size);
+ return result;
+}
+
+
+void
+operator delete (void *p)
+{
+ if (!p)
+ return ;
+ if (check_malloc_b)
+ memfrob (p, 8); // ugh. Need the blocksize. 8 is sysdependant
+
+ free (p);
+}
+#endif // MEMORY_PARANOID
+
void
set_debug (bool b)
{
check_debug =b;
set_flower_debug (*monitor, check_debug);
+ check_malloc_b = experimental_features_global_b;
}
+
NO_AXES=2,
};
-class String;
+#include "string.hh" // ugh
String axis_name_str (Axis);
beam and that point in the correct direction */
class Beam: public Directional_spanner {
public:
+ /** The beams (especially at small slopes) should be prevented to
+ conflict with the stafflines. This necessitates some quantisation
+ of start and end posititons of the beam.
+ */
enum Pos { NONE, SIT = 1, STRADDLE = 2, HANG = 4, INTER = 8 };
- // ugh, silly C++
- enum Quantise { NUN, NORMAL, TRADITIONAL };
+ // ugh, silly C++ (Pos::NONE vs Quantise::NONE)
+ enum Quantise { NUNE, NORMAL, TRADITIONAL };
Link_array<Stem> stems_;
/// the slope of the beam in posns / point (dimension)
#include "colhpos.hh"
+
/**
Statistics for the number of columns calced.
*/
struct Midi_item {
DECLARE_MY_RUNTIME_TYPEINFO;
Midi_item (Audio_item* audio_item_l);
+ virtual ~Midi_item ();
static String i2varint_str (int i);
void output (Midi_stream* midi_stream_l) const;
virtual String str() const = 0;
*/
class Active_constraints {
- friend class Inactive_iter;
+ friend class Inactive_iter;
- Matrix A,H;
- Array<int> active;
- Array<int> inactive; // actually this is a set, not an array.
- Ineq_constrained_qp const *opt;
+ Matrix A,H;
+ Array<int> active;
+ Array<int> inactive; // actually this is a set, not an array.
+ Ineq_constrained_qp const *opt;
public:
- String status() const;
+ String status() const;
- Vector vec (int k) const { return opt->cons[k]; }
- Real rhs (int k) const { return opt->consrhs[k]; }
+ Vector vec (int k) const { return opt->cons[k]; }
+ Real rhs (int k) const { return opt->consrhs[k]; }
- /** drop constraint. drop constraint k from the active set. k is the index of the
+ /** drop constraint. drop constraint k from the active set. k is the index of the
constraint in #active#
*/
- void drop (int k);
+ void drop (int k);
- /** add constraint j.
+ /** add constraint j.
add constraint j to the active set j is the index of the
constraint in #inactive#
*/
- void add (int j);
+ void add (int j);
- /// exchange in and out.
- void exchange (int in, int out) { add (in); drop (out); }
+ /// exchange in and out.
+ void exchange (int in, int out) { add (in); drop (out); }
- Vector find_active_optimum (Vector g);
+ Vector find_active_optimum (Vector g);
- /// get lagrange multipliers.
- Vector get_lagrange (Vector v);
+ /// get lagrange multipliers.
+ Vector get_lagrange (Vector v);
- Active_constraints (Ineq_constrained_qp const *op);
- /** construct: no constraints active, n vars. Put the equalities
- into the constraints. */
+ Active_constraints (Ineq_constrained_qp const *op);
+ /** construct: no constraints active, n vars. Put the equalities
+ into the constraints. */
- /// check invariants
- void OK();
+ /// check invariants
+ void OK();
};
loop through the inactive constraints.
*/
class Inactive_iter {
- int j;
- Active_constraints const* ac;
+ int j;
+ Active_constraints const* ac;
public:
- Inactive_iter (Active_constraints const &c) { ac=&c; j=0; }
- int idx() const { return j; }
- void operator ++(int) { j++; }
- int constraint_id() const { return ac->inactive[j]; }
- Vector vec() const { return ac->vec (constraint_id ()); }
- Real rhs() const { return ac->rhs (constraint_id ()); }
- bool ok() const { return j < ac->inactive.size (); }
+ Inactive_iter (Active_constraints const &c) { ac=&c; j=0; }
+ int idx() const { return j; }
+ void operator ++(int) { j++; }
+ int constraint_id() const { return ac->inactive[j]; }
+ Vector vec() const { return ac->vec (constraint_id ()); }
+ Real rhs() const { return ac->rhs (constraint_id ()); }
+ bool ok() const { return j < ac->inactive.size (); }
};
#endif // QLPSOLVE_HH
{0, "debug", 'd'},
{1, "init", 'i'},
{1, "include", 'I'},
- {0, "no-midi", 'M'},
+ {0, "no-paper", 'M'},
{0, "no-postscript", 'P'},
{0, "ignore-version", 'V'},
{0,0,0}
#ifndef NPRINT
Music_output_def::print ();
DOUT << "Midi {";
- DOUT << "4/min: " << Real (60) / (whole_in_seconds_mom_ * 4);
+ DOUT << "4/min: " << Moment (60) / (whole_in_seconds_mom_ * Moment (4));
DOUT << "}\n";
#endif
}
instrument_str_.to_lower();
channel_i_ = channel_i;
}
-
+
+Midi_item::~Midi_item ()
+{
+}
+
String
Midi_instrument::str() const
{
Real
Paper_def::rule_thickness() const
{
- return get_var ("rule_thickness");
+ return get_var ("rulethickness");
}
Real
Paper_def::TeX_output_settings_str () const
{
String s("\n ");
- s += lookup_p_->texsetting + "%(Tex id)\n";
for (Assoc_iter<String,Real> i (*real_vars_p_); i.ok(); i++)
s += String ("\\def\\mudelapaper") + i.key () + "{" + i.val () + "}\n";
+ s += lookup_p_->texsetting + "%(Tex id)\n";
return s;
}
$$->header_p_ = $2;
}
| score_body Music {
+ if ($$->music_p_)
+ $2->warning ("More than one music block");
$$->music_p_ = $2;
}
| score_body output_def {
Voice_body:
/**/ {
$$ = new Voice;
+ $$->set_spot (THIS->here_input ());
}
| Voice_body Music {
$$->add ($2);
t-> change_to_id_str_ = *$4;
$$ = t;
+ $$->set_spot (THIS->here_input ());
delete $2;
delete $4;
}
t-> var_str_ = *$4;
t-> value_ = *$6;
$$ = t;
+ $$->set_spot (THIS->here_input ());
delete $2;
delete $4;
delete $6;
/**/ {
$$ = new Chord;
$$-> multi_level_i_ = 1;
+ $$->set_spot (THIS->here_input ());
}
| Chord_body Music {
$$->add ($2);
TRANSPOSE steno_melodic_req Music {
$$ = $3;
$$ -> transpose ($2);
+
delete $2;
}
;
voice_command:
PLET INT '/' INT {
- THIS->default_duration_.set_plet ($2,$4);
+ THIS->plet_.type_i_ = $4;
+ THIS->plet_.iso_i_ = $2;
}
| DURATION STRING {
THIS->set_duration_mode (*$2);
Score::Score()
+ : Input()
{
header_p_ = 0;
music_p_ = 0;
{
for (int i=0; i < global_score_array.size(); i++)
{
- Score *&is_p = global_score_array[i];
+// Score *&is_p = global_score_array[i];
+ Score* is_p = global_score_array[i];
if (!is_p->header_p_)
is_p->header_p_ = new Header;
encompass_arr_.sort (Note_column_compare);
if (!dir_)
set_default_dir();
- Real inter_f = paper()->internote_f ();
+ Real interline_f = paper ()->interline_f ();
+ Real inter_f = interline_f / 2;
+
+ /*
+ [OSU]: slur and tie placement
+
+ slurs:
+ * x = centre of head (upside-down: inner raakpunt stem) - d * gap
+
+ * y = length < 5ss : horizontal raakpunt + d * 0.25 ss
+ y = length >= 5ss : y next interline - d * 0.25 ss
+ --> height <= 5 length ?? we use <= 3 length, now...
+
+ * suggested gap = ss / 5;
+ */
+ // jcn: 1/5 seems so small?
+ Real gap_f = interline_f / 2; // 5;
Drul_array<Note_column*> extrema;
extrema[LEFT] = encompass_arr_[0];
*(spanned_drul_[d]->width ().length () -0.5*nw_f);
}
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] += 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);
}
Staff_symbol::brew_molecule_p() const
{
Paper_def * p = paper();
- Atom rule = p->lookup_l ()->rule_symbol (p->get_var ("rule_thickness"),
+ Atom rule = p->lookup_l ()->rule_symbol (p->get_var ("rulethickness"),
width ().length ());
Real height = (no_lines_i_-1) * inter_note_f();
Molecule * m = new Molecule;
#include "debug.hh"
#include "lookup.hh"
#include "misc.hh"
+#include "paper-def.hh"
+#include "string-convert.hh"
#include "main.hh"
Atom
Atom
Lookup::rule_symbol (Real height, Real width) const
{
- Atom bs=(*symtables_p_)("beamslopes")->lookup ("horizontal");
+ Atom bs=(*symtables_p_)("param")->lookup ("rule");
Array<String> args;
args.push (print_dimen (height));
args.push (print_dimen (width));
Atom
Lookup::beam(Real &slope, Real width, Real y_thick) const
{
- if (postscript_global_b)
- {
- return ps_beam (slope, width, y_thick);
- }
- else
- return tex_beam(slope, width);
+ Atom a( postscript_global_b
+ ? ps_beam (slope, width, y_thick)
+ : tex_beam (slope, width));
+
+ Real slope_y =slope * width;
+ Real min_y = (0 <? slope_y )- y_thick/2;
+ Real max_y = (0 >? slope_y) + y_thick/2;
+
+ a.dim_[X_AXIS] = Interval(0, width);
+ a.dim_[Y_AXIS] = Interval(min_y, max_y);
+ return a;
}
Atom
-Lookup::ps_beam (Real slope, Real width, Real y_thickness)const
+Lookup::ps_beam (Real slope, Real width, Real y_thickness)const
{
- Atom ret;
- String ps(String (width) + " "+ String(slope)
- + " " + String(y_thickness) + " draw_beam");
- ret.tex_ = String("\\embeddedps{" + ps + "}");
- ret.dim_[X_AXIS] = Interval(0, width);
- ret.dim_[Y_AXIS] = Interval(0, slope * width + y_thickness);
- return ret;
+ String ps = "\\embeddedps{\n";
+ ps += String (width) + " "+ String (slope) + " " + String (y_thickness)
+ + " draw_beam}";
+
+ /*
+ beam parts are rarely wider than 100pt:
+ precision of 4 yields maximum (half beam spanning half a page)
+ error of: 1%% * 3*72pt === 0.2pt = 0.07mm
+ */
+ String width_str = String_convert::precision_str (width, 4);
+ String slope_str = String_convert::precision_str (slope, 4);
+ String thick_str = String_convert::precision_str (y_thickness, 3);
+ String name = "feta-beum-" + width_str + "-" + slope_str + "-" + thick_str;
+
+ int i;
+ while ((i = name.index_i ('.')) != -1)
+ name[i]= 'x';
+
+
+ String mf = "\\embeddedmf{" + name + "}{\n";
+ mf += "input feta-beum;\n";
+ mf += "drawbeam(" + width_str + "," + slope_str + "," + thick_str + ");\n";
+ mf += "end.\n";
+ mf += "}\n";
+
+ Atom s;
+ s.tex_ = ps + mf;
+
+ return s;
}
Atom
Atom ret;
ret.tex_ = m.TeX_string();
- ret.dim_.y() = Interval (0,width*slope);
- ret.dim_.x() = Interval (0,width);
return ret;
}
assert (idx < 256);
f+=String ("{") + String (idx) + "}";
-
s.tex_ = f;
return s;
+ String_convert::double_str (dir) +
" draw_slur}";
- String mf = "\\embeddedmf{\n";
+ /*
+ slurs are rarely wider than 100pt:
+ precision of 3 yields maximum (slur spanning page)
+ error of: 1%% * 6*72pt === 0.4pt = 0.14 mm
+ */
+ String dx_str = String_convert::precision_str (dx, 4);
+ String dy_str = String_convert::precision_str (dy, 3);
+ String dir_str = String_convert::int_str ((int)dir);
+ String name = "feta-sleur-" + dx_str + "-" + dy_str + "-" + dir_str;
+ int i = name.index_i ('.');
+ while (i != -1)
+ {
+ *(name.ch_l () + i) = 'x';
+ i = name.index_i ('.');
+ }
+
+ String mf = "\\embeddedmf{" + name + "}{\n";
+ mf += "staffsize\\#:="
+ + String_convert::int_str ((int)paper_l_->get_var ("barsize"), "%d")
+ + "pt\\#;\n";
mf += "input feta-sleur;\n";
- mf += "draw_slur((0,0),";
- mf += "(" + String_convert::double_str (dx) + ","
- + String_convert::double_str (dy) + "),";
- mf += String_convert::double_str (dir) + ");\n";
+ mf += "drawslur(" + dx_str + "," + dy_str + "," + dir_str + ");\n";
mf += "end.\n";
mf += "}\n";
void
Tie::do_post_processing()
{
- Real nw_f = paper()->note_width ();
- Real space_f = paper()->interline_f ();
+ Real nw_f = paper ()->note_width ();
+ Real interline_f = paper ()->interline_f ();
assert (head_l_drul_[LEFT] || head_l_drul_[RIGHT]);
+ /*
+ [OSU]: slur and tie placement
+
+ ties:
+ * x = inner raakpunt - d * gap
+
+ * y = length < 5ss : horizontal raakpunt
+ y = length >= 5ss : y next interline - d * 0.25 ss
+ --> height <= 5 length ?? we use <= 3 length, now...
+
+ * suggested gap = ss / 5;
+ */
+ // jcn: 1/5 seems so small?
+ Real gap_f = interline_f / 2; // 5;
+
Direction d = LEFT;
do
{
- dy_f_drul_[d] =
- .5 *space_f * (head_l_drul_[d]
+ dy_f_drul_[d] = .5 * interline_f * (head_l_drul_[d]
? head_l_drul_[d]->position_i_
: head_l_drul_[(Direction)-d]->position_i_);
}
{
if (head_l_drul_[d] && head_l_drul_[d]->extremal_i_)
{
- dy_f_drul_[d] += dir_ * space_f;
- dx_f_drul_[d] += d * 0.25 * nw_f;
+ /* normal tie between noteheads, with gap of space */
+ dx_f_drul_[d] += -d * (0.5 * nw_f + gap_f);
+ /* attach to outer 3/4 end of head */
+ dy_f_drul_[d] += dir_ * 0.25 * interline_f;
}
else if (head_l_drul_[d])
- dx_f_drul_[d] += d*0.5 * nw_f;
+ {
+ dx_f_drul_[d] += d*0.5 * nw_f;
+ }
else
{
dy_f_drul_[d] = dy_f_drul_[(Direction) -d];
- dx_f_drul_[d] = -d *(spanned_drul_[d]->width ().length ()
- -0.5* nw_f);
+ dx_f_drul_[d] = -d * (spanned_drul_[d]->width ().length ()
+ -0.5 * nw_f);
}
}
while ((d *= -1) != LEFT);
}
-
-
void
Tie::do_substitute_dependency (Score_elem*o, Score_elem*n)
{
# huh, but still, no warnings even provoced with linux's gcc 2.7.2.1?
# -pipe makes it go faster, but is not supported on all platforms.
+# EXTRA_CXXFLAGS= -fno-rtti -fno-exceptions -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
EXTRA_CXXFLAGS= -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
-
CXXFLAGS = $(CFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS) $(MODULE_CXXFLAGS)
INCLUDES = -Iinclude -I$(outdir) -I$(include-lib) -I$(libout) -I$(include-flower) -I$(flowerout)
CXX_OUTPUT_OPTION = $< -o $@
Begin3
Titel: LilyPond
-Versie: 0.1.39
-Inschrijf datum: 05JAN98
+Versie: 0.1.41
+Inschrijf datum: 19JAN98
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.39.tar.gz
+ 395k lilypond-0.1.41.tar.gz
Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
- 395k lilypond-0.1.39.tar.gz
+ 395k lilypond-0.1.41.tar.gz
Copi"eer politie: GPL
End
Begin3
Title: LilyPond
-Version: 0.1.39
-Entered-date: 05JAN98
+Version: 0.1.41
+Entered-date: 19JAN98
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.39.tar.gz
+ 470k lilypond-0.1.41.tar.gz
Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
- 470k lilypond-0.1.39.tar.gz
+ 470k lilypond-0.1.41.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 0.1.39
+Version: 0.1.41
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.39.tar.gz
+Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.41.tar.gz
Summary: A program for typesetting music.
URL: http://www.stack.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@stack.nl>
make prefix="$RPM_BUILD_ROOT/usr" install
%files
%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/internals.text Documentation/out/language.text Documentation/out/lilypond.text Documentation/out/links.text Documentation/out/literature.text Documentation/out/mi2mu.text Documentation/out/mudela-book.text Documentation/out/mutopia.text Documentation/out/other-packages.text BUGS TODO NEWS DEDICATION ANNOUNCE README
-%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/font.ly input/font20.ly input/gallina.ly input/gallina.tex 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/scsii-menuetto.ly input/scsii-menuetto.tex input/sleur.ly input/slurs.ly input/spacing.ly input/standchen-16.ly input/standchen-16.tex input/standchen-20.ly input/standchen-20.tex input/standchen.ly input/stem.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly input/wtk1-fugue1.ly input/wtk1-fugue2.ly input/wtk1-prelude1.ly Documentation/mudela-course.doc Documentation/mudela-man.doc
+%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/font-body.ly input/font.ly input/font11.ly input/font13.ly input/font16.ly input/font20.ly input/font26.ly input/gallina.ly input/gallina.tex 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/scsii-menuetto.ly input/scsii-menuetto.tex input/sleur.ly input/slurs.ly input/spacing.ly input/standchen-16.ly input/standchen-16.tex input/standchen-20.ly input/standchen-20.tex input/standchen.ly input/standje.ly input/stem.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly input/wtk1-fugue1.ly input/wtk1-fugue2.ly input/wtk1-prelude1.ly Documentation/mudela-course.doc Documentation/mudela-man.doc
%doc Documentation/out/lelie_logo.gif
/usr/bin/convert-mudela
/usr/bin/mudela-book
%post
texhash # takes some time...
+rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm'`
%post
texhash # takes some time...
+rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm'`
#
TEXFILES = $(wildcard *.tex)
MFFILES = $(wildcard *.mf)
-EXTRA_DISTFILES = $(MFFILES) $(TEXFILES) TODO README
+MFDEPS = mf.dep
+EXTRA_DISTFILES = $(MFFILES) $(TEXFILES) $(MFDEPS) TODO README
#
FONT_FILES = $(wildcard *[0-9].mf)
all: $(LYTABLES) $(TEXTABLES)
localclean:
- rm -f $(LYTABLES) $(TEXTABLES) $(outdir)/mfdeps
+ rm -f $(LYTABLES) $(TEXTABLES) $(MFDEPS)
$(outdir)/%.dvi: %.mf
mf $<
rm $(basename $< ).*gf
$(lyout)/%.ly $(texout)/%.tex: $(outdir)/%.log
- $(depth)/bin/$(outdir)/mf-to-table --ly $(lyout)/$(<F:.log=.ly) --tex $(texout)/$(<F:.log=.tex) $<
+ $(PYTHON) $(depth)/bin/mf-to-table.py --ly $(lyout)/$(<F:.log=.ly) --tex $(texout)/$(<F:.log=.tex) $<
localinstall:
$(INSTALL) -d $(MFDIR)/public/lilypond
for i in $(MFFILES) ; do rm -f $(MFDIR)/lilypond/$$i; done
-rmdir $(MFDIR)/public/lilypond/
-$(outdir)/mfdeps: $(FONT_FILES)
+$(MFDEPS): $(FONT_FILES)
# do something silly to avoid barfs if python not installed.
echo > $@
- $(depth)/bin/$(outdir)/mf-deps $^ >> $@
+ $(PYTHON) $(depth)/bin/mf-deps.py $^ >> $@
# dependencies:
#
-include $(outdir)/mfdeps
+include $(MFDEPS)
#
-
-
-
This table is partially taken from [Ross]. Most music is set in No.3,
but the papersizes usually are bigger than standard printer paper
-(such as A4).
+(such as A4). If you plot these, you'll notice that the sizes (With
+exception of 26) almost (but not quite) form a arithmetic progression.
[Ross] states that the dies (the stamps to make the symbols) come in
12 different sizes.
- 128th flags
- include important spacing dims in fetalog
+ - more sizes, see readme
\font\black=black
%\font\taupin=musix16
-%\font\fet=font-en-tja16
+
%\font\vet=vette-beams16
%\font\slurs=xslhd16
%\font\specfont=musixspx
def hround_pixels(expr sharped) = hround(sharped * hppp) enddef;
def vround_pixels(expr sharped) = vround(sharped * vppp) enddef;
-
-
def tand(expr alpha) =
(sind alpha/cosd alpha)
enddef;
% vette-beams16.mf
% part of LilyPond's pretty-but-neat music font
-% font_identifier:="font-en-tja16";
-% font_size 16pt#;
font_identifier:="vette-beams16";
font_size 16;
mode_setup;
--- /dev/null
+% (this was vette-beams16.mf)
+% part of LilyPond's pretty-but-neat music font
+
+%
+%
+
+font_identifier:="feta-beams26";
+font_size 26;
+mode_setup;
+
+staffsize#:=26pt#;
+
+input feta-watzieik;
+end.
--- /dev/null
+% feta-test16
+% part of LilyPond's pretty-but-neat music font
+
+
+input feta-autometric;
+fet_beginfont("feta-test", 16);
+staffsize#:=16pt#;
+test:=1;
+
+% smoked cheese
+test := -1;
+
+
+% dem piksels.
+%test := 1;
+
+input feta-generic;
+
+fet_endfont("feta");
+
+end.
+
-- z4l -- z4r -- z3r{left} .. z2r{up} -- cycle;
addto currentpicture also currentpicture yscaled -1;
- addto currentpicture also currentpicture reflectedabout(z4r, z4l);
+ show z4r; show z4l;
+ addto currentpicture also currentpicture
+ shifted (-x4r,0) xscaled -1 shifted (x4l,0);
+
enddef;
save uitsteek;
% input feta-bolletjes;
% input feta-banier;
% input feta-eindelijk;
-% input feta-klef;
+ input feta-klef;
% input feta-toevallig;
- input feta-schrift;
+% input feta-schrift;
fi
%
% Inspired by Baerenreiter
%
-% FIXME top should be thinner at z8,
% FIXME bulb should curve (see bass clef)
% FIXME start (inside) should be little thinner
% FIXME parametrise.
center - z10= whatever * downstroke_dir;
center - z11 = whatever * downstroke_dir;
-
+ center - z14 = .8 (center - z11);
penpos1(thinnib, inner_start_angle);
penpos2(thickness, 90);
penpos3(thinnib, -90 + inner_thick_end);
penpos9(1.4 thickness, -80); % ugh
penpos10(whatever, downstroke_angle + 10);
penpos11(thinnib, downstroke_angle + 90);
+ penpos14(thinnib, downstroke_angle + 90);
penpos12(thinnib, -90);
penpos13(3 thinnib, 180);
-
filldraw z2l{right} .. z3l.. z4l{left} .. z5l{up} .. z7l{up}
%.. z8l
.. tension 1.2
draw_bulb(-1, z13l, lft z13r, 6/14 reduced_il, 1.0);
pickup pencircle scaled (thinpen);
- draw z10 --- z11 .. z12{left};
+ draw z10 --- z14 .. z11 .. tension 0.85 .. z12{left};
penlabels(range 1 thru 15);
enddef;
--- /dev/null
+% feta-nummer10.mf
+% part of LilyPond's pretty-but-neat music font
+
+size:=12;
+
+input feta-nummer-generic;
+
+end.
+
--- /dev/null
+% feta-nummer4.mf
+% part of LilyPond's pretty-but-neat music font
+
+% size:=4;
+size:=16*3/15;
+
+input feta-nummer-generic.mf;
+
+end.
+
--- /dev/null
+% feta-nummer5.mf
+% part of LilyPond's pretty-but-neat music font
+
+% size:=5;
+size:=20*6/15;
+
+input feta-nummer-generic.mf;
+
+end.
+
--- /dev/null
+% feta-nummer5.mf
+% part of LilyPond's pretty-but-neat music font
+
+% size:=5;
+size:=26*4/15;
+
+input feta-nummer-generic.mf;
+
+end.
+
-% feta-sleur.mf
+%
+% feta-sleur.mf -- implement runtime MF slurs
+%
+% source file of LilyPond's pretty-but-neat music font
+%
+% (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
+% & Han-Wen Nienhuys <hanwen@stack.nl>
+%
+
mode_setup;
-thin:=.2pt;
-thick:=5thin;
-ybow:=.2;
-abow:=1.5;
-def draw_slur(expr a,b,d) =
- beginchar(0,0,0,0) "Embedded mf";
- % huh, factor 8?
- z1=8a;
- z2=8b;
- save alpha; alpha=angle(z2-z1);
- save len; len=length(z2-z1);
- z3=(0,0);
- z4=(len/2,len*ybow*d);
- z5=(len,0);
- save beta; beta=abow*angle(z4-z3);
- penpos3(thin,90+beta);
- penpos4(thick,90);
- penpos5(thin,90-beta);
- pickup pencircle;
- path boogje;
- boogje = z3l{dir(beta)}..z4l{right}..z5l{dir(-beta)}
- ..z5r{dir(180-beta)}..z4r{left}
- ..z3r{dir(180+beta)}..cycle;
- penlabels(1,2,3,4,5);
- boogje := boogje rotated alpha;
- % silly mo*tex convenction
-% boogje := boogje shifted ((x1-x2)/2,0);
- fill boogje;
- endchar;
- enddef;
+% staffsize#=16pt#;
+
+pi:=3.14159;
-def sign(expr a) =
- ((abs(a))/(a))
+def atan(expr x) =
+ (angle(1,x)*pi/180)
enddef;
-def xdraw_slur(expr a,b,d) =
+%breapth, width, depth, height
+
+% urgh
+% having mf would be nice if only from a "use the source" point of view.
+%
+% getslurcontrol:
+% slurhtlimit 90 div /slur_alpha exch def
+% slurratio 60 div slur_alpha div /slur_beta exch def
+% slur_beta mul 1 atan slur_alpha mul
+%
+% draw_slur:
+% slur_b getslurcontrol
+% slur_dir mul /slur_ht exch def
+% slur_b getslurcontrol /slur_indent exch def
+%
+
+interline#:=staffsize#/4;
+stafflinethickness#:=0.1interline#;
+sleur_pen#:=stafflinethickness#;
+slurheightlimit#:=staffsize#/2;
+% staffrulethickness 1.5 mul /slur_thick exch def
+slurthick#:=3/2stafflinethickness#;
+
+define_pixels(staffsize,interline,stafflinethickness);
+define_pixels(sleur_pen,slurheightlimit,slurthick);
+
+sluralpha:=slurheightlimit#*pi/2;
+% slurratio:=1/3;
+slurratio:=0.3333;
+slurbeta:=3/4*pi*slurratio/sluralpha;
+
+def drawslur(expr dxs,dys,d) =
beginchar(0,0,0,0) "Embedded mf";
- % huh, factor 8?
- z1=8a;
- z3=8b;
- save alpha; alpha=angle(z3-z1);
- z2=(1/2[x1,x3],1/2[y1,y3])+d*ybow*(x3-x1)*dir(alpha+90);
- save beta; beta=d*sign(y3-y1)*abow*angle(z2-z1)-alpha;
-% message "d: "&decimal d;
-% message "dy: "& decimal sign(y3-y1);
-% message "alpha: "&decimal alpha;
-% message "beta: "&decimal beta;
- penpos1(thin,alpha+beta+90);
- penpos2(thick,alpha+90);
- penpos3(thin,alpha-beta+90);
- pickup pencircle;
- fill z1l{dir(alpha+beta)}..z2l{dir(alpha)}
- ..z3l{dir(alpha-beta)}..z3r{dir(180+alpha-beta)}
- ..z2r{dir(180+alpha)}..z1r{dir(180+alpha+beta)}
- ..cycle;
- penlabels(1,2,3);
+ dx#:=dxs*1pt#;
+ dy#:=dys*1pt#;
+ define_pixels(dx,dy);
+ b#:=length(dx#,dy#);
+% message "sluralpha: "&decimal (sluralpha);
+% message "slurbeta: "&decimal (slurbeta);
+% message "s*b: "&decimal (slurbeta*b#);
+% indent#:=sluralpha*atan(slurbeta*b#);
+ % ugh: huh? 2/5
+ indent#:=2/5*sluralpha*atan(slurbeta*b#);
+ define_pixels(b,indent);
+ height:=indent*d;
+ z1=(0,0);
+ z2=(b,0);
+ z3=(indent,height);
+ z4=(b-indent,height);
+ z5=z4-(0,d*slurthick);
+ z6=z3-(0,d*slurthick);
+ path boogje;
+ boogje=z1..controls z3 and z4..z2..controls z5 and z6..cycle;
+ boogje:=boogje rotated angle(dxs,dys);
+ pickup pencircle scaled sleur_pen;
+ filldraw boogje;
+ show z1;
+ show z2;
+ show z3;
+ show z4;
+ show z5;
+ show z6;
endchar;
enddef;
+
+% draw_slur(10,10,1);
% feta-test16
% part of LilyPond's pretty-but-neat music font
-% font_identifier:="font-en-tja16";
-% font_size 16pt#;
-
input feta-autometric;
fet_beginfont("feta-test", 16);
staffsize#:=16pt#;
input feta-generic;
-fet_endfont("font-en-tja");
+fet_endfont("feta");
end.
% feta-test20
% part of LilyPond's pretty-but-neat music font
-% font_identifier:="font-en-tja20";
-% font_size 20pt#;
input feta-autometric;
fet_beginfont("feta-test", 20);
input feta-generic;
-fet_endfont("font-en-tja");
+fet_endfont("feta");
end.
--- /dev/null
+% feta16.mf
+% part of LilyPond's pretty-but-neat music font
+
+
+input feta-autometric;
+fet_beginfont("feta", 11);
+staffsize#:=11pt#;
+test:=0;
+
+
+input feta-generic;
+
+fet_endfont("feta");
+
+end.
+
--- /dev/null
+% feta16.mf
+% part of LilyPond's pretty-but-neat music font
+
+
+input feta-autometric;
+fet_beginfont("feta", 13);
+staffsize#:=13pt#;
+test:=0;
+
+
+input feta-generic;
+
+fet_endfont("feta");
+
+end.
+
-% font-en-tja16.mf
+% feta16.mf
% part of LilyPond's pretty-but-neat music font
-% font_identifier:="font-en-tja16";
-% font_size 16pt#;
-
input feta-autometric;
fet_beginfont("feta", 16);
staffsize#:=16pt#;
--- /dev/null
+% feta16.mf
+% part of LilyPond's pretty-but-neat music font
+
+% font_identifier:="feta16";
+% font_size 16pt#;
+
+input feta-autometric;
+fet_beginfont("feta", 19);
+staffsize#:=19pt#;
+test:=0;
+
+
+input feta-generic;
+
+fet_endfont("feta");
+
+end.
+
-% font-en-tja20.mf
+% feta20.mf
% part of LilyPond's pretty-but-neat music font
staffsize#:=20pt#;
--- /dev/null
+% feta16.mf
+% part of LilyPond's pretty-but-neat music font
+
+% font_identifier:="feta16";
+% font_size 16pt#;
+
+input feta-autometric;
+fet_beginfont("feta", 22.5);
+staffsize#:=22.5pt#;
+test:=0;
+
+
+input feta-generic;
+
+fet_endfont("feta");
+
+end.
+
--- /dev/null
+% feta16.mf
+% part of LilyPond's pretty-but-neat music font
+
+input feta-autometric;
+fet_beginfont("feta", 26);
+staffsize#:=26pt#;
+test:=0;
+
+
+input feta-generic;
+
+fet_endfont("feta");
+
+end.
+
+
--- /dev/null
+
+# Automatically generated by mf-deps.py 0.2
+
+out/feta-beams16.log: feta-beams16.mf feta-watzieik.mf feta-params.mf
+out/feta-beams16.dvi: feta-beams16.mf feta-watzieik.mf feta-params.mf
+out/feta-beams16.2602gf: feta-beams16.mf feta-watzieik.mf feta-params.mf
+out/feta-beams16.tfm: feta-beams16.mf feta-watzieik.mf feta-params.mf
+out/feta-beams20.log: feta-beams20.mf feta-watzieik.mf feta-params.mf
+out/feta-beams20.dvi: feta-beams20.mf feta-watzieik.mf feta-params.mf
+out/feta-beams20.2602gf: feta-beams20.mf feta-watzieik.mf feta-params.mf
+out/feta-beams20.tfm: feta-beams20.mf feta-watzieik.mf feta-params.mf
+out/feta-beams26.log: feta-beams26.mf feta-watzieik.mf feta-params.mf
+out/feta-beams26.dvi: feta-beams26.mf feta-watzieik.mf feta-params.mf
+out/feta-beams26.2602gf: feta-beams26.mf feta-watzieik.mf feta-params.mf
+out/feta-beams26.tfm: feta-beams26.mf feta-watzieik.mf feta-params.mf
+out/feta-black16.log: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta-black16.dvi: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta-black16.2602gf: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta-black16.tfm: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta-braces16.log: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf
+out/feta-braces16.dvi: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf
+out/feta-braces16.2602gf: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf
+out/feta-braces16.tfm: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf
+out/feta-braces20.log: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf
+out/feta-braces20.dvi: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf
+out/feta-braces20.2602gf: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf
+out/feta-braces20.tfm: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf
+out/feta-din10.log: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf
+out/feta-din10.dvi: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf
+out/feta-din10.2602gf: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf
+out/feta-din10.tfm: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf
+out/feta-nummer10.log: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer10.dvi: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer10.2602gf: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer10.tfm: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer12.log: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer12.dvi: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer12.2602gf: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer12.tfm: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer3.log: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer3.dvi: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer3.2602gf: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer3.tfm: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer4.log: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer4.dvi: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer4.2602gf: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer4.tfm: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer5.log: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer5.dvi: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer5.2602gf: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer5.tfm: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer6.log: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer6.dvi: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer6.2602gf: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer6.tfm: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer7.log: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer7.dvi: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer7.2602gf: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer7.tfm: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer8.log: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer8.dvi: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer8.2602gf: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-nummer8.tfm: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
+out/feta-test16.log: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta-test16.dvi: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta-test16.2602gf: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta-test16.tfm: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta-test20.log: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta-test20.dvi: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta-test20.2602gf: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta-test20.tfm: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta11.log: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta11.dvi: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta11.2602gf: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta11.tfm: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta13.log: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta13.dvi: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta13.2602gf: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta13.tfm: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta16.log: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta16.dvi: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta16.2602gf: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta16.tfm: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta19.log: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta19.dvi: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta19.2602gf: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta19.tfm: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta20.log: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta20.dvi: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta20.2602gf: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta20.tfm: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta23.log: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta23.dvi: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta23.2602gf: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta23.tfm: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta26.log: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta26.dvi: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta26.2602gf: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
+out/feta26.tfm: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
{
public:
Mudela_item (Mudela_column* mudela_column_l);
+ virtual ~Mudela_item ();
virtual Moment at_mom();
virtual Moment duration_mom();
mudela_column_l_ = mudela_column_l;
}
+Mudela_item::~Mudela_item ()
+{
+}
+
Moment
Mudela_item::at_mom ()
{
--- /dev/null
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from out/feta11.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\pedalheel{42}
+\fetdef\pedaltoe{43}
+\fetdef\flageolet{44}
+
+% flags
+\fetdef\eighthflag{45}
+\fetdef\sixteenthflag{46}
+\fetdef\thirtysecondflag{47}
+\fetdef\sixtyfourthflag{48}
+\fetdef\deighthflag{49}
+\fetdef\dsixteenthflag{50}
+\fetdef\dthirtysecondflag{51}
+\fetdef\dsixtyfourthflag{52}
+
+% clefs
+\fetdef\altoclef{53}
+\fetdef\caltoclef{54}
+\fetdef\bassclef{55}
+\fetdef\cbassclef{56}
+\fetdef\violinclef{57}
+\fetdef\cviolinclef{58}
+
--- /dev/null
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from out/feta13.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\pedalheel{42}
+\fetdef\pedaltoe{43}
+\fetdef\flageolet{44}
+
+% flags
+\fetdef\eighthflag{45}
+\fetdef\sixteenthflag{46}
+\fetdef\thirtysecondflag{47}
+\fetdef\sixtyfourthflag{48}
+\fetdef\deighthflag{49}
+\fetdef\dsixteenthflag{50}
+\fetdef\dthirtysecondflag{51}
+\fetdef\dsixtyfourthflag{52}
+
+% clefs
+\fetdef\altoclef{53}
+\fetdef\caltoclef{54}
+\fetdef\bassclef{55}
+\fetdef\cbassclef{56}
+\fetdef\violinclef{57}
+\fetdef\cviolinclef{58}
+
-% Creator: mf-to-table.py version 0.4
-% Automatically generated on Mon Jan 5 15:23:51 1998
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
% Do not edit
% input from out/feta16.log
% name
--- /dev/null
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from out/feta19.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\pedalheel{42}
+\fetdef\pedaltoe{43}
+\fetdef\flageolet{44}
+
+% flags
+\fetdef\eighthflag{45}
+\fetdef\sixteenthflag{46}
+\fetdef\thirtysecondflag{47}
+\fetdef\sixtyfourthflag{48}
+\fetdef\deighthflag{49}
+\fetdef\dsixteenthflag{50}
+\fetdef\dthirtysecondflag{51}
+\fetdef\dsixtyfourthflag{52}
+
+% clefs
+\fetdef\altoclef{53}
+\fetdef\caltoclef{54}
+\fetdef\bassclef{55}
+\fetdef\cbassclef{56}
+\fetdef\violinclef{57}
+\fetdef\cviolinclef{58}
+
-% Creator: mf-to-table.py version 0.4
-% Automatically generated on Mon Jan 5 15:23:56 1998
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
% Do not edit
% input from out/feta20.log
% name
--- /dev/null
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from out/feta23.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\pedalheel{42}
+\fetdef\pedaltoe{43}
+\fetdef\flageolet{44}
+
+% flags
+\fetdef\eighthflag{45}
+\fetdef\sixteenthflag{46}
+\fetdef\thirtysecondflag{47}
+\fetdef\sixtyfourthflag{48}
+\fetdef\deighthflag{49}
+\fetdef\dsixteenthflag{50}
+\fetdef\dthirtysecondflag{51}
+\fetdef\dsixtyfourthflag{52}
+
+% clefs
+\fetdef\altoclef{53}
+\fetdef\caltoclef{54}
+\fetdef\bassclef{55}
+\fetdef\cbassclef{56}
+\fetdef\violinclef{57}
+\fetdef\cviolinclef{58}
+
--- /dev/null
+% Creator: mf-to-table.py version 0.5
+% Automatically generated on
+% Do not edit
+% input from out/feta26.log
+% name
+% rests
+\fetdef\wholerest{0}
+\fetdef\halfrest{1}
+\fetdef\outsidewholerest{2}
+\fetdef\outsidehalfrest{3}
+\fetdef\quartrest{4}
+\fetdef\eighthrest{5}
+\fetdef\sixteenthrest{6}
+\fetdef\thirtysecondrest{7}
+\fetdef\sixtyfourthrest{8}
+\fetdef\hundredtwentyeighthrest{9}
+
+% accidentals
+\fetdef\sharp{10}
+\fetdef\natural{11}
+\fetdef\flat{12}
+\fetdef\flatflat{13}
+\fetdef\sharpsharp{14}
+
+% dots
+\fetdef\dot{15}
+\fetdef\repeatcolon{16}
+
+% balls
+\fetdef\brevisball{17}
+\fetdef\brevisledger{18}
+\fetdef\longaball{19}
+\fetdef\longaledger{20}
+\fetdef\wholeball{21}
+\fetdef\wholeledger{22}
+\fetdef\halfball{23}
+\fetdef\halfledger{24}
+\fetdef\quartball{25}
+\fetdef\quartledger{26}
+
+% scripts
+\fetdef\ufermata{27}
+\fetdef\dfermata{28}
+\fetdef\sforzatoaccent{29}
+\fetdef\staccato{30}
+\fetdef\ustaccatissimo{31}
+\fetdef\dstaccatissimo{32}
+\fetdef\tenuto{33}
+\fetdef\umarcato{34}
+\fetdef\dmarcato{35}
+\fetdef\ouvert{36}
+\fetdef\plusstop{37}
+\fetdef\upbow{38}
+\fetdef\downbow{39}
+\fetdef\turn{40}
+\fetdef\trill{41}
+\fetdef\pedalheel{42}
+\fetdef\pedaltoe{43}
+\fetdef\flageolet{44}
+
+% flags
+\fetdef\eighthflag{45}
+\fetdef\sixteenthflag{46}
+\fetdef\thirtysecondflag{47}
+\fetdef\sixtyfourthflag{48}
+\fetdef\deighthflag{49}
+\fetdef\dsixteenthflag{50}
+\fetdef\dthirtysecondflag{51}
+\fetdef\dsixtyfourthflag{52}
+
+% clefs
+\fetdef\altoclef{53}
+\fetdef\caltoclef{54}
+\fetdef\bassclef{55}
+\fetdef\cbassclef{56}
+\fetdef\violinclef{57}
+\fetdef\cviolinclef{58}
+
% fetdefs.tex
-% encapsulating tex backend for auto-generated font-en-tja definitions
+% encapsulating tex backend for auto-generated feta definitions
\def\fetsixteendefs{
- \font\fontentja=feta16
+ \font\feta=feta16
\font\vetfont=feta-beams16
\font\fetanummer=feta-nummer8
\font\dynfont=feta-din10 scaled \magstep1
\font\bracefont=feta-braces16
\font\fingerfont=feta-nummer4
- \interlinedist=4pt
}
\def\fettwentydefs{
- \interlinedist=5pt
- \font\fontentja=feta20
+ \font\feta=feta20
\font\vetfont=feta-beams20
\font\fetanummer=feta-nummer10
\font\dynfont=feta-din10 scaled \magstep2
\font\bracefont=feta-braces20
\font\fingerfont=feta-nummer5
}
+\def\fettwentysixdefs{
+ \font\feta=feta26
+ \font\vetfont=feta-beams26
+ \font\fetanummer=feta-nummer12
+ \font\dynfont=feta-din10 scaled \magstep3
+ \font\bracefont=feta-braces16
+ \font\fingerfont=feta-nummer7
+}
+\def\fetthirteendefs{
+ \font\feta=feta13
+ \font\vetfont=feta-beams26
+ \font\fetanummer=feta-nummer5
+ \font\dynfont=feta-din10 scaled \magstep0
+ \font\bracefont=feta-braces16
+ \font\fingerfont=feta-nummer3
+}
+\def\fetelevendefs{
+ \font\feta=feta11
+ \font\vetfont=feta-beams26
+ \font\fetanummer=feta-nummer5
+ \font\dynfont=feta-din10 %scaled \magstep-1
+ \font\bracefont=feta-braces16
+ \font\fingerfont=feta-nummer3
+}
+
\def\sixteenfonts{\fetsixteendefs\cmrsixteen}
\def\twentyfonts{\fettwentydefs\cmrtwenty}
-
+\def\twentysixfonts{\fettwentysixdefs\cmrtwenty}
+\def\elevenfonts{\fetelevendefs\cmreleven}
+\def\thirteenfonts{\fetthirteendefs\cmrthirteen}
\def\fetdef#1#2{\def#1{%
\hbox{\fetchar{#2}}}}
-\def\fetchar#1{\fontentja\char#1}
+\def\fetchar#1{\feta\char#1}
%\input feta16
\input feta20
-\def\beamslope#1#2{{\count0=#2\advance\count0 by#1
- \advance\count0by128
- {\vetfont\char\count0}}}
-
% stacked numbers; overrules def in lilyponddefs
% widest num should be .40 balkheight
% oeps: \meter 12/8;
\def\pianobrace#1{{\bracefont\char #1}}
-\newcount\embedcount\embedcount=0
-\newwrite\checkexists
-\newwrite\embedfile
-\def\inputifexists#1{%
- \openin\checkexists #1
- \ifeof\checkexists
- \closein\checkexists
- \else
- \closein\checkexists
- \input #1
- \fi
-}
-\def\embedcountid{feta-embed}
-\inputifexists{\embedcountid.aux}
-%
-% let's not overwrite -- and be sure to create new
-\def\storeembedcount{%
- \immediate\openout\embedfile=\embedcountid.aux
- \immediate\write\embedfile{\embedcount=\the\embedcount}
- \immediate\closeout\embedfile
-}
-
-
-
+\def\embeddedtex#1{}
+\def\embeddedps#1{}
+\def\embeddedmf#1#2{}
+\def\embedclose{}
\input lily-ps-defs
-\def\embeddedtex#1{#1}
-
-\def\embeddedmf#1{
- \edef\embedid{feta-sleur-\number\embedcount}
- \immediate\openout\embedfile=\embedid.mf
- \global\advance\embedcount by 1
-
-% should write ``automatically generated.''
-% \immediate\write\embedfile{\def\
-%
-% }
- \immediate\write\embedfile{#1}
-
- \immediate\closeout\embedfile
- \font\expandafter\embedid\expandafter=\embedid
- \embedid\char0
-}
-
-\def\notex{\def\embeddedtex##1{}}
-\def\nopostscript{\def\embeddedps##1{}}
-\def\nometafont{\def\embeddedmf##1{}}
-
-% dat heb je handig gedaan, lieverd!
-\nometafont
-%\nopostscript
-\notex
+% uncomment to use runtime MF
+%
+% \input lily-mf-defs
\def\EndLilyPondOutput{
- \storeembedcount
+ \embedclose
\csname bye\endcsname
}
--- /dev/null
+\newcount\embedcount\embedcount=0
+\newwrite\checkexists
+\newwrite\embedfile
+\def\inputifexists#1{%
+ \openin\checkexists #1
+ \ifeof\checkexists
+ \closein\checkexists
+ \else
+ \closein\checkexists
+ \input #1
+ \fi
+}
+
+\def\embedcountid{feta-embed}
+\inputifexists{\embedcountid.aux}
+%
+% let's not overwrite -- and be sure to create new
+\def\embedclose{%
+ \immediate\openout\embedfile=\embedcountid.aux
+ \immediate\write\embedfile{\embedcount=\the\embedcount}
+ \immediate\closeout\embedfile
+}
+
+
+% let's keep embedcount to see how many embedded mf's clutter your system
+\def\embeddedmf#1#2{%
+ \edef\embedid{#1}%
+ \immediate\openout\embedfile=\embedid.mf%
+ \global\advance\embedcount by 1%
+ \immediate\write\embedfile{\%Automatically generated by TeX (fetdefs.tex
+)}%
+ \immediate\write\embedfile{\%Do not edit}%
+ \immediate\write\embedfile{#2}%
+ \immediate\closeout\embedfile%
+ \font\expandafter\embedid\expandafter=\embedid%
+ \embedid\char0%
+}
+
+
1 setlinecap
/draw_beam
{
- /beam_thick exch def
+ 2 div /beam_thick exch def
/beam_slope exch def
/beam_wd exch def
beam_slope beam_wd mul /beam_ht exch def
- 0 0 moveto
+ 0 beam_thick neg moveto
beam_wd beam_ht rlineto
- 0 beam_thick rlineto
- 0 beam_thick lineto
+ 0 beam_thick 2 mul rlineto
+ 0 beam_thick lineto
closepath fill
} bind def
% PS helper: convert (0.2pt) to the token 0.2
slur_indent slur_ht
slur_b slur_indent sub slur_ht
slur_b 0
- % pstack
rcurveto
%
slur_indent neg slur_ht slur_dir slur_thick mul sub
% set fonts and primary dimensions
% ugh
\def\musixtwentydefs{
- \staffheight=20pt
- \notewidth=7.15pt
- \noteheight=5pt
\twentyfonts
\musixcalc
}
\font\musicmathfont=cmsy10
\font\normaltextfont=cmr10 %\textfont is a primitive
\font\smalltextfont=cmr8
+ \font\boldfont=cmbx10
+ \font\textmusic=cmmi12
}
\def\cmrsixteen{
\font\smalltextfont=cmr6
\font\meterfont=cmbx12
\font\italicfont=cmti8
\font\textmusic=cmmi10
+ \font\boldfont=cmbx8
+}
+\def\cmreleven{
+ \font\smalltextfont=cmr5
+ \font\normaltextfont=cmr6
+ \font\meterfont=cmbx8
+ \font\italicfont=cmti6
+ \font\textmusic=cmmi8
+ \font\boldfont=cmbx6
+}
+
+\def\cmrthirteen{
+ \font\smalltextfont=cmr6
+ \font\normaltextfont=cmr7
+ \font\meterfont=cmbx9
+ \font\italicfont=cmti7
+ \font\textmusic=cmmi9
+ \font\boldfont=cmbx7
}
\def\musixsixteendefs{
- \staffheight=16pt
- \notewidth=5.93pt
- \noteheight=4pt
\sixteenfonts
\musixcalc
}
+\def\musixtwentysixdefs{
+ \twentysixfonts
+ \musixcalc
+}
+\def\musixthirteendefs{
+ \thirteenfonts
+ \musixcalc
+}
+\def\musixelevendefs{
+ \elevendefs
+ \musixcalc
+}
\def\textsharp{\raise.4ex\hbox{\textmusic\char"5D}}
\def\textnatural{\raise.4ex\hbox{\textmusic\char"5C}}
-\def\textflat{\raise.2ex\hbox{\mus\char"5B}}
+\def\textflat{\raise.2ex\hbox{\textmusic\char"5B}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% do derivative calcs
-% FIXME: should read from TFM/AFM/fetalog
-%
-
% this has to be synced with the font definition
\def\musixcalc{
+ \staffheight=\mudelapaperbarsize pt
+ \interlinedist=\staffheight
+ \divide\interlinedist by 4
+ \notewidth=\mudelapapernotewidth pt
+
\smallspace=.3\interlinedist
\interstaffrule=\staffheight
\divide\interstaffrule by 4
-
- % [D.K.Roush & J.S.Gourlay] say this should be 0.072
- % We know better
- \staffrulethickness=0.1\interlinedist
+ \staffrulethickness=\mudelapaperrulethickness pt
\stemthickness=\staffrulethickness
}
\def\startbar#1{\leftalign{\thickbar{#1}\kern\smallspace\thinbar{#1}}}
\def\finishbar#1{\rightalign{\thinbar{#1}\kern\smallspace\thickbar{#1}}}
-\def\slurcharh#1{{\slurhfont\char#1}}
-\def\slurcharu#1{{\slurufont\char#1}}
-\def\slurchard#1{{\slurdfont\char#1}}
-\def\hslurcharh#1{{\hslurhfont\char#1}}
-\def\hslurcharu#1{{\hslurufont\char#1}}
-\def\hslurchard#1{{\hslurdfont\char#1}}
\def\stem#1#2{\hbox{\kern -.5\stemthickness
\vrule width\stemthickness height#2 depth-#1}}
}
-\def\brace#1{\count0=148\advance\count0 by #1\musicdraw\char\count0}
-\def\crescendosym#1{\count0=84\advance\count0 by #1\musicdraw\char\count0}
-\def\decrescendosym#1{\count0=116\advance\count0 by #1\musicdraw\char\count0}
\def\rulesym#1#2{\dimen0=#1%
\vrule height .5\dimen0 depth .5\dimen0 width #2}
\def\settext#1{\normaltextfont #1}
\def\setitalic#1{\italicfont #1}
+\def\setbold#1{\boldfont #1}
\def\setdynamic#1{\dynfont #1}
\def\setfinger#1{\fingerfont #1}
% \musicfnt\char\count0}}
+
+\def\beamslope#1#2{{\count0=#2\advance\count0 by#1
+ \advance\count0by128
+ {\vetfont\char\count0}}}
+
+\def\slurcharh#1{{\slurhfont\char#1}}
+\def\slurcharu#1{{\slurufont\char#1}}
+\def\slurchard#1{{\slurdfont\char#1}}
+\def\hslurcharh#1{{\hslurhfont\char#1}}
+\def\hslurcharu#1{{\hslurufont\char#1}}
+\def\hslurchard#1{{\hslurdfont\char#1}}
+\def\brace#1{\count0=148\advance\count0 by #1\musicdraw\char\count0}
+\def\crescendosym#1{\count0=84\advance\count0 by #1\musicdraw\char\count0}
+\def\decrescendosym#1{\count0=116\advance\count0 by #1\musicdraw\char\count0}