]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.0.70pre release/0.0.70pre
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 30 Jun 1997 11:40:05 +0000 (13:40 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 30 Jun 1997 11:40:05 +0000 (13:40 +0200)
113 files changed:
.version
ANNOUNCE
BUGS [new file with mode: 0644]
Documentation/index.pod
Documentation/lilyliterature.pod
Documentation/other-packages.pod
NEWS
TODO
bin/conflily
bin/convert-mudela
bin/make_website
bin/release
configure
flower/.version
flower/NEWS
flower/include/list.hh
flower/include/list.tcc
flower/include/plist.hh
flower/include/virtual-methods.hh
init/register.ini
init/script.ini
init/symbol.ini
init/table_sixteen.ini
input/cadenza.ly
input/collisions.ly
input/header.ly
input/multi.ly
input/rests.ly [deleted file]
input/scales.ly
input/scsii-menuetto.ly
input/slurs.ly
input/standchen.ly
input/toccata-fuga-E.ly
input/wohltemperirt.ly
lily/.version
lily/Stable.make
lily/beam.cc
lily/break-align-item.cc
lily/collision.cc
lily/crescendo.cc
lily/head-reg.cc
lily/horizontal-align-item.cc
lily/identifier.cc
lily/include/bar.hh
lily/include/beam.hh
lily/include/break-align-item.hh
lily/include/clef-item.hh
lily/include/crescendo.hh
lily/include/elem-group-item.hh
lily/include/general-script-def.hh
lily/include/horizontal-align-item.hh
lily/include/interpreter.hh
lily/include/key-item.hh
lily/include/lookup.hh
lily/include/meter.hh
lily/include/music-iterator.hh
lily/include/music-list.hh
lily/include/music.hh
lily/include/note-head.hh
lily/include/register-group.hh
lily/include/request.hh
lily/include/rest-collision.hh
lily/include/score-align-reg.hh
lily/include/score-elem.hh
lily/include/scoreline.hh
lily/include/script-def.hh
lily/include/script.hh
lily/include/slur.hh
lily/include/spanner-elem-group.hh
lily/include/spanner.hh
lily/include/staff-sym.hh
lily/include/staffline.hh
lily/include/text-def.hh
lily/include/text-spanner.hh
lily/include/tie.hh
lily/include/voice-group-regs.hh
lily/include/voice-regs.hh
lily/interpreter.cc [new file with mode: 0644]
lily/lookup.cc
lily/music-iterator.cc
lily/musical-request.cc
lily/note-column.cc
lily/notehead.cc
lily/p-col.cc
lily/p-score.cc
lily/parser.y
lily/register-group.cc
lily/rest-collision.cc
lily/rest-column.cc
lily/score-align-reg.cc
lily/score-align-regs.cc
lily/score-elem.cc
lily/score-halign-reg.cc
lily/score-reg.cc
lily/score.cc
lily/script-column.cc
lily/script-def.cc
lily/script-reg.cc
lily/script.cc
lily/staff-side.cc
lily/symtable.cc
lily/text-def.cc
lily/text-reg.cc
lily/text-spanner.cc
lily/tie-reg.cc
lily/vertical-align-elem.cc
lily/voice-group-regs.cc
lily/voice-regs.cc
make/lilypond.lsm
make/lilypond.spec
tex/dimen.tex
tex/lilyponddefs.tex
tex/taupindefs.tex

index 4bbb128a6d26eab1b9e8e24bce709247605df819..32b8cd6abf1db4eb1c337c5ce9d50c7551176712 100644 (file)
--- a/.version
+++ b/.version
@@ -1,7 +1,7 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 0
-TOPLEVEL_PATCH_LEVEL = 68
+TOPLEVEL_PATCH_LEVEL = 70
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
-TOPLEVEL_MY_PATCH_LEVEL =pre.jcn1
+TOPLEVEL_MY_PATCH_LEVEL = pre
index db7636e52b6b0179fec50dd2295996e009781ea3..7b4d64deed8591db0f9646f7865f342f3328b1c7 100644 (file)
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,26 +1,36 @@
-[DRAFT]
 
-       Born  .. 1997,
+       We are proud to announce the birth of "GNU LilyPond 0.1", a.k.a.
 
                Lily
 
-       GNU LilyPond 0.1, daughter to 
+       born .. 1997
 
-       Jan 'Janneke' Nieuwenhuizen and Han-Wen 'Wendy' Nienhuys
+       daughter to Jan 'Janneke' Nieuwenhuizen and Han-Wen 'Wendy'
+       Nienhuys
 
-Lily is a health baby weighing 330 kilobyte
+Lily is a healthy, bouncing baby weighing 340 kilobytes
 
-Visiting hours: 24hrs a day at ftp://, pictures & droppings at http://
+Visiting hours: 24hrs a day at
 
-Congratulations to janneke & wendy, hanwen@stack.nl, jan@digicash.com
+       ftp://pcnov095.win.tue.nl, 
 
-**************************
+you can see some diapers and pictures at
 
-       I would like to dedicate this program to all friends that
-music got me. Those deserving special mention (In no particular order)
+       http://www.stack.nl/~hanwen/lilypond/index.html
+
+You can send your congratulations to Janneke (jan@digicash.com) and
+Wendy (hanwen@stack.nl)
+
+                             --- * ---
+
+    We would like to dedicate this program to all the friends that we
+                        met through music. 
+
+
+       Those deserving special mention (in no particular order):
 Esther, Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn,
-Maartje, Suzanne, Ilse (gee, again?), and last (but certainly not
-least) Janneke!
+Maartje, Suzanne, Ilse (gee, again?), most members of the Eindhovens
+Jongeren Ensemble and last (but certainly not least) Janneke!
 
        HW
 
@@ -30,8 +40,10 @@ Ruth, Eva, Fro/ydis, Monique, Noor, Sascha, Monique, Ilse, Monique,
 Eva, Roos, Judith, and, of course, Wendy!
 
        JCN
+                              --- * ---
 
-**************************
+[ And now the serious part ]
 
        Announcing
                        
@@ -108,7 +120,7 @@ dynamics (both absolute and hairpin style) clef changes, meter
 changes, cadenza-mode, key changes, repeat bars
 
 [Kudos to the FSF, all linux hackers, and --of course-- especially
-GrandMaster Linus T, for the OS and The Announce :-]
+GrandMaster Linus T, for the OS-kernel and The Announce :-]
 
        Han-Wen Nienhuys <hanwen@stack.nl>
        Jan Nieuwenhuizen <jan@digicash.com>
diff --git a/BUGS b/BUGS
new file mode 100644 (file)
index 0000000..b0b28cd
--- /dev/null
+++ b/BUGS
@@ -0,0 +1,13 @@
+This file documents bugs which were "re-introduced" in various pl's
+
+
+pl69
+       * scales.ly
+
+       * slurs.ly
+
+pl68:
+       
+       * lyrics broken,
+
+       * midi broken
index c308cf944718d23cbed0ea1d92ae1ddf40afeeaa..ebaae8553f17a33c66b4b46ebee17550e9db91d3 100644 (file)
@@ -59,7 +59,7 @@ internal structures.
 =item *
 <a href=lilyliterature.html
 >
-resources on music typesetting
+Papers, books and online-resources on music typesetting
 </a
 >
 
index 5293ff394525526a21ab4195dc37a2d733e7e159..e92cb72a9a8d3c9ee08ec7baceaf15f35fac58b6 100644 (file)
@@ -10,10 +10,6 @@ note that don't have access to most material.
 [What I do know, I've commented inside brackets. They are just
 my personal comments, not to be taken too seriously]
 
-More on GNU Music: http://dept-info.labri.u-bordeaux.fr/~strandh/Gsharp
-
-Tablature: http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html
-
 =head2 References
 
 Wanske, Helene.  ``Musiknotation --- Von der Syntax des Notenstichs
@@ -45,7 +41,7 @@ processing'' (3rd edition). Hansen House, Miami Beach, FL.
 
 [This is about I<engraving> i.e. professional music typesetting, and
 includes some good spacing tables]
+
 Read, Gardner. ``Modern Rhythmic Notation.'' Indiana University Press, 1978.
 
 Read, Gardner. ``Music Notation'' (2nd edition). Taplinger Publishing,
@@ -105,8 +101,8 @@ L. Haken and D. Blostein, The Tilia Music Representation:
 Extensibility, Abstraction, and Notation Contexts for the Lime Music
 Editor, Computer Music Journal, Vol. 17, No. 3, 1993, pp. 43-58 
 
-[A description of Lime internals (which resemble LilyPond pre 0.0.68
-data structures somewhat)]
+[A description of Lime internals (which resemble older (before
+0.0.68pre) LilyPond data structures somewhat)]
 
 L. Haken and D. Blostein, A New Algorithm for Horizontal Spacing of
 Printed Music, International Computer Music Conference, Banff,
@@ -121,6 +117,13 @@ Communications of the ACM, VolJ34, No. 3, March 1991, pp. 88-99.
 [This paper provides a shallow overview of the algorithm used in LIME
 for spacing individual lines.]
 
+Gary M. Rader, ``Creating Printed Music Automatically''. Computer Vol
+29(6), June 1996, pp 61--69.
+
+[Describes a system called MusicEase, and explains that it uses
+"constraints" (which go unexplained) to automatically position various
+elements.]
+
 =head2  Further reading
 
 Chlapik, Herbert. ``Die Praxis des Notengraphikers''. Doblinger, 1987.
@@ -132,16 +135,21 @@ some of the conventions and difficulties in printing music]
 The University of Colorado Music Engraving page.
 http://obenamots.cc.colorado.edu/cgi-bin/Musicpress/engraving.html
 
+More on GNU Music: http://dept-info.labri.u-bordeaux.fr/~strandh/Gsharp
+
+Tablature: http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html
+
+
 (of varying usefulness):
 
 Donato, Anthony. Preparing Music Manuscript. Englewood Cliffs:
 Prentice-Hall, 1963.
 
 Donemus. "Uitgeven van muziek". Donemus Amsterdam, 1900
+
 Heussenstamm, George. The Norton Manual of Music Notation. New York:
 Norton, 1987.
+
 Karkoshka, Erdhard. Notation in New Music. Trans. Ruth Koenig. New York:
 Praeger    Publishers, 1972.  Out of print.
 
@@ -157,7 +165,7 @@ C. Roemer, The Art of Music Copying. Roerick music co., Sherman Oaks
 (CA), 1973.
 
 Rosecrans, Glen. Music Notation Primer. New York: Passantino, 1979.
+
 Stone, Kurt. Music Notation in the Twentieth Century. New York: Norton, 1980.
 
 =head2 other stuff
index 72d3a2bb3e36845e30cfe9e6bda56b13097b44bb..fc3a2585cd1ce86d187c79e62b9c28eab02ee780 100644 (file)
@@ -24,6 +24,11 @@ Jan Nieuwenhuizen, Using TeX and the MusiXTeX macro package to
 write parts and scores of music. Department of Physics, Eindhoven
 University of Technology, 1995.
 
+MusicEase, ftp://ftp.secret.com/ad-ftp
+
+Described in Computer vol 29(6)
+
+
 
 MusE
 
diff --git a/NEWS b/NEWS
index 7f2e5345818b0e3cf73a7d625d16aced99fd0b87..5ac7e17c28d3b9f5af3457fd8f848a677fdff807 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,32 @@
+june 30
+pl 70pre
+       - bf: text Script
+       - bf: Script::dir_i_ checks.
+       - bf: script stacking
+       - bf: Text_spanner::do_subst.
+       - bf: Text_spanner::Text_spanner(Text_spanner&)
+       - bf: script priority read from script.ini
+       - bf: Script_def::do_equal_b
+       - bf: script dims.
+       - mudela: ; obligatory for \paper {}.
+       - some cosmetic changes involving RTTI macros
+
+*******
+june 29
+pl 69pre
+       - bf: whole rest position, whole/half rest dots.
+       - bf: scripts
+       - reg termination
+       - centered bars
+       - bf: init of Tie::dir_i_ 
+       - bf: Staff_side depends on staff_sym_
+       - bf: Script::do_substitute_dependency() now implemented
+       - more print info (also in output)
+       - bf: Vertical_align_element
+       - stemless beams now allowed (with warning)
+       - bf: Rest_column::stem_l_ init
+       - merge rests.ly with collisions.ly
+
 pl 67.jcn3
        - rests under beam [c8 r c]
 
@@ -10,7 +39,9 @@ pl 67.jcn1
        - bf: mingw configure
        - re: conflily
 
-pl 68
+******
+june 26
+pl 68pre
        - doco: other-packages.pod, lots of lilyliterature.pod
        - last duration mode now is default.
        - some OpusTeX stuff.
@@ -19,7 +50,7 @@ pl 68
          * separation of Y and X-elt-groups
          * Registers: info up: broadcasts, info down: get_xxx_info()
          * Registers: try_request works from bottom to top of tree.
-         * Score_elem invisible_b_ flag
+         * Score_elem empty_b_ and transparent_b_ flag
          * Junk Staff_column, and find the requests while walking the
          Voices.
          * Score_register
@@ -35,15 +66,14 @@ pl 68
        
        - bf: make_patch explanation
        - bf: make install TeX stuff
-       - new Beam/Stem code (WL)
        - mudela: . mandatory for REALs
 
-******
-june 3
 
-pl 67.wl1
+pl 67
        - damped beamslope after wanske
 
+******
+june 3
 pl 67
        - sketch of Music classes
        - General_script_def as baseclass for Text_def and Script_def
@@ -166,6 +196,7 @@ pl 61.jcn2
        - mi2mu IP*list to Array (implications?!) conversion
        - mi2mu parsing speedup: backup rules for midi-lexer.l
        - bf: zero denominator
+
 **********
 may 14 
 pl 62
diff --git a/TODO b/TODO
index f39f9c84911499d3f58d4da4711dfedcc6c7cb30..4350bd6d0bb823d6ddc802858f3616d2e4ac1f53 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-Features you cannot find in the doco as working, should be mentioned her.
+Features you cannot find in the doco as working, should be mentioned here.
 
 This is an assorted collection of stuff that will be done, might be
 done, or is an idea that I want to think about
@@ -6,15 +6,7 @@ done, or is an idea that I want to think about
 Most of the items are marked in the code as well, with full explanation. 
 grep for TODO and ugh/ugr
 
-bugs introduced in pl68:
-       
-       * lyrics broken,
-
-       * midi broken
-
-       * scripts broken
-
-IMPORTANT
+       * 
 
        * piano staff
 
@@ -28,7 +20,7 @@ IMPORTANT
 
        * decent TeX page layout
 
-       * script priority
+       * enter script priority
 
        * a Hands on tutorial [HKN]
 
@@ -58,7 +50,6 @@ PROJECTS
        - PostScript output (esp. Beams, Slurs, etc)
        - Move PScore, Items, Spanners etc. into libmutype.a
 
-
        * separate Score_elem settings in user-settable (properties
        .. ) and non-user-settable part. Maybe use something like X-resources:
        "Staff=oboe*dir: 0", "Staff=*.Voice_group=solo*dir: 1"
@@ -94,7 +85,6 @@ PROJECTS
        - hack up mf sources for decent spacing info (and then 
        read AFM/TFM directly, for text too)
 
-
        * lines:
        - Ledger lines, should be separate item: Ledger_lines, Ledger_lines_reg
        - set different line sizes / thicknesses
@@ -104,7 +94,7 @@ PROJECTS
        * Collisions
        - bring Collision::do_pre_processing to haircutter
        - left/right note balls should be handled by Collision:
-       < \multivoice { \stem 1; <b c> } { <f as b> } >
+       < \multi 2; { \stem 1; <b c> } { <f as b> } >
 
        * Keys:
        - merge key{item} & localkey{item}?
@@ -122,19 +112,14 @@ HKN buglist:
 
 tekst staat erg ver van notenbalken af
 
