]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.1.65
authorfred <fred>
Sun, 24 Mar 2002 20:12:06 +0000 (20:12 +0000)
committerfred <fred>
Sun, 24 Mar 2002 20:12:06 +0000 (20:12 +0000)
132 files changed:
Documentation/INSTALL.pod
Documentation/faq.pod
Documentation/index.pod
Documentation/tex/engraving.bib
Documentation/tex/mudela.doc
Documentation/topweb.pod
NEWS
README
TODO
VERSION
bin/add-html-footer.py
bin/convert-mudela.pl
bin/genheader.py
bin/lilypython.py
bin/mail-address.sh [new file with mode: 0644]
bin/tar-docxx.sh [new file with mode: 0644]
config.hh.in
configure
configure.in
init/book-fragment.ly
init/deutsch.ly
init/engraver.ly
init/italiano.ly
init/lily-init.ly
init/nederlands.ly
init/no-tape.ly
init/norsk.ly
init/svenska.ly
input/bugs/a.ly
input/bugs/s.ly [new file with mode: 0644]
input/coriolan-alto.ly
input/keys.ly
input/kortjakje.ly
input/multi.ly
input/pedal.ly
input/praeludium-fuga-E.ly
input/rhythm.ly
input/scales.ly
input/scripts.ly
input/test/beams.ly
input/test/broken.ly
input/test/collisions.ly
input/test/denneboom.ly
input/test/font-body.ly
input/test/font.ly
input/test/font16.ly
input/test/gourlay.ly
input/test/hara-kiri.ly [new file with mode: 0644]
input/test/knee.ly
input/test/sleur.ly
input/test/slurs.ly
input/test/spacing.ly
input/test/stem.ly
input/tril.ly
input/twinkle-pop.ly
input/twinkle.ly
lib/template.cc
lily/VERSION
lily/beam.cc
lily/chord-iterator.cc
lily/command-request.cc
lily/debug.cc
lily/hara-kiri-line-group-engraver.cc [new file with mode: 0644]
lily/hara-kiri-vertical-group-spanner.cc [new file with mode: 0644]
lily/head-grav.cc
lily/include/command-request.hh
lily/include/hara-kiri-line-group-engraver.hh [new file with mode: 0644]
lily/include/hara-kiri-vertical-group-spanner.hh [new file with mode: 0644]
lily/include/key-grav.hh
lily/include/key.hh
lily/include/lily-proto.hh
lily/include/local-key-item.hh
lily/include/music-list.hh
lily/include/music-wrapper-iterator.hh [new file with mode: 0644]
lily/include/music-wrapper.hh [new file with mode: 0644]
lily/include/music.hh
lily/include/musical-pitch.hh [new file with mode: 0644]
lily/include/musical-request.hh
lily/include/my-lily-lexer.hh
lily/include/my-lily-parser.hh
lily/include/notename-table.hh
lily/include/relative-music-iterator.hh [new file with mode: 0644]
lily/include/relative-music.hh [new file with mode: 0644]
lily/include/request.hh
lily/key-grav.cc
lily/key.cc
lily/lexer.ll
lily/local-key-grav.cc
lily/local-key-item.cc
lily/midi-item.cc
lily/music-iterator.cc
lily/music-list.cc
lily/music-wrapper-iterator.cc [new file with mode: 0644]
lily/music-wrapper.cc [new file with mode: 0644]
lily/music.cc
lily/musical-pitch.cc [new file with mode: 0644]
lily/musical-request.cc
lily/my-lily-lexer.cc
lily/my-lily-parser.cc
lily/notename-table.cc
lily/parser.yy
lily/relative-octave-music.cc [new file with mode: 0644]
lily/score-elem.cc
lily/score-grav.cc
lily/template1.cc
make/Makefile
make/Targets.make
make/Toplevel.make.in
make/Variables.make
mi2mu/template9.cc
mudela-mode.el
mutopia/J.S.Bach/Makefile
mutopia/J.S.Bach/allemande-alto.ly
mutopia/J.S.Bach/allemande-cello.ly
mutopia/J.S.Bach/courante-alto.ly
mutopia/J.S.Bach/courante-cello.ly
mutopia/J.S.Bach/menuetto-alto.ly
mutopia/J.S.Bach/menuetto-cello.ly
mutopia/J.S.Bach/prelude-alto.ly
mutopia/J.S.Bach/prelude-cello.ly
mutopia/J.S.Bach/preludes-3.lym4 [new file with mode: 0644]
mutopia/J.S.Bach/sarabande-alto.ly
mutopia/J.S.Bach/sarabande-cello.ly
mutopia/J.S.Bach/solo-cello-suite-ii.ly
mutopia/W.A.Mozart/cadenza.ly
mutopia/W.A.Mozart/horn-concerto-3.ly
mutopia/gallina.ly
mutopia/los-toros-oboe.ly
mutopia/standchen-16.ly
mutopia/standchen-20.ly
mutopia/standchen.ly
vimrc

index b6bdf07f28e46357fc61ad50b6bf1e4b934c0c9c..741db8d4339f9632bd0b71fd92b5cdde7d8ad096 100644 (file)
@@ -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 *
 
index 01ff8a6d8962c5a4b48fac9dce999bb824bc5a19..93edc38a3cf17154bc28705a3334e9c972a0e974 100644 (file)
@@ -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<mailing list>, 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<bin/make-patch.py>.  Don't forget to put
-in your name and e-mail address.
+your name and e-mail address in the F<AUTHORS.pod> 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<automake.urgh>)
+LilyPond (see F<Documentation/automake.urgh>)
+
 
 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<lot> 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<all>
