-2/Feb/98 LilyPond 0.1.43 1
+29/Jan/98 LilyPond 0.1.44 1
-2/Feb/98 LilyPond 0.1.43 2
+29/Jan/98 LilyPond 0.1.44 2
gzip -c9 $< > $@
name-stem= $(notdir $(basename $<))
-$(outdir)/%.dvi: $(depth)/input/%.ly $(depth)/VERSION
- (cd $(outdir); \
- lilypond -I/ ../$< )
- (cd $(outdir); \
- if [ -f ../$(basename $< ).tex ]; \
- then \
- latex ../$(basename $< ) ;\
- else \
- tex $(name-stem) ;\
- fi)
-
-
$(outdir)/%.gif: $(outdir)/%.ps
sh $(depth)/bin/ps-to-gifs.sh $<
=head2 Examples
+=over 4
+
+=item *
<a href=examples_output.html
>
short examples of what LilyPond can do: MIDI, PS, .gif and input.
</a
>
+=item *
<a href=mutopiaexamples_output.html
>
examples of what LilyPond can do
</a
>
+=back
=head2 NEWS!
Music publishers make lots of money out of selling sheet music which
is in the public domain (the composers died a long time ago). It is
usually prohibited to xerox the sheet music. Publishers have two
-arguments to justify this policy: the high prices are there to guarantee
-diversity (keeping lots of stock is expensive), and to encourage new
-work being composed.
+arguments to justify this policy: the high prices are there to
+guarantee diversity (keeping lots of it in stock is expensive), and to
+encourage new work being composed.
This is bad. Storing a Mudela file takes almost no space at all, and
if sheet music could be had for free, then it would be much easier
call The Mutopia Project.
-
-
=head1 STATUS
This project is still in its vapourware stage, so don't ask questions
J.S. Bach, Das Wohltemperierte Clavier I: C major Prelude & Fugue, C
minor fugue. Solo cello suites: suite II, menuetto (alto version).
+Six small preludes: some preludes.
=item *
-2/Feb/98 LilyPond 0.1.43 1
+28/Jan/98 LilyPond 0.1.44 1
-2/Feb/98 LilyPond 0.1.43 2
+28/Jan/98 LilyPond 0.1.44 2
-2/Feb/98 LilyPond 0.1.43 3
+28/Jan/98 LilyPond 0.1.44 3
-2/Feb/98 LilyPond 0.1.43 4
+28/Jan/98 LilyPond 0.1.44 4
-2/Feb/98 LilyPond 0.1.43 5
+28/Jan/98 LilyPond 0.1.44 5
-2/Feb/98 LilyPond 0.1.43 6
+28/Jan/98 LilyPond 0.1.44 6
+
+pl 44
+ - ly2dvi 0.6.hwn1
+ - ly2dvi 0.6 (JAF)
+ - use ly2dvi for website
+
+pl 44.jcn2
+ - fingers default to above note
+ - preludes-2.ly
+ - parser: fingerings
+ - preludes-1.ly
+ - bf: denneboom.ly
+ - preludes-3.ly.m4, standje.ly, preludes-4.ly
+ - make rule for macro ly-files
+ - pletvisibility (init/property.ly):
+ * default no bracket with beams
+ * invisible plet bracket feature
+ - finger dir in text-def
+
+*******
+feb 2
+
pl 43
- bf: broken Plet_spanners
- more GNITting
- some NeXTStep patches from tiggr
- don't do overstrike/bold chars in textfiles
+
pl 42.jcn2
- bit hesitating start of mutopia
- bf: don't try to typeset unterminated plet
TOPLEVEL_MAJOR_VERSION = 0
TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 43
+TOPLEVEL_PATCH_LEVEL = 44
TOPLEVEL_MY_PATCH_LEVEL =
# use the above to send patches, always empty for released version:
if [ "x$LILYINCLUDE" = "x" ]; then
echo you should make add the following to your login script
- echo "export LILYINCLUDE=$lelie/current/init:$lelie/current/input:$lelie/current/mutopia:$lelie/current/mutopia/j.s.bach"
+ echo "export LILYINCLUDE=$lelie/current/init:$lelie/current/input:$lelie/current/mutopia:$lelie/current/mutopia/out:$lelie/current/input:$lelie/current/mutopia/J.S.Bach:$lelie/current/mutopia/J.S.Bach/out"
echo "export PATH=$PATH:$lelie/current/bin/out/"
echo "export MFINPUTS=$MFINPUTS:$lelie/current/mf"
fi
s/\\plet *([1-9][0-9]*) *\/ *([2-9][0-9]*) *;/\\[$1\/$2/;
}
+sub convert_0_1_8_to_0_1_9
+{
+# sticky plet shorthand...
+# print "introduced plet and finger shorthands...\n";
+}
+
###############################################################
sub last_conversion
"0.1.6" => \&convert_0_1_5_to_0_1_6
,"0.1.7" => \&convert_0_1_6_to_0_1_7
,"0.1.8" => \&convert_0_1_7_to_0_1_8
+ ,"0.1.9" => \&convert_0_1_8_to_0_1_9
);
def __del__ (self):
self.close ();
+
+
+import fnmatch
+import os
+
+_debug = 0
+
+_prune = ['(*)']
+
+
+def my_find(patterns, dir = os.curdir):
+ list = []
+ names = os.listdir(dir)
+ names.sort()
+ for name in names:
+ if name in (os.curdir, os.pardir):
+ continue
+ fullname = os.path.join(dir, name)
+ for pat in patterns:
+ if fnmatch.fnmatch(name, pat):
+ list.append(fullname)
+ if os.path.isdir(fullname) and not os.path.islink(fullname):
+ for p in _prune:
+ if fnmatch.fnmatch(name, p):
+ if _debug: print "skip", `fullname`
+ break
+ else:
+ if _debug: print "descend into", `fullname`
+ found = my_find(patterns, fullname)
+ if found:
+ list = list + found
+ return list
+
+def multiple_find(pats, dirnames):
+ from find import find
+ l = []
+ for d in dirnames:
+ l = l + my_find(pats, d)
+ return l
--- /dev/null
+#! /bin/bash
import regex
import regsub
from string import *
+from flower import *
import sys
import os
import getopt
# Original LaTeX file made by Mats Bengtsson, 17/8 1997
#
-VERSION="0.5"
-IDENTIFICATION="lytodvi.sh $VERSION"
+VERSION="0.6.hwn1"
+NAME=ly2dvi.sh
+IDENTIFICATION="$NAME $VERSION"
NOW=`date`
echo "$IDENTIFICATION" 1>&2
# NEWS
-# 0.5.hwn1
-# - do tee of output.
+
+# 0.6.hwn1
+# - handle LILYINCLUDE
+# - --output
+#
+# 0.6
+# - Source rc-files, if present. Files are:
+# /usr/local/share/lilyrc /etc/lilyrc $HOME/.lilyrc ./.lilyrc
+# - tee output from Lilypond
+# - Handles margins for A4 paper (equal on both sides)
+# - new option -s (--separate) for one LaTeX run per file,
+# else all files are run together
+
# 0.5
# - More useful ("two-level") debug.
# - The Q&D hack to find file names and not handling \include
Options:
-D, --debug set debug mode
+ -o, --output set output directory
-h, --help this help text
-k, --keep keep LaTeX file
-l, --language= give LaTeX language (babel)
-p, --papersize= give LaTeX papersize (eg. a4paper)
+ -s, --separate run all files separately through LaTeX
files may be (a mix of) input to or output from lilypond(1)
EOF
}
+
+#
+# RC-files ?
+#
+for D in /usr/local/share/ /etc/ $HOME/. ./.
+do
+ RCfile=$D"lilyrc"
+ [ -f $RCfile ] && . $RCfile
+done
+
#
# Keywords defined in titledefs.tex
#
# debugging
#
debug_echo=true
-
+#
+# All files in one LaTeX run
+#
+SEPFILE=N
#
# Find command line options and switches
#
# "x:" x takes argument
#
-switches="Dhkl:p:\?"
+switches="Do:hkl:p:s\?"
options=""
#
# ugh, "\-" is a hack to support long options
l )
LNG=$OPTARG
;;
+ o )
+ OUTPUTDIR=$OPTARG
+ ;;
p )
PSZ=$OPTARG
;;
+ s )
+ SEPFILE=Y
+ ;;
\? )
help;
exit -1
-)
$debug_echo "long option: \`$OPTARG'"
case "$OPTARG" in
+ D*|-D*)
+ if [ $debug_echo = echo ]
+ then
+ set -x
+ fi
+ debug_echo=echo
+ ;;
h*|-h*)
help;
exit 0
p*|-p*)
PSZ=`echo $OPTARG | sed -e s/"^.*="//`
;;
- D*|-D*)
- if [ $debug_echo = echo ]
- then
- set -x
- fi
- debug_echo=echo
+ o*|-o*)
+ OUTPUTDIR=$OPTARG
+ ;;
+ s*|-s*)
+ SEPFILE=Y
;;
*|-*)
echo $0": illegal option -- "$OPTARG;
exit 1
fi
#
-for GF in $*
+startFile(){
+#
+# LaTeX file name
+#
+if [ "$KEEP" != "Y" ]
+then
+ if [ "$TMP" = "" ]
+ then
+ TMP=/tmp
+ fi
+ if [ ! -d $TMP ]
+ then
+ $debug_echo $IDENTIFICATION": temporary directory "$TMP" not found, set to /tmp"
+ TMP=/tmp
+ fi
+#
+ BN=`basename $File .tex`
+ FN=$BN.$$
+ LF=$TMP/$FN.tex
+else
+ BN=`basename $File .tex`
+ FN=$BN.$$
+ LF=$FN.tex
+fi
+#
+# Find:
+# paper size (PSZ, overridden by command line option -p)
+# language (LNG, overridden by command line option -l)
+# textwidth
+#
+eval `sed -n \\
+ -e 's/\\\\def\\\\mudelapapersize{\([^}]*\).*$/fPSZ=\1;/p' \\
+ -e 's/\\\\def\\\\mudelalanguage{\([^}]*\).*$/fLNG=\1;/p' \\
+ -e 's/\\\\def\\\\mudelapaperlinewidth{\([^}]*\).*$/TWN=\1;/p' \\
+ $File`
+if [ "$PSZ" = "" ]
+then
+ PSZ=$fPSZ
+fi
+if [ "$PSZ" != "" ]
+then
+ PAPER="["$PSZ"]"
+fi
+#
+if [ "$LNG" = "" ]
+then
+ LNG=$fLNG
+fi
+if [ "$LNG" != "" ]
+then
+ LLNG="\usepackage["$LNG"]{babel}"
+else
+ LLNG="%"
+fi
+
+#
+# Find textwidth
+#
+if [ "$TWN" != "" ]
+then
+ TW=$TWN
+ case $TW in
+ *mm)
+ ;;
+ *cm)
+ ;;
+ *pt)
+ ;;
+ *)
+ TW=$TW"pt"
+ ;;
+ esac
+ $debug_echo "Text width = "$TW
+fi
+TWp=`echo $TW | sed -e 's/\..*$//'`
+PWp=600; # Width of A4 paper!
+MARG=`expr $PWp - $TWp`
+MARG=`expr $MARG / 2`"pt"
+#
+# Geometry: /var/lib/texmf/latex/geometry/geometry.dvi
+#
+#
+# Write LaTeX file
+#
+cat << EOF > $LF
+% Creator: $IDENTIFICATION
+% Automatically generated from $IF, $NOW
+
+\documentclass$PAPER{article}
+\nonstopmode
+$LLNG
+\usepackage{geometry}
+\usepackage[T1]{fontenc}
+%\addtolength{\oddsidemargin}{-1cm}
+%\addtolength{\topmargin}{-1cm}
+\setlength{\textwidth}{$TW}
+\geometry{width=$TW, left=$MARG, top=1cm}
+\input lilyponddefs
+\input titledefs
+\begin{document}
+EOF
+#
+# Include \def\mudela-definitions
+#
+for L in $MU_DEF
do
- #
- # Check if input file exists...
- #
- if [ ! -f $GF ]
+ LL=`egrep '^\\\\def.'$L'{' $OF`
+ if [ "$LL" != "" ]
then
- GF=$GF.ly
- if [ ! -f $GF ]
+ LLL=`echo $LL | sed -e 's/}.*$//' -e 's/.*{//'`
+ if [ "$LLL" != "" ]
then
- $debug_echo $IDENTIFICATION": Input file "$GF" not found"
- exit 2
+ echo '\'$L'{'$LLL'}%' >> $LF
fi
fi
+done
+#
+cat << EOF >> $LF
+\makelilytitle
+EOF
+}
+#
+# Conclusion
+#
+endFile(){
+cat << EOF >> $LF
+\vfill\hfill{(\LilyIdString)}
+\end{document}
+EOF
+#
+# Run LaTeX
+#
+latex $LF || exit 5
+#
+# Rename dvi file
+#
+if [ -f $FN.dvi ]
+then
+ RESULT=$BN.dvi
+ if [ x$OUTPUTDIR != x ]; then
+ RESULT="$OUTPUTDIR/$RESULT"
+ fi
+ cp $FN.dvi $RESULT
+fi
+#
+# Clean up
+#
+if [ "$KEEP" != "Y" ]
+then
+ rm $LF $FN.*
+fi
+#
+# Output some info
+#
+cat << EOF
+
+$IDENTIFICATION: dvi file name is $RESULT
+
+EOF
+}
+
+ # ugh. GF is side-effect.
+findInput() {
+ # should check for LILYINCLUDE
+ for lypath in `echo $LILYINCLUDE| sed 's/:/ /g'`
+ do
+ if [ x$lypath = x ]
+ then
+ lypath="."
+ fi
+
+ if [ -f "$lypath/$1" ]
+ then
+ GF="$lypath/$1"
+ return
+ fi
+
+ if [ -f "$lypath/$1.ly" ]
+ then
+ GF="$lypath/$1.ly"
+ return
+ fi
+ done
+ $debug_echo $IDENTIFICATION": Input file "$GF" not found"
+ echo $NAME": Input file "$GF" not found" 1>&2
+ exit 2
+}
+#
+# Loop through all files
+#
+for GF in $*
+do
+ findInput $GF
+
#
# Check whether the file is input to or output from lilypond
#
$debug_echo "lilypond "$IF
lilypond $IF 2>&1 | tee /tmp/lilylog.$$
- OF=`cat /tmp/lilylog.$$| egrep '^TeX output to ' | \\
+ OF=`egrep '^TeX output to ' /tmp/lilylog.$$ | \\
sed -e 's/TeX output to//' -e 's/\.\.\.//'`
+ rm /tmp/lilylog.$$
$debug_echo "==> "$OF
fi
#
- # Check if output file is generated
+ # "Spin through" all the files
#
for File in $OF
do
$debug_echo "--- "$File
+ #
+ # Check if output file is generated
+ #
if [ ! -f $File ]
then
$debug_echo $IDENTIFICATION": hmm, I could not find the output file "$File
exit 4
fi
+ #
+ # Is this the first file?
+ #
if [ -z "$FFile" ]
then
FFile=$File
- #
- # LaTeX file name
- #
- if [ "$KEEP" != "Y" ]
- then
- if [ "$TMP" = "" ]
- then
- TMP=/tmp
- fi
- if [ ! -d $TMP ]
- then
- $debug_echo $IDENTIFICATION": temporary directory "$TMP" not found, set to /tmp"
- TMP=/tmp
- fi
- #
- BN=`basename $FFile .tex`
- FN=$BN.$$
- LF=$TMP/$FN.tex
- else
- BN=`basename $FFile .tex`
- FN=$BN.$$
- LF=$FN.tex
- fi
- #
- # Find:
- # paper size (PSZ, overridden by command line option -p)
- # language (LNG, overridden by command line option -l)
- # textwidth
- #
- eval `sed -n \\
- -e 's/\\\\def\\\\mudelapapersize{\([^}]*\).*$/fPSZ=\1;/p' \\
- -e 's/\\\\def\\\\mudelalanguage{\([^}]*\).*$/fLNG=\1;/p' \\
- -e 's/\\\\def\\\\mudelapaperlinewidth{\([^}]*\).*$/TWN=\1;/p' \\
- $OF`
- if [ "$PSZ" = "" ]
- then
- PSZ=$fPSZ
- fi
- if [ "$PSZ" != "" ]
- then
- PAPER="["$PSZ"]"
- fi
- #
- if [ "$LNG" = "" ]
- then
- LNG=$fLNG
- fi
- if [ "$LNG" != "" ]
- then
- LLNG="\usepackage["$LNG"]{babel}"
- else
- LLNG="%"
- fi
-
- #
- # Find textwidth
- #
- if [ "$TWN" != "" ]
- then
- TW=$TWN
- case $TW in
- *mm)
- ;;
- *cm)
- ;;
- *pt)
- ;;
- *)
- TW=$TW"pt"
- ;;
- esac
- $debug_echo "Text width = "$TW
- fi
-
- #
- # Write LaTeX file
- #
- cat << EOF > $LF
-% Creator: $IDENTIFICATION
-% Automatically generated from $IF, $NOW
-
-\documentclass$PAPER{article}
-\nonstopmode
-$LLNG
-\usepackage[T1]{fontenc}
-\addtolength{\oddsidemargin}{-1cm}
-\addtolength{\topmargin}{-1cm}
-\setlength{\textwidth}{$TW}
-\input lilyponddefs
-\input titledefs
-\begin{document}
-EOF
- #
- # Include \def\mudela-definitions
- #
- for L in $MU_DEF
- do
- LL=`egrep '^\\\\def.'$L'{' $OF`
- if [ "$LL" != "" ]
- then
- LLL=`echo $LL | sed -e 's/}.*$//' -e 's/.*{//'`
- if [ "$LLL" != "" ]
- then
- echo '\'$L'{'$LLL'}%' >> $LF
- fi
- fi
- done
- #
- cat << EOF >> $LF
-\makelilytitle
-EOF
+ startFile
fi
cat << EOF >> $LF
\input{$File}
EOF
+ if [ $SEPFILE = Y ]
+ then
+ FFile=""
+ endFile
+ fi
done
done
-cat << EOF >> $LF
-\vfill\hfill{(\LilyIdString)}
-\end{document}
-EOF
-#
-# Run LaTeX
-#
-latex $LF || exit 5
-#
-# Rename dvi file
-#
-if [ -f $FN.dvi ]
+if [ $SEPFILE = N ]
then
- cp $FN.dvi $BN.dvi
+ endFile
fi
#
-# Clean up
-#
-if [ "$KEEP" != "Y" ]
-then
- rm $LF $FN.*
-fi
-#
-# Output some info
-#
-cat << EOF
-
-$IDENTIFICATION: dvi file name is $BN.dvi
-
-EOF
# OK - finished
+#
Patches do not contain automatically generated files, \n\
i.e. you should rerun configure\n\n'
-import fnmatch
-import os
-
-_debug = 0
-
-_prune = ['(*)']
-
-
-def my_find(patterns, dir = os.curdir):
- list = []
- names = os.listdir(dir)
- names.sort()
- for name in names:
- if name in (os.curdir, os.pardir):
- continue
- fullname = os.path.join(dir, name)
- for pat in patterns:
- if fnmatch.fnmatch(name, pat):
- list.append(fullname)
- if os.path.isdir(fullname) and not os.path.islink(fullname):
- for p in _prune:
- if fnmatch.fnmatch(name, p):
- if _debug: print "skip", `fullname`
- break
- else:
- if _debug: print "descend into", `fullname`
- found = my_find(patterns, fullname)
- if found:
- list = list + found
- return list
-
-def multiple_find(pats, dirnames):
- from find import find
- l = []
- for d in dirnames:
- l = l + my_find(pats, d)
- return l
-
pats = ['*.lsm', 'configure', '*.txt', 'lilypond.spec']
def remove_automatic(dirnames):
files = []
#
# source file of the GNU LilyPond music typesetter
#
-# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+# (c) 1997, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
#
"""
depth = ''
makewebsite_id = "<!make_website!>";
-id_str = "make-website 0.7";
+id_str = "make-website 0.8";
tar = "tar";
make = "make";
mailaddress = "unknown"
footstr = ""
lilyversion= ''
+include_path=[ 'input', 'mutopia' , 'mutopia/J.S.Bach',
+ 'mutopia/J.S.Bach/out' ]
+
def set_vars():
__main__.lilyversion = version_tuple_to_str(lilydirs.version_tuple())
os.environ["TEXINPUTS"] = os.environ["TEXINPUTS"] + ":%s/input/:" % depth;
- os.environ["LILYINCLUDE"] = "%s/input/:%s/mutopia/:%s/mutopia/J.S.Bach" \
- % ((depth, ) *3);
+
+ os.environ["LILYINCLUDE"] = join (':', __main__.include_path)
os.environ["LILYTOP"] = depth;
__main__.mailaddress= os.environ['MAILADDRESS']
pw = pwd.getpwuid (os.getuid());
"multi"]
mutopia_examples = [ "wtk1-fugue2",
- "standchen-16",
- "standchen-20",
"standje",
+ "preludes-1",
+ "preludes-2",
"wtk1-prelude1",
"gallina",
"scsii-menuetto"]
def gen_examples(inputs):
print 'generating examples:\n'
- list = map(lambda x: 'out/%s.ps.gz out/%s.gif out/%s.ly.txt' % (x,x,x), inputs)
+ outputs = []
+ for i in inputs:
+ located = multiple_find ([i + '.ly'], include_path) [0]
+
+ outputs.append (located)
+ if not file_exist_b(i + '.dvi'):
+ my_system (['ly2dvi %s' % located])
+ if not file_exist_b(i + '.ly.txt'):
+ os.link (located, i + ".ly.txt")
+ list = map(lambda x: 'out/%s.ps.gz out/%s.gif' % (x,x), inputs)
my_system (['make -C .. ' + join(' ', list)])
+ return outputs
def gen_list(inputs, filename):
print "generating HTML list %s\n" % filename;
'files have been scaled to eliminate aliasing.\n');
for ex in inputs:
+ print '%s, ' % ex
header = read_mudela_header(ex + '.ly.txt')
+
def read_dict(s, default, h =header):
try:
ret = h[s]
'<TITLE>LilyPond WWW: \\1</TITLE>', s)
dump_file (f,s)
+
+def do_examples (examples, filename):
+ located_files = gen_examples (examples)
+ gen_list (examples, filename)
def main():
identify();
os.chdir (lilydirs.topdir + 'Documentation/out')
__main__.depth = "../../";
+ __main__.include_path = map(lambda p: __main__.depth + '/' +
+ p, __main__.include_path)
set_vars();
gen_html();
copy_files();
- gen_examples(examples);
- gen_list(examples, 'examples_output.html');
-
- gen_examples(mutopia_examples);
- gen_list(mutopia_examples, 'mutopiaexamples_output.html');
+ do_examples (examples, 'examples_output.html');
+ do_examples (mutopia_examples, 'mutopiaexamples_output.html');
gen_manuals();
#set_images();
edit_html();
+pl 37
+ - various String/File_path mucking
+
pl 36
- memmem fix: bugfree and *really* conforming to /usr/include/string.h
/// add to end of path.
Array<String>::push;
- void add (String str) { push (str); }
+ void add (String str);
void parse_path (String);
};
/// the length of the string
int length_i () const;
- // ***** depreciated
- int len () const {
- return length_i ();
- }
-
/// convert to an integer
int value_i () const;
if (di >= 0)
{
drive = path.left_str (di + 1);
- path = path.right_str (path.len() - di -1);
+ path = path.right_str (path.length_i () - di -1);
}
else
drive = "";
if (di >=0)
{
dirs = path.left_str (di + 1);
- path = path.right_str (path.len()-di -1);
+ path = path.right_str (path.length_i ()-di -1);
}
else
dirs = "";
if (di >= 0)
{
filebase = path.left_str (di);
- extension =path.right_str (path.len()-di);
+ extension =path.right_str (path.length_i ()-di);
}
else
{
*/
String
File_path::find (String nm) const
-
{
fdebug << _("looking for ") << nm << ": ";
if (!nm.length_i() || (nm == "-") )
for (int i=0; i < size(); i++)
{
String path = elem(i);
- if (path.length_i() )
- path += "/";
+ String sep (DIRSEP);
+ String right(path.right_str (1));
+ if (path.length_i () && right != sep)
+ path += DIRSEP;
path += nm;
fdebug << "\n";
return "";
}
+
+void
+File_path::add (String s)
+{
+ push (s);
+}
if (p == -1)
return int (*this);
- String s2 = right_str (len()-p-1);
+ String s2 = right_str (length_i ()-p-1);
String s1 = left_str (p);
return Rational (s1.value_i (), s2.value_i ());
Scalar::isnum_b () const
{
int conv = false;
- if (len ())
+ if (length_i ())
{
long l =0;
conv = sscanf (strh_.ch_C (), "%ld", &l);
}
- return len() && conv;
+ return length_i () && conv;
}
Scalar::operator Real()
Scalar::operator bool () const
{
- if (!len ())
+ if (!length_i ())
return false;
if (*this == "0")
return false;
String str = double_str (abs (x), format.ch_C ());
int exp = str.right_str (3).value_i ();
- str = str.left_str (str.len () - 4);
+ str = str.left_str (str.length_i () - 4);
- while (str[str.len () - 1] == '0')
- str = str.left_str (str.len () - 1);
- if (str[str.len () - 1] == '.')
- str = str.left_str (str.len () - 1);
+ while (str[str.length_i () - 1] == '0')
+ str = str.left_str (str.length_i () - 1);
+ if (str[str.length_i () - 1] == '.')
+ str = str.left_str (str.length_i () - 1);
if (exp == 0)
return (sign (x) > 0 ? str : "-" + str);
int dot = 1 + exp;
if (dot <= 0)
str = "0." + String ('0', -dot) + str;
- else if (dot >= str.len ())
- str += String ('0', dot - str.len ());
- else if (( dot > 0) && (dot < str.len ()))
+ else if (dot >= str.length_i ())
+ str += String ('0', dot - str.length_i ());
+ else if (( dot > 0) && (dot < str.length_i ()))
str = str.left_str (dot) + '.' + str.cut (dot, INT_MAX);
else
assert (0);
if (p1 == p2)
return 0;
- int i1 = s1.length_i();
- int i2 = s2.length_i();
-
- int result= memcmp (p1, p2, i1 <? i2);
- return result ? result : i1-i2;
+ /*
+ don't forget the terminating '\0'
+ */
+ int f = (s1.length_i() <? s2.length_i());
+ int cmp_length = 1+ f;
+ return memcmp (p1, p2, cmp_length);
}
\f
void reg_test (fptr f)
{
- if (!test_arr_p)
- test_arr_p = new Array<fptr>;
- test_arr_p->push(f);
+ if (!test_arr_p)
+ test_arr_p = new Array<fptr>;
+ test_arr_p->push (f);
}
int
-main()
+main ()
{
- if (test_arr_p) {
- for (int i=0; i < test_arr_p->size(); i++)
- (*test_arr_p)[i] ();
- }
+ if (test_arr_p) {
+ for (int i=0; i < test_arr_p->size (); i++)
+ (*test_arr_p)[i] ();
+ }
}
#include "pqueue.hh"
#include <stdlib.h>
-int compare(int i, int j)
+int compare (int i, int j)
{
return i-j;
}
void
-pqtest()
+pqtest ()
{
PQueue<int> pq;
- for (int i=0; i < 10; i++) {
- int r = rand()/10000;
- pq.insert(r);
+ for (int i=0; i < 10; i++) {
+ int r = rand ()/10000;
+ pq.insert (r);
cout << "adding: " << r<< endl;
}
- while (pq.size()) {
+ while (pq.size ()) {
cout << "getting : "<< flush;
- cout << pq.get() << "\n";
+ cout << pq.get () << "\n";
}
}
-ADD_TEST(pqtest);
+ADD_TEST (pqtest);
#include "flower-test.hh"
void
-ctors()
+ctors ()
{
cout << "constructors"<<endl;
{
- String str( "hai" );
+ String str ("hai");
cout << str << endl;
}
{
- String fromi(10);
+ String fromi (10);
cout << fromi<< endl;
}
- {String fromf(1.32e-2, "%g");
+ {String fromf (1.32e-2, "%g");
cout << fromf<< endl;
}
{
cout << def << endl;
}
{
- String fromc('c');
+ String fromc ('c');
cout << fromc<< endl;
}
}
void
-cmp()
+cmp ()
{
+
+ String path = "";
+ String sep ('/');
+ String right(path.right_str (1));
+ cout << "cmp ('', '/'): " << String::compare_i (sep,right) << endl;
+
Array<String> a;
- a.push("abcd");
- a.push("zxy");
- a.push("abc");
- a.push("");
- a.sort(String::compare_i);
+ a.push ("abcd");
+ a.push ("zxy");
+ a.push ("abc");
+ a.push ("");
+ a.push ("a");
+ a.sort (String::compare_i);
cout << "compares: "<<endl;
- for (int i=0; i < a.size(); i++)
+ for (int i=0; i < a.size (); i++)
cout << a[i] << endl;
}
void
-searching()
+searching ()
{
String hay = "foobarbazblub";
char c = 'b';
String cstr =c;
String set = "bar";
- cout << "hay = \"" << hay << "\" len="<< hay.length_i()<<endl;
- cout << "index_i('"<< c<<"') " << c << "= " << hay.index_i(c) <<endl;
- cout << "last_index_i('"<< c<<"') " << c << "= " << hay.index_last_i(c) <<endl;
- // cout << "last index of cstr " << c << ": " << hay.index_last_i(cstr) <<endl;
- // cout << "index_last_i(\""<<set<<"\"): " << hay.index_last_i(set) <<endl;
- cout << "index_i(\""<<set<<"\"): " << hay.index_i(set) <<endl;
- cout << "index_any(\"" << set << "\"): " << cstr << ": " << hay.index_any_i(cstr) <<endl;
+ cout << "hay = \"" << hay << "\" len="<< hay.length_i ()<<endl;
+ cout << "index_i ('"<< c<<"') " << c << "= " << hay.index_i (c) <<endl;
+ cout << "last_index_i ('"<< c<<"') " << c << "= " << hay.index_last_i (c) <<endl;
+ // cout << "last index of cstr " << c << ": " << hay.index_last_i (cstr) <<endl;
+ // cout << "index_last_i (\""<<set<<"\"): " << hay.index_last_i (set) <<endl;
+ cout << "index_i (\""<<set<<"\"): " << hay.index_i (set) <<endl;
+ cout << "index_any (\"" << set << "\"): " << cstr << ": " << hay.index_any_i (cstr) <<endl;
void
-kutenpeer()
+kutenpeer ()
{
- String str( "hai" );
- for (int i=-1; i < str.length_i()+2; i++) {
- cout<<" left_str(" << i<<"): " << str.left_str( i ) << endl;
- cout<<" right_str( "<<i<<"): " << str.right_str( i ) << endl;
+ String str ("hai");
+ for (int i=-1; i < str.length_i ()+2; i++) {
+ cout<<" left_str (" << i<<"): " << str.left_str (i) << endl;
+ cout<<" right_str ("<<i<<"): " << str.right_str (i) << endl;
}
str = "blonde haren";
cout << str<<endl;
- cout << "mid(2,6)="<<str.cut(2,6)<<endl;
- cout << "nomid(2,6)="<<str.nomid_str(2,6)<<endl;
+ cout << "mid (2,6)="<<str.cut (2,6)<<endl;
+ cout << "nomid (2,6)="<<str.nomid_str (2,6)<<endl;
}
bool
-test_empty_b( String str )
+test_empty_b (String str)
{
cout << "`" << str << "' is ";
- if ( str == String( "" ) ) {
+ if (str == String ("")) {
cout << "empty" << endl;
return true;
}
}
void
-stringtest()
+stringtest ()
{
- ctors();
- cmp();
- searching();
- kutenpeer();
- String str( "hai" );
+ ctors ();
+ cmp ();
+ searching ();
+ kutenpeer ();
+ String str ("hai");
cout << str << endl;
cout << "left" << endl;
str += " daar";
cout << str << endl;
- // str = String( "Hallo" ) + " daaR" + '!'; // no go on doze-s gcc2.7.2?
- str = String( "Hallo" ) + " daaR" + "!";
+ // str = String ("Hallo") + " daaR" + '!'; // no go on doze-s gcc2.7.2?
+ str = String ("Hallo") + " daaR" + "!";
cout << str << endl;
- cout << "up: " << str.upper_str() << " down: " << str.lower_str()<<endl;
+ cout << "up: " << str.upper_str () << " down: " << str.lower_str ()<<endl;
- if ( test_empty_b( str ) )
+ if (test_empty_b (str))
cout << "failed";
String fn = "";
- if ( !test_empty_b( fn ) )
+ if (!test_empty_b (fn))
cout << "failed";
fn = "";
fn += "";
- delete fn.copy_byte_p();
- delete str.copy_byte_p();
+ delete fn.copy_byte_p ();
+ delete str.copy_byte_p ();
- cout << String_convert::bin2hex_str( String( (char)0xff ) ) << endl;
- cout << "-1:" << String_convert::i2hex_str( -1, 2, '0' );
+ cout << String_convert::bin2hex_str (String ( (char)0xff)) << endl;
+ cout << "-1:" << String_convert::i2hex_str (-1, 2, '0');
cout << endl;
}
-ADD_TEST(stringtest);
+ADD_TEST (stringtest);
\consists "Dynamic_engraver";
\consists "Rest_engraver";
\consists "Stem_engraver";
+ \consists "Plet_engraver";
\consists "Beam_engraver";
\consists "Abbreviation_beam_engraver";
\consists "Script_engraver";
\consists "Rhythmic_column_engraver";
\consists "Slur_engraver";
- \consists "Plet_engraver";
\accepts "Thread";
}
% Toplevel initialisation file.
-\version "0.1.8";
+\version "0.1.9";
breve = \duration { -1 0 }
longa = \duration { -2 0 }
%}
paper_sixteen = \paper {
linewidth = 15.5 \cm;
- indent = 5.\mm;
+ indent = 10.\mm;
rulethickness = 0.4\pt;
barsize = 16.0 \pt;
interline = 4.\pt;
paper_twenty = \paper {
linewidth = 15.0 \cm;
- indent = 10.\mm;
+ indent = 12.\mm;
rulethickness = 0.4\pt;
barsize = 20.0 \pt;
interline = 5.\pt;
ydirection -1 force stem down \stemdown
ydirection 0 stem direction free \stemboth
ydirection 1 force stem up \stemup
+pletvisibility 0 show nothing
+pletvisibility 1 show number
+pletvisibility 2 show number, and bracket-if-no-beam
+pletvisibility 4 show number, and bracket
[Score?]
beamslopedamping 0 no damping \beamslopeproportional
#
LYFILES = $(wildcard *.ly)
TEXFILES = $(wildcard *.tex)
+M4FILES = $(wildcard *.m4)
DISTFILES = Makefile TODO $(LYFILES) $(TEXFILES) $(wildcard *.m4)
#
+OUTFILES = $(addprefix $(outdir)/,$(M4FILES:%.m4=%))
+
+all: $(OUTFILES)
TestedFeatures = "beams and beamflags";
}
-\version "0.1.8";
+\version "0.1.9";
\score{
\melodic { \multi 3 <
Ugh.. Wish we had grace notes.... It adds another dimension to this
piece of music. %}
-\version "0.1.8";
+\version "0.1.9";
cad = \melodic {
copyright = "public domain";
Tested = "test the Collision resolution ";
}
-\version "0.1.8";
+\version "0.1.9";
TestedFeatures = "This file tests silly line shapes";
}
-\version "0.1.8";
+\include "paper13.ly"
-boom = \lyric{
- \meter 1/4;
- O4 den- ne- boom, o den- ne- boom.
- Wat zijn uw tak- ken won- der- schoon
- O den- ne- boom, o den- ne- boom.
- Wat zijn uw tak- ken won- der- schoon
- Ik heb u laatst in 't bos zien staan
- toen zat- en er geen kaarsjes aan.
- O, Den- ne- boom, o den- ne- boom.
- Wat zijn uw tak- ken wonder- schoon
+\version "0.1.9";
- O den- ne- boom, o den- ne- boom.
- Wat zijn uw tak- ken won- der- schoon
- O den- ne- boom, o den- ne- boom.
- Wat zijn uw tak- ken won- der- schoon
- U gloeit in bar- re winter- tijd,
-% ugh
-% als sneeuw op aar- de licht ge- spreid.
-% O, Den- ne- boom, o den- ne- boom.
-% Wat zijn uw tak- ken wonder- schoon
+oden = \lyric{
+ _8 O8 den-8. ne-16 boom,4 _8 o8 den-8. ne-16 boom.4.
+ Wat8 zijn uw tak-4 ken won-8. der-16 schoon4.
}
-ugh = \melodic{
+ikheb = \lyric{
+ Ik8 heb u laatst4. in_'t8 bos8. zien16 staan4.
+ toen8 zat- en er4. geen8 kaars-8. jes16 aan.4
+}
+
+ugloeit = \lyric{
+ U8 gloeit in bar-4. re8 win-8. ter-16 tijd,4.
+ als8 sneeuw op aar-4. de8 licht8. ge-16 spreid.4
+}
+
+oboom = \melodic{
\octave c';
- \meter 1/4;
- c d e f | c d e f | c d e f | c d e f |
- c d e f | c d e f | c d e f | c d e f |
- c d e f | c d e f | c d e f | c d e f |
- c d e f | c d e f | c d e f | c d e f |
- c d e f | c d e f | c d e f | c d e f |
- c d e f | c d e f | c d e f | c d e f |
- c d e f | c d e f | c d e
+ r8 'g8 |
+ c8. c16 c4 r8 d8 |
+ e8. e16 e4 r8 e8 d e |
+ f4 'b d8. c16 c4
+}
+
+bos = \melodic{
+ \octave c';
+ r8 g8 g e |
+ a4 r8 g8 g8. f16 f4 r8 f8 f d |
+ g4 r8 f8 f8. e16 e4
+}
+
+global = \melodic{
+ \meter 3/4;
+ \partial 4;
+ \skip 4*1;
+ \skip 4*3;
+ \meter 4/4;
+ \skip 4*4;
+ \meter 6/4;
+ \skip 4*12;
+ \meter 5/4;
+ \skip 4*5;
+ \meter 3/4;
+ \skip 4*3;
+ \meter 4/4;
+ \skip 4*4;
+ \meter 6/4;
+ \skip 4*5;
+
+ \bar "|.";
}
\score{
-% <
-% \type Lyrics \boom
- \ugh
-% >
+ <
+% {
+ \lyric \type Lyrics <
+ \multi 2 <
+% huh?
+% \global
+ {
+ \oden
+ \ikheb
+ \oden
+
+% _4
+% \oden
+% \ugloeit
+% \oden
+ }
+ \global
+ >
+ >
+% }
+ \melodic \type Staff <
+ \multi 2 <
+ \global
+ {
+ \oboom
+ \bos
+ \oboom
+
+% r4
+% \oboom
+% \bos
+% \oboom
+ }
+ >
+ >
+ >
\paper{
- \indent = 20. \mm;
- \shape = 72.5 \mm 15. \mm
+% \paper_thirteen
+ indent = 20. \mm;
+ \shape = 70. \mm 20. \mm
65. \mm 30. \mm
57.5 \mm 45. \mm
50. \mm 60. \mm
27.5 \mm 105. \mm
20. \mm 120. \mm
10. \mm 140. \mm
- 0. \mm 160. \mm
- 72.5 \mm 15. \mm
-% 72.5 \mm 15. \mm
- 60. \mm 40. \mm
+% 0. \mm 160. \mm
+ 65. \mm 30. \mm
;
-
+%{
+ \shape = % 72.5 \mm 15. \mm
+ % 50. \mm 60. \mm
+ 70. \mm 30. \mm
+ 60. \mm 60. \mm
+ 50. \mm 80. \mm
+ 70. \mm 40. \mm
+ 50. \mm 80. \mm
+ 30. \mm 120. \mm
+ 60. \mm 60. \mm
+ 30. \mm 120. \mm
+ 20. \mm 140. \mm
+ 0. \mm 180. \mm
+ 70. \mm 30. \mm
+ 70. \mm 30. \mm
+ 70. \mm 30. \mm
+ ;
+ \shape = 80. \mm 20. \mm
+ 70. \mm 40. \mm
+ 60. \mm 60. \mm
+ 50. \mm 80. \mm
+ 40. \mm 100. \mm
+ 30. \mm 120. \mm
+ 20. \mm 140. \mm
+ 10. \mm 160. \mm
+% 00. \mm 180. \mm
+ 75. \mm 30. \mm
+ ;
+%}
gourlay_maxmeasures = 30.;
+% arithmetic_basicspace = 1.2;
+% arithmetic_multiplier = 2.8\pt;
+ }
+ \midi{
+ \tempo 4 = 90;
}
}
-\version "0.1.8";
+\version "0.1.9";
FontBody= \melodic{
\octave c';
\bar "|:";
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.8";
+\version "0.1.9";
\include "font-body.ly"
\score{
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.8";
+\version "0.1.9";
\include "font-body.ly"
\score{
TestedFeatures = "This file tests some nasty Gourlay spacings";
}
-\version "0.1.8";
+\version "0.1.9";
%{
-\version "0.1.8";
+\version "0.1.9";
blah = \melodic{
Tested Features: example file with comments
%}
-\version "0.1.8";
+\version "0.1.9";
% the % is a comment.
%{
Tested Features: \multi
+
+WARNING: the \multi construct is not very intuitive. You better try
+the
+
+ \type Grandstaff <
+ \type Staff = treble {.. }
+ \type Staff = bass {.. }
+ >
+
+construct to get multiple staffs, it's cleaner
+
%}
-\version "0.1.8";
+\version "0.1.9";
\score{
\melodic
% \lbheel \lbheel \lfheel \lftoe
% \rbheel \rbtoe \rfheel \rftoe
-\version "0.1.8";
+\version "0.1.9";
\score{
\melodic {
-\version "0.1.8";
+\version "0.1.9";
ritme = \melodic{ %\octave ;
\partial 8;
% scales with accents.
%
-\version "0.1.8";
+\version "0.1.9";
blah = \melodic {
\meter 6/8;
\octave 'c ;
-\version "0.1.8";
+\version "0.1.9";
blah = \melodic {
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.8";
+\version "0.1.9";
shortlong = \melodic{
c4()c( c c |
-\version "0.1.8";
+\version "0.1.9";
\score{
\melodic{\octave c';
TestedFeatures = "This file tests various spacings";
}
-\version "0.1.8";
+\version "0.1.9";
multipart = \melodic{
\multi 3 <
}
-\version "0.1.8";
+\version "0.1.9";
beamintervals = \melodic{
\meter 7/4;
%}
-\version "0.1.8";
+\version "0.1.9";
toccata_commands = \melodic{
\meter 4/4;
Tested Features lyrics and chords
%}
-\version "0.1.8";
+\version "0.1.9";
melodie = \melodic {
\clef"violin";
Tested Features: lyrics, interleaving lyrics and staffs
%}
-\version "0.1.8";
+\version "0.1.9";
melody = \melodic{
\clef violin;
MAJOR_VERSION = 0
MINOR_VERSION = 1
-PATCH_LEVEL = 43
+PATCH_LEVEL = 44
MY_PATCH_LEVEL =
if (!mus_l)
return false;
- Beam_req * b = mus_l->beam();
-
+ Beam_req* b = mus_l->beam ();
if (!b)
return false;
#include "general-script-def.hh"
#include "debug.hh"
#include "atom.hh"
+
Direction
General_script_def::staff_dir() const
{
private:
Drul_array<Plet_req*> span_reqs_drul_;
+ Drul_array<Moment> beam_mom_drul_;
+ Drul_array<Moment> span_mom_drul_;
Plet_spanner* plet_spanner_p_;
};
Text_def* tdef_p_;
Drul_array<Stem *> stem_l_drul_;
+ int visibility_i_;
protected:
virtual Molecule* brew_molecule_p () const;
String style_str_;
virtual void do_print() const;
+ virtual Direction staff_dir() const;
virtual Atom get_atom (Paper_def* p, Direction dir_) const;
virtual ~Text_def() {};
virtual bool do_equal_b (const General_script_def*) const;
TEX {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL}
WORD {A}{AN}*
ALPHAWORD {A}+
-INT -?{N}+
+DIGIT {N}
+UNSIGNED {N}+
+INT -?{UNSIGNED}
REAL ({INT}\.{N}*)|(-?\.{N}+)
KEYWORD \\{WORD}
WHITE [ \n\t\f]
return scan_escaped_word (YYText ()+1);
}
- {INT} {
+ {DIGIT} {
yylval.i = String_convert::dec2_i (String (YYText ()));
- return INT;
+ return DIGIT;
+ }
+
+ {UNSIGNED} {
+ yylval.i = String_convert::dec2_i (String (YYText ()));
+ return UNSIGNED;
}
\" {
\" {
start_quote ();
}
- {INT} {
+ {UNSIGNED} {
yylval.i = String_convert::dec2_i (String (YYText ()));
- return INT;
+ return UNSIGNED;
}
{NOTECOMMAND} {
return scan_escaped_word (YYText ()+1);
return REAL;
}
-{INT} {
+{UNSIGNED} {
yylval.i = String_convert::dec2_i (String (YYText ()));
- return INT;
+ return UNSIGNED;
}
[{}] {
debug_init (); // should be first
+
+ path.add ("");
// must override (come before) "/usr/local/share/lilypond"!
char const *env_sz = getenv ("LILYINCLUDE");
if (env_sz)
path.parse_path (env_sz);
- path.add ("");
path.add (String (DIR_DATADIR) + "/init/");
path.push (DIR_DATADIR);
#include <iostream.h>
// mmm
-#define MUDELA_VERSION "0.1.8"
+#define MUDELA_VERSION "0.1.9"
#include "scalar.hh"
#include "translation-property.hh"
%token E_EXCLAMATION E_SMALLER E_BIGGER E_CHAR
%type <i> dots
-%token <i> INT
+%token <i> DIGIT
%token <melreq> NOTENAME_ID
%token <id> DURATION_IDENTIFIER
%token <id> IDENTIFIER
%token <real> REAL
%token <string> DURATION RESTNAME
%token <string> STRING
+%token <i> UNSIGNED
%token <i> POST_QUOTES
%token <i> PRE_QUOTES
%type <i> open_plet_parens close_plet_parens
%type <music> simple_element music_elt full_element lyrics_elt command_elt
%type <i> abbrev_type
-%type <i> int
+%type <i> int unsigned
%type <i> script_dir
%type <id> identifier_init
%type <duration> explicit_steno_duration notemode_duration
%type <real> dim real
%type <real> unit
%type <request> abbrev_command_req
-%type <request> post_request command_req verbose_command_req
+%type <request> post_request structured_post_request
+%type <request> command_req verbose_command_req
%type <request> script_req dynamic_req
%type <score> score_block score_body
%type <intarr> shape_array
%type <script> script_definition script_body mudela_script gen_script_def
-%type <textdef> text_def
+%type <textdef> text_def finger
%type <string> script_abbreviation
%type <symbol> symboldef
%type <symtable> symtable symtable_body
$4->set_spot (THIS->pop_spot ());
}
;
+
identifier_init:
score_block {
$$ = new Score_id ($1, SCORE_IDENTIFIER);
}
| int {
$$ = new Int_id (new int ($1), INT_IDENTIFIER);
-
}
| post_request {
$$ = new Request_id ($1, POST_REQUEST_IDENTIFIER);
-
}
| melodic_request {
$$ = new Request_id ($1, MELODIC_REQUEST_IDENTIFIER);
;
tempo_request:
- TEMPO entered_notemode_duration '=' int {
+ TEMPO entered_notemode_duration '=' unsigned {
$$ = new Tempo_req;
$$->dur_ = *$2;
delete $2;
Chord:
'<' Chord_body '>' { $$ = $2; }
- | MULTI INT Chord {
+ | MULTI unsigned Chord {
$$ = $3;
$$->multi_level_i_=$2;
}
$$ = new Bar_req (*$2);
delete $2;
}
- | METER int '/' int {
+ | METER unsigned '/' unsigned {
Meter_change_req *m = new Meter_change_req;
m->set ($2,$4);
$$ = m;
| tempo_request {
$$ = $1;
}
- | CADENZA int {
+ | CADENZA unsigned {
$$ = new Cadenza_req ($2);
}
| PARTIAL duration_length {
{
assert (THIS->post_reqs.empty ());
}
- | post_requests post_request {
+ | post_requests structured_post_request {
$2->set_spot (THIS->here_input ());
THIS->post_reqs.push ($2);
}
}
;
+structured_post_request:
+ script_req
+ | post_request
+ ;
post_request:
POST_REQUEST_IDENTIFIER {
$$ = (Request*)$1->request ();
}
- | script_req
- | dynamic_req
+ | dynamic_req {
+ $$ = $1;
+ }
| abbrev_type {
Abbreviation_req* a = new Abbreviation_req;
a->type_i_ = $1;
;
explicit_duration:
- DURATION '{' int int '}' {
+ DURATION '{' int unsigned '}' {
$$ = new Duration;
$$-> durlog_i_ = $3;
$$-> dots_i_ = $4;
;
dynamic_req:
- ABSDYNAMIC '{' int '}' {
+ ABSDYNAMIC '{' unsigned '}' {
Absolute_dynamic_req *ad_p = new Absolute_dynamic_req;
ad_p ->loudness_ = (Dynamic_req::Loudness)$3;
$$ =ad_p;
;
close_plet_parens:
- ']' INT '/' INT {
+ ']' unsigned '/' unsigned {
$$ = MAEBTELP;
THIS->plet_.type_i_ = $4;
THIS->plet_.iso_i_ = $2;
THIS->default_duration_.plet_.iso_i_ = 1;
THIS->default_duration_.plet_.type_i_ = 1;
}
- | TELP INT '/' INT {
+ | TELP unsigned '/' unsigned {
$$ = TELP;
THIS->plet_.type_i_ = $4;
THIS->plet_.iso_i_ = $2;
;
open_abbrev_parens:
- '[' ':' INT {
+ '[' ':' unsigned {
$$ = '[';
if (!Duration::duration_type_b ($3))
- THIS->parser_error ("Not a duration");
+ THIS->parser_error ("1:Not a duration");
else if ($3 < 8)
THIS->parser_error ("Can't abbreviate");
else
;
open_plet_parens:
- '[' INT '/' INT {
+ '[' unsigned '/' unsigned {
$$ = BEAMPLET;
THIS->plet_.type_i_ = $4;
THIS->plet_.iso_i_ = $2;
THIS->default_duration_.plet_.type_i_ = $4;
THIS->default_duration_.plet_.iso_i_ = $2;
}
- | PLET INT '/' INT {
+ | PLET unsigned '/' unsigned {
$$ = PLET;
THIS->plet_.type_i_ = $4;
THIS->plet_.iso_i_ = $2;
;
script_req:
- script_dir gen_script_def {
+ script_dir gen_script_def {
Musical_script_req *m = new Musical_script_req;
$$ = m;
- m-> scriptdef_p_ = $2;
- m-> set_spot (THIS->here_input ());
- m-> dir_ = $1;
+ m->scriptdef_p_ = $2;
+ m->set_spot (THIS->here_input ());
+ if (!m->dir_)
+ m->dir_ = $1;
}
;
gen_script_def:
- text_def { $$ = $1;
+ text_def {
+ $$ = $1;
((Text_def*) $$)->align_i_ = CENTER; /* UGH */
}
- | mudela_script { $$ = $1;
+ | mudela_script {
+ $$ = $1;
$$-> set_spot (THIS->here_input ());
}
+ | finger {
+ $$ = $1;
+ ((Text_def*)$$)->align_i_ = CENTER;
+ }
;
text_def:
}
;
+finger:
+ DIGIT {
+ Text_def* t = new Text_def;
+ $$ = t;
+ t->text_str_ = String ($1);
+ t->style_str_ = "finger";
+ $$->set_spot (THIS->here_input ());
+ }
+ ;
+
script_abbreviation:
'^' { $$ = get_scriptdef ('^'); }
| '+' { $$ = get_scriptdef ('+'); }
script_dir:
'_' { $$ = -1; }
- |'^' { $$ = 1; }
- |'-' { $$ = 0; }
+ | '^' { $$ = 1; }
+ | '-' { $$ = 0; }
;
pre_requests:
;
explicit_steno_duration:
- int {
+ unsigned {
$$ = new Duration;
if (!Duration::duration_type_b ($1))
- THIS->parser_error ("Not a duration");
+ THIS->parser_error ("2:Not a duration");
else {
$$->durlog_i_ = Duration_convert::i2_type ($1);
$$->set_plet (THIS->default_duration_);
| explicit_steno_duration '.' {
$$->dots_i_ ++;
}
- | explicit_steno_duration '*' int {
+ | explicit_steno_duration '*' unsigned {
$$->plet_.iso_i_ = $3;
}
- | explicit_steno_duration '/' int {
+ | explicit_steno_duration '/' unsigned {
$$->plet_.type_i_ = $3;
}
;
':' {
$$ =0;
}
- | ':' int {
+ | ':' unsigned {
if (!Duration::duration_type_b ($2))
- THIS->parser_error ("Not a duration");
+ THIS->parser_error ("3:Not a duration");
else if ($2 < 8)
THIS->parser_error ("Can't abbreviate");
$$ = $2;
}
;
+unsigned:
+ UNSIGNED {
+ $$ = $1;
+ }
+ | DIGIT {
+ $$ = $1;
+ };
+
int:
- INT {
+ unsigned {
$$ = $1;
}
+ | '-' unsigned {
+ $$ = -$2;
+ }
| INT_IDENTIFIER {
int *i_p = $1->intid ();
$$ = *i_p;
}
;
-
real:
REAL {
$$ = $1;
#include "plet-engraver.hh"
#include "plet-spanner.hh"
#include "text-def.hh"
+#include "beam.hh"
+#include "score-column.hh"
#include "stem.hh"
IMPLEMENT_IS_TYPE_B1 (Plet_engraver,Engraver);
Plet_engraver::Plet_engraver ()
{
+ beam_mom_drul_[LEFT] = span_mom_drul_[LEFT] = INT_MAX;
+ beam_mom_drul_[RIGHT] = span_mom_drul_[LEFT] = -INT_MAX;
plet_spanner_p_ = 0;
span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
}
if (!mus_l)
return false;
+ Beam_req* b = mus_l->beam ();
+ if (b)
+ {
+ if (b->spantype)
+ {
+ Direction d = (Direction)(((int)(b->spantype - 1)) * 2 - 1);
+ beam_mom_drul_[d] = get_staff_info ().musical_l ()->when ();
+ }
+ return false;
+ }
+
Plet_req* p = mus_l->plet ();
if (!p)
return false;
return false;
span_reqs_drul_[d] = p;
+ span_mom_drul_[d] = get_staff_info ().musical_l ()->when ();
return true;
}
plet_spanner_p_->unlink ();
delete plet_spanner_p_;
plet_spanner_p_ = 0;
+ span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
}
}
if (!plet_spanner_p_ || !span_reqs_drul_[RIGHT])
return;
- typeset_element (plet_spanner_p_);
+ Scalar prop = get_property ("pletvisibility");
+ if (prop.isnum_b ())
+ plet_spanner_p_->visibility_i_ = prop;
+
+ if ((beam_mom_drul_[LEFT] <= span_mom_drul_[LEFT])
+ && (beam_mom_drul_[RIGHT] >= span_mom_drul_[RIGHT]))
+ plet_spanner_p_->visibility_i_ &= ~2;
+
+ if (plet_spanner_p_->visibility_i_)
+ typeset_element (plet_spanner_p_);
+ else
+ plet_spanner_p_->unlink ();
+
plet_spanner_p_ = 0;
span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
}
{
stem_l_drul_[RIGHT] =0;
stem_l_drul_[LEFT] =0;
+ visibility_i_ = 3;
tdef_p_ = new Text_def;
tdef_p_->align_i_ = CENTER;
{
tdef_p_ = new Text_def (*c.tdef_p_);
stem_l_drul_ = c.stem_l_drul_;
+ visibility_i_ = c.visibility_i_;
}
Plet_spanner::~Plet_spanner ()
Plet_spanner::brew_molecule_p () const
{
Molecule* mol_p = new Molecule;
+
Real w = width ().length ();
Real dy_f = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT];
Atom a = paper ()->lookup_l ()->plet (dy_f, w, dir_);
a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
- mol_p->add (a);
+
+ if (visibility_i_ >= 2)
+ mol_p->add (a);
Real interline_f = paper ()->interline_f ();
Real numy_f = (dir_ > 0 ? 0 : -interline_f) + dir_ * interline_f / 2;
Atom num (tdef_p_->get_atom (paper (), CENTER));
num.translate (Offset (width ().length ()/ 2 + dx_f_drul_[LEFT],
dy_f_drul_[LEFT] + dy_f / 2 + numy_f));
- mol_p->add (num);
+
+ if (visibility_i_ >= 1)
+ mol_p->add (num);
return mol_p;
}
#include "text-def.hh"
#include "dimen.hh"
+Direction
+Text_def::staff_dir () const
+{
+ if (style_str_ == "finger")
+ return UP;
+ return DOWN;
+}
+
Interval
Text_def::width (Paper_def * p) const
{
# could be faster:
# $(FLEX) -8 -Cf -t $< > $@
+$(outdir)/%: %.m4
+ $(M4) $< > $@
+
# outdirs:
#
# ?$(outdir)/%.dep:
LOADLIBES = $(EXTRA_LIBES) $(MODULE_LIBES) -lg++ # need lg++ for win32, really!
#
+# macro compiler:
+#
+M4 = m4
+#
+
# librarian:
#
AR = ar
Begin3
Titel: LilyPond
-Versie: 0.1.43
-Inschrijf datum: 02FEB98
+Versie: 0.1.44
+Inschrijf datum: 06FEB98
Beschrijving: LilyPond is de muziek typesetter van het GNU Project.
Het programma genereert muziek in zichtbare of
hoorbare vorm uit uit een muzikale definitie file:
jan@digicash.com (Jan Nieuwenhuizen)
Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
- 395k lilypond-0.1.43.tar.gz
+ 395k lilypond-0.1.44.tar.gz
Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
- 395k lilypond-0.1.43.tar.gz
+ 395k lilypond-0.1.44.tar.gz
Copi"eer politie: GPL
End
Begin3
Title: LilyPond
-Version: 0.1.43
-Entered-date: 02FEB98
+Version: 0.1.44
+Entered-date: 06FEB98
Description: LilyPond is the GNU Project music typesetter. The program
generates visual or auditive output from a music
definition file: it can typeset formatted sheet music
jan@digicash.com (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 470k lilypond-0.1.43.tar.gz
+ 470k lilypond-0.1.44.tar.gz
Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
- 470k lilypond-0.1.43.tar.gz
+ 470k lilypond-0.1.44.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 0.1.43
+Version: 0.1.44
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.43.tar.gz
+Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.44.tar.gz
Summary: A program for typesetting music.
URL: http://www.stack.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@stack.nl>
make -C Documentation gifs
make prefix="$RPM_BUILD_ROOT/usr" install
%files
-%doc Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt BUGS TODO NEWS DEDICATION ANNOUNCE README
+%doc Documentation/out/ANNOUNCE.txt Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/DEDICATION.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/NEWS.txt Documentation/out/TODO.txt Documentation/out/cadenza.ly.txt Documentation/out/collisions.ly.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/font16.ly.txt Documentation/out/font20.ly.txt Documentation/out/gallina.ly.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/multi.ly.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt Documentation/out/preludes-1.ly.txt Documentation/out/preludes-2.ly.txt Documentation/out/rhythm.ly.txt Documentation/out/scsii-menuetto.ly.txt Documentation/out/standje.ly.txt Documentation/out/toccata-fuga-E.ly.txt Documentation/out/twinkle-pop.ly.txt Documentation/out/twinkle.ly.txt Documentation/out/wtk1-fugue2.ly.txt Documentation/out/wtk1-prelude1.ly.txt BUGS TODO NEWS DEDICATION ANNOUNCE README
%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/denneboom.ly input/font-body.ly input/font.ly input/font11.ly input/font13.ly input/font16.ly input/font20.ly input/font26.ly input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/sleur.ly input/slurs.ly input/spacing.ly input/stem.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly Documentation/mudela-course.doc Documentation/mudela-man.doc
%doc Documentation/out/lelie_logo.gif
/usr/bin/convert-mudela
= mudela_column_l_->mudela_score_l_->mudela_key_l_->notename_str (pitch_i_);
if (simple_plet_b_s)
- return name_str + Duration_convert::dur2_str (dur) + " ";
+ return name_str + Duration_convert::dur2_str (dur) + " ";
- //ugh
String str;
+ //ugh
if (dur.plet_b ())
str += String ("\\[")
+ String_convert::i2dec_str (dur.plet_.iso_i_, 0, 0)
mudela_stream_r << _("% midi copyright:") << copyright_str_ << "\n";
mudela_stream_r << _("% instrument:") << instrument_str_ << "\n";
+ // don't use last duration mode
+ mudela_stream_r << "\\duration 4;\n";
if (mudela_voice_p_list_.size() == 1)
mudela_voice_p_list_.top()->output (mudela_stream_r);
else
*os_p_ << filename_str_g;
*os_p_ << "\n\n";
// ugh
- *os_p_ << "\\version \"0.1.8\";\n";
+ *os_p_ << "\\version \"0.1.9\";\n";
}
void
-# mutopia/j.s.bach/Makefile
+# mutopia/J.S.Bach/Makefile
-
-# descent order into subdirectories:
-#
-SUBDIRS =
# subdir level:
#
depth = ../..
#
+
+# descent order into subdirectories:
+#
+SUBDIRS =
+#
+
# generic stuff/Makefile
#
include ./$(depth)/make/Include.make
#
LYFILES = $(wildcard *.ly)
TEXFILES = $(wildcard *.tex)
-DISTFILES = Makefile $(LYFILES) $(TEXFILES) $(wildcard *.m4)
+M4FILES = $(wildcard *.m4)
+DISTFILES = Makefile $(LYFILES) $(TEXFILES) $(M4FILES)
#
+OUTFILES = $(addprefix $(outdir)/,$(M4FILES:%.m4=%))
+
+all: $(OUTFILES)
--- /dev/null
+\header{
+filename = "preludes-1.ly";
+title = "1";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+}
+
+rh = \melodic{
+ \octave c'';
+ \textstyle "italic";
+ r16\p_"legato"\< ['g-1( c-3 )e-5] r ['g-1( c )e]
+ r [g( c )d] r ['b-1( d-2 \!)g-5] |
+ r\mf ['a( d-2 ) g-5] r ['a(\< d )f-4]
+ r ['a( d )e-3] r [c-1( e-2 \!)a-5] |
+ r\f ['b e a-5] r ['b e-3 g-5]
+ r [c-1 e-3 f-4] r ['g d-3 f-5] |
+ r ['g-"poco a poco dim." d-4 e] r ['g c-2 e]
+ r ['a-1 c-3 d-4] r ['e 'b-3 d-5] |
+ r ['e 'b c-4] r ['e 'a-2 c]
+ r ['f-1 'a-3 'bes-4] r ['c 'g-3 'bes-5] |
+ r ['c 'g 'a-4] r ['c 'f-2 'a]
+ r ['d 'f-2 'b-5] r ['e 'g-2 c-5] |
+ r\p ['d 'g c-5] r ['d 'g 'b-4]
+ r ['c 'g-3 'b-5] r ['c 'fis-2 'a-4] |
+ r [''b 'd 'a-5] r [''b 'd 'g-4]
+ r [''a 'c 'g-5] r [''a 'c 'f!-4] |
+ % ugh, arpeggio
+ \multi 2 <
+ { \stemup; 'f4 r s }
+ { \stemdown; <''g4 'd> r s }
+ >
+ \stemboth;
+ % ugh beam across staffs, slur starts at lower staff
+ r16 [''g-1( ''b 'd] |
+ \stemup;
+ )''b s4 ['g16-1( 'b-2 d] )'b s s s [f-2 g-3 b-5 f-2] |
+ \stemboth;
+ [e-1\f c'-5( g-3 f-2] [e-1 c'-5 g-3 e-2]
+ [)d c'-5( f-3 e-2] [d-1 b-5 f-3 d-2] |
+ [)c b-5( e-3 d-2] [c-1 a-5 e-3 c-2]
+ [)'b-1 a-5( d-3 c-2] ['b-1 g-5 d-3 'b-2] |
+ [)'a g-5 c-4 'b] ['a-"poco a poco dim." fis-5 c-2 'a-1]
+ ['b-2 f d-4 c] ['b f d-4 'b-2] |
+ ['g e c-3 'b] ['a e-5 c-3 'a-1]
+ ['fis-2 d 'b-3 'a] ['g-1 d-5 'b-4 'g-2] |
+ ['e c-5 'a-4 'g-3] ['fis-2 c-5 'a-4 'fis-2]
+ ['d c-5 'b-4 'a] ['b-4 'g-2 d-5 'f-1] |
+ ['g-4 'e-2 'f-1 d-5] [c-4 'b 'a 'g]
+ [f-5 d-3 es-4 c-2] ['fis-1 es-4 d-3 c-2] |
+ ['b-1 d-5 'b-3 'g-1] ['as-4-"cresc. e rall." 'f-2 'g-3 'd-1]
+ ['es-2 'fis-3 'a-4 c-5]
+ \multi 2 <
+ { \stemup; r [c8 'b16] }
+ { \stemdown; ['d8 'f-2] }
+ >
+ \stemboth; |
+ <c1\mf 'g 'e>
+ \bar "|.";
+}
+
+lh = \melodic{
+ \octave c;
+ \clef bass;
+ \textstyle "roman";
+ c4-5 e-3 [g32-1 fis-2 g8.-1] 'g4 |
+ d-5 f-3 [a32-1 gis a8.] 'a4 |
+ % ugh grouping32: 4..4
+ e-5 e'-1 a-4 [e32-3 b c' b] [c' b a b] |
+ c'4 e-4 fis [a32-1 gis fis gis] [ ais gis fis gis] |
+ a4 c-4 d [d32 e f e] [f e d e] |
+ % ugh tril sign
+ % f4-1 e d-3\tr c |
+ f4-1 e d-3 c |
+ % g( )'g g\pr-"(#)"( )'g |
+ g( )'g g-"(\\textsharp)"( )'g |
+ % g\pr-"(\\textsharp)"( )'g g\pr-"(\\textsharp)"( )'g |
+ g-"(\\textsharp)"( )'g g-"(\\textsharp)"( )'g |
+ % ugh, f should be at upper staff
+ g r r16 ['g-5( 'b-4 d] )f-1 s s s |
+ s [g-5( b-4 d'-2] )f'-1 s s s s \clef violin; [g'-4 b'-2 d''-1]
+ s s s s \clef bass; |
+ \multi 2 <
+ { \stemup; g1 ~ g ~ g ~ g ~ g ~ g ~ g }
+ { \stemdown; 'g1 ~ 'g ~ 'g ~ 'g ~ 'g ~ 'g ~ 'g }
+ >
+ <c1 'c>
+ \bar "|.";
+}
+
+global = \melodic{
+ \meter 4/4;
+}
+
+\score{
+ % Moderato
+ % it would be nice to shut-off fingering...
+ \melodic \type Grandstaff <
+ <
+ \global
+ \rh
+ >
+ <
+ \global
+ \lh
+ >
+ >
+ \paper{
+ }
+ \midi{
+ \tempo 4 = 70;
+ }
+}
--- /dev/null
+\header{
+filename = "preludes-2.ly";
+title = "2";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+}
+
+rh = \melodic{
+ \octave c'';
+ \textstyle "italic";
+ r8\mf ['c-1( 'e-2 'g-4] ['e-2 'c-1 'bes-5 'g-3] |
+ [)'a-4\< 'c-1( 'f-2 'a-4] ['f 'c c-5 'a-3] |
+ [)'b-4 'g-1( 'b-2 d-4] ['b-2 'g f-5 \!d-3] |
+ \multi 2 <
+ {\stemup; )e2-4\f r4 e-5 }
+ {\stemdown; <c2 'g> r4 <c 'g> }
+ >
+ \stemboth; |
+ \multi 2 <
+ { \stemup; d2-4 r4 d-4 }
+ { \stemdown; <c2 'a> r4 <c 'a> }
+ >
+ \stemboth; |
+ \multi 2 <
+ { \stemup; d8 }
+ { \stemdown; <'b8 'g> }
+ >
+ \stemboth;
+ ['g8-1\mf( 'b-2 d-4]
+ \multi 2 <
+ { \stemup; )'b4 e-5 }
+ { \stemdown; 'g4 'b }
+ >
+ \stemboth; |
+ \multi 2 <
+ { \stemup; c2 r4 < {c-5 ~ c8} {'a4 ~ 'a8} > }
+ { \stemdown; c2 r4 'e4 ~ 'e8 }
+ >
+ ['d-1\p( 'fis-2 'a-4] ['fis-2 'd-1 c-5 'a-3] |
+ [)'b-4\< 'g-1( 'b-2 d-4] [ 'b-2 'g-1 f!-5 d-3] |
+ [)e-4 'g-1( c-2 e-4] [c-2 'g g-5 e-3] |
+ [)fis-4 'a-1( c-2 fis-4] [c 'a a-5 \!fis-3] |
+ \multi 2 <
+ { \stemup; )g2-5\f }
+ { \stemdown; <d2 'b> }
+ >
+ \stemboth;
+ r4 b4-2( |
+ [c8-1 e-2 g c'] [g-2 e-1 bes-4 g-2] |
+ [)a16->-3 g-2 f-1 e-3] [d c 'b!-3 'a-2]
+ ['b-3\< 'g-1 'a 'b] [c-1 d e \!f] |
+ g4-5\ff
+ \multi 2 <
+ { \stemup; c2-5 'b4-4 }
+ { \stemdown; 'g2 'd4 }
+ >
+ \stemboth;
+ \multi 2 <
+ { \stemup; c1^5 }
+ { \stemdown; 'e1_1}
+ >
+ \stemboth;
+ \bar "|.";
+}
+
+lh = \melodic{
+ \octave c;
+ \clef bass;
+ \multi 2 <
+ { \stemup; c1 ~ c ~ c }
+ { \stemdown; 'c1 ~ 'c ~ 'c }
+ >
+ \stemboth; |
+ r8 [c-5( e-3 f-1] [e-3 c-5 c' e-4] |
+ [)fis-3 d-5( fis-3 a-1] [fis-3 d-5 d' fis-4] |
+ )g2-3 r4 g-2( |
+ [)a8 'a-5( c-4 e-2] [c-4 'a-5 g e-3] |
+ )fis2 r4 d-4 |
+ % [g32-1( fis-2 g8.-1] ) 'g4 g( )'g\mr |
+
+ % my edition has mordents on every g here
+ [g32-1( fis-2 g8.-1] ) 'g4 g( )'g |
+ % 'g( )g\mr 'g( )g\mr |
+ g( )'g g( )'g |
+ g( )'g g( )'g |
+ [g8 'g-5( 'b-4 d-2] ['b-4 'g-5 f!-1 d-3] |
+ [)e-2 c-4 e-2 g-1] [e-3 c-5 c' e-4] |
+ \textstyle "finger";
+ f1^"3\\_1" ~ |
+ [f8 d-3 e-2 c-4] g4-1 'g^"5\\_2" |
+ <c1 'c1>
+ \bar "|.";
+}
+
+global = \melodic{
+ \meter 4/4;
+}
+
+\score{
+ % Moderato
+ % it would be nice to shut-off fingering...
+ \melodic \type Grandstaff <
+ <
+ \global
+ \rh
+ >
+ <
+ \global
+ \lh
+ >
+ >
+ \paper{
+ }
+ \midi{
+ \tempo 4 = 110;
+ }
+}
--- /dev/null
+\header{
+filename = "preludes-3.ly";
+title = "3";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+}
+
+define(comma, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
+define(s, `comma(translit($*,` ', `,'))')
+define(t, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
+
+rh = \melodic{
+ \octave c';
+ \textstyle "italic";
+%# s(`c' `es' `g' `\p(\<' `\!' `)\!' `\>')
+ t(c,es,g,`\p(\<',\!,`)\!',\>)
+%# s(c es g `(' `' `)')
+ t(c,es,g,`(',`',`)')
+%# s(c f as `(' `' `)')
+ t(c,f,as,`(',`',`)')
+ s(c f as)
+ s('b d f \< \!)
+ s('b d f)
+ s('g c es \> \!)
+ s('g c es)
+ s('g c es \< \!)
+ s('g c es)
+ s('a c es)
+ s('a c es)
+ s('a 'bes d \> \!)
+ s('g 'bes d)
+ s('bes d g)
+ s('a es g \mf)
+ s('a c fis)
+ s('a c fis)
+ s('bes d g)
+ s(c fis a -"poco\\_a\\_poco\\_cresc.")
+ s(d g bes)
+ s(d fis c')
+ s(cis g bes)
+ s(c es a !-"dim.")
+ s('bes e g)
+ s('a c g)
+ s('a c fis)
+ s('g 'bes e)
+ s('fis a es)
+ s('g 'bes d -"dim.")
+ s('g 'a c)
+ s('fis a c)
+ s('fis a c)
+ r16\p ['g 'a c] ['b 'g 'b 'g] r 'g r 'g
+ s('a c fis -"poco\\_cresc.")
+ s(c fis a)
+ s('b d g)
+ s('b d f -"dim.")
+ s('g c es)
+ s('fis c es)
+ s('fis c es)
+ r16 ['g(\< 'b d] ['b 'g 'b d] [es c 'a )\!fis] |
+ \multi 2 <
+ {\stemup; g2.-\fermata\mf}
+ {\stemdown; <'b2. d>}
+ >
+ \stemboth;
+ \bar "|.";
+}
+
+lh = \melodic{
+ \octave c;
+ \clef bass;
+ % c4 r [g8-.(\ped )es-.\*] |
+ c4 r [g8-.( )es-.] |
+ c4 r [g8-.( )es-.] |
+ c4 r [as8-.( )f-.] |
+
+ c4 r [as8-.( )f-.] |
+ c4 r [as8-.( )f-.] |
+ c4 r [as8-.( )f-.] |
+
+ c4-- r [es8 c] |
+ 'bes!4-- r [es8 c] |
+ 'as!4-- r [es8 c] |
+
+ 'g4-- r [es8 c] |
+ 'fis4-- r [es8 c] |
+ 'fis4 r [fis8 d] |
+
+ 'g4 r [d8 'bes] |
+ 'g4 r ['bes8 'g] |
+ 'es4 r [g8 es] |
+
+ c4 r [c8 'a] |
+ 'd4 r [d8 'a] |
+ 'd4 r [d8 'a] |
+ 'd4 r [d8 'bes] |
+
+ 'd4 r [es8 c] |
+ 'd4 r [es8 d] |
+ 'd4 r [a8 fis] |
+
+ 'd4 r [g8 es] |
+ 'd4 r [fis8 d] |
+ 'd4 r [e8 cis] |
+ 'd4 r [es8 c] |
+
+ 'd4 r [d8 'a] |
+ 'd4 r [cis8 'bes] |
+ 'd4 r [c!8 'a] |
+
+ 'd4 r ['bes8 g] |
+ 'd4 r [es8 c] |
+ 'd4 r [d8 c] |
+
+ 'g4 r [es8 c] |
+ 'g4 r [d8 'b] |
+ 'g4 r [es8 c] |
+
+ 'g4 r [es8 c] |
+ 'g4 r [g8 d] |
+ 'g4 r [as8 f] |
+ 'g4 r [es8 c] |
+
+ 'g4 r [es8 c] |
+ 'g4 r [es8 c] |
+ 'g4 r r |
+ 'g2.-\fermata
+ \bar "|.";
+}
+
+global = \melodic{
+ \meter 3/4;
+ \key bes es as;
+}
+
+\score{
+ % Semplice e non troppo legato
+ \melodic \type Grandstaff <
+ <
+ \global
+ \rh
+ >
+ <
+ \global
+ \lh
+ >
+ >
+ \paper{
+ }
+ \midi{
+ \tempo 4 = 90;
+ }
+}
--- /dev/null
+\header{
+filename = "preludes-4.ly";
+title = "4";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+}
+
+rh = \melodic{
+ \octave c'';
+ \textstyle "italic";
+ % ugh, start in multi, because of slurring an tieing over bars
+ \multi 2 <
+ {
+ r16\p_"legato"
+ ['d-1( 'fis-3 'd-1] ['a-2 'b-3 cis-4 'a-3]
+ [d-3 cis-2 d-1 e-2] [d-1 fis-3 e-2 d-1] |
+ \textstyle "finger";
+ \stemup;
+ )cis4-2 fis-5 ~ [fis8 fis-4] e4-3 ~ |
+ e( )d8-2 s s4 s4 |
+ r8 d4-> cis8-1 ~ cis 'b4-1 'b8 |
+ }
+ {
+% s1
+ \stemdown;
+ r8 'a4 'a8 'b4.-"2\\_1" cis8 ~ |
+ cis16\< ['a( cis 'a] [d-2 e fis d-1]
+ [g-3 fis g a-4] [a-3 b a \!g] |
+ )fis4-"2\\_3" [e8-2 a-5] <fis4-4 d-2> <gis-5 e-3> |
+ }
+ >
+ \stemboth;
+ \bar "|.";
+}
+
+lh = \melodic{
+ \octave c;
+ \clef bass;
+ s1 | s1 | s1 | s1
+% \multi 2 <
+% { \stemup; }
+% { \stemdown; }
+% >
+% \stemboth; |
+ \bar "|.";
+}
+
+global = \melodic{
+ \meter 4/4;
+ \key fis cis;
+}
+
+\score{
+ % Allegretto
+ % it would be nice to shut-off fingering...
+ \melodic \type Grandstaff <
+ <
+ \global
+ \rh
+ >
+ <
+ \global
+ \lh
+ >
+ >
+ \paper{
+ }
+ \midi{
+ \tempo 4 = 110;
+ }
+}
\header{
filename = "scsii-menuetto.ly";
-title = "Cello Suite II";
+title = "Cello Suite II, Menuetto I";
subtitle = "Part V";
instrument = "Menuetto I"; % duh
description = "Cello suite transcribed for Viola";
Tested Features:breaking algorithm, chords, multivoice, accents
%}
-\version "0.1.8";
+\version "0.1.9";
%% Stuff from MPP version
% \lefttitle{Menuetto}
arithmetic_basicspace = 3.2;
% how can multiplier have dim?
arithmetic_mulitplier = 9.\pt;
- \output "scsii-menuetto.out";
+ %\output "scsii-menuetto.out";
}
\midi{
\tempo 4 = 120;
- \output "scsii-menuetto.midi";
+ %\output "scsii-menuetto.midi";
}
}
+++ /dev/null
-\documentclass{article} %UGH
-\usepackage{a4}
-\advance\oddsidemargin-15mm
-\evensidemargin\oddsidemargin
-\advance\textwidth30mm
-\begin{document}
-\input lilyponddefs
-\input titledefs
-\def\interscoreline{\vskip6pt}
-\title{Solo Cello Suites\normalsize\\[2ex]Suite II}
-% \subtitle{Suite II}
-\composer{J.\ S.\ Bach}
-% \lefttitle{Menuetto}
-% \tempo{Moderato}
-% \metron{4=120}
-\instrument{Menuetto I} % heu
-\makelilytitle
-\input scsii-menuetto.out
-\end{document}
%{
%}
-\version "0.1.8";
+\version "0.1.9";
global =
Tested Features: stem direction, multivoice, forced accidentals.
%}
-\version "0.1.8";
+\version "0.1.9";
% should add \need{dutch.ini} for
% correct parsing of note names
copyright = "Public Domain";
}
-\version "0.1.8";
+\version "0.1.9";
global =
\melodic {
#
LYFILES = $(wildcard *.ly)
TEXFILES = $(wildcard *.tex)
+M4FILES = $(wildcard *.m4)
DISTFILES = Makefile TODO $(LYFILES) $(TEXFILES) $(wildcard *.m4)
#
+OUTFILES = $(addprefix $(outdir)/,$(M4FILES:%.m4=%))
+
+all: $(OUTFILES)
%}
-\version "0.1.8";
+\version "0.1.9";
vi1=\melodic{
\meter 4/4;
>
\paper{
%linewidth=18.\cm;
- \output "gallina.out";
+ %\output "gallina.out";
gourlay_maxmeasures=7.;
}
\midi{
copyright = "public domain";
}
-\version "0.1.8";
+\version "0.1.9";
\include "standchen.ly"
copyright = "public domain";
description = "A schubert song in 20 pt";
}
-\version "0.1.8";
+\version "0.1.9";
% fool make-website
% \include "standchen.ly";
%}
\include "paper20.ly"
-\version "0.1.8";
+\version "0.1.9";
commands = \melodic{
\skip 2.*4;
\header{
filename = "standje.ly";
-title = "St\"andchen (Serenade) \"Leise flehen meine Lieder\"";
+title = "St\\\"andchen (Serenade) ``Leise flehen meine Lieder''";
opus = "D. 957 No. 4";
composer = "Franz Schubert (1797-1828)"
"Text by Ludwig Rellstab (1799-1860)";
multiple \paper{}s in one \score
%}
-\version "0.1.8";
+\version "0.1.9";
$vocal_verse1 = \melodic{
\octave c';
nicht.2. |
}
+$lyric_verse2 = \lyric{
+% 5
+ \[2/3 H\"orst4 die8 \] Nach-4. ti-8
+ \[2/3 gal-4 len8 \] schla-4 gen?8 _8
+ Ach!4. sie8 \[2/3 fleh-4 en8 \]
+ dich,2 _4
+ _4 _ _
+ _4_ _
+
+% 11
+ \[2/3 Mit4 der8 \] T\"o-4. ne8
+ \[2/3 s\"u\ss-4 en8 \] Kla-4. gen8
+ Fleh-4. en8 \[2/3 sie4 f\"ur8 \]
+ mich.2 _4
+ _4_ _
+ _4_ _
+
+% 17
+ Sie-8. ver-16 stehn4. des8
+ Bus-8. ens16 Seh-4. nen,8
+ \[2/3 Ken-4 nen8 \] Lieb-4. es-8
+ schmerz,2.
+ \[2/3 Ken-4 nen8 \] Lieb-4. es-8
+ schmerz,2.
+
+% 23
+ R\"uh-8. ren16 mit4. den8
+ Sil-8. ber-16 t\"o-4. nen8
+ \[2/3 Jed-4 es8 \] wei-4. che8
+ Herz.2.
+}
+
+$lyric_through1 = \lyric{
+% 37
+ La\ss8. auch16 dir8. die16 Brust8. be-16 |
+ we- gen, |
+ Lieb-4. chen,8 h\"o-8. re16 |
+ mich!2 _ |
+ Be-8. bend16 harr' ich8 _8 |
+ dir8. ent-16 ge- gen!8 _8 |
+ \[2/3 Komm, be-8 \] gl\"u4. cke8 |
+ mich!2. |
+}
+
$treble_intro = \melodic{
\octave c';
\clef violin;
$treble_eentje = \melodic{
\octave c';
-% <{as!2\mf( [c'8. )as16]} {f2 as8( )f}> |
-% as!2\mf( [c'8. )as16] |
-% <e4. g> <[e8-.( g-.> <e8-. g-.> <)e8-. g-.]> |
- <f2\mf as!(> <[as8.( c'> <)f )as16]> |
+ <f2\mf as!(> <[as8.->( c'> <)f16 )as]> |
<e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
<f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
<e2 g\pp> <e4 g> |
- <f2\mf a(> <[as8.( c'> <)f )a16]> |
+ <f2\mf a(> <[as8.( c'> <)f16 )a]> |
<e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
<f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
<e2. g> |
'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
}
-$bass_eentje1 = \melodic{
+$bass_eentje = \melodic{
\octave c;
+ <'c8 c> <[c f as!> <f as c'> <c f as> <f as c'> <c f as]> |
+ 'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
+ <''g8 'g> <[d g> <g b> <d g> <g b> <d g]> |
+ 'c8 <[e g> <g c'> <e g> <g c'> <e g]> |
+ <'c8 c> <[c f a> <f a c'> <c f a> <f a c'> <c f a]> |
+ 'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
+ <''g8 'g> <[d g> <g b> <d g> <g b> <d g]> |
+ 'c8 <[e g> <g c'> <e g> <g c'> <e g]> |
}
global= \melodic {\meter 3 /4; \key bes es as; }
\meter 3 /4;
\skip 4 * 12;
\$lyric_verse1
-% \skip 4 * 24;
+ \skip 4 * 24;
+ \$lyric_verse2
}
\type Staff { <
\global
{
\skip 4 * 12;
\$vocal_verse1
-% \skip 4 * 24;
+ \skip 4 * 24;
+ \$vocal_verse1
}
> }
{
\$treble_intro
\$treble_verse1
-% \$treble_eentje
+ \$treble_eentje
+ \$treble_verse1
}
>
<
{
\$bass_intro
\$bass_verse1
-% \$bass_eentje
+ \$bass_eentje
+ \$bass_verse1
}
>
>