-waarom geen ; achter dingen in \paper? (\textwidth 180\mm)
-(sowieso: wanneer wel en geen ; ?)
-
 Onduidelijk wanneer wel en geen \ voor een woord. Maak liever
 verplichte regels
 
-
 BUGS
-       * spurious Weird stem size warnings
 
-       * staccato dot positions.
+       * spurious Weird stem size warnings
 
-       * stacked scripts.
+       * fix mysterious Flex malloc bug 
 
        * should adjust stemlength for flag number.
 
@@ -206,7 +191,7 @@ SMALLISH PROJECTS
 
        * A range for context errors (eg. mark both { and }. )
 
-       * text in staff  (sharpsharp in staff, text below)
+       * lyric in staff  (sharpsharp in staff, text below)
 
        * fix Egler definitions ( see tex/eglerdefs.tex )
 
@@ -275,7 +260,6 @@ SMALLISH PROJECTS
        * script-spacing
 
        * Brackets
-
        
        * use (char *) iso. String for communication between lexer and
        parser.
@@ -348,7 +332,6 @@ IDEAS
 
        * Spacing_request for manually adjusting spacing
 
-       
        * caching breakpoints
 
        * #c <-> cis
index a7e86b127ae863a41f7d65c5254e82d12219cb32..53c6cf65806515b187b71108d2ea5a1eb8bbe39d 100644 (file)
@@ -24,5 +24,5 @@ then
        export LILYINCLUDE=$root/lelie/init
 fi
 
-configure --prefix=$HOME --enable-debugging --enable-printing --enable-checking
+configure --prefix=$root --enable-debugging --enable-printing --enable-checking
 
index 4ae7f6f57c761186814e377a197d859b09c4984d..744059c67c357ce701446a64147c2473c825ac2a 100755 (executable)
@@ -4,6 +4,8 @@
 
     detect \lyrics and \melodic, and do substitution accordingly.
     count <> and {} ?
+
+Ugh . Perl sux. Anybody for Python?
     
 =cut    
 
@@ -21,13 +23,18 @@ $convert_mudela_version = "0.1.1";
 use Getopt::Long;
 
 