+previous fonts, including the F<.pk> and F<.tfm> fonts in
+F</var/lib/texmf>.  A script automating this has been included, see
+F<bin/clean-fonts.sh>
 
-A: We mucked with the fonts in the upgrade.  Remove I<all> previous
-fonts, including the .pk and .tfm fonts in F</var/lib/texmf>.  A
-script automating this has been included, see F<bin/clean-fonts.sh>
 
 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 
 
index cdf09123ce8f66cebbeb4b12009cd6f28545291c..0d3cc364e56e0b824bd138a583217c1934f69640 100644 (file)
@@ -146,13 +146,6 @@ The coding standards of the lilypond project.
 </a
 >
 
-=item *
-<a href=docxx/index.html
->
-The DOC++ documentation of the C++ sources. [temporarily disabled]
-</a
->
-
 =item *
 <a href=AUTHORS.html
 >
index be4c54c42e274280407134601146cee8e75ef285..ca83827b1a87f3cb05ef442ba2f00b4b925313a2 100644 (file)
 @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},
 }
index 0690a64818e438dd7c3c995c59648b1bef39e03a..321596152bffee3361b644d32c5fabe8c9ebdb7f 100644 (file)
@@ -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
   <e' a' d''> <a g' cis''> <d'2 f' d''>
 \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 <c g'> <c, e g>
-  <c, e a> <b, d a'> <b,2 d g>
-  <a,4 d f> <bes, d f> <bes, c e> <g, c e>
-  <e, a d> <a,, g' cis'> <d,2 f d'>
+  \relative c' {
+  c4 c <c g'> <c e g>
+  <c e a> <b d a'> <b2 d g>
+  <a4 d f> <bes d f> <bes c e> <g c e>
+  <e a d> <a, g' cis'> <d2 f d'>
+  }
 \end{verbatim}
 
+
+
 \section{Finishing touch}
 
 
index 3c1b47a61c3671358d450a7f775affaedeb12323..def6a75970c1716add96f58ee849fdf8b74d3cda 100644 (file)
@@ -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<development snapshots>
-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.
 </a
 >
 
+=item *
+<a href=docxx/index.html
+>
+The DOC++ documentation of the C++ sources. 
+</a
+>
+
+
 
 
 =back
diff --git a/NEWS b/NEWS
index 32035856f11c796eaa4ff348c137d8634fff45ab..97fce166d19cbcc4acfad4df2f1ae1bd180d5798 100644 (file)
--- 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/README b/README
index 4eece482a0130a691f71638e872c3aa2bc1ed106..a172ebc03407fe0f1e26863015112cc054f29730 100644 (file)
--- 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 290ea68f84389e64ad866d23e6f6eee691a19b27..7f9b738c65c41f91cae4624ce14c54f3e80c1091 100644 (file)
--- 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 440a99a9f79bfb5cbeb6dd9d221a7a2939fc9d87..ed7ea2f3052ea21cd8d36e1df5be132876ca44a1 100644 (file)
--- 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:
index 590042719fdf5135c8e643cbd93f06bdf6c28cc8..e18d5d244a06ee70f3e92498e0df0c1adef19c88 100644 (file)
@@ -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<hr>Please take me <a href=%s>back to the index</a>\n\
 of LilyPond -- The GNU Project Music typesetter\n\
 <hr><font size=-1>\n\
-This page was built using from lilypond-%s by <p>\n\
+This page was built  from lilypond-%s by <p>\n\
 <address><br>%s <a href=mailto:%s>&lt<!bla>%s</a>&gt</address>\n\
 <p></font>' 
+
 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)
index f4bc9a53b5f93092707e6f23ef7e73b64301b63d..3787efcde3ec5b59c0a8d6c1198e26fb8df398ee 100644 (file)
@@ -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
                         );
 
  
index 9f16663bf7e49ed6c8c31e192894f3a47350346c..ca45f0736e6f55fb1884988f4cf138d892d5e09e 100644 (file)
@@ -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
 
 
index 4375c69d3e0932ee2b70322b5613b3e64bafd6a5..210865bacb0ee23616c1f20c87bfbfa147babd7b 100644 (file)
@@ -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 (file)
index 0000000..37e1141
--- /dev/null
@@ -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/tar-docxx.sh b/bin/tar-docxx.sh
new file mode 100644 (file)
index 0000000..c6d33a9
--- /dev/null
@@ -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
index 31b8f322c746f92bb94d882755850dc042145145..c0862703283cea782a385c74db25b1648ebb50b7 100644 (file)
@@ -9,3 +9,6 @@
 
 /* define if you have snprintf */
 #define HAVE_SNPRINTF 0
