]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.1.46 release/0.1.46
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 25 Feb 1998 21:20:56 +0000 (22:20 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 25 Feb 1998 21:20:56 +0000 (22:20 +0100)
48 files changed:
.dstreamrc
AUTHORS.txt
Documentation/literature.pod
Documentation/other-packages.pod
INSTALL.txt
NEWS
TODO
VERSION
bin/ly2dvi.sh
bin/make-patch.py
flower/Makefile
flower/diagonal-storage.cc
init/performer.ly
input/denneboom.ly
lib/duration-convert.cc
lib/include/duration-convert.hh
lib/include/duration.hh
lily/VERSION
lily/bar-grav.cc
lily/clef-item.cc
lily/include/bar-grav.hh
lily/include/clef-item.hh
lily/include/midi-item.hh
lily/include/midi-walker.hh
lily/include/span-bar-grav.hh
lily/include/staff-performer.hh
lily/include/staff-side.hh
lily/include/text-def.hh
lily/include/text-item.hh
lily/midi-item.cc
lily/midi-stream.cc
lily/midi-walker.cc
lily/score.cc
lily/span-bar-grav.cc
lily/spring-spacer.cc
lily/staff-performer.cc
lily/staff-side.cc
lily/template8.cc
lily/text-item.cc
make/lelievijver.lsm
make/lilypond.lsm
make/lilypond.spec
mutopia/J.S.Bach/preludes-3.ly.m4
mutopia/J.S.Bach/preludes-4.ly
mutopia/J.S.Bach/preludes-5.ly [new file with mode: 0644]
mutopia/J.S.Bach/preludes-6.ly [new file with mode: 0644]
mutopia/J.S.Bach/preludes.tex
mutopia/standchen.ly

index 03a97fa3a46e03572869341c1a81d2e77c9fc7ef..d92dd4797c844a2e88da9a8638589531d4882541 100644 (file)
@@ -45,7 +45,7 @@ Lookup                        0
 Line_spacer            0
 Melodic_req            0
 Midi_def               0
-Midistrings            1
+Midistrings            0
 Mixed_qp               0
 Music                  0
 Music_iterator         0
index 2b410d68e15591074dcc5aa3f0b4dcd12be25e50..415b79c60d1563f81741fe95c2a94c83becd66e7 100644 (file)
@@ -61,7 +61,7 @@ CONTRIBUTORS
 
 
 
-29/Jan/98                LilyPond 0.1.45                        1
+29/Jan/98                LilyPond 0.1.46                        1
 
 
 
@@ -127,6 +127,6 @@ AUTHORS(1)            LilyPond documentation           AUTHORS(1)
 
 
 
-29/Jan/98                LilyPond 0.1.45                        2
+29/Jan/98                LilyPond 0.1.46                        2
 
 
index 4e6be197364723c3c056193dce2be79537181a5a..b714006cdd1b80959e0e5dbf0af8794ec59e8fed 100644 (file)
@@ -228,6 +228,13 @@ Universidade do Porto, forthcoming.
 
 =head2 Engraving: further reading
 
+Tom Gerou and Linda Lusk.  ``Essential Dictionary of Music Notation''
+Alfred Publishing, Van Nuys CA, 1996.  ISBN 0-88284-768-6.
+
+[A concise, alphabetically ordered list of typesetting and music
+(notation) issues with a rather simplistic attitude but in most 
+cases "good-enough" answers JCN]
+
 Herbert Chlapik. ``Die Praxis des Notengraphikers''. Doblinger, 1987.
 ISBN 3-9000 035-96-2.
 
@@ -254,7 +261,7 @@ George Heussenstamm. The Norton Manual of Music Notation. New York:
 Norton, 1987.
 
 Erdhard Karkoshka. ``Notation in New Music. Trans. Ruth
-Koenig''. Praeger Publishers, New York, 1972.  Out of print.
+Koenig''. Praeger Publishers, New York, 1972.  (Out of print)
 
 C. Roemer, The Art of Music Copying. Roerick music co., Sherman Oaks
 (CA), 1973.
@@ -262,7 +269,8 @@ C. Roemer, The Art of Music Copying. Roerick music co., Sherman Oaks
 Glen Rosecrans. Music Notation Primer. New York: Passantino, 1979.
 
 Kurt Stone. Music Notation in the Twentieth Century. New York: Norton,
-1980.
+1980.  (Out of print)
+
 
 
 =head2 Other stuff
@@ -311,7 +319,7 @@ enigma,
 
 References and comments contributed by Han-Wen Nienhuys (HWN), Miguel
 Filgueiras, Mark Basinski (MB), Dorothea Blostein, Stephen Page (SP),
-Jan Nieuwenhuizen, Peter Kerr.
+Jan Nieuwenhuizen (JCN), Peter Kerr.
 
 This should really be redone in BibTeX
 
index 7a4b44ac52b7806f9e84d641b5bd3d91f81f8f7e..b04410aa3e6e535aa6f2299b8497fdc69afd099c 100644 (file)
@@ -65,7 +65,7 @@ the name MusiXTeX.
 
 =item OpusTeX, http://www.inf.ethz.ch/personal/achermann/
 
-Andreas Egler's branch is called MusiXTeX.
+Andreas Egler's branch is now called OpusTeX.
 
 =item ABC2MTeX, http://www.gre.ac.uk/~c.walshaw/abc
 
@@ -80,7 +80,7 @@ available on request. (?)
 =item MUTEX, http://www.gmd.de/Misc/Music/
 
 A TeX macro package for typesetting single-staff music by Angelika
-Schofer & Andrea Steinbach. With some fonts
+Schofer & Andrea Steinbach. With some fonts.
 
 =back
 
@@ -105,7 +105,7 @@ A formatter for medieval scores.
 =item Mup, http://www.arkkra.com/
 
 A program which creates PS from a script input. Although it comes with
-C source code, it is Shareware.
+C source code, it is shareware.
 
 =item MusicEase, http://mesa.colorado.edu/~grader/musicez.html 
 
@@ -126,21 +126,19 @@ URW's music-engraving system described by [Wanske].  (Although URW
 used ~DM 1.000.000 while developing this, it didn't buy them a cute
 name.)
 
-=item Logic,
+=item Logic, http://www.emagic.com/
 
 =item Finale
 
 =item Score, http://www.ymusic.com/Score
 
-Werner Lemberg <sx0005@sx2.hrz.uni-dortmund.de>
-writes to me: I consider SCORE as the best program for
-typesetting classical music. [..]  the price is quite high (about US$
-1000) [..]  It has a graphical interface but to get all out of the
-program you have to learn a 400 page manual almost by heart because
-you'll change most features by inputting parameters (up to 20 for some
-items) on a command line. Expect three months to master SCORE :-)
-
-
+Werner Lemberg <sx0005@sx2.hrz.uni-dortmund.de> writes:   I consider
+SCORE as the best program for typesetting classical music. [..]  the
+price is quite high (about US$ 1000) [..]  It has a graphical
+interface but to get all out of the program you have to learn a 400
+page manual almost by heart because you'll change most features by
+inputting parameters (up to 20 for some items) on a command
+line. Expect three months to master SCORE :-)
 
 
 =item Personal Composer
@@ -163,16 +161,17 @@ Shareware.
 
 =item Amadeus, Jerker.Elsgard@abc.se
 
-Jerker Elsgard writes: professional and expensive (DM 4000,--)
-engraving.  Designed as a batch program (like LilyPond).  It is aimed
-at publishers. Its history is more than fifteen years and Amadeus has
-been running under different Unix clones.  It uses MIDI-keyboard input
+Jerker Elsgard <Jerker.Elsgard@abc.se> writes: professional and
+expensive (DM 4000,--) engraving.  Designed as a batch program (like
+LilyPond).  It is aimed at publishers. Its history is more than
+fifteen years and Amadeus has been running under different Unix
+clones.  It uses MIDI-keyboard input
 
 =back
 
 =head2 Unknown
 
-=item MusE
+=item MusE, [no WWW address known]
 
 A-R Music Engraving, by A-R Editions, Inc. Professional engraving on
 Sun boxen.
@@ -181,7 +180,7 @@ Sun boxen.
 
 A project at Ohio State university, which was discontinued in 1987.
 The technical reports that have resulted from MusiCopy can still be
-obtained.
+obtained by writing to OSU department of Computer Science.
 
 
 =item Berlioz, http://www.?.fr/
index e49460518d2b05c7d258047173101e84edc53610..966420ae5a2d75bbb27bd6c5e85f54ff9b87f45a 100644 (file)
@@ -61,7 +61,7 @@ RECOMMENDED
 
 
 
-28/Jan/98                LilyPond 0.1.45                        1
+28/Jan/98                LilyPond 0.1.46                        1
 
 
 
@@ -127,7 +127,7 @@ CONFIGURING and COMPILING
 
 
 
-28/Jan/98                LilyPond 0.1.45                        2
+28/Jan/98                LilyPond 0.1.46                        2
 
 
 
@@ -193,7 +193,7 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
 
-28/Jan/98                LilyPond 0.1.45                        3
+28/Jan/98                LilyPond 0.1.46                        3
 
 
 
@@ -259,7 +259,7 @@ EXAMPLE
 
 
 
-28/Jan/98                LilyPond 0.1.45                        4
+28/Jan/98                LilyPond 0.1.46                        4
 
 
 
@@ -325,7 +325,7 @@ MUSIXTEX
 
 
 
-28/Jan/98                LilyPond 0.1.45                        5
+28/Jan/98                LilyPond 0.1.46                        5
 
 
 
@@ -391,6 +391,6 @@ AUTHORS
 
 
 
