From 745b9d0980d8811783e4fe62380363d05fd6140c Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 27 Jan 1998 19:26:37 +0100 Subject: [PATCH] release: 0.1.42 --- AUTHORS.text | 4 +- Documentation/Makefile | 2 + Documentation/faq.pod | 29 +- Documentation/internals.pod | 2 +- Documentation/language.pod | 4 - Documentation/lilypond.pod | 2 +- Documentation/links.pod | 4 +- Documentation/literature.pod | 12 +- Documentation/ly2dvi.pod | 44 +++ Documentation/other-packages.pod | 21 +- Documentation/out/dummy.dep | 0 INSTALL.text | 12 +- NEWS | 24 ++ TODO | 12 + VERSION | 2 +- bin/clean-fonts.sh | 5 +- bin/convert-mudela.pl | 7 + bin/ly2dvi.sh | 527 ++++++++++++-------------- bin/make-website.py | 31 +- bin/out/dummy.dep | 0 flower/TODO | 1 - flower/include/dictionary.hh | 15 + flower/include/libc-extension.hh | 2 +- flower/include/out/dummy.dep | 0 flower/out/dummy.dep | 0 flower/test/out/dummy.dep | 0 init/english.ly | 13 - init/engraver.ly | 2 + init/feta20.ly | 10 +- init/italian.ly | 49 +++ init/lily-init.ly | 2 +- init/out/dummy.dep | 0 init/table20.ly | 3 +- input/beams.ly | 2 +- input/cadenza.ly | 2 +- input/collisions.ly | 2 +- input/coriolan-alto.ly | 2 +- input/font-body.ly | 2 +- input/font.ly | 4 +- input/font16.ly | 2 +- input/gallina.ly | 2 +- input/gourlay.ly | 46 +-- input/keys.ly | 2 +- input/kortjakje.ly | 2 +- input/multi.ly | 2 +- input/out/dummy.dep | 0 input/pedal.ly | 2 +- input/rhythm.ly | 2 +- input/scales.ly | 2 +- input/scripts.ly | 2 +- input/scsii-menuetto.ly | 2 +- input/sleur.ly | 2 +- input/slurs.ly | 2 +- input/spacing.ly | 2 +- input/standchen-16.ly | 2 +- input/standchen-20.ly | 2 +- input/standchen.ly | 44 +-- input/standje.ly | 135 +++---- input/stem.ly | 2 +- input/toccata-fuga-E.ly | 2 +- input/twinkle-pop.ly | 2 +- input/twinkle.ly | 2 +- input/wtk1-fugue1.ly | 2 +- input/wtk1-fugue2.ly | 2 +- input/wtk1-prelude1.ly | 2 +- lib/include/out/dummy.dep | 0 lib/out/dummy.dep | 0 lily/VERSION | 2 +- lily/beam-grav.cc | 81 ++-- lily/include/beam-grav.hh | 1 - lily/include/lily-proto.hh | 4 + lily/include/lookup.hh | 1 + lily/include/musical-request.hh | 16 +- lily/include/my-lily-parser.hh | 2 +- lily/include/out/dummy.dep | 0 lily/include/plet-swallow-engraver.hh | 28 ++ lily/include/text-def.hh | 4 +- lily/include/text-spanner.hh | 2 +- lily/lexer.l | 10 + lily/midi-def.cc | 2 +- lily/musical-request.cc | 14 +- lily/my-lily-lexer.cc | 1 - lily/my-lily-parser.cc | 74 ++-- lily/out/dummy.dep | 0 lily/parser.y | 66 ++-- lily/plet-swallow-engraver.cc | 21 + lily/text-spanner.cc | 1 + make/Targets.make | 5 +- make/lelievijver.lsm | 8 +- make/lilypond.lsm | 8 +- make/lilypond.spec | 6 +- make/out/dummy.dep | 0 mf/Makefile | 4 +- mf/out/dummy.dep | 0 mi2mu/include/out/dummy.dep | 0 mi2mu/mudela-item.cc | 7 +- mi2mu/mudela-stream.cc | 2 +- mi2mu/out/dummy.dep | 0 out/dummy.dep | 0 tex/lily-ps-defs.tex | 20 + tex/out/dummy.dep | 0 101 files changed, 853 insertions(+), 661 deletions(-) create mode 100644 Documentation/ly2dvi.pod create mode 100644 Documentation/out/dummy.dep create mode 100644 bin/out/dummy.dep create mode 100644 flower/include/out/dummy.dep create mode 100644 flower/out/dummy.dep create mode 100644 flower/test/out/dummy.dep delete mode 100644 init/english.ly create mode 100644 init/italian.ly create mode 100644 init/out/dummy.dep create mode 100644 input/out/dummy.dep create mode 100644 lib/include/out/dummy.dep create mode 100644 lib/out/dummy.dep create mode 100644 lily/include/out/dummy.dep create mode 100644 lily/include/plet-swallow-engraver.hh create mode 100644 lily/out/dummy.dep create mode 100644 lily/plet-swallow-engraver.cc create mode 100644 make/out/dummy.dep create mode 100644 mf/out/dummy.dep create mode 100644 mi2mu/include/out/dummy.dep create mode 100644 mi2mu/out/dummy.dep create mode 100644 out/dummy.dep create mode 100644 tex/out/dummy.dep diff --git a/AUTHORS.text b/AUTHORS.text index ed25a63d43..b2cc8a8a41 100644 --- a/AUTHORS.text +++ b/AUTHORS.text @@ -61,7 +61,7 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS -5/Jan/98 LilyPond 0.1.41 1 +5/Jan/98 LilyPond 0.1.42 1 @@ -127,6 +127,6 @@ AUTHORS(1) LilyPond documentation AUTHORS(1) -5/Jan/98 LilyPond 0.1.41 2 +5/Jan/98 LilyPond 0.1.42 2 diff --git a/Documentation/Makefile b/Documentation/Makefile index 4da45d58b0..132c161c0b 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -59,6 +59,8 @@ include $(depth)/make/Rules.make localclean: rm -f $(TEXTFILES) $(HTMLFILES) $(GROFFFILES) + rm -f $(outdir)/* # clean the make-website stuff + rm -f $(outdir)/docxx/* # clean the make-website stuff MAN1FILES = lilypond convert-mudela mi2mu mudela-book MAN1GROFF = $(addprefix $(outdir)/, $(addsuffix .1,$(MAN1FILES))) diff --git a/Documentation/faq.pod b/Documentation/faq.pod index efe7fd548c..76ad9e5ddb 100644 --- a/Documentation/faq.pod +++ b/Documentation/faq.pod @@ -55,18 +55,24 @@ content in Mudela) We're not sure on leaving out this feature. If you think this is a good idea, please let us know. -Be warned we will I allow you to leave out the C<#> if the note -already has an accidental, or if the key has a C-sharp. We won't allow - c# c % no way! +Q: Why do I have to type the accidentals to the note if I specified them? -in stead of: +A: Take this example cis cis - #c #c -Why, you might ask? Because independently of how it was written, you -would say that you are playing and reading "two C-sharp" notes. +Independently of how it was written and what the current key was, you +would say that you are playing and reading "two C-sharp" notes. We +have tried to make the language somewhat context-free. Of course +sheet music is not context-free. Unfortunately, sheet music is also 2 +dimensional, and ASCII is not. + +Technically it would be feasible to have the Interpreting phase do +tricky things to add (or leave out) the accidentals, but we think that +it is impractical: it hampers the readability and portability of your +source, since you need LilyPond to fill in the details and actually +make sense of it. Q: What is C anyway @@ -225,7 +231,7 @@ Q: Can I join in on LilyPond development? How do I do this? A: LilyPond development is open for anyone who wants to join. We try to use a Bazaar style development model for LilyPond, see -http://locke.ccil.org/~esr/writing/cathedral.html. This means: +http://locke.ccil.org/~esr/writings/cathedral.html. This means: frequent releases, everyone can send in a patch or do suggestions and all development discussions are public. @@ -257,20 +263,20 @@ or diff -urN old-directory/ new-directory/ > patch -Alternatively, you can use bin/make-patch.py +Alternatively, you can use F. Don't forget to put +in your name and e-mail address. Q: How do I learn the C++ code? A: The entry point is in C. Good luck. :-) -Seriously, read, reread and reread lilygut and CodingStyle, and +Seriously, read, reread and reread internals and CodingStyle, and just start anywhere. Anywhere? Well, most of the comment doco are in the header files, so your best bet would be C. Some of the most important data-structures are to be found in: - - p-col.hh - *request.hh - engraver.hh - performer.hh @@ -323,6 +329,7 @@ A: Your \score should include a \midi block, eg. \output "myfile.mid"; \tempo 4=70; } + } The B<-M> option was added to LilyPond because processing the \paper block is so slow. diff --git a/Documentation/internals.pod b/Documentation/internals.pod index 4d174f1e63..c3653bc51d 100644 --- a/Documentation/internals.pod +++ b/Documentation/internals.pod @@ -1,6 +1,6 @@ =head1 NAME -LilyGuts - doco to the internals of GNU LilyPond +LilyPond internals - doco to the internals of GNU LilyPond =head1 DESCRIPTION diff --git a/Documentation/language.pod b/Documentation/language.pod index f56947f09b..0757778d80 100644 --- a/Documentation/language.pod +++ b/Documentation/language.pod @@ -15,12 +15,8 @@ take out an old version of lilypond] =head1 Decisions (Sat 1997-3-15, dommelpijpje no21) - - - \extract{ \from 2:3*4 \to 5 oboe } - =head1 THOUGHTS =head2 Typing diff --git a/Documentation/lilypond.pod b/Documentation/lilypond.pod index f735161a52..20a0e0b436 100644 --- a/Documentation/lilypond.pod +++ b/Documentation/lilypond.pod @@ -227,7 +227,7 @@ Lots of them. See F and F =over 4 -=item lilygut +=item internals On technical details of LilyPond diff --git a/Documentation/links.pod b/Documentation/links.pod index e6444f8ef5..80757ffed3 100644 --- a/Documentation/links.pod +++ b/Documentation/links.pod @@ -88,7 +88,9 @@ mailing list have been setup: A moderated list for information on the GNU Music project, to subscribe: send mail with subject "subscribe" to -info-gnu-music-request@gnu.org +info-gnu-music-request@gnu.org. As this list is moderated, normal +people should ask to drl@gnu.org or hanwen@stack.nl to forward +announces instead of sending it to info-gnu-music@gnu.org =item help-gnu-music@gnu.org diff --git a/Documentation/literature.pod b/Documentation/literature.pod index 9e8f12f4b2..4e6be19736 100644 --- a/Documentation/literature.pod +++ b/Documentation/literature.pod @@ -29,10 +29,10 @@ Association of the United States Inc., 1993. Ted Ross. ``Teach yourself the art of music engraving and processing'' (3rd edition). Hansen House, Miami Beach, FLorida. -[This is about engraving, i.e. the real thing with metal plates. It -contains directions on good typesetting, but the sections reproduction -technicalities and history are interesting. Especially the section on -Music Typewriters is amusing HWN] +[This is about engraving, i.e. professional typesetting. It contains +directions on good typesetting, but the sections on reproduction +technicalities, how to use pens and history are interesting. +Especially the section on Music Typewriters is amusing HWN] Gardner Read. ``Modern Rhythmic Notation.'' Indiana University Press, 1978. @@ -307,10 +307,6 @@ DARMS, enigma, -SCORE, - - - =head1 AUTHORS References and comments contributed by Han-Wen Nienhuys (HWN), Miguel diff --git a/Documentation/ly2dvi.pod b/Documentation/ly2dvi.pod new file mode 100644 index 0000000000..6a4767381f --- /dev/null +++ b/Documentation/ly2dvi.pod @@ -0,0 +1,44 @@ +=head1 NAME + +ly2dvi - convert mudela to DVI + +=head1 SYNOPSIS + + ly2dvi file[.ly] + +=head1 DESCRIPTION + +ly2dvi is a script that will setup LaTeX and TeX for you to ... + +=head1 OPTIONS + +=over 5 + +=item B<--help> + +give help + +=item ..... + +=back + +=head1 SOMETHING + +=head1 ENVIRONMENT + +=head1 FILES + +F contains ... + +=head1 SEE ALSO + +lilypond(1), + +=head1 AUTHOR + +JAF + +=head1 BUGS + +Does not handle margins properly + diff --git a/Documentation/other-packages.pod b/Documentation/other-packages.pod index d1aad66d5c..7a4b44ac52 100644 --- a/Documentation/other-packages.pod +++ b/Documentation/other-packages.pod @@ -130,7 +130,18 @@ name.) =item Finale -=item Score +=item Score, http://www.ymusic.com/Score + +Werner Lemberg +writes to me: I consider SCORE as the best program for +typesetting classical music. [..] the price is quite high (about US$ +1000) [..] It has a graphical interface but to get all out of the +program you have to learn a 400 page manual almost by heart because +you'll change most features by inputting parameters (up to 20 for some +items) on a command line. Expect three months to master SCORE :-) + + + =item Personal Composer @@ -152,10 +163,10 @@ Shareware. =item Amadeus, Jerker.Elsgard@abc.se -Professional and expensive (DM 4000,--) engraving. Designed as a -batch program (like LilyPond). It is aimed at publishers. Its history -is more than fifteen years and Amadeus has been running under -different Unix clones. It uses MIDI-keyboard input +Jerker Elsgard writes: professional and expensive (DM 4000,--) +engraving. Designed as a batch program (like LilyPond). It is aimed +at publishers. Its history is more than fifteen years and Amadeus has +been running under different Unix clones. It uses MIDI-keyboard input =back diff --git a/Documentation/out/dummy.dep b/Documentation/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/INSTALL.text b/INSTALL.text index d0d7ea2626..53587f1d31 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -61,7 +61,7 @@ RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD -11/Jan/98 LilyPond 0.1.41 1 +11/Jan/98 LilyPond 0.1.42 1 @@ -127,7 +127,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a -11/Jan/98 LilyPond 0.1.41 2 +11/Jan/98 LilyPond 0.1.42 2 @@ -193,7 +193,7 @@ INSTALL(1) LilyPond documentation INSTALL(1) -11/Jan/98 LilyPond 0.1.41 3 +11/Jan/98 LilyPond 0.1.42 3 @@ -259,7 +259,7 @@ EEEEXXXXAAAAMMMMPPPPLLLLEEEE -11/Jan/98 LilyPond 0.1.41 4 +11/Jan/98 LilyPond 0.1.42 4 @@ -325,7 +325,7 @@ MMMMUUUUSSSSIIIIXXXXTTTTEEEEXXXX -11/Jan/98 LilyPond 0.1.41 5 +11/Jan/98 LilyPond 0.1.42 5 @@ -391,6 +391,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS -11/Jan/98 LilyPond 0.1.41 6 +11/Jan/98 LilyPond 0.1.42 6 diff --git a/NEWS b/NEWS index b00a6f01e3..a9c9c7c770 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,27 @@ +pl 42 + - ly2dvi 0.5 (JAF) + - italian.ly (thanks, Paolo) + - bf: first \mudelapaper output (BS) + - bf: cathedral + bazaar URL (thanks, Barrie) + - bf: libc-extension.hh (AO) + +pl 41.jcn4 + - plet brackets (always) in ps (only) + - Plet_spanner derives from bow + - bf: mf/Makefile: let %.tex %.ly depend on %.mf, + iso non-distributed %.log + - mi2mu mudela 0.1.8 + - bit better plet number placement + - handier plet syntax: [2/3 c8 c c ]1/1 and \[2/3 c2 c c \] + - Plet_swallow_engraver for lyrics + - bit better plet number placement (NOT) + - new plet syntax: combined beam and plet open + - more standje.ly + - new plet syntax: start: \plet2/3 stop: \telp1/1 + - Plet_req, Plet_engraver; removed plet stuff from beam + +****** +jan 20 pl 41 - warn for score with multiple Music blocks - bf: \plet (MB) diff --git a/TODO b/TODO index f62af6ca90..3219d2897d 100644 --- a/TODO +++ b/TODO @@ -7,6 +7,12 @@ Most of the items are marked in the code as well, with full explanation. grep for TODO and ugh/ugr 0.2: + * use kpsepath to find all TeX dirs + - configure.in + - clean-fonts.sh + + * check for abs() + * forced breakpoints * --metafont @@ -28,6 +34,9 @@ grep for TODO and ugh/ugr * LILYSOURCEDIR * documentation + - info? + - LaTeX? + - more manpages? * naming Mozarella, Madeira, Muella? @@ -37,6 +46,7 @@ grep for TODO and ugh/ugr STUFF + * give Items/Spanners access to unbroken originals * scoping for properties @@ -169,6 +179,8 @@ languages: - text - slur start/end + * cautionary accidental + * Output an output format independent (ofi) typeset file; and make ofi2 TeX, MusixTex, Display PostScript, PostScript, Ascii... interpreters. (difficult) diff --git a/VERSION b/VERSION index 11280fe443..5617d6b5ef 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 1 -TOPLEVEL_PATCH_LEVEL = 41 +TOPLEVEL_PATCH_LEVEL = 42 TOPLEVEL_MY_PATCH_LEVEL = # use the above to send patches, always empty for released version: diff --git a/bin/clean-fonts.sh b/bin/clean-fonts.sh index 3421ca41e8..fc72545334 100644 --- a/bin/clean-fonts.sh +++ b/bin/clean-fonts.sh @@ -7,10 +7,7 @@ case $# in WHAT=$1;; esac -if [ X$LILYPOND_SOURCEDIR = X ]; -then - LILYPOND_SOURCEDIR=.. -fi +# should use kpsepath if [ -d /var/lib/texmf ]; then TEXDIR=/var/lib/texmf diff --git a/bin/convert-mudela.pl b/bin/convert-mudela.pl index 7c26746870..e10af3b077 100644 --- a/bin/convert-mudela.pl +++ b/bin/convert-mudela.pl @@ -153,6 +153,12 @@ sub convert_0_1_6_to_0_1_7 } } +sub convert_0_1_7_to_0_1_8 +{ + s/\\plet *1 *\/ *1 *;/\\]/; + s/\\plet *([1-9][0-9]*) *\/ *([2-9][0-9]*) *;/\\[$1\/$2/; +} + ############################################################### sub last_conversion @@ -200,6 +206,7 @@ my %minor_conversions = ("0.0.50" => \&no_conv, "0.1.5" => \&convert_0_1_4_to_0_1_5, "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 ); diff --git a/bin/ly2dvi.sh b/bin/ly2dvi.sh index 9468401c62..9b69a21d80 100644 --- a/bin/ly2dvi.sh +++ b/bin/ly2dvi.sh @@ -8,12 +8,58 @@ # Original LaTeX file made by Mats Bengtsson, 17/8 1997 # -VERSION="0.3.hwn1" +VERSION="0.5" IDENTIFICATION="lytodvi.sh $VERSION" NOW=`date` echo "$IDENTIFICATION" 1>&2 # NEWS +# 0.5.hwn1 +# - do tee of output. +# 0.5 +# - More useful ("two-level") debug. +# - The Q&D hack to find file names and not handling \include +# is replaced by grabbing output file names from Lilypond. +# = Detects multiple output files - adds them when running +# LaTeX. +# - Works with multiple input files - no matter if they are +# (a mix of) input to or output from Lilypond. +# +#TODO +# - Still no margins handling. +# - We have to discuss how to handle multiple output files +# from Lilypond - 'ly2dvi standchen' gives a rather odd +# result.... + +# 0.4.1 +# - Always exit after printing help info +# 0.4 +# - Changes to ensure for more strict grep'ing of parameters +# Thanks to from G.B.Stott@bolton.ac.uk +# - More efficient use of sed -e 's///' -e 's///' +# Thanks to Johan Vromans and GBS +# - Ask tex for location of titledefs.tex (Thanks to JV) +# - Accept only exact match of "\def\mudelacomposer{" +# (or whatever mudela* defined in titledefs.tex) +# - Even more efficient use of sed (Thanks to JV) +# - Default file name for single output file implemented. +# - Moved help into function - finally included from 0.1.jcn1 +# +#TODO +# - Still doesn't handle \include +# - The Q&D for finding output file name from the sequence of +# \paper \output \midi \output really needs to be looked at. +# I have improved it a lot, but it's only capable of finding +# one (the last) file name. +# Well, I have to rewrite this entirely to handle \include, +# then I can fix it. +# - Still no margins handling. +# +#WARNING +# - Some lines of output from lilypond do NOT start +# at first character position, therefore I have removed "^" +# in sed'ing and grep'ing. + # 0.3.hwn1 # - add "Creator: " line to output # @@ -48,23 +94,39 @@ echo "$IDENTIFICATION" 1>&2 # - moved help into function # -# Exit value, when needed +# print usage # -EXIT=0 +help() { + cat << EOF +Generate dvi file from mudela or lilypond output +Usage: $0 [options] file[s] + +Options: + -D, --debug set debug mode + -h, --help this help text + -k, --keep keep LaTeX file + -l, --language= give LaTeX language (babel) + -p, --papersize= give LaTeX papersize (eg. a4paper) + files may be (a mix of) input to or output from lilypond(1) +EOF +} # # Keywords defined in titledefs.tex -# Isn't there a way to ask LaTeX for the location of titledefs.tex? # -TF=/usr/lib/texmf/tex/lilypond/titledefs.tex +TF=`kpsewhich -n tex tex titledefs.tex` +if [ -n $TF ] +then + TF=/usr/lib/texmf/tex/lilypond/titledefs.tex +fi MU_DEF="" if [ -f $TF ] then MU_DEF=`egrep "^.newcommand...mudela" $TF | \\ - sed -e s/^.newcommand...//g | sed -e "s/\\}.*$//"` + sed -e 's/^.newcommand...//' -e 's/\\}.*$//'` fi -if [ "$MU_DEF" = "" ] +if [ -z "$MU_DEF" ] then MU_DEF="mudelatitle mudelasubtitle mudelacomposer \ mudelaarranger mudelainstrument" @@ -73,7 +135,6 @@ fi # # debugging # -# debug_echo=echo debug_echo=true # @@ -93,10 +154,15 @@ do $debug_echo "arg: \`$OPTARG'" case $O in D ) - set -x + if [ $debug_echo = echo ] + then + set -x + fi + debug_echo=echo ;; h ) - HELP=Y + help; + exit 0 ;; k ) KEEP=Y @@ -108,14 +174,16 @@ do PSZ=$OPTARG ;; \? ) - HELP=Y + help; + exit -1 ;; # a long option! -) $debug_echo "long option: \`$OPTARG'" case "$OPTARG" in h*|-h*) - HELP=Y + help; + exit 0 ;; k*|-k*) KEEP=Y @@ -127,12 +195,16 @@ do PSZ=`echo $OPTARG | sed -e s/"^.*="//` ;; D*|-D*) - set -x; + if [ $debug_echo = echo ] + then + set -x + fi + debug_echo=echo ;; *|-*) echo $0": illegal option -- "$OPTARG; - EXIT=-1; - HELP=Y + help; + exit -1 ;; esac esac @@ -141,269 +213,165 @@ shift `expr $OPTIND - 1` # # Input file name # -if [ "$HELP" != "Y" ] +if [ "$1" = "" ] then - if [ "$1" = "" ] - then - cat << EOF - -$0 - no input file name given -EOF - EXIT=1 - HELP=Y - fi + help + $debug_echo $IDENTIFICATION": No input file name given" + exit 1 fi -GF=$1 # -# Check if input file exists... -# -if [ "$HELP" != "Y" ] -then +for GF in $* +do + # + # Check if input file exists... + # if [ ! -f $GF ] then - GF=$1.ly + GF=$GF.ly if [ ! -f $GF ] then - cat << EOF - -$0 - input file $GF not found -EOF - EXIT=2 - HELP=Y + $debug_echo $IDENTIFICATION": Input file "$GF" not found" + exit 2 fi fi -fi - -# -# print usage -# -#help() { -if [ "$HELP" = "Y" ] -then - cat << EOF -Generate dvi file from mudela or lilypond output -Usage: $0 [options] file - -Options: - -D, --debug set debug mode - -h, --help this help text - -k, --keep keep LaTeX file - -l, --language= give LaTeX language (babel) - -p, --papersize= give LaTeX papersize (eg. a4paper) - - file may be input to or output from lilypond(1) -EOF - exit $EXIT -fi -#} - -# -# More files? -# -shift 1 - -# -# Check whether input file is the input to or output from lilypond -# -L1=`head -1 $GF` -OP=`echo $L1 | grep "^% Creator: GNU LilyPond"` -if [ "$OP" != "" ] -then # - # OK - it's the output from lilypond. - # Get lilypond source file name + # Check whether the file is input to or output from lilypond # - OF=$GF - IFL=`grep mudelafilename $OF` - if [ "$IFL" != "" ] + L1=`head -1 $GF` + OP=`echo $L1 | grep "^% Creator: GNU LilyPond"` + if [ -n "$OP" ] then - IF=`echo $IFL | sed -e s/^.*{// | sed -e s/"}*.$"//` # - # Check if source file exists + # OK - it's the output from lilypond. + # + # Get lilypond source file name # - if [ ! -f $IF ] + OF=$GF + IFL=`grep mudelafilename $OF` + if [ "$IFL" != "" ] then - cat << EOF - -$0 - mudela file not found. - -EOF + IF=`echo $IFL | sed -e 's/.*{//' -e 's/}*.$//'` + # + # Check if source file exists + # + if [ ! -f $IF ] + then + $debug_echo $IDENTIFICATION": Mudela file not found." + TW=15.5cm + fi + else + $debug_echo $IDENTIFICATION": Mudela file name not found." TW=15.5cm fi else - cat << EOF - -$0 - mudela file name not found. + # + # I have to assume this is the lilypond input file + # Find output file name, if defined + # + IF=$GF + # + # Run lilypond + # Grab output file names + # + $debug_echo "lilypond "$IF -EOF - TW=15.5cm + lilypond $IF 2>&1 | tee /tmp/lilylog.$$ + OF=`cat /tmp/lilylog.$$| egrep '^TeX output to ' | \\ + sed -e 's/TeX output to//' -e 's/\.\.\.//'` + $debug_echo "==> "$OF fi -else - # - # I have to assume this is the lilypond input file - # Find output file name, if defined - # - IF=$GF - OFS=`egrep "paper|midi|output" $IF` - OF1=`echo $OFS | sed -e s/".midi.*$"// | sed -e s/"^.*paper"//` - if [ "$OF1" = "" ] - then - OF1=`echo $OFS | sed -e s/"^.*paper"// | sed -e s/".midi.*$"//` - fi - if [ "$OF1" = "" ] - then - OF=lelie.tex - else - OF2=`echo $OF1 | grep output` - if [ "$OF2" = "" ] - then - OF=lelie.tex - else - OF=`echo $OF2 | sed -e "s/\\";.*$//" | sed -e "s/^.*\\"//"` - fi - if [ "$OF2" = "" ] - then - OF=lelie.tex - fi - fi - # - # Remove the output file, to avoid being misled by an old one - # -# if [ -f $OF ] -# then -# rm $OF -# fi - # - # Run lilypond - exit if unsuccessfull - # - lilypond $IF || exit 3 # # Check if output file is generated # - if [ ! -f $OF ] - then - cat << EOF - -$0 - hmm, I could not find the output file $OF - -EOF - exit 4 - fi -fi -# -# Find textwidth -# -if [ "$IF" != "" ] -then - if [ -f $IF ] - then - TWL=`grep linewidth $IF` - TWS=`echo $TWL | grep -v "^%"` - if [ "$TWS" != "" ] + for File in $OF + do + $debug_echo "--- "$File + if [ ! -f $File ] then - TW=`echo $TWS | sed -e s/^.*=// | sed -e s/";.*$"// | \\ - sed -e s/.mm/mm/ | sed -e s/.cm/cm/ | sed -e s/.p/p/` - case $TW in - *mm) - ;; - *cm) - ;; - *pt) - ;; - *) - TW=$TW"pt" - ;; - esac - else - TW=15.5cm + $debug_echo $IDENTIFICATION": hmm, I could not find the output file "$File + exit 4 fi - fi -fi -# -# LaTeX file name -# -if [ "$KEEP" != "Y" ] -then - if [ "$TMP" = "" ] - then - TMP=/tmp - fi - if [ ! -d $TMP ] - then - cat << EOF - -$0 - temporary directory $TMP not found, set to /tmp - -EOF - TMP=/tmp - fi -# - BN=`basename $OF .tex` - FN=$BN.$$ - LF=$TMP/$FN.tex -else - BN=`basename $OF .tex` - FN=$BN.$$ - LF=$FN.tex -fi -# -# Find if a paper size is defined -# -if [ "$PSZ" = "" ] -then - PSZ=`egrep ".def.mudelapapersize" $OF | \\ - sed -e s/.def.mudelapapersize// | \\ - sed -e s/^{// | sed -e s/}.*$//` -fi - -if [ "$PSZ" != "" ] -then - PAPER="["$PSZ"]" -fi - -# -# Find if a language is defined -# -if [ "$LNG" = "" ] -then - LNG=`egrep ".def.mudelalanguage" $OF | \\ - sed -e s/.def.mudelalanguage// | \\ - sed -e s/^{// | sed -e s/}.*$//` -fi -if [ "$LNG" != "" ] -then - LLNG="\usepackage["$LNG"]{babel}" -else - LLNG="%" -fi - -# -# Find if a textwidth is defined -# -TWN=`egrep ".def.mudelapaperlinewidth" $OF | \\ - sed -e s/.def.mudelapaperlinewidth// | \\ - sed -e s/^{// | sed -e s/}.*$//` -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 + 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 @@ -418,28 +386,31 @@ $LLNG \input titledefs \begin{document} EOF -# -# Include \def\mudela-definitions -# -for L in $MU_DEF -do - LL=`grep ".def."$L $OF` - if [ "$LL" != "" ] - then - LLL=`echo $LL | sed -e s/^.def.$L// | \\ - sed -e s/^{// | sed -e s/}.*$//` - if [ "$LLL" != "" ] - then - echo '\'$L'{'$LLL'}%' >> $LF - fi - fi -done -# -cat << EOF >> $LF + # + # 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 -\input{$OF} EOF -for EX in $*; do echo "\input{"$EX"}%" >> $LF; done + fi + cat << EOF >> $LF +\input{$File} +EOF + done +done cat << EOF >> $LF \vfill\hfill{(\LilyIdString)} \end{document} @@ -448,14 +419,6 @@ EOF # Run LaTeX # latex $LF || exit 5 -#latex $LF -cat << EOF - - -Take care - LaTeX exit value check temporarily omitted! - - -EOF # # Rename dvi file # @@ -475,7 +438,7 @@ fi # cat << EOF -$0 - dvi file name is $BN.dvi +$IDENTIFICATION: dvi file name is $BN.dvi EOF # OK - finished diff --git a/bin/make-website.py b/bin/make-website.py index e0f8480ac1..8effeebe40 100644 --- a/bin/make-website.py +++ b/bin/make-website.py @@ -80,21 +80,22 @@ def my_system(cmds): base="lilypond/"; examples=["twinkle-pop", - "wtk1-fugue2", - "standchen-16", - "standchen-20", - "wtk1-prelude1", - "toccata-fuga-E", - "scsii-menuetto", - "cadenza", - "gallina", - "twinkle", - "collisions", - "font16", - "font20", - #"scales", - "rhythm", - "multi"] + "wtk1-fugue2", + "standchen-16", + "standchen-20", + "standje", + "wtk1-prelude1", + "toccata-fuga-E", + "scsii-menuetto", + "cadenza", + "gallina", + "twinkle", + "collisions", + "font16", + "font20", + #"scales", + "rhythm", + "multi"] def gen_html(): print 'generating HTML' diff --git a/bin/out/dummy.dep b/bin/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/flower/TODO b/flower/TODO index 5468633cf7..e572af7954 100644 --- a/flower/TODO +++ b/flower/TODO @@ -3,7 +3,6 @@ * Unicode support in strings * write a decent Dictionary - - write a String_hash template - write a Pointer_hash template * Array::slice() upper too diff --git a/flower/include/dictionary.hh b/flower/include/dictionary.hh index 11bb27329b..87af9f9f7a 100644 --- a/flower/include/dictionary.hh +++ b/flower/include/dictionary.hh @@ -13,6 +13,21 @@ #include "string.hh" #include "assoc.hh" +/** + UGH: write a String_hash template, + + SEE: + + #include + + ENTRY *hsearch(ENTRY item, ACTION action); + + int hcreate (unsigned nel); + + void hdestroy (void); + + (should be frobnified to allow multiple hashes) + */ template class Dictionary : public Assoc { diff --git a/flower/include/libc-extension.hh b/flower/include/libc-extension.hh index 3f94a03a0e..975950d4bb 100644 --- a/flower/include/libc-extension.hh +++ b/flower/include/libc-extension.hh @@ -16,7 +16,7 @@ char* strnlwr (char* start_l ,int n); char* strnupr (char* start_l, int n); #if !HAVE_MEMMEM // GNU extension. -char *memmem (Byte const * haystack, int haystack_len, +Byte *memmem (Byte const * haystack, int haystack_len, Byte const *needle, int needle_len); #endif HAVE_MEMMEM diff --git a/flower/include/out/dummy.dep b/flower/include/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/flower/out/dummy.dep b/flower/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/flower/test/out/dummy.dep b/flower/test/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/init/english.ly b/init/english.ly deleted file mode 100644 index d876d29c6f..0000000000 --- a/init/english.ly +++ /dev/null @@ -1,13 +0,0 @@ - -% -% f = flat, s = sharp. -% -english_names = notenames { - "cff" 0 -2 "cf" 0 -1 "c" 0 0 "cs" 0 1 "css" 0 2 - "dff" 1 -2 "df" 1 -1 "d" 1 0 "ds" 1 1 "dss" 1 2 - "eff" 2 -2 "ef" 2 -1 "e" 2 0 "es" 2 1 "ess" 2 2 - "fff" 3 -2 "ff" 3 -1 "f" 3 0 "fs" 3 1 "fss" 3 2 - "gff" 4 -2 "gf" 4 -1 "g" 4 0 "gs" 4 1 "gss" 4 2 - "aff" 5 -2 "af" 5 -1 "a" 5 0 "as" 5 1 "ass" 5 2 - "bff" 6 -2 "bf" 6 -1 "b" 6 0 "bs" 6 1 "bss" 6 2 -} diff --git a/init/engraver.ly b/init/engraver.ly index e8869c0de9..7553bd0cde 100644 --- a/init/engraver.ly +++ b/init/engraver.ly @@ -29,6 +29,7 @@ Voice = \translator { \consists "Script_engraver"; \consists "Rhythmic_column_engraver"; \consists "Slur_engraver"; + \consists "Plet_engraver"; \accepts "Thread"; } @@ -68,6 +69,7 @@ Lyric_voice = \consists "Lyric_engraver"; \consists "Line_group_engraver"; \consists "Beam_req_swallow_translator"; + \consists "Plet_swallow_engraver"; } Lyrics = \translator { diff --git a/init/feta20.ly b/init/feta20.ly index dcf020e145..b11fd20be0 100644 --- a/init/feta20.ly +++ b/init/feta20.ly @@ -4,10 +4,10 @@ % input from out/feta20.log % name=\symboltables { "rests" = \table { - "0" "\\wholerest" -0.00\pt 7.50\pt -3.12\pt 0.00\pt - "1" "\\halfrest" -0.00\pt 7.50\pt -0.00\pt 3.12\pt - "0o" "\\outsidewholerest" -3.12\pt 10.62\pt -3.12\pt 0.50\pt - "1o" "\\outsidehalfrest" -3.12\pt 10.62\pt -0.50\pt 3.12\pt + "0" "\\wholerest" -0.00\pt 7.50\pt -3.13\pt 0.00\pt + "1" "\\halfrest" -0.00\pt 7.50\pt -0.00\pt 3.13\pt + "0o" "\\outsidewholerest" -3.13\pt 10.62\pt -3.13\pt 0.50\pt + "1o" "\\outsidehalfrest" -3.13\pt 10.62\pt -0.50\pt 3.13\pt "2" "\\quartrest" -0.00\pt 5.40\pt 3.75\pt 18.00\pt "3" "\\eighthrest" -0.00\pt 6.67\pt 5.00\pt 14.21\pt "4" "\\sixteenthrest" -0.00\pt 7.76\pt -0.00\pt 14.21\pt @@ -23,7 +23,7 @@ "2" "\\sharpsharp" -0.00\pt 5.00\pt -2.50\pt 2.50\pt } "dots" = \table { - "dot" "\\dot" -0.00\pt 2.25\pt -1.12\pt 1.12\pt + "dot" "\\dot" -0.00\pt 2.25\pt -1.13\pt 1.13\pt "repeatcolon" "\\repeatcolon" -0.00\pt 2.25\pt -2.50\pt 2.50\pt } "balls" = \table { diff --git a/init/italian.ly b/init/italian.ly new file mode 100644 index 0000000000..dd807abf22 --- /dev/null +++ b/init/italian.ly @@ -0,0 +1,49 @@ +%{ + Common italian names for notes. "b" means flat (bemolle), "d" means sharp (diesis) + Adapted from dutch.ly. + + English: a b c d e f g + Italian: la si do re mi fa sol + + For french naming just change 'do' in 'ut'. +%} + +% contributed by Paolo Zuliani + +\notenames { + dobb = \melodic_request { -1 0 -2 } + dob = \melodic_request { -1 0 -1 } + do = \melodic_request { -1 0 0 } + dod = \melodic_request { -1 0 1 } + dodd = \melodic_request { -1 0 2 } + rebb = \melodic_request { -1 1 -2 } + reb = \melodic_request { -1 1 -1 } + re = \melodic_request { -1 1 0 } + red = \melodic_request { -1 1 1 } + redd = \melodic_request { -1 1 2 } + mibb = \melodic_request { -1 2 -2 } + mib = \melodic_request { -1 2 -1 } + mi = \melodic_request { -1 2 0 } + mid = \melodic_request { -1 2 1 } + midd = \melodic_request { -1 2 2 } + fabb = \melodic_request { -1 3 -2 } + fab = \melodic_request { -1 3 -1 } + fa = \melodic_request { -1 3 0 } + fad = \melodic_request { -1 3 1 } + fadd = \melodic_request { -1 3 2 } + solbb = \melodic_request { -1 4 -2 } + solb = \melodic_request { -1 4 -1 } + sol = \melodic_request { -1 4 0 } + sold = \melodic_request { -1 4 1 } + soldd = \melodic_request { -1 4 2 } + labb = \melodic_request { -1 5 -2 } + lab = \melodic_request { -1 5 -1 } + la = \melodic_request { -1 5 0 } + lad = \melodic_request { -1 5 1 } + ladd = \melodic_request { -1 5 2 } + sibb = \melodic_request { -1 6 -2 } + sib = \melodic_request { -1 6 -1 } + si = \melodic_request { -1 6 0 } + sid = \melodic_request { -1 6 1 } + sidd = \melodic_request { -1 6 2 } +} diff --git a/init/lily-init.ly b/init/lily-init.ly index 8b19863c64..97c252cbd9 100644 --- a/init/lily-init.ly +++ b/init/lily-init.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "0.1.7"; +\version "0.1.8"; breve = \duration { -1 0 } longa = \duration { -2 0 } diff --git a/init/out/dummy.dep b/init/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/init/table20.ly b/init/table20.ly index b641adb469..73f4326504 100644 --- a/init/table20.ly +++ b/init/table20.ly @@ -12,6 +12,7 @@ table_twenty = % index TeXstring, xmin xmax ymin ymax "style" = \table { + "bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt "roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt @@ -19,7 +20,6 @@ table_twenty = } "dynamics" = \table { - "mf" "\dynmf" "fff" "\dynfff" "ff" "\dynff" @@ -31,7 +31,6 @@ table_twenty = "fp" "\dynfp" "sf" "\dynsf" "sfz" "\dynsfz" - } "align" = \table { "-1" "\leftalign{%}" diff --git a/input/beams.ly b/input/beams.ly index 64db731f8e..e821fb164b 100644 --- a/input/beams.ly +++ b/input/beams.ly @@ -7,7 +7,7 @@ copyright = "PD"; TestedFeatures = "beams and beamflags"; } -\version "0.1.7"; +\version "0.1.8"; \score{ \melodic { \multi 3 < diff --git a/input/cadenza.ly b/input/cadenza.ly index 1b46d34740..a4e49199f6 100644 --- a/input/cadenza.ly +++ b/input/cadenza.ly @@ -13,7 +13,7 @@ Tested Features: cadenza mode Ugh.. Wish we had grace notes.... It adds another dimension to this piece of music. %} -\version "0.1.7"; +\version "0.1.8"; cad = \melodic { diff --git a/input/collisions.ly b/input/collisions.ly index cf6c5ad39d..ac8d5db146 100644 --- a/input/collisions.ly +++ b/input/collisions.ly @@ -5,7 +5,7 @@ enteredby = "HWN,JCN"; copyright = "public domain"; Tested = "test the Collision resolution "; } -\version "0.1.7"; +\version "0.1.8"; diff --git a/input/coriolan-alto.ly b/input/coriolan-alto.ly index 9585e1fb7d..317c4e9953 100644 --- a/input/coriolan-alto.ly +++ b/input/coriolan-alto.ly @@ -16,7 +16,7 @@ TestedFeatures: % (maybe even sooner :-) % -\version "0.1.7"; +\version "0.1.8"; alto1 = \melodic{ \meter 4/4; diff --git a/input/font-body.ly b/input/font-body.ly index cfb563d364..a7dd41d964 100644 --- a/input/font-body.ly +++ b/input/font-body.ly @@ -1,4 +1,4 @@ -\version "0.1.7"; +\version "0.1.8"; FontBody= \melodic{ \octave c'; \bar "|:"; diff --git a/input/font.ly b/input/font.ly index 7ec3ada723..c683dc7362 100644 --- a/input/font.ly +++ b/input/font.ly @@ -7,9 +7,9 @@ description = "This file tests the Feta music font"; % "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "0.1.7"; +\version "0.1.8"; -\include "font-body.ly"; +\include "font-body.ly" \score{ \paper{ % don't change this. diff --git a/input/font16.ly b/input/font16.ly index 42b4cfe103..d836e27edb 100644 --- a/input/font16.ly +++ b/input/font16.ly @@ -7,7 +7,7 @@ description = "This file tests the Feta music font"; % "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "0.1.7"; +\version "0.1.8"; \include "font-body.ly" \score{ diff --git a/input/gallina.ly b/input/gallina.ly index 4f47a5cf1c..a45ce1d52f 100644 --- a/input/gallina.ly +++ b/input/gallina.ly @@ -38,7 +38,7 @@ part of the basso continuo --HWN %} -\version "0.1.7"; +\version "0.1.8"; vi1=\melodic{ \meter 4/4; diff --git a/input/gourlay.ly b/input/gourlay.ly index 70569448a8..26542f3b70 100644 --- a/input/gourlay.ly +++ b/input/gourlay.ly @@ -1,50 +1,10 @@ -\header{ -enteredby jcn -copyright PD -TestedFeatures This file tests some nasty Gourlay spacings -} - -\version "0.1.6"; - -\score{ -% huh? -% \multi 2 \melodic < \octave c''; - \melodic \multi 2 < \octave c''; - { \stemup; d2 d | d d | d4 d2. | } - \octave c'; - % huh, plet broken? -% { \stemdown; g4 g g g | \plet 2/3; g2 g2 g2 \plet 1/1; | g4. g8 g2 | } - { \stemdown; g4 g g g | g2*2/3 g2*2/3 g2*2/3 | g4. g8 g2 | } - > - \paper{ - linewidth = 20.\cm; - } -} - -\score{ -% huh? -% \multi 2 \melodic < \octave c''; - \melodic \multi 2 < \octave c''; - { \stemup; d2 d | d d | d4 d2. | } - \octave c'; - % huh, plet broken? -% { \stemdown; g4 g g g | \plet 2/3; g2 g2 g2 \plet 1/1; | g4. g8 g2 | } - { \stemdown; g4 g g g | g2*2/3 g2*2/3 g2*2/3 | g4. g8 g2 | } - > - \paper{ - linewidth = 4.\cm; - \output "lelie1.tex"; - } - -} - \header{ enteredby = "jcn"; copyright = "PD"; TestedFeatures = "This file tests some nasty Gourlay spacings"; } -\version "0.1.7"; +\version "0.1.8"; %{ @@ -56,9 +16,7 @@ This is taken from [Gourlay]'s paper on breaking lines \melodic \multi 2 < \octave c''; { \stemup; d2 d | d d | d4 d2. | } \octave c'; - % huh, plet broken? -% { \stemdown; g4 g g g | \plet 2/3; g2 g2 g2 \plet 1/1; | g4. g8 g2 | } - { \stemdown; g4 g g g | g2*2/3 g2*2/3 g2*2/3 | g4. g8 g2 | } + { \stemdown; g4 g g g | \[2/3 g2 g2 g2 \] | g4. g8 g2 | } > \paper{ linewidth = 4.\cm; diff --git a/input/keys.ly b/input/keys.ly index 05ec062c27..67ee8f5a91 100644 --- a/input/keys.ly +++ b/input/keys.ly @@ -1,4 +1,4 @@ -\version "0.1.7"; +\version "0.1.8"; blah = \melodic{ diff --git a/input/kortjakje.ly b/input/kortjakje.ly index b370743280..25ed787784 100644 --- a/input/kortjakje.ly +++ b/input/kortjakje.ly @@ -11,7 +11,7 @@ copyright = "public domain"; Tested Features: example file with comments %} -\version "0.1.7"; +\version "0.1.8"; % the % is a comment. diff --git a/input/multi.ly b/input/multi.ly index d63ddb0ab5..0d8a890cca 100644 --- a/input/multi.ly +++ b/input/multi.ly @@ -10,7 +10,7 @@ Tested Features: \multi %} -\version "0.1.7"; +\version "0.1.8"; \score{ \melodic diff --git a/input/out/dummy.dep b/input/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/input/pedal.ly b/input/pedal.ly index 33c736c3e8..d2a9c01c2a 100644 --- a/input/pedal.ly +++ b/input/pedal.ly @@ -24,7 +24,7 @@ % \lbheel \lbheel \lfheel \lftoe % \rbheel \rbtoe \rfheel \rftoe -\version "0.1.7"; +\version "0.1.8"; \score{ \melodic { diff --git a/input/rhythm.ly b/input/rhythm.ly index 8b6ecb031a..11569bf0f1 100644 --- a/input/rhythm.ly +++ b/input/rhythm.ly @@ -7,7 +7,7 @@ TestedFeatures = "multiple meters, beaming, unsynced bars, userdefd engravers"; -\version "0.1.7"; +\version "0.1.8"; ritme = \melodic{ %\octave ; \partial 8; diff --git a/input/scales.ly b/input/scales.ly index a6b2b48367..3e715106f9 100644 --- a/input/scales.ly +++ b/input/scales.ly @@ -12,7 +12,7 @@ copyright = "public domain"; % scales with accents. % -\version "0.1.7"; +\version "0.1.8"; blah = \melodic { \meter 6/8; \octave 'c ; diff --git a/input/scripts.ly b/input/scripts.ly index ad6503efb7..7198bc1b83 100644 --- a/input/scripts.ly +++ b/input/scripts.ly @@ -1,5 +1,5 @@ -\version "0.1.7"; +\version "0.1.8"; blah = \melodic { diff --git a/input/scsii-menuetto.ly b/input/scsii-menuetto.ly index 363390eb8c..91c488de41 100644 --- a/input/scsii-menuetto.ly +++ b/input/scsii-menuetto.ly @@ -15,7 +15,7 @@ copyright = "public domain"; Tested Features:breaking algorithm, chords, multivoice, accents %} -\version "0.1.7"; +\version "0.1.8"; %% Stuff from MPP version % \lefttitle{Menuetto} diff --git a/input/sleur.ly b/input/sleur.ly index bcb6e45846..d6e30d3b2f 100644 --- a/input/sleur.ly +++ b/input/sleur.ly @@ -5,7 +5,7 @@ TestedFeatures = "This file tests Feta embedded slurs" "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "0.1.7"; +\version "0.1.8"; shortlong = \melodic{ c4()c( c c | diff --git a/input/slurs.ly b/input/slurs.ly index caf87a3f4c..ef66c1e9e8 100644 --- a/input/slurs.ly +++ b/input/slurs.ly @@ -1,5 +1,5 @@ -\version "0.1.7"; +\version "0.1.8"; \score{ \melodic{\octave c'; diff --git a/input/spacing.ly b/input/spacing.ly index 10bb206640..f92428fbcf 100644 --- a/input/spacing.ly +++ b/input/spacing.ly @@ -6,7 +6,7 @@ copyright = "public domain"; TestedFeatures = "This file tests various spacings"; } -\version "0.1.7"; +\version "0.1.8"; multipart = \melodic{ \multi 3 < diff --git a/input/standchen-16.ly b/input/standchen-16.ly index d8966dfbde..8c0bda8e20 100644 --- a/input/standchen-16.ly +++ b/input/standchen-16.ly @@ -9,6 +9,6 @@ description = "A schubert song in 16 pt"; copyright = "public domain"; } -\version "0.1.7"; +\version "0.1.8"; \include "standchen.ly" diff --git a/input/standchen-20.ly b/input/standchen-20.ly index ba4a3a043a..0f9dbee368 100644 --- a/input/standchen-20.ly +++ b/input/standchen-20.ly @@ -8,7 +8,7 @@ enteredby = "JCN"; copyright = "public domain"; description = "A schubert song in 20 pt"; } -\version "0.1.7"; +\version "0.1.8"; % fool make-website % \include "standchen.ly"; diff --git a/input/standchen.ly b/input/standchen.ly index 04cbe817cb..73792caa2d 100644 --- a/input/standchen.ly +++ b/input/standchen.ly @@ -14,7 +14,7 @@ multiple \paper{}s in one \score %} \include "paper20.ly" -\version "0.1.7"; +\version "0.1.8"; commands = \melodic{ \skip 2.*4; @@ -54,9 +54,8 @@ melodie = \melodic{ %%8 f2 r4 | %%9 - < { a'4.() g' [2/3 g'( f' )e' ]1/1 } - { cis'4. e'_"dolce" \plet 2/3; e' \plet 1/1; } > | + { cis'4. e'_"dolce" \[2/3 e' \] } > | %%10 < f'2. d'2. > | %%11 @@ -68,10 +67,7 @@ melodie = \melodic{ %%14 a2 r < { d'() c'4. g [2/3 bes a g ]1/1 } - { f \p () e4._"dolce" bes - \plet 2/3; g - \plet 1/1; - } > | + { f \p () e4._"dolce" bes \[2/3 g \] } > | %%16 < a2. f2. > | %%17 @@ -351,16 +347,16 @@ tekstI = \lyric{ _ _ _ _ _ _ % 5 - [2/3 Lei- se8 ]1/1 fleh-4. en8 - [2/3 mei- ne8 ]1/1 Lie- der8 _8 - Durch4. die8 [2/3 Nacht zu8 ]1/1 + \[2/3 Lei- se8 \] fleh-4. en8 + \[2/3 mei- ne8 \] Lie- der8 _8 + Durch4. die8 \[2/3 Nacht zu8 \] dir;2 _ _ _ _ _ _ _ % 11 - [2/3 In den8 ]1/1 stil-4. len8 - [2/3 Hain her-8 ]1/1 nie-4. der,8 - Lieb4. chen,8 [2/3 komm zu8 ]1/1 + \[2/3 In den8 \] stil-4. len8 + \[2/3 Hain her-8 \] nie-4. der,8 + Lieb4. chen,8 \[2/3 komm zu8 \] mir!2 _ _ _ _ _ _ _ @@ -368,7 +364,7 @@ tekstI = \lyric{ % 17 Fl\"us-8. ternd16 schlan-4. ke8 Wip-8. fel16 rau-4. schen8 - [2/3 In des8 ]1/1 Mon-4. des8 + \[2/3 In des8 \] Mon-4. des8 Licht;2. _ _ _ _ _ _ @@ -376,7 +372,7 @@ tekstI = \lyric{ % 23 Des8. Ver-16 r\"a-4. ters8 feind-8. lich16 Lau-4. schen8 - [2/3 F\"urch- te,8 ]1/1 Hol-4. de,8 + \[2/3 F\"urch- te,8 \] Hol-4. de,8 nicht.2. _ _ _ _ _ _ @@ -396,7 +392,7 @@ tekstI = \lyric{ mich!2 _ Be-8. bend16 harr' ich8 _8 dir8. ent-16 ge- gen!8 _8 - [2/3 Komm, be-8 ]1/1 gl\"u4. cke8 + \[2/3 Komm, be-8 \] gl\"u4. cke8 mich!2. _ _ _ _ _ _ % 47 @@ -418,17 +414,17 @@ tekstII = \lyric{ _ _ _ _ _ _ % 5 - [2/3 H\"orst die8 ]1/1 Nach-4. ti-8 - [2/3 gal- len8 ]1/1 schla- gen?8 _8 - Ach!4. sie8 [2/3 fleh- en8 ]1/1 + \[2/3 H\"orst die8 \] Nach-4. ti-8 + \[2/3 gal- len8 \] schla- gen?8 _8 + Ach!4. sie8 \[2/3 fleh- en8 \] dich,2 _ _ _ _ _ _ _ % 11 - [2/3 Mit der8 ]1/1 T\"o-4. ne8 - [2/3 s\"u\ss- en8 ]1/1 Kla-4. gen8 - Fleh-4. en8 [2/3 sie f\"ur8 ]1/1 + \[2/3 Mit der8 \] T\"o-4. ne8 + \[2/3 s\"u\ss- en8 \] Kla-4. gen8 + Fleh-4. en8 \[2/3 sie f\"ur8 \] mich.2 _ _ _ _ _ _ _ @@ -436,7 +432,7 @@ tekstII = \lyric{ % 17 Sie-8. ver-16 stehn4. des8 Bus-8. ens16 Seh-4. nen,8 - [2/3 Ken- nen8 ]1/1 Lieb-4. es-8 + \[2/3 Ken- nen8 \] Lieb-4. es-8 schmerz,2. _ _ _ _ _ _ @@ -444,7 +440,7 @@ tekstII = \lyric{ % 23 R\"uh-8. ren16 mit4. den8 Sil-8. ber-16 t\"o-4. nen8 - [2/3 Jed- es8 ]1/1 wei-4. che8 + \[2/3 Jed- es8 \] wei-4. che8 Herz.2. _ _ _ _ _ _ diff --git a/input/standje.ly b/input/standje.ly index 5d3481ece6..e6d29fd994 100644 --- a/input/standje.ly +++ b/input/standje.ly @@ -1,5 +1,5 @@ \header{ -filename = "standchen.ly"; +filename = "standje.ly"; title = "St\"andchen (Serenade) \"Leise flehen meine Lieder\""; opus = "D. 957 No. 4"; composer = "Franz Schubert (1797-1828)" @@ -9,49 +9,45 @@ copyright = "public domain"; } %{ - Tested Features: multivoice, accents, lyrics, chords, piano music, + Tested Features@ multivoice, accents, lyrics, chords, piano music, multiple \paper{}s in one \score %} -\version "0.1.7"; +\version "0.1.8"; $vocal_verse1 = \melodic{ \octave c'; % ugh: treble/bass % \clef treble; \clef violin; - % ugh: '3' of plet should hang over middle note - % ugh: barcheck fails if i write 'g8' below: -% [2/3 g8( )as]1/1 \plet 2/3; g8 \plet 1/1; c'4. g8 | - % anyway, for typping this plet stuff sucks - [2/3 g8( )as]1/1 \plet 2/3; g \plet 1/1; c'4. g8 | - [2/3 f8( )g]1/1 \plet 2/3; f \plet 1/1; c'4 f8 r | - g4.-> f8 [2/3 f( )es]1/1 \plet 2/3; d \plet 1/1; | + [2/3 g8( )as] g \] c'4. g8 | + [2/3 f8( )g] f \] c'4 f8 r | + g4.-> f8 [2/3 f( )es] d \] | es2 r4 | % ugh: a whole should be a measure %r1 | r2. | r2. | - [2/3 g8( )as]1/1 \plet 2/3; g \plet 1/1; es'4. g8 | - [2/3 f8( )g]1/1 \plet 2/3; f \plet 1/1; d'4. c'8 | - bes4. as8 [2/3 as( )g]1/1 \plet 2/3; f \plet 1/1; | + [2/3 g8( )as] g \] es'4. g8 | + [2/3 f8( )g] f \] d'4. c'8 | + bes4. as8 [2/3 as( )g] f \] | g2 r4 | r2. | r2. | g8. b16 es'4. d'8 | c'8. g16 es4. c8 | - % [as32\grace( bes32\grace] ) - [2/3 as8( )g]1/1 \plet 2/3; as \plet 1/1; c'4. as8 | + % [as3 2\grace( bes3 2\grace] ) + [2/3 as8( )g] as \] c'4. as8 | g2. | - %[f32\grace( g] ) - [2/3 f8( )e]1/1 \plet 2/3; f \plet 1/1; as4. f8 | + %[f3 2\grace( g] ) + [2/3 f8( )e] f \] as4. f8 | es!2. | g8. b16 es'4. d'8 | c'8. g16 e4. c8 | - % [a32\grace b] ) - [2/3 a!8( ) gis]1/1 \plet 2/3; a \plet 1/1; c'4. a8 | + % [a3 2\grace b] ) + [2/3 a!8( ) gis] a \] c'4. a8 | g!2. | - [2/3 d'8\f cis']1/1 \plet 2/3; d \plet 1/1; f'4. b8 | + [2/3 d'8\f cis'] d \] f'4. b8 | c'2. | r2. | r2. | @@ -59,32 +55,32 @@ $vocal_verse1 = \melodic{ $lyric_verse1 = \lyric{ % 5 - [2/3 Lei-4 se8 ]1/1 fleh-4. en8 | - [2/3 mei-4 ne8 ]1/1 Lie-4 der8 _8 | - Durch4. die8 [2/3 Nacht4 zu8 ]1/1 | + \[2/3 Lei-4 se8 \] fleh-4. en8 | + \[2/3 mei-4 ne8 \] Lie-4 der8 _8 | + Durch4. die8 \[2/3 Nacht4 zu8 \] | dir;2 _4 | _4 _ _ | _ _ _ | % 11 - [2/3 In4 den8 ]1/1 stil-4. len8 | - [2/3 Hainr4 her-8 ]1/1 nie-4. der,8 | - Lieb4. chen,8 [2/3 komm4 zu8 ]1/1 | + \[2/3 In4 den8 \] stil-4. len8 | + \[2/3 Hainr4 her-8 \] nie-4. der,8 | + Lieb4. chen,8 \[2/3 komm4 zu8 \] | mir!2 _4 | - _4 _ _ | + _4 _ _ | _ _ _ | % 17 Fl\"us-8. ternd16 schlan-4. ke8 | Wip-8. fel16 rau-4. schen8 | - [2/3 In4 des8 ]1/1 Mon-4. des8 | + \[2/3 In4 des8 \] Mon-4. des8 | Licht;2. | - _4 _ _ | _4 _ _ | -% 23 + _4 _ _ | +% 23 Des8. Ver-16 r\"a-4. ters8 | feind-8. lich16 Lau-4. schen8 | - [2/3 F\"urch-4 te,8 ]1/1 Hol-4. de,8 | + \[2/3 F\"urch-4 te,8 \] Hol-4. de,8 | nicht,2. | - [2/3 f\"urch-4 te,8 ]1/1 Hol-4. de,8 | + \[2/3 f\"urch-4 te,8 \] Hol-4. de,8 | nicht.2. | _4 _ _ _ _ _ @@ -94,8 +90,8 @@ $treble_intro = \melodic{ \octave c'; \clef violin; % ugh: i'd like to type this! - %r8 [<'g-. c-.> <'g-. c-.> <'g-. c-.>] | - r8 <['g-. c-.> <'g-. c-.> <'g-. c-.]> | + %r8 [<'g-. c-.> <'g-. c-.> <'g-. c-.>] | + r8 <['g-. c-.> <'g-. c-.> <'g-. c-.]> | r8 <['as-. c-.> <'as-. c-.> <'as-. c-.]> | r8 <['as-. c-.> <'as-. c-.> <'as-. c-.]> | r8 <['g-. 'b-.> <'b-. d-.> <'g-. 'b-.> <'b-. d-.> <'g-. 'b-.]> | @@ -107,28 +103,33 @@ $treble_verse1 = \melodic{ \clef violin; r8 <['g c> <'g c> <'g c]> | r8 <['f c> <'f c> <'f c]> | - r8 <['f 'g b> <'g b d> <'f 'g b> <'g b d> <'f 'g b]> | + r8 <['f 'g 'b> <'g 'b d> <'f 'g 'b> <'g 'b d> <'f 'g 'b]> | r8 <['es 'g c> <'g c es> <'es 'g c> <'g c es> <'es 'g c]> | <)f'8 d'> <[2/3 f' d'> | + | r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | - r8 <['g c> <'g c> <'g c]> | + r8 <['f c> <'f c> <'f c]> | + r8 <['f 'as 'bes> <'as 'bes d> <'f 'g 'bes> <'g 'bes d> <'f 'g 'bes]> | + r8 <['es 'g 'bes> <'g 'bes es> <'es 'g 'bes> <'g 'bes es]> + <{ es'( | )bes4. as8}{ c'( | )d4.( )f8 } > + < [2/3 f as> | + | + r8 <['f 'g> <'g 'b> <'f 'g> <'g 'b> <'f 'g]> | + r8 <['es 'g> <'g c> <'es 'g> <'g c> <'es 'g]> | + r8\pp <['es 'as c> <'as c es> <'es 'as c> <'as c es> <'es 'as c]> | + r8 <['es 'g 'bes> <'g 'bes 'es> <'es 'g 'bes> <'g 'bes 'es> <'es 'g 'bes]> | + % [as3 2\grace( bes ) + [2/3 as8(( g )as]1/1 c'4.-> ) as8 | + g2. | + r8 <['f 'g> <'g 'b> <'f 'g> <'g 'b> <'f 'g]> | + r8 <['e 'g> <'g c> <'e 'g> <'g c> <'e 'g]> | + r8 <['f 'a c> <'a c f> <'f 'a c> <'a c f> <'f 'a c]> | + r8 <['e 'g c> <'g c e> <'e 'g c> <'g c e> <'e 'g c]> | + <{[2/3 f'8\f( e f']1/1 a'4. )f'8 } {\[2/3 f e f \] a4. f8 } > | + r4 | +% <{as!2\mf( [c'8. )as16]} {f2 as8( )f}> | + as!2\mf( [c'8. )as16] | + <[e8-.( g-.> <)e8-. g-.]> | } $bass_intro = \melodic{ @@ -144,10 +145,10 @@ $bass_verse1 = \melodic{ \octave c; \clef bass; <'c2 c> r4 | + <'as2 as> r4 | + <'g2 g> r4 | <'c2 c> r4 | - <'c2 c> r4 | - <'c2 c> r4 | - <'c2 c> r4 | + <'g8 g> <[g' d''> | <'c2 c> r4 | <'c2 c> r4 | <'c2 c> r4 | @@ -170,23 +171,29 @@ $bass_verse1 = \melodic{ } -global= \melodic {\meter 3/4; \key bes es as; } +global= \melodic {\meter 3 /4; \key bes es as; } \score{ \melodic< - \type Lyrics { \skip 4 * 12; \$lyric_verse1 } - \type Staff - { \skip 4 * 12; \$vocal_verse1 } + \type Lyrics { + \meter 3 /4; \skip 4 * 12; \$lyric_verse1 + } + \type Staff { < + \global + { \skip 4 * 12; \$vocal_verse1 } + > } % i want a (grand) staff!!! \type Grandstaff < - < { \$treble_intro \$treble_verse1 } - \global + < + \global + { \$treble_intro \$treble_verse1 } > - < \global - { \$bass_intro \$bass_verse1 } + < + \global + { \$bass_intro \$bass_verse1 } > > > diff --git a/input/stem.ly b/input/stem.ly index 5442943342..ee58946ea1 100644 --- a/input/stem.ly +++ b/input/stem.ly @@ -8,7 +8,7 @@ of beams"; } -\version "0.1.7"; +\version "0.1.8"; beamintervals = \melodic{ \meter 7/4; diff --git a/input/toccata-fuga-E.ly b/input/toccata-fuga-E.ly index 1bb3e31ba6..124d0e3855 100644 --- a/input/toccata-fuga-E.ly +++ b/input/toccata-fuga-E.ly @@ -20,7 +20,7 @@ copyright = "public domain"; %} -\version "0.1.7"; +\version "0.1.8"; toccata_commands = \melodic{ \meter 4/4; diff --git a/input/twinkle-pop.ly b/input/twinkle-pop.ly index fae537bf46..4d11d3a6e2 100644 --- a/input/twinkle-pop.ly +++ b/input/twinkle-pop.ly @@ -12,7 +12,7 @@ copyright = "public domain"; Tested Features lyrics and chords %} -\version "0.1.7"; +\version "0.1.8"; melodie = \melodic { \clef"violin"; diff --git a/input/twinkle.ly b/input/twinkle.ly index e6814ce348..050bfda518 100644 --- a/input/twinkle.ly +++ b/input/twinkle.ly @@ -15,7 +15,7 @@ copyright = "public domain"; Tested Features: lyrics, interleaving lyrics and staffs %} -\version "0.1.7"; +\version "0.1.8"; melody = \melodic{ \clef violin; diff --git a/input/wtk1-fugue1.ly b/input/wtk1-fugue1.ly index 646c75ff30..e48c55b189 100644 --- a/input/wtk1-fugue1.ly +++ b/input/wtk1-fugue1.ly @@ -11,7 +11,7 @@ copyright = "Public Domain"; %{ %} -\version "0.1.7"; +\version "0.1.8"; global = diff --git a/input/wtk1-fugue2.ly b/input/wtk1-fugue2.ly index 50a2166a00..2d90c2ad90 100644 --- a/input/wtk1-fugue2.ly +++ b/input/wtk1-fugue2.ly @@ -12,7 +12,7 @@ copyright = "Public Domain"; Tested Features: stem direction, multivoice, forced accidentals. %} -\version "0.1.7"; +\version "0.1.8"; % should add \need{dutch.ini} for % correct parsing of note names diff --git a/input/wtk1-prelude1.ly b/input/wtk1-prelude1.ly index 5ed120b09d..dea0195fa0 100644 --- a/input/wtk1-prelude1.ly +++ b/input/wtk1-prelude1.ly @@ -8,7 +8,7 @@ enteredby = "Shay Rojansky"; copyright = "Public Domain"; } -\version "0.1.7"; +\version "0.1.8"; global = \melodic { diff --git a/lib/include/out/dummy.dep b/lib/include/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/out/dummy.dep b/lib/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lily/VERSION b/lily/VERSION index 0c90d98cb4..e0d3c8cadf 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -1,4 +1,4 @@ MAJOR_VERSION = 0 MINOR_VERSION = 1 -PATCH_LEVEL = 41 +PATCH_LEVEL = 42 MY_PATCH_LEVEL = diff --git a/lily/beam-grav.cc b/lily/beam-grav.cc index 2d931e150f..6592166fa2 100644 --- a/lily/beam-grav.cc +++ b/lily/beam-grav.cc @@ -12,8 +12,6 @@ #include "beam.hh" #include "musical-request.hh" #include "grouping.hh" -#include "text-spanner.hh" -#include "text-def.hh" #include "p-col.hh" Beam_engraver::Beam_engraver() @@ -21,7 +19,6 @@ Beam_engraver::Beam_engraver() span_reqs_drul_[LEFT] = span_reqs_drul_[RIGHT] =0; beam_p_ =0; current_grouping_p_ =0; - plet_spanner_p_ =0; } bool @@ -50,61 +47,39 @@ Beam_engraver::do_try_request(Request*r) void Beam_engraver::do_process_requests() { - if ( !beam_p_ && span_reqs_drul_[LEFT]) - { - current_grouping_p_ = new Rhythmic_grouping; - beam_p_ = new Beam; - if (span_reqs_drul_[LEFT]->nplet) - { - plet_spanner_p_ = new Text_spanner; - Text_def *defp = new Text_def; - plet_spanner_p_->set_support (beam_p_); - - defp->align_i_ = 0; - defp->text_str_ = span_reqs_drul_[LEFT]->nplet; - defp->style_str_="italic"; - plet_spanner_p_->spec_p_ = defp; - announce_element (Score_elem_info(plet_spanner_p_,0)); - } - - Scalar prop = get_property ("beamslopedamping"); - if (prop.isnum_b ()) - { - beam_p_->damping_i_ = prop; - } - - prop = get_property ("beamquantisaton"); - if (prop.isnum_b ()) - { - beam_p_->quantisation_ = (Beam::Quantise)(int)prop; - } - - announce_element (Score_elem_info (beam_p_, span_reqs_drul_[LEFT])); - } + if (beam_p_ || !span_reqs_drul_[LEFT]) + return; + + current_grouping_p_ = new Rhythmic_grouping; + beam_p_ = new Beam; + + Scalar prop = get_property ("beamslopedamping"); + if (prop.isnum_b ()) + beam_p_->damping_i_ = prop; + + prop = get_property ("beamquantisaton"); + if (prop.isnum_b ()) + beam_p_->quantisation_ = (Beam::Quantise)(int)prop; + + announce_element (Score_elem_info (beam_p_, span_reqs_drul_[LEFT])); } void Beam_engraver::do_pre_move_processing() { - if (beam_p_ && span_reqs_drul_[RIGHT]) - { - Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_; - rg_C->extend (current_grouping_p_->interval()); - beam_p_->set_grouping (*rg_C, *current_grouping_p_); - typeset_element (beam_p_); - beam_p_ = 0; - - delete current_grouping_p_; - current_grouping_p_ = 0; - - span_reqs_drul_[RIGHT] = - span_reqs_drul_[LEFT] = 0; - if (plet_spanner_p_) - { - typeset_element (plet_spanner_p_); - plet_spanner_p_ =0; - } - } + if (!beam_p_ || !span_reqs_drul_[RIGHT]) + return; + + Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_; + rg_C->extend (current_grouping_p_->interval()); + beam_p_->set_grouping (*rg_C, *current_grouping_p_); + typeset_element (beam_p_); + beam_p_ = 0; + + delete current_grouping_p_; + current_grouping_p_ = 0; + + span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0; } void diff --git a/lily/include/beam-grav.hh b/lily/include/beam-grav.hh index 027fd92679..81b68adfc1 100644 --- a/lily/include/beam-grav.hh +++ b/lily/include/beam-grav.hh @@ -20,7 +20,6 @@ class Beam_engraver : public Engraver { Drul_array span_reqs_drul_; Beam *beam_p_; - Text_spanner *plet_spanner_p_; Rhythmic_grouping *current_grouping_p_; public: diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 42be8366c2..48d8e98723 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -41,6 +41,7 @@ struct Beam; struct Beam_engraver; struct Beam_req; struct Blank_req; +struct Bow; struct Box; struct Break_align_item; struct Bracket_req; @@ -152,6 +153,9 @@ struct Paper_score; struct Paper_def; struct Partial_measure_req; struct Plet; +struct Plet_engraver; +struct Plet_req; +struct Plet_spanner; struct Pulk_voice; struct Pulk_voices; struct Rational; diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index 39dc5ae9b0..e5cf3f10e9 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -51,6 +51,7 @@ struct Lookup { Atom dots () const; Atom slur (Real &dy, Real &dx, Direction dir) const; + Atom plet (Real &dy, Real &dx, Direction dir) const; Atom tex_slur (int dy, Real &dx, Direction dir) const; Atom ps_slur (Real dy, Real dx, Real dir) const; Atom half_slur (int dy, Real &dx, Direction dir, int xpart) const; diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh index f53fc44de1..28fa8d04aa 100644 --- a/lily/include/musical-request.hh +++ b/lily/include/musical-request.hh @@ -37,6 +37,7 @@ public: virtual Dynamic_req* dynamic() { return 0; } virtual Absolute_dynamic_req * absdynamic() { return 0; } virtual Tie_req * tie() { return 0; } + virtual Plet_req* plet() { return 0; } virtual Span_dynamic_req * span_dynamic() { return 0; } virtual Abbreviation_req* abbrev() { return 0; } REQUESTMETHODS(Musical_req, musical); @@ -174,12 +175,9 @@ public: }; -/** Start / stop a beam at this note. if #nplet# is set, the staff -will try to put an appropriate number over the beam */ +/** Start / stop a beam at this note */ class Beam_req : public Span_req { public: - int nplet; - /* *************** */ REQUESTMETHODS(Beam_req,beam); @@ -213,6 +211,16 @@ public: }; +/// a plet (bracket with) number +class Plet_req : public Span_req { +public: + int plet_i_; + + REQUESTMETHODS(Plet_req,plet); + + Plet_req (); +}; + class Musical_script_req : public Musical_req, public Script_req { public: REQUESTMETHODS(Musical_script_req, musicalscript); diff --git a/lily/include/my-lily-parser.hh b/lily/include/my-lily-parser.hh index b0666e160a..b5cbd87154 100644 --- a/lily/include/my-lily-parser.hh +++ b/lily/include/my-lily-parser.hh @@ -66,7 +66,7 @@ public: void parser_error (String); void clear_notenames(); - Request* get_parens_request (char c); + Array* get_parens_request (int t); void set_debug(); void set_yydebug (bool); diff --git a/lily/include/out/dummy.dep b/lily/include/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lily/include/plet-swallow-engraver.hh b/lily/include/plet-swallow-engraver.hh new file mode 100644 index 0000000000..be361205c0 --- /dev/null +++ b/lily/include/plet-swallow-engraver.hh @@ -0,0 +1,28 @@ +/* + plet-swallow-engraver.hh -- declare Swallow_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#ifndef PLET_SWALLOW_ENGRAVER_HH +#define PLET_SWALLOW_ENGRAVER_HH + +#include "swallow-grav.hh" + +/** + This engraver swallows plets silently. + */ +class Plet_swallow_engraver : public Swallow_engraver +{ +public: + TRANSLATOR_CLONE(Plet_swallow_engraver); + DECLARE_MY_RUNTIME_TYPEINFO; + +protected: + virtual bool do_try_request (Request*); +}; + +#endif // PLET_SWALLOW_ENGRAVER_HH diff --git a/lily/include/text-def.hh b/lily/include/text-def.hh index 78dd152e9a..48faa16f15 100644 --- a/lily/include/text-def.hh +++ b/lily/include/text-def.hh @@ -14,7 +14,8 @@ class Text_def : public General_script_def { protected: - virtual Atom get_atom (Paper_def* p, Direction dir_) const; +// huh? move to public +// virtual Atom get_atom (Paper_def* p, Direction dir_) const; DECLARE_MY_RUNTIME_TYPEINFO; VIRTUAL_COPY_CONS(Text_def,General_script_def); public: @@ -29,6 +30,7 @@ public: String style_str_; virtual void do_print() const; + virtual Atom get_atom (Paper_def* p, Direction dir_) const; virtual ~Text_def() {}; virtual bool do_equal_b (const General_script_def*) const; Text_def(); diff --git a/lily/include/text-spanner.hh b/lily/include/text-spanner.hh index 9a6665625a..ab81d9099e 100644 --- a/lily/include/text-spanner.hh +++ b/lily/include/text-spanner.hh @@ -12,7 +12,7 @@ #include "text-def.hh" /** a spanner which puts texts on top of other spanners. Use for - triplets, eentweetjes, ottava, etc. */ + triplets, volta, ottava, etc. */ class Text_spanner : public Spanner { public: Directional_spanner * support_span_l_; diff --git a/lily/lexer.l b/lily/lexer.l index f2d6c9214e..851e21c2e1 100644 --- a/lily/lexer.l +++ b/lily/lexer.l @@ -82,6 +82,8 @@ RESTNAME [rs] NOTECOMMAND \\{A}+ LYRICS ({AA}|{TEX})[^0-9 \t\n\f]* ESCAPED [nt\\'"] +PLET \\\[ +TELP \\\] %% @@ -285,6 +287,14 @@ ESCAPED [nt\\'"] return c; } +{PLET} { + return yylval.i = PLET; +} + +{TELP} { + return yylval.i = TELP; +} + . { return yylval.c = YYText ()[0]; } diff --git a/lily/midi-def.cc b/lily/midi-def.cc index e7da659d19..0e85a4849f 100644 --- a/lily/midi-def.cc +++ b/lily/midi-def.cc @@ -53,7 +53,7 @@ void Midi_def::set_tempo (Moment one_beat_mom, int beats_per_minute_i) { Moment beats_per_second = Moment (beats_per_minute_i) / Moment (60); - whole_in_seconds_mom_ = 1/(beats_per_second * one_beat_mom); + whole_in_seconds_mom_ = Moment(1)/Moment(beats_per_second * one_beat_mom); } void diff --git a/lily/musical-request.cc b/lily/musical-request.cc index 0e3dd06ce8..bf2fe3590b 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -263,7 +263,6 @@ IMPLEMENT_IS_TYPE_B1(Beam_req,Span_req); Beam_req::Beam_req() { - nplet = 0; } void @@ -286,12 +285,23 @@ Abbreviation_beam_req::do_print () const } IMPLEMENT_IS_TYPE_B1(Slur_req,Span_req); - void Slur_req::do_print() const { } +IMPLEMENT_IS_TYPE_B1(Plet_req,Span_req); + +Plet_req::Plet_req () +{ + plet_i_ = 0; +} + +void +Plet_req::do_print () const +{ +} + /* *************** */ bool diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc index 7bddf702d1..2a8760ee52 100644 --- a/lily/my-lily-lexer.cc +++ b/lily/my-lily-lexer.cc @@ -48,7 +48,6 @@ static Keyword_ent the_key_tab[]={ {"output", OUTPUT}, {"partial", PARTIAL}, {"paper", PAPER}, - {"plet", PLET}, {"property", PROPERTY}, {"pt", PT_T}, {"score", SCORE}, diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc index 1c1f31860b..aaaf7201b2 100644 --- a/lily/my-lily-parser.cc +++ b/lily/my-lily-parser.cc @@ -225,79 +225,101 @@ My_lily_parser::get_note_element (Note_req *rq, Duration * duration_p) return v; } -Request* -My_lily_parser::get_parens_request (char c) +Array* +My_lily_parser::get_parens_request (int t) { - Request* req_p=0; - switch (c) + Array& reqs = *new Array; + switch (t) { - case '~': - req_p = new Tie_req; + reqs.push (new Tie_req); break; + case BEAMPLET: + case MAEBTELP: + { + Plet_req* p = new Plet_req; + p->plet_i_ = plet_.type_i_; + reqs.push (p); + } + /* fall through */ case '[': case ']': { if (!abbrev_beam_type_i_) { - Beam_req*b = new Beam_req; - int p_i=plet_.type_i_ ; // ugh . Should junk? - if (p_i!= 1) - b->nplet = p_i; - req_p = b; + reqs.push (new Beam_req); } else { Abbreviation_beam_req* a = new Abbreviation_beam_req; a->type_i_ = abbrev_beam_type_i_; - if (c==']') + if (t==']') abbrev_beam_type_i_ = 0; - req_p = a; + reqs.push (a); } } - break; + break; case '>': case '!': case '<': - req_p = new Span_dynamic_req; + reqs.push (new Span_dynamic_req); break; + case PLET: + case TELP: + { + Plet_req* p = new Plet_req; + p->plet_i_ = plet_.type_i_; + reqs.push (p); + } + break; case ')': case '(': - req_p = new Slur_req; + { + reqs.push (new Slur_req); + } break; default: assert (false); break; } - switch (c) + switch (t) { + case BEAMPLET: + reqs.top ()->span()->spantype = Span_req::START; + /* fall through */ case '<': case '>': case '(': case '[': - req_p->span()->spantype = Span_req::START; + case PLET: + reqs[0]->span ()->spantype = Span_req::START; break; + case MAEBTELP: + reqs.top ()->span()->spantype = Span_req::STOP; + /* fall through */ case '!': case ')': case ']': - req_p->span()->spantype = Span_req::STOP; + reqs[0]->span ()->spantype = Span_req::STOP; break; default: break; } - if (req_p->musical()->span_dynamic ()) - { - Span_dynamic_req* s_l= (req_p->musical()->span_dynamic ()) ; - s_l->dynamic_dir_ = (c == '<') ? UP:DOWN; - } + for (int i = 0; i < reqs.size (); i++) + if (reqs[i]->musical ()->span_dynamic ()) + { + Span_dynamic_req* s_l= (reqs[i]->musical ()->span_dynamic ()) ; + s_l->dynamic_dir_ = (t == '<') ? UP:DOWN; + } - req_p->set_spot (here_input()); - return req_p; + // ugh? don't we do this in the parser too? + reqs[0]->set_spot (here_input()); + return &reqs; } void diff --git a/lily/out/dummy.dep b/lily/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lily/parser.y b/lily/parser.y index 051fb72c50..8dea7f982a 100644 --- a/lily/parser.y +++ b/lily/parser.y @@ -12,7 +12,7 @@ #include // mmm -#define MUDELA_VERSION "0.1.7" +#define MUDELA_VERSION "0.1.8" #include "scalar.hh" #include "translation-property.hh" @@ -113,6 +113,8 @@ yylex (YYSTYPE *s, void * v_l) %token ALIAS %token BAR +%token BEAMPLET +%token MAEBTELP %token CADENZA %token CLEAR %token CLEF @@ -141,6 +143,7 @@ yylex (YYSTYPE *s, void * v_l) %token PAPER %token PARTIAL %token PLET +%token TELP %token PT_T %token SCORE %token SCRIPT @@ -189,9 +192,9 @@ yylex (YYSTYPE *s, void * v_l) %type output_def %type
mudela_header mudela_header_body %type box -%type open_request_parens close_request_parens +%type open_request_parens close_request_parens %type open_abbrev_parens -%type open_plet_parens close_plet_parens +%type open_plet_parens close_plet_parens %type simple_element music_elt full_element lyrics_elt command_elt %type abbrev_type %type int @@ -217,7 +220,7 @@ yylex (YYSTYPE *s, void * v_l) %type dim real %type unit %type abbrev_command_req -%type post_request pre_request command_req verbose_command_req +%type post_request command_req verbose_command_req %type script_req dynamic_req %type score_block score_body %type