+
+/* define if explicit instantiation is needed */
+#undef NEED_EXPLICIT_INSTANTIATION
index b1d2e2802b04f0486f6577daceeed641a46adffa..c501bd403ef9ba2ab33d8bf732d65117524f9820 100755 (executable)
--- 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 <<EOF
+#line 688 "configure"
+#include "confdefs.h"
+
+template <class T> struct foo { static int baz; };
+template <class T> int foo<T>::baz = 1;
+
+int main() {
+ return foo<int>::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 <<EOF
-#line 875 "configure"
+#line 911 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:879: \"$ac_link\") 1>&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 <<EOF
-#line 1132 "configure"
+#line 1168 "configure"
 #include "confdefs.h"
 #ifdef __cplusplus
 extern "C" void exit(int);
@@ -1141,7 +1177,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:1145: \"$ac_link\") 1>&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 <<EOF
-#line 1168 "configure"
+#line 1204 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -1190,7 +1226,7 @@ vprintf();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1194: \"$ac_link\") 1>&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 <<EOF
-#line 1223 "configure"
+#line 1259 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -1245,7 +1281,7 @@ _doprnt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1249: \"$ac_link\") 1>&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 <<EOF
-#line 1281 "configure"
+#line 1317 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1303,7 +1339,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1307: \"$ac_link\") 1>&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
-#line 1819 "configure"
+#line 1855 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 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
-#line 1849 "configure"
+#line 1885 "configure"
 #include "confdefs.h"
 #include <FlexLexer.h>
 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*
index 6baa1002a9fae1e8c8fadf7ab1c824a9a146da40..de0b59611d8dece2342c1edcad800a73cfb504ca 100644 (file)
@@ -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 <class T> struct foo { static int baz; };
+template <class T> int foo<T>::baz = 1;
+], [ return foo<int>::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])
index e8b9f0c1af3343ca581b7695fec1c1b2eb8bb6b1..4491fdbd1a3beff565dae4f340532f3f3c0888ee 100644 (file)
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
        
-\version "0.1.14";
+\version "0.1.15";
 
 
 \include "declarations.ly"
index 7defccdd64accb5f4114d725c7d2f4de1ad9704e..4de5bbf2956066bb7b33d11f2d972c3ae89f26ea 100644 (file)
 % 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 }
 
 
        %
        %
 
 
-       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 }
 
 
 }
index 14c8d745a848c5ee9a8ce8046a3336e4727c42c2..8e6c1a1a0076de93a51bb03a2b3b3472931f1a5d 100644 (file)
@@ -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";
index dd807abf224daae343a730197f1f1499f6ef0bcf..0626937cefe9a5a73c6e7a5dbca133541d3f38e1 100644 (file)
 % contributed by Paolo Zuliani <zuliap@easynet.it>
 
 \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 }
 }
index a617abfd57c6dfd085015a0fc2612aab658df4a1..237dcbf4239f20db5a5f4ab60c731961d6b206dd 100644 (file)
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
        
-\version "0.1.14";
+\version "0.1.15";
 
 
 \include "declarations.ly";
index 12d4b4c111b679ee86c65b29e431a44aea3f854f..bec7306600eb90e079d7501c94335666af5a11c9 100644 (file)
 %}
 
 \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 }
 
 
        %
        %
 
 
-       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 }
 
 
 }
index 9952b4372975beef696f61faa9a2dbc8108ded30..a955fd9258b08d5f9db6360ca90bab1133eb1bb8 100644 (file)
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
        
-\version "0.1.14";
+\version "0.1.15";
 
 
 \include "declarations.ly"
index 8c1da6f5e48c0270966fadedf235d6677ba73900..26787633e1d9cd867ee4c3be62cfa518443ec1ee 100644 (file)
@@ -1,5 +1,5 @@
 
-%      $Id: norsk.ly,v 1.3 1998/03/26 11:07:44 fred Exp $      
+%      $Id: norsk.ly,v 1.4 1998/05/15 06:57:27 fred Exp $      
 
 %{
 
 %}
 
 \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 }
 
 
        %
        %
 
 
-       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 }
 
 }
 
index f679da11956ec889e5bd0e18a9cea1b3037d1c3c..6b288cf3c34719803e456b8b4b90107d3d9f7237 100644 (file)
 % 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 }
 
 
        %
        %
 
 
-       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 }
 
 
 }
index 0c6c3698f585197011729b7412a6d0f16fa17351..45b63b199e8f2144749ac911dfe88e43b4c25634 100644 (file)
@@ -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 (file)
index 0000000..c370d88
--- /dev/null
@@ -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;
+       }
+}
index 7013335d91ed3872653c08564c84d83b07e48787..71587c72ca389c06116e6042a093294b480f9cc1 100644 (file)
@@ -16,7 +16,7 @@ TestedFeatures:
 % (maybe even sooner :-)
 %
 
