characters. If code(word) is encountered, LilyPond first checks for a
notename of code(word). If no notename is found, then code(word) is
treated as a string. If you mistype a notename, the parser will most
-likely complain that you should be in code(\lyric) mode to do lyrics.
+likely complain that you should be in code(\lyrics) mode to do lyrics.
dit(Lyric mode) Lyrics mode is introduced by the keyword
-code(\lyric). This mode is has rules that make it easy to include
+code(\lyrics). This mode is has rules that make it easy to include
punctuation and diacritical marks in words. A word in Lyrics mode
begins with: an alphabetic character, code(_),
code(?), code(!), code(:), code('),
c''-\trill
c''-\prall c''-\mordent c''-\prallprall c''-\prallmordent
c''-\upprall c''-\downprall }
- \type Lyrics \lyric{
+ \type Lyrics \lyrics{
accent marcato staccatissimo fermata stopped
staccato tenuto upbow downbow lheel rheel ltoe rtoe turn
open flageolet reverseturn
In order to instruct LilyPond to write lyrics underneath the
staff, you must enter the lyrics context with code(\type Lyrics).
-Lyrics should be entered in lyrics mode which is entered with code(\lyric).
+Lyrics should be entered in lyrics mode which is entered with code(\lyrics).
Spaces can be introduced into a lyric either by using quotes (code("))
or by using an underscore without quotes: code(He_could4 not4). All
mudela(verbatim)(\score{
< \notes \transpose c'' {c d e c | c d e c | e f g'2 |
e'4 f g'2 \bar "|."; }
- \type Lyrics \lyric {
+ \type Lyrics \lyrics {
DOEXPAND(Fr\)`e-4 re Ja- que DOEXPAND(Fr\)`e- re Ja- que
Dor- mez vous?2 Dor-4 mez vous?2 }
>
Specify an arbitrary key signature. The pitches from var(pitch) will
be printed in the key signature in the order that they appear on the list.
-dit(code(\lyric) var(lyriclist)) Parse var(lyriclist) in lyrics mode.
+dit(code(\lyrics) var(lyriclist)) Parse var(lyriclist) in lyrics mode.
dit(code(\maininput)) Internal command. This command is used for creating init
files like file(init.fly) that read the user file into the middle of another
durations. Previously we only entered note names, so for entering
lyrics we have to instruct LilyPond that what we enter are not note
names but words---or rather: strings. This instruction is the keyword
-code(\lyric). After entering this keyword you can enter a musical
+code(\lyrics). After entering this keyword you can enter a musical
construct---sequential music, simultaneous music, code(\type)
entries, etc.--- but with syllables in stead of pitches. For example:
-verb( \lyric { 'got8 me on my knees4, Le-8 lie! })
+verb( \lyrics { 'got8 me on my knees4, Le-8 lie! })
-The effect of code(\lyric) can be compared with the effect of the
+The effect of code(\lyrics) can be compared with the effect of the
doublequote character, code("), for it also changes the lexical
meaning of spaces and characters. This mode is another example of a
handy input feature of the language.
the code(\type) keyword. Here is a simple example:
mudela(fragment,verbatim)(
- \type Lyrics \lyric { 'got8 me on my knees,4 Le-8 lie! })
+ \type Lyrics \lyrics { 'got8 me on my knees,4 Le-8 lie! })
The result is technically more or less correct, but without a melody it
just doesn't work, so let's add a blob of cream:
mudela(fragment,verbatim)(
<
\type Staff { c''8. c''16 bes'8. a'16 g'4 f'8 g'4. }
- \type Lyrics \lyric { 'got8. me16 on8. my16 knees,4 Le-8 lie!4. }
+ \type Lyrics \lyrics { 'got8. me16 on8. my16 knees,4 Le-8 lie!4. }
>
)
the following example:
COMMENT( urg
-\type Lyrics \lyric { 'got_m\textbf{e}4 on8. m$\cal_Y$16 knees,4 Le-8 lie!4.}
-\type Lyrics \lyric { 'got_m{\bf e}4 on8. m$\cal_Y$16 knees,4 Le-8 lie!4.}
+\type Lyrics \lyrics { 'got_m\textbf{e}4 on8. m$\cal_Y$16 knees,4 Le-8 lie!4.}
+\type Lyrics \lyrics { 'got_m{\bf e}4 on8. m$\cal_Y$16 knees,4 Le-8 lie!4.}
)
mudela(fragment,verbatim)(<
\type Staff { c''8. c''16 bes'8. a'16 g'4 f'8 g'4. }
- \type Lyrics \lyric { 'got_me4 on8. m$\cal_Y$16 "3s,"4 Le-8 lie!4.}
+ \type Lyrics \lyrics { 'got_me4 on8. m$\cal_Y$16 "3s,"4 Le-8 lie!4.}
>
)
The paper part also contains
the definition of the contexts.
-The keyword code(\notes) is analogous to the code(\lyric) keyword. It
+The keyword code(\notes) is analogous to the code(\lyrics) keyword. It
will switch the tokenizer into a mode that interprets plain words as
note names. If it can't recognize the words as a note name, it will
assume that they are strings. That is the reason why you can write
-pl 14.jcn1
- - moved most ugly lookup stuff
- - {Ps,Tex}_{def,score}.{cc,hh}
+pl 15
+pl 14.hwn1
+ - \lyrics iso \lyric (mudela 1.0.7)
+ - cleaned up real_expression syntax.
+ - removed optional_semicolon nonterminal after toplevel assignment
+ - MInterval Music::time_int () -> Moment Music::duration ()
+ - junked Music_iterator::daddy_iter_l_
+ - junked Sequential_music::offset_mom_
+ - tempo compression:
+ * syntax: \times 2/3 Music
+ * Compressed_music, Compressed_music_iterator
+ - flower: init rational to 0
+ - flower: removed P?Cursor<>::P?Cursor (), using pointer iso ref now.
+ - don't install into TeX, but into ${datadir}/{mf,tex,ly} (todo: ps)
+
*********
pl 14
pl 13.uu1
+ - syntax for \translator: (\name "Name")
- bfs for footer
- bf: init/{book,center}-fragment.ly, YODL nofooter stuff.
- bf: redeclaration
BUGS:
+
+
+ * formatting of input stuff.
- +
- > \notes{ a \< b \cr }
- >
- > work but
- >
- > \notes{ a \< b \! }
- >
- > give a parse error?
+ * use real RTTI iso access_Stuff.
+ * \notes{ a \< b \cr } vs \notes{ a \< b \! }
* if possible, it might be nice for a warning to appear if someone does
- > \translator with no name and without assigning it to an
-identifier. possible, it might be nice for a warning to appear if
-someone does
- > \translator with no name and without assigning it to an
-identifier.
+ \translator with no name and without assigning it to an
+ identifier.
* space after bars?
* [/3 c8 c16 c c c]/1
+ * I see that \prallprall and \prallmordent are identical. I think this is a
+ mistake, that \prallprall should not have the vertical line.
+ This can be fixed by removing the line
+ draw_mordent(twidth-0.5toverlap);
+ from the definition of \prallprall in mf/feta-slag.mf (see below)
+
* fix singleStaffBracket
* repeat bars: need distance after ":|" and before "|:"
- - The time signature warnings still remain, will be fixed later.
-
- * fix \n after proccing
+ * The time signature warnings still remain, will be fixed later.
- Summary of minor spelling irregularities:
-> capitalization/use of underscores in property names
-> \lyric vs \notes \lyric vs \type Lyrics (\lyric should have an -s)
+ Summary of minor spelling irregularities:
+ - capitalization/use of underscores in property names
* fix Score.skipBars
* fix marks/barnumbers/marginal notes
-****
-
- > lbheel = \script { "bheel" 0 0 -1 0 0 }
-> rbheel = \script { "bheel" 0 0 1 0 0 }
-> lbtoe = \script { "btoe" 0 0 -1 0 0 }
-> rbtoe = \script { "btoe" 0 0 1 0 0 }
-> lfheel = \script { "fheel" 0 0 -1 0 0 }
-> rfheel = \script { "fheel" 0 0 1 0 0 }
-> lftoe = \script { "ftoe" 0 0 -1 0 0 }
-> rftoe = \script { "ftoe" 0 0 1 0 0 }
->
-> and also
->
-> portato= \script { "portato" 0 -1 0 1 0 }
+ * broken scripts:
+ lbheel = \script { "bheel" 0 0 -1 0 0 }
+ rbheel = \script { "bheel" 0 0 1 0 0 }
+ lbtoe = \script { "btoe" 0 0 -1 0 0 }
+ rbtoe = \script { "btoe" 0 0 1 0 0 }
+ lfheel = \script { "fheel" 0 0 -1 0 0 }
+ rfheel = \script { "fheel" 0 0 1 0 0 }
+ lftoe = \script { "ftoe" 0 0 -1 0 0 }
+ rftoe = \script { "ftoe" 0 0 1 0 0 }
+
+ and also
+
+ portato= \script { "portato" 0 -1 0 1 0 }
* MIDI spelling.
- * foo = 1
-
- \score{
- \notes { a }
- \paper{ foo = \translator{ \StaffContext}; }
- }
-
* Align_element::padding ?
* uniformise property names.
* typo checks on property names?
- * egcs-1.1 support
-
* make engraver hacking robust.
* use streambufs and iostream
* zip target for binary windows dist (JBR)
- * text continuationss
+ * text continuations
* revise documentation
* junking \skip req in lyrics
* Language:
- - general plet mechanism.
-
- \plet 2/3 { c8 c8 c8 }
-
- ie.
-
- Music: PLET int '/' int Music
-
- \type -> \context ?
- \translator -> ?
- fix \partial
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=0
-PATCH_LEVEL=14
-MY_PATCH_LEVEL=tca1
+PATCH_LEVEL=15
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
--- /dev/null
+#!/bin/sh
+
+
+# set environment for LilyPond. To be installed in /etc/profile.d/
+
+LILYINCLUDE="@datadir@/ly"
+MFINPUTS="@datadir@/mf:"${MFINPUTS:=":"}
+TEXINPUTS="@datadir@/tex:"${TEXINPUTS:=":"}
+
+# todo: GS stuff
+
+export LILYINCLUDE MFINPUTS TEXINPUTS
+
+# echo $LILYINCLUDE $MFINPUTS $TEXINPUTS
+
+
with-localedir=LOCALE use LOCALE as locale dir. Default: PREFIX/share/locale "
ac_help="$ac_help
with-lang=LANG use LANG as language to emit messages"
-ac_help="$ac_help
- enable-tex-prefix=DIR set the tex-directory to find TeX subdirectories. (default: PREFIX)"
-ac_help="$ac_help
- enable-tex-dir=DIR set the directory to put $PACKAGE_NAME TeX files in. "
-ac_help="$ac_help
- enable-mf-dir=DIR set the directory to put $PACKAGE_NAME MetaFont files in. "
# Initialize some variables set by options.
# The variables have the same names as the options, with
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:713: checking host system type" >&5
+echo "configure:707: checking host system type" >&5
host_alias=$host
case "$host_alias" in
# 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:738: checking for $ac_word" >&5
+echo "configure:732: 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:772: checking for $ac_word" >&5
+echo "configure:766: 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:809: checking for $ac_word" >&5
+echo "configure:803: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_TAR'+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:843: checking for $ac_word" >&5
+echo "configure:837: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_BASH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "${PYTHON:-python}", so it can be a program name with args.
set dummy ${PYTHON:-python}; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:876: checking for $ac_word" >&5
+echo "configure:870: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1092: checking for $ac_word" >&5
+echo "configure:1086: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1121: checking for $ac_word" >&5
+echo "configure:1115: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1169: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1163: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 1179 "configure"
+#line 1173 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cc_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 ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1203: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1197: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1208: checking whether we are using GNU C" >&5
+echo "configure:1202: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1217: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1232: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1226: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:1289: checking how to run the C++ preprocessor" >&5
+echo "configure:1283: 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 1302 "configure"
+#line 1296 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1307: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1301: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; 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:1338: checking for $ac_word" >&5
+echo "configure:1332: 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:1369: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1363: 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 1379 "configure"
+#line 1373 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1377: \"$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:1403: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1397: 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:1408: checking whether we are using GNU C++" >&5
+echo "configure:1402: 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:1417: \"$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:1411: \"$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:1432: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1426: 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
ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:1462: checking for FlexLexer.h" >&5
+echo "configure:1456: 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 1467 "configure"
+#line 1461 "configure"
#include "confdefs.h"
#include <FlexLexer.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1472: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6
-echo "configure:1522: checking whether explicit instantiation is needed" >&5
+echo "configure:1516: checking whether explicit instantiation is needed" >&5
if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1527 "configure"
+#line 1521 "configure"
#include "confdefs.h"
template <class T> struct foo { static int baz; };
return foo<int>::baz;
; return 0; }
EOF
-if { (eval echo configure:1537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
lily_cv_need_explicit_instantiation=no
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:1564: checking for $ac_word" >&5
+echo "configure:1558: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YACC'+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:1606: checking for $ac_word" >&5
+echo "configure:1600: 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:1640: checking for $ac_word" >&5
+echo "configure:1634: 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:1707: checking for $ac_word" >&5
+echo "configure:1701: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+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:1739: checking for $ac_word" >&5
+echo "configure:1733: 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
echo $ac_n "checking language""... $ac_c" 1>&6
-echo "configure:1794: checking language" >&5
+echo "configure:1788: checking language" >&5
case "$language" in
En* | en* | Am* | am* | US* | us*)
lang=English;;
echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:1830: checking for gettext in -lintl" >&5
+echo "configure:1824: checking for gettext in -lintl" >&5
ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1838 "configure"
+#line 1832 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
gettext()
; return 0; }
EOF
-if { (eval echo configure:1852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
for ac_func in gettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1882: checking for $ac_func" >&5
+echo "configure:1876: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1887 "configure"
+#line 1881 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:1913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
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:1945: checking for $ac_word" >&5
+echo "configure:1939: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh "
echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6
-echo "configure:1975: checking whether msgfmt accepts -o" >&5
+echo "configure:1969: checking whether msgfmt accepts -o" >&5
msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`"
if test "$msgfmt_output" = ""; then
echo "$ac_t""yes" 1>&6
fi
-
- # Check whether --enable-tex-prefix or --disable-tex-prefix was given.
-if test "${enable_tex_prefix+set}" = set; then
- enableval="$enable_tex_prefix"
- TEXPREFIX=$enableval
-else
- TEXPREFIX=auto
-fi
-
-
- # Check whether --enable-tex-dir or --disable-tex-dir was given.
-if test "${enable_tex_dir+set}" = set; then
- enableval="$enable_tex_dir"
- TEXDIR=$enableval
-else
- TEXDIR=auto
-fi
-
-
- # Check whether --enable-mf-dir or --disable-mf-dir was given.
-if test "${enable_mf_dir+set}" = set; then
- enableval="$enable_mf_dir"
- MFDIR=$enableval
-else
- MFDIR=auto
-fi
-
-
- if test "x$TEXPREFIX" = xauto ; then
-
-
-
- echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6
-echo "configure:2028: checking TeX/MF root dir directory" >&5
-
- find_root_prefix="$prefix"
-
-
- test "x$find_root_prefix" = xNONE && find_root_prefix="$ac_default_prefix"
- find_texpostfix="";
- for postfix in "/lib/tex/" "/lib/texmf" "/lib" "/tex" "/texmf"; do
- find_texprefix="$find_root_prefix$postfix"
- if test -d $find_texprefix; then
- find_texpostfix=$postfix
- break;
- fi
- done
-
- if test "x$find_texpostfix" = x; then
- find_texpostfix='/lib/texmf/tex'
-
- echo "configure: warning: Cannot determine the TeX-directory. Please use --enable-tex-prefix" 1>&2
- warn_b=yes
-
- fi
-
- find_texprefix="$find_root_prefix/$find_texpostfix"
-
- # only assign if variablename not empty
- if test x != "x$TEXPREFIX"; then
- TEXPREFIX='${prefix}'/"$find_texpostfix"
- fi
- echo "$ac_t""$find_texprefix" 1>&6
-
-
- else
- find_texprefix=$TEXPREFIX
- fi
-
- if test "x$MFDIR" = xauto; then
-
-
-
- echo $ac_n "checking MF input directory""... $ac_c" 1>&6
-echo "configure:2069: checking MF input directory" >&5
- find_dirdir=`(cd $find_texprefix;
- $FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')`
-
-
- if test "x$find_dirdir" = x; then
- find_dirdir="/source";
-
- echo "configure: warning: Cannot determine MF input subdirectory. Please set from command-line" 1>&2
- warn_b=yes
-
- true
- fi
- MFDIR=$find_dirdir
- echo "$ac_t""$find_texprefix/$find_dirdir" 1>&6
-
- MFDIR="$TEXPREFIX/$MFDIR"
-
- fi
-
- if test "x$TEXDIR" = xauto ; then
-
-
-
- echo $ac_n "checking TeX input directory""... $ac_c" 1>&6
-echo "configure:2094: checking TeX input directory" >&5
- find_dirdir=`(cd $find_texprefix;
- $FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')`
-
-
- if test "x$find_dirdir" = x; then
- find_dirdir="/tex";
-
- echo "configure: warning: Cannot determine TeX input subdirectory. Please set from command-line" 1>&2
- warn_b=yes
-
- true
- fi
- TEXDIR=$find_dirdir
- echo "$ac_t""$find_texprefix/$find_dirdir" 1>&6
-
- TEXDIR="$TEXPREFIX/$TEXDIR"
-
- fi
-
-
-
-
-
+# AC_STEPMAKE_TEXMF
if test "x$YODL" = "x"; then
for ac_prog in striproff
# 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:2125: checking for $ac_word" >&5
+echo "configure:1997: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_STRIPROFF'+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:2159: checking for $ac_word" >&5
+echo "configure:2031: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YODL'+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:2193: checking for $ac_word" >&5
+echo "configure:2065: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YODL2HTML'+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:2227: checking for $ac_word" >&5
+echo "configure:2099: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YODL2LATEX'+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:2260: checking for $ac_word" >&5
+echo "configure:2132: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YODL2MAN'+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:2294: checking for $ac_word" >&5
+echo "configure:2166: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YODL2MSLESS'+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:2328: checking for $ac_word" >&5
+echo "configure:2200: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YODL2TEXINFO'+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:2362: checking for $ac_word" >&5
+echo "configure:2234: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YODL2TXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- result="`echo \"$FIND\" | grep echo`"
- if test "x$FIND" = "xerror" -o "x$result" != "x"; then
-
- echo "configure: warning: can\'t find find. Please use --enable-tex-dir" 1>&2
- warn_b=yes
-
- fi
-
-
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:2422: checking for 8-bit clean memcmp" >&5
+echo "configure:2285: checking for 8-bit clean memcmp" >&5
if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_func_memcmp_clean=no
else
cat > conftest.$ac_ext <<EOF
-#line 2430 "configure"
+#line 2293 "configure"
#include "confdefs.h"
#ifdef __cplusplus
extern "C" void exit(int);
}
EOF
-if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
ac_cv_func_memcmp_clean=yes
else
test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:2461: checking for vprintf" >&5
+echo "configure:2324: checking for vprintf" >&5
if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2466 "configure"
+#line 2329 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vprintf(); below. */
; return 0; }
EOF
-if { (eval echo configure:2492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_vprintf=yes"
else
if test "$ac_cv_func_vprintf" != yes; then
echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:2516: checking for _doprnt" >&5
+echo "configure:2379: checking for _doprnt" >&5
if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2521 "configure"
+#line 2384 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char _doprnt(); below. */
; return 0; }
EOF
-if { (eval echo configure:2547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func__doprnt=yes"
else
for ac_func in memmem snprintf vsnprintf gettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2574: checking for $ac_func" >&5
+echo "configure:2437: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2579 "configure"
+#line 2442 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:2605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
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:2644: checking for $ac_word" >&5
+echo "configure:2507: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
s%@localedir@%$localedir%g
s%@DIR_LOCALEDIR@%$DIR_LOCALEDIR%g
s%@MSGFMT@%$MSGFMT%g
-s%@TEXPREFIX@%$TEXPREFIX%g
-s%@TEXDIR@%$TEXDIR%g
-s%@MFDIR@%$MFDIR%g
s%@STRIPROFF@%$STRIPROFF%g
s%@YODL@%$YODL%g
s%@YODL2HTML@%$YODL2HTML%g
AC_STEPMAKE_LOCALE
AC_STEPMAKE_GETTEXT
AC_STEPMAKE_MSGFMT
-AC_STEPMAKE_TEXMF
+# AC_STEPMAKE_TEXMF
AC_STEPMAKE_YODL
dnl should check out -print
dnl huh?
-AC_CHECK_SEARCH_RESULT($FIND, find, Please use --enable-tex-dir)
+dnl AC_CHECK_SEARCH_RESULT($FIND, find, Please use --enable-tex-dir)
AC_FUNC_MEMCMP
AC_FUNC_VPRINTF
/** create cursor, set at top. The const part isn't true, actually, #list#
surely isn't const, but I get tired of the warning messages. */
Cursor (const List<T>& list, Link<T>* pointer = 0);
- /**
- Create an invalid cursor (pointing to nothing, associated with no list.)
- */
- Cursor();
Cursor (const Cursor<T>& cursor);
T& thing();
void del();
/// access the list this came from
- List<T>& list() const ;
+ List<T>* list_l() const ;
Link<T>* pointer();
static int compare (Cursor<T> a,Cursor<T>b) { return a-b; }
+
private:
- List<T>& list_;
+
Link<T>* pointer_;
+ List<T>* list_l_;
};
source file of the Flower Library
(c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <assert.h>
-// untested
+/**
+ Initialisation of Cursor.. Set pointer and list fields.
+ */
template<class T>
inline
-Cursor<T>::Cursor()
- : list_(*(List<T> *)0) // ugh
-{
- pointer_ = 0;
-}
-
-
-template<class T>
-inline
-Cursor<T>::Cursor (const List<T>& list, Link<T>* pointer) :
- list_((List<T>&) list)
+Cursor<T>::Cursor (const List<T> & list, Link<T>* p )
{
+ list_l_ = (List<T> *) &list; // damn const
if (list.size())
- pointer_ = pointer ? pointer : list.top_;
+ pointer_ = p ? p : list.top_;
else
- pointer_ = pointer;
+ pointer_ = p;
}
+
+
template<class T>
inline
-Cursor<T>::Cursor (const Cursor<T>& cursor) :
- list_(cursor.list_)
+Cursor<T>::Cursor (const Cursor<T>& cursor)
{
+ list_l_= cursor.list_l_;
pointer_ = cursor.pointer_;
}
Cursor<T>
Cursor<T>::operator =(const Cursor<T>& c)
{
- assert (&list_ == &c.list_);
+ assert (list_l_ == c.list_l_);
pointer_ = c.pointer_;
return *this;
}
inline void
Cursor<T>::add (const T& th)
{
- list_.add (th, *this);
+ list_l_->add (th, *this);
}
template<class T>
inline void
Cursor<T>::insert (const T& th)
{
- list_.insert (th, *this);
+ list_l_->insert (th, *this);
}
template<class T>
-inline List<T>&
-Cursor<T>::list() const
+inline List<T> *
+Cursor<T>::list_l() const
{
- return list_;
+ return list_l_; // ugh!
}
template<class T>
#include <assert.h>
template<class T>
- void
+void
Cursor<T>::backspace()
{
Cursor<T> c (*this);
if (c.ok())
- c--;
- list_.remove (*this);
+ c--;
+ list_l_->remove (*this);
}
template<class T>
- void
+void
Cursor<T>::del()
{
Cursor<T> c (*this);
if (c.ok())
- c++;
- list_.remove (*this);
+ c++;
+ list_l_->remove (*this);
*this = c;
}
Cursor<T>::operator -=(int j)
{
while (j--)
- (*this)--;
+ (*this)--;
return *this;
}
template<class T>
Cursor<T>::operator +=(int j)
{
while (j++)
- (*this)++;
+ (*this)++;
return *this;
}
Cursor<T> r = *this;
if (i<0)
- return r -(-i);
+ return r -(-i);
while (i--)
- r++;
+ r++;
return r;
}
{
Cursor<T> r = *this;
if (i<0)
- return r +(-i);
+ return r +(-i);
while (i--)
- r--;
+ r--;
return r;
}
int
Cursor<T>::operator-(Cursor<T> rhs) const
{
- assert (&rhs.list_ == &list_);
+ assert (rhs.list_l_ == list_l_);
int dif = 0;
// search from *this on further up (positive difference)
Cursor<T> c (*this);
while (c.ok() && c.pointer_ != rhs.pointer_)
{
- c--;
- dif++;
+ c--;
+ dif++;
}
if (c.ok())
- goto gotcha; // so, sue me.
+ goto gotcha; // so, sue me.
// search in direction of bottom. (negative diff)
dif =0;
c=*this;
while (c.ok() && c.pointer_ !=rhs.pointer_)
{
- dif --;
- c++;
+ dif --;
+ c++;
}
assert (c.ok());
-gotcha:
+ gotcha:
assert ((*this - dif).pointer_ == c.pointer_);
return dif;
}
return remove_p();
}
- Link_list<T> &list() { return (Link_list<T>&)Cursor<void*>::list (); }
+ Link_list<T> *list_l() { return (Link_list<T> *)Cursor<void*>::list_l (); }
PCursor<T> operator++(int) { return Cursor<void*>::operator++(0);}
PCursor<T> operator--(int) { return Cursor<void*>::operator--(0); }
PCursor<T> operator+=(int i) { return Cursor<void*>::operator+=(i);}
PCursor<T> operator-=(int i) { return Cursor<void*>::operator-=(i); }
PCursor<T> operator -(int no) const { return Cursor<void*>::operator-(no);}
int operator -(PCursor<T> op) const { return Cursor<void*>::operator-(op);}
- PCursor<T> operator +(int no) const {return Cursor<void*>::operator+(no);} PCursor (const Link_list<T> & l) : Cursor<void*> (l) {}
- PCursor() : Cursor<void*> () {}
+ PCursor<T> operator +(int no) const {return Cursor<void*>::operator+(no);}
+ PCursor (const Link_list<T> & l) : Cursor<void*> (l) {}
PCursor (const Cursor<void*>& cursor) : Cursor<void*>(cursor) { }
void* vptr() const { return *((Cursor<void*> &) *this); }
PCursor<T>::junk()
{
#if !defined (NDEBUG) && defined (PARANOID)
- list().OK();
+ list_l()->OK();
#endif
delete ptr();
#if !defined (NDEBUG)&&defined (PARANOID)
thing() = 0;
- list().OK();
+ list_l()->OK();
#endif
}
#include "arithmetic-operator.hh"
#include "fproto.hh"
+/**
+ Rational numbers. Included is support for + and - infinity.
+ */
class Rational {
+ /**
+ Sign of rational.
+ -2, .. 2
+
+ -2,2 is - and + infinity.
+ -1,1 is negative and positive.
+ 0 if *this is zero.
+ */
int sign_;
unsigned int num_, den_;
void normalise ();
void invert ();
int num () const { return sign_ * num_; }
int den () const { return den_; }
+ int num_i () const { return sign_ * num_; }
+ int den_i () const { return den_; }
Rational truncated () const;
void negate ();
operator bool () const;
operator int () const;
operator double () const;
Rational operator - () const;
+ /**
+ Initialize to 0.
+ */
Rational ();
Rational (int, int =1);
Rational (double);
Rational &operator = (Rational const &);
Rational &operator *= (Rational);
- Rational &operator /= (Rational);
- Rational &operator += (Rational);
- Rational &operator -= (Rational);
+ Rational &operator /= (Rational);
+ Rational &operator += (Rational);
+ Rational &operator -= (Rational);
static int compare (Rational const&, Rational const&);
int sign () const;
String str () const;
Rational::Rational ()
{
- sign_ = 1;
+ sign_ = 0;
num_ = den_ = 1;
}
normalise ();
}
+Rational::Rational (Rational const &r)
+{
+ copy (r);
+}
static
int gcd (int a, int b)
return *this;
}
-Rational::Rational (Rational const &r)
-{
- copy (r);
-}
-
String
Rational::str () const
{
INI_FILES = $(FLY_FILES) $(LY_FILES)
# DIST_FILES = Makefile $(INI_FILES)
-INSTALLATION_DIR=$(datadir)
+INSTALLATION_DIR=$(datadir)/ly/
INSTALLATION_FILES=$(INI_FILES)
LOCALSTEPMAKE_TEMPLATES=mutopia
% Toplevel initialisation file.
-\version "1.0.6";
+\version "1.0.7";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.6";
+\version "1.0.7";
\include "declarations.ly";
% Toplevel initialisation file.
-\version "1.0.6";
+\version "1.0.7";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.6";
+\version "1.0.7";
\include "declarations.ly"
\consists "Staff_sym_engraver";
\consists "Collision_engraver";
\consists "Rest_collision_engraver";
+ \consists "Tuplet_engraver";
%{
Uncomment to get bar numbers on single staff systems:
% Toplevel initialisation file.
-\version "1.0.6";
+\version "1.0.7";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.6";
+\version "1.0.7";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.6";
+\version "1.0.7";
\include "declarations.ly";
-\version "1.0.6";
+\version "1.0.7";
paper_sixteen = \paper {
staffheight = 16.0\pt;
\include "table13.ly";
\include "table16.ly";
-\version "1.0.6";
+\version "1.0.7";
paper_twenty = \paper {
staffheight = 20.0\pt;
-\version "1.0.6";
+\version "1.0.7";
one = \notes\relative c{
c'' d e f
-\version "1.0.6";
+\version "1.0.7";
blah = \notes {
Tested Features: example file with comments
%}
-\version "1.0.6";
+\version "1.0.7";
% the % is a comment.
-\version "1.0.6";
+\version "1.0.7";
part = \notes {
c-1 c c c
r1*3
% \lbheel \lbheel \lfheel \lftoe
% \rbheel \rbtoe \rfheel \rftoe
-\version "1.0.6";
+\version "1.0.7";
\score{
\notes {
* organ staff...
%}
-\version "1.0.6";
+\version "1.0.7";
-\version "1.0.6";
+\version "1.0.7";
ritme = \notes\transpose c'' {
\time 4/4;
% scales with accents.
%
-\version "1.0.6";
+\version "1.0.7";
blah = \notes {
\time 6/8;
\transpose c {
-\version "1.0.6";
+\version "1.0.7";
blah = \notes{ \transpose c'' {
-\version "1.0.6";
+\version "1.0.7";
\score{
\notes \transpose c'''{
\stemup
-\version "1.0.6";
+\version "1.0.7";
onestaff = \type Staff = foo\notes {
\property Staff.instr = instr
-\version "1.0.4";
+\version "1.0.7";
\score{
\notes\transpose c'{
-\version "1.0.6";
+\version "1.0.7";
\score{
\notes\transpose c''{
TestedFeatures = "beams and beamflags";
}
-\version "1.0.6";
+\version "1.0.7";
\score{
<
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.6";
+\version "1.0.7";
shortlong = \notes{
c4()c( c c |
-\version "1.0.6";
+\version "1.0.7";
\score {
\notes{
copyright = "public domain";
Tested = "test the Collision resolution ";
}
-\version "1.0.6";
+\version "1.0.7";
-\version "1.0.6";
+\version "1.0.7";
\score {
\include "paper20.ly"
-\version "1.0.6";
+\version "1.0.7";
-oden = \lyric{
+oden = \lyrics{
O8 |
den-8. ne-16 boom,4. o8 |
den-8. ne-16 boom.4. Wat8 |
won-8. der-16 schoon4 _8
}
-ikheb = \lyric{
+ikheb = \lyrics{
Ik8 |
heb u laatst4. in_'t8 |
bos8. zien16 staan4 _8 toen8 |
kaars-8. jes16 aan.4 _8
}
-ugloeit = \lyric{
+ugloeit = \lyrics{
U8 |
gloeit in bar-4. re8 |
win-8. ter-16 tijd,4 r8 als8 |
-\version "1.0.6";
+\version "1.0.7";
\score{
\notes{
-\version "1.0.6";
+\version "1.0.7";
\score{
\notes \relative c {
-\version "1.0.6";
+\version "1.0.7";
FontBody= \notes\transpose c''{
\bar "|:";
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.6";
+\version "1.0.7";
\include "font-body.ly"
\score{
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.6";
+\version "1.0.7";
\include "font-body.ly"
\score{
TestedFeatures = "This file tests some nasty Gourlay spacings";
}
-\version "1.0.6";
+\version "1.0.7";
%{
-\version "1.0.6";
+\version "1.0.7";
\include "table13.ly";
\include "table16.ly";
-\version "1.0.6";
+\version "1.0.7";
toeter_i = \notes\relative c {
\property Staff.instrument = "Toeters"
-\version "1.0.6";
+\version "1.0.7";
%{
test key itemv breaking
-\version "1.0.6";
+\version "1.0.7";
\score{
\notes\relative c'{
[c16 \stemdown c'' \stemboth c,, d]
-\version "1.0.6";
+\version "1.0.7";
global = \notes {
s1 | \mark "A";
-\version "1.0.6";
+\version "1.0.7";
voice_one = \notes\transpose c' { \stemup
R1 * 2 | f'4-. r r2 | R1 * 3 |
-\version "1.0.6";
+\version "1.0.7";
\score {
-\version "1.0.6";
+\version "1.0.7";
onestaff = \type Staff = foo\notes {
\property Staff.instr = instr
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.6";
+\version "1.0.7";
shortlong = \notes{
c4()c( c c |
-\version "1.0.6";
+\version "1.0.7";
% bug
% excentric slur can't handle this ...
% test damping
-\version "1.0.6";
+\version "1.0.7";
\score{
\notes\relative c'{
-\version "1.0.6";
+\version "1.0.7";
% urg, the direction of the slur gets swapped!
\score{
-\version "1.0.6";
+\version "1.0.7";
\score{
\notes\transpose c'{
TestedFeatures = "This file tests various spacings";
}
-\version "1.0.6";
+\version "1.0.7";
multipart = \notes{
\type StaffGroup <
}
-\version "1.0.6";
+\version "1.0.7";
beamintervals = \notes{
\time 7/4;
-\version "1.0.6";
+\version "1.0.7";
-$somewhat_long = \lyric{
+$somewhat_long = \lyrics{
\property Lyrics . textstyle = "roman"
AaaaaaA2
BbbbbbB2
FfffffF2
}
-$rather_long = \lyric{
+$rather_long = \lyrics{
\property Lyrics . textstyle = "roman"
LLLLoooonggggg2
Syyllllaaabbble2
Syyyylllaaabbble2
}
-$quite_long = \lyric{
+$quite_long = \lyrics{
\property Lyrics . textstyle = "roman"
LLLLLLLLLooooongggggggg2
Syyyyyyyyyyyyylllllllaaaaaabbble2
-\version "1.0.6";
+\version "1.0.7";
% middle tie is wrong
-\version "1.0.6";
+\version "1.0.7";
tie = \notes\transpose c''{
instrument= "Instrument";
}
-\version "1.0.6";
+\version "1.0.7";
\score{
\notes
}
-\version "1.0.6";
+\version "1.0.7";
vOne = \notes \relative c''{
\clef"violin";
-\version "1.0.6";
+\version "1.0.7";
\score {
\notes <
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.6";
+\version "1.0.7";
\score{
\notes{
Tested Features lyrics and chords
%}
-\version "1.0.6";
+\version "1.0.7";
melodie = \notes\relative c {
\clef"violin";
f4^"F" f | e^"C" e | d^"G7" d | c2^"C" |
}
-text = \lyric{
+text = \lyrics{
\property Lyrics . textstyle = "italic"
Ah!4 vous dir- ai_- je ma man2
\score {
< \notes \type Staff \melodie
- \lyric \type Lyrics \text
+ \lyrics \type Lyrics \text
>
\paper { }
}
Tested Features: lyrics, interleaving lyrics and staffs
%}
-\version "1.0.6";
+\version "1.0.7";
melody = \notes \relative c'' {
\clef violin;
\bar ":|";
}
-tekst = \lyric{
+tekst = \lyrics{
Al-4 tijd is Kort- jak- je ziek,2
midden4 in_de week maar s,_zon- dags niet.2
% ugly hack: insertion of empty syllables creates columns on extra
tekst. Mogen wij ook af en toe ergens op afgeven?
%}
-hegedraagjetekst = \lyric{
+hegedraagjetekst = \lyrics{
Al-4 tijd zuigt Bill Gates mijn piek,2
"\TeX"4 is slecht- ser dan mu- ziek.2
s,_Zon-4 dags gaat het door een raam,2
"\TeX"4 is slecht- ser dan mu- ziek.2
}
-texte = \lyric{
+texte = \lyrics{
\property Lyrics . textstyle" = "italic"
% \property Lyrics . textstyle" = "roman"
Ah!4 vous dir- ai_- je ma- man2
Va-4 lent mieux que la rai- son2
}
-texti = \lyric{
+texti = \lyrics{
\property "Lyrics"."textstyle" = "roman"
Twin-4 kle, twin- kle, lit- tle star,2
How4 I won- der what you are.2
How4 I won- der what you are!2
}
-textii = \lyric{
+textii = \lyrics{
When4 the bla- zing sun is gone,2
When4 he no- thing shines up- on,2
Then4 you show your lit- tle light,2
}
-textiii = \lyric{
+textiii = \lyrics{
Then4 the tra- veler in the dark2
Thanks4 you for your ti- ny spark;2
He_could4 not see which way to go,2
return t == Duration_convert::type2_i (Duration_convert::i2_type (t));
}
+void
+Duration::compress (Moment m)
+{
+ plet_.iso_i_ *= m.num_i ();
+ plet_.type_i_ *= m.den_i ();
+}
+
// ugh, what's this?
// i should be called "mom ()", ... or at least "length_mom ()"
Moment
bool plet_b ();
String str () const;
void set_plet (int,int );
+ void compress (Moment);
static bool duration_type_b (int t);
void set_ticks (int ticks_i );
#include "array.hh"
#include "debug.hh"
#include "dimensions.hh"
-#include "paper-def.hh"
+#include "lookup.hh"
#include "main.hh"
inline bool
if (abs (off_[ax]) >= 100 CM)
{
warning (_f ("ridiculous dimension: %s, %s", axis_name_str (ax),
- dimension_str (off_[ax])));
+ global_lookup_l->print_dimen (off_[ax])));
if (experimental_features_global_b)
assert (false);
But Atom is used as a simple type *everywhere*,
and we don't have virtual contructors.
*/
- str_ = global_paper_l->unknown_str ();
+ str_ = global_lookup_l->unknown_str ();
}
Atom::Atom (String s, Box b)
--- /dev/null
+/*
+ auto-plet-engraver.cc -- implement Auto_plet_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "auto-plet-engraver.hh"
+#include "command-request.hh"
+#include "slur.hh"
+#include "note-column.hh"
+
+bool
+Tuplet_engraver::do_try_request (Request *r)
+{
+ Command_req * c = r->access_Command_req ();
+ if (!(c &&
+ c->access_Bracket_req ()))
+ {
+ return false;
+ }
+
+ Bracket_req * b = c->access_Bracket_req ();
+ bracket_req_arr_.push (b);
+ return true;
+}
+
+
+void
+Tuplet_engraver::do_process_requests ()
+{
+ int stopcount =0;
+ Link_array<Slur> start_arr;
+
+ for (int i=0; i < bracket_req_arr_.size (); i++)
+ {
+ if (bracket_req_arr_[i]->spantype == Span_req::STOP)
+ stopcount++;
+ if (bracket_req_arr_[i]->spantype == Span_req::START)
+ {
+ Slur *sp =new Slur;
+ start_arr.push (sp);
+ announce_element (Score_element_info (sp, bracket_req_arr_[i]));
+ }
+ }
+
+ for (; stopcount--; )
+ {
+ Slur *sp = started_span_p_arr_.pop ();
+ stop_now_span_p_arr_.push (sp);
+ }
+
+ for (int i=0; i < start_arr.size (); i++)
+ started_span_p_arr_.push (start_arr.pop ());
+}
+
+void
+Tuplet_engraver::acknowledge_element (Score_element_info i)
+{
+ if (i.elem_l_->is_type_b (Note_column::static_name ()))
+ {
+ Note_column *nc = (Note_column*)i.elem_l_->access_Item ();
+ for (int j =0; j <started_span_p_arr_.size (); j++)
+ started_span_p_arr_[j]->add_column (nc);
+ }
+}
+
+void
+Tuplet_engraver::do_pre_move_processing ()
+{
+ typeset_all ();
+}
+
+void
+Tuplet_engraver::typeset_all ()
+{
+ for (int i=0; i < stop_now_span_p_arr_.size (); i++)
+ {
+ typeset_element (stop_now_span_p_arr_[i]);
+ }
+
+ stop_now_span_p_arr_.clear ();
+}
+
+void
+Tuplet_engraver::do_removal_processing ()
+{
+ typeset_all ();
+ for (int i=0; i < started_span_p_arr_.size (); i++)
+ {
+ typeset_element (started_span_p_arr_[i]);
+ }
+}
+
+ADD_THIS_TRANSLATOR(Tuplet_engraver);
+IMPLEMENT_IS_TYPE_B1(Tuplet_engraver, Engraver);
+
+Tuplet_engraver::Tuplet_engraver()
+{
+}
+
+
+void
+Tuplet_engraver::do_post_move_processing ()
+{
+ bracket_req_arr_.clear ();
+}
#include "change-translator.hh"
#include "debug.hh"
-Change_iterator::Change_iterator (Change_translator *change_l)
-{
- change_l_ = change_l;
-}
void
Change_iterator::error (String reason)
{
- String to_type = change_l_->change_to_type_str_;
- String to_id = change_l_->change_to_id_str_;
+ String to_type = change_l ()->change_to_type_str_;
+ String to_id = change_l ()->change_to_id_str_;
String warn1 = _f ("can't change `%s\' to `%s\'", to_type, to_id)
+ ": " + reason;
- String warn2= "Change_iterator::process_and_next (): "
+ String warn2= "Change_iterator::do_process_and_next (): "
+ report_to_l ()->type_str_ + " = `"
+ report_to_l ()->id_str_ + "\': ";
warning (warn2);
- change_l_->warning (warn1);
+ change_l ()->warning (warn1);
+}
+
+Change_translator *
+Change_iterator::change_l ()
+{
+ return (Change_translator*) music_l_;
}
/*
move to construct_children ?
*/
void
-Change_iterator::process_and_next (Moment m)
+Change_iterator::do_process_and_next (Moment m)
{
Translator_group * current = report_to_l ();
Translator_group * last = 0;
- String to_type = change_l_->change_to_type_str_;
- String to_id = change_l_->change_to_id_str_;
+ String to_type = change_l ()->change_to_type_str_;
+ String to_id = change_l ()->change_to_id_str_;
/* find the type of translator that we're changing.
We could change the current translator's id, but that would make
errors hard to catch
- last->translator_id_str_ = change_l_->change_to_id_str_;
+ last->translator_id_str_ = change_l ()->change_to_id_str_;
*/
error ("I'm one myself");
}
else
error ("None of these in my family.");
- Music_iterator::process_and_next (m);
+ Music_iterator::do_process_and_next (m);
}
IMPLEMENT_IS_TYPE_B1 (Change_iterator, Music_iterator);
#include "music-list.hh"
-Simultaneous_music_iterator::~Simultaneous_music_iterator()
-{
-}
-
-Simultaneous_music_iterator::Simultaneous_music_iterator (Simultaneous_music const *simultaneous_music_C)
-{
- simultaneous_music_C_ = simultaneous_music_C;
-}
-
void
Simultaneous_music_iterator::construct_children()
{
int j = 0;
- for (PCursor<Music*> i (simultaneous_music_C_->music_p_list_p_->top());
+ for (PCursor<Music*> i (simultaneous_music_l ()->music_p_list_p_->top());
i.ok(); j++, i++)
{
Music_iterator * mi = get_iterator_p (i.ptr());
if (mi->ok())
{
- if (simultaneous_music_C_->translator_type_str_.empty_b ())
- set_translator (mi->report_to_l()->ancestor_l (simultaneous_music_C_->multi_level_i_));
+ if (simultaneous_music_l ()->translator_type_str_.empty_b ())
+ set_translator (mi->report_to_l()->ancestor_l (simultaneous_music_l ()->multi_level_i_));
children_p_list_.bottom().add (mi);
}
else
}
void
-Simultaneous_music_iterator::process_and_next (Moment until)
+Simultaneous_music_iterator::do_process_and_next (Moment until)
{
for (PCursor<Music_iterator*> i (children_p_list_.top()); i.ok ();)
{
else
i++;
}
- Music_iterator::process_and_next (until);
+ Music_iterator::do_process_and_next (until);
}
{
return children_p_list_.size();
}
+
+Simultaneous_music*
+Simultaneous_music_iterator::simultaneous_music_l ()const
+{
+ return ( Simultaneous_music *) music_l_;
+}
IMPLEMENT_IS_TYPE_B1(Bar_req,Command_req);
+IMPLEMENT_IS_TYPE_B2(Bracket_req, Command_req, Span_req);
+
void
Bar_req::do_print() const
{
DOUT << type_str_;
}
+void
+Bracket_req::do_print () const
+{
+ Span_req::do_print ();
+}
+
Bar_req::Bar_req (String s)
{
type_str_ = s;
--- /dev/null
+/*
+ compressed-music-iterator.cc -- implement Compressed_music_iterator
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "compressed-music-iterator.hh"
+#include "compressed-music.hh"
+#include "musical-request.hh"
+#include "translator-group.hh"
+#include "command-request.hh"
+
+IMPLEMENT_IS_TYPE_B1(Compressed_music_iterator, Music_wrapper_iterator);
+
+Compressed_music_iterator::Compressed_music_iterator ()
+{
+ Bracket_req pr;
+ pr.spantype = Span_req::START;
+ // pr.plet_i_ = 1;
+ start_req_p_ = new Bracket_req (pr);
+ pr.spantype = Span_req::STOP;
+ stop_req_p_ =new Bracket_req (pr);
+}
+
+Compressed_music_iterator::~Compressed_music_iterator ()
+{
+ delete start_req_p_;
+ delete stop_req_p_;
+}
+
+Compressed_music *
+Compressed_music_iterator::compressed_l () const
+{
+ return (Compressed_music*) music_l_;
+}
+
+void
+Compressed_music_iterator::construct_children ()
+{
+ /*
+ start_req_p_->plet_i_ = compressed_l ()->den_i_;
+ stop_req_p_->plet_i_ = compressed_l ()->den_i_;
+ */
+ Music_wrapper_iterator::construct_children ();
+}
+
+void
+Compressed_music_iterator::do_process_and_next (Moment m)
+{
+ if (first_b_)
+ {
+ bool success = report_to_l ()->try_request (start_req_p_);
+ if (!success)
+ music_l_->warning ( _("No one to print a tuplet start bracket"));
+ }
+
+ Music_wrapper_iterator::do_process_and_next (m);
+
+ if (!ok ())
+ {
+ bool success = report_to_l ()->try_request (stop_req_p_);
+ if (!success)
+ music_l_->warning ( _("No one to print a tuplet stop bracket"));
+ }
+}
--- /dev/null
+/*
+ compressed-music.cc -- implement Compressed_music
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "compressed-music.hh"
+
+
+Compressed_music::Compressed_music (int n, int d,Music *mp)
+ : Music_wrapper (mp)
+{
+ num_i_ = n;
+ den_i_ = d;
+ element_p_->compress (Moment (num_i_,den_i_));
+}
+
+IMPLEMENT_IS_TYPE_B1(Compressed_music, Music_wrapper);
+
+
+++ /dev/null
-
-#include "warn.hh"
-#include "dimensions.hh"
-
-String
-dimension_str (Real r)
-{
- String s = to_str (r, "%.3f");
- if (s.index_i ("NaN") != -1)
- {
- warning (_ ("NaN"));
- s = "0.0";
- }
- return s;
-}
-
+++ /dev/null
-/*
- header.cc -- implement Header
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "string.hh"
-#include "dictionary-iter.hh"
-#include "header.hh"
-#include "main.hh"
-
-extern char const *lily_version_number_sz ();
-
-Header::Header ()
-{
- lily_id_str_ = "Lily was here, " +
- String (lily_version_number_sz ());
-}
-
-//urg
-String
-Header::tex_string () const
-{
- String s;
-
- s+= "\\def\\LilyIdString{" + lily_id_str_ + "}";
-
- for (Dictionary_iter<String> i (*this); i.ok (); i++)
- s += "\\def\\mudela" + i.key () + "{" + i.val () + "}\n";
- return s;
-}
-
-String
-Header::ps_string () const
-{
- String s;
-
- s+= "/lily_id_string\n{" + lily_id_str_ + "} bind def\n";
-
- for (Dictionary_iter<String> i (*this); i.ok (); i++)
- s += "/mudela" + i.key () + "{" + i.val () + "} bind def\n";
- return s;
-}
-
--- /dev/null
+/*
+ auto-plet-engraver.hh -- declare Auto_plet_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef AUTO_PLET_ENGRAVER_HH
+#define AUTO_PLET_ENGRAVER_HH
+
+#include "engraver.hh"
+
+class Tuplet_engraver : public Engraver
+{
+ void typeset_all ();
+public:
+ Tuplet_engraver ();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ TRANSLATOR_CLONE(Tuplet_engraver);
+
+protected:
+ Link_array<Bracket_req> bracket_req_arr_;
+
+ Link_array<Slur> started_span_p_arr_;
+ Link_array<Slur> stop_now_span_p_arr_;
+
+ virtual void do_removal_processing ();
+ virtual void acknowledge_element (Score_element_info);
+ virtual void do_pre_move_processing ();
+ virtual bool do_try_request (Request*r);
+ virtual void do_process_requests ();
+ virtual void do_post_move_processing ();
+};
+
+
+
+#endif /* AUTO_PLET_ENGRAVER_HH */
class Change_iterator : public Music_iterator
{
- Change_translator *change_l_;
-
+ Change_translator *change_l ();
void error (String);
public:
DECLARE_MY_RUNTIME_TYPEINFO;
- Change_iterator (Change_translator* prop_l);
protected:
- virtual void process_and_next (Moment);
+ virtual void do_process_and_next (Moment);
};
#endif
class Simultaneous_music_iterator : public Music_iterator
{
- const Simultaneous_music *simultaneous_music_C_;
+ Simultaneous_music *simultaneous_music_l() const;
Pointer_list<Music_iterator*> children_p_list_;
public:
- ~Simultaneous_music_iterator();
- Simultaneous_music_iterator (Simultaneous_music const*);
DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual void do_print() const;
virtual void construct_children();
- virtual void process_and_next (Moment);
+ virtual void do_process_and_next (Moment);
virtual Moment next_moment() const;
virtual bool ok() const;
};
Direction octave_dir_;
String clef_type_str_;
- /* ************** */
Clef_engraver();
DECLARE_MY_RUNTIME_TYPEINFO;
Drul_array< Array<Spacer_rod> > rods_;
- /* *************** */
Column_info();
Column_info (Paper_column *,Real const *);
Real energy_f_;
bool satisfies_constraints_b_;
- /* ************** */
void OK() const;
~Column_x_positions();
void solve_line();
DEFAULTACCESSOR(Command_script_req)
DEFAULTACCESSOR(Break_req)
DEFAULTACCESSOR(Mark_req)
+ DEFAULTACCESSOR(Bracket_req)
};
REQUESTMETHODS(Clef_change_req);
};
+class Bracket_req : public Span_req, public Command_req {
+
+public:
+ REQUESTMETHODS(Bracket_req);
+};
+
#endif // COMMANDREQUEST_HH
--- /dev/null
+/*
+ compressed-music-iterator.hh -- declare Compressed_music_iterator
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef COMPRESSED_MUSIC_ITERATOR_HH
+#define COMPRESSED_MUSIC_ITERATOR_HH
+
+#include "music-wrapper-iterator.hh"
+
+class Compressed_music_iterator : public Music_wrapper_iterator
+{
+public:
+ Bracket_req* start_req_p_;
+ Bracket_req* stop_req_p_;
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ Compressed_music_iterator();
+ ~Compressed_music_iterator ();
+ virtual void do_process_and_next (Moment);
+ virtual void construct_children ();
+ Compressed_music *compressed_l ()const;
+};
+
+
+#endif /* COMPRESSED_MUSIC_ITERATOR_HH */
+
--- /dev/null
+/*
+ compressed-music.hh -- declare Compressed_music
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef COMPRESSED_MUSIC_HH
+#define COMPRESSED_MUSIC_HH
+
+#include "music-wrapper.hh"
+/**
+ Tempo expansion or compression.
+ */
+class Compressed_music : public Music_wrapper
+{
+public:
+ int num_i_;
+ int den_i_;
+
+ Compressed_music (int, int, Music *);
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ VIRTUAL_COPY_CONS (Compressed_music, Music);
+};
+
+#endif /* COMPRESSED_MUSIC_HH */
+
#define CM *CM_TO_PT
#define INCH *INCH_TO_PT
-String dimension_str (Real r);
-
#endif // DIMENSIONS_HH
Crescendo * cresc_p_;
Span_dynamic_req * cresc_req_l_;
Array<Dynamic_req*> dynamic_req_l_arr_;
- /* ************** */
public:
TRANSLATOR_CLONE(Dynamic_engraver);
Dynamic_engraver();
#ifndef FILE_RESULTS_HH
#define FILE_RESULTS_HH
-
-#include "lily-proto.hh"
-#include "string.hh"
+#include "fproto.hh"
void do_one_file (String init_str, String file_str);
-extern Header *header_global_p;
+extern Scope *header_global_p;
extern Array<String> target_str_global_array;
extern Array<String> inclusion_global_array;
extern Link_array<Score> score_global_array;
Array<Rhythmic_grouping*> children;
MInterval *interval_;
- /* *************** */
Array<MInterval> intervals();
MInterval interval() const;
#include "string.hh"
#include "dictionary.hh"
+#include "scope.hh"
/** Store bibliographical information. The information in the \header
block is read into this struct. Lily does not process this
information. */
-struct Header : Dictionary<String>
-{
- Header ();
-
- String tex_string () const;
- String ps_string () const;
-
- String lily_id_str_;
-};
+typedef Scope Header;
#endif // HEADER_HH
/**
A declarable data structure in mudela.
-
-
*/
struct Identifier : public Input {
bool init_b_;
struct Collision_engraver;
struct Command_req;
struct Command_script_req;
-struct Complex_music;
+struct Compressed_music;
+struct Compressed_music_iterator;
struct Cresc_req;
struct Crescendo ;
struct Decresc_req;
struct Musical_pitch;
struct Music_output_def;
struct Global_translator;
-struct Group_change_req;
struct Hara_kiri_line_group_engraver;
struct Hara_kiri_vertical_group_spanner;
struct Head_column;
-struct Header;
+
struct Horizontal_align_item;
struct Horizontal_group_element;
struct Horizontal_group_item;
struct Musical_script_req;
struct Music_list;
struct Musical_req;
+struct Musical_span_req;
struct Music;
struct Music_sequence;
struct Music_wrapper_iterator;
struct Performer;
struct Performer_group_performer;
struct Property_iterator;
-struct Ps_score;
-struct Ps_def;
struct Ps_lookup;
struct Ps_outputter;
struct Ps_stream;
struct Super_element;
struct Translation_property;
struct Tempo_req;
-struct Tex_def;
-struct Tex_score;
struct Tex_lookup;
struct Tex_outputter;
struct Tex_stream;
struct Request_chord;
typedef Rational Moment;
+typedef Scope Header;
+
#endif // LILY_PROTO_HH
virtual Atom* atom_p (String, int, Box) const = 0;
Atom ball (int) const;
Atom bar (String, Real height) const;
+ String base_output_str () const;
Atom beam (Real,Real, Real) const;
virtual String character_str (int i) const;
Atom clef (String) const;
Atom fill (Box b) const;
Atom flag (int, Direction) const;
virtual Atom hairpin (Real width, bool decresc, bool continued) const = 0;
+ virtual Lookup* lookup_p (Lookup const&) const = 0;
+ virtual Lookup* lookup_p (Symtables const&) const = 0;
+ virtual Paper_outputter* paper_outputter_p (Paper_stream*, Paper_def*, Scope*, String) const = 0;
+ virtual Paper_stream* paper_stream_p () const = 0;
virtual Atom plet (Real dy, Real dx, Direction dir) const = 0;
void print () const;
virtual Atom ps_beam (Real slope, Real width, Real thick) const = 0;
- String print_dimen (Real) const;
+ virtual String print_dimen (Real) const;
Atom rest (int, bool outside) const;
Atom rule_symbol (Real height, Real width) const;
Atom script (String idx) const;
virtual Atom slur (Array<Offset> controls) const = 0;
Atom streepje (int type) const;
virtual Atom text (String style, String text) const;
+ virtual String unknown_str () const = 0;
Atom vbrace (Real &dy) const;
virtual Atom vbracket (Real &dy) const = 0;
Atom special_time_signature (String, Array<Scalar>) const;
extern int exit_status_i_;
extern bool experimental_features_global_b;
extern Lookup* global_lookup_l;
-extern Paper_def* global_paper_l;
extern bool dependency_global_b;
extern bool version_ignore_global_b;
struct Molecule {
Pointer_list<Atom*> atoms_; // change to List<Atom>?
- /* *************** */
Molecule() { }
Molecule (Atom const &a);
void push_translator (Translator_group*);
void pop_translator();
protected:
+ Music const * music_l_;
bool first_b_;
virtual void do_print() const;
virtual Translator_group* get_req_translator_l();
- Music_iterator* get_iterator_p (Music*) const;
+ Music_iterator* get_iterator_p (Music const*) const;
void set_translator (Translator_group*);
- Music_iterator *daddy_iter_l_;
-
+ virtual void do_process_and_next (Moment until);
+ void inherit_info (Music_iterator const *parent);
public:
Translator_group*report_to_l() const;
DECLARE_MY_RUNTIME_TYPEINFO;
- static Music_iterator* static_get_iterator_p (Music*,Translator_group*);
+ static Music_iterator* static_get_iterator_p (Music const*,Translator_group*);
Music_iterator();
- virtual void process_and_next (Moment until);
virtual Moment next_moment() const;
virtual bool ok() const;
virtual ~Music_iterator();
+ void process_and_next (Moment until);
/**
Construct sub-iterators, and set the translator to
*/
class Music_sequence : public Music
{
-
public:
int multi_level_i_;
Music_list * music_p_list_p_;
-
+
Music_sequence (Music_sequence const&);
Music_sequence (Music_list *l_p);
DECLARE_MY_RUNTIME_TYPEINFO;
VIRTUAL_COPY_CONS(Music_sequence,Music);
virtual void transpose (Musical_pitch );
+ virtual void compress (Moment);
void add_music (Music *music_p);
protected:
virtual void do_print() const;
class Simultaneous_music : public Music_sequence
{
public:
- Simultaneous_music(Music_list *);
DECLARE_MY_RUNTIME_TYPEINFO;
VIRTUAL_COPY_CONS(Simultaneous_music,Music);
+ Simultaneous_music(Music_list *);
virtual Musical_pitch to_relative_octave (Musical_pitch);
- virtual void translate (Moment dt);
- virtual MInterval time_int() const;
+ virtual Moment duration () const;
};
/**
class Request_chord : public Simultaneous_music
{
public:
+ VIRTUAL_COPY_CONS(Request_chord, Music);
DECLARE_MY_RUNTIME_TYPEINFO;
virtual Musical_pitch to_relative_octave (Musical_pitch);
Request_chord();
- VIRTUAL_COPY_CONS(Request_chord, Music);
};
/**
Sequential_music is a list of music-elements which are placed behind each other.
*/
class Sequential_music : public Music_sequence
{
-
public:
- Moment offset_mom_;
- virtual Musical_pitch to_relative_octave (Musical_pitch);
- Sequential_music(Music_list*);
DECLARE_MY_RUNTIME_TYPEINFO;
VIRTUAL_COPY_CONS(Sequential_music, Music);
- virtual void translate (Moment dt);
- virtual MInterval time_int() const;
+
+ virtual Musical_pitch to_relative_octave (Musical_pitch);
+ Sequential_music(Music_list*);
+ virtual Moment duration () const;
};
#endif // Music_sequence_HH
DECLARE_MY_RUNTIME_TYPEINFO;
virtual void print () const;
- virtual Paper_def* paper_l ();
- virtual Paper_score* paper_score_p () const;
-
Global_translator *get_global_translator_p ();
Translator_group *get_group_translator_p (String type) const;
String get_default_output () const;
class Music_output
{
public:
- Header * header_l_;
+ Scope * header_l_;
String default_out_str_;
String origin_str_;
int errorlevel_i_;
class Music_wrapper_iterator : public Music_iterator
{
Music_iterator *child_iter_p_;
- Music_wrapper *music_l_;
+ Music_wrapper *music_wrapper_l();
public:
- Music_wrapper_iterator (Music_wrapper*);
+ Music_wrapper_iterator ();
~Music_wrapper_iterator ();
virtual void do_print () const;
virtual void construct_children () ;
- virtual void process_and_next (Moment) ;
+ virtual void do_process_and_next (Moment) ;
virtual Moment next_moment () const;
virtual bool ok () const;
DECLARE_MY_RUNTIME_TYPEINFO;
DECLARE_MY_RUNTIME_TYPEINFO;
VIRTUAL_COPY_CONS (Music_wrapper, Music);
Music_wrapper (Music_wrapper const&);
- virtual MInterval time_int () const;
+ virtual Moment duration () const;
virtual ~Music_wrapper ();
};
+
#endif /* MUSIC_WRAPPER_HH */
String translator_id_str_;
virtual Musical_pitch to_relative_octave (Musical_pitch);
- virtual MInterval time_int() const;
+ virtual Moment duration () const;
+
virtual ~Music(){}
void print() const;
virtual void transpose (Musical_pitch );
- virtual void translate (Moment dt);
+ virtual void compress (Moment);
VIRTUAL_COPY_CONS(Music,Music);
DECLARE_MY_RUNTIME_TYPEINFO;
Music();
DEFAULTACCESSOR(Skip_req)
DEFAULTACCESSOR(Dynamic_req)
DEFAULTACCESSOR(Absolute_dynamic_req )
- DEFAULTACCESSOR(Tie_req )
+ DEFAULTACCESSOR(Tie_req)
+ DEFAULTACCESSOR(Musical_span_req)
DEFAULTACCESSOR(Plet_req)
DEFAULTACCESSOR(Span_dynamic_req )
DEFAULTACCESSOR(Abbreviation_req)
/** a request with a duration.
- This request is used only a base class.
+ This request is used only used as a base class.
*/
class Rhythmic_req : public virtual Musical_req {
public:
Duration duration_;
- /* *************** */
- void set_duration (Duration);
bool do_equal_b (Request*) const;
+ void compress (Moment);
virtual Moment duration() const;
Rhythmic_req();
static int compare (Rhythmic_req const&,Rhythmic_req const&);
Moment next;
Real distance;
Real strength;
- /* *************** */
Spacing_req();
REQUESTMETHODS(Spacing_req);
};
/// the characteristics of the text
Text_def *tdef_p_;
- /* *************** */
Text_req (int d, Text_def*);
~Text_req();
Text_req (Text_req const&);
};
-/**
- Requests to start or stop something.
- This type of request typically results in the creation of a #Spanner#
-*/
-class Span_req : public virtual Musical_req {
+class Musical_span_req : public Span_req, public virtual Musical_req
+{
public:
- /// should the spanner start or stop, or is it unwanted?
- enum Spantype {
- NOSPAN, START, STOP
- } spantype;
- bool do_equal_b (Request*) const;
- REQUESTMETHODS(Span_req);
-
- Span_req();
+ REQUESTMETHODS(Musical_span_req);
};
/** Start / stop a beam at this note */
-class Beam_req : public Span_req {
+class Beam_req : public Musical_span_req {
public:
- /* *************** */
REQUESTMETHODS(Beam_req);
Beam_req();
/**
Start / stop an abbreviation beam at this note.
*/
-class Abbreviation_beam_req : public Span_req {
+class Abbreviation_beam_req : public Musical_span_req {
public:
REQUESTMETHODS (Abbreviation_beam_req);
};
/// a slur
-class Slur_req : public Span_req {
+class Slur_req : public Musical_span_req {
public:
REQUESTMETHODS(Slur_req);
};
/// a plet (bracket with) number
-class Plet_req : public Span_req {
+class Plet_req : public Musical_span_req {
public:
int plet_i_;
REQUESTMETHODS(Absolute_dynamic_req);
};
-class Span_dynamic_req : public Dynamic_req, public Span_req {
+class Span_dynamic_req : public Dynamic_req, public Musical_span_req {
public:
virtual bool do_equal_b (Request*) const;
/// Grow or shrink the volume: 1=cresc, -1 = decresc
Keyword_table * keytable_p_;
int errorlevel_i_;
- /* *************** */
void start_main_input ();
void set_notename_table(Notename_table*tab_p);
int default_abbrev_i_;
Duration default_duration_;
Plet plet_;
- Header *default_header_p_;
+ Scope *default_header_p_;
bool first_b_;
bool error_mark_b_;
bool used_b_ ; // manual override..
- /* *************** */
/// which one (left =0)
int rank_i() const;
Line_of_score * line_l_;
Paper_score ();
-
- virtual ~Paper_score();
- String base_output_str () const;
- virtual Paper_outputter* paper_outputter_p (Paper_stream*) const = 0;
- virtual Paper_stream* paper_stream_p () const = 0;
/// add to bottom of pcols
void add_column (Paper_column*);
/// add a Spanner
void typeset_unbroken_spanner (Spanner*);
+
+ virtual ~Paper_score();
protected:
static int default_count_i_;
bool ps_b_;
+protected:
+ VIRTUAL_COPY_CONS(Paper_def,Music_output_def);
+
public:
virtual ~Paper_def ();
DECLARE_MY_RUNTIME_TYPEINFO;
- VIRTUAL_COPY_CONS (Paper_def,Music_output_def);
Array<Interval> shape_int_a_;
Lookup const * lookup_l (int sz) const; // TODO naming
- virtual Paper_def* paper_l ();
- virtual String dimension_str (Real r) const;
- virtual Lookup* lookup_p (Lookup const&) const;
- virtual Lookup* lookup_p (Symtables const&) const;
- virtual String unknown_str () const;
-
/** convert a duration to an idealspacing
influence using the geometric_ and paratime_signatures.
*/
Real arithmetic_constant (Moment minimal_mom) const;
Real arithmetic_spacing (Moment mom,Real constant) const;
virtual int get_next_default_count () const;
- virtual String output_settings_str () const;
+ //urg
+ String tex_output_settings_str () const;
+ String ps_output_settings_str () const;
// urg
friend int yyparse (void*);
};
-#endif // PAPER_DEF_HH
+#endif // Paper_def_HH
class Property_iterator : public Music_iterator
{
- Translation_property *property_l_;
+ Translation_property *property_l() const;
public:
DECLARE_MY_RUNTIME_TYPEINFO;
- Property_iterator (Translation_property* prop_l);
protected:
- virtual void process_and_next (Moment);
+ virtual void do_process_and_next (Moment);
};
#endif // PROPERTY_ITERATOR_HH
+++ /dev/null
-/*
- ps-def.hh -- declare Ps_def
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1998 Jan Nieuwenhuizen <jannneke@gnu.org>
-*/
-
-#ifndef PS_DEF_HH
-#define PS_DEF_HH
-
-#include "paper-def.hh"
-
-class Ps_def : public Paper_def
-{
-public:
- VIRTUAL_COPY_CONS (Ps_def, Paper_def);
- DECLARE_MY_RUNTIME_TYPEINFO;
-
- virtual Lookup* lookup_p (Lookup const&) const;
- virtual Lookup* lookup_p (Symtables const&) const;
-
- virtual String output_settings_str () const;
- virtual Paper_score* paper_score_p () const;
- virtual String unknown_str () const;
-};
-
-#endif // PS_DEF_HH
virtual String character_str (int i) const;
virtual Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const;
virtual Atom hairpin (Real width, bool decresc, bool continued) const;
+ virtual Lookup* lookup_p (Lookup const&) const;
+ virtual Lookup* lookup_p (Symtables const&) const;
+ virtual Paper_outputter* paper_outputter_p (Paper_stream*, Paper_def*, Scope*, String) const;
+ virtual Paper_stream* paper_stream_p () const;
virtual Atom plet (Real dy , Real dx, Direction dir) const;
virtual Atom ps_beam (Real slope, Real width, Real thick) const;
virtual Atom slur (Array<Offset> controls) const;
virtual Atom stem (Real y1, Real y2) const;
virtual Atom text (String style, String text) const;
+ virtual String unknown_str () const;
virtual Atom vbracket (Real &y) const;
};
+++ /dev/null
-/*
- ps-score.hh -- declare Ps_score
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1998 Jan Nieuwenhuizen <jannneke@gnu.org>
-*/
-
-#ifndef PS_SCORE_HH
-#define PS_SCORE_HH
-
-#include "p-score.hh"
-
-class Ps_score : public Paper_score
-{
-public:
- virtual Paper_outputter* paper_outputter_p (Paper_stream*) const;
- virtual Paper_stream* paper_stream_p () const;
-};
-
-#endif // PS_SCORE_HH
#include "music-iterator.hh"
+/**
+ Walk through a Request_chord
+ */
class Request_chord_iterator : public Music_iterator {
- const Request_chord * elt_l_;
+ Request_chord * elt_l () const;
+ /**
+ cache elt_l ()->duration ().
+ */
Moment elt_duration_;
bool last_b_;
+
public:
- Request_chord_iterator (Request_chord*);
+ Request_chord_iterator ();
DECLARE_MY_RUNTIME_TYPEINFO;
protected:
- virtual void process_and_next (Moment);
+ virtual void do_process_and_next (Moment);
virtual Moment next_moment() const;
virtual void construct_children();
virtual bool ok() const;
public:
- /* *************** */
-
virtual ~Request(){}
DECLARE_MY_RUNTIME_TYPEINFO;
VIRTUAL_COPY_CONS(Request,Music);
- virtual MInterval time_int() const;
- virtual Moment duration() const { return 0; }
-
/* accessors for children
maybe checkout RTTI
*/
Script_req (Script_req const&);
};
-
+
+/**
+ Requests to start or stop something.
+ This type of request typically results in the creation of a #Spanner#
+*/
+class Span_req : public virtual Request {
+public:
+ /// should the spanner start or stop, or is it unwanted?
+ enum Spantype {
+ NOSPAN, START, STOP
+ } spantype;
+ bool do_equal_b (Request*) const;
+ REQUESTMETHODS(Span_req);
+
+ Span_req();
+};
+
+
#endif
/// length of notes/rests in this column
Array<Moment> durations;
- /* *************** */
Moment when() { return when_; }
Score_column (Moment when);
Request*req_l_;
Array<Engraver*> origin_grav_l_arr_;
- /* *** */
Score_element_info (Score_element*, Request*);
Score_element_info();
};
/// paper_, staffs_ and commands_ form the problem definition.
Link_array<Music_output_def> def_p_arr_;
Music * music_p_;
- Header * header_p_;
+ Scope * header_p_;
int errorlevel_i_;
/// direction of the beam
Direction beam_dir_;
- /* *************** */
Stem ();
/// ensure that this Stem also encompasses the Notehead #n#
+++ /dev/null
-/*
- tex-def.hh -- declare Tex_def
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1998 Jan Nieuwenhuizen <jannneke@gnu.org>
-*/
-
-#ifndef TEX_DEF_HH
-#define TEX_DEF_HH
-
-#include "paper-def.hh"
-
-class Tex_def : public Paper_def
-{
-public:
- VIRTUAL_COPY_CONS (Tex_def, Paper_def);
- DECLARE_MY_RUNTIME_TYPEINFO;
-
- virtual String dimension_str (Real r) const;
- virtual Lookup* lookup_p (Lookup const&) const;
- virtual Lookup* lookup_p (Symtables const&) const;
-
- virtual String output_settings_str () const;
- virtual Paper_score* paper_score_p () const;
- virtual String unknown_str () const;
-};
-
-#endif // TEX_DEF_HH
virtual Atom* atom_p (String, int, Box) const;
Atom embed (Atom a) const;
virtual Atom hairpin (Real width, bool decresc, bool continued) const;
+ virtual Lookup* lookup_p (Lookup const&) const;
+ virtual Lookup* lookup_p (Symtables const&) const;
+ virtual Paper_outputter* paper_outputter_p (Paper_stream*, Paper_def*, Scope*, String) const;
+ virtual Paper_stream* paper_stream_p () const;
virtual Atom plet (Real dy , Real dx, Direction dir) const;
+ virtual String print_dimen (Real) const;
virtual Atom ps_beam (Real slope, Real width, Real thick) const;
virtual Atom slur (Array<Offset> controls) const;
virtual Atom stem (Real y1, Real y2) const;
virtual Atom text (String style, String text) const;
+ virtual String unknown_str () const;
virtual Atom vbracket (Real &y) const;
};
+++ /dev/null
-/*
- tex-score.hh -- declare Tex_score
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1998 Jan Nieuwenhuizen <jannneke@gnu.org>
-*/
-
-#ifndef TEX_SCORE_HH
-#define TEX_SCORE_HH
-
-#include "p-score.hh"
-
-class Tex_score : public Paper_score
-{
-public:
- virtual Paper_outputter* paper_outputter_p (Paper_stream*) const;
- virtual Paper_stream* paper_stream_p () const;
-};
-
-#endif // TEX_SCORE_HH
/// do I have width?
bool fat_b_;
- /* ***************/
Text_item (General_script_def* ,Direction dir=CENTER);
virtual ~Text_item ();
/// idem
int bars_i_;
- /* *************** */
void set_cadenza (bool);
Moment when_mom () const { return when_; }
void OK() const;
#include "music-iterator.hh"
#include "pcursor.hh"
-class Sequential_music_iterator : private PCursor<Music*>, public Music_iterator
+class Sequential_music_iterator : public Music_iterator
{
Moment here_mom_;
- const Sequential_music * sequential_music_C_;
+ PCursor<Music*> *cursor_p_;
Music_iterator * iter_p_;
void start_next_element();
void leave_element();
void set_Sequential_music_translator();
-
+protected:
+ Sequential_music * sequential_music_l() const;
public:
- Sequential_music_iterator (Sequential_music const*);
+ Sequential_music_iterator ();
DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual void do_print() const;
virtual void construct_children();
~Sequential_music_iterator();
- virtual void process_and_next (Moment);
+ virtual void do_process_and_next (Moment);
virtual Moment next_moment() const;
virtual bool ok() const;
};
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "line-spacer.hh"
-Line_spacer::Line_spacer ()
+Line_spacer::Line_spacer()
{
- paper_l_ = 0;
+ paper_l_ =0;
}
-
-Line_spacer::~Line_spacer ()
-{
-}
-
Paper_def*
-Line_spacer::paper_l () const
+Line_spacer::paper_l() const
{
- return paper_l_;
+ return paper_l_ ;
}
+Line_spacer::~Line_spacer ()
+{
+}
return s;
}
+String
+Lookup::base_output_str () const
+{
+ assert (paper_l_);
+ String str = paper_l_->get_default_output ();
+
+ if (str.empty_b ())
+ {
+ str = default_outname_base_global;
+ int def = paper_l_->get_next_default_count ();
+ if (def)
+ str += "-" + to_str (def);
+ }
+ return str;
+}
Atom
Lookup::beam (Real slope, Real width, Real thick) const
String
Lookup::print_dimen (Real r) const
{
- return paper_l_->dimension_str (r);
+ String s = to_str (r, "%.3f");
+ if (s.index_i ("NaN") != -1)
+ {
+ warning (_ ("NaN"));
+ s = "0.0";
+ }
+ return s;
}
Atom
#include "config.hh"
#include "file-results.hh"
#include "debug.hh"
-#include "ps-def.hh"
-#include "tex-def.hh"
#include "ps-lookup.hh"
#include "tex-lookup.hh"
Tex_lookup tex_lookup;
Lookup* global_lookup_l = &tex_lookup;
-Ps_def ps_def;
-Tex_def tex_def;
-Paper_def* global_paper_l = &tex_def;
-
bool experimental_features_global_b = false;
bool dependency_global_b = false;
case 't':
experimental_features_global_b = true;
global_lookup_l = &ps_lookup;
- global_paper_l = &ps_def;
break;
case 'o':
outname_str = oparser.optional_argument_ch_C_;
#include "translation-property.hh"
#include "change-iterator.hh"
#include "change-translator.hh"
-
#include "music-wrapper.hh"
#include "music-wrapper-iterator.hh"
+#include "compressed-music-iterator.hh"
+#include "compressed-music.hh"
+
IMPLEMENT_IS_TYPE_B(Music_iterator);
return 0;
}
+
void
-Music_iterator::process_and_next (Moment)
+Music_iterator::process_and_next (Moment m)
{
- first_b_ = false;
+ do_process_and_next (m);
}
+void
+Music_iterator::do_process_and_next (Moment)
+{
+ first_b_ = false;
+}
bool
Music_iterator::ok() const
}
Music_iterator*
-Music_iterator::static_get_iterator_p (Music *m,
- Translator_group*report_l)
+Music_iterator::static_get_iterator_p (Music const *m, Translator_group *report_l)
{
Music_iterator * p =0;
if (m->is_type_b (Request_chord::static_name()))
- p = new Request_chord_iterator ((Request_chord*) m);
+ p = new Request_chord_iterator;
else if (m->is_type_b (Simultaneous_music::static_name()))
- p = new Simultaneous_music_iterator ((Simultaneous_music*) m);
+ p = new Simultaneous_music_iterator;
else if (m->is_type_b (Sequential_music::static_name()))
- p = new Sequential_music_iterator ((Sequential_music*) m);
+ p = new Sequential_music_iterator;
else if (m->is_type_b (Translation_property::static_name ()))
- p = new Property_iterator((Translation_property *) m);
+ p = new Property_iterator;
else if (m->is_type_b (Change_translator::static_name ()))
- p = new Change_iterator((Change_translator*) m);
+ p = new Change_iterator;
+ else if (m->is_type_b (Compressed_music::static_name ()))
+ p = new Compressed_music_iterator;
else if (m->is_type_b (Music_wrapper::static_name ()))
- p = new Music_wrapper_iterator ((Music_wrapper *)m);
-
-
- if (m -> translator_type_str_.length_i ())
+ p = new Music_wrapper_iterator;
+
+ p->music_l_ = m;
+ if (m->translator_type_str_.length_i ())
{
Translator_group* a =report_l->
- find_create_translator_l (m-> translator_type_str_, m->translator_id_str_);
+ find_create_translator_l (m->translator_type_str_, m->translator_id_str_);
p->set_translator (a);
}
if (! p->report_to_l())
p ->set_translator (report_l);
+
return p;
}
+void
+Music_iterator::inherit_info(Music_iterator const *parent)
+{
+}
+
Music_iterator*
-Music_iterator::get_iterator_p (Music*m) const
+Music_iterator::get_iterator_p (Music const*m) const
{
- Music_iterator*p = static_get_iterator_p (m,report_to_l());
- p->daddy_iter_l_ = (Music_iterator*)this;
+ Music_iterator*p = static_get_iterator_p (m, report_to_l());
+ p->inherit_info (this);
p->construct_children();
return p;
}
Music_iterator::Music_iterator()
{
- daddy_iter_l_ =0;
first_b_ = true;
}
IMPLEMENT_IS_TYPE_B1(Sequential_music,Music_sequence);
IMPLEMENT_IS_TYPE_B1(Simultaneous_music,Music_sequence);
-MInterval
-Simultaneous_music::time_int() const
+Moment
+Simultaneous_music::duration () const
{
- MInterval m;
+ Moment dur = 0;
for (iter (music_p_list_p_->top(), i); i.ok (); i++)
- m.unite (i->time_int());
+ dur = dur >? i->duration ();
- return m;
+ return dur;
}
void
-Simultaneous_music::translate (Moment m)
+Music_sequence::compress (Moment m)
{
- for (iter (music_p_list_p_->top(), i); i.ok (); i++)
- i->translate (m);
+ for (PCursor<Music*> i(music_p_list_p_->top()); i.ok (); i++)
+ i->compress (m);
}
Simultaneous_music::Simultaneous_music(Music_list *p)
Sequential_music::Sequential_music(Music_list *p)
: Music_sequence (p)
{
- offset_mom_ =0;
}
-MInterval
-Sequential_music::time_int() const
+Moment
+Sequential_music::duration () const
{
Moment last=0;
for (iter (music_p_list_p_->top(), i); i.ok (); i++)
{
- MInterval interval = i->time_int();
-
- /*
- c4 <> c4
- */
- if (!interval.empty_b())
- last += interval.length();
+ last += i->duration ();
}
- return offset_mom_ + MInterval (0,last);
+ return last;
}
Musical_pitch
return music_p_list_p_->do_relative_octave (p, true);
}
-void
-Sequential_music::translate (Moment dt)
-{
- offset_mom_ += dt;
-}
-
-
-
Musical_pitch
Music_list::do_relative_octave (Musical_pitch last, bool ret_first)
return g;
}
-Paper_def*
-Music_output_def::paper_l ()
-{
- return 0;
-}
-
-Paper_score*
-Music_output_def::paper_score_p () const
-{
- return 0;
-}
-
void
Music_output_def::print () const
{
/*
- music-wrapper-iterator.cc -- implement
+ music-wrapper-iterator.cc -- implement Music_wrapper_iterator
source file of the GNU LilyPond music typesetter
#include "music-wrapper-iterator.hh"
#include "music-wrapper.hh"
-Music_wrapper_iterator::Music_wrapper_iterator (Music_wrapper *r)
+Music_wrapper_iterator::Music_wrapper_iterator ()
{
child_iter_p_ =0;
- music_l_ = r;
}
IMPLEMENT_IS_TYPE_B1(Music_wrapper_iterator, Music_iterator);
void
Music_wrapper_iterator::construct_children ()
{
- child_iter_p_ = get_iterator_p (music_l_->element_p_);
+ child_iter_p_ = get_iterator_p (music_wrapper_l ()->element_p_);
}
Music_wrapper_iterator::~Music_wrapper_iterator ()
delete child_iter_p_;
}
-
+Music_wrapper*
+Music_wrapper_iterator::music_wrapper_l ()
+{
+ return (Music_wrapper*) music_l_;
+}
bool
Music_wrapper_iterator::ok () const
{
}
void
-Music_wrapper_iterator::process_and_next (Moment m)
+Music_wrapper_iterator::do_process_and_next (Moment m)
{
child_iter_p_->process_and_next (m);
- Music_iterator::process_and_next (m);
+ Music_iterator::do_process_and_next (m);
}
Moment
IMPLEMENT_IS_TYPE_B1 (Music_wrapper, Music);
-MInterval
-Music_wrapper::time_int () const
+Moment
+Music_wrapper::duration () const
{
- return element_p_->time_int ();
+ return element_p_->duration ();
}
#include "debug.hh"
#include "musical-pitch.hh"
-MInterval
-Music::time_int() const
+Moment
+Music::duration () const
{
- return MInterval (0,0);
+ return 0;
}
void
}
-void
-Music::translate (Moment)
-{
-}
-
void
Music::do_print() const
{
return m;
}
-
+void
+Music::compress (Moment)
+{
+}
Tie_req::do_print () const{}
-/* *************** */
+IMPLEMENT_IS_TYPE_B1(Span_req,Request);
+IMPLEMENT_IS_TYPE_B2(Musical_span_req, Span_req, Musical_span_req);
-
-IMPLEMENT_IS_TYPE_B1 (Span_req,Musical_req);
+void
+Musical_span_req::do_print () const
+{
+ Span_req::do_print ();
+}
+
void
Span_req::do_print () const
{
Spacing_req::do_print ();
}
-/* *************** */
Melodic_req::Melodic_req ()
{
pitch_.print ();
}
-/* *************** */
int
Rhythmic_req::compare (Rhythmic_req const &r1, Rhythmic_req const &r2)
{
return !compare (*this, *rh);
}
-void
-Rhythmic_req::set_duration (Duration d)
-{
- duration_ = d;
-}
Rhythmic_req::Rhythmic_req ()
{
{
return duration_.length ();
}
-/* *************** */
+
+void
+Rhythmic_req::compress (Moment m)
+{
+ duration_.compress (m);
+}
+
Rhythmic_req::do_print ();
}
-/* *************** */
bool
Note_req::do_equal_b (Request*r) const
Rhythmic_req::do_print ();
#endif
}
-/* *************** */
IMPLEMENT_IS_TYPE_B1 (Rest_req, Rhythmic_req);
Rhythmic_req::do_print ();
}
-/* *************** */
}
-/* *************** */
IMPLEMENT_IS_TYPE_B1 (Beam_req,Span_req);
{
}
-/* *************** */
IMPLEMENT_IS_TYPE_B1 (Abbreviation_beam_req, Span_req);
{
}
-/* *************** */
bool
Span_req:: do_equal_b (Request*r) const
spantype = NOSPAN;
}
-/* *************** */
Script_req::Script_req (Script_req const&s)
{
dir_ = s.dir_;
{
delete scriptdef_p_;
}
-/* *************** */
Text_req::~Text_req ()
#endif
}
-/* *************** */
IMPLEMENT_IS_TYPE_B1 (Skip_req,Musical_req);
{"grouping", GROUPING},
{"header", HEADER},
{"in", IN_T},
- {"lyric", LYRIC},
+ {"lyrics", LYRICS},
{"key", KEY},
{"keysignature", KEYSIGNATURE},
{"mark", MARK},
{"musicalpitch", MUSICAL_PITCH},
{"time", TIME_T},
+ {"times", TIMES},
{"midi", MIDI},
{"mm", MM_T},
{"name", NAME},
#include "musical-request.hh"
#include "command-request.hh"
#include "parser.hh"
-#include "header.hh"
+#include "scope.hh"
#include "file-results.hh"
#include "midi-def.hh"
#include "paper-def.hh"
assert (!duration_p->plet_b ());
duration_p->set_plet (1, 2);
}
- rq->set_duration (*duration_p);
+ rq->duration_ = *duration_p;
rq->set_spot (here_input ());
delete duration_p ;
return v;
for (int i = 0; i < reqs.size (); i++)
if (reqs[i]->access_Musical_req ()->access_Span_dynamic_req ())
{
- Span_dynamic_req* s_l= (reqs[i]->access_Musical_req ()->access_Span_dynamic_req ()) ;
+ Span_dynamic_req* s_l= reqs[i]->access_Musical_req ()->access_Span_dynamic_req ();
s_l->dynamic_dir_ = (t == '<') ? UP:DOWN;
}
My_lily_parser::default_paper_p ()
{
Identifier *id = lexer_p_->lookup_identifier ("$defaultpaper");
- return id ? id->access_Paper_def () : (Paper_def*)global_paper_l->clone ();
+ return id ? id->access_Paper_def () : new Paper_def ;
}
Midi_def*
#include "p-col.hh"
#include "p-score.hh"
#include "p-col.hh"
-#include "header.hh"
+#include "scope.hh"
#include "word-wrap.hh"
#include "gourlay-breaking.hh"
#include "paper-stream.hh"
#endif
}
-String
-Paper_score::base_output_str () const
-{
- assert (paper_l_);
- String str = paper_l_->get_default_output ();
-
- if (str.empty_b ())
- {
- str = default_outname_base_global;
- int def = paper_l_->get_next_default_count ();
- if (def)
- str += "-" + to_str (def);
- }
- return str;
-}
-
void
Paper_score::typeset_element (Score_element * elem_p)
{
return sol;
}
+
+
void
Paper_score::process ()
{
Array<Column_x_positions> breaking = calc_breaking ();
- Paper_stream* pstream_p = paper_stream_p ();
- outputter_l_ = paper_outputter_p (pstream_p);
+ Paper_stream* paper_stream_p = global_lookup_l->paper_stream_p ();
+ outputter_l_ = global_lookup_l->paper_outputter_p (paper_stream_p, paper_l_, header_l_, origin_str_);
Link_array<Line_of_score> lines;
for (int i=0; i < breaking.size (); i++)
line_l->output_all ();
*mlog << ']' << flush;
remove_line (line_l);
-
}
-
+
// huh?
delete outputter_l_;
- delete pstream_p;
+ delete paper_stream_p;
outputter_l_ = 0;
+
+ *mlog << '\n' << flush;
}
void
#include "scope.hh"
#include "assoc.hh"
#include "assoc-iter.hh"
-#include "dimensions.hh"
-
-IMPLEMENT_IS_TYPE_B1 (Paper_def, Music_output_def);
-
-int Paper_def::default_count_i_ = 0;
Paper_def::Paper_def ()
{
lookup_p_assoc_p_ = new Assoc<int, Lookup*>;
}
-Paper_def::Paper_def (Paper_def const&s)
- : Music_output_def (s)
-{
- lookup_p_assoc_p_ = new Assoc<int, Lookup*>;
- for (Assoc_iter<int, Lookup*> ai(*s.lookup_p_assoc_p_); ai.ok (); ai++)
- {
- Lookup * l = lookup_p (*ai.val ());
- l->paper_l_ = this;
- set_lookup (ai.key(), l);
- }
-}
Paper_def::~Paper_def ()
{
delete lookup_p_assoc_p_;
}
-/**
- Get the measure wide constant for arithmetic.
-
- @see
- John S. Gourlay. ``Spacing a Line of Music,'' Technical Report
- OSU-CISRC-10/87-TR35, Department of Computer and Information Science,
- The Ohio State University, 1987.
-
- */
-Real
-Paper_def::arithmetic_constant (Moment d) const
-{
- return get_var ("arithmetic_basicspace") - log_2 (Moment (1,8) <? d);
-}
-
-Real
-Paper_def::arithmetic_spacing (Moment d ,Real k) const
-{
- return (log_2 (d) + k)* get_var ("arithmetic_multiplier");
-}
-
-Real
-Paper_def::beam_thickness_f () const
-{
- return get_var ("beam_thickness");
-}
-
-Real
-Paper_def::duration_to_dist (Moment d,Real k) const
-{
- return arithmetic_spacing (d,k);
-}
-
-int
-Paper_def::get_next_default_count () const
+Paper_def::Paper_def (Paper_def const&s)
+ : Music_output_def (s)
{
- return default_count_i_ ++;
+ lookup_p_assoc_p_ = new Assoc<int, Lookup*>;
+ for (Assoc_iter<int, Lookup*> ai(*s.lookup_p_assoc_p_); ai.ok (); ai++)
+ {
+ Lookup * l = global_lookup_l->lookup_p (*ai.val ());
+ l->paper_l_ = this;
+ set_lookup (ai.key(), l);
+ }
}
Real
return shape_int_a_[n];
}
+Real
+Paper_def::beam_thickness_f () const
+{
+ return get_var ("beam_thickness");
+}
+
+Real
+Paper_def::linewidth_f () const
+{
+ return get_var ("linewidth");
+}
+
+Real
+Paper_def::duration_to_dist (Moment d,Real k) const
+{
+ return arithmetic_spacing (d,k);
+}
+
+
+/**
+ Get the measure wide constant for arithmetic.
+
+ @see
+ John S. Gourlay. ``Spacing a Line of Music,'' Technical Report
+ OSU-CISRC-10/87-TR35, Department of Computer and Information Science,
+ The Ohio State University, 1987.
+
+ */
+Real
+Paper_def::arithmetic_constant (Moment d) const
+{
+ return get_var ("arithmetic_basicspace") - log_2 (Moment (1,8) <? d);
+}
+
+Real
+Paper_def::arithmetic_spacing (Moment d ,Real k) const
+{
+ return (log_2 (d) + k)* get_var ("arithmetic_multiplier");
+}
+
Real
Paper_def::geometric_spacing (Moment d) const
{
return get_var ("basicspace") + get_var ("unitspace") * dur_f;
}
+void
+Paper_def::set_lookup (int i, Lookup*l)
+{
+ if (lookup_p_assoc_p_->elem_b (i))
+ {
+ delete lookup_p_assoc_p_->elem (i);
+ }
+ l ->paper_l_ = this;
+ (*lookup_p_assoc_p_)[i] = l;
+}
+
Real
Paper_def::interline_f () const
{
}
Real
-Paper_def::linewidth_f () const
+Paper_def::rule_thickness () const
{
- return get_var ("linewidth");
+ return get_var ("rulethickness");
}
Real
-Paper_def::rule_thickness () const
+Paper_def::staffline_f () const
{
return get_var ("rulethickness");
}
+Real
+Paper_def::staffheight_f () const
+{
+ return get_var ("staffheight");
+}
+
Real
Paper_def::interbeam_f (int multiplicity_i) const
{
return get_var ("interline") /2.0 ;
}
-// urg, how c++ sucks
-// virtual_copy_cons wants these...
-
-// aarg, its even worse, Paper_def gets constructed via Identifier,
-// another input->output hardlink.
-Lookup*
-Paper_def::lookup_p (Lookup const& l) const
-{
- // return 0;
- return global_paper_l->lookup_p (l);
-}
-
-Lookup*
-Paper_def::lookup_p (Symtables const& s) const
-{
- // return 0;
- return global_paper_l->lookup_p (s);
-}
-
-String
-Paper_def::output_settings_str () const
-{
- return "";
-}
-
Real
Paper_def::note_width () const
{
return get_var ("notewidth");
}
-Paper_def*
-Paper_def::paper_l ()
-{
- return this;
-}
-
void
Paper_def::print () const
{
#endif
}
-String
-Paper_def::dimension_str (Real r) const
-{
- return ::dimension_str (r);
-}
-
Lookup const *
Paper_def::lookup_l (int i) const
{
return (*lookup_p_assoc_p_)[i];
}
-void
-Paper_def::set_lookup (int i, Lookup*l)
-{
- if (lookup_p_assoc_p_->elem_b (i))
- {
- delete lookup_p_assoc_p_->elem (i);
- }
- l ->paper_l_ = this;
- (*lookup_p_assoc_p_)[i] = l;
-}
+IMPLEMENT_IS_TYPE_B1 (Paper_def, Music_output_def);
-Real
-Paper_def::staffline_f () const
+String
+Paper_def::ps_output_settings_str () const
{
- return get_var ("rulethickness");
+ String s ("\n ");
+ for (Assoc_iter<String,Identifier*> i (*scope_p_); i.ok (); i++)
+ s += String ("/mudelapaper") + i.key ()
+ + "{" + i.val ()->str () + "} bind def\n";
+ s += *scope_p_->elem ("pssetting")->access_String ();
+ return s;
}
-Real
-Paper_def::staffheight_f () const
+String
+Paper_def::tex_output_settings_str () const
{
- return get_var ("staffheight");
+ String s ("\n ");
+ for (Assoc_iter<String,Identifier*> i (*scope_p_); i.ok (); i++)
+ s += String ("\\def\\mudelapaper") + i.key ()
+ + "{" + i.val ()->str () + "}\n";
+ s += *scope_p_->elem ("texsetting")->access_String ();
+ return s;
}
-String
-Paper_def::unknown_str () const
+int Paper_def::default_count_i_ = 0;
+
+int
+Paper_def::get_next_default_count () const
{
- return "";
+ return default_count_i_ ++;
}
+
+
#include "paper-outputter.hh"
#include "paper-stream.hh"
-#include "paper-def.hh"
#include "molecule.hh"
#include "atom.hh"
#include "array.hh"
Array<String> a;
String r;
- a.push (global_paper_l->dimension_str (a_off.y()));
- a.push (global_paper_l->dimension_str (a_off.x()));
+ a.push (global_lookup_l->print_dimen (a_off.y()));
+ a.push (global_lookup_l->print_dimen (a_off.x()));
a.push (i->str_);
r += global_lookup_l->substitute_args (s, a);
*outstream_l_ << r;
#include "script-def.hh"
#include "symtable.hh"
#include "lookup.hh"
+#include "ps-lookup.hh"
+#include "tex-lookup.hh"
#include "misc.hh"
#include "my-lily-lexer.hh"
#include "paper-def.hh"
#include "translator-group.hh"
#include "score.hh"
#include "music-list.hh"
-#include "header.hh"
#include "duration-convert.hh"
#include "change-translator.hh"
#include "file-results.hh"
#include "scope.hh"
#include "relative-music.hh"
#include "transposed-music.hh"
+#include "compressed-music.hh"
// mmm
-Mudela_version oldest_version ("1.0.6");
-Mudela_version version ("1.0.6");
+Mudela_version oldest_version ("1.0.7");
+Mudela_version version ("1.0.8");
// needed for bison.simple's malloc() and free()
4
};
+struct Assignment {
+ String *name_p_;
+ Identifier *id_p_;
+ ~Assignment () {
+ delete name_p_;
+ delete id_p_;
+ }
+ Assignment () {
+ name_p_ = 0;
+ id_p_ =0;
+ }
+ Assignment (Assignment const&s)
+ {
+ name_p_ = new String (*s.name_p_);
+ id_p_ = s.id_p_->clone ();
+ }
+};
+
Paper_def* current_paper = 0;
#ifndef NDEBUG
Music *music;
Music_list *music_list;
Score *score;
- Header *header;
+ Scope *scope;
Interval *interval;
Musical_req* musreq;
Music_output_def * outputdef;
%token IN_T
%token KEY
%token KEYSIGNATURE
-%token LYRIC
+%token LYRICS
%token MAEBTELP
%token MARK
%token MEASURES
%token TELP
%token TEMPO
%token TIME_T
+%token TIMES
%token TRANSLATOR
%token TRANSPOSE
%token TYPE
%type <outputdef> output_def
-%type <header> mudela_header mudela_header_body
+%type <scope> mudela_header mudela_header_body
%type <box> box
%type <i> open_request_parens close_request_parens
%type <i> open_abbrev_parens
%type <i> open_plet_parens close_plet_parens
%type <i> sub_quotes sup_quotes
-%type <music> simple_element request_chord command_element
+%type <music> simple_element request_chord command_element Simple_music Composite_music
%type <i> abbrev_type
%type <i> int unsigned
%type <i> script_dir
-%type <id> identifier_init simple_identifier_init
+%type <id> identifier_init simple_identifier_init block_identifier
%type <duration> steno_duration notemode_duration
%type <duration> entered_notemode_duration explicit_duration
%type <interval> dinterval
%type <music> property_def translator_change
%type <music_list> Music_list
%type <paper> paper_block paper_def_body
-%type <real> dim real
-%type <real> real_mult_expression real_primary
-%type <real> unit
+%type <real> real_expression real dimension
%type <request> abbrev_command_req
%type <request> post_request structured_post_request
%type <pair> plet_fraction
%type <request> command_req verbose_command_req
%type <request> script_req dynamic_req
%type <string> string
-%type <string> string_primary
%type <score> score_block score_body
%type <intarr> shape_array
%type <script> script_definition script_body mudela_script gen_script_def
%type <trans> translator_spec translator_spec_body
%type <tempo> tempo_request
%type <notenametab> notenames_body notenames_block
-%expect 1
+%expect 3
+
+%left '-' '+'
+%left '*' '/'
+%left UNARY_MINUS
%%
mudela: /* empty */
| mudela toplevel_expression {}
- | mudela add_declaration { }
+ | mudela assignment { }
| mudela error
| mudela check_version { }
;
;
mudela_header_body:
- {
- $$ = new Header;
+ {
+ $$ = new Scope;
+ THIS->lexer_p_-> scope_l_arr_.push ($$);
}
- | mudela_header_body STRING '=' string ';' {
- (*$$)[*$2] = *$4;
- delete $2;
- delete $4;
+ | mudela_header_body assignment ';' {
+
}
;
mudela_header:
HEADER '{' mudela_header_body '}' {
$$ = $3;
+ THIS->lexer_p_-> scope_l_arr_.pop ();
}
;
/*
DECLARATIONS
*/
-add_declaration:
+assignment:
STRING {
THIS->remember_spot ();
}
- /* cont */ '=' identifier_init optional_semicolon {
+ /* cont */ '=' identifier_init {
THIS->lexer_p_->set_identifier (*$1, $4);
$4->init_b_ = THIS->init_parse_b_;
$4->set_spot (THIS->pop_spot ());
simple_identifier_init: identifier_init
;
+
identifier_init:
+ block_identifier
+ ;
+
+block_identifier:
score_block {
$$ = new Score_identifier ($1, SCORE_IDENTIFIER);
$$ = new Midi_def_identifier ($1, MIDI_IDENTIFIER);
}
- | script_definition {
- $$ = new General_script_def_identifier ($1, SCRIPT_IDENTIFIER);
-
+ | symtables {
+ $$ = new Symtables_identifier ($1, IDENTIFIER);
+ }
+ | translator_spec {
+ $$ = new Translator_identifier ($1, TRANS_IDENTIFIER);
}
| Music {
$$ = new Music_identifier ($1, MUSIC_IDENTIFIER);
-
- }
- | symtables {
- $$ = new Symtables_identifier ($1, IDENTIFIER);
}
+
| post_request {
$$ = new Request_identifier ($1, POST_REQUEST_IDENTIFIER);
}
| int {
$$ = new int_identifier (new int ($1), INT_IDENTIFIER);
}
- | translator_spec {
- $$ = new Translator_identifier ($1, TRANS_IDENTIFIER);
+ | script_definition {
+ $$ = new General_script_def_identifier ($1, SCRIPT_IDENTIFIER);
+
}
;
$$ = p;
}
| paper_def_body int '=' symtables { // ugh, what a syntax
- Lookup * l = THIS->default_paper_p ()->lookup_p (*$4);
+ Lookup * l = global_lookup_l->lookup_p (*$4);
$$->set_lookup ($2, l);
}
- | paper_def_body STRING '=' simple_identifier_init ';' {
- THIS->lexer_p_->set_identifier (*$2, $4);
- delete $2;
+ | paper_def_body assignment ';' {
+
}
| paper_def_body translator_spec {
- $$-> assign_translator ($2);
+ $$->assign_translator ($2);
}
| paper_def_body SHAPE '=' shape_array ';' {
$$->shape_int_a_ = *$4;
}
;
-real_primary:
- REAL {
- $$ = $1;
+
+real:
+ real_expression { $$ = $1; }
+ ;
+
+
+dimension:
+ REAL CM_T {
+ $$ = $1 CM;
}
- | REAL_IDENTIFIER {
- $$= *$1->access_Real (false);
+ | REAL PT_T {
+ $$ = $1 PT;
}
- | dim
- | '(' real ')' {
- $$ = $2;
+ | REAL IN_T {
+ $$ = $1 INCH;
+ }
+ | REAL MM_T {
+ $$ = $1 MM;
}
;
-real:
- real_mult_expression
- | real '+' real_mult_expression {
- $$ = $1 + $3;
+real_expression:
+ REAL {
+ $$ = $1;
}
- | real '-' real_mult_expression {
- $$ = $1 - $3;
+ | dimension
+ | REAL_IDENTIFIER {
+ $$= *$1->access_Real (false);
}
- ;
-
-real_mult_expression:
- real_primary
- | real_mult_expression '*' real_primary {
+ | '-' real_expression %prec UNARY_MINUS {
+ $$ = -$2;
+ }
+ | real_expression '*' real_expression {
$$ = $1 * $3;
}
- | real_mult_expression '/' real_primary {
+ | real_expression '/' real_expression {
$$ = $1 / $3;
}
+ | real_expression '+' real_expression {
+ $$ = $1 + $3;
+ }
+ | real_expression '-' real_expression {
+ $$ = $1 - $3;
+ }
+ | '(' real_expression ')' {
+ $$ = $2;
+ }
;
+
shape_array:
/* empty */ {
$$ = new Array<Interval>;
}
- | shape_array dim dim {
+ | shape_array real real {
$$->push(Interval($2, $2 + $3));
};
;
+Music:
+ Simple_music
+ | Composite_music
+ ;
+
Sequential_music: '{' Music_list '}' {
$$ = new Sequential_music ($2);
}
$$ = new Simultaneous_music ($2);
}
;
-Music:
+
+Simple_music:
request_chord { $$ = $1; }
- | TYPE STRING Music {
+ | MUSIC_IDENTIFIER { $$ = $1->access_Music (true); }
+ | property_def
+ | translator_change
+ ;
+
+
+Composite_music:
+ TYPE STRING Music {
$$ = $3;
$$->translator_type_str_ = *$2;
delete $2;
delete $2;
delete $4;
}
+ | TIMES int '/' int Music {
+ $$ = new Compressed_music ($2, $4, $5);
+
+ }
| Simultaneous_music { $$ = $1; }
| Sequential_music { $$ = $1; }
| TRANSPOSE musical_pitch Music {
$$ = new Transposed_music ($3, *$2);
delete $2;
}
- | MUSIC_IDENTIFIER { $$ = $1->access_Music (true); }
| NOTES
{ THIS->lexer_p_->push_note_state (); }
Music
THIS->lexer_p_->pop_state ();
}
- | LYRIC
+ | LYRICS
{ THIS->lexer_p_->push_lyric_state (); }
Music
{
$$ = $3;
THIS->lexer_p_->pop_state ();
}
- | property_def
- | translator_change
| relative_music { $$ = $1; }
;
;
-
request_chord:
pre_requests simple_element post_requests {
THIS->add_requests ((Simultaneous_music*)$2);//ugh
| command_element
;
-
-
-
command_element:
command_req {
$$ = new Request_chord;
$$-> set_spot (THIS->here_input ());
$1-> set_spot (THIS->here_input ());
((Simultaneous_music*)$$) ->add_music ($1);//ugh
-
}
;
| COMMAND_IDENTIFIER {
$$ = $1->access_Request (true);
}
+/*
+ | '[' {
+ $$ = new Beam_req;
+ $$->spantype = Span_req::START;
+ }
+ | ']' {
+ $$ = new Beam_req;
+ $$->spantype = Span_req::STOP;
+ }
+*/
;
+
verbose_command_req:
BAR STRING {
$$ = new Bar_req (*$2);
steno_notepitch notemode_duration {
if (!THIS->lexer_p_->note_state_b ())
THIS->parser_error (_ ("have to be in Note mode for notes"));
- $1->set_duration (*$2);
+ $1->duration_ = *$2;
$$ = THIS->get_note_element ($1, $2);
}
| RESTNAME notemode_duration {
}
;
-string_primary:
+
+string:
STRING {
$$ = $1;
}
| STRING_IDENTIFIER {
$$ = $1->access_String (true);
}
- ;
-
-string:
- string_primary {
- $$ = $1;
- }
- | string '+' string_primary {
+ | string '+' string {
*$$ += *$3;
delete $3;
}
;
-dim:
- real_primary unit { $$ = $1*$2; }
- ;
-
-unit: CM_T { $$ = 1 CM; }
- |IN_T { $$ = 1 INCH; }
- |MM_T { $$ = 1 MM; }
- |PT_T { $$ = 1 PT; }
- ;
/*
symbol tables
}
;
-dinterval: dim dim {
+dinterval: real real {
$$ = new Interval ($1, $2);
}
;
if (!mus_l)
return false;
+ /*
+ UGH! This is incorrect!
+ Beam_req might not reach the Plet_engraver if ordering is wrong!
+ */
Beam_req* b = mus_l->access_Beam_req ();
if (b)
{
#include "translation-property.hh"
#include "translator-group.hh"
-Property_iterator::Property_iterator (Translation_property *prop_l)
-{
- property_l_ = prop_l;
-}
-
void
-Property_iterator::process_and_next (Moment m)
+Property_iterator::do_process_and_next (Moment m)
{
- if (property_l_->var_str_.length_i ())
- report_to_l ()->set_property (property_l_->var_str_, property_l_->value_);
- Music_iterator::process_and_next (m);
+ if (property_l()->var_str_.length_i ())
+ report_to_l ()->set_property (property_l()->var_str_, property_l()->value_);
+ Music_iterator::do_process_and_next (m);
}
IMPLEMENT_IS_TYPE_B1(Property_iterator, Music_iterator);
+
+Translation_property*
+Property_iterator::property_l () const
+{
+ return (Translation_property*) music_l_;
+}
+++ /dev/null
-/*
- ps-def.cc -- implement Ps_def
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "assoc.hh"
-#include "assoc-iter.hh"
-#include "identifier.hh"
-#include "ps-def.hh"
-#include "ps-lookup.hh"
-#include "ps-score.hh"
-#include "scope.hh"
-
-IMPLEMENT_IS_TYPE_B1 (Ps_def, Paper_def);
-
-Lookup*
-Ps_def::lookup_p (Lookup const& l) const
-{
- return new Ps_lookup (l);
-}
-
-Lookup*
-Ps_def::lookup_p (Symtables const& s) const
-{
- return new Ps_lookup (s);
-}
-
-String
-Ps_def::output_settings_str () const
-{
- String s ("\n ");
- for (Assoc_iter<String,Identifier*> i (*scope_p_); i.ok (); i++)
- s += String ("/mudelapaper") + i.key ()
- + "{" + i.val ()->str () + "} bind def\n";
- s += *scope_p_->elem ("pssetting")->access_String ();
- return s;
-}
-
-Paper_score*
-Ps_def::paper_score_p () const
-{
- return new Ps_score ();
-}
-
-String
-Ps_def::unknown_str () const
-{
- return "unknown ";
-}
-
#include "string-convert.hh"
#include "main.hh"
#include "file-results.hh"
-#include "header.hh"
+#include "scope.hh"
#include "paper-stream.hh"
#include "ps-stream.hh"
#include "ps-outputter.hh"
+#include "scope.hh"
+#include "dictionary-iter.hh"
+#include "identifier.hh"
Ps_lookup::Ps_lookup ()
: Lookup ()
return a;
}
+Lookup*
+Ps_lookup::lookup_p (Lookup const& l) const
+{
+ return new Ps_lookup (l);
+}
+
+Lookup*
+Ps_lookup::lookup_p (Symtables const& s) const
+{
+ return new Ps_lookup (s);
+}
+extern char const *lily_version_number_sz ();
+
+String
+header_to_ps_string (Scope *head)
+{
+ String s;
+ String lily_id_str = "Lily was here, " +
+ String (lily_version_number_sz ());
+
+ s+= "/lily_id_string\n{" + lily_id_str + "} bind def\n";
+
+ for (Dictionary_iter<Identifier*> i (*head); i.ok (); i++)
+ {
+ if (!i.val ()->access_String_identifier ())
+ continue;
+
+ String val = *i.val()->access_String_identifier ()->data_p_;
+
+ s += "/mudela" + i.key () + "{" + val + "} bind def\n";
+ }
+
+ return s;
+}
+
+Paper_outputter*
+Ps_lookup::paper_outputter_p (Paper_stream* os_p, Paper_def* paper_l, Header* header_l, String origin_str) const
+{
+ if (header_global_p)
+ *os_p << header_to_ps_string (header_global_p);
+
+ *os_p << _ ("\n% outputting Score, defined at: ") << origin_str << '\n';
+
+ if (header_l)
+ {
+ *os_p << header_to_ps_string (header_l);
+ }
+
+ *os_p << paper_l->ps_output_settings_str ();
+
+ if (experimental_features_global_b)
+ *os_p << "turnOnExperimentalFeatures\n";
+
+ return new Ps_outputter (os_p);
+}
+
+Paper_stream*
+Ps_lookup::paper_stream_p () const
+{
+ String outname = base_output_str ();
+
+ if (outname != "-")
+ outname += ".ps";
+ *mlog << _f ("PostScript output to %s...",
+ outname == "-" ? String ("<stdout>") : outname ) << endl;
+ target_str_global_array.push (outname);
+ return new Ps_stream (outname);
+}
+
Atom
Ps_lookup::plet (Real dy , Real dx, Direction dir) const
{
return Lookup::text (style, "(" + text + ")");
}
+String
+Ps_lookup::unknown_str () const
+{
+ return "unknown ";
+}
+
Atom
Ps_lookup::vbracket (Real &y) const
{
+++ /dev/null
-/*
- ps-score.cc -- implement Ps_score
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "debug.hh"
-#include "file-results.hh"
-#include "header.hh"
-#include "main.hh"
-#include "paper-def.hh"
-#include "ps-stream.hh"
-#include "ps-outputter.hh"
-#include "ps-score.hh"
-
-Paper_outputter*
-Ps_score::paper_outputter_p (Paper_stream* os_p) const
-{
- if (header_global_p)
- *os_p << header_global_p->ps_string ();
-
- *os_p << _ ("\n% outputting Score, defined at: ") << origin_str_ << '\n';
-
- if (header_l_)
- *os_p << header_l_->ps_string ();
- *os_p << paper_l_->output_settings_str ();
-
- if (experimental_features_global_b)
- *os_p << "turnOnExperimentalFeatures\n";
-
- return new Ps_outputter (os_p);
-}
-
-Paper_stream*
-Ps_score::paper_stream_p () const
-{
- String outname = base_output_str ();
-
- if (outname != "-")
- outname += ".ps";
- *mlog << _f ("PostScript output to %s...",
- outname == "-" ? String ("<stdout>") : outname ) << endl;
- target_str_global_array.push (outname);
- return new Ps_stream (outname);
-}
-
void
Request_chord_iterator::construct_children()
{
+ elt_duration_ =elt_l ()->duration ();
get_req_translator_l();
}
-Request_chord_iterator::Request_chord_iterator (Request_chord*el_l)
+Request_chord*
+Request_chord_iterator::elt_l () const
+{
+ return (Request_chord*) music_l_;
+}
+
+Request_chord_iterator::Request_chord_iterator ()
{
- elt_l_ = el_l;
- MInterval elt_dur =el_l->time_int();
- elt_duration_ = elt_dur.length ();
last_b_ = false;
}
}
void
-Request_chord_iterator::process_and_next (Moment mom)
+Request_chord_iterator::do_process_and_next (Moment mom)
{
if (first_b_)
{
- for (PCursor<Music*> i (elt_l_->music_p_list_p_->top ()); i.ok(); i++)
+ for (PCursor<Music*> i (elt_l ()->music_p_list_p_->top ()); i.ok(); i++)
{
assert (i->is_type_b (Request::static_name()));
Request * req_l = (Request*)i.ptr();
{
}
-MInterval
-Request::time_int() const
-{
- return MInterval (0, duration());
-}
+
bool
int dir_i = rest_l_arr_[0]->dir_;
int midpos = 4;
-#if 1
// ugh
int stem_length_i = 7 - 2;
// ugh, Stem::stem_start vs Stem::stem_end
int pos = (int)(stem_l->stem_end_f() - midpos) - dir_i * stem_length_i;
-#else // nogo: stem_start not set for rests?
+ /*
+ nogo: stem_start not set for rests?
int pos = (stem_l->stem_begin_f() - midpos) + dir_i * 2;
-#endif
+
+ WHY IS THIS STILL HERE? --hwn
+ */
rest_l_arr_[0]->translate_rests (pos);
}
#include "score-column.hh"
#include "command-request.hh"
#include "paper-def.hh"
-#include "main.hh"
Score_engraver::Score_engraver()
Score_engraver::do_add_processing ()
{
Translator_group::do_add_processing ();
- //assert (output_def_l_->is_type_b (Paper_def::static_name ()));
- // urg
- pscore_p_ = output_def_l_->paper_score_p ();
- // assert (pscore_p_);
- // urg, via parser a Paper_def gets constructed
- // this should never happen, but can't be prevented (Paper_def can't be
- // abstract bo virtual_copy_cons etc.
- if (!pscore_p_)
- {
- printf ("\nBRAAK\n");
- output_def_l_ = global_paper_l->paper_l ()->clone ();
- // pscore_p_ = output_def_l_->paper_score_p ();
- pscore_p_ = global_paper_l->paper_score_p ();
- pscore_p_->paper_l_ = global_paper_l->paper_l ();
- }
- else
- pscore_p_->paper_l_ = output_def_l_->paper_l ();
- assert (pscore_p_->paper_l_);
+ assert (output_def_l_->is_type_b (Paper_def::static_name ()));
assert (!daddy_trans_l_);
+ pscore_p_ = new Paper_score;
+ pscore_p_->paper_l_ = (Paper_def*)output_def_l_;
}
#include "music-iterator.hh"
#include "music.hh"
#include "global-translator.hh"
-#include "header.hh"
+#include "scope.hh"
#include "cpu-timer.hh"
#include "main.hh"
#include "paper-def.hh"
return ;
}
*mlog << '\n' << _("Interpreting music...") << flush;
- trans_p->last_mom_ = music_p_->time_int().max ();
+ trans_p->last_mom_ = music_p_->duration ();
+
+ Music_iterator * iter = Music_iterator::static_get_iterator_p (music_p_, trans_p);
+
- Music_iterator * iter = Music_iterator::static_get_iterator_p (music_p_,
- trans_p);
iter->construct_children();
if (! iter->ok())
#include "score.hh"
#include "string.hh"
#include "paper-def.hh"
-#include "header.hh"
+#include "scope.hh"
#include "debug.hh"
#include "parray.hh"
#include "file-path.hh"
parser.set_version_check (version_ignore_global_b);
parser.parse_file (init_str, file_str);
-#if 0
/*
urg
when calling {Ps,Tex}_lookup::paper_stream_p (),
(deleted without being reset maybe?)
*/
global_lookup_l->paper_l_ = parser.default_paper_p ();
-#endif
if (parser.error_level_i_)
{
#include "colhpos.hh"
Vector
-Spring_spacer::default_solution () const
+Spring_spacer::default_solution() const
{
- return try_initial_solution () ;
+ return try_initial_solution() ;
}
Score_column*
bool
Spring_spacer::contains_b (Paper_column const *w)
{
- for (int i=0; i< cols_.size (); i++)
+ for (int i=0; i< cols_.size(); i++)
if (cols_[i].pcol_l_ == w)
return true;
return false;
void
-Spring_spacer::OK () const
+Spring_spacer::OK() const
{
#ifndef NDEBUG
- for (int i = 1; i < cols_.size (); i++)
+ for (int i = 1; i < cols_.size(); i++)
assert (cols_[i].rank_i_ > cols_[i-1].rank_i_);
- for (int i = 1; i < loose_col_arr_.size (); i++)
+ for (int i = 1; i < loose_col_arr_.size(); i++)
assert (loose_col_arr_[i].rank_i_ > loose_col_arr_[i-1].rank_i_);
#endif
}
Make sure no unconnected columns happen.
*/
void
-Spring_spacer::handle_loose_cols ()
+Spring_spacer::handle_loose_cols()
{
- Union_find connected (cols_.size ());
+ Union_find connected (cols_.size());
Array<int> fixed;
- for (PCursor<Idealspacing*> i (ideal_p_list_.top ()); i.ok (); i++)
+ for (PCursor<Idealspacing*> i (ideal_p_list_.top()); i.ok (); i++)
{
connected.connect (i->left_i_,i->right_i_);
}
- for (int i = 0; i < cols_.size (); i++)
- if (cols_[i].fixed_b ())
+ for (int i = 0; i < cols_.size(); i++)
+ if (cols_[i].fixed_b())
fixed.push (i);
- for (int i=1; i < fixed.size (); i++)
+ for (int i=1; i < fixed.size(); i++)
connected.connect (fixed[i-1], fixed[i]);
- for (int i = cols_.size (); i--;)
+ for (int i = cols_.size(); i--;)
{
if (! connected.equiv (fixed[0], i))
{
loosen_column (i);
}
}
- OK ();
+ OK();
}
void
Spring_spacer::position_loose_cols (Vector &sol_vec) const
{
- if (!loose_col_arr_.size ())
+ if (!loose_col_arr_.size())
return ;
- assert (sol_vec.dim ());
+ assert (sol_vec.dim());
Array<bool> fix_b_arr;
- fix_b_arr.set_size (cols_.size () + loose_col_arr_.size ());
+ fix_b_arr.set_size (cols_.size() + loose_col_arr_.size ());
Real utter_right_f=-infinity_f;
Real utter_left_f =infinity_f;
- for (int i=0; i < loose_col_arr_.size (); i++)
+ for (int i=0; i < loose_col_arr_.size(); i++)
{
fix_b_arr[loose_col_arr_[i].rank_i_] = false;
}
- for (int i=0; i < cols_.size (); i++)
+ for (int i=0; i < cols_.size(); i++)
{
int r= cols_[i].rank_i_;
fix_b_arr[r] = true;
utter_right_f = utter_right_f >? sol_vec (i);
utter_left_f = utter_left_f <? sol_vec (i);
}
- Vector v (fix_b_arr.size ());
+ Vector v (fix_b_arr.size());
int j =0;
int k =0;
- for (int i=0; i < v.dim (); i++)
+ for (int i=0; i < v.dim(); i++)
{
if (fix_b_arr[i])
{
Real left_pos_f =
(j>0) ?sol_vec (j-1) : utter_left_f;
Real right_pos_f =
- (j < sol_vec.dim ()) ? sol_vec (j) : utter_right_f;
+ (j < sol_vec.dim()) ? sol_vec (j) : utter_right_f;
int left_rank = (j>0) ? cols_[j-1].rank_i_ : 0;
- int right_rank = (j<sol_vec.dim ()) ? cols_[j].rank_i_ : sol_vec.dim ();
+ int right_rank = (j<sol_vec.dim()) ? cols_[j].rank_i_ : sol_vec.dim ();
int d_r = right_rank - left_rank;
Column_info loose=loose_col_arr_[k++];
bool
Spring_spacer::check_constraints (Vector v) const
{
- int dim=v.dim ();
- assert (dim == cols_.size ());
+ int dim=v.dim();
+ assert (dim == cols_.size());
DOUT << "checking " << v;
for (int i=0; i < dim; i++)
{
- if (cols_[i].fixed_b () &&
- abs (cols_[i].fixed_position () - v (i)) > COLFUDGE)
+ if (cols_[i].fixed_b() &&
+ abs (cols_[i].fixed_position() - v (i)) > COLFUDGE)
{
DOUT << "Fixpos broken\n";
return false;
/** try to generate a solution which obeys the min distances and fixed positions
*/
Vector
-Spring_spacer::try_initial_solution () const
+Spring_spacer::try_initial_solution() const
{
Vector v;
if (!try_initial_solution_and_tell (v))
bool
Spring_spacer::try_initial_solution_and_tell (Vector &v) const
{
- int dim=cols_.size ();
+ int dim=cols_.size();
bool succeeded = true;
Vector initsol (dim);
for (int i=0; i < dim; i++)
{
Real min_x = i ? initsol (i-1) : cols_[0].fixed_position ();
- Array<Spacer_rod> const &sr_arr (cols_[i].rods_[LEFT]);
+ Array<Spacer_rod> const &sr_arr(cols_[i].rods_[LEFT]);
for (int j=0; j < sr_arr.size (); j++)
{
min_x = min_x >? (initsol (sr_arr[j].other_idx_) + sr_arr[j].distance_f_);
}
initsol (i) = min_x;
- if (cols_[i].fixed_b ())
+ if (cols_[i].fixed_b())
{
- initsol (i)=cols_[i].fixed_position ();
+ initsol (i)=cols_[i].fixed_position();
if (initsol (i) < min_x )
{
DOUT << "failing: init, min : " << initsol (i) << " " << min_x << '\n';
DOUT << "tried and told solution: " << v;
if (!succeeded)
- DOUT << " (failed)\n";
+ DOUT << "(failed)\n";
return succeeded;
}
lin.fill (0);
c = 0;
- for (PCursor<Idealspacing*> i (ideal_p_list_.top ()); i.ok (); i++)
+ for (PCursor<Idealspacing*> i (ideal_p_list_.top()); i.ok (); i++)
{
int l = i->left_i_;
int r = i->right_i_;
c += sqr (i->space_f_);
}
- if (quad.dim () > 10)
- quad.set_band ();
+ if (quad.dim() > 10)
+ quad.set_band();
}
void
Spring_spacer::set_fixed_cols (Mixed_qp &qp) const
{
- for (int j=0; j < cols_.size (); j++)
- if (cols_[j].fixed_b ())
- qp.add_fixed_var (j,cols_[j].fixed_position ());
+ for (int j=0; j < cols_.size(); j++)
+ if (cols_[j].fixed_b())
+ qp.add_fixed_var (j,cols_[j].fixed_position());
}
// put the constraints into the LP problem
void
Spring_spacer::make_constraints (Mixed_qp& lp) const
{
- int dim=cols_.size ();
+ int dim=cols_.size();
for (int j=0; j < dim -1; j++)
{
Array<Spacer_rod> const&rod_arr (cols_[j].rods_[RIGHT]);
for (int i = 0; i < rod_arr.size (); i++)
{
- Vector c1 (dim);
- c1 (rod_arr[i].other_idx_)=1.0 ;
- c1 (j)=-1.0 ;
+ Vector c1(dim);
+ c1(rod_arr[i].other_idx_)=1.0 ;
+ c1(j)=-1.0 ;
lp.add_inequality_cons (c1, rod_arr[i].distance_f_);
}
Spring_spacer::calculate_energy_f (Vector solution) const
{
Real e = 0.0;
- for (PCursor<Idealspacing*> i (ideal_p_list_.top ()); i.ok (); i++)
+ for (PCursor<Idealspacing*> i (ideal_p_list_.top()); i.ok(); i++)
{
- e += i->energy_f (solution (i->right_i_) - solution (i->left_i_));
+ e += i->energy_f(solution(i->right_i_) - solution(i->left_i_));
}
return e;
void
Spring_spacer::lower_bound_solution (Column_x_positions*positions) const
{
- Mixed_qp lp (cols_.size ());
+ Mixed_qp lp (cols_.size());
make_matrices (lp.quad_,lp.lin_, lp.const_term_);
set_fixed_cols (lp);
- Vector start (cols_.size ());
+ Vector start (cols_.size());
start.fill (0.0);
Vector solution_vec (lp.solve (start));
bool constraint_satisfaction = try_initial_solution_and_tell (solution_try);
if (constraint_satisfaction)
{
- Mixed_qp lp (cols_.size ());
+ Mixed_qp lp (cols_.size());
make_matrices (lp.quad_,lp.lin_, lp.const_term_);
make_constraints (lp);
set_fixed_cols (lp);
position_loose_cols (solution_vec);
positions->energy_f_ = calculate_energy_f (solution_vec);
positions->config = solution_vec;
- positions->error_col_l_arr_ = error_pcol_l_arr ();
+ positions->error_col_l_arr_ = error_pcol_l_arr();
}
else
{
void
Spring_spacer::add_column (Paper_column *col, bool fixed, Real fixpos)
{
- Column_info c (col, (fixed)? &fixpos : 0);
- int this_rank = cols_.size ();
+ Column_info c (col,(fixed)? &fixpos : 0);
+ int this_rank = cols_.size();
c.rank_i_ = this_rank;
for (int i=0; i < col->minimal_dists_arr_drul_[LEFT].size (); i++)
}
Line_of_cols
-Spring_spacer::error_pcol_l_arr () const
+Spring_spacer::error_pcol_l_arr() const
{
Array<Paper_column*> retval;
- for (int i=0; i< cols_.size (); i++)
+ for (int i=0; i< cols_.size(); i++)
if (cols_[i].ugh_b_)
retval.push (cols_[i].pcol_l_);
- for (int i=0; i < loose_col_arr_.size (); i++)
+ for (int i=0; i < loose_col_arr_.size(); i++)
{
retval.push (loose_col_arr_[i].pcol_l_);
}
Spring_spacer::loosen_column (int i)
{
Column_info c=cols_.get (i);
- for (PCursor<Idealspacing*> j (ideal_p_list_.top ()); j.ok (); j++)
+ for (PCursor<Idealspacing*> j (ideal_p_list_.top()); j.ok (); j++)
{
if (j->left_i_ == i|| j->right_i_ == i)
- j.del ();
+ j.del();
else
j++;
}
c.ugh_b_ = true;
int j=0;
- for (; j < loose_col_arr_.size (); j++)
+ for (; j < loose_col_arr_.size(); j++)
{
if (loose_col_arr_[j].rank_i_ > c.rank_i_)
break;
void
-Spring_spacer::print () const
+Spring_spacer::print() const
{
#ifndef NPRINT
- for (int i=0; i < cols_.size (); i++)
+ for (int i=0; i < cols_.size(); i++)
{
DOUT << "col " << i << " ";
- cols_[i].print ();
+ cols_[i].print();
}
- for (PCursor<Idealspacing*> i (ideal_p_list_.top ()); i.ok (); i++)
+ for (PCursor<Idealspacing*> i (ideal_p_list_.top()); i.ok (); i++)
{
- i->print ();
+ i->print();
}
#endif
}
void
Spring_spacer::connect (int i, int j, Real d, Real h)
{
- assert (d >= 0 && d <= 100 CM);
- assert (h >=0);
+ assert(d >= 0 && d <= 100 CM);
+ assert(h >=0);
Idealspacing * s = new Idealspacing;
s->space_f_ = d;
s->hooke_f_ = h;
- ideal_p_list_.bottom ().add (s);
+ ideal_p_list_.bottom().add (s);
}
void
-Spring_spacer::prepare ()
+Spring_spacer::prepare()
{
DOUT << "Preparing..";
- calc_idealspacing ();
- handle_loose_cols ();
- print ();
+ calc_idealspacing();
+ handle_loose_cols();
+ print();
DOUT << "finished preparing.\n";
}
Line_spacer*
-Spring_spacer::constructor ()
+Spring_spacer::constructor()
{
return new Spring_spacer;
}
/**
get the shortest_playing running note at a time. */
void
-Spring_spacer::get_ruling_durations (Array<Moment> &shortest_playing_arr,
+Spring_spacer::get_ruling_durations(Array<Moment> &shortest_playing_arr,
Array<Moment> &context_shortest_arr)
{
- for (int i=0; i < cols_.size (); i++)
+ for (int i=0; i < cols_.size(); i++)
{
- scol_l (i)->preprocess ();
+ scol_l (i)->preprocess();
scol_l (i)->print ();
}
int start_context_i=0;
Moment context_shortest;
context_shortest.set_infinite (1);
- context_shortest_arr.set_size (cols_.size ());
+ context_shortest_arr.set_size(cols_.size());
- for (int i=0; i < cols_.size (); i++)
+ for (int i=0; i < cols_.size(); i++)
{
- Moment now = scol_l (i)->when ();
+ Moment now = scol_l (i)->when();
Moment shortest_playing;
shortest_playing.set_infinite (1);
start_context_i = i;
context_shortest.set_infinite (1);
}
- if (scol_l (i)->durations.size ())
+ if (scol_l (i)->durations.size())
{
- context_shortest = context_shortest <? scol_l (i)->durations[0];
+ context_shortest = context_shortest <? scol_l(i)->durations[0];
}
// ji was j, but triggered ICE
for (int ji=i+1; ji --;)
{
- if (scol_l (ji)->durations.size () &&
- now - scol_l (ji)->when () >= shortest_playing)
+ if (scol_l(ji)->durations.size() &&
+ now - scol_l(ji)->when() >= shortest_playing)
break;
- for (int k = scol_l (ji)->durations.size ();
- k-- && scol_l (ji)->durations[k] + scol_l (ji)->when () > now;
+ for (int k = scol_l (ji)->durations.size();
+ k-- && scol_l(ji)->durations[k] + scol_l(ji)->when() > now;
)
{
- shortest_playing = shortest_playing <? scol_l (ji)->durations[k];
+ shortest_playing = shortest_playing <? scol_l(ji)->durations[k];
}
}
- shortest_playing_arr.push (shortest_playing);
+ shortest_playing_arr.push(shortest_playing);
}
#ifndef NPRINT
DOUT << "shortest_playing/:[ ";
- for (int i=0; i < shortest_playing_arr.size (); i++)
+ for (int i=0; i < shortest_playing_arr.size(); i++)
{
DOUT << shortest_playing_arr[i] << " ";
DOUT << context_shortest_arr[i] << ", ";
*/
void
-Spring_spacer::calc_idealspacing ()
+Spring_spacer::calc_idealspacing()
{
Array<Moment> shortest_playing_arr;
Array<Moment> context_shortest_arr;
- get_ruling_durations (shortest_playing_arr, context_shortest_arr);
+ get_ruling_durations(shortest_playing_arr, context_shortest_arr);
Real interline_f = paper_l ()->interline_f ();
Array<Real> ideal_arr_;
Array<Real> hooke_arr_;
- for (int i=0; i < cols_.size () - 1; i++){
+ for (int i=0; i < cols_.size() - 1; i++){
ideal_arr_.push (-1.0);
hooke_arr_.push (1.0);
}
/*
First do all non-musical columns
*/
- for (int i=0; i < cols_.size (); i++)
+ for (int i=0; i < cols_.size(); i++)
{
- if (!scol_l (i)->musical_b () && i+1 < cols_.size ())
+ if (!scol_l (i)->musical_b() && i+1 < cols_.size())
{
Real symbol_distance =cols_[i].width_[RIGHT] + 2 PT;
Real durational_distance = 0;
- Moment delta_t = scol_l (i+1)->when () - scol_l (i)->when () ;
+ Moment delta_t = scol_l (i+1)->when() - scol_l (i)->when () ;
/*
*/
if (delta_t)
{
- Real k= paper_l ()->arithmetic_constant (context_shortest_arr[i]);
- durational_distance = paper_l ()->duration_to_dist (delta_t,k);
+ Real k= paper_l()->arithmetic_constant (context_shortest_arr[i]);
+ durational_distance = paper_l()->duration_to_dist (delta_t,k);
}
symbol_distance += -cols_[i+1].width_[LEFT];
/*
Then musicals
*/
- for (int i=0; i < cols_.size (); i++)
+ for (int i=0; i < cols_.size(); i++)
{
- if (scol_l (i)->musical_b ())
+ if (scol_l (i)->musical_b())
{
Moment shortest_playing_len = shortest_playing_arr[i];
Moment context_shortest = context_shortest_arr[i];
if (! shortest_playing_len)
{
warning (_f ("can't find a ruling note at %s",
- scol_l (i)->when ().str ()));
+ scol_l (i)->when().str ()));
shortest_playing_len = 1;
}
if (! context_shortest)
{
warning (_f ("no minimum in measure at %s",
- scol_l (i)->when ().str ()));
+ scol_l (i)->when().str ()));
context_shortest = 1;
}
- Moment delta_t = scol_l (i+1)->when () - scol_l (i)->when ();
- Real k= paper_l ()->arithmetic_constant (context_shortest);
- Real dist = paper_l ()->duration_to_dist (shortest_playing_len, k);
- dist *= (double) (delta_t / shortest_playing_len);
+ Moment delta_t = scol_l (i+1)->when() - scol_l (i)->when ();
+ Real k= paper_l()->arithmetic_constant(context_shortest);
+ Real dist = paper_l()->duration_to_dist (shortest_playing_len, k);
+ dist *= (double)(delta_t / shortest_playing_len);
/*
According to [Ross] and [Wanske], and from what i've seen:
/*
last musical column of bar
*/
- if (i + 1 < cols_.size () && scol_l (i+1)->breakable_b_)
+ if (i + 1 < cols_.size () && scol_l(i+1)->breakable_b_)
{
// hmm, how bout?
dist = dist >? interline_f;
}
}
- for (int i=0; i < ideal_arr_.size (); i++)
+ for (int i=0; i < ideal_arr_.size(); i++)
{
assert (ideal_arr_[i] >=0 && hooke_arr_[i] >=0);
connect (i, i+1, ideal_arr_[i], hooke_arr_[i]);
+++ /dev/null
-/*
- tex-def.cc -- implement Tex_def
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "assoc.hh"
-#include "assoc-iter.hh"
-#include "identifier.hh"
-#include "scope.hh"
-#include "tex-def.hh"
-#include "tex-lookup.hh"
-#include "tex-score.hh"
-
-IMPLEMENT_IS_TYPE_B1 (Tex_def, Paper_def);
-
-String
-Tex_def::dimension_str (Real r) const
-{
- return Paper_def::dimension_str (r) + "pt";
-}
-
-Lookup*
-Tex_def::lookup_p (Lookup const& l) const
-{
- return new Tex_lookup (l);
-}
-
-Lookup*
-Tex_def::lookup_p (Symtables const& s) const
-{
- return new Tex_lookup (s);
-}
-
-String
-Tex_def::output_settings_str () const
-{
- String s ("\n ");
- for (Assoc_iter<String,Identifier*> i (*scope_p_); i.ok (); i++)
- s += String ("\\def\\mudelapaper") + i.key ()
- + "{" + i.val ()->str () + "}\n";
- s += *scope_p_->elem ("texsetting")->access_String ();
- return s;
-}
-
-Paper_score*
-Tex_def::paper_score_p () const
-{
- return new Tex_score ();
-}
-
-String
-Tex_def::unknown_str () const
-{
- return "\\unknown";
-}
-
#include "string-convert.hh"
#include "main.hh"
#include "file-results.hh"
-#include "header.hh"
+#include "scope.hh"
#include "paper-stream.hh"
#include "tex-stream.hh"
#include "tex-outputter.hh"
+#include "dictionary-iter.hh"
+#include "identifier.hh"
Tex_lookup::Tex_lookup ()
: Ps_lookup ()
return embed (Ps_lookup::plet (dy, dx, dir));
}
+Lookup*
+Tex_lookup::lookup_p (Lookup const& l) const
+{
+ return new Tex_lookup (l);
+}
+
+Lookup*
+Tex_lookup::lookup_p (Symtables const& s) const
+{
+ return new Tex_lookup (s);
+}
+
+extern char const *lily_version_number_sz ();
+
+String
+header_to_tex_string (Scope *head)
+{
+ String s;
+ String lily_id_str = "Lily was here, " +
+ String (lily_version_number_sz ());
+ s+= "\\def\\LilyIdString{" + lily_id_str + "}";
+
+ for (Dictionary_iter<Identifier*> i(*head); i.ok (); i++)
+ {
+ if (!i.val ()->access_String_identifier ())
+ continue;
+
+ String val = *i.val()->access_String_identifier ()->data_p_;
+ s += "\\def\\mudela" + i.key () + "{" + val + "}\n";
+ }
+ return s;
+}
+
+
+Paper_outputter*
+Tex_lookup::paper_outputter_p (Paper_stream* os_p, Paper_def* paper_l, Scope* header_l, String origin_str) const
+{
+ if (header_global_p)
+ *os_p << header_to_tex_string(header_global_p);
+
+ *os_p << _ ("\n% outputting Score, defined at: ") << origin_str << '\n';
+
+ if (header_l)
+ *os_p << header_to_tex_string (header_global_p);
+
+
+ *os_p << paper_l->tex_output_settings_str ();
+
+ if (experimental_features_global_b)
+ *os_p << "\\turnOnExperimentalFeatures%\n";
+
+ *os_p << "\\turnOnPostScript%\n";
+
+ return new Tex_outputter (os_p);
+}
+
+Paper_stream *
+Tex_lookup::paper_stream_p () const
+{
+ String outname = base_output_str ();
+
+ Paper_stream* p;
+ if (outname != "-")
+ outname += ".tex";
+ *mlog << _f ("TeX output to %s...",
+ outname == "-" ? String ("<stdout>") : outname ) << endl;
+ p = new Tex_stream (outname);
+ target_str_global_array.push (outname);
+ return p;
+}
+
+String
+Tex_lookup::print_dimen (Real r) const
+{
+ String s = to_str (r, "%.3f");
+ if (s.index_i ("NaN") != -1)
+ {
+ warning (_ ("NaN"));
+ s = "0.0";
+ }
+ return Lookup::print_dimen (r) + "pt";
+}
+
Atom
Tex_lookup::ps_beam (Real slope, Real width, Real thick) const
{
return Lookup::text (style, text);
}
+String
+Tex_lookup::unknown_str () const
+{
+ return "\\unknown";
+}
+
Atom
Tex_lookup::vbracket (Real &y) const
{
+++ /dev/null
-/*
- tex-score.cc -- implement Tex_score
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "debug.hh"
-#include "file-results.hh"
-#include "header.hh"
-#include "main.hh"
-#include "paper-def.hh"
-#include "tex-stream.hh"
-#include "tex-outputter.hh"
-#include "tex-score.hh"
-
-Paper_outputter*
-Tex_score::paper_outputter_p (Paper_stream* os_p) const
-{
- if (header_global_p)
- *os_p << header_global_p->tex_string ();
-
- *os_p << _ ("\n% outputting Score, defined at: ") << origin_str_ << '\n';
-
- if (header_l_)
- *os_p << header_l_->tex_string();
- *os_p << paper_l_->output_settings_str ();
-
- if (experimental_features_global_b)
- *os_p << "\\turnOnExperimentalFeatures%\n";
-
- *os_p << "\\turnOnPostScript%\n";
-
- return new Tex_outputter (os_p);
-}
-
-Paper_stream *
-Tex_score::paper_stream_p () const
-{
- String outname = base_output_str ();
-
- Paper_stream* p;
- if (outname != "-")
- outname += ".tex";
- *mlog << _f ("TeX output to %s...",
- outname == "-" ? String ("<stdout>") : outname ) << endl;
- p = new Tex_stream (outname);
- target_str_global_array.push (outname);
- return p;
-}
-
iter_p_->print();
}
-Sequential_music_iterator::Sequential_music_iterator (Sequential_music const*v)
- : PCursor<Music*> (*v->music_p_list_p_)
+Sequential_music_iterator::Sequential_music_iterator ()
{
- here_mom_ = v->offset_mom_;
- sequential_music_C_ = v;
+ cursor_p_ = 0;
+ here_mom_ = 0;
iter_p_ =0;
}
+Sequential_music*
+Sequential_music_iterator::sequential_music_l () const
+{
+ return (Sequential_music *)music_l_;
+}
+
void
Sequential_music_iterator::construct_children()
{
- while (PCursor<Music*>::ok())
+ cursor_p_ = new PCursor<Music*> (sequential_music_l ()->music_p_list_p_->top ());
+
+ while (cursor_p_->ok())
{
start_next_element();
if (!iter_p_->ok())
{
delete iter_p_;
iter_p_ =0;
- MInterval elt_time = ptr()->time_int ();
- if (!elt_time.empty_b())
- here_mom_ += elt_time.length();
- PCursor<Music*>::next();
+ Moment elt_time = cursor_p_->ptr()->duration ();
+ here_mom_ += elt_time;
+ cursor_p_->next();
}
void
Sequential_music_iterator::start_next_element()
{
assert (!iter_p_);
- iter_p_ = get_iterator_p (ptr());
+ iter_p_ = get_iterator_p ( cursor_p_->ptr());
}
void
Sequential_music_iterator::~Sequential_music_iterator()
{
+ delete cursor_p_;
assert (! iter_p_);
}
IMPLEMENT_IS_TYPE_B1(Sequential_music_iterator,Music_iterator);
void
-Sequential_music_iterator::process_and_next (Moment until)
+Sequential_music_iterator::do_process_and_next (Moment until)
{
while (1)
{
{
leave_element();
- if (PCursor<Music*>::ok())
+ if (cursor_p_->ok())
{
start_next_element();
set_Sequential_music_translator();
loopexit:
- Music_iterator::process_and_next (until);
+ Music_iterator::do_process_and_next (until);
}
Moment
return iter_p_;
}
-
1.0.13.jcn4
1.0.13.jcn5
1.0.14
-1.0.14.jcn1
-1.0.14.tca1
+1.0.14.hwn1
+1.0.15
%prep
%setup
%build
-./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared --enable-tex-dir='${prefix}/lib/texmf/texmf/tex/generic' --enable-mf-dir='${prefix}/lib/texmf/texmf/fonts/source/'
+./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared
make all
make -C Documentation info || true
make htmldoc
strip lily/out/lilypond mi2mu/out/mi2mu
make prefix="$RPM_BUILD_ROOT/usr" install
+cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT/etc/profile.d/lilypond.sh
+
%files
%doc /tmp/lilypond-rpm-doc
/usr/lib/texmf/texmf/fonts/source/public/lilypond
/usr/share/lilypond/
/usr/share/locale/*/LC_MESSAGES/lilypond.mo
+/etc/profile.d/lilypond.sh
%post
## ln -s /usr/lib/texmf/texmf/tex/lilypond /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
Begin3
Titel: LilyPond
-Versie: 1.0.14
-Inschrijf datum: 09OCT98
+Versie: 1.0.15
+Inschrijf datum: 12OCT98
Beschrijving: @FLAPTEKST@
Trefwoorden: muziek typezetten midi notatie
Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
- 770k lilypond-1.0.14.tar.gz
+ 770k lilypond-1.0.15.tar.gz
Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.0.14.tar.gz
+ 770k lilypond-1.0.15.tar.gz
Copi-eer voorwaarden: GPL
End
Begin3
Title: LilyPond
-Version: 1.0.14
-Entered-date: 09OCT98
+Version: 1.0.15
+Entered-date: 12OCT98
Description:
LilyPond is the GNU Project music typesetter. This program can print
beautiful sheet music from a music definition file. It can also play
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 770k lilypond-1.0.14.tar.gz
+ 770k lilypond-1.0.15.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.0.14.tar.gz
+ 770k lilypond-1.0.15.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 1.0.14
+Version: 1.0.15
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.0.14.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.0.15.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
%prep
%setup
%build
-./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared --enable-tex-dir='${prefix}/lib/texmf/texmf/tex/generic' --enable-mf-dir='${prefix}/lib/texmf/texmf/fonts/source/'
+./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared
make all
make -C Documentation info || true
make htmldoc
strip lily/out/lilypond mi2mu/out/mi2mu
make prefix="$RPM_BUILD_ROOT/usr" install
+cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT/etc/profile.d/lilypond.sh
+
%files
%doc /tmp/lilypond-rpm-doc
/usr/lib/texmf/texmf/fonts/source/public/lilypond
/usr/share/lilypond/
/usr/share/locale/*/LC_MESSAGES/lilypond.mo
+/etc/profile.d/lilypond.sh
%post
## ln -s /usr/lib/texmf/texmf/tex/lilypond /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
BASH\
DATE\
date\
- DIR_DATADIR\
+ datadir\
PACKAGE\
package\
PATHSEP\
-TEXINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(TEXDIR)/lilypond depth=.. INSTALLATION_OUT_FILES="$(TEXTABLES)" -f $(stepdir)/install-outfiles.sub.make $@
+TEXINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(datadir)/tex/ depth=.. INSTALLATION_OUT_FILES="$(TEXTABLES)" -f $(stepdir)/install-outfiles.sub.make $@
-AFMINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir) INSTALLATION_OUT_FILES="$(AFM_FILES)" -f $(stepdir)/install-outfiles.sub.make $@
+AFMINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir)/ INSTALLATION_OUT_FILES="$(AFM_FILES)" -f $(stepdir)/install-outfiles.sub.make $@
LYINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir) INSTALLATION_OUT_FILES="$(LYTABLES)" -f $(stepdir)/install-outfiles.sub.make $@
$(LYINSTALL)
$(AFMINSTALL)
-INSTALLATION_DIR=$(MFDIR)/public/lilypond
+INSTALLATION_DIR=$(datadir)/mf/
INSTALLATION_FILES=$(MF_FILES)
include $(stepdir)/installfiles.make
trills := 3;
set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#);
draw_trill_three;
+ draw_mordent(twidth-0.5toverlap);
fet_endchar;
fet_beginchar("prallmordent", "prallmordent", "prallmordent")
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "violoncello.ly"
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "clarinetti.ly"
}
-\version "1.0.6";
+\version "1.0.7";
\include "clarinetto-1.ly"
\include "clarinetto-2.ly"
}
-\version "1.0.6";
+\version "1.0.7";
clarinetto1 = \notes \relative c {
R1 *2 | d''4-.\ff r r2 | R1 *3 | e4-. r r2 | R1 *3 |
}
-\version "1.0.6";
+\version "1.0.7";
clarinetto2 = \notes \relative c {
R1*2 bes''4-.\ff r r2 | R1*3 | cis4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "contrabasso.ly"
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
contrabasso = \notes \relative c {
% \translator Staff=violoncello
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "corni.ly"
}
-\version "1.0.6";
+\version "1.0.7";
\include "corno-1.ly"
\include "corno-2.ly"
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
corno1 = \notes \relative c {
R1 *2 | f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
corno2 = \notes \relative c {
R1 *2 | d''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "fagotti.ly"
}
-\version "1.0.6";
+\version "1.0.7";
\include "fagotto-1.ly"
\include "fagotto-2.ly"
}
-\version "1.0.6";
+\version "1.0.7";
fagotto1 = \notes \relative c {
R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
fagotto2 = \notes \relative c {
R1 *2 | f4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "flauti.ly"
}
-\version "1.0.6";
+\version "1.0.7";
\include "flauto-1.ly"
\include "flauto-2.ly"
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
flauto1 = \notes \relative c {
R1 *2 | c'''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
flauto2 = \notes \relative c {
R1 *2 | as'''4-.\ff r r2 | R1 *3 | b4-. r r2 | R1 *3 |
}
-\version "1.0.6";
+\version "1.0.7";
global = \notes {
\time 4/4;
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
oboe1 = \notes \relative c'' {
R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
}
-\version "1.0.6";
+\version "1.0.7";
oboe2 = \notes \relative c{
R1 *2| f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "oboi.ly"
}
-\version "1.0.6";
+\version "1.0.7";
\include "oboe-1.ly"
\include "oboe-2.ly"
}
-\version "1.0.6";
+\version "1.0.7";
timpani = \notes \relative c {
R1 *2 | c4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "trombe.ly"
}
-\version "1.0.6";
+\version "1.0.7";
\include "trombo-1.ly"
\include "trombo-2.ly"
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
trombo1 = \notes \relative c {
R1 *2 | c''4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
trombo2 = \notes \relative c {
R1 *2 | c'4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
viola1 = \notes \relative c {
\type Voice=one
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
viola2 = \notes \relative c {
% starts on (actualy, most part is on) same staff as viola1
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "viola-1.ly"
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "violino-1.ly"
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
violino1 = \notes \relative c {
c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "violino-2.ly"
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
violino2 = \notes \relative c {
c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
\include "global.ly"
\include "violoncello.ly"
}
-\version "1.0.6";
+\version "1.0.7";
violoncello = \notes \relative c {
c1\ff ~ | c | f,4-. r r2 | r1 | c'1\ff ~ | c | f,4-. r r2 |
piece = "Allemande";
}
-\version "1.0.6";
+\version "1.0.7";
global = \notes{
\time 4/4;
+++ /dev/null
-\header{
- enteredby = "Tom Cato Amundsen";
- copyright = "Public Domain";
- piece = "Capriccio";
-}
-
-%% I takt 22 foretar jeg et stemmekryss mellom stemme en og to, pga at den
-%% stemmen som tidligere har vært andre stemme, kommeri resten av stykket
-%% ligge øverst og følgelig er første stemme.
-%%
-%% Noe liknende skjer også i mellom andre og tredje stemme i takt 28
-
-\version "1.0.6";
-
-global = \notes{
- \time 2/4;
- \key es;
- s2*48
- \bar ":|:";
- s2*48
- \bar "|.";
-}
-
-vOne = \type Voice = voiceOne \notes\relative c''{
- r8 g c4~ |
- [c8 d16 c][b a g f] |
- [es8 g' d, f'] |
- [es16 d c d][e fis g a] |
-%5
- [bes g fis g][d g fis g] |
- [c g fis g][a g fis e] |
- d8 g4 fis8 |
- g r r4 |
-%9
- r16 [c, fis, g][a bes c8~] |
- [c16 bes a bes][c d e fis] |
- [g8 fis16 g~] g4~ |
- [g8 e16 g~] g4~ |
- [g8 e16 f~] f4~ |
- [f8~ d16 f~] f4~ |
- [f16 es d f][es d c b] |
- [c b c d][es f g8~]
-%17
- [g16 f es g ][f es d c] |
- [b a b c][d es f8~] |
- [f16 as g f][es d c bes!] |
- [as c f es][d c b d] |
-%21
- [g f es g][f es d f] |
-%stemmekryss ugh
- r16 [c b c][g c b c] |
- [es c a' es][c' es, d c] |
- [d bes a bes][f bes a bes] |
-%25
- [d bes g' d][bes' d, c bes] |
- [c a g a][fis a g a] |
- [c a fis' c][a' c, bes a] |
- [bes8 d] g4~ |
-%29
- [g8 a16 g][fis e d c] |
- [bes8 d' a, c'] |
- [g, bes'16 a][g8 bes] |
- [e, g bes, e] |
-%33
- [f, as'16 g][f8 as] |
- [d, f as, d] |
- es,4 r8 c' |
- as4 r |
-%37
- r8 g c4~ |
- [c8 d16 c][b a g f] |
- [es8 g' d, f'~] |
- [f16 es d f][es d c bes] |
-%41
- [as g as bes][c d es8~] |
- [es16 d c es][d c bes as] |
- [g f g as][bes c des8~] |
- [des16 c bes des][c bes as g] |
-%45
- as2~ |
- [as8 g] g4~ |
- [g8 as16 g][f es d c] |
- g'2 |
-%49
- r8 d' g,4~|
- [g8 f16 g][a b c d] |
- [es8 c, f' d,]
- [g'16 as g f][es d c bes] |
-%53
- [as8 f' g, e'] |
- [f16 c' e, f] r [c' e, f~] |
- f4 r |
- r8 [f16 g][as bes c d,] |
-%57
- es8 r r4 |
- r8 [es16 f][g as bes! g] |
- as8 r r4 |
- r16 [g f es][d c b a] |
-%61
- [b c d es] f4~ |
- [f16 es b c] r [es b c] |
- r [d b c] r [c b c~] |
- [c8 g' d f~] |
-%65
- [f es16 f] g4~ |
- [g8 f c es~] |
- [es d16 es] f4~ |
- [f8 es16 d][c bes a g] |
- c2~ |
- c4. c8 |
- bes4 a |
- r16 [a' fis g] r16 [a fis g] |
-%73
- r8 g es4~ |
- es8 d4 c8~ |
- [c es d c] |
- [bes g'][a, fis'] |
-%77
- g4 r8 f! |
- b,4 r |
- r8 g' c,4~ |
- [c8 bes16 c][d e f g] |
-%81
- [as16 c8.][as16 c bes c] |
- [as c8.][as16 bes as bes] |
- [g bes8.][g16 bes as bes] |
- [g bes8.][g16 as g as] |
-%85
- [f as8.][f16 as g as] |
- [f as8.][f16 g f g] |
- [es g d g][c, f bes, es] |
- [as, c f es] f4 |
-%89
- r8 c g'4~ |
- [g8 as16 g][f es d c] |
- b4 r8 es |
- c4 r |
-%93
- r8 g f'4~ |
- [f8 d g <f as,]> |
- <es4 g,> <d f,> |
- <c2 g es>
-}
-
-vTwo = \type Voice = voiceTwo \notes\relative c{
- es4 r8 es |
- f4 r8 bes |
- c4. b8 |
- c r r4 |
-%5
- r8 d g4~ |
- [g8 a16 g][fis e d c] |
- [bes8 d' a, c'~] |
- [c16 bes a c][bes a g f!] |
-%9
- [es8 c] r8 fis! |
- g r r a! |
- [bes16 d8.][bes16 des c des] |
- [bes16 des8.][bes16 c bes c] |
-%13
- [as c8.][as16 c bes c] |
- [as bes8.][as16 bes as bes] |
- g8 r r4 |
- r8 [es16 f][g a b! c] |
-%17
- d8 r r4 |
- r8 [d,16 es][f g a! b!] |
- c8 r r4 |
- r2 |
-%21
- r8 c4 b8 |
- es4 r |
- s2*5 |
- r16 [g,, fis g][d g fis g]
-%29
- [c, g' fis g][a g fis e] |
- d8 g4 fis8 |
- r16 [g fis g][d g fis g] |
- [bes g e' bes][g' bes, as g] |
-%33
- [as f e f][c f e f] |
- [as f d' as][f' as, g f] |
- [g8 bes] es4~
- [es8 f16 es][d c bes as] |
-%37
- g4 r8 c |
- f4 r |
- r8 [es, f g~] |
- [g g] c4~ |
-%41
- [c8 c16 d][es f g as] |
- bes8 f, bes4~ | % HACK vil bruke [...] her
- [bes8 bes16 c][des es f g] |
- as8 [g, f e] | % HACK vil bruke [...] her
-%45
- [f16 f' e g][f es d! c] |
- b4 r8 es |
- c2 |
- b2 |
-%49
- b4 r8 d |
- g, c4 b8 |
- r16 [g as g] r [f g f] |
- es8 g' c,4~ | % HACK vil egentlig bruke [...]
-%53
- [c8 bes16 c][d e f g] |
- [as8 f,][bes' g,] |
- [c'16 des c bes][as g f es!] |
- [d!16 c d es][f g as8~] |
-%57
- [as16 c bes as][g f es d] |
- [c b c d][es f g8~] |
- [g16 bes as g][f es d c] |
- b8 r r4 |
-%61
- r4 r8 d'8 |
- g,4 f |
- es d |
- [es8 es' b d~] |
-%65
- d4. [c16 bes] |
- a4. c8 |
- c4. [bes16 as] |
- g4 r |
-%69
- r8 [bes as g] |
- [fis a] d,4~ |
- [d8 c16 d][e fis g a!] |
- [bes8 g,][c' a,]
-%73
- d'4. c8 |
- fis, bes4 a8~ |
- [a fis g a] |
- d, r r16 [es' d c] |
-%77
- [b8 d] g,4~ |
- [g8 f16 g][a b! c d] |
- [es b, c d][es f g as!] |
- [bes! as g as][bes c d e!] |
-%81
- [f8 e16 f~] f4~ |
- [f8 e16 f~] f4~ |
- [f8 d16 es!~] es4~ |
- [es8 d16 es~] es4~ |
-%85
- [es8 c16 d~] d4~ |
- [d8 c16 d~] d4 |
- [c8 bes! as g] |
- f4 r16 [c' b d] |
-%89
- g,4 r8 es' |
- c4 r |
- r8 d, g4~ |
- [g8 as16 g][f es d c] |
-%93
- b4 r8 d' |
- [g, b c d~] |
-% ???
-% What have i misunderstood? I want the note_head not to collide with
-% i hotehead i vOne
- \property Voice.hshift = -1
- d
- \property Voice.hshift = 0
- c4 b8 |
-}
-vThree = \type Voice = voiceThree \notes\relative c{
- \stemdown
- c4 r8 c |
- d4 r |
- r8 [es f g] |
- [c, c' bes! a] |
-%5
- g4 r8 g |
- a4 r |
- r8 [bes, c d] |
- [g, d'] g4~ |
-%9
- [g8 a16 g][fis e d c] |
- [bes8 d' a, c'] |
- [g, bes' f,! as'!] |
- [e, g' c,, e']
-%13
- [f, as' es,! g'] |
- [d, f' bes,, d'] |
- [es, es' f g] |
- as r8 r4 |
-%17
- r8 [d, es f] |
- g r8 r4 |
- r8 g c4~ |
- [c8 d16 c][b a g f] |
-%21
- [es8 g' d, f'] |
- [c, es'16 d][c8 es] |
- [a, c f, a] |
- [bes, d'16 c][bes8 d] |
-%25
- [g, bes es, g] |
- [a, c'16 bes][a8 c] |
- [fis, a d, fis] |
- g,8 r bes r |
-%29
- a r c r |
- r [bes c d] |
- g, r bes r |
- r4 c8 r |
-%33
- f r as, r |
- r4 bes8 r |
- r16 [f'16 es d][c bes as g] |
- [f es' d c][bes as g f] |
-%37
- [es d' c bes][as g f es] |
- [d c' b a][g f es d] |
- c8 c'4 b8 |
- c4 r16 [c d es] |
-%41
- f8 r r4 |
- bes,4 r16 [bes c d] |
- es8 r r4 |
- r8 [as, bes c] |
-%45
- [f, c'] f4~ |
- [f16 es d f][es d c bes] |
- [as8 g] as4^\mordent |
- g2
-%49
- g'4 r8 f |
- es4 d |
- c8 r d r |
- es4 r8 e |
-%53
- f4 [bes8 c] |
- f8 r g r |
- [as f,g as] |
- bes r r4 |
-%57
- r8 [es, f g] |
- as r r4 |
- r8 [d, es f] |
- [g d] g,4~ |
-%61
- [g8 f16 g][a b c d] |
- [es8 c, f' d,] |
- [g' es, as' f,] |
- [g'16 g, g' as][g f es d] |
-%65
- [c g' c d][c bes a g] |
- [f f, f' g][f es d c] |
- [bes f' bes c][bes as! g f] |
- [es es, es' f][es d c bes] |
-%69
- [a g a bes][c d es c] |
- [d c d e][fis g a fis] |
- [g8 es c d] |
- g, r es' r |
-%73
- [bes16 g' fis g][c, a' fis g] |
- [d bes' fis g][es c' fis, g] |
- [fis, es' d c][bes a g fis] |
- [g f! es d][c8 d] |
-%77
- [g16 fis g a][b c d es] |
- [f es d es][f g a b] |
- c8 r r c |
- e, r r c' |
-%81
- [f, as' es, g'] |
- [d, f' bes,, d'] |
- [es, g' d, f'] |
- [c, es' as,, c'] |
-%85
- [d,8 f' c, es'] |
- [b, d' g,, b'] |
- [c, g'] c4~ |
- [c8 d16 c][b a g f] |
-%89
- [es d c d][es f g es] |
- [as g f g] as4~ |
- [as16 as g f][es d c bes!] |
- [as g' f es][d c b a] |
-%93
- [g es' d c][b a g f] |
- [es as g f][es d es f] |
- [g c es fis][g8 g,] |
- <c2 c,>
-}
-
-vOneSwitch = \type Voice = voiceOne \notes{
- s2*4
-%5
- \stemup s2*17
-%22
- \stemdown s16*1
- \stemboth s16*7
-%23
- s2*12
-%35
- s4 \stemup s4
- s2*3
-%39
- \stemboth s2*2
-%41
- \stemup s2*8
-%49
- \stemboth s2*3
-%52
- \stemup s2*8
-%60
- \stemboth s2
-%61
- \stemup s2*35
-%96
- \stemboth
-}
-
-vTwoSwitch = \type Voice = voiceTwo \notes{
- \stemup s2*4
-%5
- \stemdown \translator Staff = treble s2*17
-%22
- \stemup
- s2*6
-%28
- \translator Staff = bass s2*7
-%35
- s4 \translator Staff = treble \stemdown s4
- s2*3
-%39
- \translator Staff = bass \stemup s2*2
-%41
- s4 \translator Staff = treble \stemdown s4
-%42
- s8 \translator Staff = bass \stemup s8*3
-%43
- s4 \translator Staff = treble \stemdown s4
-%44
- s8 \translator Staff = bass \stemup s8*3
-%45
- \translator Staff = treble \stemdown s2*4
-%49
- \stemup \translator Staff = bass s2*3
-%52
- s8*1 \stemdown \translator Staff = treble \stemdown s8*3
- s2*7
-%60
- \stemup \translator Staff = bass s2
-%61
- \translator Staff = treble \stemdown s2*35
-}
-
-vThreeSwitch = \type Voice = voiceThree \notes{
- \stemdown s2*6
-%7
- \stemboth s2*21
-%28
- \stemdown s2*7
-%35
- s4 \stemboth s4
-%36
- s2*3
-%39
- \stemdown s2*7
-%46
- \stemboth s2*3
-%49
- \stemdown s2*3
-%52
- s4 \stemboth s4
- s2
-%54
- s2*2 %HACK evt endre her, sammenlikne med Henle
-%56
- s2*4
-%60
- \stemdown
-}
-
-\score{
- \type GrandStaff<
- \type Staff = treble <
- \global
- \vOneSwitch
- \vOne
- >
- \type Staff = bass <
- \clef bass;
- \global
- \vTwoSwitch
- \vTwo
- \vThreeSwitch
- \vThree
- >
- >
- \paper{
- }
- \midi{\tempo=60;}
-}
copyright = "Public Domain";
}
-\version "1.0.6";
+\version "1.0.7";
global = \notes {
\time 4/4;
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
one = \notes\relative c {
\property Voice . textstyle = "italic"
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
one = \notes\relative c{
\property Voice . textstyle = "italic"
r8\mf [c'-1( e-2 g-4] [e-2 c-1 bes'-5 g-3] |
copyright = "public domain";
}
-\version "1.0.3";
+\version "1.0.7";
one = \notes \transpose c`` {
enteredby = "jcn";
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
one = \notes\relative c{
\property Voice . textstyle = "italic"
enteredby = "jcn";
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
one = \notes\relative c{
enteredby = "jcn";
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
one = \notes\relative c{
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "allemande-urtext.ly";
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "allemande-urtext.ly";
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "courante-urtext.ly";
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "courante-urtext.ly";
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "gigue-urtext.ly";
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "gigue-urtext.ly";
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "menuetto-urtext.ly";
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "menuetto-urtext.ly";
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "prelude-urtext.ly";
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "prelude-urtext.ly";
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "sarabande-urtext.ly";
dotted slurs
%}
-\version "1.0.6";
+\version "1.0.7";
\include "sarabande-urtext.ly";
%{
%}
-\version "1.0.6";
+\version "1.0.7";
global =
Tested Features: stem direction, multivoice, forced accidentals.
%}
-\version "1.0.6";
+\version "1.0.7";
\include "nederlands.ly" % for correct parsing of note names
copyright = "Public Domain";
}
-\version "1.0.6";
+\version "1.0.7";
global =
\notes {
Ugh.. Wish we had grace notes.... It adds another dimension to this
piece of music. %}
-\version "1.0.6";
+\version "1.0.7";
cad = \notes \relative c' {
}
-\version "1.0.6";
+\version "1.0.7";
allegro =
\notes
definition below. --MB
%}
-\version "1.0.6";
+\version "1.0.7";
vi1=\notes \relative c'' {
\time 4/4;
copyright = "public domain";
latexheaders= "headers";
}
-\version "1.0.6";
+\version "1.0.7";
%{
Silly latex file dropped; use ly2dvi
copyright = "public domain";
}
-\version "1.0.6";
+\version "1.0.7";
\include "standchen.ly"
description = "A schubert song in 20 pt";
}
-\version "1.0.6";
+\version "1.0.7";
% fool make-website
% \include "standchen.ly";
Note: Original key F.
%}
-\version "1.0.6";
+\version "1.0.7";
$vocal_verse1 = \notes\relative c{
% ugh: treble/bass
e2 r4 |
}
-$lyric_verse1 = \lyric{
+$lyric_verse1 = \lyrics{
% 5
\[/3 Lei-4 se8 \] fleh-4. en8 |
\[/3 mei-4 ne8 \] Lie-4 der8 _8 |
nicht.2. |
}
-$lyric_verse2 = \lyric{
+$lyric_verse2 = \lyrics{
% 5
\[/3 H\"orst4 die8 \] Nach-4. ti-8
\[/3 gal-4 len8 \] schla-4 gen?8 _8
Herz.2.
}
-$lyric_through = \lyric{
+$lyric_through = \lyrics{
% 37
La\ss8. auch16 dir8. die16 Brust8. be-16 |
we-4 gen _ |
}
-$lyric_four = \lyric{
+$lyric_four = \lyrics{
_4 _ _
_ _ _
_ _ _
_ _ _
}
-
-lyrics = {
+
+allLyrics = {
\time 3/4;
% \skip 4 * 12;
\$lyric_four
}
$lyric_staff = \type Lyrics = lyric<
- \$lyrics
+ \allLyrics
>
vocals = \notes{
found = 1
break
if found:
- sys.stderr.write ('\nNot smart enough to convert \\octave\n')
+ sys.stderr.write ('\nNot smart enough to convert \\octave')
raise FatalConversionError()
return lines
conversions.append (
((0,1,21), conv, '\\musical_pitch -> \\musicalpitch, '+
- '\\meter -> \\time\n'))
+ '\\meter -> \\time'))
if 1: # need new a namespace
def conv (lines):
conversions.append (
((1,0,1), conv, '\\accidentals -> \\keysignature, ' +
- 'specialaccidentals -> keyoctaviation\n'))
+ 'specialaccidentals -> keyoctaviation'))
if 1:
def conv(lines):
found = 1
break
if found:
- sys.stderr.write ('\nNot smart enough to convert to new \\header format\n')
+ sys.stderr.write ('\nNot smart enough to convert to new \\header format')
return lines
- conversions.append ((1,0,2), conv, '\header { key = concat + with + operator }\n')
+ conversions.append ((1,0,2), conv, '\\header { key = concat + with + operator }')
if 1:
def conv(lines):
newlines.append (x)
return newlines
- conversions.append ((1,0,3), conv, '\melodic -> \notes\n')
+ conversions.append ((1,0,3), conv, '\\melodic -> \\notes')
+
if 1:
def conv(lines):
newlines =[]
newlines.append (x)
return newlines
- conversions.append ((1,0,4), conv, 'default_{paper,midi}\n')
+ conversions.append ((1,0,4), conv, 'default_{paper,midi}')
if 1:
def conv(lines):
newlines.append (x)
return newlines
- conversions.append ((1,0,5), conv, 'ChoireStaff -> ChoirStaff\n')
+ conversions.append ((1,0,5), conv, 'ChoireStaff -> ChoirStaff')
if 1:
def conv(lines):
newlines.append (x)
if found: break
if found:
- sys.stderr.write ('\nNot smart enough to \\translator syntax\n')
+ sys.stderr.write ('\nNot smart enough to \\translator syntax')
raise FatalConversionError()
return newlines
- conversions.append ((1,0,6), conv, 'foo = \\translator {\type .. } ->\translator {\type ..; foo; }\n')
+ conversions.append ((1,0,6), conv, 'foo = \\translator {\\type .. } ->\\translator {\\type ..; foo; }')
+
+
+if 1:
+ def conv(lines):
+ newlines =[]
+ for x in lines:
+ x = regsub.gsub ('\\\\lyric', '\\\\lyrics',x)
+ newlines.append (x)
+ return newlines
+
+ conversions.append ((1,0,7), conv, '\\lyric -> \\lyrics')
+
+
############################
+
def get_conversions (from_version, to_version):
def version_b (v, f = from_version, t = to_version):
# i've got no idea what this scaling could be for, on both sides...
# it seems that 'low_res', which should be all we ever need according
# to the metapost mfplain guru, really does 200dpi, iso 600dpi (minimun)
- -mp "&mfplain \mode=lowres; \mag=100.0; batchmode; input $<"
+ -$(METAPOST) "&mfplain \mode=lowres; \mag=100.0; batchmode; input $<"
# -mp "&mfmp \mode=ljfour; \mag=100.0; batchmode; input $<"
# -mp "&mfplain modes \mode=ljfour; \mag=100.0; batchmode; \\input $<"
# -mp "&mfplain \mode=lowres; \mag=10.0; batchmode; input $<"
EXTRA_DIST_FILES = $(TEX_FILES) lilyponddefs.ps
-INSTALLATION_DIR=$(TEXDIR)/lilypond
+INSTALLATION_DIR=$(datadir)/tex/
INSTALLATION_FILES=$(TEX_FILES)
include $(depth)/make/stepmake.make