+sub version_compare
+{
+    local ($a,$b)=@_;
+    return &cmpver;
+}
+    
 
 sub  cmpver 
 {      
-
        my(@a)= split /\./,$a;
        my(@b)= split /\./,$b;
-       
+
        for $i (0,1,2) {
            return $a[$i] <=> $b[$i] if ($a[$i] != $b[$i]);
        }
@@ -84,6 +91,14 @@ sub convert_0_0_58_to_0_0_58
 {
     die "Not smart enough to convert 0.0.58 to 0.0.59\n";
 }
+
+sub convert_0_0_59_to_0_0_60
+{
+    s/(\\unitspace [0-9.mcptin\\ ]+|\\geometric [0-9.]+|\\width [0-9.mcp\\tin]+)/$1;/g;
+    s/(\\output \"[^\"]+\")/$1;/;
+    s/(\\tempo  [0-9: ]+)/$1;/;
+}
+
 ###############################################################
 
 sub    last_conversion
@@ -121,7 +136,8 @@ my %minor_conversions = ("0.0.50" => \&no_conv,
                         "0.0.56" => \&convert_0_0_55_to_0_0_56,
                         "0.0.57" => \&convert_0_0_56_to_0_0_57,
                         "0.0.58" => \&convert_0_0_57_to_0_0_58,
-                        "0.0.59" => \&convert_0_0_58_to_0_0_59
+                        "0.0.59" => \&convert_0_0_58_to_0_0_59,
+                        "0.0.60" => \&convert_0_0_59_to_0_0_60
                         );
  
 
@@ -144,12 +160,12 @@ sub do_conversion
     my @applicable_conversion;
     my @mudela_levels;
     
-    die "This is too old  to convert " if $from < 50;
+#    die "This is too old  to convert " if $from < 50;
     my @v = versions;
-    foreach $a (@v) {
-       if ($a > $from && $a <= $to ){ 
-           push @applicable_conversion, $minor_conversions{$a};
-           push @mudela_levels, $a;
+    foreach $ver (@v) {
+       if (version_compare($ver, $from) > 0 && version_compare($ver,$to) <= 0 ){ 
+           push @applicable_conversion, $minor_conversions{$ver};
+           push @mudela_levels, $ver;
        }
     }
     
@@ -225,7 +241,6 @@ sub do_one_arg
     
     ($to_version =  last_conversion) unless (defined($opt_to));
 
-
     die "can't open \`$infile\'" unless open INLY,$infile ;
     die "can't open \`$outfile\'" unless open OUTLY, ">$outfile";
     
@@ -243,6 +258,7 @@ sub do_one_arg
 
 identify;
 
+
 GetOptions ("help", "output=s", "from=i", "to=i", "minor=i", "edit", "show-rules");
 
 if ($opt_help) {
index 219fcbd5a2a354b1511be026851c48614618375d..096d700280b806c95224ae5b3976e09a60cc6669 100755 (executable)
@@ -71,7 +71,9 @@ sub my_system
 
 
 local $base="lilypond/";
-local @examples=("wohltemperirt" ,"standchen", "toccata-fuga-E", "scsii-menuetto", "rhythm", "collisions");
+local @examples=("multi", "wohltemperirt" ,"standchen", "toccata-fuga-E", "scsii-menuetto", "collisions");
+
+# rhythm, scales, 
 
 
 sub gen_html
@@ -244,8 +246,9 @@ sub docxx_update
 sub do_tar
 {
      print "tarring.\n";
+     $files = join (' ', < *.html *.$image *.ps.gz *.txt *.midi docxx/*>);
      my_system
-        " tar vhcf website.tar *.html *.$image *.ps.gz *.txt *.midi docxx/*;",
+        "-tar vhcf website.tar $files;",
         "gzip -f9 website.tar;";
 }
 sub identify
@@ -256,7 +259,7 @@ sub identify
 sub main
 {
     identify;
-    GetOptions("jpeg", "gif", "png");
+    GetOptions("jpeg", "gif", "png", "noexamples");
 
     local $image="gif" ;
     $image = "png" if ($opt_png);
@@ -278,12 +281,14 @@ sub main
 
 
     gen_html;
-    gen_examples;
     copy_files;
+    if (! $opt_noexamples) {
+       gen_examples;
+       gen_list;
+    }
     set_images;
-    gen_list;
-    edit_html;
 
+    edit_html;
     docxx_update;
     do_tar;
 }
index be52176b4ef18c4ab716d838719b27760e66b3d9..58de89b692fcabdb3dd9bce499f4c60222ae58fb 100755 (executable)
@@ -19,8 +19,12 @@ NEWVER=$MJ.$MI.$PA$MP
 if [ -z $MP -o x$MP = xpre ]
 then
     LASTVER=$MJ.$MI.`expr $PA - 1`
+
+    if [ -f $releasedir//lilypond-$LASTVER""pre.tar.gz ] ; then
+       LASTVER="$LASTVER""pre"
+    fi
 else
-       LASTVER=$MJ.$MI.$PA
+    LASTVER=$MJ.$MI.$PA
 fi
 
 echo
@@ -29,19 +33,21 @@ echo
 }
 
 heredir=`pwd`
+releasedir=`pwd`/../releases
+patchdir=`pwd`/../patches
 make dist; 
 setversion
 LILYVER=$NEWVER
 
 tarball=lilypond-$LILYVER.tar.gz
 patch=patch-$LILYVER.gz
-    
-mv  $tarball ../releases
+
+mv  $tarball $releasedir/
 
 cd ../test
 $heredir/bin/make_patch $LASTVER $NEWVER lilypond
 gzip -f9 patch-$NEWVER
-mv $patch ../patches/
+mv $patch $patchdir//
 
 RPMS=`find ~/rpms/ -name lilypond-$NEWVER'*'rpm`
 rm *.rpm {lilypond,patch}-*.gz
@@ -50,8 +56,8 @@ if [ ! -z "$RPMS" ]; then
     ln $RPMS . 
 fi
     
-ln ../releases/$tarball .
-ln ../patches/$patch .    
+ln $releasedir//$tarball .
+ln $patchdir//$patch .    
 
 
 if [ ! -z "$RPMS" ]; then
index 50aaf0d634ad7621691e3344b0d456b05bb370db..69cb91109bccebab8de2a0c10c0bbf49be66f7be 100755 (executable)
--- a/configure
+++ b/configure
@@ -594,7 +594,7 @@ if test "${enable_mingw32+set}" = set; then
   enableval="$enable_mingw32"
   MINGWPREFIX=$enableval
 else
-  MINGWPREFIX=$enableval
+  MINGWPREFIX=no
 fi
 
     
index e275cb9db01289e92108214ffd7953f7611f9dea..7a6f85cea4e147504fd763e5d943f15b8e9edf08 100644 (file)
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 1
 MINOR_VERSION = 1
-PATCH_LEVEL = 19
+PATCH_LEVEL = 20
 # use to send patches, always empty for released version:
 MY_PATCH_LEVEL = # include separator: "-1" or ".a"
 #
index 050b1356d8ca0e8ca9be8b62ffa7969be41054fb..a642a93eba4b922ca47bf9bb19e5019ab5f9ee5c 100644 (file)
@@ -1,4 +1,6 @@
 version 1.1:
+pl 20
+       - List::junk_links()
 pl 19
        - Array::reverse()
 
index 343ccffcbc9f822cce1200cca21c6fe3b2604ab5..fcc5e70712598d114968135b55f2f87299b4cd5c 100644 (file)
@@ -42,6 +42,7 @@ class List
     Cursor<T> top() const;
 
     void OK() const;           // check list
+    void junk_links();
     
  protected:
     friend class Cursor<T>;
index e3fa43cdd3346677a03e2a16097832bd86e69857..4c83034d822ff02050f6ea6754577c7276c86150 100644 (file)
@@ -39,15 +39,21 @@ List<T>::OK() const
     assert(!lp);
 }
 
-
 template<class T>
-List<T>::~List()
+void
+List<T>::junk_links()
 {
     Cursor<T> c(*this);
     while (c.ok())
        c.del();
 }
 
+template<class T>
+List<T>::~List()
+{
+    junk_links();
+}
+
 /** 
 
   add after after_me.
index 4c9d71dba539ad389db65475fdfc968fec46bb56..af27832f00cbd4d0e51f2b30bf7b2f9c5dec42e4 100644 (file)
@@ -30,6 +30,7 @@ class Link_list : public List<void *>
     }
     PCursor<T> find(T) const;
     void concatenate(Link_list<T> const &s) { List<void*>::concatenate(s); }
+
     Link_list() {}
 };
 
index f38d85293410fbabf017f9f03037b8885ce824ce..ea81cbbc992fc8eb0ff9496e248de8e4d4a0825c 100644 (file)
@@ -1,14 +1,14 @@
 /*
-  class-name.hh -- declare 
+  virtual-methods.hh -- declare 
 
-  source file of the LilyPond music typesetter
+  source file of the Flower Library
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
 
 
-#ifndef CLASS_NAME_HH
-#define CLASS_NAME_HH
+#ifndef VIRTUAL_METHODS_HH
+#define VIRTUAL_METHODS_HH
 
 /** a macro to declare the classes name as a static and virtual function.
   The static_name() can *not* be inlined (this might have the effect that 
@@ -25,6 +25,7 @@ int a_stupid_nonexistent_function_to_allow_the_semicolon_come_out()
 
 #define VIRTUAL_COPY_CONS(T, R)\
   virtual R *clone() const { return  new T(*this); } \
+  int  yet_another_stupid_function_to_allow_semicolon()
 
 #define IMPLEMENT_IS_TYPE_B(D)                                                            \
   bool D::is_type_b(const char *s)     const                                      \
@@ -43,4 +44,4 @@ int a_stupid_nonexistent_function_to_allow_the_semicolon_come_out()
     return s == static_name() || BA::is_type_b(s) || BB::is_type_b(s); \
 }
 
-#endif // CLASS-NAME_HH
+#endif 
index 4b8d324fa914d4b5fb2640aeecf4e2dd5873c0cd..a7d3257a9a10f583e8f82d49d7098e4a65a96b21 100644 (file)
@@ -26,7 +26,6 @@
                        \alias "Voice_group";
                        \consists "Dynamic_register";
                        \consists "Stem_beam_register";
-                       \consists "Text_register";
                        \consists "Script_register";
                        \consists "Note_column_register";
                        \consists "Slur_register";
index eb4633b7d1f347f98f5ea257731b14b25547d5f0..52395bf7ae221380880af10fec877c0a76a9a9de 100644 (file)
@@ -1,30 +1,30 @@
 
 % name = \script {
-% indexstring follow_into_staff same_dir_as_stem above_below_staff symbol_can_beinverted }
+% indexstring follow_into_staff same_dir_as_stem above_below_staff symbol_can_beinverted priority }
 %
 
-accent = \script { "sforzato"  0 -1 0 0 }
-marcato = \script { "marcato" 0 -1 0 1  }
-staccatissimo = \script { "staccatissimo" 0  -1 0 1 }
-portato= \script { "portato" 0 -1 0 1 }
-fermata = \script { "fermata" 0 1 0 1 }
-stopped = \script { "stopped" 0 0 1 0 }
-staccato = \script { "staccato" 1 -1 0 0 }
-tenuto = \script {"tenuto" 0 -1 0 0 }
-upbow = \script { "upbow" 0 0 1 0 }
-downbow = \script { "downbow" 0 0 1 0 }
-lheel = \script { "heel" 0 0 -1  0 }
-rheel = \script { "heel" 0 0 1 0 }
-ltoe = \script { "toe" 0 0 -1 0 }
-rtoe = \script { "toe" 0 0 1 0 }
-lbheel = \script { "bheel" 0 0 -1  0 }
-rbheel = \script { "bheel" 0 0 1 0 }
-lbtoe = \script { "btoe" 0 0 -1 0 }
-rbtoe = \script { "btoe" 0 0 1 0 }
-lfheel = \script { "fheel" 0 0 -1  0 }
-rfheel = \script { "fheel" 0 0 1 0 }
-lftoe = \script { "ftoe" 0 0 -1 0 }
-rftoe = \script { "ftoe" 0 0 1 0 }
+accent = \script { "sforzato"  0 -1 0 0 }
+marcato = \script { "marcato" 0 -1 0 1  }
+staccatissimo = \script { "staccatissimo" 0  -1 0 1 }
+portato= \script { "portato" 0 -1 0 1 }
+fermata = \script { "fermata" 0 1 0 1 }
+stopped = \script { "stopped" 0 0 1 0 }
+staccato = \script { "staccato" 1 -1 0 0 }
+tenuto = \script {"tenuto" 0 -1 0 0 }
+upbow = \script { "upbow" 0 0 1 0 }
+downbow = \script { "downbow" 0 0 1 0 }
+lheel = \script { "heel" 0 0 -1  0 }
+rheel = \script { "heel" 0 0 1 0 }
+ltoe = \script { "toe" 0 0 -1 0 }
+rtoe = \script { "toe" 0 0 1 0 }
+lbheel = \script { "bheel" 0 0 -1  0 }
+rbheel = \script { "bheel" 0 0 1 0 }
+lbtoe = \script { "btoe" 0 0 -1 0 }
+rbtoe = \script { "btoe" 0 0 1 0 }
+lfheel = \script { "fheel" 0 0 -1  0 }
+rfheel = \script { "fheel" 0 0 1 0 }
+lftoe = \script { "ftoe" 0 0 -1 0 }
+rftoe = \script { "ftoe" 0 0 1 0 }
 %
 % left toe:      right heel:
 %
@@ -40,5 +40,5 @@ rftoe = \script { "ftoe" 0 0 1 0 }
 % 
 % heu, me thought for a moment that order in table_xxx.ini was
 % being translated into priority...
-back = \script { "back" 0 -1 -1  0 }
-front = \script { "front" 0 -1 1 0 }
+back = \script { "back" 0 -1 -1  0 }
+front = \script { "front" 0 -1 1 0 }
index adea1560288bbb1a1799575e1eb1cf91ba54d88b..d14a1037a0d3d850d13d4a3dca0d4129b84f2b23 100644 (file)
@@ -1,4 +1,4 @@
-\version "0.0.59";
+\version "0.0.60";
 
 \include "register.ini"
 \include "dynamic.ini"
index 7f1ced6c03a6cb6d96877017b507ddbdc22bbf86..f0124386220bc72634ec927edfa1d73605b5b09b 100644 (file)
@@ -14,14 +14,14 @@ table_sixteen=
     "scripts" = \table {
            "fermata" "\fermata"                0.0\pt 0.0\pt   0.0\pt 6.0\pt
            "-fermata" "\ifermata"              0.0\pt 0.0\pt   -6.0\pt 0.0\pt
-           "portato" "\portato"                0.0\pt 4.8\pt   0.0\pt  2.0\pt
-           "-portato" "\iportato"              0.0\pt 4.8\pt   -2.0\pt 0.0\pt
-           "tenuto" "\tenuto"                  0.0\pt 4.8\pt   0.0\pt  1.0\pt
-           "-tenuto" "\itenuto"                0.0\pt 4.8\pt   -1.0\pt 0.0\pt
-           "sforzato" "\sforzato"              -0.8\pt 4.8\pt  -1.92\pt 1.92\pt
-           "marcato" "\marcato"                0.0\pt 4.8\pt   0.0\pt  4.0\pt
-           "-marcato" "\imarcato"              0.0\pt 4.8\pt   -4.0\pt 0.0\pt
-           "staccato" "\staccato"              0.0\pt  0.0\pt          0.0\pt  5.0\pt
+           "portato" "\portato"                0.0\pt 4.0\pt   0.0\pt  2.0\pt
+           "-portato" "\iportato"              0.0\pt 4.0\pt   -2.0\pt 0.0\pt
+           "tenuto" "\tenuto"                  0.0\pt 4.0\pt   -1.0\pt 1.0\pt
+           "-tenuto" "\itenuto"                0.0\pt 4.0\pt   -1.0\pt 1.0\pt
+           "sforzato" "\sforzato"              -0.8\pt 4.0\pt  -1.92\pt 1.92\pt
+           "marcato" "\marcato"                0.0\pt 4.0\pt   0.0\pt  4.0\pt
+           "-marcato" "\imarcato"              0.0\pt 4.0\pt   -4.0\pt 0.0\pt
+           "staccato" "\staccato"              0.0\pt  0.0\pt  -1.1\pt 1.1\pt
            "staccatissimo" "\staccatissimo"    0.0\pt  0.0\pt  0.0\pt  1.0\pt
            "-staccatissimo" "\istaccatissimo"  0.0\pt  0.0\pt  0.0\pt  1.0\pt
            "upbow" "\upbow"                    -1.0\pt 6.0\pt  0.0\pt  5.0\pt
@@ -107,8 +107,10 @@ table_sixteen=
      }
 
      "rests" = \table {
+            "1o"       "\outsidewholerest"     0.0\pt  6.0\pt  0.0\pt  2.0\pt
             "1"        "\wholerest"            0.0\pt  6.0\pt  0.0\pt  2.0\pt
             "2"        "\halfrest"             0.0\pt  6.0\pt  -2.0\pt 0.0\pt
+            "2o"       "\outsidehalfrest"              0.0\pt  6.0\pt  -2.0\pt 0.0\pt
             "4"        "\quartrest"            -5.0\pt 2.0\pt  -5.0\pt 5.0\pt
             "8"        "\eighthrest"           0.0\pt  5.0\pt  0.0\pt  8.0\pt
             "16"       "\sixteenthrest"                0.0\pt  6.0\pt  0.0\pt  12.0\pt
index bcee0b0eb7af84464be39be4ca5c11a87cb18db1..3bdc51e5a30dfc81f72c6b8ed2b61cece4874c04 100644 (file)
@@ -10,7 +10,7 @@
 EndMudelaHeader
 %}
 
-\version "0.0.59";
+\version "0.0.60";
 
 
 cad = \melodic  {
@@ -59,7 +59,7 @@ cad = \melodic  {
        \melodic{ \cad }
        \paper {
        
-               \unitspace 14.0\mm
-               \geometric 1.4}
-       \midi { \tempo 4:90 }
+               \unitspace 14.0\mm;
+               \geometric 1.4;}
+%      \midi { \tempo 4:90 }
 }
index d021f6e2787787d62e469e49dec467915ebc0e71..5edeb80f23ac5ed4780c642ffc2707ccd3cadef6 100644 (file)
@@ -3,14 +3,14 @@
  filename: collisions.ly
  title:
  description:  random counterpoint to test collisions
- composer(s): HWN
- entered-by: HWN
+ composer(s): HWN,JCN
+ entered-by: HWN,JCN
  copyright: public domain
 
  Tested Features:test the Collision resolution 
 EndMudelaHeader
 %}
-\version "0.0.59";
+\version "0.0.60";
 
 
 
@@ -56,12 +56,35 @@ rests = \melodic
        }
        >
 
-\score{
+restsII = \melodic {
+       \octave c'; 
+                       < \multi2;  
+                               { \stem 1;  g' f' e' d' c' b a g f e d c }
+                               { \stem -1; r  r  r  r  r  r r r r r r r }
+                       >
+                       < \multi2;  
+                               { \stem 1;  r r r r r r r r  r  r  r  r }
+                               { \stem -1; c d e f g a b c' d' e' f' g' }
+                       >
+                       r8
+                       < \multi2;  r8 r8 >
+                       < \multi2;  r8 r8 r8 >
+                       < \multi2;  r8 r8 r8 r8 >
+                       < \multi2;  r r >
+                       < \multi2;  r r r >
+                       \stem 1;
+                       [c''8 r8 c''8 c''8]
+                       [c8 r8 c8 c8]
+                       \stem -1;
+                       [c8 r8 c8 c8]
+                       [c''8 r8 c''8 c''8]
+}
 
-               \melodic {  \$two_voice  \$two_voice_steminvert 
-                       \$three_voice  \rests
-               }
+\score{
+       \melodic {  \$two_voice  \$two_voice_steminvert 
+                       \$three_voice  \rests \restsII }
+       
 
-       \paper {}
+       
 %      \midi { \tempo 4:80 }
 }
index 9e01bf0d40d402380e963576ae66a24d1cba8bb1..e983bcb8dff6b37eb13496f5e3c1f91594e53864 100644 (file)
@@ -10,4 +10,4 @@
  Tested Features:
 EndMudelaHeader
 %}
-\version "0.0.58";
+\version "0.0.60";
index bb0fd590d3f4a5bb34fe057315c44301d06eae24..caafc66d16d2e99b0bca5235b91dfd28cda1cc42 100644 (file)
@@ -1,5 +1,18 @@
+%{MudelaHeader
 
-% stupid testfile for pl68 features.
+ filename:multi.ly
+ title: 
+ description:  stupid testfile for pl68 features.
+ composers:
+ entered-by:HWN
+ copyright: public domain
+
+ Tested Features: \multi
+EndMudelaHeader
+%}
+
+
+\version "0.0.60";
 
 \score{
        \melodic 
@@ -7,7 +20,7 @@
                        < \multi 1;  { c2 c2 } { c'2 c'2 } > 
                        < \multi 2;  { \stem -1; c2 c2 } { \stem 1; c'2 c'2 } > 
                        < \multi 3;  { \clef "bass"; c2 c2 } { \bar "||"; \key cis ; c'2 c'2 } > 
-       %                       c1 c1 % bug
+                               c2 c1 
 
                }
 }
diff --git a/input/rests.ly b/input/rests.ly
deleted file mode 100644 (file)
index a8a7a0b..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-%{MudelaHeader
-
- filename: rests.ly
- title: 
- description: 
- composer(s): heu
- entered-by: jcn
- copyright: GPL
-
- Tested Features: rest collisions
-EndMudelaHeader
-%}
-
-\score{
-       \staff{ \inputregister{melodicregs}
-               \melodic{ 
-                       \meter 4/4;
-                       \octave c'; 
-                       < \multivoice 
-                               { \stem 1;  g' f' e' d' c' b a g f e d c }
-                               { \stem -1; r  r  r  r  r  r r r r r r r }
-                       >
-                       < \multivoice 
-                               { \stem 1;  r r r r r r r r  r  r  r  r }
-                               { \stem -1; c d e f g a b c' d' e' f' g' }
-                       >
-                       r8
-                       < \multivoice r8 r8 >
-                       < \multivoice r8 r8 r8 >
-                       < \multivoice r8 r8 r8 r8 >
-                       < \multivoice r r >
-                       < \multivoice r r r >
-                       \stem 1;
-                       [c''8 r8 c''8 c''8]
-                       [c8 r8 c8 c8]
-                       \stem -1;
-                       [c8 r8 c8 c8]
-                       [c''8 r8 c''8 c''8]
-               }
-       }
-       \paper{}
-}
index 35815153382c87871214daa93af39246ef8e22fc..7f7b935fcbb62bf80cc290b88410d946d4414c57 100644 (file)
@@ -2,7 +2,7 @@
 % scales with accents.
 %
 
-\version "0.0.59";
+\version "0.0.60";
 blah =         \melodic {
                \meter 6/8;     
                \octave  'c ;
@@ -61,13 +61,12 @@ c1
        |[c' b a g][f e d c]
                        
        }
-}
+
 
 \score{
        \melodic {\blah}
        \paper{
-               \symboltables {table_sixteen}
-               \unitspace 1.5 \cm
-               \geometric 1.4
+               \unitspace 1.5 \cm;
+               \geometric 1.4;
        }
 }
index f52ea765c6416ebedf68441133f152f68d2fc58f..769a032cc71e669617ac509ed511ce2ce5da80be 100644 (file)
@@ -12,7 +12,8 @@
 
 EndMudelaHeader
 %}
-\version "0.0.59";
+
+\version "0.0.60";
 
 %% Stuff from MPP version
 % \lefttitle{Menuetto}
@@ -22,7 +23,6 @@ EndMudelaHeader
 % \key\F               % \key is F ( f-major )
 %
 % \slope{30}           % Fool MusiXTeX into 30 / 10 steeper beam
-% \stemlength3         % shorter \stemlength
 %              % because piece is set very tightly
 
 IImenuetto = \melodic{
@@ -34,16 +34,16 @@ IImenuetto = \melodic{
        \duration 8;
                < a2 f2 d2 \f > bes4-.  |
 %%2
-       < [ bes^"1" e c_"2"_"4" >
+       < [ bes8^"1" e c_"2"_"4" >
                a bes-. g-. ] a4-.^"4" |
 %%3
-       < d4 'bes4-. > g4-. [ f-. e-. ] |
+       < d4 'bes4-. > g4-. [ f8-. e-. ] |
 %%4
        < [ f 'a > e d cis-. 'b-. 'a-. ]
 %%5
        < a2 f2 d2 > bes!4-. |
 %%6
-       < [ bes e > a bes-. g-. ]
+       < [ bes8 e > a bes-. g-. ]
        c'!4-. |
 %%7
        < a4-. f4>
@@ -55,15 +55,15 @@ IImenuetto = \melodic{
 %%9
        \clef "violin";
        < e'2 a2 \f >
-       [ d'( e'16 )f'16 ] |
+       [ d'8( e'16 )f'16 ] |
 %%10
-       < [ e' g > d' cis'_"2" e' a~  g ] |
+       < [ e'8 g > d' cis'_"2" e' a~  g ] |
 %%11
        < \multi 2;  
                {\stem 1; a4~  d'4 cis'4-. }
                { \stem -1; f2 e4 } > |
 %%12
-       < [ g'^"4" d > f' e' f' d'^"3"~   c' ] |
+       < [ g'8^"4" d > f' e' f' d'^"3"~   c' ] |
 %%13
        \clef "alto";
        < \multi 2;
@@ -71,28 +71,28 @@ IImenuetto = \melodic{
                 { \stem -1; g4~  f4 e4 }% ugh
        > |
 %%14
-       < [ a f > g a f ] < d'4-\upbow e4 'bes4 > |
+       < [ a8 f > g a f ] < d'4-\upbow e4 'bes4 > |
 %%15
-       < c'4-\downbow f4 'a4 > [ bes~  a g a ] |
+       < c'4-\downbow f4 'a4 > [ bes8~  a g a ] |
 %%16
        [ f( e )f a-. g-. bes-. ] |
 %%17
        < a2^"0" fis2_"3" > bes4 |
 %%18
-       < { [ c'~  bes c' a ] } { [ es ] } > fis4 |
+       < { [ c'8~  bes c' a ] } { [ es ] } > fis4 |
 %%19
-       < d'4-\downbow g4 'bes4 > < c'4-\upbow g4 c4 > < [ bes d > a ] |
+       < d'4-\downbow g4 'bes4 > < c'4-\upbow g4 c4 > < [ bes8 d > a ] |
 %%20
-       < { [ c'( bes a )bes g~  bes ] } { [ d ] } { [ g ] } > |
+       < { [ c'( bes a )bes g~  bes ] } { [ d ] } { [ g ] } > |
 %%21
        < \multi 2;  
                {\stem 1;  d'4 (\stem 1; ) cis'4 d'4 }  
                { \stem -1; g2 f4 } 
        > |
 %%22
-       < { [ g~  f g e ] } { [ cis ] } > < f4 d4 > |
+       < { [ g~  f g e ] } { [ cis ] } > < f4 d4 > |
 %%23
-       [ 'g g ] < e4. 'a4. > d-\upbow |
+       [ 'g8 g ] < e4. 'a4. > d-\upbow |
 %%24
        < d2.^"fine" 'a2. 'd2._"3 mins."> 
        \bar ":|";
@@ -103,13 +103,13 @@ IImenuetto = \melodic{
 \score{
        \melodic { \IImenuetto }
        \paper{
-               \width 195.0\mm
-               \unitspace 9.0\mm  % to get lily to use only three lines
-               \geometric 1.40
-               \output "scsii-menuetto.out"
+               \width 195.0\mm;
+               \unitspace 9.0\mm  ;% to get lily to use only three lines
+               \geometric 1.40;
+               \output "scsii-menuetto.out";
        }
        \midi{ 
-               \tempo 4:120
-               \output "scsii-menuetto.midi"
+               \tempo 4:120;
+               \output "scsii-menuetto.midi";
        }
 }
index cddf943902202b3860dcd7306cf46f334264cdca..8da7292ed5015edaf209ec89dbd3f9ce6e1368bc 100644 (file)
 EndMudelaHeader
 %}
 
-\version "0.0.58";
+\version "0.0.60";
 
-\score{\staff{
-       melodicregs 
+\score{
        \melodic{\octave c';
                \duration "last";
                'c4 ~ 'c c'' ~ c'' ~ g ~ c ~
@@ -29,11 +28,10 @@ EndMudelaHeader
                < { c ~ d }
                  { e ~ f }
                >
-       < \multivoice 
+       < \multi 2;
        { \stem 1; c'8 ~g ~e( ~c~ [c'~ g' e' )c'] c'' ~ c'' c~c }
-       { \stem -1; c (e g )c'~( [b a g )d]     r2 } >
-
-       }
+       { \stem -1; c (e g )c'~( [b a g )d]     r2 } 
+       >
 
        }
 }
index 09bbcd241492c3978851d2cdb144d5696ba2084a..867b6caaa12d24e775038a783a8e961c019a8803 100644 (file)
@@ -13,7 +13,7 @@
 EndMudelaHeader
 %}
 
-\version "0.0.58";
+\version "0.0.60";
 
 commands = \melodic{
        \skip 2.*4;
@@ -199,7 +199,7 @@ begeleiding = \melodic{
        ''a r4 |
 %%5
 \duration 8;
-       < \multivoice { \stem 1;        
+       < \multi 2; { \stem 1;  
                [ 'f 'a d 'a d 'a ] 
                [ 'd 'e 'g 'e 'g 'e ] 
                [ 'cis 'e 'g 'e 'g e ]
@@ -216,7 +216,7 @@ begeleiding = \melodic{
 %%10
        [ 'd 'a d 'a d 'a ] |
 %%11
-       < \multivoice   
+       < \multi 2;     
        { \stem 1;
                [ 'f 'a d 'a d 'a ]
                [ 'd 'e 'g 'e 'g 'e ] 
@@ -232,7 +232,7 @@ begeleiding = \melodic{
        [ 'c 'g 'bes 'g 'bes 'g ] |
 %%16
        [ ''f 'c 'f 'c 'f 'c ] |
-       < \multivoice
+       < \multi 2;
        { \stem 1; 
                [ ''a 'e 'g 'e 'g 'e ][ 'd 'a d 'a d 'a ]
                [ ''bes 'f 'bes 'f 'bes 'f ][ ''f 'c 'f 'c 'f 'c ] }
@@ -246,7 +246,7 @@ begeleiding = \melodic{
        < [ 'e 'c > 'g c 'g c 'g ] |
 %%22
        [ 'f 'a c 'a 'f 'c ] |
-       < \multivoice {
+       < \multi 2; {
                \stem 1;
                [ ''a 'e 'g 'e 'g 'e ] 
                [ 'd 'fis 'a 'fis 'a 'fis ] 
@@ -298,7 +298,7 @@ begeleiding = \melodic{
 %%44
        < [ 'd ''b > 'fis 'b 'fis 'b 'fis ] |
 %%45
-       < \multivoice { \stem 1; 
+       < \multi 2; { \stem 1; 
                [ ''g 'd 'b 'd 'b 'd ] 
                [ 'd 'a d 'a d 'a ] 
        } {
@@ -465,20 +465,21 @@ tekstII = \lyric{
 }
 
 \score{
-       \staff{ lyricregs tekstI }
-       \staff{ lyricregs tekstII }
+%      \staff{ lyricregs tekstI }
+%      \staff{ lyricregs tekstII }
 
-       \staff{ melodicregs melodie commands}
-       \staff{ melodicregs begeleiding commands }
+       \melodic < \multi 3; < \melodie \commands >
+         <\begeleiding \commands >
+       >
        \paper{
-               \width 195\mm
+               \width 195.\mm;
 
                % on two pages...
-               \unitspace 9\mm
-               \geometric 1.2
-               \output "standchen.out"
+               \unitspace 9.\mm;
+               \geometric 1.2;
+               \output "standchen.out";
        }
        \midi{
-               \tempo 4:54
+               \tempo 4:54;
        }
 }
index ab665b4e85176811fc369782a86a0e38eb4bf127..f34df1976109b9e636d905cec9eb002df76aa761 100644 (file)
@@ -20,7 +20,7 @@ EndMudelaHeader
 %}
 
 
-\version "0.0.59";
+\version "0.0.60";
 
 toccata_commands = \melodic{
        \meter 4/4;
@@ -136,15 +136,16 @@ break = \melodic{ \meter 4/4; r1 }
 % these should be two separate scores...
 \score{
        \melodic < \multi 3;
-               { \$toccata_right   \break   \$fuga2_right }
-               {       \$toccata_left   \break   \$fuga2_left }
+
+                {\$toccata_right     \break   \$fuga2_right }
+                {\$toccata_left  \break   \$fuga2_left }
        
-               { \$toccata_pedal   \break   \$fuga2_pedal }
+                {\$toccata_pedal    \break   \$fuga2_pedal }
                
        >
        \paper{}
        \midi{
-               \tempo 4:96
+               \tempo 4:96;
        }
 }
 
index 0e91713bcf498e4a19ec8a0448a415e1457f6cd4..00ad8716ac4c8c5a0c08ce694d8841b8351320fc 100644 (file)
@@ -9,12 +9,14 @@
  Tested Features: stem direction, multivoice, forced accidentals.
 
  Remarks: the stem direction algorithm is severely broken (look at the
-          bass dux) with pl64.
+bass dux) with pl64. [this is supposedly fixed in pl68, can anybody
+knowledgeable remove this comment if it's not appropriate anymore?]
+    
 
 
 %}
 
-\version "0.0.59";
+\version "0.0.60";
 
                                     % should add \need{dutch.ini} for
                                     % correct parsing of note names
@@ -198,7 +200,7 @@ bassdux =
        >
     \paper{}
     \midi {
-        \tempo 4:84
+        \tempo 4:84;
     }
 }
 
index f8c8298f3aa56b00a74a52f37e09e15c6af299b8..e613199be6f6880f78fed4b4d623af73aaeddde5 100644 (file)
@@ -1,7 +1,7 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 0
-PATCH_LEVEL = 68
+PATCH_LEVEL = 70
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
-MY_PATCH_LEVEL =pre.jcn1
+MY_PATCH_LEVEL =
index 1e9ca02e60f999cf6af81f4cd453aa1a156ff3b2..3d50ce826157519eb71fc8df2fe615dd81aaca5e 100644 (file)
@@ -7,4 +7,4 @@ stablecc=atom.cc command-request.cc musical-request.cc bar.cc boxes.cc \
        paper-def.cc parser.cc lexer.cc qlp.cc qlpsolve.cc\
        template1.cc template2.cc template3.cc template4.cc\
        template5.cc template6.cc version.cc tex-stream.cc  tex.cc\
-       identifier.cc note.cc\
+       identifier.cc note.cc voice-regs.cc\
index d0b0079692411028520408b3e82ba771d4979f9e..990299823511f19eec471a63ea9542afbf33a899 100644 (file)
@@ -149,7 +149,12 @@ Beam::set_default_dir()
 
 /*
   should use minimum energy formulation (cf linespacing)
-  */
+
+  [todo]
+  the y of the (start) of the beam should be quantisized,
+  so that no stafflines appear just in between two beam-flags
+
+*/
 void
 Beam::solve_slope()
 {
@@ -208,6 +213,11 @@ Beam::set_stemlens()
 void
 Beam::do_post_processing()
 {
+    if ( stems.size() < 2) {
+       warning("Beam with less than 2 stems");
+       transparent_b_ = true;
+       return ;
+    }
     solve_slope();    
     set_stemlens();
 }
@@ -248,7 +258,6 @@ Beam::set_grouping(Rhythmic_grouping def, Rhythmic_grouping cur)
 void
 Beam::do_pre_processing()
 {
-    assert(stems.size()>1);
     if (!dir_i_)
        set_default_dir();
 
@@ -329,11 +338,7 @@ Beam::stem_beams(Stem *here, Stem *next, Stem *prev)const
 Molecule*
 Beam::brew_molecule_p() const 
 {
-    /*
-      [todo]
-      the y of the (start) of the beam should be quantisized,
-      so that no stafflines appear just in between two beam-flags
-     */
     Molecule *mol_p = new Molecule;
     // huh? inter-what
 //    Real inter_f = paper()->interbeam_f();
@@ -364,12 +369,13 @@ Beam::do_print()const
     Spanner::print();
 #endif
 }
-
+/*
+  duh. The stem is not a dependency but a dependent
+ */
 void
 Beam::do_substitute_dependency(Score_elem*o,Score_elem*n)
 {
-    int i;
-    while ((i=stems.find_i((Stem*)o->item())) >=0) 
-          if (n) stems[i] = (Stem*) n->item();
-          else stems.del(i);
+    if (o->is_type_b( Stem::static_name() )) {
+       stems.substitute( (Stem*)o->item(),  n?(Stem*) n->item():0);
+    }
 }
index 808a7813d8d02ec6f8f064703a837b087ab7383b..14ff34118bf470222d8a81e53cc776b0ee252dbb 100644 (file)
@@ -5,6 +5,7 @@
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
+
 #include "break-align-item.hh"
 
 void
index 554d54ac60bb45666769125b9fdfbce011c85a81..7ba6c4c601bc19d9a7cf50910c7f4600a62441e2 100644 (file)
@@ -13,6 +13,7 @@
 
 Collision::Collision()
 {
+    empty_b_ = transparent_b_ =true;
 }
 
 void
index bcf6c1c8b79a58c033f463716541afef28eb50db..d3731bed19ced89ff812e3294f63b65b53fd14fa 100644 (file)
@@ -20,8 +20,6 @@ Crescendo::Crescendo()
     left_dyn_b_ = right_dyn_b_ =false;
 }
 
-
-
 Molecule*
 Crescendo::brew_molecule_p() const
 {
index e5a7279fa2df602483390c593c9ea2b2c13b1288..b55f36b4bec0b790c88f61997b8751a3fabfa853 100644 (file)
@@ -44,16 +44,12 @@ Note_head_register::do_process_requests()
            *get_staff_info().c0_position_i_l_;
     } else if (note_req_l_->rest()) {
        n_p->rest_b_ = true;
-       if (note_req_l_->rhythmic()->duration_.type_i_ <= 2)
-           note_p_->translate(
-               Offset(0,
-                      6 * paper()->internote_f()));
     }
     
     Score_elem_info itinf(note_p_,note_req_l_);
     announce_element(itinf);
 }
-
 void
 Note_head_register::do_pre_move_processing()
 {
index 6cfb0c00c0a74d6a033c5bd11468d0a7ed130aec..46e2b67ee281949162becc55861f52ec6d3e1fd8 100644 (file)
@@ -7,9 +7,11 @@
 */
 
 #include "horizontal-align-item.hh"
+
 IMPLEMENT_STATIC_NAME(Horizontal_align_item);
 IMPLEMENT_IS_TYPE_B1(Horizontal_align_item,Item);
 
+
 bool
 Horizontal_align_item::contains_b(Item *i)const
 {
@@ -83,10 +85,18 @@ Horizontal_align_item::do_pre_processing()
     }
 
     Real where_f= total * (align_i_-1.0)/2.0;
+    Real center_dx_f = 0;
     for ( int i=0 ;  i < item_l_arr_.size(); i++) {
-       item_l_arr_[i]->translate_x(where_f -dims[i][-1] );
+       Real dx = where_f -dims[i][-1];
+       item_l_arr_[i]->translate_x( dx );
+       if (item_l_arr_[i] == center_l_)
+           center_dx_f = where_f;
        where_f += dims[i].length();
     }
+    if (center_dx_f && !align_i_ )
+       for ( int i=0 ;  i < item_l_arr_.size(); i++) 
+           item_l_arr_[i]->translate_x( - center_dx_f );
+    
 }
 
 Interval
@@ -102,6 +112,7 @@ Horizontal_align_item::do_print()const
 
 Horizontal_align_item::Horizontal_align_item()
 {
+    center_l_ = 0;
     align_i_ = 0;
     empty_b_ = true;
     transparent_b_ = true;
index d306953191c8b144941eb8f17cf5431f932d6f2d..7e1e43e45f7da767943116f6e62ca6f773d40180 100644 (file)
@@ -119,7 +119,7 @@ Identifier::Identifier(Identifier const&)
 
 
 default_accessor(Real_id, Real, real);
-default_accessor(Script_id, General_script_def, script);
+virtual_accessor(Script_id, General_script_def, script);
 default_accessor(Lookup_id, Lookup, lookup);
 default_accessor(Symtables_id, Symtables, symtables);
 virtual_accessor(Music_id, Music, music);
index 447a807f0ac048d23c1b21e0d4ddc199c5396fa4..9513fc153310682aa5c75cd51100f5e3115a84cd 100644 (file)
@@ -15,7 +15,7 @@ public:
     String type_str_;
     
     NAME_MEMBERS();
-    SCORE_ELEM_CLONE(Bar)
+    SCORE_ELEM_CLONE(Bar);
     Bar();
 private:
     void do_print() const;
index 9a729a5da9dec9d0c16fce6de7e06d0ad9d8cc05..55fbc8a6730405574c5d209a83fdbf651ec42455 100644 (file)
@@ -30,7 +30,7 @@ public:
 
     void set_grouping(Rhythmic_grouping def, Rhythmic_grouping current);
     void set_stemlens();
-    SCORE_ELEM_CLONE(Beam)
+    SCORE_ELEM_CLONE(Beam);
 protected:
     virtual Interval do_width()const;    
     virtual Offset center() const;
index 916e284d5717421a36f14e7e15ba45dc3ed5f761..7e0e632b01653b3958e777483cb06c9b2022e111 100644 (file)
@@ -19,7 +19,7 @@ protected:
     virtual void do_pre_processing();
 public:
     NAME_MEMBERS();
-    SCORE_ELEM_CLONE(Break_align_item)
+    SCORE_ELEM_CLONE(Break_align_item);
        
 };
 #endif // BREAK_ALIGN_ITEM_HH
index ab089f0ffc48dc64fac2335a88e43b6eff9b2ab1..a3c9053b3434a51b0e35dbeac885853df697325a 100644 (file)
@@ -28,7 +28,7 @@ public:
 
     /* *************** */
     NAME_MEMBERS();
-    SCORE_ELEM_CLONE(Clef_item)
+    SCORE_ELEM_CLONE(Clef_item);
     Clef_item();
     void read(Clef_register const&);
     void read(String);
index ece423d154f2ada9c22327f3441969a47ebdb7e9..998c1669ee022b48abaac3496683c23cf441d66e 100644 (file)
@@ -26,7 +26,7 @@ public:
     bool left_dyn_b_;
     Crescendo();
 protected:
-    SCORE_ELEM_CLONE(Crescendo)
+    SCORE_ELEM_CLONE(Crescendo);
     virtual Molecule*brew_molecule_p()const;
     NAME_MEMBERS();
     
index 6a799526d0ddb89d59ca7bc1b6669c51fb0ff994..ce7b75e41ac60e12b897a309af241cecd28cbc81 100644 (file)
 class Horizontal_vertical_group_item  : public Item, public Horizontal_vertical_group {
 public:
     NAME_MEMBERS();
-    SCORE_ELEM_CLONE(Horizontal_vertical_group_item)
+    SCORE_ELEM_CLONE(Horizontal_vertical_group_item);
 protected:
     virtual void do_print() const;
 };
 
 class Horizontal_group_item : public Item, public Horizontal_group {
     NAME_MEMBERS();
-    SCORE_ELEM_CLONE(Horizontal_group_item)
+    SCORE_ELEM_CLONE(Horizontal_group_item);
 protected:
     virtual void do_print() const { Elbement_group::do_print(); }
 };
index c7c7207d74196d971844c6f3962ecc1ecc58a836..5c9dac12bc5cd4a99acf788e156345e50209d7f1 100644 (file)
@@ -18,7 +18,7 @@
  */
 class General_script_def : public Input {
 public:
-    VIRTUAL_COPY_CONS(General_script_def,General_script_def)
+    VIRTUAL_COPY_CONS(General_script_def,General_script_def);
     NAME_MEMBERS();
     virtual int staff_dir_i()const;
     void print() const;
index 6132046a26802127fd4eb17299e259a439d3786e..e12eae39bca9e3767bbaff28c87cbac2a3439e6b 100644 (file)
 /**
   Order elems left to right.
 
+  
+
   TODO: insert(order, elem)
   */
 class Horizontal_align_item :  public Item {
 protected:
     Link_array<Item> item_l_arr_;
     Array<int> priority_i_arr_;
-    int align_i_;
     
 public:
+    Item * center_l_;
+    /**
+      Which side to align? 
+      -1: left side, 0: centered (around center_l_ if not nil), 1: right side
+     */
+    int align_i_;
+        
     NAME_MEMBERS();
-    SCORE_ELEM_CLONE(Horizontal_align_item)
+    SCORE_ELEM_CLONE(Horizontal_align_item);
     void add(Item*, int p);
     Horizontal_align_item();
 protected:
+    
     virtual void do_substitute_dependency(Score_elem * , Score_elem *);
     /// do calculations before determining horizontal spacing
     virtual void do_pre_processing();
index 1c0703f16b5a6ba2ca5cfa16b912749f72cdf252..92541c7211a94d28ed9f37e3f16d8c95fe80bc3d 100644 (file)
@@ -7,12 +7,17 @@
 */
 
 
-#ifndef Interpreter_HH
-#define Interpreter_HH
+#ifndef INTERPRETER_HH
+#define INTERPRETER_HH
+
+#include "lily-proto.hh"
 
 class Interpreter {
 public:
+    int music_list_i_;
+    Interpreter();
+    virtual ~Interpreter();
     virtual bool interpret_request_b(Request*) { return false;}
 };
 
-#endif // Interpreter_HH
+#endif // INTERPRETER_HH
index fda86e5375651cd1a2c9a7bc08196c0c4bd1b1c1..447ea7e078d66f4764c2e6cbb70cf80c30d3b04f 100644 (file)
@@ -20,7 +20,7 @@ struct Key_item : Item {
     
     /* *************** */
     NAME_MEMBERS();
-    SCORE_ELEM_CLONE(Key_item)
+    SCORE_ELEM_CLONE(Key_item);
 
     Key_item(int cposition);
     void add(int pitch, int acc);
index b41306315fdd9bb12b0f6cb6bb7b38b28d894b9f..4b1479090a47a8a503d52bacf1524c7bd5a73ba1 100644 (file)
@@ -44,7 +44,7 @@ struct Lookup {
     Symbol accidental(int)const;
     Symbol ball(int)const;
     Symbol flag(int)const;
-    Symbol rest(int)const;
+    Symbol rest(int, bool outside)const;
     Symbol clef(String)const;
     Symbol bar(String)const;
     Symbol dots(int)const;
index 14a50f0f45aa3dc6d7b74beed251070ed2ac29a5..176ce6085c96d0d16bf752df00ae32e40f8d0631 100644 (file)
@@ -24,7 +24,7 @@ protected:
 public:
     Meter(Array<Scalar> args) ;
     NAME_MEMBERS();
-    SCORE_ELEM_CLONE(Meter)
+    SCORE_ELEM_CLONE(Meter);
 };
 #endif // METER_HH
 
index a0501d7fc9e60e9a60cc9ad8548e99a24b57cd97..a375dc35d1e495bcc868dbe1543555885f57a13e 100644 (file)
@@ -17,6 +17,7 @@
 class Music_iterator {
 protected:
     bool first_b_;
+    virtual void do_print()const;
     
 public:
     Music_iterator *daddy_iter_l_;
@@ -25,22 +26,29 @@ public:
     
     static Music_iterator* static_get_iterator_p(Music*,Register_group_register*);
     Music_iterator* get_iterator_p(Music*)const;
+    void set_reg(Register_group_register*);
     Music_iterator();
     virtual void next(Moment until);
     virtual Moment next_moment()const;
     virtual bool ok()const;
     virtual ~Music_iterator();
     virtual void construct_children();
+    void print()const;
     virtual Register_group_register * get_req_acceptor_l();
 };
 
 // duh.
 class Request_iterator : public Music_iterator {
     Request  *req_l_;
+    bool last_b_;
 public:
     Request_iterator(Request const *);
     NAME_MEMBERS();
 protected:
+    virtual bool ok() const;
+    virtual Moment next_moment() const;
+    
+    virtual void do_print()const;
     virtual void next(Moment);
 };
 
@@ -60,6 +68,7 @@ public:
     Chord_iterator(Chord const*);
     NAME_MEMBERS();
 protected:
+    virtual void do_print()const;
     virtual void construct_children();
     virtual void next(Moment);
     virtual Moment next_moment()const;
@@ -86,6 +95,7 @@ public:
     Voice_iterator(Voice const*);
     NAME_MEMBERS();
 protected:
+    virtual void do_print()const;
     virtual void construct_children();
     ~Voice_iterator();    
     virtual void next(Moment);
index 0198e98d8c6c20bbdbdf6a9b1122d084bbea0336..30d5793253970fc3271c9ef179e1edb717ba1959 100644 (file)
@@ -30,7 +30,7 @@ public:
     Music_list(Music_list const&);    
     Music_list();
     NAME_MEMBERS();
-    VIRTUAL_COPY_CONS(Music_list,Music)
+    VIRTUAL_COPY_CONS(Music_list,Music);
     virtual void add(Music*);
     virtual void transpose(Melodic_req const *);
     
@@ -48,7 +48,7 @@ class Chord : public Music_list {
 public:
     Chord();
     NAME_MEMBERS();
-    VIRTUAL_COPY_CONS(Chord,Music)
+    VIRTUAL_COPY_CONS(Chord,Music);
     virtual void translate(Moment dt);
     virtual MInterval time_int()const;
 };
@@ -56,7 +56,7 @@ public:
 class Voice_element : public Chord {
 public:
     NAME_MEMBERS();
-    VIRTUAL_COPY_CONS(Voice_element,Music)
+    VIRTUAL_COPY_CONS(Voice_element,Music);
 };
 
 /**
@@ -69,7 +69,7 @@ public:
 
     Voice();
     NAME_MEMBERS();
-    VIRTUAL_COPY_CONS(Voice, Music)
+    VIRTUAL_COPY_CONS(Voice, Music);
     virtual void translate(Moment dt);
     virtual MInterval time_int()const;
 };
@@ -86,6 +86,6 @@ public:
     String id_str_;
 
     NAME_MEMBERS();
-    VIRTUAL_COPY_CONS(Change_reg, Music)
+    VIRTUAL_COPY_CONS(Change_reg, Music);
 };
 #endif // MUSIC_LIST_HH
index eb4058c6ddc4d8333bdfae3f245562cf0c98564f..e90ea58a6bd5381ff1a09bf64dbc37b62488c2f9 100644 (file)
@@ -33,7 +33,7 @@ public:
     void print() const;
     virtual void transpose(Melodic_req const *);
     virtual void translate(Moment dt);
-    VIRTUAL_COPY_CONS(Music,Music)
+    VIRTUAL_COPY_CONS(Music,Music);
     NAME_MEMBERS();
     Music();
 protected:
index c93c1ad205d278ede6df56cf27606983c34658ee..450281825d15bd88985371a2e034ee34f5975a71 100644 (file)
@@ -32,6 +32,7 @@ public:
     int staff_size_i_;
     int dots_i_;
     int balltype_i_;
+    int dot_delta_y_i_;
     int x_dir_i_;
     
     /* *************** */
@@ -42,6 +43,7 @@ public:
       position of top line (5 linestaff: 8)
       */
     Note_head(int staff_size);
+    void set_dots();
     static int compare(Note_head * const &a, Note_head *const &b) ;
 protected:
     virtual    void do_print()const;
index e0778d8e4e0a12581c2a36f441123f423977f890..0c47919b6b8fec3f255f5d1b06ef87066772e732 100644 (file)
@@ -29,8 +29,15 @@ protected:
     Array<Score_elem_info> announce_info_arr_;
     
     virtual void do_print()const;
-    
+
+    virtual bool removable_b()const;
+
 public:
+    int iterator_count_;
+    void check_removal();
+    Register_group_register();
+    ~Register_group_register();
+    
     /// Score_register = 0, Staff_registers = 1, etc)
     virtual int depth_i()const;
     /**
@@ -62,6 +69,7 @@ public:
     virtual void do_removal_processing();
     virtual bool do_try_request(Request*);
     virtual void do_process_requests();
+
     virtual Staff_info get_staff_info()const;
     
     virtual Register_group_register * find_register_l(String name,String id);
index 4fa49691d879b03d3ef48ffc681c733293235c27..62d5e73e8ca39b4f5a2e132b6fe8e64e0b9a897f 100644 (file)
@@ -31,7 +31,7 @@ public:
     virtual ~Request(){}
 
     NAME_MEMBERS();
-    VIRTUAL_COPY_CONS(Request,Music)
+    VIRTUAL_COPY_CONS(Request,Music);
     
     void print()const ;
     virtual MInterval time_int() const;
@@ -55,7 +55,7 @@ protected:
 #define REQUESTMETHODS(T,accessor)     \
 virtual T * accessor() { return this;}\
 NAME_MEMBERS();\
-VIRTUAL_COPY_CONS(T, Request)\
+VIRTUAL_COPY_CONS(T, Request);\
 virtual void do_print() const
 
 
index 1d698f859d093c499fbf5d471c030aff82643e35..a2a39754be60780727dc5242e416819bfaabe43d 100644 (file)
@@ -21,6 +21,7 @@ public:
     void add(Rest_column*);
     void add(Collision*);
     NAME_MEMBERS();
+    Rest_collision();
 protected:
     virtual void do_post_processing();
     virtual void do_pre_processing();
index 533e47103c9c72810ebc9ba7cb87a7bc91a3407c..3f7e15ca4f793c6d68c82063f68271f40f19c454 100644 (file)
 
 class Score_align_register: public Request_register
 {
-    
-    const char* type_ch_C_;
     Horizontal_group_item  * align_p_;
 public:
+    
+    const char* type_ch_C_;
     int priority_i_;
-    Score_align_register(char const*);
+    Score_align_register();
     NAME_MEMBERS();
 protected:
     virtual void acknowledge_element(Score_elem_info);
index 95c6b0ba1d52ca24c9d6bc1f5ced3fe2422d1e77..867a3da602593e6361d2d408d403f676f0a56ff1 100644 (file)
@@ -35,6 +35,9 @@ class Score_elem : private Directed_graph_node {
       */
     Offset offset_;
 
+    /**
+      for administration of what was done already
+     */
     enum Status {
        ORPHAN,                 // not yet added to pstaff
        VIRGIN,                 // added to pstaff
@@ -49,7 +52,9 @@ class Score_elem : private Directed_graph_node {
        OUTPUT,                 // molecule has been output
        DELMARKED,              // mark for 'unclean' deletion
        DELETED,                // to catch malloc mistakes.
-    } status;
+    };
+    
+    Status status;
 
 public:
     PScore *pscore_l_;    
@@ -69,10 +74,10 @@ public:
     Interval height() const;
     virtual void translate_x(Real);
     virtual void translate_y(Real);
+    
      /**
       translate the symbol. The symbol does not have to be created yet. 
-      Overridable, since this score-elem might act as a pseudo-list.
-     */
+      */
     void translate(Offset);
     Offset offset()const;
 
@@ -98,7 +103,7 @@ public:
     virtual Horizontal_vertical_group* elem_group() { return 0; }
     virtual Item * item() { return 0; }
     virtual Line_of_score * line_l() const;
-    SCORE_ELEM_CLONE(Score_elem)
+    SCORE_ELEM_CLONE(Score_elem);
 protected:
 
     virtual  Interval do_height()const;
index 16accf1a83570b2f0ead047a45c86c964bad157e..5cc5c9aa4f62b980f77fc7796371359915d19ab7 100644 (file)
@@ -38,7 +38,7 @@ protected:
     virtual void do_substitute_dependency(Score_elem*,Score_elem*);
     virtual Interval do_width()const;
     virtual void do_print() const;
-    SCORE_ELEM_CLONE(Line_of_score)
+    SCORE_ELEM_CLONE(Line_of_score);
 };
 
 #endif
index 8313abad46b48475d1f201b2dc09a5ece2e231f8..94f60905285db658c36306cdd38aa072ab14a5d1 100644 (file)
@@ -14,7 +14,7 @@
 class Script_def : public General_script_def {
     /// invert if below staff?
     bool invertsym_b_;
-    String symidx;
+    String symidx_str_;
     
 
     /// on the other side of the stem?
@@ -38,11 +38,11 @@ public:
     NAME_MEMBERS();
 
     virtual bool do_equal_b(General_script_def const &)const;
-    void print() const;
+    virtual void do_print() const;
     Script_def();
-    void set_from_input(String, bool, int, int ,bool);
+    void set_from_input(String, bool, int, int ,bool,int );
 protected:
-    VIRTUAL_COPY_CONS(Script_def,General_script_def)
+    VIRTUAL_COPY_CONS(Script_def,General_script_def);
 
 };
 
index b48ea8ebd6f98d6671d1b413fd48a24363ff099e..f6d41a2c2ff470446641fdcaef595b4bea1c2595 100644 (file)
@@ -8,7 +8,6 @@
 #define SCRIPT_HH
 
 #include "staff-side.hh"
-#include "script-def.hh"
 #include "item.hh"
   
 /**
@@ -18,12 +17,13 @@ class Script : public Item, public Staff_side {
     
     int pos_i_;
     
-    General_script_def *specs_l_;
     Stem *stem_l_;
 
     /* *************** */
 protected:
     Molecule *brew_molecule_p()const;
+    virtual void do_substitute_dependency(Score_elem*,Score_elem*);
+    virtual void do_print() const;
     virtual void do_post_processing();
     virtual void do_pre_processing();
     virtual Interval do_width() const;
@@ -33,8 +33,10 @@ private:
     void set_default_index();
     Symbol symbol()const;
 public:
+    General_script_def *specs_l_;
+    
     static int compare(Script  *const&, Script *const&) ;
-    Script(Script_req*);
+    Script();
     void set_stem(Stem*);
     NAME_MEMBERS();
 
index 7ec510afa2f10b5a8b4364df0071c2431a29fa1b..475458ce97d2a4a97fe3acb7630a9bc919602028 100644 (file)
@@ -24,7 +24,7 @@ protected:
     virtual void do_post_processing();
     virtual void do_substitute_dependency(Score_elem*, Score_elem*);
     virtual void do_pre_processing();
-    SCORE_ELEM_CLONE(Slur)
+    SCORE_ELEM_CLONE(Slur);
     NAME_MEMBERS();
 };
 
index d133fb66b50645564d6330e025cce502f358fc55..aa8747a0563b6427465f9e67d327cfdff88fb79d 100644 (file)
@@ -18,7 +18,7 @@ class Spanner_elem_group : public Spanner, public Horizontal_vertical_group {
 protected:
     virtual Interval do_width()const;
     virtual void do_print() const;
-    SCORE_ELEM_CLONE(Spanner_elem_group)
+    SCORE_ELEM_CLONE(Spanner_elem_group);
 public:
     NAME_MEMBERS();
 };
index 2aee51cc2e56dbd4fe80ee951e2dc96244baa31d..1954ca97f7b875ca098fe84c4c67ee134cae5922 100644 (file)
@@ -43,7 +43,7 @@ public:
     bool broken_b() const;
     Spanner* find_broken_piece(Line_of_score*)const;
 protected:
-    SCORE_ELEM_CLONE(Spanner)
+    SCORE_ELEM_CLONE(Spanner);
     virtual void break_into_pieces();
 
     Link_array<Spanner> broken_into_l_arr_;
index 68b1c11d4a877a95152a69a844a09cf7520917b3..74b387aaad3d49273359b6a92415bbac7aa1bcb3 100644 (file)
@@ -28,7 +28,7 @@ public:
     Real inter_note_f()const;
     int steps_i()const;
 protected:
-    SCORE_ELEM_CLONE(Staff_symbol)
+    SCORE_ELEM_CLONE(Staff_symbol);
     virtual Molecule* brew_molecule_p() const;
     virtual void do_print()const;
 };
index 5afdc785c03cadb7511883012ba7effad989178b..ceec013004e0fb1654d7967de2534103275fb4e7 100644 (file)
@@ -12,7 +12,7 @@
 /// one broken line of staff.
 struct Line_of_staff : public Spanner_elem_group{
 
-    SCORE_ELEM_CLONE(Line_of_staff)
+    SCORE_ELEM_CLONE(Line_of_staff);
 public:
     NAME_MEMBERS();
 
index 0cc584f742287c582b6fed21647d406d7ade8575..0fff834f857ffb278ac1d0a0aea97514f6be2449 100644 (file)
@@ -16,7 +16,7 @@ class Text_def : public General_script_def {
 protected:
     virtual Atom get_atom(Paper_def* p, int dir_i_)const;
     NAME_MEMBERS();
-    VIRTUAL_COPY_CONS(Text_def,General_script_def)
+    VIRTUAL_COPY_CONS(Text_def,General_script_def);
 public:
     /**
       centered , or aligned?
@@ -29,6 +29,7 @@ public:
     String style_str_;
     
     /* *************** */
+    virtual void do_print() const;
     virtual ~Text_def() {};
     bool do_equal_b(const Text_def&)const;
     Text_def();
index 1381be3b5ef7efc8f3608f30f01d6f57ada5b403..119384067cd64bb5dbaf895932b12e1509f1ceee 100644 (file)
   triplets, eentweetjes, ottava, etc.  */
 class Text_spanner : public Spanner {
 public:
-    Directional_spanner * support;
+    Directional_spanner * support_span_l_;
     General_script_def * spec_p_;
     Offset text_off_;
     NAME_MEMBERS();
 
     void set_support(Directional_spanner*);
     Text_spanner();
+    Text_spanner(Text_spanner const&);
 protected:
-    SCORE_ELEM_CLONE(Text_spanner)
+    SCORE_ELEM_CLONE(Text_spanner);
     ~Text_spanner();
     virtual void do_substitute_dependency(Score_elem*,Score_elem*);
     virtual void do_pre_processing();
index 70c6a8a7af5d5ea4d7de589f300dfd1423dc3f38..8cf2fef4a53603902e5c24229b8777bd4e32f8d4 100644 (file)
@@ -29,6 +29,6 @@ public:
 
     Tie();
     NAME_MEMBERS();
-    SCORE_ELEM_CLONE(Tie)
+    SCORE_ELEM_CLONE(Tie);
 };
 #endif // TIE_HH
index c4f04e1af23376c402d978a4c2315da4e4949d50..3dda1069620a8d5ae01dc605f447864931310361 100644 (file)
@@ -22,7 +22,6 @@ class Voice_group_registers  : public Register_group_register {
 protected:
     virtual void do_print() const;
     virtual Scalar get_feature(String);
-    virtual void do_post_move_processing();
     virtual bool do_try_request(Request*);
 public:
     
index 3c282b34b21ddf54e6825ab162059e71e8be4a55..8d34121bb0f62c8a90a31a1939dd6edc78ecf028 100644 (file)
 
 class Voice_registers : public Interpreter, public Register_group_register {
 public:
-    Voice_registers();
     NAME_MEMBERS();
 
 protected:
     virtual bool interpret_request_b(Request*);
     virtual Interpreter* interpreter_l() { return this; }
-    virtual void do_print() const;
 };
 
 
diff --git a/lily/interpreter.cc b/lily/interpreter.cc
new file mode 100644 (file)
index 0000000..15f400b
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+  interpreter.cc -- implement Interpreter
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+#include <assert.h>
+#include "interpreter.hh"
+
+Interpreter::Interpreter()
+{
+    music_list_i_ =0;
+}
+
+Interpreter::~Interpreter()
+{
+//    assert(!music_list_i_ );
+}
index c38322fdf089d4495f7af2f905ed31a605c60542..a4dd9caeb1e9621ac79c9a4f936179ccdd48a2d7 100644 (file)
@@ -100,9 +100,9 @@ Lookup::ball(int j) const
 }
 
 Symbol
-Lookup::rest(int j) const
+Lookup::rest(int j, bool o) const
 {
-    return (*symtables_)("rests")->lookup(String(j));
+    return (*symtables_)("rests")->lookup(String(j) + (o ? "o" : "") );
 }
 
 Symbol
index e84f0525bf8a266677003f427437309e55eeac3a..2d404bfa5fdb30213579f4f913ad803e3522f991 100644 (file)
 #include "register.hh"
 #include "register-group.hh"
 #include "interpreter.hh"
+#include "debug.hh"
 
 IMPLEMENT_STATIC_NAME(Music_iterator);
 IMPLEMENT_IS_TYPE_B(Music_iterator);
 
+void
+Music_iterator::do_print()const
+{
+
+}
+
+void
+Music_iterator::print() const
+{
+#ifndef NPRINT
+    mtor << name() << "{";
+    mtor << "report to " << report_to_reg_l_ << " (" << report_to_reg_l_->name() << ")\n";
+    mtor << "next at " << next_moment() << " ";
+    do_print();
+    mtor << "}\n";
+#endif
+}
+
 Register_group_register * 
 Music_iterator::get_req_acceptor_l()
 {
@@ -22,17 +41,34 @@ Music_iterator::get_req_acceptor_l()
     if (report_to_reg_l_->interpreter_l() )
        return report_to_reg_l_;
 
-    report_to_reg_l_ =  report_to_reg_l_->get_default_interpreter();
+    set_reg( report_to_reg_l_->get_default_interpreter() );
     return report_to_reg_l_;
 }
 
+void
+Music_iterator::set_reg(Register_group_register*reg)
+{    
+    if (report_to_reg_l_==reg)
+       return;
+
+    if (report_to_reg_l_)
+       report_to_reg_l_->iterator_count_ --;
+
+    report_to_reg_l_ = reg;
+    if (report_to_reg_l_)
+       report_to_reg_l_->iterator_count_ ++;
+}
+
 void
 Music_iterator::construct_children()
 {
 
 }
 
-Music_iterator::~Music_iterator(){
+Music_iterator::~Music_iterator()
+{
+    set_reg(0);
 }
 
 Moment
@@ -72,13 +108,12 @@ Music_iterator::static_get_iterator_p(Music *m,
      if ( m->is_type_b( Music_list::static_name())) {
        Music_list* ml = (Music_list*) m;
        if (ml -> type_str_ != "") {
-           p->report_to_reg_l_ =
-               report_l->find_get_reg_l(ml-> type_str_, ml->id_str_);
+           p->set_reg(report_l->find_get_reg_l(ml-> type_str_, ml->id_str_));
            
        } 
-    } 
+     
      if (! p->report_to_reg_l_ )
-       p ->report_to_reg_l_ = report_l;
+        p ->set_reg(report_l);
     
     return p;
 }
@@ -113,10 +148,19 @@ Chord_iterator::construct_children()
     for(iter(chord_C_->music_p_list_.top(), i); i.ok(); j++, i++) {
        
        Music_iterator * mi =  get_iterator_p( i.ptr());
-       report_to_reg_l_ = mi->report_to_reg_l_->ancestor_l( chord_C_->multi_level_i_ );
+       set_reg(mi->report_to_reg_l_->ancestor_l( chord_C_->multi_level_i_ ));
        children_p_list_.bottom().add( mi );
     }
 }
+void
+Chord_iterator::do_print() const
+{
+#ifndef NPRINT
+     for (iter(children_p_list_.top(), i); i.ok(); i++ ) {
+       i->print();
+     }
+#endif
+}
 
 void
 Chord_iterator::next(Moment until)
@@ -126,13 +170,13 @@ Chord_iterator::next(Moment until)
            i->next(until);
        }
        if (!i->ok()) 
-           i.del();
+           delete i.remove_p();
        else
            i++;
     }
     Music_iterator::next(until);
 
-    assert(!ok() || next_moment() > until);
+//    assert(!ok() || next_moment() > until);
 }
 
 IMPLEMENT_STATIC_NAME(Chord_iterator);
@@ -157,6 +201,13 @@ Chord_iterator::ok()const
 
 /* ************** */
 
+void
+Voice_iterator::do_print()const
+{
+    if (iter_p_)
+       iter_p_->print();
+}
+
 Voice_iterator::Voice_iterator(Voice const*v)
     : PCursor<Music*> ( v->music_p_list_)
 {
@@ -169,10 +220,9 @@ void
 Voice_iterator::construct_children()
 {
     if (ok()) {
-       
        iter_p_ = Music_iterator::get_iterator_p( ptr() );      
-       report_to_reg_l_ = 
-           iter_p_->report_to_reg_l_->ancestor_l( voice_C_ ->multi_level_i_ );
+       if (iter_p_->report_to_reg_l_->depth_i() > report_to_reg_l_->depth_i())
+           set_reg(iter_p_->report_to_reg_l_);
     }
 }
 
@@ -227,23 +277,47 @@ Voice_iterator::ok()const
 }
 
 /* ***************** */
-
+void
+Request_iterator::do_print()const
+{
+    mtor << req_l_->name() ;
+}
 Request_iterator::Request_iterator(Request const*c)
 {
     req_l_ = (Request*)c;
+    last_b_ = false;
 }
 
 void
 Request_iterator::next(Moment m)
 {
-    if ( !daddy_iter_l_->report_to_reg_l_->
-        interpreter_l()->interpret_request_b(req_l_) )
-       req_l_->warning("Junking request: " + String(req_l_->name()));
+    if ( first_b_) {
+       bool gotcha = daddy_iter_l_->report_to_reg_l_->
+           interpreter_l()->interpret_request_b(req_l_);
+       if (!gotcha)
+           req_l_->warning("Junking request: " + String(req_l_->name()));
+       first_b_ = false;
+    }
 
-    
-    Music_iterator::next(m);
+    if ( m >= req_l_->duration() )
+       last_b_ = true;
 }
 
+Moment
+Request_iterator::next_moment()const
+{
+
+    Moment m(0);
+    if  (!first_b_) 
+       m = req_l_->duration();
+    return m;
+}
+
+bool
+Request_iterator::ok()const
+{
+    return (req_l_->duration() && !last_b_) || first_b_; // ugh
+}
 IMPLEMENT_STATIC_NAME(Request_iterator);
 IMPLEMENT_IS_TYPE_B1(Request_iterator, Music_iterator);
 
@@ -283,14 +357,17 @@ IMPLEMENT_IS_TYPE_B1(Voice_element_iterator,Chord_iterator);
 void
 Voice_element_iterator::construct_children()
 {
+    get_req_acceptor_l();
+/*
     if ( daddy_iter_l_ 
         && daddy_iter_l_->is_type_b(Voice_iterator::static_name() )) {
-       report_to_reg_l_ = daddy_iter_l_-> get_req_acceptor_l();
+       set_reg(daddy_iter_l_-> get_req_acceptor_l());
     } else if (daddy_iter_l_
               && daddy_iter_l_-> is_type_b( Chord_iterator::static_name() )) {
 
        get_req_acceptor_l();
     }
+    */
     Chord_iterator::construct_children();
 }
 
index 5f9723a0a57f01ec08345819e98f2098684029e6..fe81ac84b468a00bf0acf4802948ff55cf8f03a1 100644 (file)
@@ -15,6 +15,7 @@
 
 IMPLEMENT_STATIC_NAME(Stem_req);
 IMPLEMENT_IS_TYPE_B1(Stem_req,Rhythmic_req);
+
 void
 Stem_req::do_print() const
 {
@@ -263,8 +264,8 @@ Script_req::Script_req(Script_req const&s)
 int
 Script_req::compare(Script_req const &d1, Script_req const &d2)
 {
-    return d1.dir_i_ == d2.dir_i_ &&
-       d1.scriptdef_p_->equal_b(*d2.scriptdef_p_);
+    return !(d1.dir_i_ == d2.dir_i_ &&
+       d1.scriptdef_p_->equal_b(*d2.scriptdef_p_));
 }
 
 Script_req::Script_req()
@@ -279,13 +280,17 @@ IMPLEMENT_IS_TYPE_B1(Script_req,Request);
 void
 Script_req::do_print() const
 {
+#ifndef NPRINT
     mtor << " dir " << dir_i_ ;
     scriptdef_p_->print();
+#endif
 }
 
 void
 Musical_script_req::do_print() const
-{}
+{
+    Script_req::do_print();
+}
 
 IMPLEMENT_STATIC_NAME(Musical_script_req);
 IMPLEMENT_IS_TYPE_B2(Musical_script_req,Musical_req, Script_req);
index 09ef114684af293a98bd767be1d6020ab435845b..fab25c79ce3142024acdbdcc9e8b9347c6b23258 100644 (file)
@@ -62,6 +62,7 @@ Note_column::do_pre_processing()
        else 
            dir_i_ = (head_positions_interval().center() >=  5) ? -1 : 1;
     }
+    Script_column::do_pre_processing();
 }
 
     
index fa21149a6fdbfb0381142f89ba209413b898aae6..02033be2e441dd9f05c4385c4ba9ac88178b1f4d 100644 (file)
 #include "molecule.hh"
 #include "musical-request.hh"
 
+/*
+  TODO
+  
+  Separate notehead into 
+
+
+     Rhythmic_head
+       Note_head
+       Rest
+
+     and Stem takes Rhythmic_heads 
+ */
 
 
 Note_head::Note_head(int ss)
@@ -24,6 +36,7 @@ Note_head::Note_head(int ss)
     position_i_ = 0;
     balltype_i_ = 0;
     dots_i_ = 0;
+    dot_delta_y_i_ = 0;
     extremal_i_ = 0;
     rest_b_ = false;
 }
@@ -31,9 +44,16 @@ Note_head::Note_head(int ss)
 void
 Note_head::do_pre_processing()
 {
-   // 8 ball looks the same as 4 ball:
+    // 8 ball looks the same as 4 ball:
     if (balltype_i_ > 4 && !rest_b_)
        balltype_i_ = 4;
+       
+    if (rest_b_) { 
+       if (balltype_i_ == 1)
+           position_i_ = 6;
+       else if (balltype_i_ == 2)
+           position_i_ = 4;
+    }
 }
 
 void
@@ -64,46 +84,62 @@ Note_head::compare(Note_head *const  &a, Note_head * const &b)
     return a->position_i_ - b->position_i_;
 }
 
+void
+Note_head::set_dots()
+{
+    if (!(position_i_ %2) && rest_b_ && balltype_i_ == 1)
+       dot_delta_y_i_ = -1;
+    else if (!(position_i_ %2))
+       dot_delta_y_i_ = 1;
+}
+
+/*
+  Ugh, hairy.
+ */
 Molecule*
 Note_head::brew_molecule_p() const 
 {
+    ((Note_head*)this)->set_dots(); // UGH GUH
     Molecule*out = 0;
     Paper_def *p = paper();
-
-    Real dy = p->internote_f();
+    Real inter_f = p->internote_f();
     Symbol s;
+
+    // ugh
+    bool streepjes_b = (position_i_<-1) || (position_i_ > staff_size_i_+1);
+    
     if (!rest_b_)
        s = p->lookup_l()->ball(balltype_i_);
-    else 
-       s = p->lookup_l()->rest(balltype_i_);
-    
+    else {
+       s = p->lookup_l()->rest(balltype_i_, streepjes_b);
+    }
     out = new Molecule(Atom(s));
     if (dots_i_) {
-       Symbol d = p->lookup_l()->dots(dots_i_);
+       Symbol d = p->lookup_l()->dots(dots_i_ );
        Molecule dm;
        dm.add(Atom(d));
-       if (!(position_i_ %2))
-           dm.translate_y(dy);
+       dm.translate_y( inter_f * dot_delta_y_i_ );
        out->add_right(dm);
     }
-    out->translate_x(x_dir_i_ * p->note_width());
-    bool streepjes = (position_i_<-1)||(position_i_ > staff_size_i_+1);
+
     
-    if (rest_b_ && balltype_i_ > 2)
-       streepjes = false;
+    if (rest_b_) {
+       streepjes_b = false;
+    }
     
-    if (streepjes) {
+    if (streepjes_b) {
        int dir = sign(position_i_);
        int s =(position_i_<-1) ? -((-position_i_)/2): (position_i_-staff_size_i_)/2;
+       
        Symbol str = p->lookup_l()->streepjes(s);
        Molecule sm;
        sm.add(Atom(str));
        if (position_i_ % 2)
-           sm.translate_y(-dy* dir);
+           sm.translate_y(-inter_f* dir);
        out->add(sm);       
     }
     
-    out->translate_y(dy*position_i_);
+    out->translate_y(inter_f*position_i_);
     return out;
 }
 
index f55ea2452b9520086d29141598b58acaaee6ea05..eb7a78ef10412f34cafa9e3c8a8029124cf7b494 100644 (file)
@@ -27,10 +27,7 @@ void
 PCol::clean_breakable_items()
 {
     if (!line_l_) {
-       for(iter(its.top(), j); j.ok(); ) {
-           j->unlink();
-           j.del();
-       }
+       its.junk_links();
     }
     if (prebreak_p_) prebreak_p_->clean_breakable_items();
     if (postbreak_p_) postbreak_p_->clean_breakable_items();
index 44acc399bd4cedd018075546ca63fa65edd227ab..de266d1b20979def2121be2a398aa00eb31bc70b 100644 (file)
@@ -216,6 +216,14 @@ PScore::set_breaking(Array<Col_hpositions> const &breaking)
            typeset_broken_spanner(span_p);
        }
     }
+    for (iter(elem_p_list_.top(),i ); i.ok() ;) {
+       Item *i_l =i->item();
+       if ( i_l && !i_l->pcol_l_->line_l_) {
+           i_l->unlink();
+           delete i.remove_p();
+       } else
+           i++;
+    }
 
     for (iter_top(cols, i); i.ok(); i++)
        i->clean_breakable_items();
index 7ccb227ccfe8185c420a8aa45e7825085392a802..1beab2956e9310dbaddde800bf83231ea8f8c717 100644 (file)
@@ -1,7 +1,7 @@
 %{ // -*-Fundamental-*-
 #include <iostream.h>
 
-#define MUDELA_VERSION "0.0.59"
+#define MUDELA_VERSION "0.0.60"
 
 #include "script-def.hh"
 #include "symtable.hh"
@@ -405,13 +405,13 @@ paper_body:
                $$ = THIS->default_paper();
 
        }
-       | paper_body WIDTH dim          { $$->linewidth = $3;}
-       | paper_body OUTPUT STRING      { $$->outfile = *$3;
+       | paper_body WIDTH dim ';'              { $$->linewidth = $3;}
+       | paper_body OUTPUT STRING ';'  { $$->outfile = *$3;
                delete $3;
        }
        | paper_body symtables          { $$->set($2); }
-       | paper_body UNITSPACE dim      { $$->whole_width = $3; }
-       | paper_body GEOMETRIC REAL     { $$->geometric_ = $3; }
+       | paper_body UNITSPACE dim ';'  { $$->whole_width = $3; }
+       | paper_body GEOMETRIC REAL ';' { $$->geometric_ = $3; }
        | paper_body error {
 
        }
@@ -429,11 +429,11 @@ midi_block:
 midi_body: { 
                $$ = new Midi_def; 
        }
-       | midi_body OUTPUT STRING       { 
+       | midi_body OUTPUT STRING ';'   { 
                $$->outfile_str_ = *$3; 
                delete $3; 
        }
-       | midi_body TEMPO notemode_duration ':' int {
+       | midi_body TEMPO notemode_duration ':' int ';' {
                $$->set_tempo( $3->length(), $5 );
        }
        | midi_body error {
@@ -765,9 +765,9 @@ script_definition:
        ;
 
 script_body:
-       STRING int int int int          {
+       STRING int int int int int              {
                Script_def *s = new Script_def;
-               s->set_from_input(*$1,$2, $3,$4,$5);
+               s->set_from_input(*$1,$2, $3,$4,$5, $6);
                $$  = s;
                delete $1;
        }       
@@ -785,7 +785,9 @@ script_req:
 
 gen_script_def:
        text_def        { $$ = $1; }
-       | mudela_script 
+       | mudela_script { $$ = $1; 
+               $$-> set_spot( THIS->here_input() );
+       }
        ;
 
 text_def:
index 90dccee14f0863ecdb220708582950efba8bc51c..4d60d50fb5a935f5a8fdff29e6f10ac2ca6357d8 100644 (file)
 #include "score-elem.hh"
 #include "input-register.hh"
 
+Register_group_register::~Register_group_register()
+{
+    assert(removable_b());
+}
+
+void
+Register_group_register::check_removal()
+{
+    for (int i =0; i < group_l_arr_.size(); ) {
+       group_l_arr_[i]->check_removal();
+       if (group_l_arr_[i]->removable_b())
+           terminate_register(group_l_arr_[i]);
+       else 
+           i++;
+    }
+    
+}
+
+bool
+Register_group_register::removable_b()const
+{
+    return !iterator_count_&& !group_l_arr_.size() ;
+}
 
 Register_group_register::Register_group_register()
 {
     ireg_l_ =0;
+    iterator_count_ =0;
 }
 
 void
@@ -131,8 +155,10 @@ Register_group_register::remove_register_p(Request_register*reg_l)
 void
 Register_group_register::terminate_register(Request_register*r_l)
 {
+    mtor << "Removing " << r_l->name() << " at " << get_staff_info().when() << "\n";
+    r_l->do_removal_processing();
     Request_register * reg_p =remove_register_p(r_l);
-    reg_p->do_removal_processing();
+    
     delete reg_p;
 }
 
@@ -217,7 +243,6 @@ Register_group_register::do_announces()
  
     for (int j =0; j < announce_info_arr_.size(); j++){
        Score_elem_info info = announce_info_arr_[j];
-       mtor << "Announcing " << info.elem_l_->name()<<"\n";
        
        if (!info.req_l_)
            info.req_l_ = &dummy_req;
index 7d219dc95c01a9ad28be815e9f3a5a007749e308..e3b7807f6dd81623c71cd679bc8586ea9957a272 100644 (file)
@@ -152,3 +152,9 @@ Rest_collision::do_substitute_dependency(Score_elem*o,Score_elem*n)
     rest_l_arr_.substitute((Rest_column*)o_l,(Rest_column*)n_l);
     ncol_l_arr_.substitute((Note_column*)o_l,(Note_column*)n_l);
 }
+
+Rest_collision::Rest_collision()
+{
+    transparent_b_ = true;
+    empty_b_ = true;
+}
index df4bd988463399016876042003a0eb2b9f8cdbd8..219b83307b5246129e98f8365a1469eedd30a713 100644 (file)
@@ -18,6 +18,7 @@ IMPLEMENT_IS_TYPE_B1(Rest_column,Item);
 Rest_column::Rest_column()
 {
     dir_i_ = 0;
+    stem_l_ = 0;
 }
     
 void
@@ -31,6 +32,7 @@ void
 Rest_column::add(Stem*stem_l)
 {
     stem_l_ = stem_l;
+    add_dependency(stem_l);
 //    add_support(stem_l);
 }
 
@@ -46,12 +48,17 @@ void
 Rest_column::do_substitute_dependency(Score_elem*o,Score_elem*n)
 {
     Script_column::do_substitute_dependency(o,n);
-    if (o->name() == Note_head::static_name()) {
+    if (o == stem_l_)
+       stem_l_ = n? (Stem*)n->item() :0;
+    
+    if (o->is_type_b( Note_head::static_name()) ) 
        head_l_arr_.substitute( (Note_head*)o->item(), 
                                (n)? (Note_head*)n->item() : 0);
-    }
 }
 
+/*
+  Are you sure. Horizontal_vertical_group_item::translate_y could handle this
+ */
 void
 Rest_column::translate_y(Real dy_f)
 {
index 74af8c27bb6afcf4be2e6ee561d8a81bf39b95d8..3b118dbb21a9fdc0d106d2c8fdc8195a4eaec1ef 100644 (file)
@@ -11,9 +11,9 @@
 #include "score-align-reg.hh"
 #include "item.hh"
 
-Score_align_register::Score_align_register(const char *nm)
+Score_align_register::Score_align_register()
 {
-    type_ch_C_ = nm;
+    type_ch_C_ = 0;
     priority_i_ =0;
     align_p_=0;
 }
@@ -31,6 +31,7 @@ void
 Score_align_register::acknowledge_element(Score_elem_info inf)
 {
     if (inf.elem_l_->name() == type_ch_C_ ) {
+       
        if (! align_p_ ) {
            align_p_ = new Horizontal_group_item;
            announce_element(Score_elem_info(align_p_,0));
index 526b9a711fd90ae97cc24c299207f144eab03597..bde475795c7105b07ba1e476db30688a8c4fe446 100644 (file)
@@ -17,7 +17,8 @@ class C ## _align_register : public Score_align_register              \
 {                                                                      \
 public:                                                                        \
     NAME_MEMBERS();                                                    \
-    C ## _align_register() : Score_align_register(T::static_name()) {\
+    C ## _align_register() : Score_align_register() \
+    { type_ch_C_ = T::static_name();\
     priority_i_ = p;}  \
 };                                                                     \
 IMPLEMENT_STATIC_NAME(C ## _align_register)    ;                       \
index 868dc3e176340ffec850aa1e5782fc8ed20f0e5a..f22a67d004043663468c030f2e19df8d4d614407 100644 (file)
@@ -50,12 +50,21 @@ Score_elem::TeX_string() const
     assert( status > POSTCALCED);
     if (transparent_b_ )
        return "";
-    String s("\\placebox{%}{%}{%}");
+    String s( "\\placebox{%}{%}{%}");
     Array<String> a;
     a.push(print_dimen(offset_.y));
     a.push(print_dimen(offset_.x));
-    a.push( output->TeX_string());
-    return substitute_args(s, a);
+    String t = output->TeX_string();
+    if (t == "")
+       return t;
+
+    a.push( t);
+    String r;
+    if (check_debug)
+       r = String("\n%start: ") + name() + "\n";
+    r += substitute_args(s, a);;
+    return r;
+    
 }
 
 
@@ -165,7 +174,11 @@ Score_elem::print()const
 #ifndef NPRINT
     mtor << name() << "{\n";
     mtor << "dets: " << dependent_size() << "dependencies: " << 
-       dependency_size() << "\n";
+       dependency_size();
+    if (offset_.x || offset_.y)
+       mtor << "offset (" << offset_.x << ", " << offset_.y <<")";
+    mtor << "\n";
+
     do_print();
     if (output)
        output->print();
@@ -341,7 +354,7 @@ Score_elem::line_l()const
     return 0;
 }
 
-/********************
+/*
   DEPENDENCIES
  */
 
index f2423f946180853317b1f768ea830a7317adf11b..748c018ffe3ad20d5327d3b75a6183069cfc42e0 100644 (file)
@@ -6,7 +6,7 @@
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
 
-
+#include "bar.hh"
 #include "break-align-item.hh"
 #include "score-halign-reg.hh"
 #include "score-align-reg.hh"
@@ -33,12 +33,16 @@ Score_horizontal_align_register::acknowledge_element(Score_elem_info i)
     if (reg->is_type_b( 
        Score_align_register::static_name()) )
     {
+       Score_align_register * align_reg_l = (Score_align_register*) reg;
        if (!halign_p_) {
            halign_p_ = new Break_align_item;
            announce_element(Score_elem_info(halign_p_,0));
        }
-       halign_p_->add(i.elem_l_->item(), 
-                      ((Score_align_register*)reg)->priority_i_  );
+       Item * it = i.elem_l_->item();
+       if (align_reg_l->type_ch_C_ == Bar::static_name())
+           halign_p_->center_l_ = it;
+       
+       halign_p_->add(it, align_reg_l->priority_i_);
     }
 }
 IMPLEMENT_STATIC_NAME(Score_horizontal_align_register);
index 47d5a70f2d53a2ad1f7d28722f4e8c2f1c393677..b83c1e3872a17be58f3f3663632d263c6d46d286 100644 (file)
@@ -30,7 +30,6 @@ Score_register::set_score(Score *s)
     score_l_ = s;
     scoreline_l_ = s->pscore_p_->super_elem_l_->line_of_score_l_;
     last_mom_ = score_l_->music_p_->time_int().max();
-    extra_mom_pq_.insert(last_mom_);
 }
 
 Score_register::Score_register()
index 5463e829389d0fb828c1b9c88447a53ae3ac75d5..3d7ad33de0abcb4b3d3e7be56bb0cf0d187e2b77 100644 (file)
@@ -48,9 +48,10 @@ Score::setup_music()
 
     while ( iter->ok() || score_reg->extra_mom_pq_.size() ) {
        Moment w = INFTY;
-       if (iter->ok() ) 
+       if (iter->ok() ) {
            w = iter->next_moment();
-       
+           iter->print();
+       }
        if (score_reg->extra_mom_pq_.size() && 
            score_reg->extra_mom_pq_.front() <= w)
            
@@ -74,8 +75,10 @@ Score::setup_music()
        score_reg->process_requests();
        score_reg->do_announces();
        score_reg->pre_move_processing();
+       score_reg->check_removal();
     }
     delete iter;
+    score_reg->check_removal();
     score_reg->do_removal_processing();
     delete score_reg;
 }
index ef676502b062d4a79e05079407d01db0cd4b3be8..adf27dc7a606b296d22c279a02b41a2e5886faf9 100644 (file)
@@ -29,6 +29,14 @@ Script_column::do_print()const
 {
     mtor << "scripts: " << script_l_arr_.size() << '\n'; 
 }
+static int
+idx(bool inside, int dir)
+{
+    int j = (dir+1);
+    if ( !inside )
+       j ++;
+    return j;
+}
 
 void
 Script_column::do_pre_processing()
@@ -36,15 +44,11 @@ Script_column::do_pre_processing()
     if (!script_l_arr_.size()) 
        return;
     
-    /* up+outside, up+inside, down+outside, down+inside */
+    /* up+inside, up+outside, down+inside, down+outside */
     Array<Script*> placed_l_arr_a[4];
     for (int i=0; i < script_l_arr_.size(); i++) {
        Script*s_l = script_l_arr_[i];
-       int j = (s_l->dir_i_ >0) ? 0 : 2;
-       if (!s_l->inside_staff_b_) 
-           j ++;
-       
-       placed_l_arr_a[j].push(s_l);
+       placed_l_arr_a[idx( s_l->inside_staff_b_ , s_l->dir_i_) ].push(s_l);
     }
     
     for (int j =0; j <4; j++) {
@@ -57,10 +61,11 @@ Script_column::do_pre_processing()
            for (int i=0; i  < support_l_arr_.size(); i++)
                placed_l_arr_a[j][0]->add_support( support_l_arr_[i]);
     }
+    
     Item * support_l=0;
     int j = 0;
     for (; j < 2; j++ ) {
-       for (int i=1; i < placed_l_arr_a[j].size(); i++) {
+       for (int i=0; i < placed_l_arr_a[j].size(); i++) {
            if (support_l)
                placed_l_arr_a[j][i]->add_support(support_l);
            support_l = placed_l_arr_a[j][i];
@@ -68,7 +73,7 @@ Script_column::do_pre_processing()
     }
     support_l = 0;
     for (; j < 4; j++ ) {
-       for (int i=1; i < placed_l_arr_a[j].size(); i++) {
+       for (int i=0; i < placed_l_arr_a[j].size(); i++) {
            if (support_l)
                placed_l_arr_a[j][i]->add_support(support_l);
            support_l = placed_l_arr_a[j][i];
index b07bbc71a8f05c726ca4b916db077d7cc367d70b..38b2608f25bf149ab604735903f7275ddf699f45 100644 (file)
@@ -15,7 +15,7 @@
 Script_def::Script_def()
 {
     inside_staff_b_ = false;
-    symidx = "unknown" ;
+    symidx_str_ = "unknown" ;
     rel_stem_dir_i_ =0;
     staff_dir_i_ = -1;
     invertsym_b_ = 0;
@@ -23,29 +23,31 @@ Script_def::Script_def()
 }
 
 void
-Script_def::set_from_input(String idx,  bool follow, int stem, int staff ,bool invert)
+Script_def::set_from_input(String idx,  bool follow, int stem, int staff ,bool invert, int priority_i)
 {
     inside_staff_b_ = follow;
-    symidx = idx ;
+    symidx_str_ = idx ;
     rel_stem_dir_i_ =stem;
     staff_dir_i_ = staff;
     invertsym_b_ = invert;
-    priority_i_ =0;
+    priority_i_ =priority_i;
 }
 
 
 void
-Script_def::print() const
+Script_def::do_print() const
 {
-    mtor << "Script_def{ idx: " << symidx 
+#ifndef NPRINT
+    mtor << "Script_def{ idx: " << symidx_str_ 
         << " direction, stem: " << rel_stem_dir_i_ << " staff : " << staff_dir_i_ << "}\n";
+#endif
 }
 
 bool
 Script_def::do_equal_b(General_script_def const &g)const 
 {
     Script_def const & c = (Script_def const&) g;
-    return !(symidx == c.symidx &&
+    return (symidx_str_ == c.symidx_str_ &&
             rel_stem_dir_i_ == c.rel_stem_dir_i_&&
             staff_dir_i_ == c.staff_dir_i_&&
             invertsym_b_ == c.invertsym_b_);
@@ -76,7 +78,7 @@ Script_def::get_atom(Paper_def *p , int d)const
     if (invertsym_b_&& d < 0) 
        preidx_str = "-";
 
-    return p->lookup_l()->script(preidx_str + symidx);
+    return p->lookup_l()->script(preidx_str + symidx_str_);
 }
 
 IMPLEMENT_STATIC_NAME(Script_def);
index 9eed43434ea1de9c3e32826b772720fd6225a800..90bf7ce5848339bae7a4d98b5d9eb0cef330f69a 100644 (file)
@@ -36,7 +36,9 @@ Script_register::do_process_requests()
 {
     for (int i=0; i < script_req_l_arr_.size(); i++){
        Script_req* l=script_req_l_arr_[i];
-       Script *p =new Script( l);
+       Script *p =new Script;
+       p->dir_i_ = l->dir_i_;
+       p->specs_l_ = l->scriptdef_p_;
        script_p_arr_.push(p);
        announce_element(Score_elem_info(p, l));
     }
index 2a39c57a0dd0e9d8786033e13b52de5a4cc359aa..bf013593992603eda50f878399f4c6177a05b572 100644 (file)
@@ -5,7 +5,7 @@
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
-
+#include "script-def.hh"
 #include "musical-request.hh"
 #include "paper-def.hh"
 #include "script.hh"
 #include "molecule.hh"
 #include "lookup.hh"
 
+void
+Script::do_print() const
+{
+#ifndef NPRINT
+    specs_l_->print();
+#endif
+}
 
+void
+Script::do_substitute_dependency(Score_elem*o,Score_elem*n)
+{
+    Staff_side::do_substitute_dependency(o,n);
+    if (o == stem_l_) {
+       stem_l_ = n ? (Stem*)n->item() : 0;
+    }
+}
 
 void
 Script::set_stem(Stem*st_l)
@@ -23,23 +38,30 @@ Script::set_stem(Stem*st_l)
 }
 
 
-Script::Script(Script_req* rq)
+Script::Script()
 {    
-    specs_l_ = rq->scriptdef_p_;
-    inside_staff_b_ = specs_l_->inside_b();
+    specs_l_ = 0;
+    inside_staff_b_ = false;
     stem_l_ = 0;
     pos_i_ = 0;
-    dir_i_ =rq->dir_i_;
+    dir_i_ =  0;
 }
+
 void
 Script::set_default_dir()
 {
     int s_i=specs_l_->rel_stem_dir_i();
-    if (s_i && stem_l_)
-       dir_i_ = stem_l_->dir_i_ * s_i;
-    else {
+    if (s_i) { 
+       if(stem_l_)
+           dir_i_ = stem_l_->dir_i_ * s_i;
+       else{ 
+           specs_l_->warning("Script needs stem direction");
+           dir_i_ = -1;
+       }
+    } else {
        dir_i_ =specs_l_->staff_dir_i();
     }
+    assert(dir_i_);
 }
 
 void
@@ -59,7 +81,7 @@ Script::do_pre_processing()
 {
     if (!dir_i_)
        set_default_dir();
-
+    inside_staff_b_ = specs_l_->inside_b();
 }
 
 void
index 2c5e1848c8fad807a6e1f0e04f53883b591fe5ee..e7d8ccebf6cec936aa5c32704a256040e6b75bd1 100644 (file)
@@ -17,6 +17,7 @@ void
 Staff_side::set_staffsym(Staff_symbol* s_l)
 {
     staff_sym_l_ = s_l;
+    add_dependency( s_l );
 }
 
 Staff_side::Staff_side()
@@ -89,12 +90,15 @@ int
 Staff_side::get_position_i(Interval sym_dim) const
 { 
     int i= get_position_i();
-    return i+ int(rint(- sym_dim[-dir_i_] / paper()->internote_f()));
+    if (dir_i_)
+       return i+ int(rint(- sym_dim[-dir_i_] / paper()->internote_f()));
+    else
+       return i;
 }
 
 
 void
-Staff_side::do_substitute_dependency(Score_elem*o, Score_elem*n )
+Staff_side::do_substitute_dependency(Score_elem*o, Score_elem*n)
 { 
     int i;
     while ((i=support_l_arr_.find_i(o) ) >=0)
index b77811100575a6f5dd6294c38bdbfedca1f5f711..3ba4394cc261ad7a2be4df4275c569ab47143b42 100644 (file)
@@ -40,8 +40,7 @@ Symtable::lookup(String s) const
        return (*this)[s];
     else {
        warning( "Symtable `" + id_str+ "\': unknown symbol `" +s+"'\n");
-       Symbol sy;                      // unreachable
-       sy.tex = "";
+       Symbol sy;      
        return sy;
     }
 }
index dc7ed6f58a2bd174fc84405ffca96c083e5ec9ad..4d6c641436a4e78c073ba72b73c42a200fcd7934 100644 (file)
@@ -24,12 +24,20 @@ Text_def::width(Paper_def * p) const
     return i;
 }
 
+void
+Text_def::do_print() const
+{
+#ifndef NPRINT
+    mtor << "align " <<align_i_ << " `" << text_str_ << "'";
+#endif
+}
 
 Text_def::Text_def()
 {   
     align_i_ = 1;                      // right
     style_str_ = "roman";
 }
+
 bool
 Text_def::do_equal_b(Text_def const &def)const
 {
@@ -49,5 +57,6 @@ Text_def::print() const
     mtor << "Text `" << text_str_ << "\', style " <<
        style_str_ << "align " << align_i_ << '\n';
 }
+
 IMPLEMENT_STATIC_NAME(Text_def);
 IMPLEMENT_IS_TYPE_B1(Text_def,General_script_def);
index 99c35d276b4477ad4efd184b425e7b0790af0f1b..ed793eeab8d2cd36d394d3c9540eaf6e5937892c 100644 (file)
@@ -2,6 +2,8 @@
   text-reg.cc -- implement Text_register
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+  Obsolete.
 */
 #include "note-column.hh"
 #include "musical-request.hh"
index 2b40f00e8ec6725ef0572ca32f0843504dcd8be1..10bbb0b0fa5db74ac8d88042a85ea2b5420accb4 100644 (file)
 void
 Text_spanner::set_support(Directional_spanner*d)
 {
-    if (support)
-       remove_dependency(support);
+    if (support_span_l_)
+       remove_dependency(support_span_l_);
     
-    support =d;
+    support_span_l_ =d;
     add_dependency(d);
 }
 
 Text_spanner::Text_spanner()
 {
     spec_p_ = 0;
-    support = 0;
+    support_span_l_ = 0;
 }
 
 IMPLEMENT_STATIC_NAME(Text_spanner);
@@ -43,8 +43,8 @@ Text_spanner::do_print() const
 void
 Text_spanner::do_post_processing()
 {
-    text_off_ = support->center() +
-       Offset(0,support->dir_i_ * paper()->internote_f() * 4); // todo
+    text_off_ = support_span_l_->center() +
+       Offset(0,support_span_l_->dir_i_ * paper()->internote_f() * 4); // todo
 }
 
 Molecule*
@@ -61,8 +61,8 @@ Text_spanner::brew_molecule_p() const
 void
 Text_spanner::do_pre_processing()
 {
-    right_col_l_ = support->right_col_l_;
-    left_col_l_ = support->left_col_l_;
+    right_col_l_ = support_span_l_->right_col_l_;
+    left_col_l_ = support_span_l_->left_col_l_;
     assert(left_col_l_ && right_col_l_);
 }
 
@@ -75,9 +75,8 @@ Text_spanner::height()const
 void
 Text_spanner::do_substitute_dependency(Score_elem* o, Score_elem*n)
 {
-    Directional_spanner * old = (Directional_spanner*)o->spanner();
-    if (support == old)
-       support = (Directional_spanner*) n->spanner();
+    if (support_span_l_ == o) 
+       support_span_l_ = (Directional_spanner*) (n?n->spanner():0);
 }
 
 
@@ -85,3 +84,11 @@ Text_spanner::~Text_spanner()
 {
     delete spec_p_;
 }
+
+Text_spanner::Text_spanner(Text_spanner const&s)
+    : Spanner( s)
+{
+    support_span_l_ = s.support_span_l_;
+    spec_p_ = s.spec_p_? s.spec_p_->clone() : 0;
+    text_off_ = s.text_off_;
+}
index 5541888b3c316e97e38c79527d47dbe76279cb86..725c02c277d1ce2125f21c5077f28afc8da2616a 100644 (file)
@@ -21,6 +21,7 @@ Tie_register::Tie_register()
     end_mom_ = -1;
     melodic_req_l_ = 0;
     end_melodic_req_l_ =0;
+    dir_i_ = 0;
 }
 
 void
index 4ff58eef6fc04112f1438a31f21949d7d436d5e0..2aecf5d3fc295c4684d42998d44d09c75f3871b5 100644 (file)
@@ -31,7 +31,7 @@ void
 Vertical_align_elem::do_post_processing()
 {
     Array<Interval> dims;
-    for (int i=elem_l_arr_.size(); i--; ) {
+    for (int i=0; i < elem_l_arr_.size(); i++ ) {
        Interval y = elem_l_arr_[i]->height() ;
        if (y.empty_b())
            y = Interval(0,0);
index 06757b7b74940874e3532585beb2d2fa7b2c6902..b2fdd6cd947b25aff0e3e52ccc006f82f62948ac 100644 (file)
@@ -21,7 +21,6 @@
 Voice_group_registers::Voice_group_registers()
 {
     dir_i_ =0;
-    termination_mom_ = INFTY; 
 }
 
 bool
@@ -50,17 +49,6 @@ Voice_group_registers::do_print() const
 #endif
 }
 
-void
-Voice_group_registers::do_post_move_processing()
-{
-    if ( get_staff_info().time_C_ ->when_ > termination_mom_ ){
-       mtor << "Terminating voice_group\n";
-       daddy_reg_l_->terminate_register(this);
-       return ;
-    }
-    Register_group_register::do_post_move_processing();
-}
-
 
 
 Scalar
index 641e8d6da1d4d4c86092ff0c14ea9250d03f6b29..cc141ffdbadfd0f84ea3f6e51e72516b7dfbbad2 100644 (file)
 #include "register.hh"
 #include "debug.hh"
 
-Voice_registers::Voice_registers()
-{
-}
-
-void
-Voice_registers::do_print() const
-{
-#ifndef NPRINT
-    Register_group_register::do_print();
-#endif
-}
 
 ADD_THIS_REGISTER(Voice_registers);
 IMPLEMENT_IS_TYPE_B1(Voice_registers, Register_group_register);
index 2ba9980153c323fd7d8e5cd02371b960bd03169e..13303f5d72a0afb8012764f57a0b4a319f44d0d3 100644 (file)
@@ -2,8 +2,8 @@
 
 Begin3
 Title: LilyPond
-Version: 0.0.68pre
-Entered-date: 06/26/97
+Version: 0.0.70pre
+Entered-date: 06/29/97
 Description: LilyPond is a program which converts a music-script (mudela) into
 TeX output, or MIDI to produce multi-staff scores. Features include multiple
 meters, clefs, keys, lyrics, versatile input-language, cadenzas
@@ -13,7 +13,7 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: pcnov095.win.tue.nl /pub/lilypond/  
-       300k lilypond-0.0.68pre.tar.gz
+       300k lilypond-0.0.70pre.tar.gz
 Alternate-site: 
 Original-site: 
 Platform: unix/win32, GNU C++
index 85123c76eb1c271d3a3feb729b836faa74aef773..ec4ab4ea4b153e7c26cdf0f7a086ba07a1411de5 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.0.68pre
+Version: 0.0.70pre
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.68pre.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.70pre.tar.gz
 Summary: A preprocessor to make TeX typeset music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
@@ -27,7 +27,7 @@ rm -rf $RPM_BUILD_ROOT
 strip lily/out/lilypond mi2mu/out/mi2mu
 make prefix="$RPM_BUILD_ROOT/usr" install
 %files
-%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/error.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilyliterature.text Documentation/out/lilypond.text Documentation/out/mi2mu.text Documentation/out/mudela.text Documentation/out/other-packages.text input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/error.ly input/header.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/slurs.ly input/standchen.ly input/standchen.tex input/toccata-fuga-E.ly input/twinkle.ly input/wohltemperirt.ly Documentation/lelie_logo.gif
+%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/error.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilyliterature.text Documentation/out/lilypond.text Documentation/out/mi2mu.text Documentation/out/mudela.text Documentation/out/other-packages.text input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/error.ly input/header.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/slurs.ly input/standchen.ly input/standchen.tex input/toccata-fuga-E.ly input/twinkle.ly input/wohltemperirt.ly Documentation/lelie_logo.gif
 /usr/bin/convert-mudela
 /usr/bin/lilypond
 /usr/lib/libflower.so
index e09ced2737790a1173a5464d5eaf260792df208a..c67dee6551d12b58178a83f3bc1d13152f2fd82a 100644 (file)
@@ -1,7 +1,8 @@
 %
 % A tex file to help determine dims.
 %
-\font\musicfont=opus20
+
+\font\musicfont=musix16
 \font\slurfont=xslu16
 \def\thefont{\musicfont}
 
index 9e71e8ddda2c9573048601483afcfb780a3d0476..299ff2edd8550a40fede8932c938e75cd5d4e246 100644 (file)
@@ -21,6 +21,8 @@
 \def\mdef#1#2{\def#1{\mchar{#2}}}
 \def\mchar#1{\musicfnt\char#1}
 \def\rationalmultiply#1*#2/#3{\multiply #1 by #2 \divide #1 by #3}
+
+
 \def\maccentraise#1#2{\dimen0=\noteheight
         \rationalmultiply\dimen0*#2%
         \raise\dimen0\hbox{#1}}
index 91eb34260ad258f3820791b74a2a9175c2b55cab..1622b990cbc639e8053d73e9aed59cde329ceb70 100644 (file)
@@ -39,6 +39,9 @@
 \mdef\wholeball{'011}
 \mdef\halfrest{'074}
 \mdef\wholerest{'075}
+%% hmm
+\mdef\outsidehalfrest{10}
+\mdef\outsidewholerest{11}
 \mdef\quartrest{62}
 \mdef\eighthrest{63}
 \mdef\sixteenthrest{64}
 \maccentdef\sforzato{30}{-3/2}
 \maccentdef\marcato{20}{-1/1}
 \maccentdef\imarcato{21}{1/1}
-\maccentdef\staccato{24}{-1/3}
-\maccentdef\istaccato{25}{1/3}
+\maccentdef\staccato{24}{-1/1}
+\maccentdef\istaccato{25}{1/1}
 \maccentdef\staccatissimo{28}{-5/5}
 \maccentdef\istaccatissimo{29}{2/5}
 \maccentdef\portato{18}{-6/5}