-\version "0.1.14";
+\version "0.1.15";
 
 alto1 = \melodic{
        \meter 4/4; 
index 30ec969af80a22e46e0cbc5ccbb4fd9d3cfcf195..35f27b18d0cd9e95d9a312541bf967656e85bd4b 100644 (file)
@@ -1,4 +1,4 @@
-\version "0.1.14";
+\version "0.1.15";
 
 
 blah = \melodic{
index 573fb58e66eefb5f2865f0eb6725227b7a987157..657eeaf89f56a132c485e239911718ca9df2fc93 100644 (file)
@@ -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.
index acc7015351d1e53084de73f9414290a3a35902db..ccd1322413539bf82fd6d7c1b0ac5050a535f2eb 100644 (file)
@@ -21,7 +21,7 @@ construct to get multiple staffs, it's cleaner
 %}
 
 
-\version "0.1.14";
+\version "0.1.15";
 
 \score{
        \melodic 
index 8232e0ac75c478cc455b5c9033d40cc420122ce6..651cd94fcb12d7aa19a7f0e0c807ae3332a0d1f9 100644 (file)
@@ -24,7 +24,7 @@
 % \lbheel \lbheel \lfheel \lftoe
 % \rbheel \rbtoe \rfheel \rftoe
 
-\version "0.1.14";
+\version "0.1.15";
 
 \score{
                \melodic {
index 6c590f3cb39b1c88ff81aee99a60b0be24e73954..48ea88df3bfdda7b8068dbefa7661dcb865c10bf 100644 (file)
@@ -19,7 +19,7 @@
    * organ staff...
 %}
 
-\version "0.1.14";
+\version "0.1.15";
 
 noShift = { \property Voice.hshift = 0 }
 Shift = { \property Voice.hshift = 1 }
index 5e24efffe321af051353c8e8e64b2da4480c2e9a..e0a019dbbf9aabe661133922b7a83a2a61b3afe5 100644 (file)
@@ -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;
index 78391cf07e9d3d6ccc61c36d7aa158f36ea4c6ce..397198f53ed9ebd6db5f02d9cf09fb84e44a0a0d 100644 (file)
@@ -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, ;
index 956a089f7bb45c82ada0596f82fcce1af580679b..31c227d576f9ae428a3d572ecf21fc7971c28d21 100644 (file)
@@ -1,5 +1,5 @@
        
-\version "0.1.14";
+\version "0.1.15";
 
 
 blah =         \melodic {
index 9e84886ea1a0f6ddaadee466305402999ce2e25b..f3bb1637dce24364b82ce3b5b57cdced52aaceaa 100644 (file)
@@ -6,7 +6,7 @@ copyright =      "PD";
 
 TestedFeatures =        "beams and beamflags";
 }
-\version "0.1.14";
+\version "0.1.15";
 
 \score{
        <
index 54a6565f534e928a316ae999c5b2cf0ff43f06a0..16b44a6f6edc87fb8c7fa7111689abd8c1cb11aa 100644 (file)
@@ -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  |
index fa3106ebc21588c26104efaf0626c548b8d6f1af..6ab2e5f41ee68519bd4ca7d1a5b2ae5404bdd51e 100644 (file)
@@ -5,7 +5,7 @@ enteredby =      "HWN,JCN";
 copyright =     "public domain";
 Tested =        "test the Collision resolution ";
 }
-\version "0.1.14";
+\version "0.1.15";
 
 
 
index 8e955b22e9c19a69b9960bd334f3da1faa941d85..23ae35e3ba2af955952a8e730635f2e351e22634 100644 (file)
@@ -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 |
index 3ca03b6f8c3c7f3b24072dfc76772d008f09cce3..c9fbb81382484980488be95f39df53e00908d857 100644 (file)
@@ -1,4 +1,4 @@
-\version "0.1.14";
+\version "0.1.15";
 FontBody=      \melodic{ 
                \octave c';
                \bar "|:";
index 1047e9883e375774086088116df1e4d2877244d5..1b72842cd6536da566c75a8ff5184cba25d6337c 100644 (file)
@@ -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{
index bc8c5a1c77664c2c2dd242b6c77803d152328f37..a79a64d7c46c662a5aaf6b9f44ed2154a4ee2126 100644 (file)
@@ -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{
index 6c627538da313adeda5bcb9b2055807e6858771a..0e83b364b1c4fa698acf61f50893086199e0bf98 100644 (file)
@@ -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 (file)
index 0000000..4a63bd9
--- /dev/null
@@ -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";
+%}
+       }
+       }
+}
index 502d255bb3ff1ca1cdca033c9bc6f6dbcc8a7324..f43487c34f0bf46804f8c231c87fa8baf5b434cb 100644 (file)
@@ -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']
        }
 }
index 508ba0226a9eddb37b9615e1471ba89f9b3b5f57..d0bdc34543c85e1c211a0b0b251e8359e9bb8794 100644 (file)
@@ -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  |
index 8574c0f75014b019b2a32c6e67ded473bc594b9b..aeb78c5ac82d6a89a1e86bd07c26c3238ec52e57 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "0.1.14";
+\version "0.1.15";
 
 \score{
        \melodic{\octave c';
index 88e7eb85d49b0a99427d21e97db6c3202a0d6ea4..3af80b1eb03fc548e7912ea08dca55369971f45a 100644 (file)
@@ -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 < 
index 60d6700600df622d8baf7d8d0e469b0c7b801ac7..c707e14ef355ffd5885aad349843bd0313de8b1a 100644 (file)
@@ -8,7 +8,7 @@ of beams";
        
 }
 
-\version "0.1.14";
+\version "0.1.15";
 
 beamintervals = \melodic{
                \meter 7/4;
index d4d5f8e261a226d5021025a21feca013c993645f..a09198ee978ae14f98733673872f6b2a5f89c3f1 100644 (file)
@@ -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{ 
index fd070478e7972d572ca9bf93f8237e37558b101e..599749f93418b6064687f41675cbb544f4910a62 100644 (file)
@@ -12,7 +12,7 @@ copyright =    "public domain";
 Tested Features                lyrics and chords
 %}
 
-\version "0.1.14";
+\version "0.1.15";
 
 melodie = \melodic {
         \clef"violin";
index 5e5127f0779f0a8b0c4ac4764101e01bca8474e5..ed7bb618b42cdcd1bd7e6d0e0277bb893a2b259d 100644 (file)
@@ -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;
index b9638cea0cd869b7afb14720320e3c86983aaa07..4ebec57399ddf78d49b899db6be38ad9332a78ca 100644 (file)
@@ -6,18 +6,14 @@
   (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
 */
 
+#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
 
index 9e7293e3d78251f346a0dd629325a1c735027c54..c7309d695ef166330e130887b74576e27a361eb9 100644 (file)
@@ -1,5 +1,5 @@
 MAJOR_VERSION=0
 MINOR_VERSION=1
-PATCH_LEVEL=64
+PATCH_LEVEL=65
 MY_PATCH_LEVEL=
 
index 142d1f7b3b6b478f80a1eaf50dfee1ee9e0f2f25..55256fdd5b78321bf93ed65398adcb24e3a353d9 100644 (file)
@@ -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_;
        }
     }
 
index 2d37445ae45b560653ca3c38f0024271d9cf72c6..1629d3fb377cebcc44e09eab5bfef08fb219625b 100644 (file)
@@ -40,6 +40,8 @@ Chord_iterator::construct_children()
        delete mi;
     }
 }
