From: Han-Wen Nienhuys Date: Fri, 15 May 1998 06:57:26 +0000 (+0200) Subject: release: 0.1.65 X-Git-Tag: release/0.1.65 X-Git-Url: https://git.donarmstrong.com/lilypond.git?a=commitdiff_plain;h=6bc0a8a090e82c4bce57df8e980b48cc78cb422b;hp=c9b442b3bbaee9618f179ad5aacb10aafd557514;p=lilypond.git release: 0.1.65 --- diff --git a/AUTHORS.txt b/AUTHORS.txt index 91bf41de38..41e559eb68 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -61,7 +61,7 @@ CONTRIBUTORS -6/Apr/98 LilyPond 0.1.64 1 +6/Apr/98 LilyPond 0.1.65 1 @@ -127,6 +127,6 @@ AUTHORS(1) LilyPond documentation AUTHORS(1) -6/Apr/98 LilyPond 0.1.64 2 +6/Apr/98 LilyPond 0.1.65 2 diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod index b6bdf07f28..741db8d433 100644 --- a/Documentation/INSTALL.pod +++ b/Documentation/INSTALL.pod @@ -107,7 +107,8 @@ conversion tools. =item * -Xpmtoppm (from the libgr-progs package). +xpmtoppm (from the Portable Bitmap Utilities) (included within the +RedHat package libgr-progs). =item * diff --git a/Documentation/faq.pod b/Documentation/faq.pod index 01ff8a6d89..93edc38a3c 100644 --- a/Documentation/faq.pod +++ b/Documentation/faq.pod @@ -4,8 +4,14 @@ FAQ - GNU LilyPond FAQs =head1 DESCRIPTION -Some questions that have been answered before. (note: relative paths -are meant to be relative to the source directory) +Q: HELP! I'm stuck! + +A: Please read this document carefully. If you are still at loss, +send your questions to the B, and not to authors +directly. + +Note: relative paths are meant to be relative to the source directory + =head2 Installing @@ -142,7 +148,7 @@ formatting: Q: and where do the beams come into this picture? -A: Beams are voicegroup-wide, and may be entered in any part of the +A: Beams are voice-wide, and may be entered in any part of the voicegroup: < { [a ~ e] } { c ~ g } > @@ -289,7 +295,7 @@ or diff -urN old-directory/ new-directory/ > patch Alternatively, you can use F. Don't forget to put -in your name and e-mail address. +your name and e-mail address in the F file. Q: How do I learn the C++ code? @@ -325,7 +331,8 @@ please fix it? A: No. We have evaluated the standard GNU combination for compiling programs (autoconf, automake, libtool) and found to be inadequate in several respects. More detailed argumentation is included with -LilyPond (see F) +LilyPond (see F) + Q: Why do I need g++ >= 2.7? @@ -333,8 +340,10 @@ A: By using g++, GNU LilyPond is portable to all platforms which support g++ (there are quite a few). Not having to support other compilers saves us a I of trouble. + =head2 Running + Q: There are lots of warning messages for the printing, all beginning with: @@ -344,12 +353,14 @@ A: You should use dvips and ghostscript to print it: the slurs and beams are PS C<\special> commands -Q: My symbols are all messed up after I upgraded, and I get -dvi-checksum errors! +Q: My symbols are all messed up after I upgraded, I get the wrong +symbols and dvi-checksum errors! + +A: We obviously mucked with the fonts in the upgrade. Remove I +previous fonts, including the F<.pk> and F<.tfm> fonts in +F. A script automating this has been included, see +F -A: We mucked with the fonts in the upgrade. Remove I previous -fonts, including the .pk and .tfm fonts in F. A -script automating this has been included, see F Q: I don't get midi-output, even if I use B<-M>! @@ -372,7 +383,7 @@ articulation, etc). A: The MIDI output was originally put in as a proof that MIDI could be done, and as a method of proof"reading" the input. The MIDI support -is by no means finished. +is by no means finished. Patches appreciated. Q: I get diff --git a/Documentation/index.pod b/Documentation/index.pod index cdf09123ce..0d3cc364e5 100644 --- a/Documentation/index.pod +++ b/Documentation/index.pod @@ -146,13 +146,6 @@ The coding standards of the lilypond project. -=item * - -The DOC++ documentation of the C++ sources. [temporarily disabled] - - =item * diff --git a/Documentation/tex/engraving.bib b/Documentation/tex/engraving.bib index be4c54c42e..ca83827b1a 100644 --- a/Documentation/tex/engraving.bib +++ b/Documentation/tex/engraving.bib @@ -520,6 +520,6 @@ @Article {smdl-web, author={unknown}, title = {SMDL, Standard Musical Description Language}, - HTML={ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf}, + pdf={ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf}, note={ISO/IEC DIS 10743}, } diff --git a/Documentation/tex/mudela.doc b/Documentation/tex/mudela.doc index 0690a64818..321596152b 100644 --- a/Documentation/tex/mudela.doc +++ b/Documentation/tex/mudela.doc @@ -70,7 +70,7 @@ \chapter{A tutorial} -\emph{\Large ***Under construction: april 98***} +\emph{\Large ***Under construction: may 98***} \section{Introduction} @@ -180,7 +180,17 @@ What is in your window should look like this: \end{mudela} \end{enumerate} -[talk about ly2dvi] +The above is quite a lot of work. Moreover, the result is pretty +crude: the page does include prettily printed titles, composer. Jan +Arne Fagertun wrote a tool to take the above tedious steps out of +your hands. The tool is called ly2dvi, and it should be on your +system if you run Unix. If you use ly2dvi, then you can do +\begin{verbatim} + ly2dvi silly.ly +\end{verbatim} +in stead of steps 2 and 3. You feel the real win of ly2dvi when you +add titling to the music. This is something that we will discuss in [XXX] + The remainder of this document is not about \TeX, and mostly not even about LilyPond. What you entered into your text editor in step~1. and @@ -221,7 +231,7 @@ music notation works. If you are not familiar with the English terms for music notation, then you should consult XXXX [FIXME], it contains a glossary of musical terms. -\section{Music copying versus music definition} +\section{Music copying versus music definition versus music entry} If you have done music copying before, then using LilyPond may seem awkward to you in the beginning. The purpose of LilyPond is informally @@ -242,14 +252,24 @@ hand from a printed score, you don't have to know what the score means; you just copy the symbols. With LilyPond such a thing is not possible: we expect you to enter the meaning of the score, not the score itself. If put more concretely: you do not enter ``black -notehead without flag, fourth staff line'', but ``a quarter note, -pitch d$^2$''. LilyPond will figure out from the musical info what -kind of graphic presentation is needed. +notehead without flag, fourth staff line, with dot'', but ``a dotted +quarter note, pitch d$^2$''. LilyPond will figure out from the +musical info what kind of graphic presentation is needed. This has some drawbacks: most notably, it is difficult to enter sheet music that you cannot read. On the other hand, any piece of music once entered can be played and transposed automatically. +Finally, in some spots we will cheat a bit when it comes to musical +definition. Mudela has some entry modes that help you to make typing +mudela pleasant. For example, the verbose phrase ``a dotted quarter +note, pitch d$^2$'' translates to the following longhand +\begin{verbatim} + \musical_pitch { 1 2 0 } \duration { 2 1} +\end{verbatim} +You can be conveniently abbreviate this to \verb+d''4.+, which is +considerably shorter. There are some features that also make the +quotes and numbers in \verb+d''4.+ superfluous in some cases. \section{When you know the notes to print\ldots} @@ -380,29 +400,33 @@ previous example can be reduced to \end{verbatim} -[WARNING: relative octaves are still experimental!] - The need for quotes can also be reduced: most of the pitch intervals in traditional music are small. Therefore, it makes sense to leave out the quotes when the interval is small. This is called the relative mode for octaves. You can switch it on by entering -\verb+\octave relative+. From then on, the pitch of a note will be -the closest to the last one, Thus, you can enter a scale without using -octavation quotes: +\verb+\relative+. From then on, the pitch of a note will be the +closest to the last one. You have to specify the first pitch because +the first note of a row obviously has no predecessor. Thus, you can +enter a scale without using octavation quotes, eg, + \begin{mudela}[fragment,verbatim] - \octave relative; - c d e f g a b c + \relative c' { c d e f g a b c } \end{mudela} -The twinkle twinkle example reduces to the following input. +For chords, the relative mode works slightly differently. In a +sequence of chords, the first note of a chord gives the starting point +for the next. We can demonstrate this with our twinkle twinkle example \begin{verbatim} - \octave relative; - c'4 c - - - + \relative c' { + c4 c + + + + } \end{verbatim} + + \section{Finishing touch} diff --git a/Documentation/topweb.pod b/Documentation/topweb.pod index 3c1b47a61c..def6a75970 100644 --- a/Documentation/topweb.pod +++ b/Documentation/topweb.pod @@ -15,8 +15,8 @@ This is not a Fanmail/Hype page. These pages were entirely created from the LilyPond package-sources. Note: These pages are created from the latest B -of LilyPond. You can look at the bottom if you want to know which -version this was. +of LilyPond, specifically, this page was made from LilyPond +@TOPLEVEL_VERSION@. =head2 Mirrors @@ -56,6 +56,8 @@ This is what the latest version brings: top_of_NEWS +Go get it at ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz + =head2 Documentation: Introduction =over 4 @@ -67,6 +69,14 @@ All of the LilyPond documentation. +=item * + +The DOC++ documentation of the C++ sources. + + + =back diff --git a/INSTALL.txt b/INSTALL.txt index bf28be6025..12c297b46c 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -61,7 +61,7 @@ RECOMMENDED -13/May/98 LilyPond 0.1.64 1 +15/May/98 LilyPond 0.1.65 1 @@ -84,7 +84,8 @@ WEBSITE If you want to auto-generate Lily's website, you'll need some additional conversion tools. - o Xpmtoppm (from the libgr-progs package). + o xpmtoppm (from the Portable Bitmap Utilities) + (included within the RedHat package libgr-progs). o Bib2html (http://pertsserver.cs.uiuc.edu/~hull/bib2html.) @@ -123,11 +124,10 @@ CONFIGURING and COMPILING export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR" configure - CPPFLAGS are the preprocessor flags. -13/May/98 LilyPond 0.1.64 2 +15/May/98 LilyPond 0.1.65 2 @@ -136,6 +136,8 @@ CONFIGURING and COMPILING INSTALL(1) LilyPond documentation INSTALL(1) + CPPFLAGS are the preprocessor flags. + the configure script is Cygnus configure, and it will accept --help. If you are not root, you will probably have to make it with @@ -188,12 +190,10 @@ INSTALL(1) LilyPond documentation INSTALL(1) --enable-config Output to different configuration files. Needed for - multi-platform builds - -13/May/98 LilyPond 0.1.64 3 +15/May/98 LilyPond 0.1.65 3 @@ -202,6 +202,8 @@ INSTALL(1) LilyPond documentation INSTALL(1) INSTALL(1) LilyPond documentation INSTALL(1) + multi-platform builds + All options are documented in the configure help The option --enable-optimise is recommended for Real Life usage. @@ -253,13 +255,11 @@ CAVEATS o Perl5.003 and Perl5.004 use different syntax for pod2html. -EXAMPLE - This is what I type in my xterm: -13/May/98 LilyPond 0.1.64 4 +15/May/98 LilyPond 0.1.65 4 @@ -268,6 +268,9 @@ EXAMPLE INSTALL(1) LilyPond documentation INSTALL(1) +EXAMPLE + This is what I type in my xterm: + lilypond someinput.ly tex someinput.tex xdvi someinput& @@ -319,13 +322,10 @@ WINDOWS NT/95 make Note If you rely on broken DOS/Windows tools such as - pkzip/WinZIP to unpack the distribution, make sure the - entire source tree is unpacked correctly, in particular - the empty out directories (flower/out, lib/out et. al.) -13/May/98 LilyPond 0.1.64 5 +15/May/98 LilyPond 0.1.65 5 @@ -334,6 +334,10 @@ WINDOWS NT/95 INSTALL(1) LilyPond documentation INSTALL(1) + pkzip/WinZIP to unpack the distribution, make sure the + entire source tree is unpacked correctly, in particular + the empty out directories (flower/out, lib/out et. al.) + AUTHORS Han-Wen Nienhuys @@ -387,10 +391,6 @@ AUTHORS - - - - -13/May/98 LilyPond 0.1.64 6 +15/May/98 LilyPond 0.1.65 6 diff --git a/NEWS b/NEWS index 32035856f1..97fce166d1 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,22 @@ -********* -pl 64 +pl 65 + - fixes for template instantiation (AO) + - junked standchen-easy, + - mudela 0.1.15: deprecate \duration, junked \octave relative + - small doco fixes + - moved data from Melodic_req into Musical_pitch (analogous to + Duration and Rhythmic_req) + - implemented \relative c' { .. } and associated Relative_octave_music + - junked \octave relative; + +pl 64.jcn2 + - simple compile fixes + - bf: beam:stemlens:knee + - hara-kiri-* + - bf: ctags + - preludes-3.lym4 + +********** +pl 64 (may 13) pl 63.jcn3 - beam stemlength stuff runtime @@ -23,7 +40,9 @@ pl 63.jcn1 - bf's: make dist, docdeps - bf's scsii -pl 63 +************ +pl 63 (may 11) + - non_fatal_error () (should use!) - Mozart Horn concerto 3, horn part - bf: plet-spanner diff --git a/PATCHES.txt b/PATCHES.txt index 24afc7b64d..5618b58820 100644 --- a/PATCHES.txt +++ b/PATCHES.txt @@ -61,7 +61,7 @@ PREREQUISITES -12/May/98 LilyPond 0.1.64 1 +12/May/98 LilyPond 0.1.65 1 @@ -127,7 +127,7 @@ SYNCHRONISE -12/May/98 LilyPond 0.1.64 2 +12/May/98 LilyPond 0.1.65 2 @@ -193,6 +193,6 @@ MAINTAINER -12/May/98 LilyPond 0.1.64 3 +12/May/98 LilyPond 0.1.65 3 diff --git a/README b/README index 4eece482a0..a172ebc034 100644 --- a/README +++ b/README @@ -24,6 +24,9 @@ version, then this is version is *not* meant for producing nice output For the compilation and running of LilyPond you need some additional packages. Please refer to the installation instructions. +NOTE: If you downloaded a binary (.rpm or a W95/NT .zip file), then +you don't have to compile LilyPond. + 3. INSTALLATION @@ -49,9 +52,12 @@ You can also simply read the .pod sources. They are ASCII text. 5. COMMENTS -LilyPond is a long way from finished and polished. I do appreciate -criticism, comments, bugreports, patches, etc. Please send e-mail to -the mailing lists. See Documentation/links.pod for more info +LilyPond is a long way from finished and polished. We do appreciate +criticism, comments, bugreports, patches, etc. + + Please send your e-mail to one of the MAILING LISTS + +(and not to us personally). See Documentation/links.pod for more info 6. DOZE @@ -61,11 +67,10 @@ If you have received this file as part of a DOS/Window32 distribution package, since it might contain more documentation ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe) - ftp://alpha.gnu.org/gnu/lilypond/ (US) The website also contains the complete documentation - http://www.stack.nl/~hanwen/lilypond/index.html + http://www.cs.uu.nl/~hanwen/lilypond/index.html If you decide to build LilyPond from source, please read the INSTALL document first, especially the Windows NT/95 section. diff --git a/TODO b/TODO index 290ea68f84..7f9b738c65 100644 --- a/TODO +++ b/TODO @@ -7,6 +7,8 @@ Most of the items are marked in the code as well, with full explanation. grep for TODO and ugh/ugr/urg 0.2: + * junk My_lily_parser::abbrev_beam_type_i_ + * w32 blurb * make sure all ex's have a mudela-version @@ -28,8 +30,6 @@ grep for TODO and ugh/ugr/urg * document use of ly2dvi more prominently - * deprecate \duration - * clean up abbrev/plet/beam/abbrevbeam/duration mess in parser. * minimum length second part broken tie @@ -41,9 +41,6 @@ grep for TODO and ugh/ugr/urg * multibar rest - symbol(s) - * move all hard-coded constants and staffheight dependent to runtime, - i.e. init/params.ly. e.g.: stem length params, beam positions - * fix variable define/lookup parser global<->paper * fix position of bar number @@ -63,7 +60,6 @@ grep for TODO and ugh/ugr/urg - abbreviation-beam -> (measured/unmeasured) tremolo * libtoolize flowerlib - * shared lib * robustify Beam (in case of no stems, 32nd notes) @@ -121,7 +117,6 @@ STUFF * clefs (AG): The "8" should appear closer to the actual clef, touching it. - * give Items/Spanners access to unbroken originals * generalised scopes for Parser/identifiers. diff --git a/VERSION b/VERSION index 440a99a9f7..ed7ea2f305 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ MAJOR_VERSION=0 MINOR_VERSION=1 -PATCH_LEVEL=64 +PATCH_LEVEL=65 MY_PATCH_LEVEL= # use the above to send patches, always empty for released version: diff --git a/bin/add-html-footer.py b/bin/add-html-footer.py index 590042719f..e18d5d244a 100644 --- a/bin/add-html-footer.py +++ b/bin/add-html-footer.py @@ -1,4 +1,10 @@ #!@PYTHON@ + +""" +Print a nice footer. add the top of the NEWS file (up to the ********) +""" + + import os import sys import getopt @@ -17,14 +23,12 @@ sys.path.append(lilypath) from lilypython import * lilyversion= '' -mailaddress = "unknown" fullname = "unknown" news_file = '' def set_vars(): __main__.lilyversion = version_tuple_to_str(lilydirs.version_tuple()) os.environ["CONFIGSUFFIX"] = 'www'; - __main__.mailaddress= os.environ['MAILADDRESS'] pw = pwd.getpwuid (os.getuid()); __main__.fullname= pw[4]; @@ -33,9 +37,10 @@ def set_vars(): backstr = '\n
Please take me back to the index\n\ of LilyPond -- The GNU Project Music typesetter\n\
\n\ -This page was built using from lilypond-%s by

\n\ +This page was built from lilypond-%s by

\n\


%s <%s>
\n\