-28/Jan/98                LilyPond 0.1.45                        6
+28/Jan/98                LilyPond 0.1.46                        6
 
 
diff --git a/NEWS b/NEWS
index 0ca4e4d818efaccf00935ad5a019afbe88e115dd..13e1992ee0ccaf105fb5619b0e51607aee789bb9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,21 @@
+pl 46
+       - span-bar at upstep.
+       - bf: \score { \score_identifier }
+       - tenor clef (MB)
+
+pl 45.jcn2
+       - preludes-4,5,6
+       - bf's denneboom (oeps, see loop)
+
+pl 44.jcn7
+       - text-item.cc: try to get fingers just above note...
+       - set minimum space between columns
+       - bff: mf/Makefile out/*log required: new .ly .tex's with make-dist :-(
+       - bf's midi ascii-debug output
+       - bf: property instrument 
 
+*******
+feb 12
 pl 45
        - bf: translator switching 
        - SunOS and IRIX patches (AO)
@@ -6,8 +23,7 @@ pl 45
        - shared lib numbering (AF)
        - various fixes for debian (AF)
        - ly2dvi .6.jaf (JAF)
-
-pl 44.jcn5
+pl 44.jcn6
        - bf: crescendo.cc: bigger and use bar_size
        - slur: guess extra height for height limit for extending notes/stems
        - ps: adjustable slur height limit, bf crescendo
diff --git a/TODO b/TODO
index 7a203a530782d4c94da27800211325551b66285a..ae2a8a6eb31cd25d28038abb65de883455307a99 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
 
 0.2:
+       * abbrevs
+
        * use kpsepath to find all TeX dirs
        - configure.in 
        - clean-fonts.sh
diff --git a/VERSION b/VERSION
index 1a990573ab72b3d58e57a8bc19abf2a9204f9a15..4bdb5e852183a89bf47210dfa21e9e3deb6dcc80 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 45
+TOPLEVEL_PATCH_LEVEL = 46
 TOPLEVEL_MY_PATCH_LEVEL = 
 
 # use the above to send patches, always empty for released version:
index 96840147169e8d63ac72e1870e6bfece3dea64a2..2698d77d17951dc0ac5c2cd5b655e0bbe1ad2bf5 100644 (file)
@@ -388,7 +388,7 @@ EOF
 #
 endFile(){
 cat << EOF >> $LF
-\vfill\hfill{(\LilyIdString)}
+\vfill\hfill{\small\LilyIdString}
 \end{document}
 EOF
 #
index 6600ec2e7dbbbfb7788a110497b1234d64a1b5ef..72be6f4ec81b54f67cd0c6c2a8da5874de897f52 100644 (file)
@@ -41,7 +41,7 @@ def help():
 
 def untar(fn):
     # os.system('pwd');
-    sys.stderr.write('untarring ' + fn)
+    sys.stderr.write('untarring ' + fn + '\n')
 # can't seem to fix errors:
 # gzip: stdout: Broken pipe
 # tar: Child returned status 1
@@ -50,7 +50,7 @@ def untar(fn):
 # ugh, even this does not work, but one error message less :-)
     os.system ('gzip --quiet -dc ' + fn + '| tar xf - ')
 # so print soothing message:
-    sys.stderr.write('make-patch:ugh: Please ignore error: gzip: stdout: Broken pipe\n');
+#    sys.stderr.write('make-patch:ugh: Please ignore error: gzip: stdout: Broken pipe\n');
     sys.stderr.flush()
 
 
@@ -101,6 +101,7 @@ def makepatch(fv, tv, patfile_nm):
     os.chdir(prev_cwd)
     
 def main():
+    os.environ['GZIP'] = '-q'
     sys.stderr.write('This is make-patch version %s\n' % mp_version)
     (cl_options, files) = getopt.getopt(sys.argv[1:], 
                                        'hf:o:t:', ['output=', 'help', 'from=', 'to='])
index 0aa02c7cc8176a4d7d48cb6694918f6bffdb9c11..c46fed65ebf02e981188f26ae75d7cbe7462d6ce 100644 (file)
@@ -70,8 +70,8 @@ localinstall: $(LIBFLOWER)
 ifeq ($(LIB_SUFFIX),.so)
        $(INSTALL) -d $(libdir)
        $(INSTALL) $(LIBFLOWER).$(VERSION) $(libdir)
-       ln -s $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX).$(MAJOR_VERSION)
-       ln -s $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX)
+       ln -sf $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX).$(MAJOR_VERSION)
+       ln -sf $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX)
 endif
 
 localuninstall:
index 090f308635db8cb261110fb5d7f4328011394836..7fd6227d8f131d7f0d863b39fa38ac10d55c15ac 100644 (file)
@@ -53,13 +53,13 @@ Diagonal_storage::set_band_size (int s)
   Full_storage f (dim(), 2*s+1);
   for (int i=0; i < dim(); i++) 
     {
-       int k=-s;
-       for (;  k < -band_size_i(); k++)
-           f.elem (i,k + s) = 0.0;
-       for (; k <=  band_size_i()&& k<=s ; k++)
-           f.elem (i, k + s) = band_.elem (i,k+ band_size_i());
-       for (; k <= s; k++)
-           f.elem (i, k + s) =0.0;
+      int k=-s;
+      for (;  k < -band_size_i(); k++)
+       f.elem (i,k + s) = 0.0;
+      for (; k <=  band_size_i()&& k<=s ; k++)
+       f.elem (i, k + s) = band_.elem (i,k+ band_size_i());
+      for (; k <= s; k++)
+       f.elem (i, k + s) =0.0;
     }
 
   band_ = f;
@@ -123,8 +123,8 @@ Diagonal_storage::resize_dim (int d)
   Full_storage f (d, 2*band_size_i()+1);
   for (int i=0; i < d && i < dim(); i++) 
     {
-       for (int k=0;  k < 2*band_size_i(); k++)
-           f.elem (i,k) = elem (i,k);
+      for (int k=0;  k < 2*band_size_i(); k++)
+       f.elem (i,k) = elem (i,k);
     }
 
   band_ = f;
@@ -143,11 +143,11 @@ Diagonal_storage::mult_next (int &i, int &j) const
 {
   j++;
   if (j < i - band_size_i()) 
-       j = i- band_size_i();
+    j = i- band_size_i();
   if (j > i + band_size_i() || j >= dim ()) 
     {
-       i++;
-       j = 0 >? i - band_size_i(); 
+      i++;
+      j = 0 >? i - band_size_i(); 
     }
 }
 
@@ -162,12 +162,12 @@ Diagonal_storage::trans_next (int &i, int& j) const
 {
   i++;
   if (i < j - band_size_i())
-       i = j-band_size_i();
+    i = j-band_size_i();
   
   if (i >= dim() || i > j + band_size_i ()) 
     {
-       j++;
-       i = 0 >? j - band_size_i(); 
+      j++;
+      i = 0 >? j - band_size_i(); 
     }
 }
 
@@ -177,9 +177,9 @@ Real
 Diagonal_storage::elem (int i, int j) const
 {
   if (abs (i-j) > band_size_i())
-       return 0;
+    return 0;
   else
-       return band_.elem (i, j - i +band_size_i());
+    return band_.elem (i, j - i +band_size_i());
 }
 
 Real &
@@ -191,9 +191,9 @@ Diagonal_storage::elem (int i, int j)
   assert (!nul_entry);
 
   if (abs (i-j) > band_size_i())  
-       return nul_entry;
+    return nul_entry;
   else
-       return band_.elem (i, j - i + band_size_i());
+    return band_.elem (i, j - i + band_size_i());
 }
 
 /*
@@ -202,30 +202,30 @@ Diagonal_storage::elem (int i, int j)
 
 bool
 Diagonal_storage::try_right_multiply (Matrix_storage*dest,
-                                    const Matrix_storage*right) const
+                                     const Matrix_storage*right) const
 {
   if (right->name() != Diagonal_storage::static_name ()) 
-       return false;
+    return false;
   
   const Diagonal_storage*  right_diag = (Diagonal_storage const*)right;
   int band2 = right_diag->band_size_i();
   int n = dim();
   /*
     should check if dest is a Diagonal_storage of sufficient size too.
-   */
+    */
   for (int i=0;  i < n; i++) 
     {
-       for (int j = 0; j < n; j++) 
-         {
-           int startk = i - band_size_i() >? 0 >? j - band2;
-           int stopk = i + band_size_i() <? n-1 <? j  + band2;
-           int relk =  startk + band_size_i() -i;
-           Real sum =0.0;
-           for (int k = startk; k <= stopk; k++)
-               sum += band_.elem (i, relk++) * right_diag->elem (k, j);
-           dest->elem (i, j) = sum;
+      for (int j = 0; j < n; j++) 
+       {
+         int startk = i - band_size_i() >? 0 >? j - band2;
+         int stopk = i + band_size_i() <? n-1 <? j  + band2;
+         int relk =  startk + band_size_i() -i;
+         Real sum =0.0;
+         for (int k = startk; k <= stopk; k++)
+           sum += band_.elem (i, relk++) * right_diag->elem (k, j);
+         dest->elem (i, j) = sum;
            
-         }
+       }
     }
   return true;
 }
@@ -239,7 +239,7 @@ Diagonal_storage::Diagonal_storage (Matrix_storage*stor_l, int band_i)
   resize_dim (stor_l->dim());
 
   for (int i=0,j=0; mult_ok (i,j); mult_next (i,j))
-       band_.elem (i, j + band_i -i) = stor_l->elem (i,j);
+    band_.elem (i, j + band_i -i) = stor_l->elem (i,j);
 }
 
 void
index 87ce9ca7d86ecfe97b4a75067d5e5600a41637a7..90b3688412fcdf13a5aaafd4b40c13946ad2ae9e 100644 (file)
@@ -47,7 +47,7 @@ Staff_group = \translator
 
 Score = \translator {
        \type "Score_performer";
-%      instrument = piano;
+       instrument = piano;
        \accepts Staff;
        \accepts Grandstaff;
        \accepts Lyrics; 
index 4eef4dbf42330a1b1076bc439557e4bb1f806a17..98944aba318cedbf8e3a2eebe557b899a84fee05 100644 (file)
@@ -5,23 +5,27 @@ copyright =    "public domain";
 TestedFeatures = "This file tests silly line shapes";
 }
 