+
+
 void
 Chord_iterator::do_print() const
 {
index b4f142a7ed6f80dae3400f8c721f3902d6e12a03..5cc36319bf48aa426b045857f9232dc3405796bf 100644 (file)
@@ -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;
 }
index f33f0ba83da94f5d482c21cd24f77d36a1b90c5f..8fcb8eba4bf9bd09e46cf2e9d202d1f18eb74040 100644 (file)
@@ -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/hara-kiri-line-group-engraver.cc b/lily/hara-kiri-line-group-engraver.cc
new file mode 100644 (file)
index 0000000..fecde24
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+  hara-kiri-line-group-engraver.cc -- implement Hara_kiri_line_group_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+#include "staff-sym.hh"
+#include "command-request.hh"
+#include "p-col.hh"
+#include "hara-kiri-vertical-group-spanner.hh"
+#include "hara-kiri-line-group-engraver.hh"
+
+IMPLEMENT_IS_TYPE_B1 (Hara_kiri_line_group_engraver,Engraver);
+ADD_THIS_TRANSLATOR (Hara_kiri_line_group_engraver);
+
+void
+Hara_kiri_line_group_engraver::create_line_spanner ()
+{
+  staffline_p_ = new Hara_kiri_vertical_group_spanner;
+}
diff --git a/lily/hara-kiri-vertical-group-spanner.cc b/lily/hara-kiri-vertical-group-spanner.cc
new file mode 100644 (file)
index 0000000..92fc9e2
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+  hara-kiri-vertical-group-spanner.cc 
+    -- implement Hara_kiri_vertical_group_spanner
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+#include "hara-kiri-vertical-group-spanner.hh"
+#include "item.hh"
+#include "note-head.hh"
+#include "p-col.hh"
+#include "molecule.hh"
+
+IMPLEMENT_IS_TYPE_B1 (Hara_kiri_vertical_group_spanner, Vertical_group_spanner);
+
+void 
+Hara_kiri_vertical_group_spanner::add_element (Graphical_element* e)
+{
+  if (e->is_type_b (Note_head::static_name ()))
+    add_dependency ((Score_elem*)e);
+  Vertical_group_spanner::add_element (e);
+}
+
+// we never get here, or indeed in axis-group-spanner::do_break_processing?
+void 
+Hara_kiri_vertical_group_spanner::do_break_processing ()
+{
+  Vertical_group_spanner::do_break_processing ();
+  if (dependency_size ())
+    return;
+  transparent_b_ = true;
+}
+
+// too late ?
+void 
+Hara_kiri_vertical_group_spanner::do_post_processing ()
+{
+  if (dependency_size ())
+    return;
+  transparent_b_ = true;
+}
+
+Molecule*
+Hara_kiri_vertical_group_spanner::brew_molecule_p() const
+{
+  // aaarg: go away
+  if (1) // transparent_b_)
+    return new Molecule;
+  return Vertical_group_spanner::brew_molecule_p ();
+}
+
+
index 104b5678de4ff963cbafc94690b5b6d021ee1ed0..5820c5fa5fdff9b379e327f7c001976ac1ff6d2b 100644 (file)
@@ -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_)
index 112fa2f6d87bafc138692f3b2ad90cac4ad90cf9..8085fd6621ef2807603dbd0e6cd6faac9a289917 100644 (file)
@@ -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_req*> melodic_p_arr_;
+  Array<Musical_pitch> 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/hara-kiri-line-group-engraver.hh b/lily/include/hara-kiri-line-group-engraver.hh
new file mode 100644 (file)
index 0000000..21ca519
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+  hara-kiri-line-group-grav.hh -- declare Hara_kiri_line_group_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+
+#ifndef HARA_KIRI_LINE_GROUP_GRAV_HH
+#define HARA_KIRI_LINE_GROUP_GRAV_HH
+
+#include "line-group-grav.hh"
+
+/**
+  Just as Line_group_engraver, but won't disgrace Lily by typesetting 
+  an empty line (for orchestral scores).
+  */
+class Hara_kiri_line_group_engraver : public Line_group_engraver
+{
+public:
+  TRANSLATOR_CLONE (Hara_kiri_line_group_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+
+protected:
+  virtual void create_line_spanner ();
+};
+
+
+#endif // HARA_KIRI_LINE_GROUP_GRAV_HH
+
diff --git a/lily/include/hara-kiri-vertical-group-spanner.hh b/lily/include/hara-kiri-vertical-group-spanner.hh
new file mode 100644 (file)
index 0000000..d861e7c
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+  hara-kiri-vertical-group-spanner.hh -- declare Har_kiri_vertical_group_spanner
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+
+#ifndef HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
+#define HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
+
+#include "vertical-group-spanner.hh"
+
+/** 
+  As Vertical_group_spanner, but keeps dependencies to notes.
+ */
+class Hara_kiri_vertical_group_spanner : public Vertical_group_spanner
+{
+public:
+  DECLARE_MY_RUNTIME_TYPEINFO;
+
+  virtual void do_post_processing ();
+  virtual void add_element (Graphical_element* e);
+
+protected:
+  SCORE_ELEM_CLONE (Hara_kiri_vertical_group_spanner);
+
+  virtual void do_break_processing ();
+  virtual Molecule* brew_molecule_p () const;
+};
+
+
+#endif // HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
index 59ab88c6619f47a297a6c277ad38d85990c851fe..b895af193adf0a142af38010fa8fb7a7342e6b81 100644 (file)
@@ -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();
index 5875f84e6bfdef49aed1cfa02922b6f33a0d67f4..90c14792353fc710aa69f8f7d1d0e12bf537803b 100644 (file)
@@ -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;  
 };
