-23/Sep/97 LilyPond 0.1.17 1
+23/Sep/97 LilyPond 0.1.18 1
=item *
+Python. Although perl is nice, python is better. We will shift
+towards python for build scripts
+
+=item *
+
GNU find
=item *
-8/Aug/97 LilyPond 0.1.14 1
+26/Sep/97 LilyPond 0.1.18 1
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
+
+\bo GNU find
+\bo A fast computer (a full page of music typically
The TeX include directory is detected dynamically, but it
can be adjusted with -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-t\bt\bt\bte\be\be\bex\bx\bx\bx-\b-\b-\b-p\bp\bp\bpr\br\br\bre\be\be\bef\bf\bf\bfi\bi\bi\bix\bx\bx\bx and -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-t\bt\bt\bte\be\be\bex\bx\bx\bx-\b-\b-\b-
- d\bd\bd\bdi\bi\bi\bir\br\br\br. The above assumes that you are root and have the GNU
- development tools, and your make is GNU make. If this is
- not the case, you can adjust your environment variables to
- your taste:
-8/Aug/97 LilyPond 0.1.14 2
+26/Sep/97 LilyPond 0.1.18 2
INSTALL(1) LilyPond documentation INSTALL(1)
+ d\bd\bd\bdi\bi\bi\bir\br\br\br. The above assumes that you are root and have the GNU
+ development tools, and your make is GNU make. If this is
+ not the case, you can adjust your environment variables to
+ your taste:
+
export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR"
configure
Set then directory TeX input is in (detected as a
subdir of tex-prefix)
- --enable-mf-dir
- Set the directory mf input is in (idem)
- [obsolete]
-
-
-8/Aug/97 LilyPond 0.1.14 3
+26/Sep/97 LilyPond 0.1.18 3
INSTALL(1) LilyPond documentation INSTALL(1)
+ --enable-mf-dir
+ Set the directory mf input is in (idem)
+ [obsolete]
+
--enable-out-dir
Set the directory for machine generated output.
make install
- should do the trick.
- Install the musixtex fonts in a directory which TeX and MF
- knows (if you are root, look for a directory which
-
-8/Aug/97 LilyPond 0.1.14 4
+26/Sep/97 LilyPond 0.1.18 4
INSTALL(1) LilyPond documentation INSTALL(1)
+ should do the trick.
+
+ Install the musixtex fonts in a directory which TeX and MF
+ knows (if you are root, look for a directory which
contains the directories with AMS and CM source (*.mf)
files. Create a subdir lilypond or musixtex and copy the
fonts into that). Do not forget to rehash TeX (if
file is in _\bm_\ba_\bk_\be_\b/_\bo_\bu_\bt_\b/_\bl_\bi_\bl_\by_\bp_\bo_\bn_\bd_\b._\bs_\bp_\be_\bc. You should be able to
create an rpm as a normal user. Be sure you have a
~/.rpmrc, and edit the RPM-dir in _\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs_\b._\bm_\ba_\bk_\be. (If you
- create the RPM as a normal user the permissions will not
- be set correctly, unfortunately)
-
-
-8/Aug/97 LilyPond 0.1.14 5
+26/Sep/97 LilyPond 0.1.18 5
INSTALL(1) LilyPond documentation INSTALL(1)
+ create the RPM as a normal user the permissions will not
+ be set correctly, unfortunately)
+
D\bD\bD\bDE\bE\bE\bEB\bB\bB\bBI\bI\bI\bIA\bA\bA\bAN\bN\bN\bN G\bG\bG\bGN\bN\bN\bNU\bU\bU\bU/\b/\b/\b/L\bL\bL\bLI\bI\bI\bIN\bN\bN\bNU\bU\bU\bUX\bX\bX\bX
A Debian package is in the works
-
-
-
-8/Aug/97 LilyPond 0.1.14 6
+26/Sep/97 LilyPond 0.1.18 6
-pl 17.jcn2
+
+pl 18
+ - bf: Box[X_AXIS] = b
+ - sharp sign, natural sign
+ - linethickness parametric
+ - bin/mf-deps.py script
+ - split into size/generic mf-files
+ - moved beams out of font-en-tja into vette-beams.
+ - Made corresponding .cc changes.
+
+
+jcn patches
- egcs compile (no link yet)
- nicer 4rest
- beam font (je kunt wel tegen een grapje, eva?)
- mf-to-table:
* "breapth" (x-depth) feature
* handle generic stuff such as beams
-
-pl 17.jcn1
- - all of the above
-
-pl 16.jcn3
- polished noteheads
- fixed 8-128 rests
- 4rest
- mf-to-table generates tex defs
- bf:mf-to-table and conflily outname check
-
-pl 16.jcn2
- 8-128 rests
+
+******
+sep 24
pl 17
- bf: ledgerline width
TOPLEVEL_MAJOR_VERSION = 0
TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 17
+TOPLEVEL_PATCH_LEVEL = 18
+TOPLEVEL_MY_PATCH_LEVEL =
-# use to send patches, always empty for released version:
-TOPLEVEL_MY_PATCH_LEVEL = .jcn2
+# use the above to send patches, always empty for released version:
# list of distribution files:
SCRIPTS = clearlily cpgento make-patch lily.efence \
- make-version release conflily clean-fonts
+ make-version release conflily clean-fonts mf-deps.py
PERL_SCRIPTS_IN = $(wildcard *.in)
PERL_SCRIPTS = $(addprefix $(outdir)/, $(PERL_SCRIPTS_IN:.in=))
EXTRA_DISTFILES = $(SCRIPTS) $(PERL_SCRIPTS_IN)
#!/bin/sh
# remove possibly stale .pk/.tfm files
-
-rm `locate font-en-tja| egrep '.*pk$|.*tfm$'`
+echo> /tmp/cleaning-font
+FILES=`find /var/lib/texmf/ -name 'font-en-tja*'` # -or -name 'vette-beam*'`
+echo removing $FILES
+rm $FILES /tmp/cleaning-font
my $username=$pw[6];
$footstr =
- "\n<hr>Please take me <a href=index.html>back to the LilyPond index</a>\n<hr>
+ "\n<hr>Please take me <a href=index.html>back to the index</a>\n
+of LilyPond -- The GNU Project Music typesetter
+<hr>
<font size=-1>
This page was built using <code>" . $id_str . "</code> from lilypond-"
. $lily_version .
--- /dev/null
+#!@PYTHON@
+
+"""look into metafont source for dependencies.
+
+ fixme: python path
+ fixme: error reporting
+ fixem: why doesn't python have closures..
+
+"""
+
+from regex import * ;
+from regsub import * ;
+import sys;
+import os;
+
+input_re = compile('^ *input *\([^;]+\);')
+postfixes = ['log', 'dvi', '2602gf', 'tfm']
+
+
+def print_one(x):
+ print x
+
+def line_concat(x,y):
+ return x + '\n' + y
+
+class Targetdeps:
+ """Dependencies for one toplevel sourcefile
+
+ """
+
+ def __init__(self,nm):
+ split = os.path.splitext(nm)
+ self.basename=split[0];
+ self.depfiles = []
+ self.checkdep(nm)
+
+ def checkdep(self, name):
+ split = os.path.splitext(name)
+ name = split[0] + '.mf';
+
+ if name not in self.depfiles:
+ self.get_filedeps(name)
+
+ def get_filedeps(self,filename):
+# print sys.stderr.write( 'checking ' + filename + '\n');
+ try:
+ file = open(filename)
+ except IOError:
+# print sys.stderr.write( 'can\'t open ' + filename + '\n')
+ return
+
+ self.depfiles.append(filename)
+_ lines = file.readlines()
+ file.close()
+ for line in lines:
+ if input_re.match ( line) <> -1:
+ self.checkdep( input_re.group(1))
+
+ def target_string(self):
+ targets = map (lambda x,y = self.basename: 'out/' + y + '.' + x, postfixes)
+ depstring = reduce(lambda x,y: x + ' ' + y, self.depfiles)
+ dependencies = map (lambda x, y=depstring: x + ': ' + y, targets)
+
+ return reduce(line_concat, dependencies)
+
+
+
+for file in sys.argv[1:]:
+ t = Targetdeps(file)
+ print t.target_string()
+
+
-% generated at Fri Sep 26 09:25:28 1997 from out/dyn10.log
+% generated at Fri Sep 26 14:26:49 1997 from out/dyn10.log
% changes will be lost
% dyn=\symboltables {
-% generated at Fri Sep 26 09:25:30 1997 from out/font-en-tja16.log
+% generated at Mon Sep 29 11:32:20 1997 from out/font-en-tja16.log
% changes will be lost
% font-en-tja=\symboltables {
"-2" "\sixtyfourthrest" -0.00\pt 5.33\pt 19.47\pt -0.00\pt
"-2" "\hundredtwentyeighthrest" -0.00\pt 5.33\pt 23.47\pt -0.00\pt
}
- "beamslopes" = \table {
- "uslope" "\beamuslope{%}{%}" 2.00\pt 32.00\pt 0.00\pt -0.00\pt
- "dslope" "\beamdslope{%}{%}" 2.00\pt 32.00\pt 0.00\pt -0.00\pt
- "horizontal" "\rulesym{%}{%}" -0.00\pt 0.00\pt 0.00\pt -0.00\pt
+ "foobars" = \table {
+ "1" "\sharp" -0.00\pt 4.40\pt 6.00\pt -6.00\pt
+ "0" "\natural" -0.00\pt 2.67\pt 6.00\pt -6.00\pt
}
% } % font-en-tja
-% generated at Fri Sep 26 09:25:32 1997 from out/font-en-tja20.log
+% generated at Mon Sep 29 11:32:24 1997 from out/font-en-tja20.log
% changes will be lost
% font-en-tja=\symboltables {
"balls" = \table {
- "0" "\wholeball" -0.00\pt 10.08\pt 5.60\pt -0.00\pt
- "1" "\halfball" -0.00\pt 7.01\pt 5.60\pt -0.00\pt
- "2" "\quartball" -0.00\pt 6.73\pt 5.60\pt -0.00\pt
+ "0" "\wholeball" -0.00\pt 10.35\pt 5.75\pt -0.00\pt
+ "1" "\halfball" -0.00\pt 7.20\pt 5.75\pt -0.00\pt
+ "2" "\quartball" -0.00\pt 6.91\pt 5.75\pt -0.00\pt
"-1" "\breveball" -0.00\pt 10.00\pt 5.00\pt -0.00\pt
"-2" "\longaball" -0.00\pt 10.00\pt 5.00\pt -0.00\pt
}
"almostrests" = \table {
"4" "\quartrest" -0.00\pt 5.00\pt 20.00\pt -0.00\pt
- "-2" "\eighthrest" -0.00\pt 6.67\pt 9.13\pt -0.00\pt
- "-2" "\sixteenthrest" -0.00\pt 6.67\pt 14.13\pt -0.00\pt
- "-2" "\thirtysecondrest" -0.00\pt 6.67\pt 19.13\pt -0.00\pt
- "-2" "\sixtyfourthrest" -0.00\pt 6.67\pt 24.13\pt -0.00\pt
- "-2" "\hundredtwentyeighthrest" -0.00\pt 6.67\pt 29.13\pt -0.00\pt
+ "-2" "\eighthrest" -0.00\pt 6.67\pt 9.33\pt -0.00\pt
+ "-2" "\sixteenthrest" -0.00\pt 6.67\pt 14.33\pt -0.00\pt
+ "-2" "\thirtysecondrest" -0.00\pt 6.67\pt 19.33\pt -0.00\pt
+ "-2" "\sixtyfourthrest" -0.00\pt 6.67\pt 24.33\pt -0.00\pt
+ "-2" "\hundredtwentyeighthrest" -0.00\pt 6.67\pt 29.33\pt -0.00\pt
}
- "beamslopes" = \table {
- "uslope" "\beamuslope{%}{%}" 2.00\pt 32.00\pt 0.00\pt -0.00\pt
- "dslope" "\beamdslope{%}{%}" 2.00\pt 32.00\pt 0.00\pt -0.00\pt
- "horizontal" "\rulesym{%}{%}" -0.00\pt 0.00\pt 0.00\pt -0.00\pt
+ "foobars" = \table {
+ "1" "\sharp" -0.00\pt 5.50\pt 7.50\pt -7.50\pt
+ "0" "\natural" -0.00\pt 3.33\pt 7.50\pt -7.50\pt
}
% } % font-en-tja
% symbol.ly
+%
+% FIXME other name
\version "0.1.6";
"tenor_change" "\caltoclef" 0.0\pt 11.2\pt 0.0\pt 16.0\pt
}
- % ugh what's our outdir called?
- \include "font-en-tja16.ly"
-
"slur" = \table {
"whole" "\slurchar%{%}"
"half" "\hslurchar%{%}"
"accidentals" = \table {
"-2" "\flatflat" 0.0\pt 8.16\pt -2.5\pt 7.5\pt
"-1" "\flat" 0.0\pt 4.8\pt -2.5\pt 7.5\pt
- "0" "\natural" 0.0\pt 4.8\pt -7.5\pt 7.5\pt
- "1" "\sharp" 0.0\pt 3.6\pt -7.5\pt 7.5\pt
+ "0" "\natural" 0.0\pt 4.0\pt -6.\pt 6.\pt
+ "1" "\sharp" 0.0\pt 4.4\pt -6.\pt 6.\pt
"2" "\sharpsharp" 0.0\pt 4.8\pt -2.5\pt 7.5\pt
}
"d7" "\dhundredtwentyeighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
}
- "oldbeamslopes" = \table {
- "uslope" "\beamuslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
- "dslope" "\beamdslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
+ "beamslopes" = \table {
+ "slope" "\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
"horizontal" "\rulesym{%}{%}"
}
+ % ugh what's our outdir called?
+ \include "font-en-tja16.ly"
+
}
% index TeXstring, xmin xmax ymin ymax
- % not yet updated
"scripts" = \table {
"fermata" "\fermata" 0.0\pt 0.0\pt 0.0\pt 6.0\pt
"-fermata" "\ifermata" 0.0\pt 0.0\pt -6.0\pt 0.0\pt
"tenor_change" "\caltoclef" 0.0\pt 16.0\pt 0.0\pt 20.0\pt
}
- % ugh what's our outdir called?
- \include "font-en-tja20.ly"
"slur" = \table {
"whole" "\slurchar%{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt
"d7" "\dhundredtwentyeighthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt
}
- "oldbeamslopes" = \table {
- "uslope" "\beamuslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
- "dslope" "\beamdslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
+ "beamslopes" = \table {
+ "slope" "\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
"horizontal" "\rulesym{%}{%}"
- }
+ }
+
+ % ugh what's our outdir called?
+ \include "font-en-tja20.ly"
}
--- /dev/null
+% generated at Fri Sep 26 15:26:29 1997 from out/vette-beams16.log
+% changes will be lost
+
--- /dev/null
+% generated at Fri Sep 26 15:26:46 1997 from out/vette-beams20.log
+% changes will be lost
+
[c8 c] [a' a']
% [c a'] [a' c]
[c d e f] [a' g' f' e']
- r1 r2 r4 r8 r16 r32 r64 r128
+ [cis' dis' c' d'] [cisis' disis' ceses' deses']
+ r1 r2 r4 r8 r16 r32 r64 r128
}
\paper{
\paper_twenty
-# kept in dist bo stripping stable stuff, still to copy...
-# a bit of a hack to keep exec size under control.
-stablecc=atom.cc offset.cc meter.cc boxes.cc \
+
+# a hack to keep exec size under control.
+stablecc= offset.cc meter.cc boxes.cc \
keyword.cc leastsquares.cc \
lookup.cc meter.cc\
parser.cc notename-table.cc lexer.cc\
MAJOR_VERSION = 0
MINOR_VERSION = 1
-PATCH_LEVEL = 17
+PATCH_LEVEL = 18
# use to send patches, always empty for released version:
# include separator: ".postfix", "-pl" makes rpm barf
Offset off = off_;
/* infinity checks. */
- for (int a =X_AXIS; a < NO_AXES; a++)
+ for (int a = X_AXIS; a < NO_AXES; a++)
{
Axis ax = (Axis)a;
if (abs (off[ax]) >= 100 CM)
s += tex_str + "}";
return s;
}
+
+void
+Atom::translate (Real r, Axis a)
+{
+ off_[a] += r;
+}
+
+void
+Atom::translate (Offset o)
+{
+ off_ += o;
+}
#include "boxes.hh"
#include "varray.hh"
+void
+Box::translate (Offset o)
+{
+ x().translate (o.x ());
+ y().translate (o.y ());
+}
+
+void
+Box::unite (Box b)
+{
+ x().unite (b.x ());
+ y().unite (b.y ());
+}
Box::Box()
{
+
}
Box::Box (Interval ix, Interval iy)
y() = iy;
}
+Interval &
+Box::operator[] (Axis a)
+{
+ return interval_a_[a];
+}
+
+Interval
+Box::operator[] (Axis a)const
+{
+ return interval_a_[a];
+}
String str() const; // for printing.
Atom (String, Box);
- Atom ();
- void translate (Offset o) {
- off_ += o;
- }
- void translate (Real r,Axis a){
- off_[a] += r;
- }
+ Atom ();
+ void translate (Offset o);
+ void translate (Real r,Axis a);
/// how big is #this#?
Box extent() const;
void print() const;
#include "axes.hh"
struct Box {
- Interval interval_a_[NO_AXES];
+ Interval interval_a_[NO_AXES];
- Interval &x() {return interval_a_[X_AXIS]; }
- Interval &y(){ return interval_a_[Y_AXIS]; }
- Interval x() const{ return interval_a_[X_AXIS]; }
- Interval y() const{return interval_a_[Y_AXIS]; }
- Interval operator[](Axis a) {
- return interval_a_[a];
- }
+ Interval &x() {return interval_a_[X_AXIS]; }
+ Interval &y(){ return interval_a_[Y_AXIS]; }
+ Interval x() const{ return interval_a_[X_AXIS]; }
+ Interval y() const{return interval_a_[Y_AXIS]; }
+ Interval operator[](Axis a) const;
+ Interval &operator[] (Axis a);
- void translate (Offset o) {
- x().translate (o.x ());
- y().translate (o.y ());
- }
-
- /// smallest box enclosing #b#
- void unite (Box b) {
- x().unite (b.x ());
- y().unite (b.y ());
- }
- Box();
- Box (Interval ix, Interval iy);
+ void translate (Offset o);
+ /// smallest box enclosing #b#
+ void unite (Box b);
+ Box();
+ Box (Interval ix, Interval iy);
};
Atom
Lookup::beam_element (int sidx, int widx, Real slope) const
{
- char dir_char = slope >0 ? 'u' : 'd';
- String name = dir_char + String("slope");
+ String name = String("slope");
Atom bs=(*symtables_)("beamslopes")->lookup (name);
Array<String> args;
return bs;
}
-// ugh.. hard wired tex-code.
-static int
-slope_index (Real &s)
-{
- if (abs (s) > 0.5)
- {
- WARN << "beam steeper than 0.5 (" << s << ")\n";
- s = sign (s) * 0.5;
- }
-
- int i = int (rint (s * 20.0));
-
- s = i/20.0;
- if (s>0)
- return 6*i;
- else
- return -6 * i;
-}
Atom
Lookup::rule_symbol (Real height, Real width) const
Atom
Lookup::beam (Real &slope, Real width) const
{
- int sidx = slope_index (slope);
- if (!slope)
- return rule_symbol (2 PT, width);
+ int sidx = 0;
+ if (abs (slope) > 1.0)
+ {
+ WARN << "beam steeper than 1.0 (" << slope << ")\n";
+ slope = sign (slope);
+ }
- Interval xdims = (*symtables_)("beamslopes")->lookup ("uslope").dim_[X_AXIS];
+ sidx = int (rint (slope * 20.0));
+ slope = sidx / 20.0;
+
+ Interval xdims = (*symtables_)("beamslopes")->lookup ("slope").dim_[X_AXIS];
Real min_wid = xdims[LEFT];
Real max_wid = xdims[RIGHT];
-
+ assert(max_wid > 0);
+ int widths = intlog2 (int (max_wid/min_wid)) + 1;
+
if (width < min_wid)
{
WARN<<"Beam too narrow. (" << print_dimen (width) <<")\n";
width = min_wid;
}
+
Real elemwidth = max_wid;
- int widx = intlog2 (int (max_wid/min_wid));
-
- Molecule m;
+ int widx =widths - 1;
+ Molecule m;
while (elemwidth > width)
{
widx --;
Real overlap = elemwidth/4;
Real last_x = width - elemwidth;
Real x = overlap;
- Atom elem (beam_element (sidx, widx, slope));
+ Atom elem (beam_element (sidx * widths, widx, slope));
m.add (elem);
while (x < last_x)
{
Atom s;
- s.dim_.y() = Interval (min (0,0), max (0,0)); // todo
- s.dim_.x() = Interval (0,dx);
+ s.dim_[Y_AXIS] = Interval (min (0, 0), max (0, 0)); // todo
+ s.dim_[X_AXIS] = Interval (-dx/2, dx/2);
String f = String ("\\hslurchar");
f += direction_char (CENTER);
return s;
}
+/*
+ The halfslurs have their center at the end pointing away from the notehead.
+ This lookup translates so that width() == [0, w]
+ */
+
Atom
Lookup::half_slur (int dy, Real &dx, Direction dir, int xpart) const
{
}
Atom s;
- s.dim_.x() = Interval (0,dx);
- s.dim_.y() = Interval (min (0,dy), max (0,dy));
+ s.dim_[X_AXIS] = Interval (0, dx);
+ s.dim_[Y_AXIS] = Interval (min (0, dy), max (0, dy));
String f = String ("\\hslurchar");
}
Atom s;
- s.dim_.x() = Interval (-dx/2,dx/2);
- s.dim_.y() = Interval (min (0,dy), max (0,dy));
+ s.dim_[X_AXIS] = Interval (0, dx);
+ s.dim_[Y_AXIS] = Interval (min (0, dy), max (0, dy));
String f = String ("\\slurchar") + String (direction_char (y_sign));
int idx=-1;
- if (y_sign) {
- idx = hidx * 16 + widx;
- if (dir < 0)
- idx += 128;
- }
+ if (y_sign)
+ {
+ idx = hidx * 16 + widx;
+ if (dir < 0)
+ idx += 128;
+ }
else
{
if (dx >= 4*54 PT)
Real right_wid = left_wid;
Atom l = half_slur (l_dy, left_wid, dir, -1);
+
+
Atom r = half_slur (r_dy, right_wid, dir, 1);
Real mid_wid = dx - left_wid - right_wid;
Molecule mol;
mol.add (l);
Atom a (half_slur (0, mid_wid, dir, 0));
- a.translate (slur_extra * internote_f, Y_AXIS);
mol.add_at_edge (X_AXIS, RIGHT, a);
mol.add_at_edge (X_AXIS, RIGHT, r);
+
mol.translate (l_dy * internote_f, Y_AXIS);
-
Atom s;
s.tex_ = mol.TeX_string();
s.dim_ = mol.extent();
Begin3
Title: LilyPond
-Version: 0.1.17
-Entered-date: 24SEP97
+Version: 0.1.18
+Entered-date: 26SEP97
Description: LilyPond is the GNU Project music typesetter. This
program converts music definition files into
visual or auditive output: it can typeset formatted
jan@digicash.com (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps
- 395k lilypond-0.1.17.tar.gz
+ 395k lilypond-0.1.18.tar.gz
Original-site: pcnov095.win.tue.nl /pub/lilypond/
- 395k lilypond-0.1.17.tar.gz
+ 395k lilypond-0.1.18.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 0.1.17
+Version: 0.1.18
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.17.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.18.tar.gz
Summary: A preprocessor to make TeX typeset music.
URL: http://www.stack.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@stack.nl>
#
FONT_FILES = $(wildcard *[0-9].mf)
+FET_FILES = $(wildcard font-en-tja*[0-9].mf)
+
lyout = $(depth)/init
texout = $(depth)/tex
-LYTABLES = $(addprefix $(lyout)/, $(FONT_FILES:.mf=.ly))
-TEXTABLES = $(addprefix $(texout)/, $(FONT_FILES:.mf=.tex))
+LYTABLES = $(addprefix $(lyout)/, $(FET_FILES:.mf=.ly))
+TEXTABLES = $(addprefix $(texout)/, $(FET_FILES:.mf=.tex))
#
all: $(LYTABLES) $(TEXTABLES)
localclean:
rm -f $(LYTABLES) $(TEXTABLES)
+$(outdir)/%.dvi: %.mf
+ mf $<
+ gftodvi $(basename $<)
+ mv $(basename $<).dvi $(outdir)
+ rm $(basename $<).*gf
+
$(outdir)/%.log: %.mf
mf $<
mv $(@F) $@
- rm $(shell basename $< .mf).*gf
+ rm $(basename $< ).*gf
$(lyout)/%.ly $(texout)/%.tex: $(outdir)/%.log
mf-to-table -l $(lyout)/$(<F:.log=.ly) -t $(texout)/$(<F:.log=.tex) $<
-
+
localinstall:
$(INSTALL) -d $(MFDIR)/lilypond
$(INSTALL) -m 644 $(MFFILES) $(MFDIR)/lilypond/
# dependencies:
#
-$(lyout)/dyn10.ly: autometric.mf ital-f.mf ital-m.mf ital-p.mf ital-r.mf ital-s.mf ital-z.mf dyn10.mf
-$(lyout)/font-en-tja16.ly: autometric.mf bolletjes.mf eindelijk.mf font-en-tja16.mf wat-zie-ik.mf
-$(lyout)/font-en-tja20.ly: autometric.mf bolletjes.mf eindelijk.mf font-en-tja20.mf wat-zie-ik.mf
-#
-$(texout)/dyn10.tex: autometric.mf ital-f.mf ital-m.mf ital-p.mf ital-r.mf ital-s.mf ital-z.mf dyn10.mf
-$(texout)/font-en-tja16.tex: autometric.mf bolletjes.mf eindelijk.mf font-en-tja16.mf wat-zie-ik.mf
-$(texout)/font-en-tja20.tex: autometric.mf bolletjes.mf eindelijk.mf font-en-tja20.mf wat-zie-ik.mf
-#
+include $(outdir)/mfdeps
+
+
+
+$(outdir)/mfdeps: $(FONT_FILES)
+# do something silly to avoid barfs if python not installed.
+ echo > $@
+ python $(depth)/bin/mf-deps.py $^ >> $@
+
- check out Adobe Sonata/Petrucci font layout. They are the
standard for Music fonts
- rewrite : make a metafont iso font
+ - perl script to generate dependencies for mf
l
% most beautiful bolletjes are pronounced, not circular,
% and not even symmetric.
-interline#:=staffsize#/(stafflines-1);
%noteheight#:=interline#;
% even more pronounced (almost overdone), just like the original
noteheight#:=interline#+1.5stafflinethickness#;
% A tex file to help determine dims.
%
-\font\musicfont=musix16
-\font\slurfont=xslu16
-\font\specfont=musixspx % tildes? beams, circles, (de)-crescendos, pianobraces
-\font\eglerfont=opus16 % notes, clefs, beams
-\font\eglerspec=opussps % tabulars, circles, glissandi, pianobraces
-\font\tjafont=font-en-tja16
-%\def\thefont{\musicfont}
+\font\taupin=musix16
+\font\fet=font-en-tja16
+\font\vet=vette-beams16
+\font\slurs=xslhd16
+\font\specfont=musixspx
+\def\thefont{\slurs}
%\def\thefont{\specfont}
-%\def\thefont{\eglerfont}
-\def\thefont{\tjafont}
\def\mb#1{{\thefont\char#1}}
% eindelijk.mf
% LilyPond's own rest(s)
-define_pixels(interline);
-define_pixels(stafflinethickness);
% MO*TeX stuff
% nhh#:=interline#;
% nhw#:=6/5*interline#;
staffsize#:=16pt#;
stafflines:=5;
-stafflinethickness#:=0.4pt#;
code:=-1;
-input bolletjes;
-input eindelijk;
-input wat-zie-ik;
+input generic-tja;
fet_endfont("font-en-tja");
test:=0;
staffsize#:=20pt#;
-% staffsize#:=16pt#;
stafflines:=5;
stafflinethickness#:=0.4pt#;
code:=-1;
-input bolletjes;
-input eindelijk;
-input wat-zie-ik;
+input generic-tja;
fet_endfont("font-en-tja");
--- /dev/null
+
+interline#:=staffsize#/(stafflines-1);
+
+ % [D.K.Roush & J.S.Gourlay] say this should be 0.072
+ % We know better
+stafflinethickness#:=0.1 interline#;
+
+define_pixels(interline);
+define_pixels(stafflinethickness);
--- /dev/null
+
+
+% better versions of Taupin/Egler savepic cmds
+%
+%
+picture save_picture_stack[];
+numeric stack_idx;
+stack_idx := 0;
+
+def push_picture(expr p) = save_picture_stack[incr stack_idx] := p enddef;
+def push_current = push_picture (currentpicture) enddef;
+def pop_picture = save_picture_stack[ decr stack_idx] enddef;
+def top_picture = save_picture_stack[stack_idx] enddef;
+
+
+def scaledabout(expr point, scale) =
+ shifted -point scaled scale shifted point
+enddef;
+
+
+input generic-params;
+input bolletjes;
+input eindelijk;
+input toevallig;
+
--- /dev/null
+%
+% Real accidentals
+
+%\tracingequations:= tracingonline := 1;
+%proofing := 2;
+
+fet_begingroup("foobars");
+
+begingroup;
+
+fet_beginchar(incr code, 1.1 interline#, 1.5 interline#,
+ 1.5 interline#, 0, "Sharp" , "1", "sharp");
+
+ save interbeam, interstem, beamheight, beamwidth,
+ stemwidth;
+
+ interbeam := 1.1 interline;
+ interstem := 7/16 ;
+ beamheight := 4 stafflinethickness;
+ beamwidth := w;
+ stemwidth := 1.3 stafflinethickness;
+
+ 2 horizontal_protrusion + interstem * beamwidth + stemwidth
+ = beamwidth;
+
+ pickup pensquare xscaled horizontal_protrusion yscaled beamheight;
+ pair center;
+ center = (.5 w, 0);
+
+ z2 - z1 = (beamwidth - horizontal_protrusion, beamheight/2);
+ z1 + z2 = 2*center;
+ beamslope = (y2-y1)/(x2-x1);
+ path beam;
+ beam:= z1 .. z2;
+ draw beam shifted (0, -interbeam/2);
+ draw beam shifted (0,interbeam/2);
+
+ pickup pencircle scaled stemwidth;
+ x3 = x4 = xpart center;
+ bot y3 = -1.5 interline + ypart center;
+ top y4 = 1.5 interline + ypart center;
+
+ path stem;
+ stem := z3 .. z4;
+ numeric xs;
+ xs := interstem* beamwidth / 2;
+ draw stem shifted (- xs, - xs* beamslope);
+ draw stem shifted (xs , xs *beamslope);
+ endchar;
+
+fet_beginchar(incr code, 8/12 interline#, 1.5 interline#, 1.5 interline#, 0,
+ "Natural", "0", "natural")
+
+
+ save interbeam, interstem, beamheight, beamwidth,
+ stemwidth;
+
+ beamheight = 4.5 stafflinethickness;
+ interstem + stemwidth = w;
+ stemwidth = 1.3 stafflinethickness;
+
+ z2 -z1 = (interstem, slope * interstem);
+ xpart .5 [z2,z1] = xcenter ;
+ xcenter = w/2;
+
+
+ pickup penrazor scaled beamheight rotated 90;
+ top y2 = interline - 3/2 stafflinethickness ;
+ slope = stafflinethickness / interstem;
+
+ draw z1 .. z2;
+ draw (xpart z1, -y2) .. (xpart z2, -y1);
+ beamtop = top y2;
+
+ pickup pencircle scaled stemwidth;
+ xpart z3 = xpart z1;
+ xpart z4 = xpart z2;
+ top y3 = 1.5 interline;
+ top y4 = beamtop;
+
+ draw (xpart z1, -y4) .. z3;
+ draw (xpart z2, -y3) .. z4;
+
+ labels(1,2,3,4);
+ endchar;
+endgroup;
+fet_endgroup("foobars");
--- /dev/null
+% font-en-tja16.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;
+
+test:=0;
+
+staffsize#:=16pt#;
+stafflines:=5;
+stafflinethickness#:=0.4pt#;
+input generic-params;
+input wat-zie-ik;
+end.
+
--- /dev/null
+% font-en-tja16.mf
+% part of LilyPond's pretty-but-neat music font
+
+% font_identifier:="font-en-tja16";
+% font_size 16pt#;
+
+font_identifier:="vette-beams16";
+font_size 20;
+mode_setup;
+
+test:=0;
+
+staffsize#:=20pt#;
+stafflines:=5;
+stafflinethickness#:=0.4pt#;
+input generic-params;
+input wat-zie-ik;
+end.
% part of LilyPond's pretty-but-neat music font
% beams: plat en steil
-fet_begingroup("beamslopes");
+%\tracingequations:= tracingonline := 1;
+
beamheight#:=0.48interline#;
define_pixels(beamheight);
% mimic taupin-SLOPES for now -- because lily knows them
ELEM_TAN:=0.05;
-SLOPES:=10;
-LENGTHS:=5;
-ELEM_LEN:=2;
+SLOPES:=20;
+LENGTHS:=6;
+ELEM_FACTOR := 2;
+ELEM_INITIAL_LEN:=2;
-% fake char for tables; will be overwritten by mf
-% misuse breapth for minimum length (mf-to-table negates breapth again)
-fet_beginchar(code+1,ELEM_LEN**LENGTHS,0,0,-ELEM_LEN,"Beamslopes up","uslope","beamuslope{%}{%}");
- endchar;
% Beamslopes up
-for i:=1 upto SLOPES:
- width:=ELEM_LEN;
+for i := -SLOPES upto SLOPES:
+ width:= ELEM_INITIAL_LEN;
for j:=1 upto LENGTHS:
- beginchar(incr code,width,0,0);
+ beginchar(128 + i * LENGTHS + j -1 ,width,0,0);
pickup beam_pen;
draw origin--(lft w,w*i*ELEM_TAN);
endchar;
- width:=2*width;
- endfor;
- endfor;
-
-% fake char for tables; will be overwritten by mf
-% misuse breapth for minimum length (mf-to-table negates breapth again)
-fet_beginchar(code+1,ELEM_LEN**LENGTHS,0,0,-ELEM_LEN,"Beamslopes down","dslope","beamdslope{%}{%}");
- endchar;
-
-% Beamslopes down
-for i:=1 upto SLOPES:
- width:=ELEM_LEN;
- for j:=1 upto LENGTHS:
- beginchar(incr code,width,0,0);
- pickup beam_pen;
- draw origin--(lft w,-w*i*ELEM_TAN);
- endchar;
- width:=2*width;
+ width:=ELEM_FACTOR *width;
endfor;
endfor;
-
-% fake char for tables
-fet_beginchar(code+1*SLOPES*LENGTHS,0,0,0,0,"Horizontal beams","horizontal","rulesym{%}{%}");
- endchar;
-
-fet_endgroup("beamslopes");
-
-% generated at Fri Sep 26 09:25:28 1997 from out/dyn10.log
+% generated at Fri Sep 26 14:26:49 1997 from out/dyn10.log
% changes will be lost
% dyn
\def\fetsixteendefs{
\font\fontentja=font-en-tja16
+ \font\vetfont=vette-beams16
}
\def\fettwentydefs{
- \font\fontentja=font-en-tja20
+ \font\fontentja=font-en-tja20
+ \font\vetfont=vette-beams20
}
% \def\fetdef#1#2{\def#1{\fetchar{#2}}}
\input font-en-tja20
-\def\beamuslope#1#2{{\count0=#2\advance\count0 by#1
- \advance\count0 by \beamuslopestart
- % huh?? -- think i followed taupin beam convention
- % is lily confused?
- \advance\count0 by -8
- \fetchar\count0}}
-\def\beamdslope#1#2{{\count0=#2\advance\count0 by#1
- \advance\count0 by \beamdslopestart
- % huh??
- \advance\count0 by -8
- \fetchar\count0}}
+\def\beamslope#1#2{{\count0=#2\advance\count0 by#1
+ \advance\count0by128
+ {\vetfont\char\count0}}}
-% generated at Fri Sep 26 09:25:30 1997 from out/font-en-tja16.log
+% generated at Mon Sep 29 11:32:20 1997 from out/font-en-tja16.log
% changes will be lost
% font-en-tja
\fetdef\sixtyfourthrest{9}
\fetdef\hundredtwentyeighthrest{10}
-% beamslopes
-\def\beamuslopestart{11}
-\def\beamdslopestart{61}
-\def\rulesymstart{160}
+% foobars
+\fetdef\sharp{11}
+\fetdef\natural{12}
-% generated at Fri Sep 26 09:25:32 1997 from out/font-en-tja20.log
+% generated at Mon Sep 29 11:32:24 1997 from out/font-en-tja20.log
% changes will be lost
% font-en-tja
\fetdef\sixtyfourthrest{9}
\fetdef\hundredtwentyeighthrest{10}
-% beamslopes
-\def\beamuslopestart{11}
-\def\beamdslopestart{61}
-\def\rulesymstart{160}
+% foobars
+\fetdef\sharp{11}
+\fetdef\natural{12}
\balkheight=20pt
\notewidth=7.15pt
\noteheight=5pt
- \staffrulethickness=0.4pt
\musixtwentyfonts
\font\textmusic=cmmi12
\musixcalc
\def\musixsixteendefs{
\balkheight=16pt
- \staffrulethickness=0.4pt
\notewidth=5.93pt
\noteheight=4pt
\musixsixteenfonts
\smallspace=.3\interlinedist
\interstaffrule=\balkheight
\divide\interstaffrule by 4
+
+ % [D.K.Roush & J.S.Gourlay] say this should be 0.072
+ % We know better
+ \staffrulethickness=0.1\interlinedist
}
-\input fetdefs
\def\musixtwentyfonts{
\font\normaltextfont=cmr10 %\textfont is a primitive
\font\smalltextfont=cmr8
% \advance\count0 by 186
% \musicfnt\char\count0}}
+
+\input fetdefs
--- /dev/null
+% generated at Fri Sep 26 15:26:29 1997 from out/vette-beams16.log
+% changes will be lost
+
--- /dev/null
+% generated at Fri Sep 26 15:26:46 1997 from out/vette-beams20.log
+% changes will be lost
+