' + set_vars () banner_file = '' news_file='' @@ -49,7 +54,7 @@ for opt in options: news_file = a def footstr(index): - return backstr % (index, lilyversion, fullname, mailaddress, mailaddress) + return backstr % (index, lilyversion, fullname, mailaddress (), mailaddress) index_file='../../out-www/index.html' banner = footstr (index_file) diff --git a/bin/convert-mudela.pl b/bin/convert-mudela.pl index f4bc9a53b5..3787efcde3 100755 --- a/bin/convert-mudela.pl +++ b/bin/convert-mudela.pl @@ -176,8 +176,15 @@ sub convert_0_1_10_to_0_1_14 { s/([ \n\t\[<>()\]])\'(\'*[a-zA-Z]+)/$1$2,/g; } - } +sub convert_0_1_14_to_0_1_15 +{ +# junked \duration last and \duration 4, 8, 16 etc. +# junked \octave relative + print STDERR "Not smart enough to convert \\duration\n" if (/\\duration/) ; + print STDERR "Not smart enough to convert \\octave relative\n" if (/\\octave relative/) ; +} + ############################################################### sub last_conversion @@ -229,6 +236,7 @@ my %minor_conversions = ("0.0.50" => \&no_conv, ,"0.1.9" => \&convert_0_1_8_to_0_1_9 ,"0.1.10" => \&convert_0_1_9_to_0_1_10 , "0.1.14" => \&convert_0_1_10_to_0_1_14 + , "0.1.15" => \&convert_0_1_14_to_0_1_15 ); diff --git a/bin/genheader.py b/bin/genheader.py index 9f16663bf7..ca45f0736e 100755 --- a/bin/genheader.py +++ b/bin/genheader.py @@ -19,6 +19,17 @@ import sys import os import getopt import time +lilypath ='' +try: + lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' +except KeyError: + print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/' + sys.exit(1) + +lilypath = lilypath + '/bin/' +sys.path.append(lilypath) + +from lilypython import * class My_options: def __init__(self): @@ -28,8 +39,6 @@ class My_options: my_options = My_options() -def mail(): - return os.environ['MAILADDRESS'] def name(): return pwd.getpwuid(posix.getuid())[4] @@ -61,7 +70,7 @@ def head_str(filename): headstr = '\n%s -- %s\n\nsource file of %s\n\n(c) %d %s <%s>\n' \ - %(filename, what, project_str(), time.localtime (time.time ())[0], name(), mail()) + %(filename, what, project_str(), time.localtime (time.time ())[0], name(), mailaddress()) return headstr diff --git a/bin/lilypython.py b/bin/lilypython.py index 4375c69d3e..210865bacb 100755 --- a/bin/lilypython.py +++ b/bin/lilypython.py @@ -24,6 +24,12 @@ version_re = regex.compile('\\version *\"\(.*\)\"') # make_assign_re = regex.compile('^\([A-Z_]*\) *= *\(.*\)$') make_assign_re = regex.compile('^\([A-Z_]*\)=\(.*\)$') +def mailaddress(): + try: + return os.environ['MAILADDRESS'] + except KeyError: + return '(address unknown)' + def version_tuple(file): lines = file.readlines() diff --git a/bin/mail-address.sh b/bin/mail-address.sh new file mode 100644 index 0000000000..37e1141751 --- /dev/null +++ b/bin/mail-address.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# mail-address +if [ "$MAILADDRESS" != "" ]; then + echo $MAILADDRESS +else + echo "mail-address:6: warning: \$MAILADDRESS undefined" > /dev/stderr + echo $USER@`hostname` +fi diff --git a/bin/make-docxx.sh b/bin/make-docxx.sh deleted file mode 100755 index b274731309..0000000000 --- a/bin/make-docxx.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -if [ x$LILYTOP = x ]; -then - LILYTOP = . -fi -p1=`find $LILYTOP -name '*.hh' |egrep -v out/` -p2=`find $LILYTOP -name '*.cc' |egrep -v out/` -doc++ -f -d docxx/ -S -k -p $BANNEROPT $p1 $p2 diff --git a/bin/make-examples.sh b/bin/make-examples.sh deleted file mode 100755 index 1da09acd95..0000000000 --- a/bin/make-examples.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# make-examples - -examples="twinkle-pop wtk1-fugue2 standchen-16 standchen-20 wtk1-prelude1 toccata-fuga-E prelude-cello menuetto-cello menuetto-alto cadenza gallina twinkle collisions font font20 scales rhythm multi spacing beams sleur stem" -pss=$(echo $examples | sed "s/[^ ][^ ]*/out\\/&.ps/g") - -# cd ~/lelie/current/Documentation/out -cd ~/lelie/current/input -make -C ../Documentation $pss diff --git a/bin/tar-docxx.sh b/bin/tar-docxx.sh new file mode 100644 index 0000000000..c6d33a9605 --- /dev/null +++ b/bin/tar-docxx.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +if [ "$1" = "" ]; +then + echo tar-docxx tarball.tar.gz +fi + +cwd=`pwd` +TARBALL=`basename $1` +TAROUTDIR=/tmp/tar-docxx +mkdir $TAROUTDIR + +echo untarring ... +tar -C $TAROUTDIR -zxf $1 '*cc' '*.c' '*.hh' '*.h' + +cd $TAROUTDIR +DATE=`date` + +cat << EOF > banner.html + This program documentation comes from $TARBALL. It was generated by + $USERNAME ($MAILADDRESS) on $DATE +EOF + + + +mkdir docxx; +echo doc++ ... +doc++ -pSf -B banner.html -d docxx `find -type f` +tar -czf $cwd/progdocs.tar.gz docxx/ +# rm -rf $TAROUTDIR diff --git a/config.hh.in b/config.hh.in index 31b8f322c7..c086270328 100644 --- a/config.hh.in +++ b/config.hh.in @@ -9,3 +9,6 @@ /* define if you have snprintf */ #define HAVE_SNPRINTF 0 + +/* define if explicit instantiation is needed */ +#undef NEED_EXPLICIT_INSTANTIATION diff --git a/configure b/configure index b1d2e2802b..c501bd403e 100755 --- a/configure +++ b/configure @@ -678,6 +678,42 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L cross_compiling=$ac_cv_prog_cxx_cross +echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6 +echo "configure:683: checking whether explicit instantiation is needed" >&5 +if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < struct foo { static int baz; }; +template int foo::baz = 1; + +int main() { + return foo::baz; +; return 0; } +EOF +if { (eval echo configure:698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + lily_cv_need_explicit_instantiation=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + lily_cv_need_explicit_instantiation=yes +fi +rm -f conftest* +fi + +echo "$ac_t""$lily_cv_need_explicit_instantiation" 1>&6 +if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then + cat >> confdefs.h <<\EOF +#define NEED_EXPLICIT_INSTANTIATION 1 +EOF + +fi + # Check whether --enable-printing or --disable-printing was given. if test "${enable_printing+set}" = set; then enableval="$enable_printing" @@ -830,7 +866,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:834: checking for $ac_word" >&5 +echo "configure:870: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -861,7 +897,7 @@ test -n "$CXX" || CXX="gcc" echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:865: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:901: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -871,11 +907,11 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -895,12 +931,12 @@ if test $ac_cv_prog_cxx_works = no; then { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:899: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:935: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:904: checking whether we are using GNU C++" >&5 +echo "configure:940: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -909,7 +945,7 @@ else yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:913: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:949: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no @@ -924,7 +960,7 @@ if test $ac_cv_prog_gxx = yes; then ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:928: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:964: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -954,7 +990,7 @@ fi # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:958: checking for $ac_word" >&5 +echo "configure:994: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -991,7 +1027,7 @@ fi # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:995: checking for a BSD compatible install" >&5 +echo "configure:1031: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1045,7 +1081,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1049: checking for $ac_word" >&5 +echo "configure:1085: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1079,7 +1115,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1083: checking for $ac_word" >&5 +echo "configure:1119: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1120,7 +1156,7 @@ test -n "$FIND" || FIND="error" echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:1124: checking for 8-bit clean memcmp" >&5 +echo "configure:1160: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1128,7 +1164,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -1159,12 +1195,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o" echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:1163: checking for vprintf" >&5 +echo "configure:1199: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -1214,12 +1250,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:1218: checking for _doprnt" >&5 +echo "configure:1254: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -1272,12 +1308,12 @@ fi for ac_func in memmem snprintf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1276: checking for $ac_func" >&5 +echo "configure:1312: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1380,7 +1416,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1384: checking for $ac_word" >&5 +echo "configure:1420: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1414,7 +1450,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1418: checking for $ac_word" >&5 +echo "configure:1454: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1448,7 +1484,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1452: checking for $ac_word" >&5 +echo "configure:1488: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1480,7 +1516,7 @@ test -n "$MAKE" || MAKE="error" # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1484: checking for $ac_word" >&5 +echo "configure:1520: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1512,7 +1548,7 @@ fi # Extract the first word of "python", so it can be a program name with args. set dummy python; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1516: checking for $ac_word" >&5 +echo "configure:1552: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1546,7 +1582,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1550: checking for $ac_word" >&5 +echo "configure:1586: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_POD2HTML'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1580,7 +1616,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1584: checking for $ac_word" >&5 +echo "configure:1620: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_POD2MAN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1616,7 +1652,7 @@ if test "x$TEXPREFIX" = xauto ; then echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6 -echo "configure:1620: checking TeX/MF root dir directory" >&5 +echo "configure:1656: checking TeX/MF root dir directory" >&5 find_root_prefix="$prefix" @@ -1657,7 +1693,7 @@ if test "x$MFDIR" = xauto; then echo $ac_n "checking MF input directory""... $ac_c" 1>&6 -echo "configure:1661: checking MF input directory" >&5 +echo "configure:1697: checking MF input directory" >&5 find_dirdir=`(cd $find_texprefix; $FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')` @@ -1682,7 +1718,7 @@ if test "x$TEXDIR" = xauto ; then echo $ac_n "checking TeX input directory""... $ac_c" 1>&6 -echo "configure:1686: checking TeX input directory" >&5 +echo "configure:1722: checking TeX input directory" >&5 find_dirdir=`(cd $find_texprefix; $FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')` @@ -1802,7 +1838,7 @@ else fi echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:1806: checking how to run the C++ preprocessor" >&5 +echo "configure:1842: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1815,12 +1851,12 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1824: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1840,17 +1876,17 @@ echo "$ac_t""$CXXCPP" 1>&6 ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6 -echo "configure:1844: checking for FlexLexer.h" >&5 +echo "configure:1880: checking for FlexLexer.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1890: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* diff --git a/configure.in b/configure.in index 6baa1002a9..de0b59611d 100644 --- a/configure.in +++ b/configure.in @@ -60,6 +60,18 @@ debug_b=yes AC_LANG_CPLUSPLUS +AC_CACHE_CHECK([whether explicit instantiation is needed], + lily_cv_need_explicit_instantiation, + AC_TRY_LINK([ +template struct foo { static int baz; }; +template int foo::baz = 1; +], [ return foo::baz; ], + lily_cv_need_explicit_instantiation=no, + lily_cv_need_explicit_instantiation=yes)) +if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then + AC_DEFINE(NEED_EXPLICIT_INSTANTIATION) +fi + AC_ARG_ENABLE(printing, [ enable-printing turn on debug printing. Default: off], [printing_b=$enableval]) diff --git a/init/book-fragment.ly b/init/book-fragment.ly index e8b9f0c1af..4491fdbd1a 100644 --- a/init/book-fragment.ly +++ b/init/book-fragment.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "0.1.14"; +\version "0.1.15"; \include "declarations.ly" diff --git a/init/deutsch.ly b/init/deutsch.ly index 7defccdd64..4de5bbf295 100644 --- a/init/deutsch.ly +++ b/init/deutsch.ly @@ -11,41 +11,41 @@ % have a rhythmic part too. This is the reason that we don't write 'note { .. }' % \notenames { - ceses = \melodic_request { -1 0 -2 } - ces = \melodic_request { -1 0 -1 } - c = \melodic_request { -1 0 0 } - cis = \melodic_request { -1 0 1 } - cisis = \melodic_request { -1 0 2 } - deses = \melodic_request { -1 1 -2 } - des = \melodic_request { -1 1 -1 } - d = \melodic_request { -1 1 0 } - dis = \melodic_request { -1 1 1 } - disis = \melodic_request { -1 1 2 } - eses = \melodic_request { -1 2 -2 } - es = \melodic_request { -1 2 -1 } - e = \melodic_request { -1 2 0 } - eis = \melodic_request { -1 2 1 } - eisis = \melodic_request { -1 2 2 } - feses = \melodic_request { -1 3 -2 } - fes = \melodic_request { -1 3 -1 } - f = \melodic_request { -1 3 0 } - fis = \melodic_request { -1 3 1 } - fisis = \melodic_request { -1 3 2 } - geses = \melodic_request { -1 4 -2 } - ges = \melodic_request { -1 4 -1 } - g = \melodic_request { -1 4 0 } - gis = \melodic_request { -1 4 1 } - gisis = \melodic_request { -1 4 2 } - ases = \melodic_request { -1 5 -2 } - as = \melodic_request { -1 5 -1 } - a = \melodic_request { -1 5 0 } - ais = \melodic_request { -1 5 1 } - aisis = \melodic_request { -1 5 2 } - heses = \melodic_request { -1 6 -2 } - b = \melodic_request { -1 6 -1 } - h = \melodic_request { -1 6 0 } - his = \melodic_request { -1 6 1 } - hisis = \melodic_request { -1 6 2 } + ceses = \musical_pitch { -1 0 -2 } + ces = \musical_pitch { -1 0 -1 } + c = \musical_pitch { -1 0 0 } + cis = \musical_pitch { -1 0 1 } + cisis = \musical_pitch { -1 0 2 } + deses = \musical_pitch { -1 1 -2 } + des = \musical_pitch { -1 1 -1 } + d = \musical_pitch { -1 1 0 } + dis = \musical_pitch { -1 1 1 } + disis = \musical_pitch { -1 1 2 } + eses = \musical_pitch { -1 2 -2 } + es = \musical_pitch { -1 2 -1 } + e = \musical_pitch { -1 2 0 } + eis = \musical_pitch { -1 2 1 } + eisis = \musical_pitch { -1 2 2 } + feses = \musical_pitch { -1 3 -2 } + fes = \musical_pitch { -1 3 -1 } + f = \musical_pitch { -1 3 0 } + fis = \musical_pitch { -1 3 1 } + fisis = \musical_pitch { -1 3 2 } + geses = \musical_pitch { -1 4 -2 } + ges = \musical_pitch { -1 4 -1 } + g = \musical_pitch { -1 4 0 } + gis = \musical_pitch { -1 4 1 } + gisis = \musical_pitch { -1 4 2 } + ases = \musical_pitch { -1 5 -2 } + as = \musical_pitch { -1 5 -1 } + a = \musical_pitch { -1 5 0 } + ais = \musical_pitch { -1 5 1 } + aisis = \musical_pitch { -1 5 2 } + heses = \musical_pitch { -1 6 -2 } + b = \musical_pitch { -1 6 -1 } + h = \musical_pitch { -1 6 0 } + his = \musical_pitch { -1 6 1 } + hisis = \musical_pitch { -1 6 2 } % @@ -53,41 +53,41 @@ % - Ceses = \melodic_request { -2 0 -2 } - Ces = \melodic_request { -2 0 -1 } - C = \melodic_request { -2 0 0 } - Cis = \melodic_request { -2 0 1 } - Cisis = \melodic_request { -2 0 2 } - Deses = \melodic_request { -2 1 -2 } - Des = \melodic_request { -2 1 -1 } - D = \melodic_request { -2 1 0 } - Dis = \melodic_request { -2 1 1 } - Disis = \melodic_request { -2 1 2 } - Eses = \melodic_request { -2 2 -2 } - Es = \melodic_request { -2 2 -1 } - E = \melodic_request { -2 2 0 } - Eis = \melodic_request { -2 2 1 } - Eisis = \melodic_request { -2 2 2 } - Feses = \melodic_request { -2 3 -2 } - Fes = \melodic_request { -2 3 -1 } - F = \melodic_request { -2 3 0 } - Fis = \melodic_request { -2 3 1 } - Fisis = \melodic_request { -2 3 2 } - Geses = \melodic_request { -2 4 -2 } - Ges = \melodic_request { -2 4 -1 } - G = \melodic_request { -2 4 0 } - Gis = \melodic_request { -2 4 1 } - Gisis = \melodic_request { -2 4 2 } - Ases = \melodic_request { -2 5 -2 } - As = \melodic_request { -2 5 -1 } - A = \melodic_request { -2 5 0 } - Ais = \melodic_request { -2 5 1 } - Aisis = \melodic_request { -2 5 2 } - Heses = \melodic_request { -2 6 -2 } - B = \melodic_request { -2 6 -1 } - H = \melodic_request { -2 6 0 } - His = \melodic_request { -2 6 1 } - Hisis = \melodic_request { -2 6 2 } + Ceses = \musical_pitch { -2 0 -2 } + Ces = \musical_pitch { -2 0 -1 } + C = \musical_pitch { -2 0 0 } + Cis = \musical_pitch { -2 0 1 } + Cisis = \musical_pitch { -2 0 2 } + Deses = \musical_pitch { -2 1 -2 } + Des = \musical_pitch { -2 1 -1 } + D = \musical_pitch { -2 1 0 } + Dis = \musical_pitch { -2 1 1 } + Disis = \musical_pitch { -2 1 2 } + Eses = \musical_pitch { -2 2 -2 } + Es = \musical_pitch { -2 2 -1 } + E = \musical_pitch { -2 2 0 } + Eis = \musical_pitch { -2 2 1 } + Eisis = \musical_pitch { -2 2 2 } + Feses = \musical_pitch { -2 3 -2 } + Fes = \musical_pitch { -2 3 -1 } + F = \musical_pitch { -2 3 0 } + Fis = \musical_pitch { -2 3 1 } + Fisis = \musical_pitch { -2 3 2 } + Geses = \musical_pitch { -2 4 -2 } + Ges = \musical_pitch { -2 4 -1 } + G = \musical_pitch { -2 4 0 } + Gis = \musical_pitch { -2 4 1 } + Gisis = \musical_pitch { -2 4 2 } + Ases = \musical_pitch { -2 5 -2 } + As = \musical_pitch { -2 5 -1 } + A = \musical_pitch { -2 5 0 } + Ais = \musical_pitch { -2 5 1 } + Aisis = \musical_pitch { -2 5 2 } + Heses = \musical_pitch { -2 6 -2 } + B = \musical_pitch { -2 6 -1 } + H = \musical_pitch { -2 6 0 } + His = \musical_pitch { -2 6 1 } + Hisis = \musical_pitch { -2 6 2 } } diff --git a/init/engraver.ly b/init/engraver.ly index 14c8d745a8..8e6c1a1a00 100644 --- a/init/engraver.ly +++ b/init/engraver.ly @@ -32,6 +32,7 @@ Staff = \translator { %} \consists "Separating_line_group_engraver"; \consists "Line_group_engraver"; +% \consists "Hara_kiri_line_group_engraver"; \accepts "Voice"; } @@ -89,6 +90,7 @@ Staff_group = \translator { \consists "Vertical_align_engraver"; \consists "Staff_group_bar_engraver"; \consists "Line_group_engraver"; +% \consists "Hara_kiri_line_group_engraver"; \accepts "Staff"; \accepts "Rhythmic_staff"; \accepts "Grand_staff"; diff --git a/init/italiano.ly b/init/italiano.ly index dd807abf22..0626937cef 100644 --- a/init/italiano.ly +++ b/init/italiano.ly @@ -11,39 +11,39 @@ % 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 } + dobb = \musical_pitch { -1 0 -2 } + dob = \musical_pitch { -1 0 -1 } + do = \musical_pitch { -1 0 0 } + dod = \musical_pitch { -1 0 1 } + dodd = \musical_pitch { -1 0 2 } + rebb = \musical_pitch { -1 1 -2 } + reb = \musical_pitch { -1 1 -1 } + re = \musical_pitch { -1 1 0 } + red = \musical_pitch { -1 1 1 } + redd = \musical_pitch { -1 1 2 } + mibb = \musical_pitch { -1 2 -2 } + mib = \musical_pitch { -1 2 -1 } + mi = \musical_pitch { -1 2 0 } + mid = \musical_pitch { -1 2 1 } + midd = \musical_pitch { -1 2 2 } + fabb = \musical_pitch { -1 3 -2 } + fab = \musical_pitch { -1 3 -1 } + fa = \musical_pitch { -1 3 0 } + fad = \musical_pitch { -1 3 1 } + fadd = \musical_pitch { -1 3 2 } + solbb = \musical_pitch { -1 4 -2 } + solb = \musical_pitch { -1 4 -1 } + sol = \musical_pitch { -1 4 0 } + sold = \musical_pitch { -1 4 1 } + soldd = \musical_pitch { -1 4 2 } + labb = \musical_pitch { -1 5 -2 } + lab = \musical_pitch { -1 5 -1 } + la = \musical_pitch { -1 5 0 } + lad = \musical_pitch { -1 5 1 } + ladd = \musical_pitch { -1 5 2 } + sibb = \musical_pitch { -1 6 -2 } + sib = \musical_pitch { -1 6 -1 } + si = \musical_pitch { -1 6 0 } + sid = \musical_pitch { -1 6 1 } + sidd = \musical_pitch { -1 6 2 } } diff --git a/init/lily-init.ly b/init/lily-init.ly index a617abfd57..237dcbf423 100644 --- a/init/lily-init.ly +++ b/init/lily-init.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "0.1.14"; +\version "0.1.15"; \include "declarations.ly"; diff --git a/init/nederlands.ly b/init/nederlands.ly index 12d4b4c111..bec7306600 100644 --- a/init/nederlands.ly +++ b/init/nederlands.ly @@ -11,45 +11,45 @@ %} \notenames { - ceses = \melodic_request { -1 0 -2 } - ces = \melodic_request { -1 0 -1 } - c = \melodic_request { -1 0 0 } - cis = \melodic_request { -1 0 1 } - cisis = \melodic_request { -1 0 2 } - deses = \melodic_request { -1 1 -2 } - des = \melodic_request { -1 1 -1 } - d = \melodic_request { -1 1 0 } - dis = \melodic_request { -1 1 1 } - disis = \melodic_request { -1 1 2 } - eeses = \melodic_request { -1 2 -2 } - eses = \melodic_request { -1 2 -2 } - ees = \melodic_request { -1 2 -1 } - es = \melodic_request { -1 2 -1 } - e = \melodic_request { -1 2 0 } - eis = \melodic_request { -1 2 1 } - eisis = \melodic_request { -1 2 2 } - feses = \melodic_request { -1 3 -2 } - fes = \melodic_request { -1 3 -1 } - f = \melodic_request { -1 3 0 } - fis = \melodic_request { -1 3 1 } - fisis = \melodic_request { -1 3 2 } - geses = \melodic_request { -1 4 -2 } - ges = \melodic_request { -1 4 -1 } - g = \melodic_request { -1 4 0 } - gis = \melodic_request { -1 4 1 } - gisis = \melodic_request { -1 4 2 } - aeses = \melodic_request { -1 5 -2 } - ases = \melodic_request { -1 5 -2 } - aes = \melodic_request { -1 5 -1 } - as = \melodic_request { -1 5 -1 } - a = \melodic_request { -1 5 0 } - ais = \melodic_request { -1 5 1 } - aisis = \melodic_request { -1 5 2 } - beses = \melodic_request { -1 6 -2 } - bes = \melodic_request { -1 6 -1 } - b = \melodic_request { -1 6 0 } - bis = \melodic_request { -1 6 1 } - bisis = \melodic_request { -1 6 2 } + ceses = \musical_pitch { -1 0 -2 } + ces = \musical_pitch { -1 0 -1 } + c = \musical_pitch { -1 0 0 } + cis = \musical_pitch { -1 0 1 } + cisis = \musical_pitch { -1 0 2 } + deses = \musical_pitch { -1 1 -2 } + des = \musical_pitch { -1 1 -1 } + d = \musical_pitch { -1 1 0 } + dis = \musical_pitch { -1 1 1 } + disis = \musical_pitch { -1 1 2 } + eeses = \musical_pitch { -1 2 -2 } + eses = \musical_pitch { -1 2 -2 } + ees = \musical_pitch { -1 2 -1 } + es = \musical_pitch { -1 2 -1 } + e = \musical_pitch { -1 2 0 } + eis = \musical_pitch { -1 2 1 } + eisis = \musical_pitch { -1 2 2 } + feses = \musical_pitch { -1 3 -2 } + fes = \musical_pitch { -1 3 -1 } + f = \musical_pitch { -1 3 0 } + fis = \musical_pitch { -1 3 1 } + fisis = \musical_pitch { -1 3 2 } + geses = \musical_pitch { -1 4 -2 } + ges = \musical_pitch { -1 4 -1 } + g = \musical_pitch { -1 4 0 } + gis = \musical_pitch { -1 4 1 } + gisis = \musical_pitch { -1 4 2 } + aeses = \musical_pitch { -1 5 -2 } + ases = \musical_pitch { -1 5 -2 } + aes = \musical_pitch { -1 5 -1 } + as = \musical_pitch { -1 5 -1 } + a = \musical_pitch { -1 5 0 } + ais = \musical_pitch { -1 5 1 } + aisis = \musical_pitch { -1 5 2 } + beses = \musical_pitch { -1 6 -2 } + bes = \musical_pitch { -1 6 -1 } + b = \musical_pitch { -1 6 0 } + bis = \musical_pitch { -1 6 1 } + bisis = \musical_pitch { -1 6 2 } % @@ -57,43 +57,43 @@ % - Ceses = \melodic_request { -2 0 -2 } - Ces = \melodic_request { -2 0 -1 } - C = \melodic_request { -2 0 0 } - Cis = \melodic_request { -2 0 1 } - Cisis = \melodic_request { -2 0 2 } - Deses = \melodic_request { -2 1 -2 } - Des = \melodic_request { -2 1 -1 } - D = \melodic_request { -2 1 0 } - Dis = \melodic_request { -2 1 1 } - Disis = \melodic_request { -2 1 2 } - Eses = \melodic_request { -2 2 -2 } - Es = \melodic_request { -2 2 -1 } - E = \melodic_request { -2 2 0 } - Eis = \melodic_request { -2 2 1 } - Eisis = \melodic_request { -2 2 2 } - Feses = \melodic_request { -2 3 -2 } - Fes = \melodic_request { -2 3 -1 } - F = \melodic_request { -2 3 0 } - Fis = \melodic_request { -2 3 1 } - Fisis = \melodic_request { -2 3 2 } - Geses = \melodic_request { -2 4 -2 } - Ges = \melodic_request { -2 4 -1 } - G = \melodic_request { -2 4 0 } - Gis = \melodic_request { -2 4 1 } - Gisis = \melodic_request { -2 4 2 } - Aeses = \melodic_request { -2 5 -2 } - Ases = \melodic_request { -2 5 -2 } - Aes = \melodic_request { -2 5 -1 } - As = \melodic_request { -2 5 -1 } - A = \melodic_request { -2 5 0 } - Ais = \melodic_request { -2 5 1 } - Aisis = \melodic_request { -2 5 2 } - Beses = \melodic_request { -2 6 -2 } - Bes = \melodic_request { -2 6 -1 } - B = \melodic_request { -2 6 0 } - Bis = \melodic_request { -2 6 1 } - Bisis = \melodic_request { -2 6 2 } + Ceses = \musical_pitch { -2 0 -2 } + Ces = \musical_pitch { -2 0 -1 } + C = \musical_pitch { -2 0 0 } + Cis = \musical_pitch { -2 0 1 } + Cisis = \musical_pitch { -2 0 2 } + Deses = \musical_pitch { -2 1 -2 } + Des = \musical_pitch { -2 1 -1 } + D = \musical_pitch { -2 1 0 } + Dis = \musical_pitch { -2 1 1 } + Disis = \musical_pitch { -2 1 2 } + Eses = \musical_pitch { -2 2 -2 } + Es = \musical_pitch { -2 2 -1 } + E = \musical_pitch { -2 2 0 } + Eis = \musical_pitch { -2 2 1 } + Eisis = \musical_pitch { -2 2 2 } + Feses = \musical_pitch { -2 3 -2 } + Fes = \musical_pitch { -2 3 -1 } + F = \musical_pitch { -2 3 0 } + Fis = \musical_pitch { -2 3 1 } + Fisis = \musical_pitch { -2 3 2 } + Geses = \musical_pitch { -2 4 -2 } + Ges = \musical_pitch { -2 4 -1 } + G = \musical_pitch { -2 4 0 } + Gis = \musical_pitch { -2 4 1 } + Gisis = \musical_pitch { -2 4 2 } + Aeses = \musical_pitch { -2 5 -2 } + Ases = \musical_pitch { -2 5 -2 } + Aes = \musical_pitch { -2 5 -1 } + As = \musical_pitch { -2 5 -1 } + A = \musical_pitch { -2 5 0 } + Ais = \musical_pitch { -2 5 1 } + Aisis = \musical_pitch { -2 5 2 } + Beses = \musical_pitch { -2 6 -2 } + Bes = \musical_pitch { -2 6 -1 } + B = \musical_pitch { -2 6 0 } + Bis = \musical_pitch { -2 6 1 } + Bisis = \musical_pitch { -2 6 2 } } diff --git a/init/no-tape.ly b/init/no-tape.ly index 9952b43729..a955fd9258 100644 --- a/init/no-tape.ly +++ b/init/no-tape.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "0.1.14"; +\version "0.1.15"; \include "declarations.ly" diff --git a/init/norsk.ly b/init/norsk.ly index 071df0612a..591f363c77 100644 --- a/init/norsk.ly +++ b/init/norsk.ly @@ -28,78 +28,78 @@ %} \notenames { - ceses = \melodic_request { -1 0 -2 } - cessess = \melodic_request { -1 0 -2 } - ces = \melodic_request { -1 0 -1 } - cess = \melodic_request { -1 0 -1 } - c = \melodic_request { -1 0 0 } - cis = \melodic_request { -1 0 1 } - ciss = \melodic_request { -1 0 1 } - cisis = \melodic_request { -1 0 2 } - cississ = \melodic_request { -1 0 2 } - deses = \melodic_request { -1 1 -2 } - dessess = \melodic_request { -1 1 -2 } - des = \melodic_request { -1 1 -1 } - dess = \melodic_request { -1 1 -1 } - d = \melodic_request { -1 1 0 } - dis = \melodic_request { -1 1 1 } - diss = \melodic_request { -1 1 1 } - disis = \melodic_request { -1 1 2 } - dississ = \melodic_request { -1 1 2 } - eeses = \melodic_request { -1 2 -2 } - eessess = \melodic_request { -1 2 -2 } - eses = \melodic_request { -1 2 -2 } - essess = \melodic_request { -1 2 -2 } - ees = \melodic_request { -1 2 -1 } - eess = \melodic_request { -1 2 -1 } - es = \melodic_request { -1 2 -1 } - ess = \melodic_request { -1 2 -1 } - e = \melodic_request { -1 2 0 } - eis = \melodic_request { -1 2 1 } - eiss = \melodic_request { -1 2 1 } - eisis = \melodic_request { -1 2 2 } - eississ = \melodic_request { -1 2 2 } - feses = \melodic_request { -1 3 -2 } - fessess = \melodic_request { -1 3 -2 } - fes = \melodic_request { -1 3 -1 } - fess = \melodic_request { -1 3 -1 } - f = \melodic_request { -1 3 0 } - fis = \melodic_request { -1 3 1 } - fiss = \melodic_request { -1 3 1 } - fisis = \melodic_request { -1 3 2 } - fississ = \melodic_request { -1 3 2 } - geses = \melodic_request { -1 4 -2 } - gessess = \melodic_request { -1 4 -2 } - ges = \melodic_request { -1 4 -1 } - gess = \melodic_request { -1 4 -1 } - g = \melodic_request { -1 4 0 } - g = \melodic_request { -1 4 0 } - gis = \melodic_request { -1 4 1 } - giss = \melodic_request { -1 4 1 } - gisis = \melodic_request { -1 4 2 } - gississ = \melodic_request { -1 4 2 } - aeses = \melodic_request { -1 5 -2 } - aessess = \melodic_request { -1 5 -2 } - ases = \melodic_request { -1 5 -2 } - assess = \melodic_request { -1 5 -2 } - aes = \melodic_request { -1 5 -1 } - aess = \melodic_request { -1 5 -1 } - as = \melodic_request { -1 5 -1 } - ass = \melodic_request { -1 5 -1 } - a = \melodic_request { -1 5 0 } - ais = \melodic_request { -1 5 1 } - aiss = \melodic_request { -1 5 1 } - aisis = \melodic_request { -1 5 2 } - aississ = \melodic_request { -1 5 2 } - bes = \melodic_request { -1 6 -2 } - bess = \melodic_request { -1 6 -2 } - b = \melodic_request { -1 6 -1 } - b = \melodic_request { -1 6 -1 } - h = \melodic_request { -1 6 0 } - his = \melodic_request { -1 6 1 } - hiss = \melodic_request { -1 6 1 } - hisis = \melodic_request { -1 6 2 } - hississ = \melodic_request { -1 6 2 } + ceses = \musical_pitch { -1 0 -2 } + cessess = \musical_pitch { -1 0 -2 } + ces = \musical_pitch { -1 0 -1 } + cess = \musical_pitch { -1 0 -1 } + c = \musical_pitch { -1 0 0 } + cis = \musical_pitch { -1 0 1 } + ciss = \musical_pitch { -1 0 1 } + cisis = \musical_pitch { -1 0 2 } + cississ = \musical_pitch { -1 0 2 } + deses = \musical_pitch { -1 1 -2 } + dessess = \musical_pitch { -1 1 -2 } + des = \musical_pitch { -1 1 -1 } + dess = \musical_pitch { -1 1 -1 } + d = \musical_pitch { -1 1 0 } + dis = \musical_pitch { -1 1 1 } + diss = \musical_pitch { -1 1 1 } + disis = \musical_pitch { -1 1 2 } + dississ = \musical_pitch { -1 1 2 } + eeses = \musical_pitch { -1 2 -2 } + eessess = \musical_pitch { -1 2 -2 } + eses = \musical_pitch { -1 2 -2 } + essess = \musical_pitch { -1 2 -2 } + ees = \musical_pitch { -1 2 -1 } + eess = \musical_pitch { -1 2 -1 } + es = \musical_pitch { -1 2 -1 } + ess = \musical_pitch { -1 2 -1 } + e = \musical_pitch { -1 2 0 } + eis = \musical_pitch { -1 2 1 } + eiss = \musical_pitch { -1 2 1 } + eisis = \musical_pitch { -1 2 2 } + eississ = \musical_pitch { -1 2 2 } + feses = \musical_pitch { -1 3 -2 } + fessess = \musical_pitch { -1 3 -2 } + fes = \musical_pitch { -1 3 -1 } + fess = \musical_pitch { -1 3 -1 } + f = \musical_pitch { -1 3 0 } + fis = \musical_pitch { -1 3 1 } + fiss = \musical_pitch { -1 3 1 } + fisis = \musical_pitch { -1 3 2 } + fississ = \musical_pitch { -1 3 2 } + geses = \musical_pitch { -1 4 -2 } + gessess = \musical_pitch { -1 4 -2 } + ges = \musical_pitch { -1 4 -1 } + gess = \musical_pitch { -1 4 -1 } + g = \musical_pitch { -1 4 0 } + g = \musical_pitch { -1 4 0 } + gis = \musical_pitch { -1 4 1 } + giss = \musical_pitch { -1 4 1 } + gisis = \musical_pitch { -1 4 2 } + gississ = \musical_pitch { -1 4 2 } + aeses = \musical_pitch { -1 5 -2 } + aessess = \musical_pitch { -1 5 -2 } + ases = \musical_pitch { -1 5 -2 } + assess = \musical_pitch { -1 5 -2 } + aes = \musical_pitch { -1 5 -1 } + aess = \musical_pitch { -1 5 -1 } + as = \musical_pitch { -1 5 -1 } + ass = \musical_pitch { -1 5 -1 } + a = \musical_pitch { -1 5 0 } + ais = \musical_pitch { -1 5 1 } + aiss = \musical_pitch { -1 5 1 } + aisis = \musical_pitch { -1 5 2 } + aississ = \musical_pitch { -1 5 2 } + bes = \musical_pitch { -1 6 -2 } + bess = \musical_pitch { -1 6 -2 } + b = \musical_pitch { -1 6 -1 } + b = \musical_pitch { -1 6 -1 } + h = \musical_pitch { -1 6 0 } + his = \musical_pitch { -1 6 1 } + hiss = \musical_pitch { -1 6 1 } + hisis = \musical_pitch { -1 6 2 } + hississ = \musical_pitch { -1 6 2 } % @@ -107,75 +107,75 @@ % - Ceses = \melodic_request { -2 0 -2 } - Cessess = \melodic_request { -2 0 -2 } - Ces = \melodic_request { -2 0 -1 } - Cess = \melodic_request { -2 0 -1 } - C = \melodic_request { -2 0 0 } - Cis = \melodic_request { -2 0 1 } - Ciss = \melodic_request { -2 0 1 } - Cisis = \melodic_request { -2 0 2 } - Cississ = \melodic_request { -2 0 2 } - Deses = \melodic_request { -2 1 -2 } - Dessess = \melodic_request { -2 1 -2 } - Des = \melodic_request { -2 1 -1 } - Dess = \melodic_request { -2 1 -1 } - D = \melodic_request { -2 1 0 } - D = \melodic_request { -2 1 0 } - Dis = \melodic_request { -2 1 1 } - Diss = \melodic_request { -2 1 1 } - Disis = \melodic_request { -2 1 2 } - Dississ = \melodic_request { -2 1 2 } - Eses = \melodic_request { -2 2 -2 } - Essess = \melodic_request { -2 2 -2 } - Es = \melodic_request { -2 2 -1 } - Ess = \melodic_request { -2 2 -1 } - E = \melodic_request { -2 2 0 } - E = \melodic_request { -2 2 0 } - Eis = \melodic_request { -2 2 1 } - Eiss = \melodic_request { -2 2 1 } - Eisis = \melodic_request { -2 2 2 } - Eississ = \melodic_request { -2 2 2 } - Feses = \melodic_request { -2 3 -2 } - Fessess = \melodic_request { -2 3 -2 } - Fes = \melodic_request { -2 3 -1 } - Fess = \melodic_request { -2 3 -1 } - F = \melodic_request { -2 3 0 } - Fis = \melodic_request { -2 3 1 } - Fiss = \melodic_request { -2 3 1 } - Fisis = \melodic_request { -2 3 2 } - Fississ = \melodic_request { -2 3 2 } - Geses = \melodic_request { -2 4 -2 } - Gessess = \melodic_request { -2 4 -2 } - Ges = \melodic_request { -2 4 -1 } - Gess = \melodic_request { -2 4 -1 } - G = \melodic_request { -2 4 0 } - Gis = \melodic_request { -2 4 1 } - Giss = \melodic_request { -2 4 1 } - Gisis = \melodic_request { -2 4 2 } - Gississ = \melodic_request { -2 4 2 } - Aeses = \melodic_request { -2 5 -2 } - Aessess = \melodic_request { -2 5 -2 } - Ases = \melodic_request { -2 5 -2 } - Assess = \melodic_request { -2 5 -2 } - Aes = \melodic_request { -2 5 -1 } - Aess = \melodic_request { -2 5 -1 } - As = \melodic_request { -2 5 -1 } - Ass = \melodic_request { -2 5 -1 } - A = \melodic_request { -2 5 0 } - A = \melodic_request { -2 5 0 } - Ais = \melodic_request { -2 5 1 } - Aiss = \melodic_request { -2 5 1 } - Aisis = \melodic_request { -2 5 2 } - Aississ = \melodic_request { -2 5 2 } - Bes = \melodic_request { -2 6 -2 } - Bess = \melodic_request { -2 6 -2 } - B = \melodic_request { -2 6 -1 } - H = \melodic_request { -2 6 0 } - His = \melodic_request { -2 6 1 } - Hiss = \melodic_request { -2 6 1 } - Hisis = \melodic_request { -2 6 2 } - Hississ = \melodic_request { -2 6 2 } + Ceses = \musical_pitch { -2 0 -2 } + Cessess = \musical_pitch { -2 0 -2 } + Ces = \musical_pitch { -2 0 -1 } + Cess = \musical_pitch { -2 0 -1 } + C = \musical_pitch { -2 0 0 } + Cis = \musical_pitch { -2 0 1 } + Ciss = \musical_pitch { -2 0 1 } + Cisis = \musical_pitch { -2 0 2 } + Cississ = \musical_pitch { -2 0 2 } + Deses = \musical_pitch { -2 1 -2 } + Dessess = \musical_pitch { -2 1 -2 } + Des = \musical_pitch { -2 1 -1 } + Dess = \musical_pitch { -2 1 -1 } + D = \musical_pitch { -2 1 0 } + D = \musical_pitch { -2 1 0 } + Dis = \musical_pitch { -2 1 1 } + Diss = \musical_pitch { -2 1 1 } + Disis = \musical_pitch { -2 1 2 } + Dississ = \musical_pitch { -2 1 2 } + Eses = \musical_pitch { -2 2 -2 } + Essess = \musical_pitch { -2 2 -2 } + Es = \musical_pitch { -2 2 -1 } + Ess = \musical_pitch { -2 2 -1 } + E = \musical_pitch { -2 2 0 } + E = \musical_pitch { -2 2 0 } + Eis = \musical_pitch { -2 2 1 } + Eiss = \musical_pitch { -2 2 1 } + Eisis = \musical_pitch { -2 2 2 } + Eississ = \musical_pitch { -2 2 2 } + Feses = \musical_pitch { -2 3 -2 } + Fessess = \musical_pitch { -2 3 -2 } + Fes = \musical_pitch { -2 3 -1 } + Fess = \musical_pitch { -2 3 -1 } + F = \musical_pitch { -2 3 0 } + Fis = \musical_pitch { -2 3 1 } + Fiss = \musical_pitch { -2 3 1 } + Fisis = \musical_pitch { -2 3 2 } + Fississ = \musical_pitch { -2 3 2 } + Geses = \musical_pitch { -2 4 -2 } + Gessess = \musical_pitch { -2 4 -2 } + Ges = \musical_pitch { -2 4 -1 } + Gess = \musical_pitch { -2 4 -1 } + G = \musical_pitch { -2 4 0 } + Gis = \musical_pitch { -2 4 1 } + Giss = \musical_pitch { -2 4 1 } + Gisis = \musical_pitch { -2 4 2 } + Gississ = \musical_pitch { -2 4 2 } + Aeses = \musical_pitch { -2 5 -2 } + Aessess = \musical_pitch { -2 5 -2 } + Ases = \musical_pitch { -2 5 -2 } + Assess = \musical_pitch { -2 5 -2 } + Aes = \musical_pitch { -2 5 -1 } + Aess = \musical_pitch { -2 5 -1 } + As = \musical_pitch { -2 5 -1 } + Ass = \musical_pitch { -2 5 -1 } + A = \musical_pitch { -2 5 0 } + A = \musical_pitch { -2 5 0 } + Ais = \musical_pitch { -2 5 1 } + Aiss = \musical_pitch { -2 5 1 } + Aisis = \musical_pitch { -2 5 2 } + Aississ = \musical_pitch { -2 5 2 } + Bes = \musical_pitch { -2 6 -2 } + Bess = \musical_pitch { -2 6 -2 } + B = \musical_pitch { -2 6 -1 } + H = \musical_pitch { -2 6 0 } + His = \musical_pitch { -2 6 1 } + Hiss = \musical_pitch { -2 6 1 } + Hisis = \musical_pitch { -2 6 2 } + Hississ = \musical_pitch { -2 6 2 } } diff --git a/init/svenska.ly b/init/svenska.ly index f679da1195..6b288cf3c3 100644 --- a/init/svenska.ly +++ b/init/svenska.ly @@ -10,41 +10,41 @@ % have a rhythmic part too. This is the reason that we don't write 'note { .. }' % \notenames { - cessess = \melodic_request { -1 0 -2 } - cess = \melodic_request { -1 0 -1 } - c = \melodic_request { -1 0 0 } - ciss = \melodic_request { -1 0 1 } - cississ = \melodic_request { -1 0 2 } - dessess = \melodic_request { -1 1 -2 } - dess = \melodic_request { -1 1 -1 } - d = \melodic_request { -1 1 0 } - diss = \melodic_request { -1 1 1 } - dississ = \melodic_request { -1 1 2 } - essess = \melodic_request { -1 2 -2 } - ess = \melodic_request { -1 2 -1 } - e = \melodic_request { -1 2 0 } - eiss = \melodic_request { -1 2 1 } - eississ = \melodic_request { -1 2 2 } - fessess = \melodic_request { -1 3 -2 } - fess = \melodic_request { -1 3 -1 } - f = \melodic_request { -1 3 0 } - fiss = \melodic_request { -1 3 1 } - fississ = \melodic_request { -1 3 2 } - gessess = \melodic_request { -1 4 -2 } - gess = \melodic_request { -1 4 -1 } - g = \melodic_request { -1 4 0 } - giss = \melodic_request { -1 4 1 } - gississ = \melodic_request { -1 4 2 } - assess = \melodic_request { -1 5 -2 } - ass = \melodic_request { -1 5 -1 } - a = \melodic_request { -1 5 0 } - aiss = \melodic_request { -1 5 1 } - aississ = \melodic_request { -1 5 2 } - hessess = \melodic_request { -1 6 -2 } - b = \melodic_request { -1 6 -1 } - h = \melodic_request { -1 6 0 } - hiss = \melodic_request { -1 6 1 } - hississ = \melodic_request { -1 6 2 } + cessess = \musical_pitch { -1 0 -2 } + cess = \musical_pitch { -1 0 -1 } + c = \musical_pitch { -1 0 0 } + ciss = \musical_pitch { -1 0 1 } + cississ = \musical_pitch { -1 0 2 } + dessess = \musical_pitch { -1 1 -2 } + dess = \musical_pitch { -1 1 -1 } + d = \musical_pitch { -1 1 0 } + diss = \musical_pitch { -1 1 1 } + dississ = \musical_pitch { -1 1 2 } + essess = \musical_pitch { -1 2 -2 } + ess = \musical_pitch { -1 2 -1 } + e = \musical_pitch { -1 2 0 } + eiss = \musical_pitch { -1 2 1 } + eississ = \musical_pitch { -1 2 2 } + fessess = \musical_pitch { -1 3 -2 } + fess = \musical_pitch { -1 3 -1 } + f = \musical_pitch { -1 3 0 } + fiss = \musical_pitch { -1 3 1 } + fississ = \musical_pitch { -1 3 2 } + gessess = \musical_pitch { -1 4 -2 } + gess = \musical_pitch { -1 4 -1 } + g = \musical_pitch { -1 4 0 } + giss = \musical_pitch { -1 4 1 } + gississ = \musical_pitch { -1 4 2 } + assess = \musical_pitch { -1 5 -2 } + ass = \musical_pitch { -1 5 -1 } + a = \musical_pitch { -1 5 0 } + aiss = \musical_pitch { -1 5 1 } + aississ = \musical_pitch { -1 5 2 } + hessess = \musical_pitch { -1 6 -2 } + b = \musical_pitch { -1 6 -1 } + h = \musical_pitch { -1 6 0 } + hiss = \musical_pitch { -1 6 1 } + hississ = \musical_pitch { -1 6 2 } % @@ -52,41 +52,41 @@ % - Cessess = \melodic_request { -2 0 -2 } - Cess = \melodic_request { -2 0 -1 } - C = \melodic_request { -2 0 0 } - Ciss = \melodic_request { -2 0 1 } - Cississ = \melodic_request { -2 0 2 } - Dessess = \melodic_request { -2 1 -2 } - Dess = \melodic_request { -2 1 -1 } - D = \melodic_request { -2 1 0 } - Diss = \melodic_request { -2 1 1 } - Dississ = \melodic_request { -2 1 2 } - Essess = \melodic_request { -2 2 -2 } - Ess = \melodic_request { -2 2 -1 } - E = \melodic_request { -2 2 0 } - Eiss = \melodic_request { -2 2 1 } - Eississ = \melodic_request { -2 2 2 } - Fessess = \melodic_request { -2 3 -2 } - Fess = \melodic_request { -2 3 -1 } - F = \melodic_request { -2 3 0 } - Fiss = \melodic_request { -2 3 1 } - Fississ = \melodic_request { -2 3 2 } - Gessess = \melodic_request { -2 4 -2 } - Gess = \melodic_request { -2 4 -1 } - G = \melodic_request { -2 4 0 } - Giss = \melodic_request { -2 4 1 } - Gississ = \melodic_request { -2 4 2 } - Assess = \melodic_request { -2 5 -2 } - Ass = \melodic_request { -2 5 -1 } - A = \melodic_request { -2 5 0 } - Aiss = \melodic_request { -2 5 1 } - Aississ = \melodic_request { -2 5 2 } - Hessess = \melodic_request { -2 6 -2 } - B = \melodic_request { -2 6 -1 } - H = \melodic_request { -2 6 0 } - Hiss = \melodic_request { -2 6 1 } - Hississ = \melodic_request { -2 6 2 } + Cessess = \musical_pitch { -2 0 -2 } + Cess = \musical_pitch { -2 0 -1 } + C = \musical_pitch { -2 0 0 } + Ciss = \musical_pitch { -2 0 1 } + Cississ = \musical_pitch { -2 0 2 } + Dessess = \musical_pitch { -2 1 -2 } + Dess = \musical_pitch { -2 1 -1 } + D = \musical_pitch { -2 1 0 } + Diss = \musical_pitch { -2 1 1 } + Dississ = \musical_pitch { -2 1 2 } + Essess = \musical_pitch { -2 2 -2 } + Ess = \musical_pitch { -2 2 -1 } + E = \musical_pitch { -2 2 0 } + Eiss = \musical_pitch { -2 2 1 } + Eississ = \musical_pitch { -2 2 2 } + Fessess = \musical_pitch { -2 3 -2 } + Fess = \musical_pitch { -2 3 -1 } + F = \musical_pitch { -2 3 0 } + Fiss = \musical_pitch { -2 3 1 } + Fississ = \musical_pitch { -2 3 2 } + Gessess = \musical_pitch { -2 4 -2 } + Gess = \musical_pitch { -2 4 -1 } + G = \musical_pitch { -2 4 0 } + Giss = \musical_pitch { -2 4 1 } + Gississ = \musical_pitch { -2 4 2 } + Assess = \musical_pitch { -2 5 -2 } + Ass = \musical_pitch { -2 5 -1 } + A = \musical_pitch { -2 5 0 } + Aiss = \musical_pitch { -2 5 1 } + Aississ = \musical_pitch { -2 5 2 } + Hessess = \musical_pitch { -2 6 -2 } + B = \musical_pitch { -2 6 -1 } + H = \musical_pitch { -2 6 0 } + Hiss = \musical_pitch { -2 6 1 } + Hississ = \musical_pitch { -2 6 2 } } diff --git a/input/bugs/a.ly b/input/bugs/a.ly index 0c6c3698f5..45b63b199e 100644 --- a/input/bugs/a.ly +++ b/input/bugs/a.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.14"; +\version "0.1.15"; shortlong = \melodic{ \octave c'; diff --git a/input/bugs/s.ly b/input/bugs/s.ly new file mode 100644 index 0000000000..c370d88947 --- /dev/null +++ b/input/bugs/s.ly @@ -0,0 +1,15 @@ +\header{ +% should look the same +title="symmetry"; +} +\score{ + \melodic{ + \octave relative; + [g'8( e )c' g,] + [d'( f' )a, a] + } + \paper{ + castingalgorithm = \Wordwrap; + linewidth = 50.0\mm; + } +} diff --git a/input/coriolan-alto.ly b/input/coriolan-alto.ly index 7013335d91..71587c72ca 100644 --- a/input/coriolan-alto.ly +++ b/input/coriolan-alto.ly @@ -16,7 +16,7 @@ TestedFeatures: % (maybe even sooner :-) % -\version "0.1.14"; +\version "0.1.15"; alto1 = \melodic{ \meter 4/4; diff --git a/input/keys.ly b/input/keys.ly index 30ec969af8..35f27b18d0 100644 --- a/input/keys.ly +++ b/input/keys.ly @@ -1,4 +1,4 @@ -\version "0.1.14"; +\version "0.1.15"; blah = \melodic{ diff --git a/input/kortjakje.ly b/input/kortjakje.ly index 573fb58e66..657eeaf89f 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.14"; +\version "0.1.15"; % the % is a comment. diff --git a/input/multi.ly b/input/multi.ly index acc7015351..ccd1322413 100644 --- a/input/multi.ly +++ b/input/multi.ly @@ -21,7 +21,7 @@ construct to get multiple staffs, it's cleaner %} -\version "0.1.14"; +\version "0.1.15"; \score{ \melodic diff --git a/input/pedal.ly b/input/pedal.ly index 8232e0ac75..651cd94fcb 100644 --- a/input/pedal.ly +++ b/input/pedal.ly @@ -24,7 +24,7 @@ % \lbheel \lbheel \lfheel \lftoe % \rbheel \rbtoe \rfheel \rftoe -\version "0.1.14"; +\version "0.1.15"; \score{ \melodic { diff --git a/input/praeludium-fuga-E.ly b/input/praeludium-fuga-E.ly index 6c590f3cb3..48ea88df3b 100644 --- a/input/praeludium-fuga-E.ly +++ b/input/praeludium-fuga-E.ly @@ -19,7 +19,7 @@ * organ staff... %} -\version "0.1.14"; +\version "0.1.15"; noShift = { \property Voice.hshift = 0 } Shift = { \property Voice.hshift = 1 } diff --git a/input/rhythm.ly b/input/rhythm.ly index 5e24efffe3..e0a019dbbf 100644 --- a/input/rhythm.ly +++ b/input/rhythm.ly @@ -7,7 +7,7 @@ TestedFeatures = "multiple meters, beaming, unsynced bars, userdefd engravers"; -\version "0.1.14"; +\version "0.1.15"; ritme = \melodic{ %\octave ; \partial 8; diff --git a/input/scales.ly b/input/scales.ly index 78391cf07e..397198f53e 100644 --- a/input/scales.ly +++ b/input/scales.ly @@ -12,7 +12,7 @@ copyright = "public domain"; % scales with accents. % -\version "0.1.14"; +\version "0.1.15"; blah = \melodic { \meter 6/8; \octave c, ; diff --git a/input/scripts.ly b/input/scripts.ly index 956a089f7b..31c227d576 100644 --- a/input/scripts.ly +++ b/input/scripts.ly @@ -1,5 +1,5 @@ -\version "0.1.14"; +\version "0.1.15"; blah = \melodic { diff --git a/input/test/beams.ly b/input/test/beams.ly index 9e84886ea1..f3bb1637dc 100644 --- a/input/test/beams.ly +++ b/input/test/beams.ly @@ -6,7 +6,7 @@ copyright = "PD"; TestedFeatures = "beams and beamflags"; } -\version "0.1.14"; +\version "0.1.15"; \score{ < diff --git a/input/test/broken.ly b/input/test/broken.ly index 54a6565f53..16b44a6f6e 100644 --- a/input/test/broken.ly +++ b/input/test/broken.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.14"; +\version "0.1.15"; shortlong = \melodic{ c4()c( c c | diff --git a/input/test/collisions.ly b/input/test/collisions.ly index fa3106ebc2..6ab2e5f41e 100644 --- a/input/test/collisions.ly +++ b/input/test/collisions.ly @@ -5,7 +5,7 @@ enteredby = "HWN,JCN"; copyright = "public domain"; Tested = "test the Collision resolution "; } -\version "0.1.14"; +\version "0.1.15"; diff --git a/input/test/denneboom.ly b/input/test/denneboom.ly index 8e955b22e9..23ae35e3ba 100644 --- a/input/test/denneboom.ly +++ b/input/test/denneboom.ly @@ -7,7 +7,7 @@ TestedFeatures = "This file tests silly line shapes"; \include "paper20.ly" -\version "0.1.14"; +\version "0.1.15"; oden = \lyric{ O8 | diff --git a/input/test/font-body.ly b/input/test/font-body.ly index 3ca03b6f8c..c9fbb81382 100644 --- a/input/test/font-body.ly +++ b/input/test/font-body.ly @@ -1,4 +1,4 @@ -\version "0.1.14"; +\version "0.1.15"; FontBody= \melodic{ \octave c'; \bar "|:"; diff --git a/input/test/font.ly b/input/test/font.ly index 1047e9883e..1b72842cd6 100644 --- a/input/test/font.ly +++ b/input/test/font.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.14"; +\version "0.1.15"; \include "font-body.ly" \score{ diff --git a/input/test/font16.ly b/input/test/font16.ly index bc8c5a1c77..a79a64d7c4 100644 --- a/input/test/font16.ly +++ b/input/test/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.14"; +\version "0.1.15"; \include "font-body.ly" \score{ diff --git a/input/test/gourlay.ly b/input/test/gourlay.ly index 6c627538da..0e83b364b1 100644 --- a/input/test/gourlay.ly +++ b/input/test/gourlay.ly @@ -4,7 +4,7 @@ copyright = "PD"; TestedFeatures = "This file tests some nasty Gourlay spacings"; } -\version "0.1.14"; +\version "0.1.15"; %{ diff --git a/input/test/hara-kiri.ly b/input/test/hara-kiri.ly new file mode 100644 index 0000000000..4a63bd9367 --- /dev/null +++ b/input/test/hara-kiri.ly @@ -0,0 +1,36 @@ +\score{ + \melodic{ + c4 c c c \break + d d d d \break + R1*4 \break + e4 e e e \break + f f f f \break + } + \paper{ + linewidth = 40.0\mm; + +% this is broken: edit init/engraver.ly +% +%{ +Staff = \translator { + \type "Engraver_group_engraver"; + defaultclef = violin; + + \consists "Bar_engraver"; + \consists "Clef_engraver"; + \consists "Key_engraver"; + \consists "Meter_engraver"; + \consists "Local_key_engraver"; + \consists "Staff_sym_engraver"; + \consists "Collision_engraver"; + \consists "Rest_collision_engraver"; + \consists "Bar_column_engraver"; + \consists "Bar_number_engraver"; + + \consists "Separating_line_group_engraver"; +% \consists "Line_group_engraver"; + \consists "Hara_kiri_line_group_engraver"; +%} + } + } +} diff --git a/input/test/knee.ly b/input/test/knee.ly index 502d255bb3..f43487c34f 100644 --- a/input/test/knee.ly +++ b/input/test/knee.ly @@ -1,7 +1,9 @@ -\version "0.1.14"; +\version "0.1.15"; \score{ \melodic{ \octave relative; [c16 \stemdown c'' \stemboth c,, d] + \stemdown [d'' a \stemboth c,, g,] + \stemup [g c' \stemboth a'' d'] } } diff --git a/input/test/sleur.ly b/input/test/sleur.ly index 508ba0226a..d0bdc34543 100644 --- a/input/test/sleur.ly +++ b/input/test/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.14"; +\version "0.1.15"; shortlong = \melodic{ c4()c( c c | diff --git a/input/test/slurs.ly b/input/test/slurs.ly index 8574c0f750..aeb78c5ac8 100644 --- a/input/test/slurs.ly +++ b/input/test/slurs.ly @@ -1,5 +1,5 @@ -\version "0.1.14"; +\version "0.1.15"; \score{ \melodic{\octave c'; diff --git a/input/test/spacing.ly b/input/test/spacing.ly index 88e7eb85d4..3af80b1eb0 100644 --- a/input/test/spacing.ly +++ b/input/test/spacing.ly @@ -6,7 +6,7 @@ copyright = "public domain"; TestedFeatures = "This file tests various spacings"; } -\version "0.1.14"; +\version "0.1.15"; multipart = \melodic{ \multi 3 < diff --git a/input/test/stem.ly b/input/test/stem.ly index 60d6700600..c707e14ef3 100644 --- a/input/test/stem.ly +++ b/input/test/stem.ly @@ -8,7 +8,7 @@ of beams"; } -\version "0.1.14"; +\version "0.1.15"; beamintervals = \melodic{ \meter 7/4; diff --git a/input/tril.ly b/input/tril.ly index d4d5f8e261..a09198ee97 100644 --- a/input/tril.ly +++ b/input/tril.ly @@ -5,7 +5,7 @@ TestedFeatures = "This file tests trills" "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "0.1.14"; +\version "0.1.15"; \score{ \melodic{ diff --git a/input/twinkle-pop.ly b/input/twinkle-pop.ly index fd070478e7..599749f934 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.14"; +\version "0.1.15"; melodie = \melodic { \clef"violin"; diff --git a/input/twinkle.ly b/input/twinkle.ly index 5e5127f077..ed7bb618b4 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.14"; +\version "0.1.15"; melody = \melodic{ \clef violin; diff --git a/lib/template.cc b/lib/template.cc index b9638cea0c..4ebec57399 100644 --- a/lib/template.cc +++ b/lib/template.cc @@ -6,18 +6,14 @@ (c) 1997--1998 Han-Wen Nienhuys */ +#include "config.hh" #include "source-file.hh" #include "plist.tcc" #include "pcursor.tcc" #include "cursor.tcc" #include "list.tcc" -// #if!defined(__CYGWIN32__) && __GNUC_MINOR__ < 8 -// it seems irix (-Dsgi ?) and sunos (-Dsparc ?) - -// see comments in lily/template1.cc mi2mu/template9.cc - -#if (defined(__linux__) && (__GNUC_MINOR__ < 8)) +#ifdef NEED_EXPLICIT_INSTANTIATION LIST_INSTANTIATE (void *); #endif diff --git a/lily/VERSION b/lily/VERSION index 9e7293e3d7..c7309d695e 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -1,5 +1,5 @@ MAJOR_VERSION=0 MINOR_VERSION=1 -PATCH_LEVEL=64 +PATCH_LEVEL=65 MY_PATCH_LEVEL= diff --git a/lily/beam.cc b/lily/beam.cc index 142d1f7b3b..55256fdd5b 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -277,7 +277,11 @@ Beam::solve_slope () */ { Real dx = stems_.top ()->hpos_f () - stems_[0]->hpos_f (); - left_y_ = sinfo[0].idealy_f_ >? sinfo.top ().idealy_f_ - slope_f_ * dx; + if (sinfo[0].dir_ == sinfo.top ().dir_) + left_y_ = sinfo[0].idealy_f_ >? sinfo.top ().idealy_f_ - slope_f_ * dx; + // knee + else + left_y_ = sinfo[0].idealy_f_; } } diff --git a/lily/chord-iterator.cc b/lily/chord-iterator.cc index 2d37445ae4..1629d3fb37 100644 --- a/lily/chord-iterator.cc +++ b/lily/chord-iterator.cc @@ -40,6 +40,8 @@ Chord_iterator::construct_children() delete mi; } } + + void Chord_iterator::do_print() const { diff --git a/lily/command-request.cc b/lily/command-request.cc index b4f142a7ed..5cc36319bf 100644 --- a/lily/command-request.cc +++ b/lily/command-request.cc @@ -207,13 +207,9 @@ Measure_grouping_req::do_equal_b (Request*) const /* *************** */ void -Key_change_req::transpose (Melodic_req const * d) const +Key_change_req::transpose (Musical_pitch d) const { - WARN << _("don't know how to transpose a key. \n"); - for (int i=0; i < melodic_p_arr_.size(); i++) - { - melodic_p_arr_[i]->transpose (d); - } + WARN << _("don't know how to transpose a key. \n"); // TODO! } @@ -221,9 +217,9 @@ IMPLEMENT_IS_TYPE_B1(Key_change_req,Command_req); void Key_change_req::squash_octaves() { - for (int i=0; i < melodic_p_arr_.size(); i++) + for (int i=0; i < pitch_arr_.size(); i++) { - melodic_p_arr_[i]->octave_i_ = 0; + pitch_arr_[i].octave_i_ = 0; } } @@ -231,9 +227,9 @@ void Key_change_req::do_print() const { #ifndef NPRINT - for (int i=0; i < melodic_p_arr_.size(); i++) + for (int i=0; i < pitch_arr_.size(); i++) { - melodic_p_arr_[i]->print(); + pitch_arr_[i].print(); } #endif } @@ -256,31 +252,14 @@ Break_req::do_print () const { } -Key_change_req::Key_change_req (Key_change_req const&c) - : Command_req (c) -{ - for (int i=0; i < c.melodic_p_arr_.size(); i++) - melodic_p_arr_.push (c.melodic_p_arr_[i]->clone()->musical ()->melodic ()); - minor_b_ = c.minor_b_; - multi_octave_b_ = c.multi_octave_b_; -} - -Key_change_req::~Key_change_req() -{ - for (int i=0; i < melodic_p_arr_.size(); i++) - delete melodic_p_arr_[i]; -} - int Key_change_req::flats_i() { int flats_i = 0; - for (int i = 0; i < melodic_p_arr_.size(); i++) + for (int i = 0; i < pitch_arr_.size(); i++) { - Melodic_req* mel_l = melodic_p_arr_[i]->melodic(); - assert (mel_l); - if (mel_l->accidental_i_ < 0) - flats_i -= mel_l->accidental_i_; + if (pitch_arr_[i].accidental_i_ < 0) + flats_i -= pitch_arr_[i].accidental_i_; } return flats_i; } @@ -295,12 +274,10 @@ int Key_change_req::sharps_i() { int sharps_i = 0; - for (int i = 0; i < melodic_p_arr_.size(); i++) + for (int i = 0; i < pitch_arr_.size(); i++) { - Melodic_req* mel_l = melodic_p_arr_[i]->melodic(); - assert (mel_l); - if (mel_l->accidental_i_ > 0) - sharps_i+= mel_l->accidental_i_; + if (pitch_arr_[i].accidental_i_ < 0) + sharps_i += pitch_arr_[i].accidental_i_; } return sharps_i; } diff --git a/lily/debug.cc b/lily/debug.cc index f33f0ba83d..8fcb8eba4b 100644 --- a/lily/debug.cc +++ b/lily/debug.cc @@ -72,7 +72,7 @@ bool check_debug=false; bool check_malloc_b = false; -// #define MEMORY_PARANOID +//#define MEMORY_PARANOID #ifdef MEMORY_PARANOID diff --git a/lily/head-grav.cc b/lily/head-grav.cc index 104b5678de..5820c5fa5f 100644 --- a/lily/head-grav.cc +++ b/lily/head-grav.cc @@ -47,7 +47,7 @@ Note_head_engraver::do_process_requests() announce_element (Score_elem_info (dot_p_,0)); } - note_p_->position_i_ = note_req_l_->note()->height (); + note_p_->position_i_ = note_req_l_->note()->pitch_.steps (); Staff_info inf = get_staff_info(); if (inf.c0_position_i_l_) diff --git a/lily/include/command-request.hh b/lily/include/command-request.hh index 112fa2f6d8..8085fd6621 100644 --- a/lily/include/command-request.hh +++ b/lily/include/command-request.hh @@ -13,6 +13,7 @@ #include "request.hh" #include "varray.hh" #include "duration.hh" +#include "musical-pitch.hh" /** Request which are assumed to be "happening" before the musical requests. */ @@ -134,14 +135,12 @@ public: */ class Key_change_req : public Command_req { public: - Array melodic_p_arr_; + Array pitch_arr_; bool minor_b_; /// don't ignore the octaves in #melodic_p_arr_#? bool multi_octave_b_; Key_change_req(); - Key_change_req (Key_change_req const&); - ~Key_change_req(); REQUESTMETHODS(Key_change_req, keychange); /// squash the octaves to 1 @@ -152,7 +151,7 @@ public: /// return number of sharps in key int sharps_i(); - void transpose (Melodic_req const * d) const; + void transpose (Musical_pitch d) const; /// is minor key? int minor_b(); }; diff --git a/lily/include/key-grav.hh b/lily/include/key-grav.hh index 59ab88c661..b895af193a 100644 --- a/lily/include/key-grav.hh +++ b/lily/include/key-grav.hh @@ -18,7 +18,7 @@ */ class Key_engraver : public Engraver { void create_key(); - void read_req (Key_change_req * r); + void read_req (Key_change_req const * r); public: Key_engraver(); diff --git a/lily/include/key.hh b/lily/include/key.hh index 5875f84e6b..90c1479235 100644 --- a/lily/include/key.hh +++ b/lily/include/key.hh @@ -9,6 +9,7 @@ #include "varray.hh" #include "scalar.hh" +#include "lily-proto.hh" /// administration of current key in one octave. class Octave_key { @@ -33,9 +34,12 @@ public: bool multi_octave_b_; void clear (); - Octave_key&oct (int); + Octave_key const& oct (int) const; void set (int name, int acc); - void set (int oct, int name, int acc); + void set (Musical_pitch); + + bool different_acc (Musical_pitch) const; + Key(); void print () const; }; diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 49f234b8e1..319f054432 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -77,9 +77,12 @@ struct Element_group_item; struct General_script_def; struct Graphical_element; struct Music_output; +struct Musical_pitch; struct Music_output_def; struct Global_translator; struct Group_change_req; +struct Hara_kiri_line_group_engraver; +struct Hara_kiri_vertical_group_spanner; struct Head_column; struct Header; struct Horizontal_align_item; @@ -98,6 +101,7 @@ struct Key_performer; struct Keyword; struct Keyword_table; struct Lily_stream; +struct Line_group_engraver; struct Line_of_score; struct Line_of_staff; struct Line_spacer; @@ -163,6 +167,9 @@ struct Plet_spanner; struct Pulk_voice; struct Pulk_voices; struct Rational; +struct Music_wrapper_iterator; +struct Music_wrapper; +struct Relative_octave_music; struct Engraver_group_engraver; struct Performer; struct Performer_group_performer; diff --git a/lily/include/local-key-item.hh b/lily/include/local-key-item.hh index 4d0ed37e2d..ec41cb3a54 100644 --- a/lily/include/local-key-item.hh +++ b/lily/include/local-key-item.hh @@ -8,13 +8,7 @@ #define LOCALKEYITEM_HH #include "item.hh" #include "varray.hh" - -struct Local_acc { - int name_i_; - int accidental_i_; - int octave_i_; - static int compare (Local_acc&, Local_acc&); -}; +#include "musical-pitch.hh" /** Accidentals which can be different for each octave. @@ -30,7 +24,7 @@ struct Local_acc { class Local_key_item : public Item { public: DECLARE_MY_RUNTIME_TYPEINFO; - Array accs; + Array accs; Link_array support_items_; int c0_position; @@ -38,8 +32,7 @@ public: Local_key_item (int c0position); void add_support (Item*); - void add (int oct, int pitch, int acc); - void add (Melodic_req*); + void add (Musical_pitch); protected: virtual void do_pre_processing(); virtual void do_substitute_dependency (Score_elem*,Score_elem*); diff --git a/lily/include/music-list.hh b/lily/include/music-list.hh index 21c3ca9056..018832f773 100644 --- a/lily/include/music-list.hh +++ b/lily/include/music-list.hh @@ -17,75 +17,67 @@ /** Music can be a list of other "Music" elements */ -class Music_list : public Music { +class Music_list : public Music +{ public: - int multi_level_i_; - - Music_list (Music_list const&); - Music_list(); - DECLARE_MY_RUNTIME_TYPEINFO; - VIRTUAL_COPY_CONS(Music_list,Music); - virtual void add (Music*); - virtual void transpose (Melodic_req const *); + int multi_level_i_; + + Musical_pitch do_relative_octave (Musical_pitch, bool); + Music_list (Music_list const&); + Music_list(); + DECLARE_MY_RUNTIME_TYPEINFO; + VIRTUAL_COPY_CONS(Music_list,Music); + virtual void add (Music*); + virtual void transpose (Musical_pitch ); - Pointer_list music_p_list_; + Pointer_list music_p_list_; protected: - virtual void do_print() const; + virtual void do_print() const; }; /** Chord is a list of music-elements which happen simultaneously */ -class Chord : public Music_list { +class Chord : public Music_list +{ public: - Chord(); - DECLARE_MY_RUNTIME_TYPEINFO; - VIRTUAL_COPY_CONS(Chord,Music); - virtual void translate (Moment dt); - virtual MInterval time_int() const; + Chord(); + DECLARE_MY_RUNTIME_TYPEINFO; + VIRTUAL_COPY_CONS(Chord,Music); + + virtual Musical_pitch to_relative_octave (Musical_pitch); + virtual void translate (Moment dt); + virtual MInterval time_int() const; }; /** The request is a collection of Requests. A note that you enter in mudela is one Request_chord, one syllable of lyrics is one Request_chord */ -class Request_chord : public Chord { +class Request_chord : public Chord +{ public: - DECLARE_MY_RUNTIME_TYPEINFO; - Request_chord(); - VIRTUAL_COPY_CONS(Request_chord,Music); + DECLARE_MY_RUNTIME_TYPEINFO; + virtual Musical_pitch to_relative_octave (Musical_pitch); + Request_chord(); + VIRTUAL_COPY_CONS(Request_chord, Music); }; - /** Voice is a list of music-elements which are placed behind each other. */ -class Voice : public Music_list { +class Voice : public Music_list +{ public: - Moment offset_mom_; - - Voice(); - DECLARE_MY_RUNTIME_TYPEINFO; - VIRTUAL_COPY_CONS(Voice, Music); - virtual void translate (Moment dt); - virtual MInterval time_int() const; -}; - -/** A simple piece of music, which wishes to change the spot of its - interpretor */ -class Change_reg : public Music { -public: - - /// what kind of iterator needed to walk this music? - String type_str_; - - /// what name (or look for this name) - String id_str_; - - DECLARE_MY_RUNTIME_TYPEINFO; - VIRTUAL_COPY_CONS(Change_reg, Music); + Moment offset_mom_; + virtual Musical_pitch to_relative_octave (Musical_pitch); + Voice(); + DECLARE_MY_RUNTIME_TYPEINFO; + VIRTUAL_COPY_CONS(Voice, Music); + virtual void translate (Moment dt); + virtual MInterval time_int() const; }; #endif // MUSIC_LIST_HH diff --git a/lily/include/music-wrapper-iterator.hh b/lily/include/music-wrapper-iterator.hh new file mode 100644 index 0000000000..cd5ad0a986 --- /dev/null +++ b/lily/include/music-wrapper-iterator.hh @@ -0,0 +1,34 @@ +/* + music-wrapper-iterator.hh -- declare + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#ifndef MUSIC_WRAPPER_ITERATOR_HH +#define MUSIC_WRAPPER_ITERATOR_HH + +#include "music.hh" +#include "music-iterator.hh" + +class Music_wrapper_iterator : public Music_iterator +{ + Music_iterator *child_iter_p_; + Music_wrapper *music_l_; +public: + Music_wrapper_iterator (Music_wrapper*); + ~Music_wrapper_iterator (); + virtual void do_print () const; + virtual void construct_children () ; + virtual void process_and_next (Moment) ; + virtual Moment next_moment () const; + virtual bool ok () const; + DECLARE_MY_RUNTIME_TYPEINFO; +}; + +#endif /* MUSIC_WRAPPER_ITERATOR_HH */ + + + diff --git a/lily/include/music-wrapper.hh b/lily/include/music-wrapper.hh new file mode 100644 index 0000000000..989fb5fd0c --- /dev/null +++ b/lily/include/music-wrapper.hh @@ -0,0 +1,33 @@ +/* + music-wrapper.hh -- declare Music_wrapper + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#ifndef MUSIC_WRAPPER_HH +#define MUSIC_WRAPPER_HH + +#include "music.hh" +#include "musical-pitch.hh" + +class Music_wrapper : public Music +{ +public: + Music * element_p_; + Music_wrapper (Music*); + virtual void transpose (Musical_pitch); + virtual void do_print () const; + DECLARE_MY_RUNTIME_TYPEINFO; + VIRTUAL_COPY_CONS (Music_wrapper, Music); + Music_wrapper (Music_wrapper const&); + virtual MInterval time_int () const; + virtual ~Music_wrapper (); +}; + + + +#endif /* MUSIC_WRAPPER_HH */ + diff --git a/lily/include/music.hh b/lily/include/music.hh index c59cb5b88b..b5e85ff184 100644 --- a/lily/include/music.hh +++ b/lily/include/music.hh @@ -42,10 +42,11 @@ public: /// what name (or look for this name) String translator_id_str_; + virtual Musical_pitch to_relative_octave (Musical_pitch); virtual MInterval time_int() const; virtual ~Music(){} void print() const; - virtual void transpose (Melodic_req const *); + virtual void transpose (Musical_pitch ); virtual void translate (Moment dt); VIRTUAL_COPY_CONS(Music,Music); DECLARE_MY_RUNTIME_TYPEINFO; diff --git a/lily/include/musical-pitch.hh b/lily/include/musical-pitch.hh new file mode 100644 index 0000000000..643cf04678 --- /dev/null +++ b/lily/include/musical-pitch.hh @@ -0,0 +1,46 @@ +/* + musical-pitch.hh -- declare Musical_pitch + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#ifndef MUSICAL_PITCH_HH +#define MUSICAL_PITCH_HH +#include "lily-proto.hh" + +/** The pitch as it figures in diatonal western music (12 semitones in + an octave). + + It is not Music because, it has to duration associated +*/ +struct Musical_pitch { + /// 0 is c, 6 is b + int notename_i_; + /// 0 is central c + int octave_i_; + + /// 0 natural, 1 sharp, etc + int accidental_i_; + void init () ; + Musical_pitch to_relative_octave (Musical_pitch); + void transpose (Musical_pitch); + static int compare (Musical_pitch const&,Musical_pitch const&); + /// return large part of interval from central c + int steps() const; + /// return pitch from central c (in halfnotes) + int semitone_pitch() const; + Musical_pitch (); + void up_to (int); + void down_to (int); + String str () const; + void print () const; +}; + +#include "compare.hh" +INSTANTIATE_COMPARE(Musical_pitch, Musical_pitch::compare); + +#endif /* MUSICAL_PITCH_HH */ + diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh index 850ba3463f..2b3bf0fc58 100644 --- a/lily/include/musical-request.hh +++ b/lily/include/musical-request.hh @@ -13,7 +13,7 @@ #include "lily-proto.hh" #include "request.hh" #include "duration.hh" - +#include "musical-pitch.hh" /** A request which is coupled to a #Request_chord# @@ -112,24 +112,14 @@ public: REQUESTMETHODS(Lyric_req, lreq_l); }; + + /// request which has some kind of pitch struct Melodic_req :virtual Musical_req { - /// 0 is c, 6 is b - int notename_i_; - /// 0 is central c - int octave_i_; - - /// 0 natural, 1 sharp, etc - int accidental_i_; - - /// return height from central c (in halflines) - int height() const; - + Musical_pitch pitch_; /// transpose. #delta# is relative to central c. - virtual void transpose (Melodic_req const *delta); - /// return pitch from central c (in halfnotes) - int pitch() const; + virtual void transpose (Musical_pitch delta); Melodic_req(); bool do_equal_b (Request*) const; static int compare (Melodic_req const&,Melodic_req const&); diff --git a/lily/include/my-lily-lexer.hh b/lily/include/my-lily-lexer.hh index b0bccca7f5..42ac85949f 100644 --- a/lily/include/my-lily-lexer.hh +++ b/lily/include/my-lily-lexer.hh @@ -11,6 +11,7 @@ #include +#include "dictionary.hh" #include "lily-proto.hh" #include "lily-proto.hh" #include "fproto.hh" @@ -18,6 +19,7 @@ #include "string.hh" #include "includable-lexer.hh" #include "duration.hh" +#include "musical-pitch.hh" bool busy_parsing(); void kill_lexer(); @@ -36,7 +38,7 @@ public: void * lexval_l; Scope * toplevel_scope_p_; - Notename_table *note_tab_p_; + Notename_table *note_tab_p_; Array scope_l_arr_; Keyword_table * keytable_p_; int errorlevel_i_; @@ -45,8 +47,9 @@ public: void start_main_input (); void clear_notenames(); + bool notename_b(String) const; Identifier*lookup_identifier (String s); - Melodic_req* lookup_melodic_req_l (String s); + Musical_pitch lookup_pitch (String s); void push_note_state(); void push_lyric_state(); void pop_state(); @@ -56,7 +59,7 @@ public: ~My_lily_lexer(); int yylex(); void print_declarations (bool init_b) const; - void add_notename (String, Melodic_req*); + void add_notename (String, Musical_pitch); bool note_state_b() const; bool lyric_state_b() const; }; diff --git a/lily/include/my-lily-parser.hh b/lily/include/my-lily-parser.hh index c68d4ea4c7..0dd977dca9 100644 --- a/lily/include/my-lily-parser.hh +++ b/lily/include/my-lily-parser.hh @@ -10,7 +10,6 @@ #ifndef MY_LILY_PARSER_HH #define MY_LILY_PARSER_HH #include "lily-proto.hh" -#include "duration.hh" #include "string.hh" #include "varray.hh" #include "lily-proto.hh" @@ -31,28 +30,21 @@ class My_lily_parser { Chord* get_rest_element (String,Duration *); Chord* get_word_element (Text_def*, Duration*); Melodic_req* get_melodic_req (Melodic_req* melodic, int quotes); - void set_nearest (Melodic_req* melodic); String notename_str (Melodic_req* melodic); - void set_last_duration (Duration const *); - void set_default_duration (Duration const *); void set_abbrev_beam (int type_i); - void set_duration_mode (String s); - void set_octave_mode (String s); friend int yyparse (void*); public: int abbrev_beam_type_i_; int default_octave_i_; - Melodic_req* last_melodic_; Duration default_duration_; Plet plet_; Header *default_header_p_; String textstyle_str_; bool first_b_; - bool last_duration_mode_b_ ; - bool relative_octave_mode_b_; + Array pre_reqs, post_reqs; int fatal_error_i_; Sources * source_l_; @@ -61,7 +53,7 @@ public: My_lily_lexer * lexer_p_; Moment plet_mom(); - void add_notename (String, Melodic_req* req_p); + void add_notename (String, Musical_pitch req_p); Input here_input() const; void remember_spot(); Input pop_spot(); diff --git a/lily/include/notename-table.hh b/lily/include/notename-table.hh index 96dcccb84c..a9181e9d90 100644 --- a/lily/include/notename-table.hh +++ b/lily/include/notename-table.hh @@ -14,11 +14,11 @@ #include "string.hh" #include "lily-proto.hh" #include "dictionary.hh" +#include "musical-pitch.hh" -class Notename_table : Dictionary< P >{ +class Notename_table : public Dictionary< Musical_pitch >{ public: - void add (String, Melodic_req*); - Melodic_req*get_l (String); + String get_name (Musical_pitch) const; }; #endif // NOTENAME_TABLE_HH diff --git a/lily/include/relative-music-iterator.hh b/lily/include/relative-music-iterator.hh new file mode 100644 index 0000000000..0971a62d2d --- /dev/null +++ b/lily/include/relative-music-iterator.hh @@ -0,0 +1,17 @@ +/* + relative-music-iterator.hh -- declare + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#ifndef RELATIVE_MUSIC_ITERATOR_HH +#define RELATIVE_MUSIC_ITERATOR_HH + + + +#error +#endif /* RELATIVE_MUSIC_ITERATOR_HH */ + diff --git a/lily/include/relative-music.hh b/lily/include/relative-music.hh new file mode 100644 index 0000000000..dd1639858a --- /dev/null +++ b/lily/include/relative-music.hh @@ -0,0 +1,29 @@ +/* + relative-music.hh -- declare Relative_octave_music + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#ifndef RELATIVE_MUSIC_HH +#define RELATIVE_MUSIC_HH + +#include "music-wrapper.hh" + +class Relative_octave_music : public Music_wrapper +{ +public: + Musical_pitch last_pitch_; + + void do_print () const; + Relative_octave_music (Music*, Musical_pitch); + DECLARE_MY_RUNTIME_TYPEINFO; + VIRTUAL_COPY_CONS (Relative_octave_music, Music); + virtual Musical_pitch to_relative_octave (Musical_pitch); +}; + + +#endif /* RELATIVE_MUSIC_HH */ + diff --git a/lily/include/request.hh b/lily/include/request.hh index ccdf48422b..a349f5786b 100644 --- a/lily/include/request.hh +++ b/lily/include/request.hh @@ -34,7 +34,6 @@ public: VIRTUAL_COPY_CONS(Request,Music); virtual MInterval time_int() const; - virtual void transpose (Melodic_req const &){} virtual Moment duration() const { return 0; } /* accessors for children diff --git a/lily/key-grav.cc b/lily/key-grav.cc index fe98853726..f50fc47729 100644 --- a/lily/key-grav.cc +++ b/lily/key-grav.cc @@ -100,23 +100,21 @@ Key_engraver::do_pre_move_processing() void -Key_engraver::read_req (Key_change_req * r) +Key_engraver::read_req (Key_change_req const * r) { key_.clear (); key_.multi_octave_b_ = r->multi_octave_b_; accidental_idx_arr_.clear(); - for (int i = 0; i < r->melodic_p_arr_.size(); i ++) + for (int i = 0; i < r->pitch_arr_.size(); i ++) { - Melodic_req * m_l =r->melodic_p_arr_[i]; - int n_i =m_l->notename_i_; - int a_i = m_l->accidental_i_; - int o_i = m_l->octave_i_; + Musical_pitch m_l =r->pitch_arr_[i]; if (r->multi_octave_b_) - key_.set (o_i, n_i, a_i); + key_.set (m_l); else - key_.set (n_i, a_i); - accidental_idx_arr_.push (n_i); + key_.set (m_l.notename_i_, m_l.accidental_i_); + + accidental_idx_arr_.push (m_l.notename_i_); } } diff --git a/lily/key.cc b/lily/key.cc index 46a8ce55ac..b7d9f22a23 100644 --- a/lily/key.cc +++ b/lily/key.cc @@ -11,6 +11,7 @@ #include "key.hh" #include "debug.hh" +#include "musical-pitch.hh" const int NUMBER_OF_OCTAVES=14; // ugh.. const int ZEROOCTAVE=7; @@ -61,10 +62,9 @@ Key::octave_to_index (int o) const return i; } -Octave_key& -Key::oct (int i) +Octave_key const& +Key::oct (int i) const { - return octaves_[octave_to_index (i)]; } @@ -86,10 +86,10 @@ Octave_key::set (int i, int a) } void -Key::set (int o, int n , int a) +Key::set (Musical_pitch p) { - int i = octave_to_index (o); - octaves_[i].set (n,a); + int i = octave_to_index (p.octave_i_); + octaves_[i].set (p.notename_i_,p.accidental_i_); } void @@ -114,3 +114,9 @@ Key::print () const DOUT << "}\n"; } } + +bool +Key::different_acc (Musical_pitch p)const +{ + return oct (p.octave_i_).acc (p.notename_i_) == p.accidental_i_; +} diff --git a/lily/lexer.ll b/lily/lexer.ll index aefb42336e..92da6c5f1d 100644 --- a/lily/lexer.ll +++ b/lily/lexer.ll @@ -379,13 +379,11 @@ My_lily_lexer::scan_escaped_word (String str) return id->token_code_i_; } if (YYSTATE != notes) { - Melodic_req * mel_l = lookup_melodic_req_l (str); - if (mel_l) { - DOUT << "(notename)\n"; - yylval.melreq = mel_l; - mel_l->set_spot (Input (source_file_l (), here_ch_C ())); - return NOTENAME_IDENTIFIER; - } + if (notename_b (str)) + { + yylval.pitch = new Musical_pitch (lookup_pitch (str)); + return NOTENAME_PITCH; + } } if (check_debug) print_declarations (true); @@ -402,12 +400,11 @@ My_lily_lexer::scan_bare_word (String str) { DOUT << "word: `" << str<< "'\n"; if (YYSTATE == notes){ - Melodic_req * mel_l = lookup_melodic_req_l (str); - if (mel_l) { + if (notename_b (str)) { DOUT << "(notename)\n"; - yylval.melreq = mel_l; - mel_l->set_spot (Input (source_file_l (), here_ch_C ())); - return NOTENAME_IDENTIFIER; + yylval.pitch = new Musical_pitch (lookup_pitch (str)); + + return NOTENAME_PITCH; } } diff --git a/lily/local-key-grav.cc b/lily/local-key-grav.cc index 474a5910ce..8e492b621a 100644 --- a/lily/local-key-grav.cc +++ b/lily/local-key-grav.cc @@ -54,9 +54,8 @@ Local_key_engraver::process_acknowledged () !note_l->forceacc_b_) continue; - if (!note_l->forceacc_b_ && - local_key_.oct (note_l->octave_i_).acc (note_l->notename_i_) - == note_l->accidental_i_) + if (!note_l->forceacc_b_ + && local_key_.different_acc (note_l->pitch_)) continue; if (!key_item_p_) { @@ -69,11 +68,10 @@ Local_key_engraver::process_acknowledged () key_item_p_ = new Local_key_item (c0_i); announce_element (Score_elem_info (key_item_p_, 0)); } - key_item_p_->add (note_l); + key_item_p_->add (note_l->pitch_); key_item_p_->add_support (support_l); - local_key_.oct (note_l->octave_i_) - .set (note_l->notename_i_, note_l->accidental_i_); - } + local_key_.set (note_l->pitch_); + } } } diff --git a/lily/local-key-item.cc b/lily/local-key-item.cc index ea45b32d44..c4041f0b92 100644 --- a/lily/local-key-item.cc +++ b/lily/local-key-item.cc @@ -1,5 +1,5 @@ /* - local-key-item.cc -- implement Local_key_item, Local_acc + local-key-item.cc -- implement Local_key_item, Musical_pitch source file of the GNU LilyPond music typesetter @@ -15,8 +15,6 @@ #include "note-head.hh" #include "misc.hh" - - Local_key_item::Local_key_item (int i) { c0_position = i; @@ -32,29 +30,19 @@ Local_key_item::add_support (Item*head_l) } void -Local_key_item::add (Melodic_req*m_l) +Local_key_item::add (Musical_pitch p) { - add (m_l->octave_i_, m_l->notename_i_, m_l->accidental_i_); -} - -void -Local_key_item::add (int o, int p , int a) -{ - Local_acc l; - l.octave_i_ = o; - l.name_i_ = p; - l.accidental_i_ = a; for (int i=0; i< accs.size(); i++) - if (!Local_acc::compare (l, accs[i])) + if (!Musical_pitch::compare (p, accs[i])) return; - accs.push (l); + accs.push (p); } void Local_key_item::do_pre_processing() { - accs.sort (Local_acc::compare); + accs.sort (Musical_pitch::compare); } Molecule* @@ -79,7 +67,7 @@ Local_key_item::brew_molecule_p() const octave_mol_p= new Molecule; } lastoct = accs[i].octave_i_; - Real dy = (accs[i].name_i_ + c0_position) * paper()->internote_f (); + Real dy = (accs[i].notename_i_ + c0_position) * paper()->internote_f (); Atom a (paper()->lookup_l ()->accidental (accs[i].accidental_i_)); a.translate_axis (dy, Y_AXIS); @@ -121,17 +109,6 @@ Local_key_item::brew_molecule_p() const return output; } -int -Local_acc::compare (Local_acc&a, Local_acc&b) -{ - if (a.octave_i_ - b.octave_i_) - return a.octave_i_ - b.octave_i_; - if (a.name_i_ - b.name_i_) - return a.name_i_ - b.name_i_; - - return a.accidental_i_ - b.accidental_i_; -}; - IMPLEMENT_IS_TYPE_B1(Local_key_item,Item); void diff --git a/lily/midi-item.cc b/lily/midi-item.cc index 46c5f3420b..543e8c0886 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -406,7 +406,7 @@ Midi_note::duration () const int Midi_note::pitch_i () const { - return audio_item_l_->req_l_->musical ()->melodic ()->pitch (); + return audio_item_l_->req_l_->musical ()->melodic ()->pitch_.semitone_pitch (); } String @@ -437,7 +437,7 @@ Midi_note_off::Midi_note_off (Midi_note* midi_note_l) int Midi_note_off::pitch_i () const { - return audio_item_l_->req_l_->musical ()->melodic ()->pitch (); + return audio_item_l_->req_l_->musical ()->melodic ()->pitch_.semitone_pitch (); } String diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index e6a65fdadb..a26231c0a9 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -17,6 +17,10 @@ #include "change-iterator.hh" #include "change-translator.hh" +#include "music-wrapper.hh" +#include "music-wrapper-iterator.hh" + + IMPLEMENT_IS_TYPE_B(Music_iterator); @@ -134,6 +138,9 @@ Music_iterator::static_get_iterator_p (Music *m, p = new Property_iterator((Translation_property *) m); else if (m->is_type_b (Change_translator::static_name ())) p = new Change_iterator((Change_translator*) m); + else if (m->is_type_b (Music_wrapper::static_name ())) + p = new Music_wrapper_iterator ((Music_wrapper *)m); + if (m -> translator_type_str_.length_i ()) { @@ -163,3 +170,4 @@ Music_iterator::Music_iterator() first_b_ = true; } + diff --git a/lily/music-list.cc b/lily/music-list.cc index 84934a99c5..e6b652f987 100644 --- a/lily/music-list.cc +++ b/lily/music-list.cc @@ -11,13 +11,16 @@ #include "music.hh" #include "debug.hh" #include "music-list.hh" +#include "musical-pitch.hh" +#include "request.hh" +#include "musical-request.hh" Music_list::Music_list (Music_list const&s) : Music (s) { multi_level_i_ = s.multi_level_i_; for (iter (s.music_p_list_.top(), i); i.ok (); i++) - add (i->clone()); + add (i->clone()); } IMPLEMENT_IS_TYPE_B1(Music_list, Music); @@ -29,7 +32,7 @@ Chord::time_int() const { MInterval m; for (iter (music_p_list_.top(), i); i.ok (); i++) - m.unite (i->time_int()); + m.unite (i->time_int()); return m; } @@ -38,7 +41,7 @@ void Chord::translate (Moment m) { for (iter (music_p_list_.top(), i); i.ok (); i++) - i->translate (m); + i->translate (m); } Chord::Chord() @@ -57,17 +60,29 @@ Voice::time_int() const Moment last=0; for (iter (music_p_list_.top(), i); i.ok (); i++) { - MInterval interval = i->time_int(); + MInterval interval = i->time_int(); /* - c4 <> c4 + c4 <> c4 */ - if (!interval.empty_b()) - last += interval.length(); + if (!interval.empty_b()) + last += interval.length(); } return offset_mom_ + MInterval (0,last); } +Musical_pitch +Voice::to_relative_octave (Musical_pitch p) +{ + return do_relative_octave (p, false); +} + +Musical_pitch +Chord::to_relative_octave (Musical_pitch p) +{ + return do_relative_octave (p, true); +} + void Voice::translate (Moment dt) { @@ -84,17 +99,17 @@ void Music_list::add (Music*m_p) { if (!m_p) - return; + return; m_p->parent_music_l_ = this; music_p_list_.bottom().add (m_p); } void -Music_list::transpose (Melodic_req const*rq) +Music_list::transpose (Musical_pitch rq) { for (iter (music_p_list_.top(),i); i.ok (); i++) - i->transpose (rq); + i->transpose (rq); } void @@ -102,7 +117,7 @@ Music_list::do_print() const { #ifndef NPRINT for (iter (music_p_list_.top(),i); i.ok (); i++) - i->print(); + i->print(); #endif } @@ -113,3 +128,39 @@ Request_chord::Request_chord() { multi_level_i_ =0; } + + +Musical_pitch +Music_list::do_relative_octave (Musical_pitch last, bool ret_first) +{ + + Musical_pitch retval; + int count=0; + for (iter (music_p_list_.top(),i); i.ok (); i++) + { + last = i->to_relative_octave (last); + if (!count ++ ) + retval = last; + } + if (!ret_first) + retval = last; + return retval; +} + +Musical_pitch +Request_chord::to_relative_octave (Musical_pitch last) +{ + for (iter (music_p_list_.top(),i); i.ok (); i++) + { + Musical_req *m =((Request*)i.ptr ())->musical (); + if (m && m->melodic ()) + { + Musical_pitch &pit = m->melodic()->pitch_; + pit.to_relative_octave (last); + return pit; + } + } + return last; +} + + diff --git a/lily/music-wrapper-iterator.cc b/lily/music-wrapper-iterator.cc new file mode 100644 index 0000000000..1160611e70 --- /dev/null +++ b/lily/music-wrapper-iterator.cc @@ -0,0 +1,58 @@ +/* + music-wrapper-iterator.cc -- implement + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + + +#include "music-wrapper-iterator.hh" +#include "music-wrapper.hh" + +Music_wrapper_iterator::Music_wrapper_iterator (Music_wrapper *r) +{ + child_iter_p_ =0; + music_l_ = r; +} + +IMPLEMENT_IS_TYPE_B1(Music_wrapper_iterator, Music_iterator); + +void +Music_wrapper_iterator::do_print () const +{ + child_iter_p_->print (); +} + +void +Music_wrapper_iterator::construct_children () +{ + child_iter_p_ = get_iterator_p (music_l_->element_p_); +} + +Music_wrapper_iterator::~Music_wrapper_iterator () +{ + delete child_iter_p_; +} + + +bool +Music_wrapper_iterator::ok () const +{ + return child_iter_p_->ok (); +} + +void +Music_wrapper_iterator::process_and_next (Moment m) +{ + child_iter_p_->process_and_next (m); + Music_iterator::process_and_next (m); +} + +Moment +Music_wrapper_iterator::next_moment () const +{ + return child_iter_p_->next_moment (); +} + diff --git a/lily/music-wrapper.cc b/lily/music-wrapper.cc new file mode 100644 index 0000000000..2e241d5800 --- /dev/null +++ b/lily/music-wrapper.cc @@ -0,0 +1,49 @@ +/* + music-wrapper.cc -- implement + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + + +#include "music-wrapper.hh" + +Music_wrapper::~Music_wrapper () +{ + delete element_p_; +} + +Music_wrapper::Music_wrapper (Music_wrapper const&s) + : Music (s) +{ + element_p_ = (s.element_p_)?s.element_p_->clone ():0; +} + + +void +Music_wrapper::do_print () const +{ + element_p_->print (); +} +void +Music_wrapper::transpose (Musical_pitch p) +{ + if (element_p_) + element_p_-> transpose (p); +} + + +Music_wrapper::Music_wrapper(Music*p) +{ + element_p_ = p; +} + +IMPLEMENT_IS_TYPE_B1 (Music_wrapper, Music); + +MInterval +Music_wrapper::time_int () const +{ + return element_p_->time_int (); +} diff --git a/lily/music.cc b/lily/music.cc index 298dd2dc5c..5b33f57c54 100644 --- a/lily/music.cc +++ b/lily/music.cc @@ -10,6 +10,7 @@ #include "music.hh" #include "music-list.hh" #include "debug.hh" +#include "musical-pitch.hh" MInterval Music::time_int() const @@ -32,7 +33,7 @@ Music::print() const } void -Music::transpose (Melodic_req const*) +Music::transpose (Musical_pitch ) { } @@ -58,6 +59,10 @@ Music::Music() parent_music_l_ =0; } -IMPLEMENT_IS_TYPE_B1(Change_reg,Music) +Musical_pitch +Music::to_relative_octave (Musical_pitch m) +{ + return m; +} diff --git a/lily/musical-pitch.cc b/lily/musical-pitch.cc new file mode 100644 index 0000000000..89da2e12d9 --- /dev/null +++ b/lily/musical-pitch.cc @@ -0,0 +1,238 @@ +/* + musical-pitch.cc -- implement Musical_pitch + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ +#include "musical-pitch.hh" +#include "debug.hh" + +Musical_pitch::Musical_pitch () +{ + init (); +} + +void +Musical_pitch::init () +{ + notename_i_ = 0; + octave_i_ = 0; + accidental_i_ = 0; +} + +void +Musical_pitch::print () const +{ +#ifndef NPRINT + DOUT << str(); +#endif +} + +int +Musical_pitch::compare (Musical_pitch const &m1, Musical_pitch const &m2) +{ + int o= m1.octave_i_ - m2.octave_i_; + int n = m1.notename_i_ - m2.notename_i_; + int a = m1.accidental_i_ - m2.accidental_i_; + + if (o) + return o; + if (n) + return n; + if (a) + return a; + return 0; +} + +int +Musical_pitch::steps () const +{ + return notename_i_ + octave_i_*7; +} + +/* + should be settable from input to allow "viola"-mode + */ +static Byte pitch_byte_a[ ] = { 0, 2, 4, 5, 7, 9, 11 }; + +int +Musical_pitch::semitone_pitch () const +{ + return pitch_byte_a[ notename_i_ % 7 ] + accidental_i_ + octave_i_ * 12; +} + +void +Musical_pitch::transpose (Musical_pitch delta) +{ + int old_pitch = semitone_pitch (); + int delta_pitch = delta.semitone_pitch (); + octave_i_ += delta.octave_i_; + notename_i_ += delta.notename_i_; + + + while (notename_i_ >= 7) + { + notename_i_ -= 7; + octave_i_ ++; + } + + int new_pitch = semitone_pitch (); + int delta_acc = new_pitch - old_pitch - delta_pitch; + accidental_i_ -= delta_acc; +} + + +char const *accname[] = {"double flat", "flat", "natural", + "sharp" , "double sharp"}; + +String +Musical_pitch::str () const +{ + int n = (notename_i_ + 2) % 7; + String s (char(n + 'a')); + if (accidental_i_) + s += " " + String (accname[accidental_i_ + 2]); + + if (octave_i_) + s += String ((octave_i_> 0)? "^": "_") + String(octave_i_); + + + return s; +} + +Musical_pitch +Musical_pitch::to_relative_octave (Musical_pitch p) +{ + int oct_mod = octave_i_ + 1; // account for c' = octave 1 iso. 0 4 + Musical_pitch up_pitch (p); + Musical_pitch down_pitch (p); + + up_pitch.accidental_i_ = accidental_i_; + down_pitch.accidental_i_ = accidental_i_; + + up_pitch.up_to (notename_i_); + down_pitch.down_to (notename_i_); + int h = p.steps (); + if (abs (up_pitch.steps () - h) < abs (down_pitch.steps () - h)) + { + *this = up_pitch; + /* this sux imnsho + if (oct_mod > 0) // ugh + oct_mod --;*/ + } + else + { + *this = down_pitch; + /* if (oct_mod < 0) + oct_mod ++;*/ + } + + octave_i_ += oct_mod; + return *this; +} + +void +Musical_pitch::up_to (int notename) +{ + if (notename_i_ > notename) + { + octave_i_ ++; + } + notename_i_ = notename; +} + +void +Musical_pitch::down_to (int notename) +{ + if (notename_i_ < notename) + { + octave_i_ --; + } + notename_i_ = notename; +} + +#if 0 + +Musical_pitch +My_lily_parser::get_melodic_req (Musical_pitch p, int quotes) +{ + if (relative_octave_mode_b_) + { + set_nearest (melodic); + int d = melodic->pitch () - last_melodic_->pitch (); + int shift = 0; + if (quotes && (sign (d) == sign (quotes))) + shift -= sign (quotes); + if (!quotes && (abs (d) == 6)) + { + String str = _("Octave ambiguity; assuming "); + /* + [TODO] + figure this out. + + If the distance is exactly*) half an octave, there is + no nearest pitch. In that case, we'll try to guess what + composer/ typist meant. + Firstly, we'll do this by comparing the 'notename distance': + + f b' % name-distance: f g a b: 3 + + is surely a shorter notename distance than + + f 'b % name-distance: b c d e f: 4 + + (should we give a warning at all, or can we safely assume + this is a positive interval up?) + + *) It is conceivable that, musically speaking, the interval + with the greater pitch-distance is thought to be smaller? + + */ + + int name_delta = melodic->notename_i_ - last_melodic_->notename_i_; + int name_near = abs (name_delta) % 7; + int name_wrap = (7 - abs (name_delta)) % 7; + if (name_near != name_wrap) + shift = name_near < name_wrap ? sign (name_delta) : -sign (name_delta); + else if (sign (last_melodic_->accidental_i_) + != sign (melodic->accidental_i_)) + shift = last_melodic_->accidental_i_ - melodic->accidental_i_; + else + shift = -1; + String name_str = notename_str (melodic); + str += shift > 0 ? name_str + "'" : "'" + name_str; + if (sign (d) == sign (shift)) + shift = 0; + melodic->warning (str); + } + melodic->octave_i_ += quotes + shift; + } + else + { + Melodic_req nearest (*melodic); + set_nearest (&nearest); + melodic->octave_i_ += quotes; + + if (find_quarts_global_b) + { + int e = melodic->pitch () - nearest.pitch (); + if (e) + { + int d = melodic->pitch () - last_melodic_->pitch (); + String str = _("Interval greater than quart"); + int n = 1 + (abs (d) - 1) / 12; + String quote_str ('\'', n); + str += _(", relative: "); + String name_str = notename_str (melodic); + str += d < 0 ? quote_str + name_str : name_str + quote_str; + melodic->warning (str); + } + } + } + delete last_melodic_; + last_melodic_ = melodic->clone ()->musical ()->melodic (); + return melodic; +} +#endif diff --git a/lily/musical-request.cc b/lily/musical-request.cc index a74eed0700..c2d0d0450a 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -81,31 +81,16 @@ Blank_req::do_print () const Melodic_req::Melodic_req () { - notename_i_ = 0; - octave_i_ = 0; - accidental_i_ = 0; } void -Melodic_req::transpose (Melodic_req const * delta) +Melodic_req::transpose (Musical_pitch delta) { - int old_pitch = pitch (); - int delta_pitch = delta->pitch (); - octave_i_ += delta->octave_i_; - notename_i_ += delta->notename_i_; - while (notename_i_ >= 7) + pitch_.transpose (delta); + + if (abs (pitch_.accidental_i_) > 2) { - notename_i_ -= 7; - octave_i_ ++; - } - - int new_pitch = pitch (); - int delta_acc = new_pitch - old_pitch - delta_pitch; - - accidental_i_ -= delta_acc; - if (abs (accidental_i_) > 2) - { - delta->warning (_ ("transposition makes accidental larger than 2")); + warning (_ ("transposition by ") + delta.str () + _(" makes accidental larger than 2")); } } @@ -121,43 +106,13 @@ Melodic_req::do_equal_b (Request*r) const int Melodic_req::compare (Melodic_req const &m1 , Melodic_req const&m2) { - int o= m1.octave_i_ - m2.octave_i_; - int n = m1.notename_i_ - m2.notename_i_; - int a = m1.accidental_i_ - m2.accidental_i_; - - if (o) - return o; - if (n) - return n; - if (a) - return a; - return 0; + return Musical_pitch::compare (m1.pitch_, m2.pitch_); } void Melodic_req::do_print () const { -#ifndef NPRINT - DOUT << "notename: " << notename_i_ - << " acc: " <get_l (s); + return (*note_tab_p_)[s]; +} + +bool +My_lily_lexer::notename_b (String s) const +{ + return note_tab_p_->elt_b (s); } void -My_lily_lexer::add_notename (String s, Melodic_req *p) +My_lily_lexer::add_notename (String s, Musical_pitch p) { - note_tab_p_->add (s,p); + (*note_tab_p_)[s] = p; } void diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc index eb380bbd4c..736f21b398 100644 --- a/lily/my-lily-parser.cc +++ b/lily/my-lily-parser.cc @@ -30,16 +30,8 @@ My_lily_parser::My_lily_parser (Sources * source_l) default_octave_i_ = 0; textstyle_str_="roman"; // in lexer? error_level_i_ = 0; - last_duration_mode_b_ = true; fatal_error_i_ = 0; default_header_p_ =0; - - relative_octave_mode_b_ = false; - - last_melodic_ = new Melodic_req; - last_melodic_->octave_i_ = 0; // -1; // huh? - last_melodic_->notename_i_ = 0; - last_melodic_->accidental_i_ = 0; } My_lily_parser::~My_lily_parser() @@ -107,161 +99,24 @@ My_lily_parser::parser_error (String s) exit_status_i_ = 1; } -void -My_lily_parser::set_duration_mode (String s) -{ - s = s.upper_str(); - last_duration_mode_b_ = (s== "LAST"); -} - -void -My_lily_parser::set_octave_mode (String s) -{ - s = s.upper_str(); - if (s == "RELATIVE") - { - relative_octave_mode_b_ = true; - // must reset these - last_melodic_ = new Melodic_req; - last_melodic_->octave_i_ = 0; // -1; // huh? - last_melodic_->notename_i_ = 0; - last_melodic_->accidental_i_ = 0; - } - else - relative_octave_mode_b_ = false; -} - void My_lily_parser::set_abbrev_beam (int type_i) { abbrev_beam_type_i_ = type_i; } -void -My_lily_parser::set_default_duration (Duration const *d) -{ - last_duration_mode_b_ = false; - default_duration_ = *d; -} - void My_lily_parser::set_last_duration (Duration const *d) { - if (last_duration_mode_b_) - { - default_duration_ = *d; + default_duration_ = *d; /* - forget plet part, - sticky plet factor only within plet brackets - */ - default_duration_.set_plet (1, 1); - } -} - -String -My_lily_parser::notename_str (Melodic_req* melodic) -{ - // ugh - String str ((char)('a' + ((melodic->notename_i_ + 2) % 7))); - int i = melodic->accidental_i_; - while (i-- > 0) - str += "is"; - i++; - while (i++ < 0) - str += "es"; - return str; -} - -Melodic_req* -My_lily_parser::get_melodic_req (Melodic_req* melodic, int quotes) -{ - if (relative_octave_mode_b_) - { - set_nearest (melodic); - int d = melodic->pitch () - last_melodic_->pitch (); - int shift = 0; - if (quotes && (sign (d) == sign (quotes))) - shift -= sign (quotes); - if (!quotes && (abs (d) == 6)) - { - String str = _("Octave ambiguity; assuming "); - /* - [TODO] - figure this out. - - If the distance is exactly*) half an octave, there is - no nearest pitch. In that case, we'll try to guess what - composer/ typist meant. - Firstly, we'll do this by comparing the 'notename distance': - - f b' % name-distance: f g a b: 3 - - is surely a shorter notename distance than - - f 'b % name-distance: b c d e f: 4 - - (should we give a warning at all, or can we safely assume - this is a positive interval up?) - - *) It is conceivable that, musically speaking, the interval - with the greater pitch-distance is thought to be smaller? - - */ - - int name_delta = melodic->notename_i_ - last_melodic_->notename_i_; - int name_near = abs (name_delta) % 7; - int name_wrap = (7 - abs (name_delta)) % 7; - if (name_near != name_wrap) - shift = name_near < name_wrap ? sign (name_delta) : -sign (name_delta); - else if (sign (last_melodic_->accidental_i_) - != sign (melodic->accidental_i_)) - shift = last_melodic_->accidental_i_ - melodic->accidental_i_; - else - shift = -1; - String name_str = notename_str (melodic); - str += shift > 0 ? name_str + "'" : "'" + name_str; - if (sign (d) == sign (shift)) - shift = 0; - melodic->warning (str); - } - melodic->octave_i_ += quotes + shift; - } - else - { - Melodic_req nearest (*melodic); - set_nearest (&nearest); - melodic->octave_i_ += quotes; - - if (find_quarts_global_b) - { - int e = melodic->pitch () - nearest.pitch (); - if (e) - { - int d = melodic->pitch () - last_melodic_->pitch (); - String str = _("Interval greater than quart"); - int n = 1 + (abs (d) - 1) / 12; - String quote_str ('\'', n); - str += _(", relative: "); - String name_str = notename_str (melodic); - str += d < 0 ? quote_str + name_str : name_str + quote_str; - melodic->warning (str); - } - } - } - delete last_melodic_; - last_melodic_ = melodic->clone ()->musical ()->melodic (); - return melodic; + forget plet part, + sticky plet factor only within plet brackets + */ + default_duration_.set_plet (1, 1); } -void -My_lily_parser::set_nearest (Melodic_req* melodic) -{ - melodic->octave_i_ = last_melodic_->octave_i_; - int d = melodic->pitch () - last_melodic_->pitch (); - if (abs (d) > 6) - melodic->octave_i_ -= sign (d); -} Chord* My_lily_parser::get_word_element (Text_def* tdef_p, Duration * duration_p) @@ -454,22 +309,23 @@ My_lily_parser::here_input() const } void -My_lily_parser::add_notename (String s, Melodic_req * m_p) +My_lily_parser::add_notename (String s, Musical_pitch p) { - lexer_p_->add_notename (s, m_p); + lexer_p_->add_notename (s, p); + } Paper_def* My_lily_parser::default_paper_p () { - Identifier *id = lexer_p_->lookup_identifier ("default_paper"); - return id ? id->paperdef () : new Paper_def ; + Identifier *id = lexer_p_->lookup_identifier ("default_paper"); + return id ? id->paperdef () : new Paper_def ; } Midi_def* My_lily_parser::default_midi_p () { - Identifier *id = lexer_p_->lookup_identifier ("default_midi"); - return id ? id->mididef () : new Midi_def ; + Identifier *id = lexer_p_->lookup_identifier ("default_midi"); + return id ? id->mididef () : new Midi_def ; } diff --git a/lily/notename-table.cc b/lily/notename-table.cc index 1f3bc99210..fa86049c65 100644 --- a/lily/notename-table.cc +++ b/lily/notename-table.cc @@ -9,20 +9,16 @@ #include "notename-table.hh" #include "pointer.tcc" #include "musical-request.hh" +#include "assoc-iter.hh" -template class P; - -void -Notename_table::add (String s, Melodic_req *m_p) +String +Notename_table::get_name (Musical_pitch m) const { - elem (s).set_p (m_p); -} -Melodic_req* -Notename_table::get_l (String s) -{ - if (! elt_b (s)) - return 0; - return elem (s); + for (Assoc_iter ai (*this); ai.ok (); ai++) + { + if (ai.val () == m) + return ai.key (); + } + return "r"; // rest. } - diff --git a/lily/parser.yy b/lily/parser.yy index 94a20a8921..c585b7c934 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -39,10 +39,12 @@ #include "file-results.hh" #include "mudela-version.hh" #include "scope.hh" +#include "relative-music.hh" + // mmm -Mudela_version oldest_version ("0.1.14"); -Mudela_version version ("0.1.14"); +Mudela_version oldest_version ("0.1.15"); +Mudela_version version ("0.1.15"); // needed for bison.simple's malloc() and free() @@ -77,7 +79,7 @@ Paper_def* current_paper = 0; %union { Array* intarr; - Array *melreqvec;/* should clean up naming */ + Array *pitch_arr; Array * strvec; Array *intvec; Box *box; @@ -91,9 +93,10 @@ Paper_def* current_paper = 0; Header *header; Interval *interval; Lookup*lookup; - Melodic_req * melreq; + Musical_req* musreq; Music_output_def * outputdef; + Musical_pitch * pitch; Midi_def* midi; Moment *moment; Note_req *notereq; @@ -142,6 +145,7 @@ yylex (YYSTYPE *s, void * v_l) %token CLEAR %token CLEF %token CONTAINS +%token RELATIVE %token CONSISTS %token ACCEPTS %token CM_T @@ -154,9 +158,10 @@ yylex (YYSTYPE *s, void * v_l) %token IN_T %token LYRIC %token KEY +%token MUSICAL_PITCH %token MELODIC %token MIDI -%token MELODIC_REQUEST + %token METER %token MM_T %token MULTI @@ -192,10 +197,10 @@ yylex (YYSTYPE *s, void * v_l) %type dots %token DIGIT -%token NOTENAME_IDENTIFIER +%token NOTENAME_PITCH %token DURATION_IDENTIFIER %token IDENTIFIER -%token MELODIC_REQUEST_IDENTIFIER + %token MUSIC_IDENTIFIER %token VOICE_IDENTIFIER %token POST_REQUEST_IDENTIFIER @@ -227,19 +232,20 @@ yylex (YYSTYPE *s, void * v_l) %type int unsigned %type script_dir %type identifier_init simple_identifier_init -%type explicit_steno_duration notemode_duration +%type steno_duration notemode_duration %type entered_notemode_duration explicit_duration %type dinterval %type intastint_list %type symtables symtables_body -%type melodic_request steno_melodic_req -%type steno_note_req -%type pitch_list + +%type explicit_musical_pitch steno_musical_pitch musical_pitch absolute_musical_pitch +%type steno_notepitch +%type pitch_list %type midi_block midi_body %type duration_length %type scalar -%type Music transposed_music +%type Music transposed_music relative_music %type property_def translator_change %type Voice Voice_body %type Chord Chord_body @@ -307,8 +313,9 @@ notenames_body: | notenames_body CLEAR { THIS->clear_notenames (); } - | notenames_body STRING '=' melodic_request { - THIS->add_notename (*$2, $4); + | notenames_body STRING '=' explicit_musical_pitch { + THIS->add_notename (*$2, *$4); + delete $4; delete $2; } ; @@ -382,10 +389,11 @@ identifier_init: | post_request { $$ = new Request_identifier ($1, POST_REQUEST_IDENTIFIER); } - | melodic_request { +/* | melodic_request { $$ = new Request_identifier ($1, MELODIC_REQUEST_IDENTIFIER); } + */ | explicit_duration { $$ = new Duration_identifier ($1, DURATION_IDENTIFIER); } @@ -685,6 +693,15 @@ Music: { $$ = $3; THIS->lexer_p_->pop_state (); } | property_def | translator_change + | relative_music { $$ = $1; } + ; + +relative_music: + RELATIVE absolute_musical_pitch Music + { + $$ = new Relative_octave_music ($3, *$2); + delete $2; + } ; translator_change: @@ -740,9 +757,9 @@ Chord_body: ; transposed_music: - TRANSPOSE steno_melodic_req Music { + TRANSPOSE musical_pitch Music { $$ = $3; - $$ -> transpose ($2); + $$ -> transpose (*$2); delete $2; } @@ -830,7 +847,7 @@ verbose_command_req: } | KEY pitch_list { Key_change_req *key_p= new Key_change_req; - key_p->melodic_p_arr_ = *$2; + key_p->pitch_arr_ = *$2; $$ = key_p; delete $2; } @@ -893,54 +910,51 @@ sub_quotes: $$ = 1; } | sub_quotes ',' { - $$++ ; + $$ ++ ; } ; -/* - URG!! +steno_musical_pitch: + NOTENAME_PITCH { + $$ = $1; + $$->octave_i_ += THIS->default_octave_i_; + } + | NOTENAME_PITCH sup_quotes { + $$ = $1; + $$->octave_i_ += $2 + THIS->default_octave_i_; - Whitespace mustn't be stripped. So what? - Python is cool, and there even the amount *and* type of whitespace - is significant. So this is not uncool per se, maybe context-free - just sucks for humans. - jcn -*/ -steno_melodic_req: - NOTENAME_IDENTIFIER { - Melodic_req* m = $1->clone ()->musical ()->melodic (); - $$ = THIS->get_melodic_req (m, 0 + THIS->default_octave_i_); } - | NOTENAME_IDENTIFIER sup_quotes { - Melodic_req* m = $1->clone ()->musical ()->melodic (); - $$ = THIS->get_melodic_req (m, $2 + THIS->default_octave_i_); + | NOTENAME_PITCH sub_quotes { + $$ = $1; + $$->octave_i_ += THIS->default_octave_i_ - $2 ; } - | NOTENAME_IDENTIFIER sub_quotes { - Melodic_req* m = $1->clone ()->musical ()->melodic (); - $$ = THIS->get_melodic_req (m, -$2 + THIS->default_octave_i_); + ; + +explicit_musical_pitch: + MUSICAL_PITCH '{' int int int '}' {/* ugh */ + $$ = new Musical_pitch; + $$->octave_i_ = $3; + $$->notename_i_ = $4; + $$->accidental_i_ = $5; } ; +musical_pitch: + steno_musical_pitch + | explicit_musical_pitch + ; -steno_note_req: - steno_melodic_req { +steno_notepitch: + musical_pitch { $$ = new Note_req; - *(Melodic_req *) $$ = *$1; + + $$->pitch_ = *$1; delete $1; } - | steno_note_req '!' { + | steno_notepitch '!' { $$->forceacc_b_ = ! $$->forceacc_b_; } - /* have to duration here. */ ; -melodic_request: - MELODIC_REQUEST '{' int int int '}' {/* ugh */ - $$ = new Melodic_req; - $$->octave_i_ = $3; - $$->notename_i_ = $4; - $$->accidental_i_ = $5; - } - ; explicit_duration: DURATION '{' int unsigned '}' { @@ -1164,39 +1178,15 @@ pre_requests: } ; -voice_command: - DURATION STRING { - THIS->set_duration_mode (*$2); - delete $2; - } - | DURATION entered_notemode_duration { - THIS->set_default_duration ($2); - delete $2; - } - | OCTAVE { - /* - This is weird, but default_octave_i_ - is used in steno_note_req too - - c' -> default_octave_i_ == 1 - */ - - /* why can't we have \oct 0 iso \oct{c'}*/ - // because that's silly. - - // for relative octaves, the octave setting is done - // automatically by the parsing of steno_melodic_req! - if (!THIS->relative_octave_mode_b_) - THIS->default_octave_i_ = 1; - } - /* cont */ - steno_melodic_req { - if (!THIS->relative_octave_mode_b_) - THIS->default_octave_i_ = $3->octave_i_; - delete $3; +absolute_musical_pitch: + steno_musical_pitch { + $$ = $1; + $$->octave_i_ -= THIS->default_octave_i_; } - | OCTAVE STRING { - THIS->set_octave_mode (*$2); + ; +voice_command: + OCTAVE absolute_musical_pitch { + THIS->default_octave_i_ = $2->octave_i_; delete $2; } | TEXTSTYLE STRING { @@ -1209,7 +1199,7 @@ duration_length: { $$ = new Moment (0,1); } - | duration_length explicit_steno_duration { + | duration_length steno_duration { *$$ += $2->length (); } ; @@ -1231,7 +1221,7 @@ entered_notemode_duration: $$->set_plet (THIS->plet_.iso_i_, THIS->plet_.type_i_); $$->dots_i_ = $1; } - | explicit_steno_duration { + | steno_duration { THIS->set_last_duration ($1); $$ = $1; } @@ -1243,7 +1233,7 @@ notemode_duration: } ; -explicit_steno_duration: +steno_duration: unsigned { $$ = new Duration; if (!Duration::duration_type_b ($1)) @@ -1256,13 +1246,13 @@ explicit_steno_duration: | DURATION_IDENTIFIER { $$ = $1->duration (); } - | explicit_steno_duration '.' { + | steno_duration '.' { $$->dots_i_ ++; } - | explicit_steno_duration '*' unsigned { + | steno_duration '*' unsigned { $$->plet_.iso_i_ = $3; /* ugh. should do *= */ } - | explicit_steno_duration '/' unsigned { + | steno_duration '/' unsigned { $$->plet_.type_i_ = $3; /* ugh. should do *= iso = */ } ; @@ -1282,8 +1272,10 @@ abbrev_type: ; + + music_elt: - steno_note_req notemode_duration { + steno_notepitch notemode_duration { if (!THIS->lexer_p_->note_state_b ()) THIS->parser_error ("have to be in Note mode for notes"); $1->set_duration (*$2); @@ -1320,10 +1312,11 @@ lyrics_elt: UTILITIES */ pitch_list: { - $$ = new Array; + $$ = new Array; } - | pitch_list NOTENAME_IDENTIFIER { - $$->push ($2->clone ()->musical ()->melodic ()); + | pitch_list NOTENAME_PITCH { + $$->push (*$2); + delete $2; } ; diff --git a/lily/relative-octave-music.cc b/lily/relative-octave-music.cc new file mode 100644 index 0000000000..0b80d49c12 --- /dev/null +++ b/lily/relative-octave-music.cc @@ -0,0 +1,33 @@ +/* + relative-music.cc -- implement Relative_octave_music + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#include "relative-music.hh" +#include "debug.hh" + +Musical_pitch +Relative_octave_music::to_relative_octave (Musical_pitch) +{ + return last_pitch_; +} + + +Relative_octave_music::Relative_octave_music(Music*p,Musical_pitch def) + : Music_wrapper (p) +{ + last_pitch_ = element_p_->to_relative_octave (def); +} + +void +Relative_octave_music::do_print () const +{ + Music_wrapper::do_print (); + DOUT << "default pitch: " << last_pitch_.str (); +} + +IMPLEMENT_IS_TYPE_B1 (Relative_octave_music, Music_wrapper); diff --git a/lily/score-elem.cc b/lily/score-elem.cc index c207e75a4f..929838a185 100644 --- a/lily/score-elem.cc +++ b/lily/score-elem.cc @@ -18,6 +18,7 @@ #include "scoreline.hh" #include "item.hh" #include "p-col.hh" +#include "molecule.hh" Score_elem::Score_elem() { @@ -158,7 +159,7 @@ void Score_elem::do_brew_molecule () { if (transparent_b_) - return ; + return; Molecule *output= brew_molecule_p (); pscore_l_->outputter_l_->output_molecule (output, absolute_offset ()); } diff --git a/lily/score-grav.cc b/lily/score-grav.cc index 27b149a547..bbcaec2685 100644 --- a/lily/score-grav.cc +++ b/lily/score-grav.cc @@ -142,7 +142,7 @@ Score_engraver::typeset_all() if (!s->spanned_drul_[d]) { s->set_bounds(d, command_column_l_); - warning ("Unbound spanner"); + ::warning ("Unbound spanner (type " + String (s->name ()) + ")"); } } while (flip(&d) != LEFT); } diff --git a/lily/template1.cc b/lily/template1.cc index 1ba5ae801e..b4a5dbf209 100644 --- a/lily/template1.cc +++ b/lily/template1.cc @@ -23,29 +23,3 @@ IPLC_INSTANTIATE(Score_elem); IPLC_INSTANTIATE(Spanner); IPLC_INSTANTIATE(Idealspacing); - -/* these are required at least on IRIX 5 and SunOS 4 */ - -#if 0 -/* - what gcc version? - they're in lib/template.cc too, and break linux/gcc-2.7.2 - are you sure they must be here too? - - for now, i'll just change the switch in lib/template.cc - jcn - */ - -#if defined (__linux__) && && __GNUC_MINOR__ < 8 - -#include "list.tcc" - -// template class List; -// template class Cursor; - -// this should work too, and -LIST_INSTANTIATE (void *); - -#endif - -#endif diff --git a/make/Makefile b/make/Makefile index fa2c5ca8a6..764fcc5662 100644 --- a/make/Makefile +++ b/make/Makefile @@ -44,7 +44,6 @@ rpmexamples= $(addprefix input/, $(notdir $(shell ls $(depth)/input/*.ly))) date = $(shell date '+%d%b%y'|tr a-z A-Z) -sed-version= sed 's!@TOPLEVEL_VERSION@!${TOPLEVEL_VERSION}!g' sed-date=sed 's!@DATE@!${date}!g' sed-examples = sed 's!@EXAMPLE_LYS@!${rpmexamples} ${rpmmudocs}!g' sed-docs=sed 's!@TEXT_DOCS@!${rpmdocs}!g' diff --git a/make/Targets.make b/make/Targets.make index ce3ecb34e8..945587c0ff 100644 --- a/make/Targets.make +++ b/make/Targets.make @@ -164,7 +164,7 @@ endif TAGS:$(all-tag-sources) ifdef all-tag-sources -etags -CT $(all-tag-sources) $(ERROR_LOG) - -ctags -CT $(all-tag-sources) $(ERROR_LOG) + -ctags -h ".h.hh.tcc.icc" $(all-tag-sources) $(ERROR_LOG) endif $(LOOP) diff --git a/make/Toplevel.make.in b/make/Toplevel.make.in index 304fabc80c..efceff59cc 100644 --- a/make/Toplevel.make.in +++ b/make/Toplevel.make.in @@ -64,7 +64,9 @@ Makefile: make/Toplevel.make.in cat $< >> $@ chmod -w $@ -website: examples +website:examples htmldoc + +htmldoc: $(MAKE) CONFIGSUFFIX='www' local-WWW $(MAKE) CONFIGSUFFIX='www' -C Documentation WWW rm -f `find . -name \*.html~ -print` @@ -79,7 +81,7 @@ examples: local-WWW: index.html index.html: Documentation/$(outdir)/topweb.html NEWS - cp Documentation/$(outdir)/topweb.html $@ + $(sed-version) < Documentation/$(outdir)/topweb.html > $@ add-html-footer --news=NEWS $@ Documentation/$(outdir)/topweb.html: diff --git a/make/Variables.make b/make/Variables.make index 5c4a7a860d..b2e75db9ef 100644 --- a/make/Variables.make +++ b/make/Variables.make @@ -244,3 +244,5 @@ LOOP=set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done else LOOP= endif + +sed-version= sed 's!@TOPLEVEL_VERSION@!${TOPLEVEL_VERSION}!g' diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm index 74c1164c54..4b0654edc5 100644 --- a/make/out/lelievijver.lsm +++ b/make/out/lelievijver.lsm @@ -1,7 +1,7 @@ Begin3 Titel: LilyPond -Versie: 0.1.64 -Inschrijf datum: 13MAY98 +Versie: 0.1.65 +Inschrijf datum: 15MAY98 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: @@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys) 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.64.tar.gz + 395k lilypond-0.1.65.tar.gz Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/ - 395k lilypond-0.1.64.tar.gz + 395k lilypond-0.1.65.tar.gz Copi"eer politie: GPL End diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 9c9d106401..7ba08ff8b5 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 0.1.64 -Entered-date: 13MAY98 +Version: 0.1.65 +Entered-date: 15MAY98 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 @@ -15,8 +15,8 @@ Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 570k lilypond-0.1.64.tar.gz + 570k lilypond-0.1.65.tar.gz Original-site: pcnov095.win.tue.nl /pub/lilypond/development/ - 570k lilypond-0.1.64.tar.gz + 570k lilypond-0.1.65.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index 29a01b7de2..accf15d04f 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.1.64 +Version: 0.1.65 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-0.1.64.tar.gz +Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-0.1.65.tar.gz Summary: A program for typesetting music. URL: http://www.cs.uu.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys diff --git a/mi2mu/template9.cc b/mi2mu/template9.cc index 3f9dba334f..06d53f9ace 100644 --- a/mi2mu/template9.cc +++ b/mi2mu/template9.cc @@ -30,29 +30,3 @@ POINTERLIST_INSTANTIATE(Mudela_staff); POINTERLIST_INSTANTIATE(Mudela_voice); POINTERLIST_INSTANTIATE(Mudela_column); POINTERLIST_INSTANTIATE(Mudela_score); - -#if 0 -/* - what gcc version? - they're in lib/template.cc too, and break linux/gcc-2.7.2 - are you sure they must be here too? - - for now, i'll just change the switch in lib/template.cc - jcn - - */ - -#if defined (__linux__) && && __GNUC_MINOR__ < 8 - -#include "list.tcc" - -// template class List; -// template class Cursor; - -// this should work too, and -LIST_INSTANTIATE (void *); - -#endif - -#endif - diff --git a/mudela-mode.el b/mudela-mode.el index 27444a9425..f2c879d428 100644 --- a/mudela-mode.el +++ b/mudela-mode.el @@ -34,7 +34,7 @@ (let* ((keywords '( "accepts" "break" "bar" "cadenza" "clear" "clef" "cm" "consists" "contains" "duration" "absdynamic" "in" "translator" "type" "lyric" "key" - "maininput" "melodic" "melodic_request" "meter" "midi" "mm" "multi" "header" + "maininput" "melodic" "musical_pitch" "meter" "midi" "mm" "multi" "header" "notenames" "octave" "output" "partial" "paper" "plet" "property" "pt" "shape" "include" "score" "script" "skip" "staff" "table" "spandynamic" "symboltables" diff --git a/mutopia/J.S.Bach/Makefile b/mutopia/J.S.Bach/Makefile index 50f649f7b1..8512f242c7 100644 --- a/mutopia/J.S.Bach/Makefile +++ b/mutopia/J.S.Bach/Makefile @@ -5,7 +5,7 @@ depth = ../.. # -EXTRA_DISTFILES= +EXTRA_DISTFILES=preludes-3.lym4 # descent order into subdirectories: # diff --git a/mutopia/J.S.Bach/allemande-alto.ly b/mutopia/J.S.Bach/allemande-alto.ly index e1002e5d33..367ffc6e3f 100644 --- a/mutopia/J.S.Bach/allemande-alto.ly +++ b/mutopia/J.S.Bach/allemande-alto.ly @@ -5,7 +5,7 @@ subtitle = "Suite II"; piece = "Allemande"; % opus = "BWV 1008"; opus = ""; -composer = "Johann Sebastian Bach(1685-1750)"; +composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "JCN"; copyright = "public domain"; } diff --git a/mutopia/J.S.Bach/allemande-cello.ly b/mutopia/J.S.Bach/allemande-cello.ly index 2818a696db..4cbd0ed098 100644 --- a/mutopia/J.S.Bach/allemande-cello.ly +++ b/mutopia/J.S.Bach/allemande-cello.ly @@ -5,7 +5,7 @@ subtitle = "Suite II"; piece = "Allemande"; % opus = "BWV 1008"; opus = ""; -composer = "Johann Sebastian Bach(1685-1750)"; +composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "JCN"; copyright = "public domain"; } diff --git a/mutopia/J.S.Bach/courante-alto.ly b/mutopia/J.S.Bach/courante-alto.ly index 9885930e5e..fbe6ba3018 100644 --- a/mutopia/J.S.Bach/courante-alto.ly +++ b/mutopia/J.S.Bach/courante-alto.ly @@ -5,7 +5,7 @@ subtitle = "Suite II"; piece = "Courante"; % opus = "BWV 1008"; opus = ""; -composer = "Johann Sebastian Bach(1685-1750)"; +composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "JCN"; copyright = "public domain"; } diff --git a/mutopia/J.S.Bach/courante-cello.ly b/mutopia/J.S.Bach/courante-cello.ly index 2ecb5ba007..c5711e940c 100644 --- a/mutopia/J.S.Bach/courante-cello.ly +++ b/mutopia/J.S.Bach/courante-cello.ly @@ -5,7 +5,7 @@ subtitle = "Suite II"; piece = "Courante"; % opus = "BWV 1008"; opus = ""; -composer = "Johann Sebastian Bach(1685-1750)"; +composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "JCN"; copyright = "public domain"; } diff --git a/mutopia/J.S.Bach/menuetto-alto.ly b/mutopia/J.S.Bach/menuetto-alto.ly index 0cc2d45773..b7b80936f9 100644 --- a/mutopia/J.S.Bach/menuetto-alto.ly +++ b/mutopia/J.S.Bach/menuetto-alto.ly @@ -7,7 +7,7 @@ description = "Transcribed for Alto"; source = "?"; % opus = "BWV 1008 no. 5"; opus = ""; -composer = "Johann Sebastian Bach(1685-1750)"; +composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "JCN"; copyright = "public domain"; } diff --git a/mutopia/J.S.Bach/menuetto-cello.ly b/mutopia/J.S.Bach/menuetto-cello.ly index 4252960470..2916b99fd5 100644 --- a/mutopia/J.S.Bach/menuetto-cello.ly +++ b/mutopia/J.S.Bach/menuetto-cello.ly @@ -6,7 +6,7 @@ piece = "Menuetto I"; source = "?"; % opus = "BWV 1008 no. 5"; opus = ""; -composer = "Johann Sebastian Bach(1685-1750)"; +composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "JCN"; copyright = "public domain"; } diff --git a/mutopia/J.S.Bach/prelude-alto.ly b/mutopia/J.S.Bach/prelude-alto.ly index 7d66e76078..4f8ae5ff32 100644 --- a/mutopia/J.S.Bach/prelude-alto.ly +++ b/mutopia/J.S.Bach/prelude-alto.ly @@ -3,8 +3,8 @@ filename = "prelude-alto.ly"; title = "Solo Cello Suites"; subtitle = "Suite II"; piece = "Pr\\'elude"; % duh -opus = "BWV 1008"; -composer = "Johann Sebastian Bach(1685-1750)"; +% opus = "BWV 1008"; +composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "JCN"; copyright = "public domain"; } diff --git a/mutopia/J.S.Bach/prelude-cello.ly b/mutopia/J.S.Bach/prelude-cello.ly index 0f3fbf85f2..a8df6f36ef 100644 --- a/mutopia/J.S.Bach/prelude-cello.ly +++ b/mutopia/J.S.Bach/prelude-cello.ly @@ -3,8 +3,8 @@ filename = "prelude-cello.ly"; title = "Solo Cello Suites"; subtitle = "Suite II"; piece = "Pr\\'elude"; % duh -opus = "BWV 1008"; -composer = "Johann Sebastian Bach(1685-1750)"; +% opus = "BWV 1008"; +composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "JCN"; copyright = "public domain"; } diff --git a/mutopia/J.S.Bach/preludes-3.lym4 b/mutopia/J.S.Bach/preludes-3.lym4 new file mode 100644 index 0000000000..1b85a51033 --- /dev/null +++ b/mutopia/J.S.Bach/preludes-3.lym4 @@ -0,0 +1,181 @@ +% URG + +changequote(^, @) +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 |) + +\header{ +filename = "preludes-3.ly"; +title = "3"; +opus = "BWV 999"; +% piece = "\\numfont 3"; +piece = "3"; +% Pr"aludum in C Moll f"ur Laute +% blz 16 +% Six Petits Preludes` +% Collection Johann Peter Kellner +% ca 1703 - 1707 +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "public domain"; +} + +one = \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.") + t(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.") + t(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] | + < + {\voiceone g2.-\fermata\mf} + {\voicetwo } + > + \onevoice + \bar "|."; +} + +two = \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] | + + g`4-- r [es8 c] | + fis`4-- r [es8 c] | + fis`4 r [fis8 d] | + + g`4 r [d8 bes`] | + g`4 r [bes`8 g`] | + es`4 r [g8 es] | + + c4 r [c8 a`] | + d`4 r [d8 a`] | + d`4 r [d8 a`] | + d`4 r [d8 bes`] | + + + d`4 r [es8 c] | + d`4 r [g8 d] | + d`4 r [a8 fis] | + + d`4 r [g8 es] | + d`4 r [fis8 d] | + d`4 r [e8 cis] | + d`4 r [es8 c] | + + d`4 r [d8 a`] | + d`4 r [cis8 bes`] | + d`4 r [c!8 a`] | + + d`4 r [bes`8 g`] | + d`4 r [es8 c] | + d`4 r [d8 a] | + + g`4 r [es8 c] | + g`4 r [d8 b`] | + g`4 r [es8 c] | + + g`4 r [es8 c] | + g`4 r [g8 d] | + g`4 r [as8 f] | + g`4 r [es8 c] | + + g`4 r [es8 c] | + g`4 r [es8 c] | + g`4 r r | + g`2._\fermata + \bar "|."; +} + +global = \melodic{ + \meter 3/4; + \key bes es as; +} + +treble_staff = \type Staff = treble < + \global + \one +> + +bass_staff = \type Staff = bass < +% bass = Staff < + \clef "bass"; + \global + \two +> + +grand_staff = \type Grand_staff < + \treble_staff + \bass_staff +> + +a4 = \paper{ + linewidth= 193.\mm; +} + +\score{ + % Semplice e non troppo legato + \grand_staff + \paper{ \a4 } + \midi{ \tempo 4 = 100; } +} diff --git a/mutopia/J.S.Bach/sarabande-alto.ly b/mutopia/J.S.Bach/sarabande-alto.ly index f81fdbfdfa..00f03caf40 100644 --- a/mutopia/J.S.Bach/sarabande-alto.ly +++ b/mutopia/J.S.Bach/sarabande-alto.ly @@ -5,7 +5,7 @@ subtitle = "Suite II"; piece = "Sarabande"; % opus = "BWV 1008"; opus = ""; -composer = "Johann Sebastian Bach(1685-1750)"; +composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "JCN"; copyright = "public domain"; } diff --git a/mutopia/J.S.Bach/sarabande-cello.ly b/mutopia/J.S.Bach/sarabande-cello.ly index 47489be30c..444600fa79 100644 --- a/mutopia/J.S.Bach/sarabande-cello.ly +++ b/mutopia/J.S.Bach/sarabande-cello.ly @@ -5,7 +5,7 @@ subtitle = "Suite II"; piece = "Sarabande"; % opus = "BWV 1008"; opus = ""; -composer = "Johann Sebastian Bach(1685-1750)"; +composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "JCN"; copyright = "public domain"; } diff --git a/mutopia/J.S.Bach/solo-cello-suite-ii.ly b/mutopia/J.S.Bach/solo-cello-suite-ii.ly index f251d595c2..a9c1e2eca9 100644 --- a/mutopia/J.S.Bach/solo-cello-suite-ii.ly +++ b/mutopia/J.S.Bach/solo-cello-suite-ii.ly @@ -3,7 +3,7 @@ filename = "solo-cello-suite-ii.ly"; title = "Solo Cello Suites"; subtitle = "Suite II"; opus = "BWV 1008"; -composer = "Johann Sebastian Bach(1685-1750)"; +composer = "Johann Sebastian Bach (1685-1750)"; } % urg diff --git a/mutopia/W.A.Mozart/cadenza.ly b/mutopia/W.A.Mozart/cadenza.ly index 1e2500b04b..8fcf3f08d7 100644 --- a/mutopia/W.A.Mozart/cadenza.ly +++ b/mutopia/W.A.Mozart/cadenza.ly @@ -16,47 +16,45 @@ piece of music. %} \version "0.1.14"; -cad = \melodic { +cad = \melodic \relative c' { \property Score.instrument = "french horn" \type Staff { \cadenza 1; \grouping 1*4; - \octave c'; \clef "violin"; c'4.\mf g8 - [e'^"accel" () d' c' b] - [b() c'] g-\fermata + [e'^"accel" () d c b] + [b() c] g-\fermata \bar "empty"; - c [c_"rubato" e g c'] - \octave c''; + c, [c_"rubato" e g c] e4. e8 [g () f_"rit" e d] dis4() e4 \bar "" ; r8 [c16 d] [e f g gis] - a4-> f,() e, g - f-> d,() cis, e + a4-> f() e g + f-> d() cis e d4^\fermata \bar "" ; - r8 a, [b, cis] + r8 a [b cis] [d16 cis d e] f4() [f16 e d c] - b,4-\turn - \octave c'; [2/3 d'8 c'8 a8]1/1 + b4-\turn + [2/3 d8 c8 a8]1/1 g2 \bar "" ; - [g16 c e g] [c' e g c']\octave c''; + [g16 c, e g] [c e, g c] [e g, c e] g4^\fermata \bar "" ; [g8.(_"a tempo" e16 g8. )e16] a4. g8 [f8 e8 d8 c8] - g,2 d2-\trill + g2 d'2-\trill c4 }} \score { diff --git a/mutopia/W.A.Mozart/horn-concerto-3.ly b/mutopia/W.A.Mozart/horn-concerto-3.ly index c6701bc1ce..18998066bc 100644 --- a/mutopia/W.A.Mozart/horn-concerto-3.ly +++ b/mutopia/W.A.Mozart/horn-concerto-3.ly @@ -2,9 +2,10 @@ \version "0.1.14"; -allegro = \melodic +allegro = + \melodic + \relative c' { - \octave relative; R1*18 r2 r4 g'4 | @@ -130,8 +131,8 @@ allegro = \melodic } -romanze = \melodic { - \octave relative; +romanze = \melodic \relative c' { + \key bes; \meter 2/2; c'4.() f8 a,4 a @@ -196,8 +197,7 @@ romanze = \melodic { \bar "|."; } -rondotheme = \melodic { - \octave relative; +rondotheme = \melodic \relative c' { [c'8 c c] [c c c] c4( cis8 )d r g, [d'8 d d] [d d d] @@ -207,16 +207,25 @@ rondotheme = \melodic { e4()d8 e4()f8 e4.()d8 r r | } -rondo = \melodic { + +lipbreaker = \melodic \relative c' +{ + r8 [g'-. g-.] [c()e g,-.] + [c()e g,-.] [c()e g,-.] + [c c, c] [c c c] + [c c c] [c c c] +} + +rondo = \melodic \relative c' +{ \partial 8; - \octave relative; g'8 | \meter 6/8; \grouping 8*3 8*3; \rondotheme R2.*13 | - r8 r-\fermata d' [d e f] + r8 r-\fermata d [d e f] [g ()e c-.] [d()e d] c4 c8 [d e f] [g()e c-.] [d()e d-.] @@ -244,11 +253,7 @@ rondo = \melodic { [d()g d-.] [d d d] [d()g] r r4 r8 R2.*1 - r8 [g,-. g-.] [c()e g,-.] - - [c()e g,-.] [c()e g,-.] - [c c, c] [c c c] - [c c c] [c c c] + \lipbreaker c4 r8 [c' d e] d4()g8 [c, d e] d4 r8 r4 r8 @@ -258,36 +263,105 @@ rondo = \melodic { [d()g fis] [e d c] [b () e d] [c b a] % mark C - g4 r8 r4r r8 - R2. - - - - + g4 r8 r4 r8 + r2. | + % + r8 [g g] [g( )b b] + [b()d d-.] [d()g g-.] + g2.~ + [g8 a g] [f e d] + \rondotheme + R2.*12 + r4 r8 r4 c8 + % mark D + c4 f8 c4 a8 + a4.~a4 a8 + bes4 c8 d4 bes8 + g4. ~ g8 r r + R2.*3 + r4 r8 r4 c8 + a4. c + f ~ [f8. e16( d )c] + bes4 g8 e4 g8 + c4. ~ c8 r r + R2.*3| + r4 r8 r4 c8 + b4()c8 b4()c8 + bes4. ~ bes4 g8 + a4 c8 [f () d b] + d4. () c8 r r + % mark E + R2.*9 | + \lipbreaker + [c8 c' c] c4.~ + [c8 c d] [e e fis] + g4 r8 r4 r8 + r2. + r8 [g g] [g g g] | + es4. ~ [es8 d c] + b4 r8 r4 r8 + r2. | + r8 [g g] [g g g] + es4.\f~ [es8 d c] + b4. c4. d4. e4. + % mark F + f2.\f ~ | + f4 r8 r4 r8 + r8 [g\> g] [g g g] + [fis g gis] % Edition breitkopf says as (silly!) + [a bes \! b] + \rondotheme + R2.*7 + % mark G + R2.*4 + c,4.\mf c4 c8 + c4. e4 c8 + g'4. g4 g8 + g4. g,4 g8 + c4 r8 r4 r8 + r4 r8 r4 g'8 + [c ()e g,-.] [c ()e g,-.] + [c ()e g,-.] [c ()e g,-.] + % mark H + g'2._"cresc." bes,2. + a4. [b16 c d e f g] + a4. f4 d8 + [c8\f g' e] [c g e] + [c e' c] [g e c] + g4 r8 [g''8 e c] + d2.(-\trill % \grace { c d } + )c4 r8 r4 r8 + R2.*5 + r8 r8-\fermata d8 [d\p e f] + [g ()e c] [d()e d] + [ c c c] [d e f] + [g()e c] [d()e d] + c4\f r8 r4 r8 + R2.*5 + [c8\f c, c] [c c c] + c4 r8 c4 r8 + c4 r8 r4 r8 } -%{ \score { { \property Score.SkipBars = 1 \allegro } } -%} -%{ + \score { { \property Score.SkipBars = 1 \romanze } } - -%} \score { { \property Score.SkipBars = 1 \rondo } \paper{ - castingalgorithm =\Wordwrap; +% castingalgorithm =\Wordwrap; } + \midi{} } diff --git a/mutopia/gallina.ly b/mutopia/gallina.ly index a74a8d63c9..916a86c6be 100644 --- a/mutopia/gallina.ly +++ b/mutopia/gallina.ly @@ -43,7 +43,7 @@ Voice engraver by uncommenting the lines in the paper definition below. --MB %} -\version "0.1.14"; +\version "0.1.15"; vi1=\melodic{ \meter 4/4; diff --git a/mutopia/los-toros-oboe.ly b/mutopia/los-toros-oboe.ly index f02e0df659..e89abf35e7 100644 --- a/mutopia/los-toros-oboe.ly +++ b/mutopia/los-toros-oboe.ly @@ -8,7 +8,7 @@ enteredby = "jcn"; copyright = "public domain"; latexheaders= "headers"; } -\version "0.1.14"; +\version "0.1.15"; %{ Silly latex file dropped; use ly2dvi @@ -27,16 +27,16 @@ Converted to relative octave from los-toros-oboe.ly: \include "paper16.ly" -hoboonestart = \melodic{ +hoboonestart = \melodic + \relative c'{ % ugh: cant copy: allegro/primo tempo - \octave relative; \textstyle "large"; [es''16-.^"Allegro" es-. es-. es-.] [es8-. d-.] | \textstyle "italic"; } -hobooneintro = \melodic{ - \octave relative; +hobooneintro = \melodic \relative c'{ + % \textstyle "roman"; % [es''16-.-"Allegro" es-. es-. es-.] [es8-. d-.] | % \textstyle "italic"; @@ -60,8 +60,8 @@ hobooneintro = \melodic{ [)g8 r d'] r | } -hoboonemid = \melodic{ - \octave relative; +hoboonemid = \melodic \relative c'{ + [g'16-. g-. g-. g-.] [g8-. f-.] | as2-> | [as16-. as-. as-. as-.] [as8-. g-.] | @@ -151,8 +151,8 @@ hoboonemid = \melodic{ } -hoboonesecondstart = \melodic{ - \octave relative; +hoboonesecondstart = \melodic \relative c'{ + % ugh: cant copy: allegro/primo tempo \textstyle "large"; [es''16-.\ff^"Tempo 1$^o$" es-. es-. es-.] [es8-. d-.] | @@ -160,8 +160,7 @@ hoboonesecondstart = \melodic{ } -hoboonelast = \melodic{ - \octave relative; +hoboonelast = \melodic \relative c'{ % could transpose/copy from measure 19... [d''16-.\p d-. d-. d-.] [d8-. c-.] | es2-> | diff --git a/mutopia/standchen-16.ly b/mutopia/standchen-16.ly index b91d90c62e..8e03c6e663 100644 --- a/mutopia/standchen-16.ly +++ b/mutopia/standchen-16.ly @@ -9,6 +9,6 @@ description = "A schubert song in 16 pt"; copyright = "public domain"; } -\version "0.1.14"; +\version "0.1.15"; \include "standchen.ly" diff --git a/mutopia/standchen-20.ly b/mutopia/standchen-20.ly index 8d984c14c5..1eb5190776 100644 --- a/mutopia/standchen-20.ly +++ b/mutopia/standchen-20.ly @@ -9,7 +9,7 @@ copyright = "public domain"; description = "A schubert song in 20 pt"; } -\version "0.1.14"; +\version "0.1.15"; % fool make-website % \include "standchen.ly"; diff --git a/mutopia/standchen-easy.ly b/mutopia/standchen-easy.ly deleted file mode 100644 index dcdbfc1599..0000000000 --- a/mutopia/standchen-easy.ly +++ /dev/null @@ -1,522 +0,0 @@ -\header{ -filename = "standchen-easy.ly"; -title = "St\"andchen"; -subtitle = "(Serenade)\\\``Leise flehen meine Lieder''"; -opus = "D. 957 No. 4"; -composer = "Franz Schubert (1797-1828)\\\ \hfill Text by Ludwig Rellstab (1799-1860)"; -enteredby = "JCN"; -copyright = "public domain"; -% transcribed version -% simplified and transposed to d minor -} - -%{ - Tested Features: multivoice, accents, lyrics, chords, piano music, -multiple \paper{}s in one \score -%} - -\include "paper16.ly" -\version "0.1.14"; - -commands = \melodic{ - \skip 2.*4; - \bar "|:"; - \skip 2.*24; -% volta1 - \skip 2.*8; -% volta2 - \bar ":|"; - \skip 2.*22; - \bar "|."; - } - -melodie = \melodic{ - \meter 3/4; - \clef "violin"; - \key bes; - \octave c'; - \duration 8; - r \pp < [ d a,-| > f-| < d a,-| > f-| < d a,-| ] > | -%%2 - r < [ d bes,-| > f-| < d bes,-| > f-| < d bes,-| ] > | -%%3 - \textstyle "italic"; - r_"simile" < [ d bes, > e < d bes, > e < d bes, ] >| - \textstyle "roman"; - -%%4 - r < [ a, cis > e < a, cis > e < a, cis ] > | -%%5 - [2/3 a() bes a ]1/1 d'4. a | -%%6 - [2/3 g() a g ]1/1 d'4 g r | - -%%7 - a4.^> g [2/3 g() f e ]1/1 | -%%8 - f2 r4 | -%%9 - < { a'4.() g' [2/3 g'( f' )e' ]1/1 } - { cis'4. e'_"dolce" \[2/3 e' \] } > | -%%10 - < f'2. d'2. > | -%%11 - [2/3 a () bes a ]1/1 f'4. a | -%%12 - [2/3 g() a g ]1/1 e'4. d' | -%%13 - c'4. bes [2/3 bes() a g ]1/1 | -%%14 - a2 r - < { d'() c'4. g [2/3 bes a g ]1/1 } - { f \p () e4._"dolce" bes \[2/3 g \] } > | -%%16 - < a2. f2. > | -%%17 - \textstyle "italic"; - [ a8._"cresc." cis'16 ] f'4. e' - \textstyle "roman";| -%%18 - [ d'8. a16 ] f4. d | -%%19 -%#% c'\grace\stemup - [2/3 bes () a bes ]1/1 d'4. bes | -%%20 - a2. | -%%21 -%#% a\grace - [2/3 g() fis g ]1/1 bes4.^> g | -%%22 - f!2. | -%%23 - [ a8. \mf cis'16 ] f'4. e' | -%%24 - [ d'8. a16 ] fis4. d | -%%25 - [2/3 b \mf() ais b ]1/1 d'4. b | -%%26 - < a2. fis2. > | -%%27 - [2/3 e' \f() dis' e' ]1/1 g'4. cis' | -%%28 - < d'2. fis2. > | -%#%\volta1 -%%29 - < { bes2( [ d'8.() )bes16 ] } - { g2 \mf [ bes8. g16 ] } > | -%%30 - < { a4. [ a-. a-. a-. ] } - { fis4. [ fis-.( fis-. )fis-. ] } > | -%%31 - < { a4. [ a-. a-. a-. ] } - { g4. [ cis-.( e-. )g-. ] } > | -%%32 - < a2 fis2 \pp > < a4 fis4 > | -%%33 - < { b2( [ d'8.() )b16 ] } - { g2 [ b8. g16 ] } > | -%%34 - < { a4. [ a-. a-. a-. ] } - { fis4. [ fis-.( fis-. )fis-. ] } > | -%%35 - < { a4. [ a-. a-. a-. ] } - { g4. [ cis-.( e-. )g-. ] } > | -%%36 - < a2. fis2. > | -%#%\volta2 -%%37 - [ a8. a16 ] [ cis'8. cis'16 ] [ e'8. e'16 ] | -%%38 - d'4() cis'4 r4 | -%%39 -%#% > a4. [ cis' e'8. >! d'16 ] | - a4. \> [ cis' e'8. \! d'16 ] | -%%40 - cis'2 r4 | -%%41 - < fis'4. \> cis'4. \f > e' [2/3 e'() d' \! cis' ]1/1 | -%%42 - [ b8. cis'16 ] d'4^> b r | -%%43 - - [ b8. \f cis'16 ] d'4^> b r | -%%44 - [ b8. \> cis'16 ] d'4^> b \! r | -%%45 - [2/3 b \p () ais b ]1/1 d'4. b | -%%46 - | -%%47 - [2/3 e' \f() dis' e' ]1/1 g'4.^> cis' | -%%48 - \textstyle "italic"; - < - { fis2.( - %\group "+1"; - \stemdown )f2. } - { d'2. ( \stemup - ) d'4 r4_"decresc." d'4 } - > - \textstyle "roman"; | -%%50 - < bes2. e2. > | -%%51 - < a2. cis2. > | -%%52 - < fis2 d2 > < a4 fis4 \pp > | -%%53 - - < bes2 g2 > < [ d'8.^> bes8. > < bes16 g16 ] > | -%%54 - < { a4. [ a-. a-. a-. ] } - { fis4. [ fis-.( fis-. )fis-.] } > | -%%55 - < { a4. [ a-. a-. a-. ] } - { g4. [ cis-.( e-. )g-. ] } > | -%%56 - \textstyle "italic"; - < a2. fis2._"dim." > - \textstyle "roman"; | -%%57 - < a2. fis2. > | -%%58 - < a2.^\fermata fis2. > | -%#%\tighten -} - -begeleiding = \melodic{ - \meter 3/4; - \clef"bass"; - \key bes; - \octave c'; - \duration 2; - d, r4 | -%%2 - bes,, r4 | - -%%3 - g,, r4 | - -%%4 - a,, r4 | -%%5 -\duration 8; - \multi 2 < { \stemup - [ f, a, d a, d a, ] - [ d, e, g, e, g, e, ] - [ cis, e, g, e, g, e, ] - [ d, a, d a, d a, ] - } - { \stemdown - d,2 r4 - bes,,2 r4 - a,,2 r4 - d,2 r4 - } > -%%9 - \stemboth - [ a, e g e g e ] | -%%10 - [ d, a, d a, d a, ] | -%%11 - \multi 2 < - { \stemup - [ f, a, d a, d a, ] - [ d, e, g, e, g, e, ] - [ e, g, bes, g, bes, g, ] - [ a, c f c f c ] - } { \stemdown - d,2 r4 - bes,,2 r4 - c,2 r4 - f,2 r4 } - > -%%15 - \stemboth - [ c, g, bes, g, bes, g, ] | -%%16 - [ f,, c, f, c, f, c, ] | - \multi 2 < - { \stemup - [ a,, e, g, e, g, e, ][ d, a, d a, d a, ] - [ bes,, f, bes, f, bes, f, ][ f,, c, f, c, f, c, ] } - { \stemdown - a,,2 r4 - d,2 r4 - bes,,2 r4 - f,,2 r4 - } > -%%21 - \stemboth - < [ e, c, > g, c g, c g, ] | -%%22 - [ f, a, c a, f, c, ] | - \multi 2 < { - \stemup - [ a,, e, g, e, g, e, ] - [ d, fis, a, fis, a, fis, ] - [ g,, d, b, d, b, d, ] - [ d, a, d a, d a, ] - } - {\stemdown - a,,2 r4 - d,2 r4 - g,,2 r4 - d,2 r4 - } - > - \stemboth - < [ cis, a,, > e, a, e, a, e, ] | -%%28 - [ d, a, d a, d a, ] | -%%29 - [ d, g, bes, g, bes, g, ] | -%#%\volta1 -%%30 - [ d, fis, a, fis, a, fis, ] | -%%31 - [ a,, e, a, e, a, e, ] | -%%32 - [ d, fis, a, fis, a, fis, ] | -%%33 - [ d, g, b, g, b, g, ] | -%%34 - [ d, fis, a, fis, a, fis, ] | -%%35 - [ a,, e, a, e, a, e, ] | -%%36 - [ d, fis, a, fis, a, fis, ] | -%#%\volta2 -%%37 - [ a,, e, g, e, bes,,^> e, ] | -%%38 - [ a,, < e cis a, > < e cis a, > < e cis a, > < e cis a, > < e cis a, ] > | -%%39 - [ a,, e, g, e, bes,,^> e, ] | -%%40 - [ a,, < e cis a, > < e cis a, > < e cis a, > < e cis a, > < e cis a, ] > | -%%41 - [ ais,, e, fis, e, fis, e, ] | -%%42 - < [ d, b,, > fis, b, fis, b, fis, ] | -%%43 - < [ e, b,, > g, b, g, b, g, ] | -%%44 - < [ d, b,, > fis, b, fis, b, fis, ] | -%%45 - \multi 2 < { \stemup - [ g,, d, b, d, b, d, ] - [ d, a, d a, d a, ] - } { - \stemdown - g,,2 r4 - d,2 r4 - } > - -%%47 - \stemboth - < [ cis, a,, > e, a, e, a, e, ] | -%%48 - [ d, fis, a, fis, a, fis, ] | -%%49 - [ d, a, d a, d a, ] | -%%50 - [ g,, e, g, e, g, e, ] | -%%51 - [ a,, e, g, e, g, e, ] | -%%52 - [ d,, d, fis, d, fis, d, ] | -%%53 - [ d, g, bes, g, bes, g, ] | -%%54 - [ d, fis, a, fis, a, fis, ] | -%%55 - [ a,, e, g, e, g, e, ] | -%%56 - [ d,, a,, d, a,, d, a,, ] | -%%57 - [ d,, a,, d, a,, d, a,, ] -%%58 - < d,2.^\fermata d,,2. > | - } - - -tekstI = \lyric{ - \meter 3/4; - \duration 4; - _ _ _ - _ _ _ - _ _ _ - _ _ _ -% 5 - \[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 \] stil-4. len8 - \[2/3 Hain her-8 \] nie-4. der,8 - Lieb4. chen,8 \[2/3 komm zu8 \] - mir!2 _ - _ _ _ - _ _ _ - -% 17 - Fl\"us-8. ternd16 schlan-4. ke8 - Wip-8. fel16 rau-4. schen8 - \[2/3 In des8 \] Mon-4. des8 - Licht;2. - _ _ _ - _ _ _ - -% 23 - Des8. Ver-16 r\"a-4. ters8 - feind-8. lich16 Lau-4. schen8 - \[2/3 F\"urch- te,8 \] Hol-4. de,8 - nicht.2. - _ _ _ - _ _ _ - -% volta 1 -% 29 - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ - -% volta 2 -% 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. - _ _ _ _ _ _ -% 47 - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ -% 57 - _ _ _ _ _ _ - -} - -tekstII = \lyric{ - \meter 3/4; - \duration 4; - _ _ _ - _ _ _ - _ _ _ - _ _ _ -% 5 - \[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 \] T\"o-4. ne8 - \[2/3 s\"u\ss- en8 \] Kla-4. gen8 - Fleh-4. en8 \[2/3 sie f\"ur8 \] - mich.2 _ - _ _ _ - _ _ _ - -% 17 - Sie-8. ver-16 stehn4. des8 - Bus-8. ens16 Seh-4. nen,8 - \[2/3 Ken- 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- es8 \] wei-4. che8 - Herz.2. - _ _ _ - _ _ _ -% volta 1 -% 29 - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ - -% volta 2 -% 37 - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ -% 47 - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ -% 57 - _ _ _ _ _ _ - -} - -$treble_staff = \type Staff = treble< - \commands - \melodie -> - -$bass_staff = \type Staff = bass< - \commands - \begeleiding -> - -$grand_staff = \type Grand_staff< - \$treble_staff - \$bass_staff -> - -$lyric_staff = \type Lyrics = lyric< - \tekstI - \tekstII -> - -themusic = < - \$lyric_staff - \$grand_staff -> - -\score{ - \themusic - \midi{ - \tempo 4 = 54; - } - \paper{ - % 20pt music uses whole pagewidth - % ja Vette Pech. Koop maar een A3 printer - % huh? [jcn] - linewidth= 193.\mm; -% arithmetic_multiplier = 7.\pt; - - gourlay_maxmeasures = 9.; - \output "standchen-20.out"; - } - \paper{ - \paper_sixteen - % 16pt mustn't use whole page width - linewidth= 160.\mm; -% arithmetic_multiplier = 6.\pt; -% gourlay_maxmeasures = 9.; - \output "standchen-16.out"; - } -} diff --git a/mutopia/standchen.ly b/mutopia/standchen.ly index 605c3fc031..2400bf28d6 100644 --- a/mutopia/standchen.ly +++ b/mutopia/standchen.ly @@ -14,7 +14,7 @@ copyright = "public domain"; multiple \paper{}s in one \score %} -\version "0.1.14"; +\version "0.1.15"; $vocal_verse1 = \melodic{ \octave c'; diff --git a/vimrc b/vimrc index 52f632c15c..b8123fcb10 100644 --- a/vimrc +++ b/vimrc @@ -1,4 +1,7 @@ :version 4.0 +set autoindent +set shiftwidth=2 +set tags=$LILYPOND_SOURCEDIR/flower/tags,$LILYPOND_SOURCEDIR/flower/include/tags,$LILYPOND_SOURCEDIR/lib/tags,$LILYPOND_SOURCEDIR/lib/include/tags,$LILYPOND_SOURCEDIR/lily/tags,$LILYPOND_SOURCEDIR/lily/include/tags " " some handy key mappings "