index 49f234b8e125569d4aeb356a829ed2bbac0708fa..319f0544323f30a40d40343023f024aa191d9157 100644 (file)
@@ -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;
index 4d0ed37e2d8aa16eb90a471d8831625f1632a0fa..ec41cb3a54252b3399026858b4aeaa4c50faea89 100644 (file)
@@ -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<Local_acc> accs;
+    Array<Musical_pitch> accs;
     Link_array<Item> 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*);
index 21c3ca9056bbfa1bff3f996fe1804490af27dbd9..018832f7732bce40c27a3cc3cebb86a273ec855a 100644 (file)
 /**
   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*> music_p_list_;
+  Pointer_list<Music*> 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 (file)
index 0000000..cd5ad0a
--- /dev/null
@@ -0,0 +1,34 @@
+/*   
+  music-wrapper-iterator.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#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 (file)
index 0000000..989fb5f
--- /dev/null
@@ -0,0 +1,33 @@
+/*   
+  music-wrapper.hh -- declare Music_wrapper
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#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 */
+
index c59cb5b88b801ae89d7de8d3589f0931837aeafa..b5e85ff184c72d3958e80bf99df9cdd50ca7dca7 100644 (file)
@@ -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 (file)
index 0000000..643cf04
--- /dev/null
@@ -0,0 +1,46 @@
+/*   
+  musical-pitch.hh -- declare Musical_pitch
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#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 */
+
index 850ba3463fbd3091c5998c34b2cd47e20f45b696..2b3bf0fc58fe7a04e7ba34f5857578e4f1c75408 100644 (file)
@@ -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&);
index b0bccca7f5183cfd40b42286ad9a691a0ff89163..42ac85949fc10d6a6bf1eb9730915649e2ee89f3 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <FlexLexer.h>
 
+#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*> 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;
 };
index c68d4ea4c78065c122e4ca255135bb1a758ea948..0dd977dca95f2dfafd44efaecba3168acbe02c5a 100644 (file)
@@ -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<Request*> 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();
index 96dcccb84cdc6cdb20b69898b331c5cc3ba6af2d..a9181e9d900acb035c456ec8cbd1714f173ae08f 100644 (file)
 #include "string.hh"
 #include "lily-proto.hh"
 #include "dictionary.hh"
+#include "musical-pitch.hh"
 
-class Notename_table :   Dictionary< P<Melodic_req> >{
+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 (file)
index 0000000..0971a62
--- /dev/null
@@ -0,0 +1,17 @@
+/*   
+  relative-music-iterator.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#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 (file)
index 0000000..dd16398
--- /dev/null
@@ -0,0 +1,29 @@
+/*   
+  relative-music.hh -- declare Relative_octave_music
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#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 */
+
index ccdf48422b51301ef9a6d30f22273df4360ee4cd..a349f5786b859bf4e36717d1ecddf0608607d156 100644 (file)
@@ -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
index fe9885372693562ba07bdf7b44d0b4598da10efb..f50fc47729b769c9cb68eb6ba9bcf1106e1c18a4 100644 (file)
@@ -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_);
     }
 }
 
index 46a8ce55ac4e49aaaa96afc799219fd40cfa3abd..b7d9f22a23e9ef414e4750e051ebea0f43e72f17 100644 (file)
@@ -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_;
+}
index aefb42336e6437a570223ecaed3d48a279fb0945..92da6c5f1d7b62d85655e865ef9035a9c63982be 100644 (file)
@@ -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;
                }
        }
 
index 474a5910ce52f494eeef6961130ff4c48d6cf45a..8e492b621aea8f38ba7edc70cc25408829004ad2 100644 (file)
@@ -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_);
+         }
        
     }
 }
index ea45b32d44dba9582f61de4480f04f41d8e90203..c4041f0b92aefe4faa70795ce4553a8b48f21b87 100644 (file)
@@ -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
index 46c5f3420b485788651ffde62dc22de3802ad0de..543e8c088686eda502f0d460ad4e41330af14b74 100644 (file)
@@ -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
index e6a65fdadb7f0b4bcde69bd43e00fd0d4eefd4e0..a26231c0a97df73663b6672e5c54a5a50ef40fec 100644 (file)
 #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;
 }
 
+
index 84934a99c525dacd97ff8af544df09a757efc964..e6b652f9872e0f8c3c7c62a34dbb57109045705c 100644 (file)
 #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 (file)
