TOPLEVEL_MAJOR_VERSION = 0
TOPLEVEL_MINOR_VERSION = 0
-TOPLEVEL_PATCH_LEVEL = 56
+TOPLEVEL_PATCH_LEVEL = 57
# use to send patches, always empty for released version:
# include separator: ".postfix", "-pl" makes rpm barf
-19/Apr/97 LilyPond 0.0.55 1
+18/Apr/97 LilyPond 0.0.57 1
(setq font-lock-maximum-decoration t)
(setq c++-font-lock-keywords-3
- (cons
- '("\\b\\([a-zA-Z_]+_\\)\\b" 1 font-lock-variable-name-face)
- c++-font-lock-keywords-3))
+ (append
+ c++-font-lock-keywords-3
+ '(("\\b\\([a-zA-Z_]+_\\)\\b" 1 font-lock-variable-name-face)
+ ("\\b\\([A-Z]+[a-z_]+\\)\\b" 1 font-lock-type-face))
+ ))
=head2 CLASSES and TYPES:
the C<type> is a Hungarian notation postfix for C<Type>. See below
+=head2 BROKEN CODE
+
+Broken code (hardwired dependencies, hardwired constants, slow
+algorithms and obvious limitations) should be marked as such:
+either with a verbose TODO, or with a short "ugh" comment.
+
=head2 COMMENTS
The source is commented in the DOC++ style. Check out doc++ at
short description.
Long class documentation.
(Hungarian postfix)
+
+ TODO Fix boring_member()
*/
class Class {
/**
Rettype member(Argtype);
/// memo only
- boring_member();
+ boring_member() {
+ data_member_ = 121; // ugh
+ }
};
+
+
Unfortunately most of the code isn't really documented that good.
=item *
-usefullness in I<very large>
-(but how many classes is very large?)
+usefullness in I<very large> (but how many classes is very large?)
remains an issue.
=back
other options include:
- --enable-shared
- --enable-printing
- --enable-optimise
- --enable-profiling
- --enable-tex-prefix
- --enable-tex-dir
+=over 4
+
+=item --enable-shared
+
+Make a shared library (linux, solaris (?) only )
+
+=item --enable-printing
+
+Enable debugging print routines (B<-d> option)
+
+=item --enable-optimise
+
+Set maximum optimisation
+
+=item --enable-profiling
+
+Compile with support for profiling
+
+=item --enable-tex-prefix
+
+Set the directory where texmf lives
+
+
+=item --enable-tex-dir
+
+Set then directory tex input is in
+
+=item --enable-mf-dir
+
+Set then directory tex input is in
+
+=back
All options are documented in the F<configure> help
The option B<--enable-optimise> is recommended for Real Life usage.
rm -f out/*
rm -f $(TEXTFILES) $(HTMLFILES) $(GROFFFILES)
-MAN1FILES = lilypond convert-mudela
+MAN1FILES = lilypond convert-mudela mi2mu
MAN1GROFF = $(addprefix $(outdir)/, $(addsuffix .1,$(MAN1FILES)))
bla:
Most music distributed with GNU LilyPond was composed a long time ago, and
do not have copyrights. Any exceptions are mentioned here.
-=head2 F<cadenza.ly>
-
-A cadenza to Mozart Horn concerto no. 3.
-
-Features: cadenza mode.
-
-Copyright: public domain
-
=head2 F<collisions.ly>
Random counterpoint to demonstrate features.
Copyright: public domain
-=head2 F<maartje.ly>
-
-Features: partial measure.
-
-=head2 F<martien.ly>, F<ml*.ly>
-
-Martien Lohman, Viola Quartet.
-
-Features: n-plets, multi-staff scores.
-
-Copyright: copyright Martien Lohman 1997.
-
=head2 F<midi.ly>
Features: midi output.
-=head2 F<plet.ly>
-
-Features: plets.
-
=head2 F<rhythm.ly>
Features: auto beams, multiple parralel meters.
JS Bach, Das Wohltemperirtes Clavier I, Fuga II (c-minor), BWV ?
-Features: stem direction, multivoice.
+Features:
Copyright: public domain
--- /dev/null
+=head1 NAME
+
+mi2mu - convert MIDI to mudela(5)
+
+=head1 SYNOPSIS
+
+ mi2mu [options] midi-file
+
+=head1 DESCRIPTION
+
+Mi2mu translates a MIDI input file to Mudela (GNU LilyPond source
+format).
+Mi2mu is part of the GNU LilyPond music typesetting package.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-b, --no-quantify>,
+
+Write exact durations, e.g.: `a4*385/384'.
+
+=item B<-d, --debug>,
+
+Print lots of debugging stuff.
+
+=item B<-h, --help>,
+
+Show a summary of usage.
+
+=item B<-I, --include>=F<DIR>,
+
+Add DIR to search path.
+
+=item B<-n, --no-silly>,
+
+Assume no plets or double dots, assume smallest (reciprocal) duration 16.
+
+=item B<-o, --output>=F<FILE>,
+
+Set FILE as default output.
+
+=item B<-p, --no-plets>,
+
+Assume no plets.
+
+=item B<-q, --quiet>,
+
+Be quiet.
+
+=item B<-s, --smallest=N>,
+
+Assume no shorter (reciprocal) durations than N.
+
+=item B<-v, --verbose>,
+
+Be verbose.
+
+=item B<-w, --warranty>,
+
+Show the warranty with which mi2mu comes. (It comes with B<NO WARRANTY>!)
+
+=item B<-x, --no-double-dots>,
+
+Assume no double dotted notes.
+
+=back
+
+=head1 FEATURES
+
+This is an overview of the features that Mi2mu supports.
+
+=over 4
+
+=item *
+
+[todo]
+
+=back
+
+=head1
+DISCLAIMER & COPYING POLICY
+
+Mi2mu is copyright 1996,97 by its authors. Mi2mu is distributed
+as part of GNU LilyPond, under the terms of the GNU General Public
+License. Mi2mu is provided without any warranty what so ever.
+Mi2mu may be freely distributed. For further information consult
+the GNU General Public License, which is in the file F<COPYING>.
+
+=head1 AUTHORS
+
+Please consult the documentation file AUTHORS for more detailed
+information, and small contributions.
+
+=over 4
+
+=item *
+
+Jan Nieuwenhuizen <jan@digicash.com>, http://www.digicash.com/~jan.
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item lilypond(1)
+
+The GNU LilyPond music typesetter.
+
+=item mudela(5)
+
+On the LilyPond input format.
+
+=item The GNU LilyPond FAQ list.
+
+=back
+
A' % 220
Cisis
-The rest is named
+Rests are named r or s
- r
+ r % print a rest
+ s % a "space" rest, nothing is printed.
These notenames along with duration are enough material to construct
simple melodies:
\melodic {
- c4 ++ \transpose {
+ \meter 2/4;
+ ++
+ \transpose {
d % from c to the d that's one octave down
{ e4 f4 } % the horizontal music
} ++ g4
}
-The result is, as you can see, simple horizontal music again
+The result is, as you can see, again simple horizontal music.
=head2 Rhythms
Make the piece start with a partial measure [transl?] lasting 1 3/4
quaver.
+These commands are also "voice elements", and constitute simple mudela
+(consisting of stuff with duration 0).
+
=head1 STRUCTURE
In concrete, a piece of Mudela has the following structure:
-22/Apr/97 LilyPond 0.0.56 1
+28/Apr/97 LilyPond 0.0.57 1
other options include:
- --enable-shared
- --enable-printing
- --enable-optimise
- --enable-profiling
- --enable-tex-prefix
- --enable-tex-dir
+ --enable-shared
+ Make a shared library (linux, solaris (?) only )
- All options are documented in the _\bc_\bo_\bn_\bf_\bi_\bg_\bu_\br_\be help The
- option -\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-o\bo\bo\bop\bp\bp\bpt\bt\bt\bti\bi\bi\bim\bm\bm\bmi\bi\bi\bis\bs\bs\bse\be\be\be is recommended for Real Life
- usage.
+ --enable-printing
+ Enable debugging print routines (-\b-\b-\b-d\bd\bd\bd option)
- If you do
+ --enable-optimise
+ Set maximum optimisation
+ --enable-profiling
+ Compile with support for profiling
-22/Apr/97 LilyPond 0.0.56 2
+
+
+28/Apr/97 LilyPond 0.0.57 2
INSTALL(1) LilyPond documentation INSTALL(1)
+ --enable-tex-prefix
+ Set the directory where texmf lives
+
+ --enable-tex-dir
+ Set then directory tex input is in
+
+ --enable-mf-dir
+ Set then directory tex input is in
+
+ All options are documented in the _\bc_\bo_\bn_\bf_\bi_\bg_\bu_\br_\be help The
+ option -\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-o\bo\bo\bop\bp\bp\bpt\bt\bt\bti\bi\bi\bim\bm\bm\bmi\bi\bi\bis\bs\bs\bse\be\be\be is recommended for Real Life
+ usage.
+
+ If you do
+
make all
everything will be compiled, but nothing will be
+\bo A fast computer (a full page of music typically takes
1 minute on my 486/66, using the -\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-c\bc\bc\bch\bh\bh\bhe\be\be\bec\bc\bc\bck\bk\bk\bki\bi\bi\bin\bn\bn\bng\bg\bg\bg
compile. It's lot slower than most MusiXTeX
+
+
+
+28/Apr/97 LilyPond 0.0.57 3
+
+
+
+
+
+INSTALL(1) LilyPond documentation INSTALL(1)
+
+
preprocessors)
+\bo TeX
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
-
-
-22/Apr/97 LilyPond 0.0.56 3
-
-
-
-
-
-INSTALL(1) LilyPond documentation INSTALL(1)
-
-
W\bW\bW\bWI\bI\bI\bIN\bN\bN\bND\bD\bD\bDO\bO\bO\bOZ\bZ\bZ\bZE\bE\bE\bE
Windows NT:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-22/Apr/97 LilyPond 0.0.56 4
+28/Apr/97 LilyPond 0.0.57 4
+pl 57
+ - lots of TODO doco
+ - text alignment bugfix
+ - bugfix Voice_group_regs::get_register_p() now is actually called too
+ - bugfix init of Text_item::pos_i_
+
+pl 55.jcn1
+ - mi2mu man page
+ - make doc fixlet
+ - \[lr]heel \[lr]toe scripts (happy pedal studies, pa)
+ - lyric with width
+ - removal of some example files
+
+pl 56.mb:
+ - last duration fix
+ - makefile fixes
+ - space rest
+ - swedish note name update
+
+******
pl 56
- Massive Rest/Stem/Collision/Note_column rewrite: resolve
notehead/rest ambiguities and bugs. eg, [c8 r8 c8]
+
IMPORTANT
- * mi2mu man page
* update 20 pt table
* check return status in make_website
- * plet.ly
-
* a Hands on tutorial [HKN]
This is an assorted collection of stuff that will be done, might be
done, or is an idea that I want to think about
+Most of the items are marked in the code as well, with full explanation.
+grep for TODO and ugh/ugr
+
PARSER
* Duration-> Musical_duration, typedef Rational Duration?
* lilypond - -> crash
+ * chlapik balk ruimte
+
+ * standchen triool beam up/down
+
SEVERELY LACKING:
* use Real for y positions.
+ * shared lib on Solaris too.
+
* bugreport to doc++ devel: struct not in class hier; public
virtual baseclasses
* unix style paths for LILYINCLUDE EN
- * rpm package buildroot
-
* indentable stream as baseclass for TeX stream, lily stream, Dstream.
* caching Item/spanner dimensions.
* midi esp.: use I32 iso int where 32 bits are needed (or assumed...)
- * fix Staff_elem::width() derivs to use offset_
-
* parshape
* read from mmap directly: bugreport to flex developers->
* Decent TeX titledefs (\tempo, \metron, etc. )
- * command priority into enum
-
* C meter iso 4/4
* textspanner: center position
* use (char *) iso. String for communication between lexer and
parser.
- * configure idealspacing: arithmetic
-
- * add (good guess of) width to lyric items
+ * configure idealspacing: arithmetic spacing
* midi output: eat-up dynamic, key/meter/tempo changes, and
write them neatly
IDEAS
- * scoping in Lexer?
+ * scoping in Lexer: do general id- assignments in mudela.
+
+ ID '=' EXPR;
* integrate Register/Midi stuff
* y -dims in internote?
- * hack up mf sources for decent spacing info (and then maybe
- read TFM directly)
+ * hack up mf sources for decent spacing info (and then
+ read TFM directly, for text too)
* merge Atom and Symbol?
* SHIT: meters/bars should be aligned, which is difficult if
we get different keychanges in different staffs.
- * Integrating (objectiveC) MusicKit with LilyPond
+ * Integrating (objectiveC) MusicKit with LilyPond?
* MusixTeX output possible?
}
local $base="lilypond/";
-local @examples=("wohltemperirt" ,"standchen", "scsii-menuetto", "rhythm", "martien", "collisions");
+local @examples=("wohltemperirt" ,"standchen", "scsii-menuetto", "rhythm", "collisions");
sub gen_html
foreach $a (@examples) {
$texfile="test";
$tex = "tex $texfile";
- if ($a eq "standchen" || $a eq "scsii-menuetto" || $a eq "martien") {
+ if ($a eq "standchen" || $a eq "scsii-menuetto" ) {
$tex = "latex $a";
$texfile = "$a";
}
ac_default_prefix=/usr/local
# Any additions from configure.in:
ac_help="$ac_help
- enable-printing set debug printing"
+ enable-printing turn on debug printing"
ac_help="$ac_help
- disable-checking set runtime checks"
+ disable-checking set runtime checks (assert calls)"
ac_help="$ac_help
- disable-debugging set debug info"
+ disable-debugging set debug info "
ac_help="$ac_help
enable-optimise use maximal speed optimisations"
ac_help="$ac_help
enable-profiling compile with gprof support"
ac_help="$ac_help
- tex-prefix=DIR set the tex-directory to find TeX subdirectories."
+ tex-prefix=DIR set the tex-directory to find TeX subdirectories. (default: PREFIX)"
ac_help="$ac_help
- tex-dir=DIR set the directory to put LilyPond TeX files in."
+ tex-dir=DIR set the directory to put LilyPond TeX files in. "
ac_help="$ac_help
mf-dir=DIR set the directory to put LilyPond MetaFont files in."
ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
cross_compiling=$ac_cv_prog_cxx_cross
-printing_b=no
-checking_b=yes
-debug_b=yes
-optimise_b=no
-profile_b=no
-#shared_b=no
# Check whether --enable-printing or --disable-printing was given.
if test "${enable_printing+set}" = set; then
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:644: checking for $ac_word" >&5
+echo "configure:638: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:675: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:669: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 685 "configure"
+#line 679 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cxx_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
{ echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:709: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:703: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:714: checking whether we are using GNU C++" >&5
+echo "configure:708: checking whether we are using GNU C++" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:723: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gxx=yes
else
ac_cv_prog_gxx=no
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:738: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:732: checking whether ${CXX-g++} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:768: checking for $ac_word" >&5
+echo "configure:762: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:824: checking for a BSD compatible install" >&5
+echo "configure:818: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:878: checking for $ac_word" >&5
+echo "configure:872: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:928: checking for $ac_word" >&5
+echo "configure:922: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:962: checking for $ac_word" >&5
+echo "configure:956: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:996: checking for $ac_word" >&5
+echo "configure:990: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1030: checking for $ac_word" >&5
+echo "configure:1024: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_PODMAN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6
-echo "configure:1066: checking TeX/MF root dir directory" >&5
+echo "configure:1060: checking TeX/MF root dir directory" >&5
find_root_prefix="$prefix"
echo "$ac_t""$find_texprefix" 1>&6
+else
+ find_texprefix=$TEXPREFIX
fi
if test "x$TEXDIR" = xauto ; then
echo $ac_n "checking TeX input directory""... $ac_c" 1>&6
-echo "configure:1102: checking TeX input directory" >&5
+echo "configure:1098: checking TeX input directory" >&5
find_dirdir=`(cd $find_texprefix;
$FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')`
echo $ac_n "checking MF input directory""... $ac_c" 1>&6
-echo "configure:1124: checking MF input directory" >&5
+echo "configure:1120: checking MF input directory" >&5
find_dirdir=`(cd $find_texprefix;
$FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')`
fi
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:1175: checking how to run the C++ preprocessor" >&5
+echo "configure:1171: checking how to run the C++ preprocessor" >&5
if test -z "$CXXCPP"; then
if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
CXXCPP="${CXX-g++} -E"
cat > conftest.$ac_ext <<EOF
-#line 1188 "configure"
+#line 1184 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
:
ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:1213: checking for FlexLexer.h" >&5
+echo "configure:1209: checking for FlexLexer.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1218 "configure"
+#line 1214 "configure"
#include "confdefs.h"
#include <FlexLexer.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1223: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
eval "DIR_DATADIR=$datadir"
DIR_DATADIR="$DIR_DATADIR/lilypond"
echo $ac_n "checking ""... $ac_c" 1>&6
-echo "configure:1627: checking " >&5
+echo "configure:1623: checking " >&5
cat << EOF > lib/out/config.hh
dnl should cache result.
dnl should look in $prefix first.
+printing_b=no
+checking_b=yes
+debug_b=yes
+optimise_b=no
+profile_b=no
+#shared_b=no
AC_DEFUN(AC_TEX_PREFIX, [
AC_LANG_CPLUSPLUS
-printing_b=no
-checking_b=yes
-debug_b=yes
-optimise_b=no
-profile_b=no
-#shared_b=no
AC_ARG_ENABLE(printing,
- [ enable-printing set debug printing],
+ [ enable-printing turn on debug printing],
[printing_b=$enableval])
AC_ARG_ENABLE(checking,
- [ disable-checking set runtime checks],
+ [ disable-checking set runtime checks (assert calls)],
[checking_b=$enableval] )
AC_ARG_ENABLE(debugging,
- [ disable-debugging set debug info],
+ [ disable-debugging set debug info ],
[debug_b=$enableval])
AC_ARG_ENABLE(optimise,
[profile_b=$enableval])
AC_ARG_ENABLE(tex-prefix,
- [ tex-prefix=DIR set the tex-directory to find TeX subdirectories.],
+ [ tex-prefix=DIR set the tex-directory to find TeX subdirectories. (default: PREFIX)],
[TEXPREFIX=$enableval],
[TEXPREFIX=auto] )
AC_ARG_ENABLE(tex-dir,
- [ tex-dir=DIR set the directory to put LilyPond TeX files in.],
+ [ tex-dir=DIR set the directory to put LilyPond TeX files in. ],
[TEXDIR=$enableval],
[TEXDIR=auto] )
AC_ARG_ENABLE(mf-dir,
if test "x$TEXPREFIX" = xauto ; then
AC_TEX_PREFIX(TEXPREFIX)
+else
+ find_texprefix=$TEXPREFIX
fi
if test "x$TEXDIR" = xauto ; then
MAJOR_VERSION = 1
MINOR_VERSION = 1
-PATCH_LEVEL = 13
+PATCH_LEVEL = 14
# use to send patches, always empty for released version:
MY_PATCH_LEVEL = # include separator: "-1" or ".a"
#
+pl 1.1.14
+ - interval methods
pl 1.1.13
- better test-bed
- Heap PQueue implementation
/** mindblowingly stupid Associative array implementation.
Hungarian: map
+
+ TODO: a decent hash for strings.
*/
template<class K, class V>
struct Assoc {
Init for the class names which should be silent can be given in a rc file.
+ TODO:
+ make a baseclass for indentable streams.
*/
class Dstream
{
right +=r;
return *this;
}
+ Interval_t<T> &operator *=(T r) {
+ left *= r;
+ right *= r;
+ if (r <0) {
+ T t = left;
+ left = right;
+ right = t;
+ }
+ return *this;
+ }
String str() const;
bool elt_b(T r);
};
}
-
template<class T>
inline
Interval_t<T> operator +(T a,Interval_t<T> i )
return a+i;
}
+template<class T>
+inline
+Interval_t<T> operator *(T a,Interval_t<T> i )
+{
+ i *= a;
+ return i;
+}
+
+template<class T>
+inline
+Interval_t<T> operator *(Interval_t<T> i,T a ){
+ return a*i;
+}
+
typedef Interval_t<Real> Interval;
/** C++ for version of long_getopt. For processing GNU style command
line arguments. No pointer (return values, arguments) contents are
- copied. */
+ copied.
+
+ TODO: handle
+ command - , and command --
+
+ argument reordering
+ */
class Getopt_long {
public:
/** errorcodes: no error, argument expected, no argument expected,
+/*
+ path.hh -- declare File_path
+
+ source file of the Flower Library
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
#ifndef PATH_HH
#define PATH_HH
#include "string.hh"
#include "varray.hh"
-/** searching directory for file.
+/**
+ search in directories for a file.
Abstraction of PATH variable. An interface for searching input files.
Search a number of dirs for a file.
+ TODO: add a unix style PATH interface
Should use kpathsea?
*/
Array<String>::push;
void add(String str) { push(str); }
};
-/** split a path into its components.
+
+/** split a path into its components.
@params path
@return
- String & drive, String &dirs, String &filebase, String &extension
+ String &drive, String &dirs, String &filebase, String &extension
*/
void split_path(String path, String &drive, String &dirs, String &filebase, String &extension);
Hungarian postfix pq
+ TODO: add increase/decrease operations,
+ add max() operation
*/
template<class T>
class PQueue {
% name = \script {
-% indexstring same_dir_as_stem above_below_staff symbol_can_beinverted }
+% indexstring follow_into_staff same_dir_as_stem above_below_staff symbol_can_beinverted }
%
accent = \script { "sforzato" 0 -1 0 0 }
tenuto = \script {"tenuto" 0 -1 0 0 }
upbow = \script { "upbow" 0 0 1 0 }
downbow = \script { "downbow" 0 0 1 0 }
+% toe = \script { "toe" 0 -1 0 0 }
+% heel = \script { "heel" 0 -1 0 0 }
+lheel = \script { "heel" 0 0 -1 0 }
+rheel = \script { "heel" 0 0 1 0 }
+ltoe = \script { "toe" 0 0 -1 0 }
+rtoe = \script { "toe" 0 0 1 0 }
-%%
-% Please note that, while these names are used to enter *notes*, they
-% actually are *melodic*s, i.e. they represent a pitch solely. Notes
-% have a rhythmic part too. This is the reason that we don't write 'note
-% common Swedish names for notes. "-ess" means flat, "-iss" means sharp
+%
+% common Swedish names for notes. "ess" means flat, "iss" means sharp
%
% by Mats Bengtsson.
+
+%
+% Please note that, while these names are used to enter *notes*, they
+% actually are *melodic*s, i.e. they represent a pitch solely. Notes
+% have a rhythmic part too. This is the reason that we don't write 'note { .. }'
+%
\notenames {
-cessess = \melodic_request { 0 0 -2 }
-cess = \melodic_request { 0 0 -1 }
-c = \melodic_request { 0 0 0 }
-ciss = \melodic_request { 0 0 1 }
-cississ = \melodic_request { 0 0 2 }
-dessess = \melodic_request { 0 1 -2 }
-dess = \melodic_request { 0 1 -1 }
-d = \melodic_request { 0 1 0 }
-diss = \melodic_request { 0 1 1 }
-dississ = \melodic_request { 0 1 2 }
-essess = \melodic_request { 0 2 -2 }
-ess = \melodic_request { 0 2 -1 }
-e = \melodic_request { 0 2 0 }
-eiss = \melodic_request { 0 2 1 }
-eississ = \melodic_request { 0 2 2 }
-fessess = \melodic_request { 0 3 -2 }
-fess = \melodic_request { 0 3 -1 }
-f = \melodic_request { 0 3 0 }
-fiss = \melodic_request { 0 3 1 }
-fississ = \melodic_request { 0 3 2 }
-gessess = \melodic_request { 0 4 -2 }
-gess = \melodic_request { 0 4 -1 }
-g = \melodic_request { 0 4 0 }
-giss = \melodic_request { 0 4 1 }
-gississ = \melodic_request { 0 4 2 }
-assess = \melodic_request { 0 5 -2 }
-ass = \melodic_request { 0 5 -1 }
-a = \melodic_request { 0 5 0 }
-aiss = \melodic_request { 0 5 1 }
-aississ = \melodic_request { 0 5 2 }
-hessess = \melodic_request { 0 6 -2 }
-b = \melodic_request { 0 6 -1 }
-h = \melodic_request { 0 6 0 }
-hiss = \melodic_request { 0 6 1 }
-hississ = \melodic_request { 0 6 2 }
+ cessess = \melodic_request { -1 0 -2 }
+ cess = \melodic_request { -1 0 -1 }
+ c = \melodic_request { -1 0 0 }
+ ciss = \melodic_request { -1 0 1 }
+ cississ = \melodic_request { -1 0 2 }
+ dessess = \melodic_request { -1 1 -2 }
+ dess = \melodic_request { -1 1 -1 }
+ d = \melodic_request { -1 1 0 }
+ diss = \melodic_request { -1 1 1 }
+ dississ = \melodic_request { -1 1 2 }
+ essess = \melodic_request { -1 2 -2 }
+ ess = \melodic_request { -1 2 -1 }
+ e = \melodic_request { -1 2 0 }
+ eiss = \melodic_request { -1 2 1 }
+ eississ = \melodic_request { -1 2 2 }
+ fessess = \melodic_request { -1 3 -2 }
+ fess = \melodic_request { -1 3 -1 }
+ "f" = \melodic_request { -1 3 0 }
+ fiss = \melodic_request { -1 3 1 }
+ fississ = \melodic_request { -1 3 2 }
+ gessess = \melodic_request { -1 4 -2 }
+ gess = \melodic_request { -1 4 -1 }
+ g = \melodic_request { -1 4 0 }
+ giss = \melodic_request { -1 4 1 }
+ gississ = \melodic_request { -1 4 2 }
+ assess = \melodic_request { -1 5 -2 }
+ ass = \melodic_request { -1 5 -1 }
+ a = \melodic_request { -1 5 0 }
+ aiss = \melodic_request { -1 5 1 }
+ aississ = \melodic_request { -1 5 2 }
+ hessess = \melodic_request { -1 6 -2 }
+ b = \melodic_request { -1 6 -1 }
+ h = \melodic_request { -1 6 0 }
+ hiss = \melodic_request { -1 6 1 }
+ hississ = \melodic_request { -1 6 2 }
+
+
+ %
+ % upper case: 1 octave lower.
+ %
+
+
+ Cessess = \melodic_request { -2 0 -2 }
+ Cess = \melodic_request { -2 0 -1 }
+ C = \melodic_request { -2 0 0 }
+ Ciss = \melodic_request { -2 0 1 }
+ Cississ = \melodic_request { -2 0 2 }
+ Dessess = \melodic_request { -2 1 -2 }
+ Dess = \melodic_request { -2 1 -1 }
+ D = \melodic_request { -2 1 0 }
+ Diss = \melodic_request { -2 1 1 }
+ Dississ = \melodic_request { -2 1 2 }
+ Essess = \melodic_request { -2 2 -2 }
+ Ess = \melodic_request { -2 2 -1 }
+ E = \melodic_request { -2 2 0 }
+ Eiss = \melodic_request { -2 2 1 }
+ Eississ = \melodic_request { -2 2 2 }
+ Fessess = \melodic_request { -2 3 -2 }
+ Fess = \melodic_request { -2 3 -1 }
+ F = \melodic_request { -2 3 0 }
+ Fiss = \melodic_request { -2 3 1 }
+ Fississ = \melodic_request { -2 3 2 }
+ Gessess = \melodic_request { -2 4 -2 }
+ Gess = \melodic_request { -2 4 -1 }
+ G = \melodic_request { -2 4 0 }
+ Giss = \melodic_request { -2 4 1 }
+ Gississ = \melodic_request { -2 4 2 }
+ Assess = \melodic_request { -2 5 -2 }
+ Ass = \melodic_request { -2 5 -1 }
+ A = \melodic_request { -2 5 0 }
+ Aiss = \melodic_request { -2 5 1 }
+ Aississ = \melodic_request { -2 5 2 }
+ Hessess = \melodic_request { -2 6 -2 }
+ B = \melodic_request { -2 6 -1 }
+ H = \melodic_request { -2 6 0 }
+ Hiss = \melodic_request { -2 6 1 }
+ Hississ = \melodic_request { -2 6 2 }
+
+
}
"-staccatissimo" "\istaccatissimo" 0\pt 0\pt -7.5\pt 0\pt
"upbow" "\upbow" -1\pt 6\pt 0\pt 5\pt
"downbow" "\downbow" 0\pt 5\pt 0\pt 7.5\pt
+ "heel" "\heel" -1\pt 6\pt -5\pt 17.5\pt
+ "toe" "\toe" 0\pt 5\pt -5\pt 17.5\pt
}
"style" = \table {
- "roman" "\settext{%}" 0\pt 0\pt 0\pt 8\pt
+ "roman" "\settext{%}" 0\pt 5\pt 0\pt 8\pt
"italic" "\setitalic{%}" 0\pt 0\pt 0\pt 8\pt
"dynamic" "\setdynamic{%}" 0\pt 0\pt 0\pt 8\pt
}
+% title:
+% description:Cadenza to Mozart Horn concerto 3
+% composer(s):unknown
+% entered-by:HWN
+% copyright: public domain
%
-% Cadenza to Mozart Horn/3
-%
-% author: unknown. Copyright: none
-%
+% Tested Features: cadenza mode
+
+
\version "0.0.54";
+
cad = \melodic {
\cadenza 1;
\grouping 1*4;\duration 8;\octave c';
+++ /dev/null
-% Creator: This is mi2mu 0.0.12.1 #5/FlowerLib 1.1.9 #0 of Mar 24 1997 21:30:32
-% Automatically generated, at Mon Mar 24 23:39:09 1997
-% from input file: fugue1.midi
-
-track0 = \melodic{
- % midi copyright:
- % instrument:
- % 1
-
- % 26:2.
- |
- % 27
-
-} % track0
-
-track1 = \melodic{
- % midi copyright:
- % instrument:
- % 1
-
- % 2:4*5/32
- g8 a8 b8 c'8.
- % 3:4*5/128
- < { d'16 } > < { c'16 } > < { b8 } > e'8 a8 < {
- d'8. } > e'16 d'16 c'16 b16 g16 a16 b16 c'16 b16
- c'16 d'16 e'16 d'16 e'16 fis'16 g'8 b8 c'8 a8 d'16
- c'16 b16 a16
- % 5:4*47/384
- < { g8. } > g16 f16 e16 f16 g16 a16 g16 a16 b16 c'2
- b4 |
- % 7
- c'8 d'8 e'8 f'8. < { f'16 } { g'16 } > e'8 a'8 d'8
- g'8. a'16 g'16 f'16 e'8 a'8. b'16 a'16 g'16 f'2
- e'8. fis'16 g'2 fis'4 g'16 f'16 e'16 d'16 c'16 d'16
- c'16 b16 a16 c'16 b16 a16
- % 11:4
- c'16 a16 gis8 e'8 d'8 c'16 b16 a16 gis16 a16 b16
- c'16 fis16 gis16 a16 b8 a16 b16 c'8 f'8 e'8 d'4
- c'16 b16
- % 13:4*45/256
- < { c'16 } > < { b16 } > < { b16 b16 } { c'16 c'16 }
- { b16 } { c'16 c'16 } > < > < { b16 } > < { a16 }
- > |
- % 14
- a4
- % 15:4*5/32
- g8 a8 b8 c'8.
- % 16:4*5/128
- < { d'16 } > < { c'16 } > < { b8 } > c'8 d'8 e'8
- f'8. < { g'16 } > < { f'16 } > |
- % 17
- < { e'8 } > a'8 d'8 g'8. a'16 g'16 f'16 e'8 a'8 d'8
- ais'8 a'8 g'16 f'16 g'16 f'16 g'16 e'16 f'16
- % 18:4*155/768
- < { g'16 } > < { g'16 } > < { a'16 } > < { g'16 } >
- < > < > < { f'16 } > < { g'16 } > |
- % 19
- < { a'16 } > cis'16 d'16 g'16 < { f'16 } > < { e'16
- } > < { f'16 } > < { e'16 } > < > < { f'16 } > < >
- < > < > < { e'8 } > < > d'16 d'8
- % 20:4*7/32
- g8 a8 b8
- % 21:4
- c'8 d'16 < { c'16 } > < { b8 } > e'8 a8 < { d'8. }
- >
- % 22:4*5/384
- e'16 d'16 c'16 b16 c'16 d'16 e'16 f'16 g'16 a'16
- g'16 f'16 e'16 d'16 c'16 < { c'16 } > < { b16 } > <
- { c'16 } > |
- % 23
- < > < > < { b8. } > c'8 d'8 g8 < { c'4 } > b8 c'4
- b8 ais8 a8
- % 24:4*59/384
- < { d'4 } > c'8 d'8 e'8
- % 25:4
- f'4 a'16 < { g'16 } > f'16 e'16 < { f'16 } > < {
- e'16 } > d'16 |
- % 26
- c'2 g16 < { a16 } > b16 c'16 d'16 e'16 < { f'8. } >
- |
- % 27
- < { d'16 } { c'16 e'16 } > f'16 < { g'16 } > < {
- a'8. } > b'16 c''2
-} % track1
-
-track2 = \melodic{
- % midi copyright:
- % instrument:
- % 1
- c8 d8 e8 f8. < { g16 } > < { f16 } > < { e8 } > a8
- d8
- % 2:4*107/3840
- < { g8. } > a16 g16 f16 e16 f16 e16 d16 c16 d16 c16
- 'b16 'a8 fis8
- % 3:4*203/3840
- < { g4. } > f16 e16 f8 d8 g8 f8 e8 d8
- % 4:2
- g4 f16 e16
- % 5:4
- f4 f16 e8 d4 c8 f8
- % 6:4
- g16 f16 e16 f8 d8 g2
- % 7:4*241/3840
-
- % 9:8
- g8 a8 b8 < { c'8. } > < { d'16 } > < { c'16 } > < {
- b8 } > e'8 a8
- % 10:4*13/480
- < { d'8. } > e'16 d'16 c'16 b8 d8 e8 fis8
- % 11:4*23/384
- < { g8. } > < { a16 } > < { g16 } > < { f8 } > b8
- e8 a8. b16 a16 gis16 fis8 f8 e8 d8. e16 fis16 gis16
- a16 gis16 a16 b16 gis16 fis16 gis16 a16 b8
- % 13:4*5/32
-
- % 14:8
- c8 d8 e8 < { f8. } > < { g16 } > < { f16 } > < { e8
- } > a8 d8 g8. a16 g16 f16
- % 15:2
- e16 e16 fis16 g4
- % 16:4*91/3840
- fis8 gis8 < { a4 } > g8 a8 b8 < { c'8. } > |
- % 17
- < { d'16 } > < { c'16 } > < { b8 } > e'8 a8 d'8.
- e'16 d'16 c'16 b8 g'8 cis'8 d'8 e'8 cis'8 d'8 e'8
- a8
- % 19:8
- e8 fis8 g8 < { a8. } > < { b16 } > < { a16 } > |
- % 20
- < { g8 } > c'8 fis8 < { b8. } > c'16 b16 a16 g16
- fis16 e16 d16 e4
- % 21:4
- d4 a16 g16 f16 e16 g16 f16 a16 |
- % 22
- g4 a16 ais8 < { c'4 } > d'8 g8 < { g4. } > |
- % 23
- f4 e8 d4 |
- % 24
- e16 a4 g4 f8 g8 a8 < { ais8. } > |
- % 25
- < { c'16 } > < { ais16 } > < { a8 } > d'8 g8 < {
- c'8. } > d'16 c'16 ais16 a16 ais16 a16 g16 f16 g16
- f16 e16
- % 26:2
- g16 a4
- % 27:4
- f'16 d'8 < { e'2 } { g'2 } >
-} % track2
-
-track3 = \melodic{
- % midi copyright:
- % instrument:
- % 1
-
- % 4:8
- 'g8 'a8 'b8 c8. < { d16 } > < { c16 } > < { 'b8 } >
- e8 'a8
- % 5:4*11/384
- < { d8. } > e16 d16 c16 'b8 c4 'ais8 'a8 d8 'g8 c8
- % 6:2
- 'a16 'b16 c16 d4 'g4
- % 7:4
- 'g8 'a8 'b8 c8. < { d16 } > < { c16 } > < > |
- % 8
- 'b8 e8 'a8 d8. e16 d16 c16 'b8 e4. d4
- % 9:2
- 'b16 c16 'a16 e16 d16 c16 'b16 c16 'a16 'b16 c16
- d16 c16 'b16 'a16 'g4
- % 10:2.
-
- % 12:8
- 'e8 'fis8 'gis8 'a8. < { 'b16 } > < { 'a16 } > < {
- 'g8 } > c8 'fis8 'b8. c16 'b16 'a16
- % 13:2
- 'gis8 < { 'a4 } > 'gis8 'a4
- % 14:4
- 'g8 'a8 'b8 c8. < { d16 } > < { c16 } > |
- % 15
- < { 'b8 } > e8 'a8 d4 'g8 d4 c8 'a8 e4 d8
- % 16:4*5/32
-
- % 17:8
- 'a8 'b8 cis8 d8. < { e16 } > < { d16 } > < { c8 } >
- f8 'b8 e8. f16 e16 d16 cis8
- % 18:4*5/32
-
- % 19:8
- 'a8 'b8 cis8 d8. < { e16 } > < { d16 } > < { c8 } >
- fis8 'b8 e8. fis16 e16 d16
- % 20:2
- c2 d16 c16 'b16 'a16 'g16 'a16 'fis16
- % 21:2
- 'g8 'b8 c8 < { d8 } > e8.
- % 22:4*5/128
- < { f16 } > < { e16 } > < { d8 } > g8 c8 f8. g16
- f16 e16 d4 e8 d4
- % 23:4*59/384
- < { 'g8 } > 'g4. 'c8 'd8 'e8 'f8.
- % 24:4*21/128
- < { 'g16 } > < { 'f16 } > < { 'e8 } > 'a8 'd8
- % 25:4*11/384
- < { 'g8. } > 'a16 'g16 'f16 'e16 'd16 'e16 'f16
- 'g16 'a16 'ais16 'g16 'a16 'e16 'f16 'g16 'a16 'b16
- c16
- % 26:4*7/64
- < { 'a16 } { d2 } > |
- % 27
- c1
-} % track3
-
-track4 = \melodic{
- % midi copyright:
- % instrument:
- % 1
-
- % 5:4*5/32
- 'c8 'd8 'e8 'f8.
- % 6:4*5/128
- < { 'g16 } > < { 'f16 } > < { 'e8 } > 'a8 'd8 < {
- 'g8. } > 'a16 'g16 'f16 'e16 'f16 'e16 'd16 'c16
- 'd16 'c16 ''b16 ''a8 'd8 'a8 'fis8 'g16 'a16 'ais16
- 'g16 'cis8 'd8 'a4 'e4 'a16 'b16 c16 d16 c16 'b16
- 'a16 'g16 c8
- % 9:4*5/32
-
- % 10:4*5/32
- ''g8 ''a8 ''b8 'c8.
- % 11:4*5/128
- < { 'd16 } > < { 'c16 } > < { ''b8 } > 'e8 ''a8
- 'd8. 'e16 'd16 'c16 < { ''b8 } > |
- % 12
- 'e4 'd8 'c8 'f4 'e4 'd4 'e8 'f8 'e16 'd16 'e4 ''a4
- % 14:4
-
- % 15:8
- ''g8 ''a8 ''b8 'c8. < { 'd16 } > < { 'c16 } > < {
- ''b8 } > 'e8 ''a8 'd8. 'e16 'd16 'c16 ''b8 ''ais8
- ''a8 ''g8 ''a8 'fis8 'g8 'e8 'd4 'e8 'f8 'g8.
- % 18:4*5/128
- < { 'a16 } > < { 'g16 } > < { 'f8 } > 'ais8 'e8
- 'a8. 'b16 < { 'a16 } > 'g16 'f16 'e16 'f16 'd16 'g8
- 'a8
- % 19:2
- 'd2 'e16 'd16 'c16 ''b16 ''a16 ''g16 ''fis16 ''e8
- 'e8 'fis8 'g4 'a16 'g16 'fis8 'd8 'g1 'a4 'b8 c8
- 'f16 'a16 'g16 'f16 'e16 'd16 'c16 ''b16 'c16 'd16
- 'e16 'f16 'g8 ''g8 |
- % 24
-
- % 26:2
- 'b2 |
- % 27
-
-} % track4
-
-\score{
- \staff{ track0 }
- \staff{ track1 }
- \staff{ track2 }
- \staff{ track3 }
- \staff{ track4 }
-
- \paper{
- \unitspace 20\mm
- }\midi{
- \tempo 4:60
- }
-}
--- /dev/null
+%%MudelaHeader
+% title:
+% description:
+% composer(s):
+% entered-by:
+% copyright:
+%
+% Tested Features:
+%%End
+
+\version "0.0.54";
%
% copyright: None
%
-% declare melody (which will be in *one* staff ) for the lead voice
\version "0.0.54";
+% declare melody (which will be in *one* staff ) for the lead voice
melodie = \melodic {
% switch Lilypond in note-mode
\clef\violin;
+++ /dev/null
-% The purpose of this file is to demonstrate features of LilyPond;
-%
-% COPYRIGHT: GPL
-%
-%
-\version "0.0.54";
-
-globals=\melodic{
- \meter 4/ 4;
- \partial 8;
- \skip 8*1;
- \skip 2*3 ;
- \bar ":|:";
- \skip 1*2;
- \meter 2/4;
-}
-
-%ritme = \staff{melodicregs
-% globals
-% rhythmic broken for now
-% \rhytmic{
-% c8
-% |[a8() a8. a8 a16 a16 a16] c4.
-%
-% %[c8( )a'8() c8 c8]% BUG!
-% |c2 c2
-%
-% |[fis16 dis'16( fis16 dis'16 ][fis16) dis'16 fis16 dis'16]
-% | r32 r32 r16 r8 r4 r2
-% |[c8. c16] [c16 c8.] [c16 c16 c8] [c16 c8 c16]
-%
-% c2 c2 c2 c2 c2 c2 c2 c2 c2 c2
-% }
-%}
-
-melody= \staff{melodicregs
- globals
- \melodic {
- \octave c;
- c8\key fis cis gis;
- |r4 r4 r4 r4
- |cis'2.. r8
- | r4 r8 r16 r32 r32
-
- \duration 4;
- <
- { c () 'bes [c8 c8] }
- { fis' ()gisis' fis8 fis8 }
- { d () d dis8 dis8 }
- { a () bes eis8 eis8 }
- { fis () g gis8 gis8 }
- >
- \clef\tenor;
- < c4 c'4 >
-
- [d8 e8 f'8 g8] d8 e8 f8 g8
- |fis''2
- | a8 b8 c'8 d'8 |c''8 '''c8 c4 |c4 c4 |c4
- \duration 16 ; 'b 'a 'g 'f \duration 4;
- \clef\bass ;
-
- |c 'b 'a 'g 'f 'e 'd 'c ''b ''a ''g ''f ''e ''d ''c
- }
-
-}
-
-\score{
- \paper{
- \geometric 1.4
- \unitspace 3.0 \cm
- }
-
- \staff{ melody}
-}
-
+++ /dev/null
-%
-% Viola Quartet
-% Martien Lohman (194x-????)
-%
-% quite alive at the time of writing;
-% copyright by ml
-%
-%
-% The purpose of this file is to demonstrate features of LilyPond;
-% respect the copyright. %% VAAG!
-%
-% \barnumbering5
-% \barnumberstyle\boxed
-
-commands = \melodic{
- \meter 2/4;
-% \key fis
- \skip 2*56;
-% \key bes es as
- \skip 2*8;
- \meter 6/8;
- \skip 8*48;
- \meter 2/4;
- \skip 2*16;
-% \key fis
-}
-
-\include "mlalt.ly"
-\include "mlvio1.ly"
-\include "mlvio2.ly"
-\include "mlcello.ly"
-
-\score{
- \staff{ melodicregs commands alto }
- \staff{ melodicregs commands violinI }
- \staff{ melodicregs commands violinII }
- \staff{ melodicregs commands cello }
- \paper{
- \unitspace 24\mm
- \width 195\mm
- \output "martien.out"
- }
- \midi{
- \tempo 4:80
- }
-}
+++ /dev/null
-\documentclass{article} %UGH
-\usepackage{a4}
-\oddsidemargin-1in\advance\oddsidemargin7.5mm
-\evensidemargin\oddsidemargin
-\hsize210mm\vsize297mm % so what does a4 do, anyway?
-\textwidth\hsize\advance\textwidth-15mm
-\topmargin-1in\advance\topmargin5mm
-\textheight\vsize\advance\textheight-30mm
-\pagestyle{empty}
-\begin{document}
-\input lilyponddefs
-\input titledefs
-%\def\interstaffline{\vskip10pt}
-%\def\interscoreline{\vskip12pt}
-\def\interstaffline{\vskip1mm}
-\def\interscoreline{\vskip2mm}
-\vbox to 10mm{\vss}
-\title{Viola Quartet}
-\composer{Martien Lohman}
-\instrument{}
-\maketit
-\input martien.out
-\end{document}
+++ /dev/null
-% mlalt.ly
-%
-% Viola Quartet
-% Martien Lohman (194x-????)
-%
-% Alto I
-%
-% quite alive at the time of writing;
-% copyright by ml
-%
-% The purpose of this file is to demonstrate features of LilyPond;
-% respect the copyright.
-%
-alto = \melodic {
- \duration 16;
- \clef\alto;
- \octave c;
- \key fis;
-%1
- [ 'b8. 'a ] [ 'g8 'b c ] |
-%2
- [ d8 g8 ] d4 |
-%3
- [ e fis g a ] d4 |
-%4
- [ c 'b 'a 'b ] 'b4 |
-%5=1
- [ 'b8. 'a ] [ 'g8 'b c ] |
-%6=2
- [ d8 g8 ] d4 |
-%7
- [ c 'b 'a 'g ] [ 'fis 'e 'd 'c ] |
-%8
- [ 'd8. 'e ] [ 'd 'fis 'a c ] |
-%9=1
- [ 'b8. 'a ] [ 'g8 'b c ] |
-%10
- [ d8 'd8 ] d4 |
-%11=4
- [ c 'b 'a 'b ] 'b4 |
-%12
- [ 'a8 d8 ] 'b4 |
-%13
- [ d8. c ] [ 'b8 'a 'g ] |
-%14=10
- [ d8 'd8 ] d4 |
-%15
- [ e8 fis8 ] [ g8 d8 ] |
-%16
- \textstyle "italic";
- [ c 'a 'fis 'd ] 'g4_"fine" |
- \textstyle "roman";
-% \scoreverb \mulooseness=-1;
-% \newline
-%17
-%=1
- [ 'b8. 'a ] [ 'g8 'b c ] |
-%18=2
- [ d8 g8 ] d4 |
-%19=3
- [ e fis g a ] d4 |
-%20=4
- [ c 'b 'a 'b ] 'b4 |
-%21=5=1
- [ 'b8. 'a ] [ 'g8 'b c ] |
-%22=6=2
- [ d8 g8 ] d4 |
-%23=20=4
- [ c 'b 'a 'b ] 'b4 |
-%24
- [ 'a8. 'g ] [ 'a cis e g ] |
-%first modulation
-%25
- [ fis8. e ] [ d8 fis g ] |
-%26
- [ a8 'a8 ] a4 |
-%27
- [ g fis e fis ] fis4 |
-%28
- [ e8 a8 ] fis4 |
-%29
- [ a8. g ] [ fis8 e d ] |
-%30
- [ a8 'a8 ] a4 |
-%31
- [ b8 cis'8 ] [ d'8 a8 ] |
-%32
- [ g e cis 'a ] d4 |
-%variant a
-%33
- [ 'b8 'g 'g ] [ 'g8 'b c ] |
-%34
- [ d8 'g 'g ] 'g4 |
-%35
- [ e8 'g 'g ] [ 'g8 e fis ] |
-%36
- [ g8. fis32 e32 ] d4 |
-%37
- [ e8 c c ] [ c8 'b 'a ] |
-%38
- [ d8 'b 'b ] [ 'b8 'a 'g ] |
-%39
- [ c8 'a 'a ] [ 'a8 'b 'a ] |
-%40
- 'a4 'g4 |
-%41
- [ 'g8 'a 'g ] [ d8 e d ] |
-%42
- [ 'g8 'a 'g ] [ g8 e8 ] |
-%43
- [ d8 e d ] [ d8 c 'b ] |
-%44
- [ 'b8. c32 'b32 ] 'a4 |
-%45
- [ 'g 'a 'g 'a 'g 'a ]4/6 [ 'g 'b c d e fis ]4/6 |
-%46
- [ g fis e d 'b 'g ]4/6 [ 'a8 'g8 ] |
-%47
- [ g fis e d c 'b ]4/6 [ e d c 'b 'a 'g ]4/6 |
-%48
- [ d e d d 'b 'g ]4/6 [ 'a8 'g8 ] |
-%theme 2
- \duration 8;
-%49
- [ f e d ]2/3 f4 |
-%50
- [ e d c ]2/3 e4 |
-%51
- [ d g 'g ]2/3 [ 'g 'a 'b ]2/3 |
-%52
- d4 e4 |
-%53
- [ f e d ]2/3 f4 |
-%54
- [ e d c ]2/3 e4 |
-%55
- [ d g 'g ]2/3 [ 'g 'a 'b ]2/3 |
-%56
- 'b4 c4 \key bes es as; | % || \key\Es
-%57
- [ 'b d ] [ 'g 'b ] |
-%58
- [ c es ] [ 'g c ] |
-%59
- [ d f ] [ 'g f ] |
-%60
- [ es16 d16 es16 f16 ] g4 |
-%61
- [ as f ] [ d as ] |
-%62
- [ g es ] [ c 'as ] |
-%63
- [ 'g 'b ] [ es d ] |
-%64
- [ c8. 'g32 'es32 ] 'c4 | % || \meter 6/8;
-%65
- es4.( [ )es d c ] |
-%66
- es2. |
-%67
- d4.( [ )d c 'b ] |
-%68
- d2. |
-%69
-% g4.\stemdown( [ ) g as g ] |
- g4.( [ ) g as g ] |
-%70
-% g4.\stemdown( [ ) g f es ] |
- g4.( [ )g f es ] |
-%71
- d2. |
-%72
- c r4 r4. | % || \meter 2/4;
-%73
- \duration 8;
- [ 'b d ] [ 'g 'b ] |
-%74
- [ c es ] [ 'g c ] |
-%75
- [ d f ] [ 'g f ] |
-%76
- [ es16 d16 es16 f16 ] g4 |
-%77
- [ as f ] [ d as ] |
-%78
- [ g es ] [ c 'as ] |
-%79
- [ 'g 'b ] [ es d ] |
-%80
- [ c8. 'g32 'es32 ] 'c4 |
-%81
- g4 [ as g ] |
-%82
- \duration 16;
- [ g f es f ] g4 |
-%83
- [ g f e f ] g4 |
-%84
- [ as g f g ] as4 |
-%85
- f4 [ f des c 'bes ] |
-%86
- 'a2 |
-%87
- 'b2 |
-%88
- \textstyle "italic";
- c2_"dacapo" \key fis; |
- \textstyle "roman";
-%\scoreverb \mulooseness=1;
-% \key\G ||
-
-}
+++ /dev/null
-% mlcello.ly
-%
-% Viola Quartet
-% Martien Lohman (194x-????)
-%
-% Cello
-%
-% quite alive at the time of writing;
-% copyright by ml
-%
-% The purpose of this file is to demonstrate features of LilyPond;
-% respect the copyright.
-%
-cello = \melodic {
- \clef"bass";
- \octave 'c;
- \duration 4;
- \key fis;
-%%1
- g 'g |
-%%2
- [ 'g8. 'a16 ] ''b |
-%%3
- c d |
-%%4
- g( [ ) g16 fis16 e16 fis16 ] |
-%%5=1
- e2 |
-%%6=2
- [ 'g8. 'a16 ] ''b |
-%%7
- c d |
-%%8
- 'g d |
-%%9=1
- 'g2 |
-%%10
- 'g ''b |
-%%11=4
- e [ g16 fis16 e16 d16( ] |
-%%12
- ) d g |
-%%13
- [ d8 d'8 ] g |
-%%14=10
- [ d8 d'8 ] g |
-%%15
- [ c8 e8 ] [ g8 'g8 ] |
-%%16
- \textstyle "italic";
- [ d8 c'8 ] b_"fine"
- \textstyle "roman" ;|
-% \newline
-%%17=1
- g 'g |
-%%18=2
- [ 'g8. 'a16 ] ''b |
-%%19=3
- c d |
-%%20=4
- g( [ ) g16 fis16 e16 fis16 ] |
-%%21=5=1
- e2 |
-%%22=6=2
- [ 'g8. 'a16 ] ''b |
-%%23=4
- c g |
-%%24
- a 'a |
-%%25
- d2 |
-%%first modulation
-%%26
- d 'fis |
-%%27
- ''b [ dis16 c16 ''b16 'a16( ] |
-%%28
- ) 'a d |
-%%29
- \duration 8;
- [ 'a a ] d4 |
-%%30
- [ 'a a ] d4 |
-%%31
- [ 'g ''b ] [ d 'd ] |
-%%32
- [ 'a a ] d4 |
-%%variant a
-%%33
- \duration 16;
- [ 'g8 'g 'g ] [ 'g8 'g 'g ] |
-%%34
- [ 'g8 'g 'g ] g4 |
-%%35
- [ c8 c c ] [ c8 c' c' ] |
-%%36
- g4 b4 |
-%%37
- [ a8 a a ] [ 'a8 'a 'a ] |
-%%38
- [ ''b8 ''b ''b ] [ ''b8 ''b ''b ] |
-%%39
- [ 'a8 'a 'a ] [ 'a8 'a 'a ] |
-%%40
- 'd4 'g4 |
-%%41
- \duration 8;
- \textstyle "italic";
- r_"pizz"
- \textstyle "roman";
- g r 'g |
-%%42
- r g e4 |
-%%43
- r b r ''b |
-%%44
- r e a4 |
-%%45
- r e r e |
-%%46
- r ''b [ d g ] |
-%%47
- r e r 'a |
-%%48
- r ''b
- [ 'd 'g ] |
-%%theme 2
-%%49
- \textstyle "italic";
- r4_"arco"
- [ 'g 'g 'g ]2/3 |
- \textstyle "roman";
-%%50
- r4 [ c c c ]2/3 |
-%%51
- g2 |
-%%52
- c2 |
-%%53
- r4 [ 'g 'g 'g ]2/3 |
-%%54
- r4 [ c c c ]2/3 |
-%%55
- g2 |
-%%56
- 'g4 'c4 \key bes es as;|
-% \key\'es ||
-%%57
- g r g r |
-%%58
- c r c r |
-%%59
- 'g r 'g r |
-%%60
- c r c r |
-%%61
- d4. ''b |
-%%62
- c2 |
-%%63
- g4 'g4 |
-%%64
- c4 'c4 |
-% \meter 6/8; ||
-%%65
- [ c c c ] c4. |
-%%66
- [ 'c 'c 'c ] 'c4. |
-%%67
- [ 'g 'g 'g ] 'g4. |
-% \newline
-%%68
- [ g g g ] g4. |
-%%69
- c2. |
-%%70
- c2. |
-%%71
- g2. |
-%%72
- c' r4 r4. |
-%%73
-% \meter 2/4; ||
- g r g r |
-%%74
- c r c r |
-%%75
- 'g r 'g r |
-%%76
- c r c4 |
-%%77
- d4. ''b |
-%%78
- c2 |
-%%79
- g4 'g4 |
-%%80
- c4 'c4 |
-%%81
- \duration 2;
- 'c |
-%%82
- 'c |
-%%83
- 'e |
-%%84
- 'f |
-%%85
- 'as |
-%%86
- c |
-%%87
- d |
-%%88
- \textstyle "italic";
- d_"dacapo" \key fis; |
- \textstyle "roman";
-% \key\'g ||
-
-}
+++ /dev/null
-% mlvio1.ly
-%
-% Viola Quartet
-% Martien Lohman (194x-????)
-%
-% Violin I
-%
-% quite alive at the time of writing;
-% copyright by ml
-%
-% The purpose of this file is to demonstrate features of LilyPond;
-% respect the copyright.
-%
-violinI = \melodic {
- \clef "violin";
- \octave c;
- \duration 4;
- \key fis;
-%1
- g [ b8. a16 ] |
-%2
- g2 |
-%3
- g [ a16 b16 c'16 a16 ] |
-%4
- g2 |
-%5=1
- g [ b8. a16 ] |
-%6=2
- g2 |
-%7
- e fis |
-%8
- d fis |
-%9=1
- g [ b8. a16 ] |
-%10
- g f |
-%11=4
- e d |
-%12
- [ fis8 a8 ] [ g8 d'8 ] |
-%13
- [ d'8 a8 ] [ d'8 b8 ] |
-%14=10
- a b |
-%15
- c' b |
-%16
- \textstyle "italic";
- a g_"fine"
- \textstyle "roman" ;
- |
-%\newline
-%17=1
- g [ b8. a16 ] |
-%18=2
- g2 |
-%19=3
- g [ a16 b16 c'16 a16 ] |
-%20=4
- g2 |
-%21=5
- g [ b8. a16 ] |
-%22=6
- g2 |
-%23=4
- e [ d16 c16 'b16 c16 ] |
-%24
- cis cis' |
-%25
- d' [ fis'8. e'16 ] |
-%first modulation
-%26
- d' c' |
-%27
- b a |
-%28
- [ a8 b16 cis'16 ] d' |
-%29
- cis' d' |
-%30
- cis' a |
-%31
- [ g8 d'8( ] ) d' |
-%32
- cis' c' |
-%variant a'
-%33
- \duration 16; [ b8 d' d' ] [ d'8 d' d' ] |
-%34
- [ g'8 d' d' ] b4 |
-%35
- [ c'8 c' c' ] [ c'8 c' c' ] |
-%36
- b2 |
-%37
- [ c'8 e' e' ] [ e'8 d' c' ] |
-%38
- [ b8 d' d' ] [ d'8 d' d' ] |
-%39
- [ e'8 c' c' ] [ c'8 d' c' ] |
-%40
- c'4 < b4 d'4 > |
-%41
- \textstyle "italic";
- \duration 8;
- r_"pizz" d r g
- \textstyle "roman" ;|
-%42
- r d e4 |
-%43
- r b r d' |
-%44
- r e' c'4 |
-%45
- r b r b |
-%46
- r b [ a b ] |
-%47
- r b r c' |
-%48
- r d' [ d' b ] |
-%theme 2
-%49
- \textstyle "italic";
- r4_"arco" [ b8 b b ]2/3
- \textstyle "roman" ;|
-%50
- r4 [ g g g ]2/3 |
-%51
- b2 |
-%52
- c'2 |
-%53
- r4 [ b b b ]2/3 |
-%54
- r4 [ g g g ]2/3 |
-%55
- b2 |
-%56
- g2 \key bes es as;|
-% \key\Es ||
-%57
- f r f r |
-%58
- es r c' r |
-%59
- b r b r |
-%60
- c' r c'4 |
-%61
- \duration 16;
- [ as f d f as d' ]4/6 [ as f d 'as d f ]4/6 |
-%62
- [ g es c 'g c es ]4/6 [ g c' es' c' g es ]4/6 |
-%63
- [ g d g bes d' g' ]4/6 [ f' d' bes g f d ]4/6 |
-%64
- \duration 8;
- [ c g ] g4 |
-% \meter 6/8; ||
-%65
- [ g g g ] g4. |
-%66
- [ c c c ] c4. |
-%67
- [ g g g ] g4. |
-%68
- [ b8 b b ] b4. |
-%69
- [ c' g es ] c'4. |
-%70
- c'4. es'4. |
-%71
- [ f' d' b ] [ g a8 b ] |
-%72
- c' r4 r4. |
-% \meter 2/4; ||
-%73
- f r f r |
-%74
- es r c' r |
-%75
- b r b r |
-%76
- c' r c'4 |
-%77
- \duration 16;
- [ as f d f as d' ]4/6 [ as f d 'as d f ]4/6 |
-%78
- [ g es c 'g c es ]4/6 [ f c' es' c' g es ]4/6 |
-%79
- [ g d f b d' g' ]4/6 [ f' d' b g f d ]4/6 |
-%80
- [ c8 g8 ] g4 |
-%81
- \duration 2;
- c' |
-%82
- c' |
-%83
- des' |
-%84
- c' |
-%85
- c' |
-%86
- es |
-%87
- d |
-%88
- \textstyle "italic";
- a_"dacapo"
- \textstyle "roman";
- \key fis; |
-% \key\G ||
-
-}
+++ /dev/null
-% mlvio2.ly
-%
-% Viola Quartet
-% Martien Lohman (194x-????)
-%
-% Violin II
-%
-% quite alive at the time of writing;
-% copyright by ml
-%
-% The purpose of this file is to demonstrate features of LilyPond;
-% respect the copyright.
-%
-violinII = \melodic {
- \clef "violin";
- \octave c;
- \duration 4;
- \key fis;
-%1
- d2 |
-%2
- [ 'b8. 'a16 ] 'g4 |
-%3
- [ g8 e8 ] fis |
-%4
- d2 |
-%5=1
- e2 |
-%6=2
- [ 'b8. 'a16 ] 'g4 |
-%7
- 'g 'a |
-%8
- 'b 'a |
-%9=1
- d2 |
-%10
- 'b 'g |
-%11=4
- 'g2 |
-%12
- [ d8 e16 fis16 ] g |
-%13
- fis g |
-%14=10
- fis d |
-%15
- c d |
-%16
- \textstyle "italic";
- d2_"fine" |
- \textstyle "roman";
-% \newline
-%17=1
- d2 |
-%18=2
- [ 'b8. 'a16 ] 'g4 |
-%19=3
- [ g8 e8 ] fis |
-%20=4
- d2 |
-%21=5=1
- e2 |
-%22=6=2
- [ 'b8. 'a16 ] 'g4 |
-%23=4
- 'g2 |
-%24
- cis e |
-%25
- a2 |
-%first modulation
-%26
- fis d |
-%27
- d2 |
-%28
- [ cis8 e8 ] [ d8 a8 ] |
-%29
- [ a8 e8 ] [ a8 fis8 ] |
-%30
- e fis |
-%31
- g fis |
-%32
- a fis |
-%variant a
-%33
- \duration 16;
- [ g8 b b ] [ b8 g a ] |
-%34
- [ b8 b b ] f4 |
-%35
- [ g8 e e ] [ e8 g g ] |
-%36
- b4 fis4 |
-%37
- [ a8 a a ] [ a8 a a ] |
-%38
- [ fis8 fis fis ] [ fis8 fis fis ] |
-%39
- [ e8 e e ] [ e8 e e ] |
-%40
- fis4 g4 |
-%41
- \duration 8;
- \textstyle "italic";
- r_"pizz"
- \textstyle "roman";
- 'b r 'b |
-%42
- r 'b 'g4 |
-%43
- r fis r fis |
-%44
- r g e4 |
-%45
- r e r g |
-%46
- r fis [ fis g ] |
-%47
- r g r e |
-%48
- r fis [ fis d ] |
-%theme 2
-%49
- \textstyle "italic";
- r4_"arco"
- \textstyle "roman";
- [ d8 d d ]2/3 |
-%50
- r4 [ g8 g g ]2/3 |
-%51
- d2 |
-%52
- c2 |
-%53
- r4 [ d8 d d ]2/3 |
-%54
- r4 [ e e e ]2/3 |
-%55
- d2 |
-%56
- f4 e4 \key bes es as;|
-% \key\Es ||
-%57
- d r 'b r |
-%58
- 'g r es r |
-%59
- g r g r |
-%60
- g r es4 |
-%61
- f2 |
-%62
- es2 |
-%63
- 'b d4. |
-%64
- es2 |
-% \meter 6/8; ||
-%65
- \duration 8;
- [ c c c ] c4. |
-%66
- [ 'g 'g 'g ] 'g4. |
-%67
- [ 'b8 'b 'b ] 'b4. |
-%68
- [ g g g ] g4. |
-%69
- es2. |
-%70
- [ c es g ] c'4. |
-%71
- b4 g4 d4 |
-%72
- es r4 r4. |
-%73
-% \meter 2/4; ||
- d r 'b r |
-%74
- 'g r es r |
-%75
- g r g r |
-%76
- g r es4 |
-%77
- \duration 2;
- f |
-%78
- es |
-%79
- 'b8 d4. |
-%80
- es |
-%81
- es |
-%82
- es |
-%83
- bes |
-%84
- f |
-%85
- f |
-%86
- ges |
-%87
- g! |
-%88
- \textstyle "italic";
- fis_"dacapo" \key fis;|
- \textstyle "roman";
-% \key\G ||
-
-}
+++ /dev/null
-% urgh
-
-melanie = \melodic{
- \meter 2/4;
- \duration 8;
- [ c d ] < [ d d'>< c c' ] > |
- [ c d ] [ e <d g > c ]2/3 |
- [ c d ] [ c16 d16 e'16 e'16 d16 c16 ]4/6 |
- [ c d e e d c ]4/6 |
- [c d ] < { [ c d e ]2/3 } { [ f g a ]2/3 } > |
- [ c d ] [ d c ] |
-
-}
-
-michelle = \melodic{
- \meter 2/4;
- \duration 8;
- [ c c c c ] |
- [ c c c c ] |
- [ c c c c ] |
- [ c c c c ] |
- [ c c c c ] |
- [ c c c c ] |
-}
-
-mireille = \lyric{
- \meter 2/4;
- \duration 8;
- o o o o |
- o o [ o o o ]2/3 |
- [ o o o ]2/3 [ o16 o16 o16 o16 o16 o16 ]4/6 |
- [ o o o o o o]4/6 |
- o o [ o o o ]2/3 |
- o o o o |
-}
-
-\score{
- \staff{ melodicregs mireille }
- \staff{ melodicregs melanie }
- \staff{ melodicregs michelle }
- \paper{}
-}
+++ /dev/null
-% Creator: This is mi2mu 0.0.12.1 #5/FlowerLib 1.1.9 #0 of Mar 24 1997 21:30:32
-% Automatically generated, at Mon Mar 24 23:24:05 1997
-% from input file: pre1.midi
-
-track0 = \melodic{
- % midi copyright:
- % instrument:
- % 1
-
- % 34:8
- |
- % 35
-
-} % track0
-
-track1 = \melodic{
- % midi copyright:
- % instrument:
- % 1
- g16 c'16 e'16 g16 c'16 e'16 g16 c'16 e'16 g16 c'16
- e'16 |
- % 2
- a16 d'16 f'16 a16 d'16 f'16 a16 d'16 f'16 a16 d'16
- f'16 |
- % 3
- g16 d'16 f'16 g16 d'16 f'16 g16 d'16 f'16 g16 d'16
- f'16 |
- % 4
- g16 c'16 e'16 g16 c'16 e'16 g16 c'16 e'16 g16 c'16
- e'16 |
- % 5
- a16 e'16 a'16 a16 e'16 a'16 a16 e'16 a'16 a16 e'16
- a'16 |
- % 6
- fis16 a16 d'16 fis16 a16 d'16 fis16 a16 d'16 fis16
- a16 d'16 |
- % 7
- g16 d'16 g'16 g16 d'16 g'16 g16 d'16 g'16 g16 d'16
- g'16 |
- % 8
- e16 g16 c'16 e16 g16 c'16 e16 g16 c'16 e16 g16 c'16
- |
- % 9
- e16 g16 c'16 e16 g16 c'16 e16 g16 c'16 e16 g16 c'16
- |
- % 10
- d16 fis16 c'16 d16 fis16 c'16 d16 fis16 c'16 d16
- fis16 c'16 |
- % 11
- d16 g16 b16 d16 g16 b16 d16 g16 b16 d16 g16 b16 |
- % 12
- e16 g16 cis'16 e16 g16 cis'16 e16 g16 cis'16 e16
- g16 cis'16 |
- % 13
- d16 a16 d'16 d16 a16 d'16 d16 a16 d'16 d16 a16 d'16
- |
- % 14
- d16 f16 b16 d16 f16 b16 d16 f16 b16 d16 f16 b16 |
- % 15
- c16 g16 c'16 c16 g16 c'16 c16 g16 c'16 c16 g16 c'16
- |
- % 16
- 'a16 c16 f16 'a16 c16 f16 'a16 c16 f16 'a16 c16 f16
- |
- % 17
- 'a16 c16 f16 'a16 c16 f16 'a16 c16 f16 'a16 c16 f16
- |
- % 18
- 'g16 'b16 f16 'g16 'b16 f16 'g16 'b16 f16 'g16 'b16
- f16 |
- % 19
- 'g16 c16 e16 'g16 c16 e16 'g16 c16 e16 'g16 c16 e16
- |
- % 20
- 'ais16 c16 e16 'ais16 c16 e16 'ais16 c16 e16 'ais16
- c16 e16 |
- % 21
- 'a16 c16 e16 'a16 c16 e16 'a16 c16 e16 'a16 c16 e16
- |
- % 22
- 'a16 c16 dis16 'a16 c16 dis16 'a16 c16 dis16 'a16
- c16 dis16 |
- % 23
- 'b16 c16 d16 'b16 c16 d16 'b16 c16 d16 'b16 c16 d16
- |
- % 24
- 'g16 'b16 d16 'g16 'b16 d16 'g16 'b16 d16 'g16 'b16
- d16 |
- % 25
- 'g16 c16 e16 'g16 c16 e16 'g16 c16 e16 'g16 c16 e16
- |
- % 26
- 'g16 c16 f16 'g16 c16 f16 'g16 c16 f16 'g16 c16 f16
- |
- % 27
- 'g16 'b16 f16 'g16 'b16 f16 'g16 'b16 f16 'g16 'b16
- f16 |
- % 28
- 'a16 c16 fis16 'a16 c16 fis16 'a16 c16 fis16 'a16
- c16 fis16 |
- % 29
- 'g16 c16 g16 'g16 c16 g16 'g16 c16 g16 'g16 c16 g16
- |
- % 30
- 'g16 c16 f16 'g16 c16 f16 'g16 c16 f16 'g16 c16 f16
- |
- % 31
- 'g16 'b16 f16 'g16 'b16 f16 'g16 'b16 f16 'g16 'b16
- f16 |
- % 32
- 'g16 'ais16 e16 'g16 'ais16 e16 'g16 'ais16 e16
- 'g16 'ais16 e16 |
- % 33
- 'f16 'a16 c16 f16 c16 'a16 c16 'a16 'f16 'a16 'f16
- 'd16 'f16 'd16 |
- % 34
- g16 b16 d'16 f'16 d'16 b16 d'16 b16 g16 b16 d16 f16
- < { e16 } > < { f16 } > < { e16 } > < > < > d16 |
- % 35
- < { c'1 } { g1 } { e1 } >
-} % track1
-
-track2 = \melodic{
- % midi copyright:
- % instrument:
- % 1
- e4. e4.
- % 2:4*89/3840
- d4. d4.
- % 3:4*3/128
- d4. d4.
- % 4:4*89/3840
- e4. e4.
- % 5:4*29/1280
- e4. e4.
- % 6:4*29/1920
- d4. d4.
- % 7:4*79/3840
- d4. d4.
- % 8:4*83/3840
- c4. c4.
- % 9:4*29/1280
- c4. c4.
- % 10:4*5/192
- 'a4. 'a4.
- % 11:4*91/3840
- 'b4. 'b4.
- % 12:4*103/3840
- 'ais4. 'ais4.
- % 13:4*83/3840
- 'a4. 'a4.
- % 14:4*53/1920
- 'gis4. 'gis4.
- % 15:4*1/40
- 'g4. 'g4.
- % 16:4*91/3840
- 'f4. 'f4.
- % 17:4*23/960
- 'f4. 'f4.
- % 18:4*113/3840
- 'd4. 'd4.
- % 19:4*91/3840
- 'e4. 'e4.
- % 20:4*33/1280
- 'g4. < { 'c2 } > < { 'g4. } > ''f2
- % 21:4*11/384
- < { 'f4. } > ''f2 < { 'f4. } > ''fis2
- % 22:4*7/3840
- < { ''fis2 } { 'c2 } > < { 'c4. } > ''gis2
- % 23:4*39/1280
- < { ''gis2 } { 'f4. } > < { 'f4. } > ''g2
- % 24:4*59/1920
- < { ''g2 } { 'f4. } > < { 'f4. } > ''g2
- % 25:4*17/3840
- < { ''g2 } { 'e2 } > < { ''g2 } { 'e4. } >
- % 26:4*19/640
- < { ''g2 } { 'd4. } > < { ''g2 } { 'd2 } >
- % 27:4*1/1280
- < { 'd4. } > ''g2 < { ''g2 } { 'd4. } >
- % 28:4*101/3840
- < { 'dis4. } > ''g2 < { 'dis4. } > ''g2
- % 29:4*17/640
- < { 'e4. } > ''g2 < { 'e4. } > ''g2
- % 30:4*3/128
- < { 'd4. } > ''g2 < { 'd4. } > ''g2
- % 31:4*101/3840
- < { 'd4. } > ''g2 < { 'd4. } > ''c2
- % 32:4*47/1920
- < { 'c4. } > ''c2 < { 'c4. } > ''c1 < { 'c1 } >
- % 33:4*113/480
- < { ''c1 } { ''b1 } > < >
- % 34:4*113/480
- |
- % 35
- < { ''c1 } { 'c1 } >
-} % track2
-
-\score{
- \staff{ track0 }
- \staff{ track1 }
- \staff{ track2 }
-
- \paper{
- \unitspace 20\mm
- }\midi{
- \tempo 4:60
- }
-}
-% JS Bach, Das Wohltemperirtes Clavier I, Fuga II (c-minor)
%
-% Public Domain -- typed by by HWN
+% title: Das Wohltemperirte Clavier I, Fuga II (c-minor)
+% description:
+% composer(s): JS Bach
+% entered-by: HWN
+% copyright:Public Domain
%
+% Tested Features:stem direction, multivoice.
+%
+
\version "0.0.54";
global = \melodic{
\meter 4/4 ;
- \grouping 2*2;
\key bes es as;
}
[G F16 Es] [F8 D] [As G] r A |
[B c] [F16 Es D C] [C8 c16 B] [c8 G]|
[As c16 B] [c8 d] [G8 c16 B] [c8 d] |
- [F16 G] As4 [G16 F] E2. |
+ [F16 G] As4 [G16 F] E2 |
}
MAJOR_VERSION = 0
MINOR_VERSION = 0
-PATCH_LEVEL = 55
+PATCH_LEVEL = 57
# use to send patches, always empty for released version:
# include separator: ".postfix", "-pl" makes rpm barf
-MY_PATCH_LEVEL =
+MY_PATCH_LEVEL =
+/*
+ beam.cc -- implement Beam
+
+ source file of the LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ TODO
+
+ Less hairy code. Better slope calculations.
+ knee ([\stem 1; c8 \stem -1; c8]
+
+*/
+
#include "varray.hh"
#include "proto.hh"
left_pos *= dir_i_;
slope *= dir_i_;
- // URG
+ // ugh
Real sl = slope*paper()->internote();
paper()->lookup_l()->beam(sl, 20 PT);
slope = sl /paper()->internote();
/**
- this needs A LOT of rethinking.
-
generate springs between columns.
+ TODO: This needs A LOT of rethinking. Spacing should take optical
+ effects into account, should be local (measure wide), should check
+ smallest divisions.
+
+
*/
void
Score::calc_idealspacing()
for (int i=0; i < clash_l_arr_.size(); i++) {
Note_column* c_l = clash_l_arr_[i];
+ if (! c_l->dir_i_) {
+ warning ("No stem direction set. Ignoring column in clash. ");
+ continue;
+ }
int d = (c_l->dir_i_);
clash_group_arr_a[idx(d, c_l->h_shift_b_)].push(c_l);
}
+
for (int j=0; j < 4; j++) {
if (clash_group_arr_a[j].size() > 1) {
warning("Too many clashing notecolumns. Ignoring them.");
Crescendo::brew_molecule_p() const return m_p ;
{
Real x_off_dim=0.0;
- Real absdyn_dim = 10 PT; // UGR
+ Real absdyn_dim = 10 PT; // ugh
m_p = new Molecule;
Real w_dim = width().length();
#ifndef BAR_HH
#define BAR_HH
#include "item.hh"
-
-struct Bar: Item {
+/**
+ TODO: connections with pre and postbreak
+ */
+class Bar:public Item {
+public:
String type;
+ NAME_MEMBERS(Bar);
Bar(String type);
-NAME_MEMBERS(Bar);
+private:
void do_print() const;
Molecule*brew_molecule_p()const;
};
/*
- break.hh -- part of LilyPond
+ break.hh -- declare Break_algorithm
- (c) 1996,97 Han-Wen Nienhuys
+ source file of the LilyPond music typesetter
+
+ (c) 1996, 1997 Han-Wen Nienhuys <hanwen@stack.nl>
*/
+
#ifndef BREAK_HH
#define BREAK_HH
#include "varray.hh"
#include "colhpos.hh"
/** Class representation of an algorithm which decides where to put
- the column, and where to break lines. */
+ the column, and where to break lines.
+
+ TODO: a decent algorithm, based on dynamic programming or something
+ a like. A "parindent", caching of breakpoints
+
+ */
struct Break_algorithm {
PScore &pscore_;
Real linelength;
#include "lily-proto.hh"
#include "item.hh"
+/** TODO
+
+ multistaff support (see Chlapik: equal noteheads should be on the
+ same hpos.)
+*/
class Collision : public Item {
protected:
virtual void do_pre_processing();
typedef Interval_t<Moment> MInterval;
/** data structure which represents rhythmic units this is a tree. It groupes notes according to rules
+
+ TODO Documentation. Unhairing
*/
struct Rhythmic_grouping {
Array<Rhythmic_grouping*> children;
The quality is given by the total potential energy in the
springs. The lower the energy, the better the configuration.
+
+ TODO: make item widths work per pstaff.
+
*/
class Spacing_problem {
Array<Idealspacing const *> ideals;
#include "varray.hh"
#include "scalar.hh"
-struct Meter: Item {
+/**
+ TODO:
+
+ C style meters, 2+3+2/8 meters, alla breve.
+
+ */
+class Meter: public Item {
Array<Scalar> args;
/* *************** */
-NAME_MEMBERS(Meter);
-
- Meter(Array<Scalar> args) ;
+protected:
Molecule*brew_molecule_p() const;
+public:
+ Meter(Array<Scalar> args) ;
+ NAME_MEMBERS(Meter);
};
#endif // METER_HH
#define MIDIOUTPUT_HH
#include "lily-proto.hh"
+
struct Midi_output {
Midi_output(Score* score_l, Midi_def* );
Voice_element* get_rest_element(String,Duration *);
Voice_element* get_word_element(Text_def*, Duration*);
void set_last_duration(Duration const *);
+ void set_default_duration(Duration const *);
void set_duration_mode(String s);
friend int yyparse( void*);
public:
/** a struct for treating a group of noteheads (noteheads, stem
(chord) and scripts ) as a single entity. */
class Note_column : public Script_column {
+ /// link to the stem. For setting default direction
+ Stem * stem_l_;
+ void do_pre_processing();
public:
bool h_shift_b_;
/*
- paper-def.hh -- declare Paper_def
+paper-def.hh -- declare Paper_def
source file of the LilyPond music typesetter
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
*/
#include "moment.hh"
-/** symbols, dimensions and constants
+/**
+
+ symbols, dimensions and constants
This struct takes care of all kinds of symbols, dimensions and
constants. Most of them are related to the point-size of the fonts,
so therefore, the lookup table for symbols is also in here.
+ TODO:
+
+ add support for multiple fontsizes
+ split into "Input_paper_def" and Paper_def
+ add support for other len->wid conversions.
*/
class Paper_def {
Lookup *lookup_p_;
source file of the LilyPond music typesetter
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ TODO
+ integrate Meter handling, to guarantee proper creation of staff_columns.
*/
/**
Remove #reg_l# from the list, and return it.
*/
- Request_register * get_register_p(Request_register*reg_l);
+ virtual Request_register * get_register_p(Request_register*reg_l);
virtual void set_feature(Feature i);
virtual bool acceptable_request_b(Request*)const;
virtual void pre_move_processing();
/*
- register.hh -- part of LilyPond
+ register.hh -- declare Request_register
- (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
+ source file of the LilyPond music typesetter
+
+ (c) 1996, 1997 Han-Wen Nienhuys <hanwen@stack.nl>
*/
+
#ifndef REGISTER_HH
#define REGISTER_HH
source file of the LilyPond music typesetter
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+
*/
/**
walk through the score_columns, and while doing so, walk all staffs in a score.
+
+ TODO
+ support for vertical spanners.
*/
class Score_walker : public PCursor<Score_column *>
{
#define STEMBEAMREG_HH
#include "register.hh"
-struct Stem_beam_register : Request_register {
+/**
+ TODO:
+ override default_grouping if setting a n-plet
+
+ */
+class Stem_beam_register : public Request_register {
Stem * stem_p_;
Beam * beam_p_;
Beam_req * beam_req_l_;
bool end_beam_b_;
Rhythmic_grouping *current_grouping;
int default_dir_i_;
-
+public:
/* *************** */
+ NAME_MEMBERS(Stem_beam_register);
Stem_beam_register();
+
+protected:
~Stem_beam_register();
virtual void set_feature(Feature dir_i_);
virtual bool try_request(Request*);
virtual void acknowledge_element(Staff_elem_info);
virtual void pre_move_processing();
virtual void post_move_processing();
- NAME_MEMBERS(Stem_beam_register);
};
#endif // STEMBEAMREG_HH
(c) 1996,97 Han-Wen Nienhuys
*/
-#ifndef TEXTDEF_HH
-#define TEXTDEF_HH
+#ifndef TEXT_DEF_HH
+#define TEXT_DEF_HH
#include "string.hh"
#include "proto.hh"
#include "input.hh"
-struct Text_def : Input {
+class Text_def : public Input {
+public:
+ /**
+ centered , or aligned?
+
+ -1 = raggedright, 0 = center, 1 = raggedleft
+ */
int align_i_;
+ Paper_def* pdef_l_;
String text_str_;
String style_str_;
bool compare(const Text_def&);
Text_def();
virtual void print() const;
- virtual Atom create_atom(Paper_def*) const;
+ Atom create_atom() const;
+ Interval width() const;
};
-#endif // TEXTDEF_HH
+#endif // TEXT_DEF_HH
/*
- text.hh -- part of LilyPond
+ text-item.hh -- part of LilyPond
(c) 1996,97 Han-Wen Nienhuys
*/
*/
class Text_item : public Item ,public Staff_side{
void init(Text_def* tdef_l);
- Text_def* tdef_p_;
-
+
public:
Text_def * tdef_l();
+ Text_def const* tdef_c_l();
int pos_i_;
-
+
+ /// do I have width?
+ bool fat_b_;
+
/* ***************/
- Text_item(Text_def*);
- Text_item(Text_req*);
- ~Text_item();
+ Text_item(Text_def*,int dir=0);
+ virtual ~Text_item();
NAME_MEMBERS(Text_item);
+
protected:
+ Text_def* tdef_p_;
+
virtual void set_default_index();
- Molecule* brew_molecule_p() const;
+ virtual Molecule* brew_molecule_p() const;
virtual void do_post_processing();
virtual void do_pre_processing();
};
virtual void post_move_processing();
virtual bool try_request(Request*);
public:
-
+ void OK() const;
virtual Request_register * get_register_p(Request_register * reg_l);
/// each group in a staff has an unique ID.
String group_id_str_;
/// The pointers are in the base class. This is just administration
- Array<Voice_registers*> voice_regs_l_;
+ Array<Voice_registers*> voice_reg_l_arr_;
/* *************** */
NAME_MEMBERS(Voice_group_registers);
class Voice_registers : public Register_group_register {
Input_register const *ireg_C_;
+ bool terminate_b_;
public:
Voice *voice_l_;
/* *************** */
+ Voice_registers(Voice*, Input_register const*);
NAME_MEMBERS(Voice_registers);
+protected:
+ virtual void pre_move_processing();
virtual bool acceptable_request_b(Request*);
virtual void acknowledge_element(Staff_elem_info info);
virtual bool try_request(Request*);
- Voice_registers(Voice*, Input_register const*);
virtual void do_print() const;
};
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
- todo: key undo
+
+ Todo: key undo, special keys.
*/
#include "key-reg.hh"
+/*
+ key.cc -- implement Key, Octave_key
+
+ source file of the LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ TODO
+ transposition.
+*/
+
#include "key.hh"
const int OCTAVES=14; // ugh..
KEYWORD \\{WORD}
WHITE [ \n\t\f]
BLACK [^ \n\t\f]
-RESTNAME r
+RESTNAME [rs]
NOTECOMMAND \\{WORD}
DOTS \.+
LYRICS {AA}[^0-9 \t\n\f]*
source file of the LilyPond music typesetter
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ TODO
+ This doth suck. We should have PS output, and read spacing info from TFMs
+
+ Glissando, bracket
+
*/
#include "lookup.hh"
Symbol s = (*symtables_)("align")->lookup(dir);
s.tex = substitute_args(s.tex,a);
- s.dim.y = tsym.dim.y;
+ s.dim = tsym.dim;
return s;
}
#include "lyric-register.hh"
#include "musical-request.hh"
#include "text-item.hh"
+#include "paper-def.hh"
+#include "lookup.hh"
Lyric_register::Lyric_register()
{
-
}
bool
{
Text_item * last_item_l =0;
for (int i=0; i < lreq_arr_.size(); i++) {
- Text_item *lp = new Text_item(lreq_arr_[i]);
+ Text_item *lp = new Text_item(lreq_arr_[i]->tdef_p_ );
lp->dir_i_ = -1;
+ lp->fat_b_ = true;
if (last_item_l)
lp->add_support(last_item_l);
last_item_l = lp;
source file of the LilyPond music typesetter
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>, Jan Nieuwenhuizen <jan@digicash.com>
+
+ TODO
+
+ Ideally this should also use a register system, to process slurs,
+ dynamics, etc.
+
*/
#include "command-request.hh"
last_duration_mode = (s== "LAST");
}
+void
+My_lily_parser::set_default_duration(Duration const *d)
+{
+ last_duration_mode = false;
+ default_duration_ = *d;
+}
+
+
void
My_lily_parser::set_last_duration(Duration const *d)
{
}
Voice_element *
-My_lily_parser::get_rest_element(String, Duration * duration_p )
+My_lily_parser::get_rest_element(String s, Duration * duration_p )
{
Voice_element* velt_p = new Voice_element;
velt_p->set_spot( here_input());
- Rest_req * rest_req_p = new Rest_req;
- rest_req_p->duration_ = *duration_p;
- rest_req_p->set_spot( here_input());
-
- velt_p->add(rest_req_p);
-
+ if (s=="s") { /* Space */
+ Skip_req * skip_p = new Skip_req;
+ skip_p->duration_ = duration_p->length();
+ skip_p->set_spot( here_input());
+ velt_p->add(skip_p);
+ }
+ else {
+ Rest_req * rest_req_p = new Rest_req;
+ rest_req_p->duration_ = *duration_p;
+ rest_req_p->set_spot( here_input());
+
+ velt_p->add(rest_req_p);
+ }
Stem_req * stem_p = new Stem_req;
stem_p->duration_ = *duration_p;
stem_p->set_spot ( here_input ());
velt_p->add(stem_p);
+
delete duration_p;
return velt_p;
}
IMPLEMENT_STATIC_NAME(Note_column);
-
void
Note_column::add(Stem*stem_l)
{
+ stem_l_ = stem_l;
add_support(stem_l);
}
Note_column::Note_column()
{
+ stem_l_ = 0;
h_shift_b_ =false;
dir_i_ =0;
}
head_l_arr_.top()->position_i_);
}
+
+
+void
+Note_column::do_pre_processing()
+{
+ if (!dir_i_)
+ dir_i_ = stem_l_->dir_i_;
+}
+/*
+ paper-def.cc -- implement Paper_def
+
+ source file of the LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
#include <math.h>
#include "misc.hh"
#include "paper-def.hh"
delete $2;
}
| DURATIONCOMMAND notemode_duration {
- THIS->default_duration_ = *$2;
+ THIS->set_default_duration($2);
delete $2;
}
| OCTAVECOMMAND {
{
int staff_i = 0;
last_= 0;
- Moment min_staff_last_mom=1e8; // UGH
+ Moment min_staff_last_mom=1e8; // ugh
for (iter_top(l, i); i.ok(); i++, staff_i++) {
Moment staff_last=0;
for (iter_top(i->voice_list_,j); j.ok(); j++) {
+/*
+ qlpsolve.cc -- implement Active_constraints, Inactive_iter
+
+ source file of the LilyPond music typesetter
+
+ (c) 1996, 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ TODO:
+ try fixed point arithmetic, to speed up lily.
+ */
+
#include "qlpsolve.hh"
#include "const.hh"
#include "debug.hh"
void
Register_group_register::set_feature(Feature d)
{
- for (iter_top(reg_list_, i); i.ok(); i++) {
- i->set_feature(d);
+ iter_top(reg_list_, i);
+ while (i.ok()) {
+ // this construction to ensure clean deletion
+ Request_register *reg_l = i++;
+ reg_l->set_feature(d);
}
}
void
Register_group_register::pre_move_processing()
{
- for (iter_top(reg_list_, i); i.ok(); i++)
- i->pre_move_processing();
+ iter_top(reg_list_, i);
+ while (i.ok()) {
+ // this construction to ensure clean deletion
+ Request_register *reg_l = i++;
+ reg_l->pre_move_processing();
+ }
}
void
Register_group_register::process_requests()
{
- for (iter_top(reg_list_, i); i.ok(); i++)
- i->process_requests();
+ iter_top(reg_list_, i);
+ while (i.ok()) {
+ // this construction to ensure clean deletion
+ Request_register *reg_l = i++;
+ reg_l->process_requests();
+ }
}
void
if (ok() && ptr()->when() == last)
PCursor<Score_column *>::operator++(0);
reinit();
- bool last_b = (!ok()); // urgh
+ bool last_b = (!ok()); // ughh
for (int i=0; i< walker_p_arr_.size(); i++) {
if (walker_p_arr_[i]->ok() &&
(last_b || walker_p_arr_[i]->when() < when())) {
void
Script::set_default_index()
{
- pos_i_ = get_position_i();
+ pos_i_ = get_position_i(symbol().dim.y);
}
Interval
/*
TODO:
+
think about crossing stems.
+ Begin and end should be treated as a Script.
+
*/
#include "slur.hh"
#include "scalar.hh"
Staff_side::get_position_i(Interval sym_dim) const
{
int i= get_position_i();
- return i+ int(rint(- sym_dim[dir_i_] / inter_f_));
+ return i+ int(rint(- sym_dim[-dir_i_] / inter_f_));
}
if (!span_p_ && !last_mom_) {
span_p_= new Staff_symbol(NO_LINES);
span_p_->left_col_l_ =
- get_staff_info().command_pcol_l()->postbreak_p_; // GUH
+ get_staff_info().command_pcol_l()->postbreak_p_; // ugh
}
if (!last_mom_) {
last_mom_ = get_staff_info().score_l()->last();
iter_top(cols_, i);
iter_top(cols_, j);
i++;
- for (; i.ok(); j++,i++) {
- assert(j->when () < i->when() );
- }
assert(score_l_);
#endif
}
set_default_dir();
- // uhh... how about non 5-line staffs?
+ // ugh... how about non 5-line staffs?
if ((max_head_i() < -2 && dir_i_ == 1 )
||(min_head_i() > staff_size_i_ + 2 && dir_i_ == -1) ){
set_stemend( staff_size_i_ /2 );
Stem::brew_molecule_p()const
{
Molecule *out =0;
+ if (invisible_b() && ! rest_l_arr_.size())
+ warning("Empty stem. Ugh!");
+
if ( invisible_b() )
return Staff_elem::brew_molecule_p();
Real bot = stem_bottom_f_;
Real top = stem_top_f_;
- if (min_head_i() > max_head_i()) {
- warning("Empty stem. Ugh!");
- bot = -10;
- top = 20;
- }
-
+
assert(bot!=top);
Paper_def *p =paper();
#include "paper-def.hh"
#include "molecule.hh"
#include "text-def.hh"
+#include "dimen.hh"
+
+Interval
+Text_def::width() const
+{
+ Atom a = create_atom();
+
+ Real guess_width_f = text_str_.length_i() * a.sym.dim.x.length(); // ugh
+ Interval i(0, guess_width_f);
+ i += - (align_i_ + 1)* i.center();
+ return i;
+}
+
Text_def::Text_def()
{
- align_i_ = 1; // right
+ align_i_ = -1; // right
+ pdef_l_ = 0;
style_str_ = "roman";
}
bool
}
Atom
-Text_def::create_atom(Paper_def*p) const
+Text_def::create_atom() const
{
- return p->lookup_l()->text(style_str_, text_str_, -align_i_);
+ return pdef_l_->lookup_l()->text(style_str_, text_str_, -align_i_);
}
void
/*
- textitem.cc -- implement Text_item
+ text-item.cc -- implement Text_item
source file of the LilyPond music typesetter
#include "molecule.hh"
#include "lookup.hh"
-Text_item::Text_item(Text_def *tdef_l)
+Text_item::Text_item(Text_def *tdef_l, int d)
: Staff_side(this)
{
- dir_i_ =-1;
- init(tdef_l);
+ dir_i_ = d;
+ fat_b_ = false;
+ tdef_p_ = new Text_def(*tdef_l);
+ pos_i_ =0;
}
Text_def*
delete tdef_p_;
}
-void
-Text_item::init(Text_def *tdef_l)
-{
- tdef_p_ = new Text_def (*tdef_l);
-}
-
-Text_item::Text_item(Text_req* treq_l)
- : Staff_side(this)
-{
- init(treq_l->tdef_p_);
- dir_i_ = treq_l->dir_i_;
- if (!dir_i_)
- dir_i_ = -1;
-}
-
void
Text_item::set_default_index()
{
- pos_i_ = get_position_i(tdef_p_->create_atom(paper()).extent().y );
+ pos_i_ = get_position_i(tdef_p_->create_atom().extent().y );
}
void
{
if (!dir_i_)
dir_i_ = -1;
+ tdef_p_->pdef_l_ = paper();
}
void
Molecule*
Text_item::brew_molecule_p() const
{
- Molecule* mol_p = new Molecule(tdef_p_->create_atom(paper()));
+ Atom a(tdef_p_->create_atom());
+
+ if ( fat_b_)
+ a.sym.dim.x = tdef_p_->width();
+
+ Molecule* mol_p = new Molecule(a);
if(dir_i_<0 ) // should do something better anyway.
mol_p->translate(Offset(0, -mol_p->extent().y.left ));
Text_register::process_requests()
{
if (text_req_l_) {
- text_p_ = new Text_item(text_req_l_); // UGH
+ text_p_ = new Text_item(text_req_l_->tdef_p_, 0); // ugh
announce_element(Staff_elem_info(text_p_, text_req_l_));
}
}
Molecule*
Text_spanner::brew_molecule_p() const
{
- Atom tsym (spec.create_atom(paper()));
+ Atom tsym (spec.create_atom());
tsym.translate(text_off_);
Molecule*output = new Molecule;
right_col_l_ = support->right_col_l_;
left_col_l_ = support->left_col_l_;
assert(left_col_l_ && right_col_l_);
+ spec.pdef_l_ = paper();
}
Interval
Voice_element::Voice_element(Voice_element const&src)
: Input(src)
{
+ principal_req_l_ = 0;
voice_C_=0;
for (iter_top(src.req_p_list_, i); i.ok(); i++)
add(i->clone());
{
ireg_C_ =ireg_C;
Register_group_register::add(ireg_C->get_nongroup_p_arr());
- if (id=="") // UGH
+ if (id=="") // ugh
id = __FUNCTION__ + String(temp_id_count++);
group_id_str_ = id;
termination_mom_ = 0;
bool
Voice_group_registers::try_request(Request*r_l)
{
- for (int i=0; i < voice_regs_l_.size(); i++) {
- if (voice_regs_l_[i]->voice_l_ == r_l->voice_l())
+ for (int i=0; i < voice_reg_l_arr_.size(); i++) {
+ if (voice_reg_l_arr_[i]->voice_l_ == r_l->voice_l())
goto gotcha; // yeah, yeah, I know
}
return false;
Register_group_register::add(r_l);
if (r_l->name() == Voice_registers::static_name()) {
Voice_registers * vregs_l = (Voice_registers*)r_l;
- voice_regs_l_.push( vregs_l );
+ voice_reg_l_arr_.push( vregs_l );
Voice *v_l = vregs_l->voice_l_;
termination_mom_ = termination_mom_ >? v_l -> last();
mtor << "adding Voice_registers, now terminating at " <<
termination_mom_<< "\n";
}
+ OK();
}
void
if ( get_staff_info().time_C_ ->when_ > termination_mom_ ){
mtor << "Terminating voice_group\n";
daddy_reg_l_->terminate_register(this);
+ return ;
}
Register_group_register::post_move_processing();
}
Voice_group_registers::get_register_p(Request_register *reg_l)
{
if (reg_l->name() == Voice_registers::static_name()) {
- for (int i=0; i <voice_regs_l_.size(); i++) {
- if (reg_l == voice_regs_l_[i])
- voice_regs_l_.del(i);
+ for (int i=0; i <voice_reg_l_arr_.size(); i++) {
+ if (reg_l == voice_reg_l_arr_[i])
+ voice_reg_l_arr_.del(i);
}
}
- return Register_group_register::get_register_p(reg_l);
+ Request_register*reg_p =Register_group_register::get_register_p(reg_l);
+ OK();
+
+ return reg_p;
+}
+
+void
+Voice_group_registers::OK() const
+{
+ for (int i=0; i < voice_reg_l_arr_.size(); i++) {
+ iter(reg_list_.find(voice_reg_l_arr_[i]), j);
+ assert(j.ok());
+ }
}
+
+
Voice_registers::Voice_registers(Voice *v_p, Input_register const*ireg_C)
{
+ terminate_b_ = false;
ireg_C_ = ireg_C;
voice_l_ = v_p;
add(ireg_C->get_nongroup_p_arr());
Command_req *c=r_l->command();
if (c&&c->terminate()) {
- daddy_reg_l_->terminate_register(this);
+ terminate_b_ = true;
return true; // scary. We're deleted now..
} else if (c&&c->groupchange()) {
/* this is scary as well. The groupchange has to be handled by
assert(daddy_reg_l_->name() == Voice_group_registers::static_name());
((Staff_registers*)daddy_reg_l_->daddy_reg_l_)-> // scary.
change_group(c->groupchange(), this,
- (Voice_group_registers*)daddy_reg_l_); // UGR!
+ (Voice_group_registers*)daddy_reg_l_); // ugh!
return true;
}
Register_group_register::do_print();
#endif
}
+
+void
+Voice_registers::pre_move_processing()
+{
+ if (terminate_b_)
+ daddy_reg_l_->terminate_register(this);
+ else
+ Register_group_register::pre_move_processing();
+}
# so why does make still consider xx.y : RCS/xx.y,v ?
# there is no suffix ,v anymore!
-.SUFFIXES: .cc .o .hh .y .l .pod .txt .1 .dep .html
+.SUFFIXES: .cc .o .hh .y .l .pod .text .1 .dep .html
# compile rules:
INSTALL.text: check-doc-deps
rm -f INSTALL.text
- ln `find -name INSTALL.text|head -1` .
+ ln `$(FIND) ./ -name INSTALL.text|head -1` .
localdistclean:
rm -rf Makefile $(lily-version) $(flower-version) $(mi2mu-version) .b $(build) *~ $(allout) $(allgen) config.cache config.status
Begin3
Title: LilyPond
-Version: 0.0.56
-Entered-date: 04/23/97
+Version: 0.0.57
+Entered-date: 04/28/97
Description: 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
jan@digicash.com (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: pcnov095.win.tue.nl /pub/lilypond/
- 300k lilypond-0.0.56.tar.gz
+ 300k lilypond-0.0.57.tar.gz
Alternate-site:
Original-site:
Platform: unix/win32, GNU C++
Name: lilypond
-Version: 0.0.56
+Version: 0.0.57
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.56.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.57.tar.gz
Summary: A preprocessor to make TeX typeset music.
URL: http://www.stack.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@stack.nl>
strip bin/lilypond bin/mi2mu
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/error.text Documentation/out/examples.text Documentation/out/faq.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilypond.text Documentation/out/mudela.text input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/error.ly input/fugue1.midi.ly input/kortjakje.ly input/maartje.ly input/martien.ly input/martien.tex input/mlalt.ly input/mlcello.ly input/mlvio1.ly input/mlvio2.ly input/plet.ly input/pre1.midi.ly input/rhythm.ly input/scales.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/standchen.ly input/standchen.tex input/twinkle.ly input/wohltemperirt.ly Documentation/lelie_logo.gif
+%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/error.text Documentation/out/examples.text Documentation/out/faq.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilypond.text Documentation/out/mi2mu.text Documentation/out/mudela.text input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/error.ly input/header.ly input/kortjakje.ly input/rhythm.ly input/scales.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/standchen.ly input/standchen.tex input/twinkle.ly input/wohltemperirt.ly Documentation/lelie_logo.gif
/usr/bin/convert-mudela
/usr/bin/lilypond
/usr/lib/libflower.so
-\font\musicfont=musix20
+\font\musicfont=cmsy10
\font\slurfont=xslu16
\def\thefont{\musicfont}
%%
%% include file for LilyPond
+%%
+%% this file defines various macros to accomodate lilypond output
\def\mdef#1#2{\def#1{\mchar{#2}}}
\def\mchar#1{\musicfnt\char#1}
\def\maccentdef#1#2#3{\def#1{\maccentraise{\mchar{#2}}{#3}}}
\def\vcenter#1{\vbox to 0pt{\vss #1\vss}}
+\def\mathdef#1#2{\def#1{\mathchar{#2}}}
+% \def\mathchar#1{\mathfnt\char#1}
+\def\mathchar#1{$#1$}
+\def\mathaccentraise#1#2{\dimen0=\noteheight
+ \rationalmultiply\dimen0*#2%
+ \raise\dimen0\hbox{#1}}
+\def\mathaccentdef#1#2#3{\def#1{\mathaccentraise{\mathchar{#2}}{#3}}}
+
\def\topalign#1{\vbox to 0pt{#1\vss}}
\def\botalign#1{\vbox to 0pt{\vss #1}}
\font\hslurdfont=xslhd16
\font\hslurhfont=xslhz20
\font\musicfnt=musix16
- \font\dynfont=cmbxti10
+ \font\dynfont=cmbxti12
\font\musicdraw=musixsps
\balkhoog=16pt
\staffrulethickness=0.4pt
}
% \def\dyn{\italicfont}
\def\dyn{\dynfont}
-\def\dynf{f\kern-.1ex}
-\def\dynm{f\kern-.15ex}
-\def\dynp{p\kern-.15ex}
+\def\kdynf{\dynfont f\kern-.1ex}
+\def\kdynm{\dynfont f\kern-.15ex}
+\def\kdynp{\dynfont p\kern-.15ex}
-\def\dynppp{\dynfont\dynp\dynp p}
-\def\dynpp{\dynfont\dynp p}
+\def\dynppp{\dynfont\dynp\kdynp p}
+
+\def\dynpp{\dynfont p\kdynp}
\def\dynp{\dynfont p}
-\def\dynmp{\dynfont\dynm p}
-\def\dynmf{\dynfont\dynm f}
+\def\dynmp{\dynfont m\kdynp}
+\def\dynmf{\dynfont m\kdynf}
\def\dynf{\dynfont f}
-\def\dynff{\dynfont\dynf f}
-\def\dynfff{\dynfont\dynf\dynf f}
+\def\dynff{\dynfont f\kdynf}
+\def\dynfff{\dynfont f\kdynf \kdynf}
\def\slurcharh#1{{\slurhfont\char#1}}
\def\slurcharu#1{{\slurufont\char#1}}
\maccentdef\fermata{80}{-1/1}
\maccentdef\ifermata{81}{1/1}
-
-
\mdef\spicato{28}
\mdef\ispicato{29}
\mdef\upbow{23}
\mdef\downbow{22}
\mdef\portato{26}
+% \mathdef\heel\cup % "225B
+% \mathdef\toe\wedge % "225E
+\mathaccentdef\heel\cup{-1/1}
+\mathaccentdef\toe\wedge{-1/1}
+
\def\stem#1#2{\vrule height#2 depth-#1}
\def\placebox#1#2#3{%