]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.0.60 release/0.0.60
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 6 May 1997 00:23:32 +0000 (02:23 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 6 May 1997 00:23:32 +0000 (02:23 +0200)
44 files changed:
.dstreamrc
.version
AUTHORS.text
Documentation/AUTHORS.pod
Documentation/examples.pod [deleted file]
Documentation/lilypond.pod
INSTALL.text
NEWS
TODO
bin/lily.efence [changed mode: 0644->0755]
bin/make_website
init/table_sixteen.ini
input/collisions.ly
input/kortjakje.ly
input/rhythm.ly
input/scsii-menuetto.ly
input/slurs.ly
input/standchen.ly
lily/.version
lily/bar.cc
lily/directional-spanner.cc
lily/include/bow.hh
lily/include/directional-spanner.hh
lily/include/register-group.hh
lily/include/register.hh
lily/include/slur-reg.hh
lily/include/tie-reg.hh
lily/include/tie.hh
lily/include/voice-group-regs.hh
lily/p-score.cc
lily/paper-def.cc
lily/register-group.cc
lily/register.cc
lily/slur-reg.cc
lily/slur.cc
lily/staff-regs.cc
lily/tie-reg.cc
lily/tie.cc
lily/voice-group-regs.cc
make/lilypond.lsm
make/lilypond.spec
tex/lilyponddefs.tex
tex/test.tex [deleted file]
tex/titledefs.tex

index 16073701045417e98ef7d415aaa1339a6b8b62da..7fd7b97e0a5054e9ab96769883fd89e9d72860ad 100644 (file)
@@ -18,8 +18,8 @@ Parser                        1
 InitDeclarations       1
 Declarations           1
 # FlexLexer debug
-InitLexer              0
-Lexer                  0
+InitLexer              1
+Lexer                  1
 
 parse_duration         1
 parse_pitchmod         1
index 7db091cf9cf3db0d51ee3f8ede1c291e641f29c8..d3c588005d21426925ad948c4465fc6fbf2782e8 100644 (file)
--- a/.version
+++ b/.version
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 0
-TOPLEVEL_PATCH_LEVEL = 59
+TOPLEVEL_PATCH_LEVEL = 60
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
index 4658153098f86208f7871fd7c77f30e9a6dfc9c2..e409a65d2322c5b36f63ad996566038666066ab1 100644 (file)
@@ -16,9 +16,10 @@ D\bD\bD\bDE\bE\bE\bES\bS\bS\bSC\bC\bC\bCR\bR\bR\bRI\bI\bI\bIP\bP\bP\bPT\bT\bT\bTI\bI\bI\bIO\bO\bO\bON\bN\bN\bN
 
        +\bo   Jan Nieuwenhuizen <jan@digicash.com>
 
-           lily/midi-*, mi2mu/*, flower/string.cc, make/*.make,
-           Documentation/mudela.pod lib/*source-file*,
-           lib/duration.cc, lib/source, flower/*list*
+           lily/midi-*, mi2mu/*, parts flower/string*.cc,
+           make/*.make, parts of Documentation/mudela.pod,
+           lib/*source-file*, lib/duration.cc, lib/source,
+           flower/*{list,cursor}*,
 
            and corresponding header files.
 
@@ -60,7 +61,6 @@ D\bD\bD\bDE\bE\bE\bES\bS\bS\bSC\bC\bC\bCR\bR\bR\bRI\bI\bI\bIP\bP\bP\bPT\bT\bT\bTI\bI\bI\bIO\bO\bO\bON\bN\bN\bN
 
 
 
-
-19/Apr/97                LilyPond 0.0.57                        1
+6/May/97                 LilyPond 0.0.60                        1
 
 
index c11a911b6c97475f6a49f3d694159b51699e81d0..c7bc53d52d31b364ca1e0096cf30dca5dcd2aeac 100644 (file)
@@ -18,8 +18,9 @@ Main author, all files files except mentioned below
 
 Jan Nieuwenhuizen <jan@digicash.com>
 
-lily/midi-*, mi2mu/*, flower/string.cc, make/*.make, Documentation/mudela.pod
-lib/*source-file*, lib/duration.cc, lib/source, flower/*list*
+lily/midi-*, mi2mu/*, parts flower/string*.cc, make/*.make,
+parts of Documentation/mudela.pod, lib/*source-file*, lib/duration.cc,
+lib/source, flower/*{list,cursor}*,  
 
 and corresponding header files.
 
diff --git a/Documentation/examples.pod b/Documentation/examples.pod
deleted file mode 100644 (file)
index 16e79eb..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-=head1 NAME
-
-LilyExamples - GNU LilyPond example input
-
-=head1 DESCRIPTION
-
-This file documents the example inputfiles of GNU LilyPond. Information of
-each file: 
-
-       title
-       description (composer, piece)
-       tested GNU LilyPond features.
-       copyright info
-
-Most music distributed with GNU LilyPond was composed a long time ago, and
-do not have copyrights. Any exceptions are mentioned here.
-
-=head2 F<collisions.ly>
-
-Random counterpoint to demonstrate features.
-
-Features: \multivoice, collision resolution.
-
-
-=head2 F<coriolan-alto.ly>
-
-Ludwig van Beethoven (1770-1792), Opus 62 Ouverture zu Collins
-Trauerspiel "Coriolan"
-
-a 5 bar fragment of the alto part
-
-Features: pushgroup, popgroup.
-
-=head2 F<error.ly>
-
-Features: Error messages, context errors.
-
-=head2 F<fugue1.midi.ly>
-
-
-=head2 F<kortjakje.ly>
-
-Ah, vous dirais-je, maman" (Mozart, KV 265), bare 
-bones version.
-
-Features: example with lots of newbie comment.
-
-Copyright: public domain
-
-=head2 F<midi.ly>
-
-Features: midi output.
-
-=head2 F<rhythm.ly>
-
-Features: auto beams, multiple parralel meters.
-
-=head2 F<scales.ly>
-
-Features: plets, accents, beam steepnesses, dynamics, crescendi,
-\octave command, \transpose, multiple scripts
-
-=head2 F<scsii-menuetto.ly>
-
-J. S. Bach, Solo Cello Suites. Suite II part v Menuetto I. BWV ?
-
-Features: breaking algorithm, chords, multivoice, accents
-
-=head2 F<standchen.ly> 
-
-St\"andchen (Serenade) "Leise flehen meine
-Lieder" D.957 No.4 Franz Schubert (1797-1828)
-
-Features: multivoice, accents, lyrics, chords, piano music
-
-=head2 F<twinkle.ly>
-
-Twinkle twinkle little star in three languages.
-
-Features: lyrics
-
-=head2 F<wohltemperirt.ly>
-
-JS Bach, Das Wohltemperirtes Clavier I, Fuga II (c-minor), BWV ?
-
-Features: 
-
-Copyright: public domain
index 329fe3b5b4d83bd6d1c79f655f9f1e4794eec3df..1de734b053cdc47d000623450a37a0cf74b36163 100644 (file)
@@ -112,8 +112,7 @@ clef changes, meter changes, cadenza-mode, key changes, repeat bars
 
 =back
 
-=head1
-DISCLAIMER & COPYING POLICY
+=head1 DISCLAIMER & COPYING POLICY
 
 GNU LilyPond is copyright 1996,97 by its authors. GNU LilyPond is
 distributed under the terms of the GNU General Public
@@ -153,32 +152,28 @@ At this time, GNU LilyPond output looks nice, but is not of production
 quality. If you're not discouraged; this is what I type in my xterm:
 
        lilypond someinput.ly
-       tex test
+       tex lelie.tex
        xdvi test&
 
 This is what the output looks like over here:
 
-       hw:~/musix/spacer$ lilypond input/kortjakje.ly
-       GNU LilyPond 0.0.52 #1/FlowerLib 1.1.12 #1
-       Parsing ... [/home/hw/share/lilypond/init//symbol.ini[
-               <lots of stuff deleted>
-       ][./input/kortjakje.ly]
+       hw:~/musix/spacer$ GNU LilyPond 0.0.60 #8/FlowerLib 1.1.14 #2
+       Parsing ... [./input/kortjakje.ly[lots of stuff]]
+       Setting up requests...Processing requests ...[8][16][24][25]
+       Preprocessing elements... 
+       Calculating column positions ... [3][7][12][16][20][25]
+       Postprocessing elements...
+       TeX output to lelie.tex ...
 
-       Setting up music ...Processing music ...[8][16][24][25]
-       Preprocessing ... 
-       Calculating column positions ... [3][9][14][18][22][25]
-       Postprocessing ...
-       TeX output to lelie.out ...
-
-       hw:~/musix/spacer$ tex test
+       hw:~/musix/spacer$ tex lelie
        This is TeX, Version 3.14159 (C version 6.1)
-       (/home/hw/lib/texmf/tex/lilypond/test.tex
-       Hyphenation patterns for english, dutch, loaded.
-       (/home/hw/lib/texmf/tex/lilypond/lilyponddefs.tex) (lelie.out) [1] )
-       Output written on test.dvi (1 page, 9180 bytes).
-       Transcript written on test.log.
+       (lelie.tex
+       Hyphenation patterns for english, dutch, german, loaded.
+       (/home/hw/lib/texmf/tex/lilypond/lilyponddefs.tex) [1] )
+       Output written on lelie.dvi (1 page, 8944 bytes).
+       Transcript written on lelie.log.
 
-       hw:~/musix/spacer$ xdvi test&
+       hw:~/musix/spacer$ xdvi lelie&
        [1] 855
 
 Check out the input files, some of them have comments
index 20bcd2e7210c4e9401e7126d25d7438c49aa4bc0..ac5a76790ac49e2173fc286d836462138fc8d0a2 100644 (file)
@@ -61,7 +61,7 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNF\bF\bF\bFI\bI\bI\bIG\bG\bG\bGU\bU\bU\bUR\bR\bR\bRI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG a\b
 
 
 
-2/May/97                 LilyPond 0.0.58                        1
+2/May/97                 LilyPond 0.0.60                        1
 
 
 
@@ -127,7 +127,7 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
 
-2/May/97                 LilyPond 0.0.58                        2
+2/May/97                 LilyPond 0.0.60                        2
 
 
 
@@ -193,7 +193,7 @@ R\bR\bR\bRU\bU\bU\bUN\bN\bN\bNN\bN\bN\bNI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
 
 
 
-2/May/97                 LilyPond 0.0.58                        3
+2/May/97                 LilyPond 0.0.60                        3
 
 
 
@@ -259,6 +259,6 @@ A\bA\bA\bAU\bU\bU\bUT\bT\bT\bTH\bH\bH\bHO\bO\bO\bOR\bR\bR\bRS\bS\bS\bS
 
 
 
-2/May/97                 LilyPond 0.0.58                        4
+2/May/97                 LilyPond 0.0.60                        4
 
 
diff --git a/NEWS b/NEWS
index f01134bef9341e74722580f024b26ddb64102725..b44d208d44035529402807ddea912eb33f5cfc45 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+pl 60
+       - Request_register::get_feature(), tie direction, Slur direction
+       - lilypond output is now directly texable. 
+       - make_website checks return status
+
+*******
+may 5
 pl 59
        - Slur now into voicegroups, and take stems into account.
        - bf: rest size in table.
diff --git a/TODO b/TODO
index ec850fd0c7c8275627931a82125acc3fd786449f..b65304f456edfd01d2ffb3ed5ef40defec1ab3fb 100644 (file)
--- a/TODO
+++ b/TODO
@@ -22,8 +22,6 @@ IMPORTANT
 
        * use own fonts/update musixtex fonts
 
-       * check return status in make_website
-
        * a Hands on tutorial [HKN]
 
 
@@ -36,6 +34,18 @@ PROJECT:
        - quiet/ignore-version options
        - logfile output
 
+
+       * elaborate Staff_side baseclass:
+        - scripts
+        - text
+        - slur start/end
+
+       * Output an output format independent (ofi) typeset file; and 
+         make ofi2 TeX, MusixTex, PostScript, Ascii... interpreters.
+       - poor man's ascii output possible?
+       - MusixTeX output possible?
+       - PostScript output (esp. Beams, Slurs, etc)
+
 PARSER
        * Duration-> Musical_duration, typedef Rational Duration?
 
@@ -46,8 +56,6 @@ ruimte van een hele maat erachter (bij unmatching staffs)
 
 Hele rusten ook in andere maatsoort dan 4/4 (en centreren in de maat)
 
-
-
 ------------------------\
 barcheck failed in lyric mode -> assert (zie barcheck.ly) (0.0.57)
 ------------------------/
@@ -249,8 +257,6 @@ FUTURE
 
        * bring Collision::do_pre_processing to haircutter
 
-       * slurs per voicegroup.
-
        * slur parts as a script
        
        * mixed fontsizes
@@ -285,9 +291,6 @@ FUTURE
 
 IDEAS
 
-       * output an intermediate format, move backend/output routines into 
-       interpreter
-
        * scoping in Lexer: do general id- assignments in mudela.
 
        ID '=' EXPR;
@@ -311,7 +314,6 @@ IDEAS
        * merge Atom and Symbol?
 
        * merge common code of Item, Atom/Molecule
-
        * Spacing_request for manually adjusting spacing
 
        * Staff_group, Score_request_register.
@@ -319,15 +321,6 @@ IDEAS
        * SHIT: meters/bars should be aligned, which is difficult if
        we get different keychanges in different staffs.
 
-       * MusixTeX output possible?
-
-       * PostScript output (esp. Beams, Slurs, etc)
-
-       * poor man's ascii output possible?
-
-       * Output an output format independent (ofi) typeset file; and 
-         make ofi2 TeX, MusixTex, PostScript, Ascii... interpreters.
-
        * caching breakpoints
 
        * #c <-> cis
@@ -337,9 +330,6 @@ IDEAS
        * used fixedpoint arithmetic for min. energy.
 
        * default convert mudela-file.ly -> mudela-file.tex
-         - move test.tex: '\include lilyponddefs' -> 
-           mudela-file.ly: '\texinclude "lilyponddefs";'
-           (junking test.tex and latex.test)
          - rename {standchen,scsii-menuetto,...}.tex
 
        * (related with above) --simple-mudela option for lily,
old mode 100644 (file)
new mode 100755 (executable)
index 9bed942..5924253
@@ -1,4 +1,4 @@
-# gdb script
-file bin/lilypond
-set environment  LD_PRELOAD libefence.so
+#!/bin/sh
+gdb --command=bin/efence.gdbinit
+
 
index a6855cbe31f396208e6e0655283b117cc900e7d0..380a5cbca15609e26dd7d05c6d48f82329bea7ea 100755 (executable)
@@ -1,5 +1,20 @@
 #!/usr/bin/perl -w
-# stuff should be generated in out directory.
+
+# TODO check ret status of various stuff
+
+use FileHandle;
+
+sub my_system
+{
+    my (@cmds) = @_;
+    foreach $cmd (@cmds) {
+       my      $ret =  ( system ($cmd))/256;
+       if ($ret) {
+           print STDERR "\nmake_website: failed on command \`$cmd\' (status $ret)\n";
+           exit 2;
+       }
+    }
+}
 
 sub set_hrefs
 {
@@ -29,14 +44,14 @@ local @examples=("wohltemperirt" ,"standchen", "scsii-menuetto", "rhythm", "coll
 sub gen_html
 {
     print "generating HTML\n";
-    system "make -kC .. html";
+    my_system "make -kC .. html";
 }
 
 sub gen_examples
 {
     print "generating examples: \n";
     foreach $a (@examples) {
-       $texfile="test";
+       $texfile="lelie";
        $tex = "tex $texfile";
        if ($a eq "standchen" || $a eq "scsii-menuetto" ) {
            $tex = "latex $a";
@@ -44,18 +59,19 @@ sub gen_examples
        }
        
        if ( ! -f "$a.ly.txt" ) {
-           system "ln $depth/input/$a.ly ./$a.ly.txt";
+           my_system "ln $depth/input/$a.ly ./$a.ly.txt";
        }
        if ( ! -f "$a.ps.gz" ) {
-           system "lilypond $a;$tex;".
-               "dvips -o $a.ps $texfile;";
+           my_system "lilypond $a;",
+           "$tex",
+           "dvips -o $a.ps $texfile;";
 
        }
        # generate the pixmap at twice the size, then rescale (for antialiasing)
        if ( ! -f "$a.gif" ) {
-           system "mv lelie.midi $a.midi; ";
-           system "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE  $a.ps -c quit |pnmscale 0.5| ppmtogif > $a.gif";
-           system "gzip $a.ps";
+           my_system "mv lelie.midi $a.midi; ",
+            "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE  $a.ps -c quit |pnmscale 0.5| ppmtogif > $a.gif",
+            "gzip $a.ps";
        }   
     }
 }
@@ -69,8 +85,13 @@ sub gen_list
     foreach $a (@examples) {
        $name=$a;
        print HTMLLIST "<h1>example file: $name</h1>\n<XMP>\n";
-       $cmd= "head $depth/input/$a.ly | grep \^% \| sed \"s/^%/        /\"";
-       $desc = `$cmd`;
+
+       open IF, "$depth/input/$a.ly";
+       input_record_separator IF "%}";
+       
+       $desc = <IF>;
+       close IF;
+       
        print HTMLLIST "$desc\n</XMP>";
 
        $inputf="$a.ly.txt";
@@ -93,22 +114,23 @@ sub copy_files
 {  
     print "copying files\n";
     print `ln -s $depth/out ./docxx` if ( ! -x "docxx" ) ;
-    system "cp $depth/TODO ./TODO.txt";
-    system "cp $depth/NEWS ./NEWS.txt";
-    system "cp ../lelie*gif .";
+    my_system "cp $depth/TODO ./TODO.txt",
+    "cp $depth/NEWS ./NEWS.txt",
+    "cp ../lelie*gif .";
 }
 
 sub docxx_update
 {
-    system "make -C $depth doc++";
+    my_system "make -C $depth doc++";
 }
 
 sub
     do_tar
 {
      print "tarring.\n";
-     system " tar vhcf website.tar *.html *.gif *.ps.gz *.ly.txt *.midi docxx/*;";
-system "gzip -f9 website.tar;";
+     my_system
+        " tar vhcf website.tar *.html *.gif *.ps.gz *.ly.txt *.midi docxx/*;",
+        "gzip -f9 website.tar;";
 }
 
 $depth = "../../";
index a205cddaff613840cf861ffc4b87a9527eec3047..82364493b752b6a59260c1d430148c2566e1c322 100644 (file)
@@ -6,7 +6,7 @@
 table_sixteen= 
 \symboltables {
 
-   \texid      "\musixsixteendefs"
+   \texid      "\input lilyponddefs \musixsixteendefs"
 
    % index TeXstring,  xmin xmax ymin ymax
 
index bee5e6de6f21e60884523bbc6538d3ce3ea48ad2..d37dab705cfc8c745183a621ab181c645f612e0d 100644 (file)
@@ -2,12 +2,12 @@
 
  filename: collisions.ly
  title:
- description: 
+ description:  random counterpoint to test collisions
  composer(s): HWN
  entered-by: HWN
  copyright: public domain
 
- Tested Features:%test the Collision resolution 
+ Tested Features:test the Collision resolution 
 EndMudelaHeader
 %}
 \version "0.0.57";
index e9588b66201c0c963061923d7ca527762f6d885e..6cc689c326560da06b8246564a8f36853e5a6ff3 100644 (file)
@@ -36,8 +36,8 @@ melodie = \melodic {
                  (|            % start a slur
                                % NOTE: the slurstart should be directly after the note
                        )       % end a slur.
-                         g r8 g8 ~      a r8 a8 ~       g r4 
-         f r8 f8 ~      e4 r8 e8 ~ | d4 r8 d8 ~         c4 r4 
+                         g r8 g8 ()     a r8 a8 ()      g r4 
+         f r8 f8 ()     e4 r8 e8 (|)  d4 r8 d8 ()       c4 r4 
 }
 
                                % more of this.
@@ -53,8 +53,8 @@ begeleiding = \melodic{
        \octave  'c ;
        e 'g    d 'g    c 'g    'b 'g   e 'g    d 'g    c 'g    'b 'g
        %%%% var 1
-       r8 e8~  c       r8 e8~  c       r8 f8~ c        r8 e8~ c
-       r8 d8~ 'b       r8 c8~ 'a       r8 'a8~ 'f      r8 'e8~ 'c
+       r8 e8()  c      r8 e8()  c      r8 f8() c       r8 e8() c
+       r8 d8() 'b      r8 c8() 'a      r8 'a8() 'f     r8 'e8() 'c
 }
 
 \score{
index 8205a45d5bee57a68520da3b70da898abeee5708..24f134baeff8f8b5e2b56647ed6cb7b88ee6921c 100644 (file)
@@ -1,3 +1,17 @@
+%{MudelaHeader
+
+ filename:rhythm.ly
+ title:
+ description: 
+ composers:HWN
+ entered-by:HWN
+ copyright:public domain
+
+ Tested Features: multiple meters, beaming
+EndMudelaHeader
+%}
+\version "0.0.57";
+
 %
 %      Ive' got rhythm!
 %
index 7781055764614da08cc137992f6383bbcb0b7cd5..b40697e5b672016dd5dc00c3ba324e0725752d44 100644 (file)
@@ -1,17 +1,17 @@
-% scsii-menuetto.ly
-%
-% Solo Cello Suites
-% Johann Sebastian Bach (1685-1750)
-% bwv 000
-%
-% Suite II part v
-% Menuetto I
-%
-% Copyright (c) 1995,1996,1997 Jan Nieuwenhuizen <jan@digicash.com>
-% 
-% The purpose of this file is to demonstrate features of LilyPond.
-% (there is an accompanying LaTeX file, scsii-menuetto.tex)
-%
+%{MudelaHeader
+
+ filename: scsii-menuetto.ly
+ title:Solo Cello Suites,
+ description: Suite II part V, Menuetto I
+ composers: Johann Sebastian Bach (1685-1750)
+ entered-by: JCN
+ copyright: 
+
+ Tested Features:breaking algorithm, chords, multivoice, accents
+
+
+EndMudelaHeader
+%}
 \version "0.0.57";
 %% Stuff from MPP version
 % \lefttitle{Menuetto}
index 95de0c76391978412b963eb415afc62904a6eeed..a97f5faa6c83c61cfb239248471ed6c3175e8538 100644 (file)
@@ -16,8 +16,8 @@ EndMudelaHeader
 \score{\staff{
        melodicregs 
        \melodic{\octave c';
-               \duration 4;
-               c ~ c ~ g ~ c ~
+               \duration "last";
+               'c4 ~ 'c c'' ~ c'' ~ g ~ c ~
                d ~ e ~ f ~ g ~
                a ~ b ~ 'c ~ c
 
@@ -29,8 +29,9 @@ EndMudelaHeader
                < { c ~ d }
                  { e ~ f }
                >
-
-
+       < \multivoice 
+       { \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 } >
 
        }
 
index 78ca3975d1b3531cc3f536cbabe86e82d738b22f..03b8a1e7c3348e1915ca4225da6832785b54281c 100644 (file)
@@ -1,18 +1,21 @@
-%{
-standchen.ly
+%{MudelaHeader
 
- St\"andchen (Serenade) "Leise flehen meine Lieder" D.957 No.4
- Franz Schubert (1797-1828)
- Text by Ludwig Rellstab (1799-1860)
+ filename: standchen.ly
+ title: St\"andchen (Serenade) "Leise flehen meine Lieder"
+ description:  D.957 No.4
+ composers: Franz Schubert (1797-1828)
+        Text by Ludwig Rellstab (1799-1860)
+ entered-by:JCN
+ copyright:
 
- Copyright (c) 1995,1996,1997 Jan Nieuwenhuizen <jandigicash.com>
- The purpose of this file is to demonstrate features of LilyPond.
- (there is an accompanying LaTeX file, standchen.tex)
+ Tested Features: multivoice, accents, lyrics, chords, piano music
 
+EndMudelaHeader
 %}
 \version "0.0.57";
 
+\version "0.0.57";
+
 commands = \melodic{
        \skip 2.*4;
        \bar ":|";
index 81bb5a3ffcce1b09d42c2bc8b1cee3a169914e8d..4a6628d2a94ab2e21c78c0b6b3e6b2894e5974a8 100644 (file)
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 0
-PATCH_LEVEL = 59
+PATCH_LEVEL = 60
 
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
index f0afa9b402307142c43d8e9ff417908a8885f0cc..96071ad385b8a7001f9bf75db1ff2b2e72767040 100644 (file)
@@ -1,3 +1,11 @@
+/*
+  bar.cc -- implement Bar
+
+  source file of the LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
 #include "bar.hh"
 #include "string.hh"
 #include "molecule.hh"
@@ -5,8 +13,6 @@
 #include "lookup.hh"
 #include "debug.hh"
 
-
-
 Bar::Bar( String t)
 {
     type = t;
index 0c48c80f6eefc615c0b97e0a58b43d0a873c84f2..0e1c058f4904215afbc8be16c1b7b17a926b5ce3 100644 (file)
@@ -5,6 +5,14 @@ Directional_spanner::set_default_dir()
 {
     dir_i_ = -1;
 }
+
+void
+Directional_spanner::do_pre_processing()
+{
+    if (!dir_i_)
+       set_default_dir();
+}
+
 Directional_spanner::Directional_spanner()
 {
     dir_i_ = 0;
index ab3908a76925cbdd0587722c242b8af6f3b54377..903bbdb6358a33fdbc87289a46bae0e8ceaaa984 100644 (file)
@@ -20,6 +20,7 @@ protected:
     int right_pos_i_;
     Real left_dx_f_;
     Real right_dx_f_;
+    
     Molecule*brew_molecule_p()const;
 public:
     Bow();
index 049f28b17bf43e2851034b1d1aea10b244bfe335..eb96e87240a7736589362c683ddce32cdab7d35a 100644 (file)
@@ -18,6 +18,7 @@ struct Directional_spanner : Spanner{
     /// offset of "center" relative to left-column/0-pos of staff
     virtual Offset center() const=0;
     virtual void set_default_dir();
+    virtual void do_pre_processing();
     Directional_spanner();
     
 };
index fc93216de0b6e272a55743125a415ac646266b9e..fcfc4ba5c6dc4e8ed9efc60c5a091445b67494f6 100644 (file)
@@ -41,6 +41,7 @@ public:
     virtual Request_register * get_register_p(Request_register*reg_l);
     virtual void set_feature(Feature i);
     virtual bool acceptable_request_b(Request*)const;
+    virtual void sync_features() ;
     virtual void pre_move_processing();
     virtual void post_move_processing();
     virtual void acknowledge_element(Staff_elem_info info);
index b86af3d918a5f89359204108fb792ff12669b522..5ba28600ad2061741a9e5179385d231409bd9ceb 100644 (file)
@@ -86,16 +86,23 @@ protected:
       Set Feature of the register(s). Default: ignore Feature.
      */
     virtual void set_feature(Feature){}
+    /**
+      ask daddy for a feature
+     */
+    virtual Scalar get_feature(String type_str);
     /**
       Does this equal or contain a certain register?
      */
+
+    virtual void sync_features() {}
+    
     virtual bool contains_b(Request_register*reg_l)const;
     /**
       Get information on the staff. Default: ask daddy.
       */
     virtual Staff_info get_staff_info();
-    
-    
+
+
     virtual void do_print()const;  
 public:
     /** Every Request_register (except for the 'top' which is directly
index e9a27a43d6e3d8fd5877a0fb1478ce16e1285d68..cca97e0f138b43db81033919a4ec1f587528ce3e 100644 (file)
@@ -15,11 +15,12 @@ class Slur_register :public Request_register {
     Array<Slur_req*> new_slur_req_l_arr_;
     Array<Slur *> slur_l_stack_;
     Array<Slur*> end_slur_l_arr_;
-
+    int dir_i_;
     /* *************** */
 protected:
     virtual ~Slur_register();
     virtual bool try_request(Request*);
+    virtual void set_feature(Feature);
     virtual bool acceptable_request_b(Request*);
     virtual void process_requests();
     virtual void acknowledge_element(Staff_elem_info);
index 34387c964d4dc0f5ed156786ccb64b56b7cc1416..082de4e70cd0f4b5ea59a8b9c6cf8bd5acc31697 100644 (file)
@@ -17,15 +17,19 @@ class Tie_register : public Request_register {
     Tie * tie_p_;
     Moment end_mom_;
     Tie_req * req_l_;
+    int dir_i_;
     Tie_req *end_req_l_;
+    
 protected:
     virtual ~Tie_register();
     virtual void acknowledge_element(Staff_elem_info);
     virtual bool try_request(Request*);
     virtual bool acceptable_request_b(Request*);
+    virtual void sync_features();
     virtual void process_requests();
     virtual void post_move_processing();
     virtual void pre_move_processing();
+    virtual void set_feature(Feature);
 public:
     Tie_register();
     NAME_MEMBERS(Tie_register);
index 9247b26156cdb4c1a13bf92d33473edc31325336..972d2cf97e22511342f76943f9b45fce89600a96 100644 (file)
@@ -16,6 +16,7 @@ class Tie : public Bow {
     virtual Spanner* do_break_at(PCol*,PCol*)const;
     virtual void do_add_processing();
     virtual void do_post_processing();
+    virtual void set_default_dir();
 public:
     Notehead * left_head_l_;
     Notehead * right_head_l_;
index dba96dc21a28fea7f4d6f8fda501ba0d67be213e..8a0837308d11c3cde7b4a5023c73e9916672ddfe 100644 (file)
 class Voice_group_registers  : public Register_group_register {
     Moment termination_mom_;
     Input_register const *ireg_C_;
+    int dir_i_;
+
 protected:
     virtual void do_print() const;
+    virtual void set_feature(Feature);
+    virtual Scalar get_feature(String);
     virtual void post_move_processing();
     virtual bool try_request(Request*);
 public:
index 37090b77dbb395e768c1c9850d976f8b6889c85c..ff3482097e461f063df18bdd43b562652b9787ee 100644 (file)
@@ -131,6 +131,7 @@ PScore::output(Tex_stream &ts)
        if ((lic+1).ok())
            ts << "\\interscoreline\n";
     }  
+    ts << "\n\\EndLilyPondOutput";
 }
 
 
index b2602dd355a0e6c8add89ed4a4de5b34b9be14ae..256f3b88050e6a52262b34e49f7145ca7ca05adb 100644 (file)
@@ -40,7 +40,7 @@ Paper_def::Paper_def(Lookup *l)
     linewidth = 15 *CM_TO_PT;          // in cm for now
     whole_width = 8 * note_width();
     geometric_ = sqrt(2);
-    outfile = "lelie.out";
+    outfile = "lelie.tex";
 }
 
 Paper_def::~Paper_def()
index 2180a1bf15f1aa0fa91e35fd987bf0de3718bd8c..6e516df21b3afc5d1642db0d1edfe5202cf5e7ce 100644 (file)
@@ -32,6 +32,17 @@ Register_group_register::set_feature(Feature d)
     }
 }
 