index 0000000..1160611
--- /dev/null
@@ -0,0 +1,58 @@
+/*   
+  music-wrapper-iterator.cc --  implement 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+
+#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 (file)
index 0000000..2e241d5
--- /dev/null
@@ -0,0 +1,49 @@
+/*   
+  music-wrapper.cc --  implement 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+
+#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 ();
+}
index 298dd2dc5cefa3ec363a344ac8c206531e507c64..5b33f57c54ad4e8b1dcd709992b15ea49685c37b 100644 (file)
@@ -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 (file)
index 0000000..89da2e1
--- /dev/null
@@ -0,0 +1,238 @@
+/*   
+  musical-pitch.cc --  implement Musical_pitch
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+#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
index a74eed07009d570923923f5d5dab24d36ba2e318..c2d0d0450a5f13504e2868c63237c0a85121c886 100644 (file)
@@ -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: " <<accidental_i_<<" oct: "<< octave_i_;
-#endif
-}
-
-int
-Melodic_req::height () 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
-Melodic_req::pitch () const
-{
-  return  pitch_byte_a[ notename_i_ % 7 ] + accidental_i_ + octave_i_ * 12;
+pitch_.print ();
 }
 
 /* *************** */
index b1c484b6397cab9dffe056b43bd08848424b006e..1a46c7994cd31195627f23beff14bc683dc3f873 100644 (file)
@@ -39,7 +39,7 @@ static Keyword_ent the_key_tab[]={
   {"lyric", LYRIC},
   {"key", KEY},
   {"melodic" , MELODIC},
-  {"melodic_request", MELODIC_REQUEST},
+  {"musical_pitch", MUSICAL_PITCH},
   {"meter", METER},
   {"midi", MIDI},
   {"mm", MM_T},
@@ -53,6 +53,7 @@ static Keyword_ent the_key_tab[]={
   {"penalty", PENALTY},
   {"property", PROPERTY},
   {"pt", PT_T},
+  {"relative", RELATIVE},
   {"score", SCORE},
   {"script", SCRIPT},
   {"shape", SHAPE},
@@ -154,16 +155,22 @@ My_lily_lexer::LexerError (char const *s)
     }
 }
 
-Melodic_req*
-My_lily_lexer::lookup_melodic_req_l (String s)
+Musical_pitch
+My_lily_lexer::lookup_pitch (String s)
 {
-  return note_tab_p_->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
index eb380bbd4c5bee7809666675260fb83f40b12c74..736f21b3988afe236766fd7b73e246b7e53932c0 100644 (file)
@@ -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 ;
 }
 
index 1f3bc9921044a2a18401b71bc389901d9708e04f..fa86049c65762e317327a5f4940e447b8754428d 100644 (file)
@@ -9,20 +9,16 @@
 #include "notename-table.hh"
 #include "pointer.tcc"
 #include "musical-request.hh"
+#include "assoc-iter.hh"
 
-template class P<Melodic_req>;
-
-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<String, Musical_pitch> ai (*this); ai.ok (); ai++)
+    {
+      if (ai.val () == m)
+       return ai.key ();
+    }
+  return "r";                  // rest. 
 }
-  
index 94a20a8921ef6bf343461e2dbb769b1b838f1385..c585b7c93424202f7370fa9fc3338e38432174fa 100644 (file)
 #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<Interval>* intarr;
-    Array<Melodic_req*> *melreqvec;/* should clean up naming */
+    Array<Musical_pitch> *pitch_arr;
     Array<String> * strvec;
     Array<int> *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 <i>      dots
 %token <i>     DIGIT
-%token <melreq>        NOTENAME_IDENTIFIER
+%token <pitch> NOTENAME_PITCH
 %token <id>    DURATION_IDENTIFIER
 %token <id>    IDENTIFIER
-%token <id>    MELODIC_REQUEST_IDENTIFIER
+
 %token <id>    MUSIC_IDENTIFIER
 %token <id>    VOICE_IDENTIFIER
 %token <id>    POST_REQUEST_IDENTIFIER
@@ -227,19 +232,20 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <i>      int unsigned
 %type <i>      script_dir
 %type <id>     identifier_init simple_identifier_init
-%type <duration> explicit_steno_duration notemode_duration
+%type <duration> steno_duration notemode_duration
 %type <duration> entered_notemode_duration explicit_duration
 %type <interval>       dinterval
 %type <intvec> intastint_list
 %type <lookup> symtables symtables_body
-%type <melreq> melodic_request steno_melodic_req
-%type <notereq>        steno_note_req
-%type <melreqvec>      pitch_list
+
+%type <pitch>   explicit_musical_pitch steno_musical_pitch musical_pitch absolute_musical_pitch
+%type <notereq>        steno_notepitch
+%type <pitch_arr>      pitch_list
 %type <midi>   midi_block midi_body
 %type <moment> duration_length
 
 %type <scalar>  scalar
-%type <music>  Music transposed_music
+%type <music>  Music transposed_music relative_music
 %type <music>  property_def translator_change
 %type <musiclist> Voice Voice_body
 %type <chord>  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<Melodic_req*>;
+               $$ = new Array<Musical_pitch>;
        }
-       | 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 (file)
index 0000000..0b80d49
--- /dev/null
@@ -0,0 +1,33 @@
+/*   
+  relative-music.cc --  implement Relative_octave_music
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  
+ */
+
+#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);
index c207e75a4faa00fa6b9ffd281c30d8a8269249c7..929838a185a36b812db9170b96a236d1690f16ad 100644 (file)
@@ -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 ());
 }
index 27b149a5471b7fd2c46e82982ef763e38b5c5e1f..bbcaec268544be65123d335d72aca32430972ef9 100644 (file)
@@ -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);
        }