-\include "paper13.ly"
+\include "paper20.ly"
 
 \version "0.1.9";
 
 oden = \lyric{ 
-       _8 O8 den-8. ne-16 boom,4 _8 o8 den-8. ne-16 boom.4.
-       Wat8 zijn uw tak-4 ken won-8. der-16 schoon4.
+       _8 O8 |
+       den-8. ne-16 boom,4 _8 o8 | 
+       den-8. ne-16 boom.4.  Wat8 zijn uw | 
+       tak-4 ken won-8. der-16 schoon4
 }
 
 ikheb = \lyric{
-       Ik8 heb u laatst4. in_'t8 bos8. zien16 staan4.
-       toen8 zat- en er4. geen8 kaars-8. jes16 aan.4
+       _8 Ik8 heb u |
+       laatst4. in_'t8 bos8. zien16 staan4.  toen8 zat- en |
+       er4. geen8 kaars-8. jes16 aan.4
 }
 
 ugloeit = \lyric{
-       U8 gloeit in bar-4. re8 win-8. ter-16 tijd,4.
-       als8 sneeuw op aar-4. de8 licht8. ge-16 spreid.4
+       _8 U8 gloeit in |
+       bar-4. re8 win-8. ter-16 tijd,4.  als8 sneeuw op |
+       aar-4. de8 licht8. ge-16 spreid.4
 }
 
 oboom = \melodic{
@@ -39,15 +43,13 @@ bos = \melodic{
        g4 r8 f8 f8. e16 e4 
 }
 
-global = \melodic{
+global = \melodic{ 
        \meter 3/4;
        \partial 4;
        \skip 4*1;
        \skip 4*3;
        \meter 4/4;
        \skip 4*4;
-       \meter 6/4;
-       \skip 4*12;
        \meter 5/4;
        \skip 4*5;
        \meter 3/4;
@@ -55,50 +57,45 @@ global = \melodic{
        \meter 4/4;
        \skip 4*4;
        \meter 6/4;
+       \skip 4*6;
+       \skip 4*6;
+       \meter 5/4;
        \skip 4*5;
-
+       \meter 3/4;
+       \skip 4*3;
+       \meter 4/4;
+       \skip 4*8;
        \bar "|.";
 }
 
 \score{
        <
-% {
                \lyric \type Lyrics <
                        \multi 2 < 
 % huh?
 %                              \global
                                {
+                                       \oden
                                        \oden
                                        \ikheb
                                        \oden
-                                       
-%                                      _4
-%                                      \oden
-%                                      \ugloeit
-%                                      \oden
                                }
-                               \global
                        >
                >
-% }
                \melodic \type Staff < 
                        \multi 2 < 
                                \global
                                {
+                                       \oboom
                                        \oboom
                                        \bos
                                        \oboom
-
-%                                      r4
-%                                      \oboom
-%                                      \bos
-%                                      \oboom
                                }
                        >
                > 
        >
        \paper{
-%              \paper_thirteen
+               \paper_twenty
                indent = 20. \mm;
                \shape = 70. \mm 20. \mm
                         65. \mm 30. \mm
@@ -109,43 +106,67 @@ global = \melodic{
                         27.5 \mm 105. \mm
                         20. \mm 120. \mm
                         10. \mm 140. \mm
-%                        0. \mm 160. \mm
                         65. \mm 30. \mm
                         ;
+               gourlay_maxmeasures = 30.;
+% uhuh, loop if you comment these in
+%              arithmetic_basicspace = 3.8;
+%              arithmetic_multiplier = 8.\pt;
+       }
+       \midi{
+               \tempo 4 = 90;
+       }
+}
+
 %{
-               \shape = % 72.5 \mm 15. \mm
-                        % 50. \mm 60. \mm
-                        70. \mm 30. \mm
-                        60. \mm 60. \mm
-                        50. \mm 80. \mm
-                        70. \mm 40. \mm
-                        50. \mm 80. \mm
-                        30. \mm 120. \mm
-                        60. \mm 60. \mm
-                        30. \mm 120. \mm
-                        20. \mm 140. \mm
-                        0. \mm 180. \mm
-                        70. \mm 30. \mm
-                        70. \mm 30. \mm
-                        70. \mm 30. \mm
+\score{
+       <
+               \lyric \type Lyrics <
+                       \multi 2 < 
+% huh?
+%                              \global
+                               {
+                                       \oden
+                                       \oden
+                                       \ugloeit
+                                       \oden
+                               }
+                       >
+               >
+               \melodic \type Staff < 
+                       \multi 2 < 
+                               \global
+                               {
+                                       \oboom
+                                       \oboom
+                                       \bos
+                                       \oboom
+                               }
+                       >
+               > 
+       >
+       \paper{
+               \paper_twenty
+               indent = 20. \mm;
+               \shape = 70. \mm 20. \mm
+                        65. \mm 30. \mm
+                        57.5 \mm 45. \mm
+                        50. \mm 60. \mm
+                        42.5 \mm 75. \mm
+                        35. \mm 90. \mm
+                        27.5 \mm 105. \mm
+                        20. \mm 120. \mm
+                        10. \mm 140. \mm
+%                        0. \mm 160. \mm
+                        65. \mm 30. \mm
                         ;
-               \shape = 80. \mm 20. \mm
-                       70. \mm 40. \mm
-                       60. \mm 60. \mm
-                       50. \mm 80. \mm
-                       40. \mm 100. \mm
-                       30. \mm 120. \mm
-                       20. \mm 140. \mm
-                       10. \mm 160. \mm
-%                      00. \mm 180. \mm
-                       75. \mm 30. \mm
-                       ;
-%}
                gourlay_maxmeasures = 30.;
-%              arithmetic_basicspace = 1.2;
-%              arithmetic_multiplier = 2.8\pt;
+% uhuh, loop if you comment these in
+%              arithmetic_basicspace = 3.8;
+%              arithmetic_multiplier = 8.\pt;
        }
        \midi{
                \tempo 4 = 90;
        }
 }
+%}
index 46bfc1f652208026c1d88e48c132c90af316d2a9..49db74195d657882323897161c6e735421cacecb 100644 (file)
@@ -38,14 +38,6 @@ Duration_convert::dur2_str (Duration dur)
   return str;
 }
 
-#if 0
-int
-Duration_convert::dur2_i (Duration dur, int division_1_i)
-{
-  return dur2_mom (dur) * Moment (division_1_i);
-}
-#endif
-
 int
 Duration_convert::dur2ticks_i (Duration dur)
 {
@@ -100,20 +92,6 @@ Duration_convert::dur2_mom (Duration dur)
   return mom * plet_factor_mom (dur);    
 }
 
-#if 0
-Moment
-Duration_convert::i2_mom (int time_i, int division_1_i)
-{
-  if (!time_i)
-    return Moment (0);
-
-  if (division_1_i > 0)
-    return Moment (time_i, division_1_i);
-  else 
-    return Moment (-division_1_i, time_i);
-}
-#endif
-
 Duration
 Duration_convert::mom2_dur (Moment mom)
 {
@@ -201,28 +179,16 @@ Duration_convert::sync_f (Duration dur, Moment mom)
 Duration
 Duration_convert::ticks2_dur (int ticks_i)
 {
-  //           Duration dur (4, 0);
-  //           dur.set_plet (ticks_i, Duration::division_1_i_s / 4); 
-
   Moment mom (ticks_i, Duration::division_1_i_s);
   if (midi_as_plet_b_s)
     return mom2_dur (mom);
 
   Duration dur = mom2standardised_dur (mom);
 
-  //   if (dur.mom () == mom)
   if (dur.length () == mom)
     return dur;
                
-// huh?
-#if 0
-  dur.durlog_i_ = -100;
-  dur.dots_i_ = 0;
-  dur.set_ticks (ticks_i);
-  return dur;
-#else
   return mom2_dur (mom);
-#endif
 }
 
 Duration
@@ -238,7 +204,6 @@ Duration_iterator::Duration_iterator ()
   cursor_dur_.durlog_i_ = 7;
   if (Duration_convert::no_smaller_than_i_s)
     cursor_dur_.durlog_i_ = Duration_convert::no_smaller_than_i_s;
-  //   cursor_dur_.set_plet (1, 1);
 }
 
 Duration 
index e3926f030cc5e0d8a0bc228e1d42f0b85e58ef96..747363832308284d3ec2f7fc5907f4acde17774d 100644 (file)
@@ -41,12 +41,6 @@ struct Duration_convert {
     static int no_smaller_than_i_s;
     static Array<Duration> dur_array_s;
 
-//     /// Most used division in MIDI, all fine with me.
-//     static int const division_1_c_i = 384;
-
-//     /// Return (integer, division) representation.
-//     static int dur2_i (Duration dur, int division_1_i = division_1_c_i );
-
     /// Return number of ticks in (ticks, division_1) representation
     static int dur2ticks_i (Duration dur );
        
@@ -63,12 +57,6 @@ struct Duration_convert {
     /// Return Mudela string representation.
     static String dur2_str (Duration dur );
 
-//     /// Return Moment from (integer, division) representation.
-//     static Moment i2_mom (int i, int division_1_i = division_1_c_i );
-
-//     /// Return Moment (fraction of whole) representation, best guess.
-//     static Duration mom2_dur (Moment mom );
-
     /// Return duration from Moment (fraction of whole) representation.
     static Duration mom2_dur (Moment mom );
 
index 642701e8d5cf58e8783051a63c0fbbf95b06ecac..69eaf8dcaf769e867573a5e4b215cbdc19111c67 100644 (file)
@@ -25,9 +25,6 @@ extern bool no_triplets_bo_g;
   (dur)
   */
 struct Duration {
-  /**
-    Ctor of Duration. 
-    */
   Duration ();
   /// is the "plet factor" of this note != 1 ?
   bool plet_b ();
index 0318f75fa8a0375832f0344eb53e6ccd2fdddb5b..60de7033458d7d2bd0222d2a2102de125568fcd8 100644 (file)
@@ -1,4 +1,4 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 1
-PATCH_LEVEL = 45
+PATCH_LEVEL = 46
 MY_PATCH_LEVEL =
index 2d43282523a00f739d4b214d96a46ae1875e5815..4ca3bdac194a54c6ab8e0923d2d2862a52d58890 100644 (file)
@@ -14,6 +14,7 @@
 
 Bar_engraver::Bar_engraver()
 {
+  bar_p_ =0;
   do_post_move_processing();
 }
 
@@ -43,16 +44,32 @@ Bar_engraver::create_bar ()
     }
 }
 
+void 
+Bar_engraver::do_creation_processing ()
+{
+  create_bar ();
+  bar_p_->type_str_ = "";
+}
+
 void
-Bar_engraver::do_process_requests()
+Bar_engraver::do_removal_processing ()
 {
-  if (bar_p_)
-    return ;
-  
+  if (bar_p_) 
+    {
+      typeset_element (bar_p_);
+      bar_p_ =0;
+    }
+}
+
+void
+Bar_engraver::do_process_requests()
+{  
   if (bar_req_l_) 
     {
-      create_bar ();
-      bar_p_->type_str_=bar_req_l_->type_str_;
+      if (!bar_p_)
+       create_bar ();    
+
+      bar_p_->type_str_ = bar_req_l_->type_str_;
     }
   else 
     {
@@ -83,7 +100,6 @@ void
 Bar_engraver::do_post_move_processing()
 {
   bar_req_l_ = 0;
-  bar_p_ =0;
 }
 
 
index d6c02e542cfda9d0c369eb821dd8017fc9a9eb5b..927d3f2335f15dc7f3c8e3cb024db6aa22a94183 100644 (file)
@@ -37,14 +37,16 @@ Clef_item::Clef_item()
 void
 Clef_item::read (String t)
 {
-  type_= t;
-  if (type_ == "violin")
+  symbol_= t;
+  if (t == "violin")
     y_position_i_ = -2;
-  if (type_ == "alto")
+  if (t == "alto")
     y_position_i_ = 0;
-  if (type_ == "tenor")
+  if (t == "tenor") {
+    symbol_="alto";
     y_position_i_ = 2;
-  if (type_ == "bass")
+  }
+  if (t == "bass")
     y_position_i_ = 2;
 }
 void
@@ -56,7 +58,7 @@ Clef_item::read (Clef_engraver const &k)
 Molecule*
 Clef_item::brew_molecule_p() const
 {
-  String t = type_;
+  String t = symbol_;
   if  (change_b_)
     t += "_change";
   Atom s = paper()->lookup_l ()->clef (t);
index 8bf8d1301a11c7074cdff8a957019678e7d3c453..28dae424ff33480e0b1553894a055408e4a8a89f 100644 (file)
@@ -26,6 +26,8 @@ public:
 
      
 protected:
+  virtual void do_creation_processing ();
+  virtual void do_removal_processing ();
   virtual bool do_try_request (Request *req_l);
   virtual void do_process_requests();
   virtual void do_pre_move_processing();
index 311ea4f1ceed10cb21873923c59323f061d0f01f..c6e00a992e04427c578b8c8d61f7daebaf6933c5 100644 (file)
@@ -17,7 +17,7 @@ protected:
     Molecule* brew_molecule_p() const;
 public:
     
-    String type_;
+    String symbol_;
     int y_position_i_;
 
     /// is this a change clef (smaller size)?
index 4df2a4744bcedf0b0fa2e7135ce75e712b0d5e3d..55df8f34eefb51520c7977ccaa5b602fcb5cdc78 100644 (file)
@@ -9,6 +9,8 @@
 
 #include "string.hh"
 #include "lily-proto.hh"
+#include "proto.hh"
+#include "plist.hh"
 #include "virtual-methods.hh"
 #include "moment.hh"
 
   Maybe use base classes for RIFF files?
  */
 struct Midi_item {
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    Midi_item (Audio_item* audio_item_l); 
-    virtual ~Midi_item ();
-    static String i2varint_str (int i);
-    void output (Midi_stream* midi_stream_l) const;
-    virtual String str() const = 0;
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Midi_item (Audio_item* audio_item_l); 
+  virtual ~Midi_item ();
+  static String i2varint_str (int i);
+  virtual String str () const = 0;
 
-    Audio_item* audio_item_l_;
-    int channel_i_;
+  Audio_item* audio_item_l_;
+  int channel_i_;
 
 private:
-    Midi_item (Midi_item const&);
-    Midi_item& operator =( Midi_item const&);
+  Midi_item (Midi_item const&);
+  Midi_item& operator = ( Midi_item const&);
+};
+
+/**
+  timed MIDI event
+ */
+struct Midi_event
+{
+  Midi_event (Moment delta_mom, Midi_item* mitem_l);
+  ~Midi_event ();
+  Moment delta_mom_;
+  Midi_item* mitem_p_;
+  String str () const;
 };
 
 /**
   variable sized MIDI data
  */
 struct Midi_chunk : Midi_item {
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    Midi_chunk();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Midi_chunk ();
 
-    void add (String str);
-    void set (String header_str, String data_str, String footer_str);
-    virtual String str() const;
+  void set (String header_str, String data_str, String footer_str);
+  virtual String str () const;
+  virtual String data_str () const;
 
 private:
-    String data_str_;
-    String footer_str_;
-    String header_str_;
+  String data_str_;
+  String footer_str_;
+  String header_str_;
 };
 
 struct Midi_duration : public Midi_item {
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    Midi_duration (Real seconds_f);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Midi_duration (Real seconds_f);
 
-    virtual String str() const;
-    Real seconds_f_;
+  virtual String str () const;
+  Real seconds_f_;
 };
 
 struct Midi_header : Midi_chunk {
-    DECLARE_MY_RUNTIME_TYPEINFO;
-
-    Midi_header (int format_i, int tracks_i, int clocks_per_4_i);
+  DECLARE_MY_RUNTIME_TYPEINFO;
 
+  Midi_header (int format_i, int tracks_i, int clocks_per_4_i);
 };
 
 /**
   Change instrument event
  */
 struct Midi_instrument : public Midi_item {
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    Midi_instrument (int channel_i, String instrument_str);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Midi_instrument (int channel_i, String instrument_str);
 
-    virtual String str() const;
-    String instrument_str_;
+  virtual String str () const;
+  String instrument_str_;
 };
                                       
 
 struct Midi_key : public Midi_item {
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    Midi_key (Audio_item* audio_item_l);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Midi_key (Audio_item* audio_item_l);
        
-    virtual String str() const;
+  virtual String str () const;
 };
 
 struct Midi_meter : Midi_item {
 
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    Midi_meter (Audio_item* audio_item_l); 
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Midi_meter (Audio_item* audio_item_l); 
   
-    virtual String str() const;
-    int clocks_per_1_i_;
+  virtual String str () const;
+  int clocks_per_1_i_;
 };
 
 /**
   Turn a note on (blond).
  */
 struct Midi_note : public Midi_item {
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    Midi_note (Audio_item* audio_item_l); 
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Midi_note (Audio_item* audio_item_l); 
 
-    Moment duration() const;
-    int pitch_i() const;
-    virtual String str() const;
+  Moment duration () const;
+  int pitch_i () const;
+  virtual String str () const;
 
-    int const c0_pitch_i_c_ = 60;
-    Byte dynamic_byte_;
+  int const c0_pitch_i_c_ = 60;
+  Byte dynamic_byte_;
 };
 
 /**
   Turn a note off (dark).
  */
 struct Midi_note_off : public Midi_item {
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    Midi_note_off (Midi_note* midi_note_l); 
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Midi_note_off (Midi_note*); 
 
-    int pitch_i() const;
-    virtual String str() const;
+  int pitch_i () const;
+  virtual String str () const;
 
-    Byte aftertouch_byte_;
+  Byte aftertouch_byte_;
 };
 
 struct Midi_text : Midi_item {
-    DECLARE_MY_RUNTIME_TYPEINFO;
+  DECLARE_MY_RUNTIME_TYPEINFO;
     
-    enum Type { 
-       TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
-       MARKER, CUE_POINT
-    };
-    Midi_text (Midi_text::Type type, String text_str);
-    Midi_text (Audio_item* audio_item_l);
+  enum Type { 
+    TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
+    MARKER, CUE_POINT
+  };
+  Midi_text (Midi_text::Type type, String text_str);
+  Midi_text (Audio_item* audio_item_l);
     
-    virtual String str() const;
+  virtual String str () const;
 
-    Type type_;
-    String text_str_;
+  Type type_;
+  String text_str_;
 };
 
 struct Midi_tempo : Midi_item {
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    Midi_tempo (int per_minute_4_i);
-    Midi_tempo (Audio_item* audio_item_l); 
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Midi_tempo (int per_minute_4_i);
+  Midi_tempo (Audio_item* audio_item_l); 
   
-    virtual String str() const;
+  virtual String str () const;
 
-    int per_minute_4_i_;
+  int per_minute_4_i_;
 };
 
 struct Midi_track : Midi_chunk {
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    int number_i_;
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  int number_i_;
+  Pointer_list<Midi_event*> event_p_list_;
     
-    Midi_track();
+  Midi_track ();
+  ~Midi_track ();
+
+  void add (Moment delta_time_mom, Midi_item* mitem_l);
+  virtual String data_str () const;
 
-    void add (int delta_time_i, String event);
-    void add (Moment delta_time_moment, Midi_item* mitem_l);
+private:
+  // copy trap
+  Midi_track (Midi_track const&);
 };
 
 #endif // MIDI_ITEM_HH
index 313e21af3d5284050b45b73f066577506b187eb3..492553ec8bfb95fad741dff90617e92d7ce1a0cb 100644 (file)
@@ -35,7 +35,7 @@ public:
     void process();
 
 private:
-    void do_start_note (Midi_note* note_l);
+    void do_start_note (Midi_note* note_p);
     void do_stop_notes (Moment now_mom);
     void output_event (Moment now_mom, Midi_item* l);
 
index 87b9911d7d9781f866a3c482cd98cc5b98e2c7fa..59a99f5f8b124dda8b3946024bbcc2e59097fdcc 100644 (file)
@@ -29,7 +29,8 @@ public:
     
   Span_bar_engraver();
 protected:
-    
+  virtual void do_creation_processing ();
+  virtual void do_removal_processing ();
   virtual void acknowledge_element (Score_elem_info);
   virtual void do_pre_move_processing();
   virtual Span_bar* get_span_bar_p() const;
index 0d8058634203a58d4b5e8d1df4b9689b32392348..063b3c1b058df6092e11c246e876a4482477c5b2 100644 (file)
@@ -20,15 +20,17 @@ public:
   TRANSLATOR_CLONE(Staff_performer);
   DECLARE_MY_RUNTIME_TYPEINFO;
 
-  Staff_performer();
-  ~Staff_performer();
+  Staff_performer ();
+  ~Staff_performer ();
 
-  String instrument_str();
+  String new_instrument_str ();
+  String instrument_str_;
 
 protected:
   virtual void play (Audio_element* p);
-  virtual void do_removal_processing();
-  virtual void do_creation_processing();
+  virtual void do_removal_processing ();
+  virtual void do_creation_processing ();
+  virtual void do_process_requests ();
 
 private:
   Audio_staff* audio_staff_p_;
index ffc1e37d9f99011cfeea1e58bb651cf3a29d4fd7..1720722284c0c0edcaff7f258d853ca72b5d3ab1 100644 (file)
 /** A symbol which sits along a staff.
 
   */
-class Staff_side : virtual Score_elem {
-  Link_array<Score_elem> support_l_arr_;
-
-  Interval support_height() const;
-  Real get_position_f() const;
-
+class Staff_side : virtual Score_elem
+{
 public:
 
   /**
@@ -38,14 +34,19 @@ public:
 
 
   void set_staffsym (Staff_symbol * );
-  
-  Staff_side();
+  Staff_side ();
   void add_support (Score_elem*);
   DECLARE_MY_RUNTIME_TYPEINFO;
     
 protected:
-  virtual Interval symbol_height() const;
+  virtual Interval symbol_height () const;
+  virtual Real get_position_f () const;
   virtual void do_substitute_dependency (Score_elem *, Score_elem*);
-  virtual void do_post_processing();
+  virtual void do_post_processing ();
+  Interval support_height () const;
+
+private:
+  Link_array<Score_elem> support_l_arr_;
+//  Interval support_height () const;
 };
 #endif // STAFF_SIDE_HH
index 185ea715c799928ffe233bfa14235b760cf56234..6624959140b8e9f5dce4a7fda8bdb81707225f42 100644 (file)
 #include "lily-proto.hh"
 #include "input.hh"
 
-class Text_def : public General_script_def {
-protected:
-//     huh? move to public
-//    virtual Atom get_atom (Paper_def* p, Direction dir_) const;
+class Text_def : public General_script_def 
+{
+public:
     DECLARE_MY_RUNTIME_TYPEINFO;
     VIRTUAL_COPY_CONS(Text_def,General_script_def);
-public:
+
     /**
       centered , or aligned?
 
index ba7ae59db60e656b8ffab3f0761268909f19bb91..4102ba5e88207d2e41fafe341c556ac94a971812 100644 (file)
@@ -14,9 +14,9 @@
 /**
   print a fixed width text above or below the staff.
  */
-class Text_item : public Item ,public Staff_side{
-    void init (Text_def* tdef_l); 
+class Text_item : public Item ,public Staff_side
+{
+public:
 public:
 
     /// do I have width?
@@ -24,17 +24,22 @@ public:
     
     /* ***************/
 
-    Text_item (General_script_def*,Direction dir=0);
-    virtual ~Text_item();
+    Text_item (General_script_def* ,Direction dir=0);
+    virtual ~Text_item ();
     DECLARE_MY_RUNTIME_TYPEINFO;
 
 protected:
-    General_script_def * tdef_p_;
+    // ugh: so, are we a text-def, or can this vary?
+    General_script_def* tdef_p_;
+
+    virtual Interval symbol_height () const;
 
-    virtual Interval symbol_height() const;
+    virtual Molecule* brew_molecule_p () const;
+    virtual void do_pre_processing ();
+    virtual Real get_position_f () const;
 
-    virtual Molecule* brew_molecule_p() const;
-    virtual void do_pre_processing();
+private:
+//    void init (Text_def* tdef_l); 
 };
 
 
index a23919f50944d169853102cefd347188d60e75f7..24f297942d2ccc5b61a8f29e271a2a0912a8995d 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "proto.hh"
 #include "plist.hh"
+#include "pcursor.hh"
 #include "debug.hh"
 #include "misc.hh"
 #include "string.hh"
 #include "midi-stream.hh"
 #include "audio-item.hh"
 
-IMPLEMENT_IS_TYPE_B(Midi_item);
-IMPLEMENT_IS_TYPE_B1(Midi_chunk, Midi_item);
-IMPLEMENT_IS_TYPE_B1(Midi_duration, Midi_item);
-IMPLEMENT_IS_TYPE_B1(Midi_header, Midi_chunk);
-IMPLEMENT_IS_TYPE_B1(Midi_instrument, Midi_item);
-IMPLEMENT_IS_TYPE_B1(Midi_key,Midi_item);
-IMPLEMENT_IS_TYPE_B1(Midi_meter, Midi_item);
-IMPLEMENT_IS_TYPE_B1(Midi_note, Midi_item);
-IMPLEMENT_IS_TYPE_B1(Midi_note_off, Midi_item);
-IMPLEMENT_IS_TYPE_B1(Midi_tempo, Midi_item);
-IMPLEMENT_IS_TYPE_B1(Midi_text, Midi_item);
-IMPLEMENT_IS_TYPE_B1(Midi_track, Midi_chunk);
-
-Midi_chunk::Midi_chunk()
+IMPLEMENT_IS_TYPE_B (Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_chunk, Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_duration, Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_header, Midi_chunk);
+IMPLEMENT_IS_TYPE_B1 (Midi_instrument, Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_key,Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_meter, Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_note, Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_note_off, Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_tempo, Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_text, Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_track, Midi_chunk);
+
+Midi_chunk::Midi_chunk ()
   : Midi_item (0)
 {
 }
 
-void
-Midi_chunk::add (String str)
-{
-  data_str_ += str;
-}
-
 void
 Midi_chunk::set (String header_str, String data_str, String footer_str)
 {
@@ -51,13 +46,20 @@ Midi_chunk::set (String header_str, String data_str, String footer_str)
 }
   
 String
-Midi_chunk::str() const
+Midi_chunk::data_str () const
+{
+  return data_str_;
+}
+
+String
+Midi_chunk::str () const
 {
   String str = header_str_;
-  String length_str = String_convert::i2hex_str (data_str_.length_i() + footer_str_.length_i (), 8, '0');
+  String length_str = String_convert::i2hex_str (data_str_.length_i () 
+    + footer_str_.length_i (), 8, '0');
   length_str = String_convert::hex2bin_str (length_str);
   str += length_str;
-  str += data_str_;
+  str += data_str ();
   str += footer_str_;
   return str;
 }
@@ -69,13 +71,36 @@ Midi_duration::Midi_duration (Real seconds_f)
 }
 
 String
-Midi_duration::str() const
+Midi_duration::str () const
 {
   return String ("<duration: ") + String (seconds_f_) + ">";
 }
 
+Midi_event::Midi_event (Moment delta_mom, Midi_item* mitem_p)
+{
+  delta_mom_ = delta_mom;
+  mitem_p_ = mitem_p;
+}
+
+Midi_event::~Midi_event ()
+{
+// uhuh
+//  delete mitem_p_;
+}
+
+String
+Midi_event::str () const
+{
+  int delta_i = delta_mom_ * Moment (Duration::division_1_i_s);
+  String delta_str = Midi_item::i2varint_str (delta_i);
+  String mitem_str = mitem_p_->str ();
+  assert (mitem_str.length_i ());
+  return delta_str + mitem_str;
+}
+
+
 Midi_header::Midi_header (int format_i, int tracks_i, int clocks_per_4_i)
-  : Midi_chunk()
+  : Midi_chunk ()
 {
   String str;
        
@@ -262,7 +287,7 @@ Midi_instrument::Midi_instrument (int channel_i, String instrument_str)
   : Midi_item (0)
 {
   instrument_str_ = instrument_str;
-  instrument_str_.to_lower();
+  instrument_str_.to_lower ();
   channel_i_ = channel_i;
 }
 
@@ -271,7 +296,7 @@ Midi_item::~Midi_item ()
 }
 
 String
-Midi_instrument::str() const
+Midi_instrument::str () const
 {
   Byte program_byte = 0;
   for (int i = 0; instrument_name_sz_a_[i]; i++)
@@ -281,8 +306,8 @@ Midi_instrument::str() const
        break;
       }
 
-  String str = String ((char)(0xc0 + channel_i_));
-  str += String ((char)program_byte);
+  String str = String ( (char) (0xc0 + channel_i_));
+  str += String ( (char)program_byte);
   return str;
 }
 
@@ -292,17 +317,11 @@ Midi_item::Midi_item (Audio_item* audio_item_l)
   channel_i_ = 0;
 }
 
-void
-Midi_item::output (Midi_stream* midi_stream_l) const
-{
-  *midi_stream_l << str();
-}
-
 String
 Midi_item::i2varint_str (int i)
 {
   int buffer_i = i & 0x7f;
-  while ((i >>= 7) > 0) 
+  while ( (i >>= 7) > 0) 
     {
       buffer_i <<= 8;
       buffer_i |= 0x80;
@@ -327,11 +346,11 @@ Midi_key::Midi_key (Audio_item* audio_item_l)
 }
 
 String
-Midi_key::str() const
+Midi_key::str () const
 {
-  Key_change_req* k = audio_item_l_->req_l_->command()->keychange ();
-  int sharps_i = k->sharps_i();
-  int flats_i = k->flats_i();
+  Key_change_req* k = audio_item_l_->req_l_->command ()->keychange ();
+  int sharps_i = k->sharps_i ();
+  int flats_i = k->flats_i ();
 
   // midi cannot handle non-conventional keys
   if (flats_i && sharps_i)
@@ -340,7 +359,7 @@ Midi_key::str() const
 
   String str = "ff5902";
   str += String_convert::i2hex_str (accidentals_i, 2, '0');
-  int minor_i = k->minor_b();
+  int minor_i = k->minor_b ();
   str += String_convert::i2hex_str (minor_i, 2, '0');
   return String_convert::hex2bin_str (str);
 }
@@ -352,15 +371,15 @@ Midi_meter::Midi_meter (Audio_item* audio_item_l)
 }
 
 String
-Midi_meter::str() const
+Midi_meter::str () const
 {
-  Meter_change_req* m = audio_item_l_->req_l_->command()->meterchange ();
+  Meter_change_req* m = audio_item_l_->req_l_->command ()->meterchange ();
   int num_i = m->beats_i_;
   int den_i = m->one_beat_i_;
 
   String str = "ff5804";
   str += String_convert::i2hex_str (num_i, 2, '0');
-  str += String_convert::i2hex_str (intlog2(den_i) , 2, '0');
+  str += String_convert::i2hex_str (intlog2 (den_i) , 2, '0');
   str += String_convert::i2hex_str (clocks_per_1_i_, 2, '0');
   str += String_convert::i2hex_str (8, 2, '0');
   return String_convert::hex2bin_str (str);
@@ -373,30 +392,30 @@ Midi_note::Midi_note (Audio_item* audio_item_l)
 }
 
 Moment
-Midi_note::duration() const
+Midi_note::duration () const
 {
-  return audio_item_l_->req_l_->musical()->rhythmic ()->duration ();
+  return audio_item_l_->req_l_->musical ()->rhythmic ()->duration ();
 }
 
 int
-Midi_note::pitch_i() const
+Midi_note::pitch_i () const
 {
-  return audio_item_l_->req_l_->musical()->melodic ()->pitch ();
+  return audio_item_l_->req_l_->musical ()->melodic ()->pitch ();
 }
 
 String
-Midi_note::str() const
+Midi_note::str () const
 {
-  if (pitch_i() == INT_MAX)
+  if (pitch_i () == INT_MAX)
     return String ("");
 
-  Byte status_byte = (char)(0x90 + channel_i_);
+  Byte status_byte = (char) (0x90 + channel_i_);
 
-  String str = String ((char)status_byte);
-  str += (char)(pitch_i() + c0_pitch_i_c_);
+  String str = String ( (char)status_byte);
+  str += (char) (pitch_i () + c0_pitch_i_c_);
 
   // poor man's staff dynamics:
-  str += (char)(dynamic_byte_ - 0x10 * channel_i_);
+  str += (char) (dynamic_byte_ - 0x10 * channel_i_);
 
   return str;
 }
@@ -410,21 +429,21 @@ Midi_note_off::Midi_note_off (Midi_note* midi_note_l)
 }
 
 int
-Midi_note_off::pitch_i() const
+Midi_note_off::pitch_i () const
 {
-  return audio_item_l_->req_l_->musical()->melodic ()->pitch ();
+  return audio_item_l_->req_l_->musical ()->melodic ()->pitch ();
 }
 
 String
-Midi_note_off::str() const
+Midi_note_off::str () const
 {
-  if (pitch_i() == INT_MAX)
+  if (pitch_i () == INT_MAX)
     return String ("");
 
-  Byte status_byte = (char)(0x80 + channel_i_);
+  Byte status_byte = (char) (0x80 + channel_i_);
 
-  String str = String ((char)status_byte);
-  str += (char)(pitch_i() + Midi_note::c0_pitch_i_c_);
+  String str = String ( (char)status_byte);
+  str += (char) (pitch_i () + Midi_note::c0_pitch_i_c_);
   str += (char)aftertouch_byte_;
   return str;
 }
@@ -432,7 +451,7 @@ Midi_note_off::str() const
 Midi_tempo::Midi_tempo (Audio_item* audio_item_l)
   : Midi_item (audio_item_l)
 {
-  per_minute_4_i_ = ((Audio_tempo*)audio_item_l_)->per_minute_4_i_;
+  per_minute_4_i_ = ( (Audio_tempo*)audio_item_l_)->per_minute_4_i_;
 }
 
 Midi_tempo::Midi_tempo (int per_minute_4_i)
@@ -442,7 +461,7 @@ Midi_tempo::Midi_tempo (int per_minute_4_i)
 }
 
 String
-Midi_tempo::str() const
+Midi_tempo::str () const
 {
   int useconds_per_4_i = 60 * (int)1e6 / per_minute_4_i_;
   String str = "ff5103";
@@ -453,8 +472,8 @@ Midi_tempo::str() const
 Midi_text::Midi_text (Audio_item* audio_item_l)
   : Midi_item (audio_item_l)
 {
-  text_str_ = ((Audio_text*)audio_item_l_)->text_str_;
-  type_ = (Type)((Audio_text*)audio_item_l_)->type_;
+  text_str_ = ( (Audio_text*)audio_item_l_)->text_str_;
+  type_ = (Type) ( (Audio_text*)audio_item_l_)->type_;
 }
 
 Midi_text::Midi_text (Midi_text::Type type, String text_str)
@@ -465,17 +484,17 @@ Midi_text::Midi_text (Midi_text::Type type, String text_str)
 }
 
 String
-Midi_text::str() const
+Midi_text::str () const
 {
   String str = "ff" + String_convert::i2hex_str (type_, 2, '0');
   str = String_convert::hex2bin_str (str);
-  str += i2varint_str (text_str_.length_i());
+  str += i2varint_str (text_str_.length_i ());
   str += text_str_;
   return str;
 }
 
-Midi_track::Midi_track()
-  : Midi_chunk()
+Midi_track::Midi_track ()
+  : Midi_chunk ()
 {
   //                4D 54 72 6B     MTrk
   //                00 00 00 3B     chunk length (59)
@@ -514,25 +533,27 @@ Midi_track::Midi_track()
 }
 
 void 
-Midi_track::add (int delta_time_i, String event_str)
+Midi_track::add (Moment delta_time_mom, Midi_item* mitem_p)
 {
-  if (delta_time_i < 0) 
+  assert (delta_time_mom >= 0);
+  event_p_list_.bottom ().add (new Midi_event (delta_time_mom, mitem_p));
+}
+
+String
+Midi_track::data_str () const
+{
+  String str = Midi_chunk::data_str ();
+  if (check_debug && !monitor->silent_b ("Midistrings"))
+    str += "\n";
+  for (PCursor<Midi_event*> i (event_p_list_); i.ok (); i++) 
     {
-      cout << String_convert::bin2hex_str (i2varint_str (delta_time_i)) << endl;
-      cout << String_convert::bin2hex_str (event_str) << endl;
+      str += i->str ();
+      if (check_debug && !monitor->silent_b ("Midistrings"))
+        str += "\n";
     }
-  assert (delta_time_i >= 0);
-  assert (event_str.length_i());
-  Midi_chunk::add (i2varint_str (delta_time_i) + event_str);
+  return str;
 }
 
-void 
-Midi_track::add (Moment delta_time_moment, Midi_item* mitem_l)
+Midi_track::~Midi_track ()
 {
-  // use convention of 384 clocks per 4
-  // use Duration_convert
-  int delta_time_i = delta_time_moment * Moment (384) / Moment (1, 4);
-  // ? int (delta_time_moment * 4 * 384) 
-  add (delta_time_i, mitem_l->str());
 }
-
index 34833fb24b877381d1b89ed18bbd33c5cea0962c..efc244c5de69538a56b997c85f5be076d2ce8112 100644 (file)
@@ -19,46 +19,51 @@ Midi_stream::Midi_stream (String filename_str)
 {
   filename_str_ = filename_str;
   os_p_ = 0;
-  open();
+  open ();
 }
 
-Midi_stream::~Midi_stream()
+Midi_stream::~Midi_stream ()
 {
   *os_p_ << flush;             // ugh. Share with tex_stream.
   if (!*os_p_)
     {
-      warning(_("error syncing file (disk full?)"));
+      warning (_ ("error syncing file (disk full?)"));
       exit_status_i_ = 1;
     }
   delete os_p_;
 }
 
 Midi_stream&
-Midi_stream::operator <<(String str)
+Midi_stream::operator << (String str)
 {
-  if (check_debug && !monitor->silent_b("Midistrings"))
-    str = String_convert::bin2hex_str (str);
-
   *os_p_ << str;
-
-  if (check_debug && !monitor->silent_b ("Midistrings"))
-    *os_p_ << "\n";
-
   return *this;
 }
 
 Midi_stream&
-Midi_stream::operator <<(Midi_item const& mitem_c_r)
+Midi_stream::operator << (Midi_item const& mitem_c_r)
 {
-  //    *this << mitem_c_r.str();
-  mitem_c_r.output (this);
-  if (check_debug && !monitor->silent_b("Midistrings"))
-    *os_p_ << "\n";
+//    *this <<mitem_c_r.str (); 
+  String str = mitem_c_r.str ();
+  if (check_debug && !monitor->silent_b ("Midistrings")) 
+    {
+    str = String_convert::bin2hex_str (str) + "\n";
+    // ugh, should have separate debugging output with Midi*::print routines
+    int i = str.index_i ("0a");
+    while (i >= 0)
+      {
+        str[i] = '\n';
+        str[i + 1] = '\t';
+       i = str.index_i ("0a");
+      }
+    }
+
+  *os_p_ << str;
   return *this;
 }
 
 Midi_stream&
-Midi_stream::operator <<(int i)
+Midi_stream::operator << (int i)
 {
   // output binary string ourselves
   *this << Midi_item::i2varint_str (i);
@@ -66,9 +71,9 @@ Midi_stream::operator <<(int i)
 }
 
 void
-Midi_stream::open()
+Midi_stream::open ()
 {
   os_p_ = new ofstream (filename_str_.ch_C ());
   if (!*os_p_)
-    error (_("can't open `") + filename_str_ + "\'");
+    error (_ ("can't open `") + filename_str_ + "\'");
 }
index 36c8000024989bc44f85b75a7febbef3cae4e4d2..38fbad9953ee8ae359ce5aefce614688e0e0ccb9 100644 (file)
@@ -43,12 +43,12 @@ Midi_walker::~Midi_walker()
   Find out if start_note event is needed, and do it if needed.
  */
 void 
-Midi_walker::do_start_note (Midi_note* note_l)
+Midi_walker::do_start_note (Midi_note* note_p)
 {
-  Moment stop_mom = note_l->duration() + ptr ()->audio_column_l_->at_mom ();
+  Moment stop_mom = note_p->duration() + ptr ()->audio_column_l_->at_mom ();
   for (int i=0; i < stop_note_queue.size(); i++) 
     {
-       if (stop_note_queue[ i ].val->pitch_i() == note_l->pitch_i ()) 
+       if (stop_note_queue[ i ].val->pitch_i() == note_p->pitch_i ()) 
          {
            if (stop_note_queue[ i ].key < stop_mom)
                stop_note_queue[ i ].ignore_b_ = true;
@@ -58,11 +58,11 @@ Midi_walker::do_start_note (Midi_note* note_l)
     }
 
   Midi_note_event e;
-  e.val = new Midi_note_off (note_l);
+  e.val = new Midi_note_off (note_p);
   e.key = stop_mom;
   stop_note_queue.insert (e);
   
-  output_event (ptr()->audio_column_l_->at_mom (), note_l);
+  output_event (ptr()->audio_column_l_->at_mom (), note_p);
 }
 
 /**
@@ -78,9 +78,9 @@ Midi_walker::do_stop_notes (Moment max_mom)
            continue;
        
        Moment stop_mom = e.key;
-       Midi_note_off* note_l = e.val;
+       Midi_note_off* note_p = e.val;
        
-       output_event (stop_mom, note_l);
+       output_event (stop_mom, note_p);
     }
 }
 
@@ -109,7 +109,5 @@ Midi_walker::process()
        output_event (ptr()->audio_column_l_->at_mom (), p);
   else
        do_start_note ((Midi_note*)p);
-       
-  delete p;
 }
 
index 97203dec9cd7a1fc7aeddca23d83e58bcdfea161..b62844147539607001d06401a6d49fc8c7650c5a 100644 (file)
@@ -31,10 +31,11 @@ Score::Score()
 
 Score::Score (Score const &s)
 {
-  music_p_ = s.music_p_->clone();
+  music_p_ = (s.music_p_) ? s.music_p_->clone() : 0;
   for (int i=0; i < s.def_p_arr_.size (); i++)
     def_p_arr_.push(s.def_p_arr_[i]->clone());
-  header_p_ = new Header (*s.header_p_);
+
+  header_p_ =  (s.header_p_) ? new Header (*s.header_p_): 0;
 }
 
 Score::~Score()
index 8d9cffdff3318e17d9ceff57436882230704a118..727fe56c76771a82717ca582c911aa1378bffe48 100644 (file)
@@ -22,6 +22,17 @@ Span_bar_engraver::get_span_bar_p() const
   return new Span_bar;
 }
 
+
+void
+Span_bar_engraver::do_creation_processing ()
+{
+}
+
+void
+Span_bar_engraver::do_removal_processing ()
+{
+}    
+
 void
 Span_bar_engraver::acknowledge_element (Score_elem_info i)
 {
@@ -57,7 +68,6 @@ Span_bar_engraver::do_pre_move_processing()
       spanbar_p_ =0;
     }
   bar_l_arr_.set_size (0);
-       
 }
 
 
index 94fd515d3911dba6a14e74ec7d17d5d17430ec5b..2b030e6c71bc555cc0741cb7983883df846c786b 100644 (file)
@@ -249,7 +249,6 @@ void
 Spring_spacer::make_constraints (Mixed_qp& lp) const
 {
   int dim=cols.size();
-  Real nw_f = paper_l ()->note_width ();
   for (int j=0; j < dim; j++)
     {
       Colinfo c=cols[j];
@@ -635,6 +634,9 @@ Spring_spacer::calc_idealspacing()
              dist = dist >? minimum;
            }
 
+          // ugh: never let columns touch... try to set over here...
+         // ugh: use j iso i triggers ice in gcc-2.7.2.3 
+          cols[i].width_[LEFT] -= nw_f / 4;
          ideal_arr_[i] = dist;
        }
     }
index 6c813df4ae441ae424205b815eca5856f4a4118a..7270d20282ff281d678d7530ac64663c8dbf82fe 100644 (file)
 #include "audio-item.hh"
 #include "audio-staff.hh"
 
-IMPLEMENT_IS_TYPE_B1(Staff_performer,Performer_group_performer);
-ADD_THIS_TRANSLATOR(Staff_performer);
+IMPLEMENT_IS_TYPE_B1 (Staff_performer,Performer_group_performer);
+ADD_THIS_TRANSLATOR (Staff_performer);
 
-Staff_performer::Staff_performer()
+Staff_performer::Staff_performer ()
 {
   audio_staff_p_ = 0;
 }
 
-Staff_performer::~Staff_performer()
+Staff_performer::~Staff_performer ()
 {
   delete audio_staff_p_;
 }
 
 void
-Staff_performer::do_creation_processing()
+Staff_performer::do_creation_processing ()
 {
   audio_staff_p_ = new Audio_staff;
 
-  if (instrument_str().length_i()) 
-    {
-      // staff name
-      play (new Audio_text (Audio_text::TRACK_NAME, id_str_));
-      // instrument description
-      play (new Audio_text (Audio_text::INSTRUMENT_NAME, instrument_str ()));
-    }
+  play (new Audio_text (Audio_text::TRACK_NAME, id_str_));
+
+#if 1
+  String str = new_instrument_str ();
+  if (str.length_i ()) 
+    // instrument description
+    play (new Audio_text (Audio_text::INSTRUMENT_NAME, str));
+#endif
 
   // tempo
   play (new Audio_tempo (get_tempo_i ()));
 
-  if (instrument_str ().length_i ())
+#if 1
+  if (str.length_i ())
     // instrument
-    play (new Audio_instrument (instrument_str ()));
+    play (new Audio_instrument (str));
+#endif
+   
   Performer_group_performer::do_creation_processing ();
 }
 
 void
-Staff_performer::do_removal_processing()
+Staff_performer::do_process_requests ()
+{
+  String str = new_instrument_str ();
+  if (str.length_i ())
+    {
+      play (new Audio_text (Audio_text::INSTRUMENT_NAME, str));
+      play (new Audio_instrument (str));
+    }
+  Performer_group_performer::do_process_requests ();
+}
+
+
+void
+Staff_performer::do_removal_processing ()
 {
   Performer_group_performer::do_removal_processing ();
   Performer::play (audio_staff_p_);
@@ -57,10 +74,16 @@ Staff_performer::do_removal_processing()
 }
 
 String 
-Staff_performer::instrument_str() 
+Staff_performer::new_instrument_str () 
 { 
   // mustn't ask Score for instrument: it will return piano!
-  return get_property ("instrument");
+  String str = get_property ("instrument");
+  if (str == instrument_str_)
+    return "";
+
+  instrument_str_ = str;
+
+  return instrument_str_;
 
 /* ugh, but can't
   if (properties_dict_.elt_b ("instrument"))
@@ -72,9 +95,9 @@ Staff_performer::instrument_str()
 void 
 Staff_performer::play (Audio_element* p)
 {
-  if (p->is_type_b (Audio_item::static_name())) 
+  if (p->is_type_b (Audio_item::static_name ())) 
     {
-      audio_staff_p_->add ((Audio_item*)p);
+      audio_staff_p_->add ( (Audio_item*)p);
     }
   Performer::play (p);
 }
index 06690a0334b272ca4374cba4745da024ab58b628..0a741a104a68af7cf0a8e1309e25542f5f4309d8 100644 (file)
@@ -54,11 +54,11 @@ Staff_side::add_support (Score_elem*i)
 }
 
 Real
-Staff_side::get_position_f() const
+Staff_side::get_position_f () const
 {
   if (!dir_)
     {
-      warning (_("Staff_side::get_position_i(): "
+      warning (_("Staff_side::get_position_f(): "
                 "somebody forgot to set my vertical direction, returning -20"));
       return -20;
     }
@@ -68,8 +68,7 @@ Staff_side::get_position_f() const
   Real inter_f = paper()-> internote_f ();
 
   Interval v= support_height();
-//  y = v[dir_]  + 2*dir_*inter_f;     // ugh
-  y = v[dir_]; // ugh
+  y = v[dir_] + 2 * dir_ * inter_f;    // ugh
 
   return y;
 }
index 301e86f3f754fd79219355de053abf18439406d3..4ce5596d28d166cbe0be551f2e6713c1ef3b7cf6 100644 (file)
 #include "audio-column.hh"
 #include "audio-item.hh"
 #include "audio-staff.hh"
+#include "midi-item.hh"
 #include "pcursor.tcc"
 #include "plist.tcc"
 
 
 template POINTERLIST_INSTANTIATE(Audio_element);
 template POINTERLIST_INSTANTIATE(Audio_column);
-
+template POINTERLIST_INSTANTIATE(Midi_event);
index 16a45977f17d9bcf043e97c4fa2a6c3349ea3e77..952e917052ac4fac493f9d55eedfcf7e9d51f93d 100644 (file)
 #include "stem.hh"
 #include "molecule.hh"
 #include "lookup.hh"
+#include "debug.hh"
 
-Text_item::Text_item (General_script_def*tdef_l, Direction d) 
+Text_item::Text_item (General_script_def* tdef_l, Direction d) 
 {
   dir_ = d;
   fat_b_ = false;
-  tdef_p_ = tdef_l->clone();
+  tdef_p_ = tdef_l->clone ();
 }
 
-Text_item::~Text_item()
+Text_item::~Text_item ()
 {
   delete tdef_p_;
 }
 
 void
-Text_item::do_pre_processing()
+Text_item::do_pre_processing ()
 {
   if (!dir_)
     dir_ = DOWN;
 }
 
+Real
+Text_item::get_position_f () const
+{
+  // uhuh, tdef/gdef?
+  if ( (tdef_p_->name () != Text_def::static_name ()) 
+    || ( ( (Text_def*)tdef_p_)->style_str_ != "finger"))
+    return Staff_side::get_position_f ();
+
+  if (!dir_)
+    {
+      warning (_ ("Text_item::get_position_f(): "
+                "somebody forgot to set my vertical direction, returning -20"));
+      return -20;
+    }
+
+  Interval v = support_height ();
+  // add no extra: fingers should be just above note, no?
+  return v[dir_];
+}
+
 Interval
-Text_item::symbol_height() const
+Text_item::symbol_height () const
 {
-  return tdef_p_->get_atom (paper(), dir_).dim_.y ();
+  return tdef_p_->get_atom (paper (), dir_).dim_.y ();
 }
   
 Molecule*
-Text_item::brew_molecule_p() const
+Text_item::brew_molecule_p () const
 {
-  Atom a (tdef_p_->get_atom (paper(), dir_));
+  Atom a (tdef_p_->get_atom (paper (), dir_));
 
   /*
     if (fat_b_)
-    a.sym.dim.x = tdef_p_->width (paper());
+    a.sym.dim.x = tdef_p_->width (paper ());
     */
   Molecule* mol_p = new Molecule (a);
 
   if (dir_<0)          // should do something better anyway.
-    mol_p->translate_axis (-mol_p->extent().y ().left , Y_AXIS);
+    mol_p->translate_axis (-mol_p->extent ().y ().left , Y_AXIS);
   mol_p->translate_axis (y_, Y_AXIS);
   
   return mol_p;
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Text_item,Item);
+IMPLEMENT_IS_TYPE_B1 (Text_item,Item);
index e57f4746fde7805b39b0958be6d02d66ddd55fec..adfe9b3f2b174623faafc1375ce0f7e8cce3f13b 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Titel: LilyPond
-Versie: 0.1.45
-Inschrijf datum: 11FEB98
+Versie: 0.1.46
+Inschrijf datum: 17FEB98
 Beschrijving: LilyPond is de muziek typesetter van het GNU Project.  
                Het programma genereert muziek in zichtbare of 
                hoorbare vorm uit uit een muzikale definitie file: 
@@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-       395k lilypond-0.1.45.tar.gz 
+       395k lilypond-0.1.46.tar.gz 
 Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
-       395k lilypond-0.1.45.tar.gz 
+       395k lilypond-0.1.46.tar.gz 
 Copi"eer politie: GPL
 End
index 7e7a32bf7e5e2fdd64d93cafa0ef43edf7b691ff..4e6df5ae07cbfa48d14e62551f7a0ed5276f2eaf 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 0.1.45
-Entered-date: 11FEB98
+Version: 0.1.46
+Entered-date: 17FEB98
 Description: LilyPond is the GNU Project music typesetter.  The program
                generates visual or auditive output from a music 
                definition file: it can typeset formatted sheet music 
@@ -15,8 +15,8 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       470k lilypond-0.1.45.tar.gz 
+       470k lilypond-0.1.46.tar.gz 
 Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
-       470k lilypond-0.1.45.tar.gz 
+       470k lilypond-0.1.46.tar.gz 
 Copying-policy: GPL
 End
index 4d75d1484892cc0f9e77207a5747ed4fedaf460f..30bec0b72e666cb2eb240961ff5dc50de1aaf227 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.1.45
+Version: 0.1.46
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.45.tar.gz
+Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.46.tar.gz
 Summary: A program for typesetting music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
@@ -31,7 +31,7 @@ strip lily/out/lilypond mi2mu/out/mi2mu
 make -C Documentation gifs
 make prefix="$RPM_BUILD_ROOT/usr" install
 %files
-%doc Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt BUGS TODO NEWS DEDICATION ANNOUNCE README
+%doc Documentation/out/ANNOUNCE.txt Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/DEDICATION.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/NEWS.txt Documentation/out/TODO.txt Documentation/out/cadenza.ly.txt Documentation/out/collisions.ly.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/font16.ly.txt Documentation/out/font20.ly.txt Documentation/out/gallina.ly.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/multi.ly.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt Documentation/out/preludes-1.ly.txt Documentation/out/preludes-2.ly.txt Documentation/out/rhythm.ly.txt Documentation/out/scsii-menuetto.ly.txt Documentation/out/standje.ly.txt Documentation/out/toccata-fuga-E.ly.txt Documentation/out/twinkle-pop.ly.txt Documentation/out/twinkle.ly.txt Documentation/out/wtk1-fugue2.ly.txt Documentation/out/wtk1-prelude1.ly.txt BUGS TODO NEWS DEDICATION ANNOUNCE README
 %doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/denneboom.ly input/font-body.ly input/font.ly input/font11.ly input/font13.ly input/font16.ly input/font20.ly input/font26.ly input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/sleur.ly input/slurs.ly input/spacing.ly input/stem.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly Documentation/mudela-course.doc Documentation/mudela-man.doc 
 %doc Documentation/out/lelie_logo.gif
 /usr/bin/convert-mudela
index 0a85331b0553a9ef801e8daeac1304ce54553361..88f575edd37ae5d0c15df1b6659748583f85ba52 100644 (file)
@@ -39,7 +39,7 @@ rh = \melodic{
        s('bes d g)
 
 
-       s(c fis a -"poco\\_a\\_poco\\_cresc.")
+       s(c fis a -"poco a poco cresc.")
        s(d g bes)
        s(d fis c')
 
@@ -57,7 +57,7 @@ rh = \melodic{
        s('fis 'a c)
        s('fis 'a c)
        r16\p ['g 'a c] ['b 'g 'b 'g] r 'g r 'g
-       s('a c fis -"poco\\_cresc.")
+       s('a c fis -"poco cresc.")
        s(c fis a)
        s('b d g)
        s('b d f -"dim.")
index 6086842e714a45aec4cdedeb2eb3a82b53824e9e..9b54a623dce0c1ea3edf590b0269a512eacd9cd0 100644 (file)
@@ -33,12 +33,28 @@ one = \melodic{
        ['a-4_"dim." 'g-1 'a 'b] ['a-2 c-4 'b 'a]
        ['g-1 'fis-2 'g-3 'a] ['g-3 'b 'a 'g] |
        \stemup
-       )'fis4\p r16 [''b-1\< d-2 ''b~] <'g4-5 'e-3 ''b>
-       r16 ['cis-1 'e-2 \!cis] |  % cis wants ~
-
+       )'fis4\p 
+       \skip 4*7; |
+       d4.\mf cis8-"4\\_5" ~ cis 'b4-5 'a8-"4\\_5" ~ |
+       \textstyle "italic";
+       'a 'g4-5 'fis8-4 ~ ['fis16 'fis-4-"dim." 'e-3 'd-2] 
+       \textstyle "finger";
+       'e4-"3\\_5" ~ |
+       ['e16 'e-5 'd 'cis] 'd4-5 ~ ['d16 'd-5 'cis ''b] 'cis4-5 |
+       \stemboth
+       [''fis16-1\p ''a-2 'd-5\< 'c-4] [''b-1 'd-2 'g-5 'fis-4]
+       ['d-1 'b-5 'a 'g] ['fis-2 'e-1 'd-4 \!'c!-3] |
+       [''b-2 'd-1 'g 'a] ['fis32 'g 'fis16] ['e16-4 'd-3]
+       ['d8. 'e16~] ['e 'd8 'cis16] |
+       \stemup
+       r16 ['d-1\< 'fis 'd] ['g 'a 'b 'g-1] [c-3 'b c d] [c e d-4 \!c] |
+       'b4-5 'a ~ ['a8 'g-5 ~] ['g16 'fis8-4 'e'16-3] |
+       ['fis8-4 'e-5~] ['e 'd-5~] 'd4 'cis-4 |
+       'd2\p-"rall." ~ ['d16 ''a-2( ''b-3 'cis-4] )'d4-5 |
 }
 
 two = \melodic{
+       \octave c;
        \textstyle "finger";
 % ugh: koor
 %      \translator Staff=bass \octave c; \stemup
@@ -58,18 +74,53 @@ two = \melodic{
        e'4 d' ~ [d'16 d-1 cis'-2 g-1] cis'4-2 ~ |
        [c'8 a-3] d'4.-1 d'4-> cis'8-2 |
        \translator Staff=treble \octave c''; \stemdown
-       'd4 \skip 4*3; |
+       'd4 
+       \stemboth
+       r16 [''b-1\< d-2 ''b~] <'g4-5 'e-3 ''b>
+       r16 ['cis-1 'e-2 \!'cis~] |
+       <'a4-5 'f-3 'cis> r16 ['d-1 'fis-2 'd~] <'b4-5 'g-3 'd>
+       r16 ['fis-1 'a 'fis~] |
+       \stemdown
+       'fis4 'e 'd 'cis |
+       ''b ''a ''b4. ''b8 |
+       ''a4
+       \translator Staff=bass \octave c; \stemup
+       r16 [b-3 fis-1 a-2] g4-1 r16 [a-3 e-1 g-2] |
+       \skip 4*4; \skip 16*1;
+       \translator Staff=treble \octave c''; \stemdown
+       'd8.-1 ~ ['d8 'c] 'd4 [''a8 ''g] |
+       \translator Staff=bass \octave c; \stemup
+       [fis'8 c'-1] b4-1 <a
+       \translator Staff=treble \octave c''; \stemdown
+       ''a4.-2>
+       \stemdown
+       'a8~ |
+       ['a 'g-3~] ['g16 'e 'fis8~] ['fis16 'd8.~] ['d8. cis!16] |
+       \translator Staff=bass \octave c; \stemup
+%      <[d'8-2 a-1> <a~ g]> <a4 [fis16-2> e-1 fis-2 d-1]
+       \multi 2 <
+               { 
+                       [d'8-2 a~] a4 
+               }
+               { 
+                       \property Voice.hshift = 1 
+                       [a8-1 g] [fis16-2 e-1 fis-2 d-1]
+                       \property Voice.hshift = 0
+               }
+       >
+       [g-1 fis-2 g-1 a-2] [g-1 b-3 a-2 g-1 ~] |
+       [g g-1 fis-2 e-1] fis-2 ~ fis2
 }
 
 three = \melodic{
        \octave c;
        \stemdown;
        d4-3 c-4 'b e-3 |
-       a16 ['a-5\mf( c-3 'a-5] [d-2 e-1 fis-2 d-4]
+       a16 ['a-5\mf( cis-3 'a-5] [d-2 e-1 fis-2 d-4]
        [g-1 fis-3 g a] [g b a g] |
        )fis4 fis e a-4 |
-       d'16 \stemboth [d-5\f( fis-3 d-5] [a-2 b-1 c'-2 a-4]
-       [d'-1 c'-3 d' e'] [d'-4 fis'-2 e'-1 ) d'] |
+       d'16 \stemboth [d-5\f( fis-3 d-5] [a-2 b-1 cis'-2 a-4]
+       [d'-1 cis'-3 d' e'] [d'-4 fis'-2 e'-1 ) d'] |
        [cis'-3 b-4 cis'-3 d'-2] [c'-4 e'-2 d'-3 c'-4] 
        \stemdown b4-5 [cis'8-4 b-3(] |
        [a-4 )fis-5 b-2 a-3] [gis-4 e-5 a-3 g-4] |
@@ -77,10 +128,47 @@ three = \melodic{
        \stemboth
        r16 [d-4( fis-2 d-4] [)g8-.-1 'g-.-5]
        r16 [e-4( g-2 e-4] [)a8-. 'a-.-5] |
+       r16 [fis-4( a fis] [)b8-. 'b-.] r16 [g-4( b g] [)d'8-. d-.] |
+       r16 ['d16-5( 'fis-3 'd] ['a-2 'b-1 cis-2 'a-4] [d 'b-5 d-3 'b]
+       [fis-2 g a-2 fis-4] |
+       )fis16 ['g( 'b 'g] [d-2 e fis-2 d-4] [)g8-. 'g-.] r16 [cis-4( e cis] |
+       [)fis8-. 'fis-.] \stemdown r16 ['b-4( d 'b] [)e8-. 'e-.] 
+       r16 ['a-4 cis a] |
+       \stemboth
+       [d-1 e-3 fis-2 d-4] [g-1 fis-2 e-3 d-1] [cis!-3 'a-5 'b cis]
+       [d-2 e fis-2 d-4] |
+       [g8 e-3] \stemdown [a 'a] ['b8.-4 'g16-5] a4-4 |
+       [d8-5 a-2~] [a g-3~] [g g-3] fis4-4 |
+       \stemup
+       r16 [g-2 b-1 g-3] [b'8.-1 c'16-1] [b8.-2 bes16-3] [a8-1 g] |
+       \stemdown
+       r16 ['a-2 cis!-1 a-2] [d-1 e fis d] [e8-1 d-2] [e-1 'a-2] |
+       [d 'a-2~] ['a16 'a-2 'b cis-2] d2 |
+}
+
+four = \melodic{
+       \skip 4*36;
+       \octave c';
+       \stemup;
+       \property Voice.hshift = 1 
+       a2 fis |
+       d
+       \property Voice.hshift = 0 
+       \skip 4*11;
+       \translator Staff=bass \octave c; \stemup
+       a4 ~ [a16 d-2 g8-1] [fis e-1] |
+       \stemdown
+       d1 ~ | 
+       d ~ | 
+       'd ~
+       'd2 'd2
 }
 
 rh = \melodic{
-       \one
+       \multi 2 <
+               \one
+               \four
+       >
        \bar "|.";
 }
 
@@ -107,16 +195,24 @@ global  = \melodic{
                \type Staff=treble  < 
                        \global 
 % huh? try these iso directly!
-                       \lh
-%                      \one
-%                      \two
+%                      \lh
+                       \multi 2 <
+                               \one
+                               \four
+                       >
                >
                \type Staff=bass  < 
                        \global 
-                       \rh
+%                      \rh
 % or try \two having here, iso above!
 %                      \two
-%                      \three
+                       { 
+                               \clef "bass";
+                               \multi 2 < 
+                                       \two
+                                       \three
+                               >
+                       }
                >
        >
        \paper{
diff --git a/mutopia/J.S.Bach/preludes-5.ly b/mutopia/J.S.Bach/preludes-5.ly
new file mode 100644 (file)
index 0000000..aee8b4c
--- /dev/null
@@ -0,0 +1,212 @@
+\header{
+filename =      "preludes-5.ly";
+title =         "5";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "jcn";
+copyright =     "public domain";
+}
+
+\include "paper20.ly"
+
+rh = \melodic{
+       \octave c';
+       \textstyle "italic";
+       [d8-1\p a-5-"legato" f-3 d-1 a-5 f-3] |
+       [d-1 a-5 f-3 d-1 a-5 f-3] |
+       [d-1\< b-4 g-2 d-1 b-4 \!g-2] |
+       [d-1 b-4 g-2 d-1 b-5 g-3] |
+       [cis-1\mf g-4 e-2 cis-1 g-4 e-2] |
+       [cis-1 b-5 g-4 e-2 a-5 g-4] |
+       [f-3\< d-1 f-2 a-4 f-1 a-2] |
+       [d'-5 a-1 d'-2 f'-4 d'-1 \!f'-2] |
+       [b'\> f'-3 e' d' c'-3 b] |
+       [a gis-3 fis e d'-5 \!b-2] |
+       \multi 2 < 
+               {
+                       \stemup
+%                      c4\mr^"(\\textsharp)"\p r r |
+%                      c4\mr^"(\\textsharp)" r r
+                       c4^"(\\textsharp)"\p r r |
+                       c4^"(\\textsharp)" r r
+               }
+               {
+                       \stemdown
+                       a4 r r |
+                       a4 r r
+               }
+       > |
+       [a'8\mf( es'-3\> d' c' bes!-3 a] |
+       [g fis-3 e!-2 d-1 c'-4 \!a] |
+       [)bes32(\p a bes16] [d'8-5 bes-3 g-1] )g'4 |
+%      r8 [d'-5( c bes a\pr g] |
+       r8 [d'-5( c bes a g] |
+       [)a-2 c'-4( a f] ) f'4 |
+%      r8 [c'-5 bes a g\tr f] |
+       r8 [c'-5 bes a g f] |
+       [g-2 bes-4 a g fis-1 e-2] |
+       [f-3 d-1 f-2 a-3 d'-5 g-2] |
+       \multi 2 < 
+               {
+                       \stemup
+                       [cis'32-4 b cis'16 e'8-5-"poco cresc." cis-3 a e' cis]
+               }
+               {
+                       \stemdown
+                       a4
+               }
+       >
+       \stemboth
+       [a8 e'-5 cis' a bes!-3 a] |
+       [g e'-5 cis'-3 g e'-5 cis'-3] |
+       [g-1 e'-5 cis' g a-3 g] |
+       [f-"dim." d'-5 bes f d' bes] |
+       [f d'-5 bes f d' bes] |
+       [fis-2-"dim." c'-5 a-3 fis-2 c'-5 a-3] |
+       [fis-2 c'-5 a-3 fis-2 c-5 a-3] |
+       [bes-4 g-1 fis-2 g-3 d-1 g-2] |
+       [bes-4 g-2 d-1 bes-5 g-3 d-1] |
+       [e-2\p g-4 fis-3 g-1 bes-4 g-2] |
+       [es-1 bes-4 g-2 es bes g] |
+       [cis-1 bes-4 g-2 cis bes g] |
+       [cis-1 bes-4 g-2 cis-1 a-5 g-4] |
+       [f-3 a f d a-5 f] |
+       [d-1 a-5 f-3 d-1 cis-2 d-1] |
+       [e-3\< g-5 e-3 'bes-1 g-5 e-3] |
+       ['bes-1 g-5 e-3 \!cis-2 'a-1 g-5] |
+       [f16-4\mf d-2 c-1 'bes-3] s4 s |
+% ugh
+%      s1 |
+       s4 s4 s4 |
+       s4 s16 [d16-1-"m.d." f-2 a-4] [d-2-"m.g." f a] \stemup d'-1 |
+       [f' a'-4 f' d'] [f'-4 d' b d'-5] [gis-2 b a g] |
+       <g'!4.-5\f e' a> a'8-5 
+       \multi 2 <
+               {
+                       \stemup
+                       f'4-4\> ~ | \![f'8 e'] [e'32-4 f' e'8. ~] [e'8 d'-3]
+               }
+               {       
+                       \stemdown
+                       <d'4 a> r4 cis'-2
+               }
+       > |
+       \stemboth;
+       [d'8-4 c'!-3 a-1 d'-4 bes-2 g-1] |
+       [c'-5 a-3 fis-2 bes-4 g e ] |
+       [a-5 fis-"dim. e rall." d g-5 e cis-2] |
+       \multi 2 <
+               {
+                       \stemup
+                       <fis2-.-5\p 'a>
+               }
+               {       
+                       \stemdown
+                       [d32( cis d8. ~] ) d2
+               }
+       > |
+       \bar "|.";
+}
+
+
+lh = \melodic{
+       \clef "bass";
+       \octave c;
+       [d32( cis )d8.] r4 r |
+       'd4 r r |
+%      d\mr r r |
+       d r r |
+       'd4 r r |
+%      d\mr r r |
+       d r r |
+       'd4 r r |
+       [d8-2 'a-5 d-2 f-1 d-4 f-2] |
+       [a-1 f-4 a-2 d'-1 a-2 d'-1] |
+       gis4-3 r r |
+       e-4( )gis-2 e |
+       [a8-4 e'-1 c'-2 a-4 e'-1 c'-2 ] |
+       fis4-5 r r 
+       d-4( ) fis d-5 |
+%      g\mr-"(\textsharp)" r r f!8 |
+       g-"(\textsharp)" r r8 f! |
+       [e32 f e8.] r4 r |
+%      f\pr r r8 e |
+       f r r8 e |
+       d4 r8 [f-1 e d] |
+       [e-2 d-3 cis-4 e-1 d-2 cis-3] |
+       d4-2( )c! 'b-4 |
+       'a( )a a |
+       'a( )a a |
+       'a( )a a |
+       'a( )a a |
+       'b r r |
+       'b-5( )b 'b |
+       'a r r |
+       'a-2( )d-1 'd |
+       'g r r |
+       'g( )g g |
+       'g r r |
+       'g( )g g |
+       'a r r |
+       'a( )a a |
+       'a r r |
+       'a( )a a |
+       'cis r r |
+       'cis( )cis 'cis |
+       'd-4 s16
+       \stemdown
+       [g16-1-"m.g." f e] [f-2 a d-3 f] | 
+       'a
+       \stemup
+       [d-5-"m.d." c 'bes] 'a 
+       \stemdown ['g-2 'f-"m.g." 'e] ['d 'f-4 'a-2 d-1] |
+       \stemup
+%      [f-2\ped a]
+       [f-2-"Ped." a]
+       \stemdown
+%      [d-4-"m.g." f-"cresc."] a s s8 s4\dep |
+       [d-4-"m.g." f-"cresc."] a s s8 s4-"*" |
+% ugh, whole rest has duration of one bar
+%      r1 |
+       r4 r r |
+%{
+       ugh, 'forget' the 8 below:
+       [cis-3( e cis 'a] [d16-1 c 'b 'a] |
+       and lily dumps koor
+lilypond: ../flower/include/varray.hh:116: struct Rhythmic_grouping *& Array<Rhythmic_grouping *>::elem(int) const: Assertion `i >=0&&i<size_' failed.
+Aborted (core dumped)
+%}
+       [cis8-3( e cis 'a] [d16-1 c 'b 'a] |
+       [)'g8 g a-2( g-3 a-1 'a] |
+       )d4-3 d'-1 d |
+       d r r |
+       'd( )d 'd |
+       'd2. |
+       \bar "|.";
+}
+
+global  = \melodic{
+       \meter 3/4;
+       \key bes;
+}
+
+\score{
+       % Moderato
+       % it would be nice to shut-off fingering...
+       \melodic \type Grandstaff < 
+               <
+                       \global 
+                       \rh
+               >
+               <
+                       \global 
+                       \lh
+               >
+       >
+       \paper{
+               \paper_twenty
+               linewidth= 195.\mm;
+       }
+       \midi{
+               \tempo 4 = 90;
+       }
+}
diff --git a/mutopia/J.S.Bach/preludes-6.ly b/mutopia/J.S.Bach/preludes-6.ly
new file mode 100644 (file)
index 0000000..14d1bf6
--- /dev/null
@@ -0,0 +1,128 @@
+\header{
+filename =      "preludes-6.ly";
+title =         "6";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "jcn";
+copyright =     "public domain";
+}
+
+\include "paper20.ly"
+
+one = \melodic{
+       \octave c';
+       \skip 4*4; |
+       \stemup
+       r4 d2-5( cis4-4 |
+       \stemboth
+       [)d16-5\mf a'-4( g' f'] [e' f'-4 cis'-2 d'-1] 
+       [e32-3 d e8 f16] [d'8.-1 cis'16-3] |
+       \stemup
+       )cis'4\> ~ [cis16 a \!d'8 ~] d4 c-5 |
+       b2-4 ~ b4 a-5 ~ |
+       [a16 a-5 \stemup g! f] g4-4\< ~ g f-3 ~ |
+       [\!f16 a g f] [e16 g8.-5 ~] [g16 g-5 f-4 e-3] [d-1 f8.-4 ~] |
+       [f16 f-3 e d] b4 a-5 g-5 |
+       fis4-4 g r8\<-"rall." [g16-1( bes-2] r16 [bes-2 a-2 \!g-1] |
+       ) d'1-5
+}
+
+two = \melodic{
+       \octave c';
+       r16\p [d'-5( c'-4 bes-3] [a-2 bes-3 f-1 g-2] 
+       [a32-3 g a8 bes16-1] [g8. f16-1] |
+       )f2 e2 |
+       \translator Staff=bass \octave c; \stemup
+       r4 a-1 bes-2 b-1 |
+       \translator Staff=treble \octave c'; \stemdown
+       r16 [b-3 a-1 g-2] [f8. f16-2] e2 ~ |
+       e2 ~ e4 ~ [e16 e-2 f! d-1] |
+       s4 [e32 d e8.~] e4 d4 ~ |
+       d4. [cis16-2 d-1] cis4 d-1 ~ |
+       d8 r r16 [e-2 f d] r16 [e-2 f d] r [d-1 e-3 cis] |
+       r16 [e-3 d-1 c!-2] ['bes! d8.] r8 e'4-5 |
+       fis1-2
+}
+
+three = \melodic{
+       \octave c;
+       \stemup
+       f2-1( e-2 |
+       [)d16 b'( c' bes] [a-4 bes-2 f-5 g-4] 
+       [a32 g a8 bes16-2]
+       [g8.-4 f16-5] |
+       )f2-5 g4-4 gis |
+       a2-2 ~ [a16 a-1( g f] [e-4 f-2 c-5 d] |
+       [e32 d e8 f16] [d8.-4 c16-5] \stemboth )c4.-5 d8-4 |
+       e4 ~ [e16 f-2( e-3 d-4] [cis 'a 'b cis-3] [d-4 e-3 f-2 d-4] |
+       \textstyle "finger";
+       )'bes!2-"5\\_4" 'a ~ |
+       a a |
+       'd cis-5 |
+       b1-2
+}
+
+four = \melodic{
+       \octave c;
+       d2-3 cis-4 |
+       \skip 4*16;
+       \stemup
+       b2-1 a-1 |
+       g a4. [gis16 a] |
+       gis2 <[g8 cis> <f-3 d-1]> e4-2 |
+       d4. [fis16-3 g-2] r16 b8.-1 ~ b4 |
+       \stemdown
+       d1-5
+}
+
+rh = \melodic{
+       \one
+       \multi 2 < 
+               \one
+               \two
+       >
+       \bar "|.";
+}
+
+
+lh = \melodic{
+       \clef "bass";
+       \multi 2 <
+             \three
+             \four
+       >
+       \bar "|.";
+}
+
+
+global  = \melodic{
+       \meter 4/4;
+       \key bes;
+}
+
+\score{
+       % Allegretto
+       % it would be nice to shut-off fingering...
+       \melodic \type Grandstaff < 
+               \type Staff=treble  < 
+                       \global 
+% huh? try these iso directly!
+                       \lh
+%                      \one
+%                      \two
+               >
+               \type Staff=bass  < 
+                       \global 
+                       \rh
+% or try \two having here, iso above!
+%                      \three
+%                      \four
+               >
+       >
+       \paper{
+               \paper_twenty
+               linewidth= 195.\mm;
+       }
+       \midi{
+               \tempo 4 = 110;
+       }
+}
index 39d19a95be3f7c57035c09693c78dc6bf9c0a541..942bd2d55bfee481b686b007f0e34745ea2038e8 100644 (file)
 \piece{3}{preludes-3}{Semplice e non troppo legato}
 \newpage
 \piece{4}{preludes-4}{Allegretto}
+\newpage
+\piece{5}{preludes-5}{Moderato}
+\newpage
+\piece{6}{preludes-6}{Andante espressivo}
 
 \end{document}
 
index e50751350ac7be8bc9e0b69ba31db9a30d8dac15..32f0609dcc8218c5eae52d104393103d5d0acb20 100644 (file)
@@ -1,11 +1,10 @@
 \header{
-filename =      "standchen.ly";
-title =         "St\"andchen (Serenade) \"Leise flehen meine Lieder\"";
-opus =  "D. 957 No. 4";
-composer =      "Franz Schubert (1797-1828)"
-        "Text by Ludwig Rellstab (1799-1860)";
-enteredby =     "JCN";
-copyright =     "public domain";
+filename = "standchen.ly";
+title    = "St\"andchen (Serenade)\\\``Leise flehen meine Lieder''";
+opus     = "D. 957 No. 4";
+composer = "Franz Schubert (1797-1828)\\\ \hfill Text by Ludwig Rellstab (1799-1860)";
+enteredby = "JCN";
+copyright = "public domain";
 } 
 
 %{