+void
+Register_group_register::sync_features()
+{
+    iter_top(reg_list_, i);
+    while (i.ok()) {
+
+       Request_register *reg_l = i++; 
+       reg_l->sync_features();
+    }
+}
+
 void
 Register_group_register::pre_move_processing()
 {
index 57a030d956a550d5b2bc150641f7a8a9bcc9e933..08c3feaa00ec4ca85e05d185fb585ffec114da71 100644 (file)
 #include "register-group.hh"
 #include "debug.hh"
 
+Scalar
+Request_register::get_feature(String t)
+{
+    return daddy_reg_l_->get_feature(t);
+}
+
 bool
 Request_register::try_request(Request*)
 {
index a9acf3b67bd70920ace3cd79e7ae0e134c9d4812..20a3c5415e6a32b7b0f67f047c575cf10d6eb14b 100644 (file)
@@ -40,9 +40,21 @@ Slur_register::acknowledge_element(Staff_elem_info info)
            end_slur_l_arr_[i]->add(col_l);
     }
 }
+
+void
+Slur_register::set_feature(Feature f)
+{
+    if (f.type_ == "vdir")
+       dir_i_ = f.value_ ;
+}
+
 /*
   abracadabra
   */
+Slur_register::Slur_register()
+{
+    dir_i_ =0;
+}
 void
 Slur_register::process_requests()
 {
@@ -75,6 +87,8 @@ void
 Slur_register::pre_move_processing()
 {
     for (int i = 0; i < end_slur_l_arr_.size(); i++) {
+       if (dir_i_)
+           end_slur_l_arr_[i]->dir_i_ = dir_i_;
        typeset_element(end_slur_l_arr_[i]);
     }
     end_slur_l_arr_.set_size(0);
index a47679a3f4fa7eabf6b97c2911b4e35ca5c0dc24..7de562215a3ca5e33a72949d89d0920f9aefbac4 100644 (file)
@@ -76,5 +76,8 @@ Slur::do_post_processing()
     Real inter_f = paper()->internote();
     left_pos_i_ = encompass_arr_[0]->stem_l_->height()[dir_i_]/inter_f;
     right_pos_i_ = encompass_arr_.top()->stem_l_->height()[dir_i_]/inter_f;
+
+    left_pos_i_ += dir_i_;
+    right_pos_i_ += dir_i_;
 }
 IMPLEMENT_STATIC_NAME(Slur);
index 9f5cc9cd81daf4788f40327c47c31d1e8e65f3f2..b6dc1165b7e7bbd970bcdfe775669b5efff32831 100644 (file)
@@ -62,7 +62,7 @@ Staff_registers::change_group(Group_change_req * greq_l,
     }
     Voice_group_registers * new_group_l = get_group(new_str);
     new_group_l->add(regs_p);
-    
+    regs_p->sync_features(); 
     mtor << "processed change_group " << get_staff_info().when()<<"\n";
     print();
 }