index 1ba5ae801e1e2b9ee332d4143d3cd88d75093d57..b4a5dbf20926555687254eb4695a63af26394038 100644 (file)
 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<void *>;
-// template class Cursor<void *>;
-
-// this should work too, and
-LIST_INSTANTIATE (void *);
-
-#endif
-
-#endif
index fa2c5ca8a6a9d7b65da420f3ef6374644028afc0..764fcc56620444f9283db49a64985bd7d6cad4c2 100644 (file)
@@ -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'
index ce3ecb34e8df283b27cf5ce585a1185a90b91345..945587c0ff50cb30f86962e4a0cef3a848788b06 100644 (file)
@@ -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)
 
index 304fabc80c87d1d7a00e815c3ae2422508fd69f8..efceff59cc6347e123dd08f86029b2dda8f46cfd 100644 (file)
@@ -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: 
index 5c4a7a860d4cbcf841cd48fd93e4b8f72a9e6131..b2e75db9ef67e38569d2053e5bb26b2481317789 100644 (file)
@@ -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'
index 3f9dba334f7fcadeda104401e246edd215d89eb3..06d53f9aceca125b478880e7d21d1135bf4b8f1d 100644 (file)
@@ -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<void *>;
-// template class Cursor<void *>;
-
-// this should work too, and
-LIST_INSTANTIATE (void *);
-
-#endif
-
-#endif
-
index 27444a94258aa04353c8e218bbb5608a4a3e20f4..f2c879d4288aa0e57165eef2824e2fae329887cb 100644 (file)
@@ -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"
index 50f649f7b18c371c8f7073a573d60c71687dd5f9..8512f242c71dce6c47cecc1d2faa16b5ffce5168 100644 (file)
@@ -5,7 +5,7 @@
 depth = ../..
 #
 
-EXTRA_DISTFILES=
+EXTRA_DISTFILES=preludes-3.lym4
 
 # descent order into subdirectories:
 #
index e1002e5d3343b3dd20bcf6fdc718fe9ea0e0c4fb..367ffc6e3fdbfa7875b1cb398af62d13d8fa9bee 100644 (file)
@@ -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";
 }
index 2818a696db0da28b6386c71e5dfc586d56e4f18f..4cbd0ed0984c64cd080f998582e25df554ee2ac1 100644 (file)
@@ -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";
 }
index 9885930e5e9b339cf63e2062119c272dc16b9520..fbe6ba30186ca7a394e9ad74c458bfab8f9bc429 100644 (file)
@@ -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";
 }
index 2ecb5ba0072a01e34d7481b6cd4a65626c9586e1..c5711e940ca533fc183aad1a33001bb2993b1908 100644 (file)
@@ -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";
 }
index 0cc2d45773b87476dab2d7249f9a5fe1c51bdd95..b7b80936f9b8e27af6e1323348a7f84f345f4b1d 100644 (file)
@@ -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";
 }
index 42529604700114d8c7121f191b52ea6ea259f47c..2916b99fd54d1f6b92f275396ee2b8eb0792d3db 100644 (file)
@@ -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";
 }
index 7d66e76078b1d726abc78f122fe19585bc93f151..4f8ae5ff321f46637e838a715e28fd1591c0c897 100644 (file)
@@ -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";
 }
index 0f3fbf85f274ca02b311897766fa8ae019fee33e..a8df6f36efee0e287a3f50cbaedcc0cae346d1d8 100644 (file)
@@ -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 (file)
index 0000000..1b85a51
--- /dev/null
@@ -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 <b`2. d>}
+       >
+       \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; }
+}
index f81fdbfdfadc69ad9ef0afa176b296d445485628..00f03caf4048bc344cfaa8e2a080eb36311ef0c8 100644 (file)
@@ -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";
 }
index 47489be30c567216ec8a29b6441e09f72e412b60..444600fa798f27b1997bdc5f97388beb3d77d847 100644 (file)
@@ -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";
 }
index f251d595c2c2787f3680ad2eb3ef478cce88ccf5..a9c1e2eca90971a91a25c3ebac5b8790b2b80bba 100644 (file)
@@ -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
index 1e2500b04bbc0611ccd2b1c214fff582c0cde228..8fcf3f08d7489befe7eda5f3d40fea24e1aa3dbd 100644 (file)
@@ -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 {
index c6701bc1ce7a4d8bb1152d77cb42f1918322c2ce..18998066bc7ab7263770a059ff2a874f43d0c00e 100644 (file)
@@ -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{}
 }
index a74a8d63c92d2b445ae0603c4627cb22185c0453..916a86c6beb6ae07e292988da7c316f5a4c9fc82 100644 (file)
@@ -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;
index f02e0df6592014423e21a68bb454fd53bbca19d2..e89abf35e70219201f62093141a64e0f721c716c 100644 (file)
@@ -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-> |
index b91d90c62ea36ff7a7aac3aef8795d0d18fd9408..8e03c6e663f0dc077cbc659875d9daa29f913db5 100644 (file)
@@ -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"
index 8d984c14c518576c2f0f5f8e8227b2893b5936a1..1eb5190776a547e8826cb11a89020e5a1045848b 100644 (file)
@@ -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";
index 605c3fc03120c8592c61fad6a1d08c49f7fb8a78..2400bf28d6f88d64239b79b6a497a38b499f7737 100644 (file)
@@ -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 52f632c15c7463401bf31a02f878346130284b58..b8123fcb10ca80d3cdf42d7bbbd545d8daab8edb 100644 (file)
--- 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
 "