index fd2df29a86c786094156184c327f84a0506cf983..af9c539803fc0cb55de3218f20c0c34621a5ef81 100644 (file)
@@ -21,10 +21,17 @@ Tie_register::Tie_register()
     end_mom_ = -1;
 }
 
+void
+Tie_register::sync_features()
+{
+    dir_i_ = get_feature("vdir");
+}
+    
+
 void
 Tie_register::post_move_processing()
 {
-     if (tie_p_ && get_staff_info().when() == end_mom_) {
+    if (tie_p_ && get_staff_info().when() == end_mom_) {
        end_tie_p_ = tie_p_;
        end_req_l_ = req_l_;
        tie_p_ =0;
@@ -78,6 +85,9 @@ void
 Tie_register::pre_move_processing()
 {
     if (end_tie_p_) {
+       if (dir_i_)
+           end_tie_p_->dir_i_ =  dir_i_;
+       
        typeset_element(end_tie_p_);
        end_tie_p_ =0;
        end_req_l_ =0;
@@ -93,5 +103,12 @@ Tie_register::~Tie_register()
     }
 }
 
+void
+Tie_register::set_feature(Feature f)
+{
+    if (f.type_ == "vdir")
+       dir_i_ = f.value_;
+}
+
 IMPLEMENT_STATIC_NAME(Tie_register);
 ADD_THIS_REGISTER(Tie_register);
index eff99f4600a175ecf349c880e06402010d9c8308..06c09a3b82aea36cac24adb78daa4938854cfb17 100644 (file)
@@ -6,6 +6,7 @@
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
 
+#include "paper-def.hh"
 #include "tie.hh"
 #include "notehead.hh"
 #include "p-col.hh"
 Spanner*
 Tie::do_break_at(PCol*l, PCol*r) const
 {
-    Tie * tie_p = new Tie;
+    Tie * tie_p = new Tie(*this);
     Line_of_score const  *line_C=l->line_l_;
-    if (left_head_l_->line_l()== line_C)
-       tie_p->left_head_l_ = left_head_l_;
-    if (right_head_l_->line_l() == line_C)
-       tie_p->right_head_l_  = right_head_l_;
+    tie_p->left_head_l_ = (left_head_l_->line_l()== line_C) ?
+       left_head_l_ : 0;
+    tie_p->right_head_l_  = (right_head_l_->line_l() == line_C)?
+       right_head_l_ : 0;
     
     return tie_p;
 }
@@ -42,6 +43,14 @@ Tie::Tie()
     left_head_l_ =0;
 }
 
+void
+Tie::set_default_dir()
+{
+    int m= (left_head_l_->position_i_ + right_head_l_->position_i_) /2 ;
+    dir_i_ =  (m < 5)? -1:1;                   // ugh
+}
+    
+
 void
 Tie::do_add_processing()
 {
@@ -58,6 +67,18 @@ Tie::do_post_processing()
        left_head_l_->position_i_ : right_head_l_->position_i_;
     right_pos_i_ = (right_head_l_) ? 
        right_head_l_->position_i_ : left_head_l_->position_i_;
+    if ( right_head_l_ && right_head_l_->extremal_i_) {
+       right_pos_i_ += 2*dir_i_;
+       right_dx_f_ -= 0.25;
+    } else
+       right_dx_f_ -= 0.5;
+
+    if (left_head_l_ && left_head_l_->extremal_i_) {
+       left_pos_i_ += 2*dir_i_;
+       left_dx_f_ += 0.25;
+    } else
+       left_dx_f_ += 0.5;
 }
 
 
index 053e2dc74b3d7927e666a2a1e38d28f3731a6f1b..8bc24916814ac0d1a359cb82f8561a9675e7f3f5 100644 (file)
@@ -22,6 +22,7 @@ static int temp_id_count;
 Voice_group_registers::Voice_group_registers(String id,
                                             Input_register const *ireg_C)
 {
+    dir_i_ =0;
     ireg_C_ =ireg_C;
     Register_group_register::add(ireg_C->get_nongroup_p_arr());
     if (id=="")                        // ugh
@@ -113,3 +114,18 @@ Voice_group_registers::OK() const
 }
             
             
+void
+Voice_group_registers::set_feature(Feature f)
+{
+    if (f.type_ == "vdir")
+       dir_i_ = f.value_;
+    Register_group_register::set_feature(f);
+}
+
+Scalar
+Voice_group_registers::get_feature(String f)
+{
+    if (f == "vdir")
+       return dir_i_;
+    Register_group_register::get_feature(f);
+}
index 7c675336f25b8a37f570b82ba9ee8dbef1cfb572..789c602b6de8a555651c8c41834f6369f5b271e8 100644 (file)
@@ -2,7 +2,7 @@
 
 Begin3
 Title: LilyPond
-Version: 0.0.59
+Version: 0.0.60
 Entered-date: 05/05/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
@@ -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.59.tar.gz
+       300k lilypond-0.0.60.tar.gz
 Alternate-site: 
 Original-site: 
 Platform: unix/win32, GNU C++
index 4fa3667bc0b38d293fdd7aff8cf30b940b656d05..fb892b56f9fa98c7cc94dc03bf268ab420f07cfd 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.0.59
+Version: 0.0.60
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.59.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.60.tar.gz
 Summary: A preprocessor to make TeX typeset music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
index 2851557010b9e6ae7f1acc6723425fa2428340e1..47252308602670ff9f2bba676f48b311a6d883e0 100644 (file)
@@ -3,7 +3,18 @@
 %%
 %% this file defines various macros to accomodate lilypond output
 
-\def\mdef#1#2{\def#1{\mchar{#2}}}
+% TeXbook ex 7.7
+\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
+
+\def\SkipLilydefs{\endinput}
+\ifundefined{EndLilyPondOutput}
+        \def\EndLilyPondOutput{\csname bye\endcsname}
+        \def\SkipLilydefs{}
+\fi
+\SkipLilydefs
+% should use \endinput
+
+        \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
@@ -49,7 +60,7 @@
         \font\musicdraw=musixsps
         \font\italicfont=cmti10
         \font\dynfont=cmbxti10 scaled \magstep1
-       \font\mathfont=cmsy10
+        \font\mathfont=cmsy10
         \balkhoog=20pt
         \notewidth=6pt
         \noteheight=5pt
@@ -71,7 +82,7 @@
         \font\musicfnt=musix16
         \font\dynfont=cmbxti12
         \font\musicdraw=musixsps
-       \font\mathfont=cmsy8
+        \font\mathfont=cmsy8
         \balkhoog=16pt
         \staffrulethickness=0.4pt
         \notewidth=5pt
 \def\settext#1{\textfont #1}
 \def\setitalic#1{\italicfont #1}
 \def\setdynamic#1{\dynfont #1}
+
+        
+
diff --git a/tex/test.tex b/tex/test.tex
deleted file mode 100644 (file)
index b555757..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-\input lilyponddefs
-\input lelie.out
-\vfil\bye
\ No newline at end of file
index cbf88bf422374cafb59206700a51072ef22e6d11..314d6759683cce11533474ad918ed8b6eb288022 100644 (file)
@@ -2,7 +2,8 @@
 % ideally, we should create a LaTeX/TeX class
 % for setting music in different sizes.
 %
-
+\input lilyponddefs
+\def\EndLilyPondOutput{\endinput}
 \def\thetitle{}
 \def\thecomposer{}
 \def\theinstrument{}