]> git.donarmstrong.com Git - lilypond.git/commitdiff
patch::: 1.1.13.uu1
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 8 Dec 1998 16:03:21 +0000 (17:03 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 8 Dec 1998 16:03:21 +0000 (17:03 +0100)
pl 12.jcn2
- bf: package-diff
- new chord syntax, again: TONIC [DURATION] ['-' MODIFIERS/ADDITIONS]
- shorthand prefix for note-mode: '@', no shorthand for notes in chord
           mode...

pl 12.jcn1
pl 11.jcn6
- bf: ly2dvi: better guess LILYPONDPREFIX: <bin>../share/lilypond
- chord-table; urg bugs:
   * note-collisions
   * accidental-placement
- bf: cis m (\textsharpm, urg)

pl 11.jcn5
- bib entry, twinkle-pop
- bf's: chords

pl 11.jcn4

23 files changed:
Documentation/BLURB.in
Documentation/FLAPTEKST.in
Documentation/tex/engraving.bib
Documentation/topdocs/INSTALL.yo
NEWS
TODO
VERSION
buildscripts/lilypond-login.sh
buildscripts/lilypond-profile.sh
buildscripts/set-lily.sh
debian/control
input/bugs/bar-space.ly [new file with mode: 0644]
input/test/chord-table.ly [new file with mode: 0644]
input/test/chords.ly
input/twinkle-pop.ly
lily/chord-name-engraver.cc
lily/include/my-lily-lexer.hh
lily/lexer.ll
lily/parser.yy
scripts/ly2dvi.py
stepmake/NEWS
stepmake/VERSION
stepmake/stepmake/package.make

index 68ca4dc05ed8491e93d7349f3a4d951a8337ecc4..a861e52e334a4a81fdba5818860e6d45c0f2c6eb 100644 (file)
@@ -2,5 +2,5 @@ LilyPond is the GNU Project music typesetter.  This program can print
 beautiful sheet music from a music definition file.  It can also play
 mechanical performances to a MIDI file.  Features include multiple
 staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,
-beams, slurs, triplets, formatting scores, part extraction.  It includes
-a nice font of musical symbols.
+beams, slurs, triplets, named chords, transposing, formatting scores, 
+part extraction.  It includes a nice font of musical symbols.
index 90ee5e5d21e315873f1d8a6580a0c9972aa8df15..cedaa2e995e880937942e50a3767b7fbde1e629d 100644 (file)
@@ -1,7 +1,7 @@
 LilyPond is de muziekzetter van het GNU Project.  Dit programma drukt
 prachtige bladmuziek volgens een muzikaal definitie bestand.  Ook kan
 het een mechanische uitvoering afspelen naar een MIDI bestand.
-Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,
-sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,
-balken, boogjes, triolen, partituren, en uittreksels voor individuele 
-partijen.  Een fraaie set muziektekens is inbegrepen.
+Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten, sleutels, 
+toonaarden, zangteksten, krachtige invoer taal, cadensa, balken, boogjes, 
+triolen, accoordnamen, transponeren, partituren, en uittreksels voor 
+individuele partijen.  Een fraaie set muziektekens is inbegrepen.
index 560647d93bf0e4e49b511fdcacb1f04724f9124d..066a7b7063abb3b6adbbd0337b78c070e426d323 100644 (file)
@@ -4,7 +4,17 @@
 %
 
 
-
+@Book{banter,
+  author =     {Harald Banter},
+  title =      {Akkord Lexikon},
+  publisher =  {Schott's S\"ohne},
+  year =       {1987},
+  isbn =       {ISBN 3-7957-2095-8},
+  note =       {Comprehensive overview of commonly used
+  chords.  Suggests (and uses) a unification for all different kinds
+  of chord names.},
+  address =    {Mainz, Germany},
+}
 
 @Book{rastall,
   author =      {Richard Rastall},
index cf505663fb19ca0d2678964885ba8f62cbafb574..a4d1fe87523e79f7b34356a93dcafc5d7dcfd9bf 100644 (file)
@@ -6,7 +6,7 @@ This document explains what you need to install LilyPond, and what you
 should do.  If you are going to compile and install LilyPond very
 often you might want to check out the file(buildscripts/set-lily.sh)
 script.  It sets some environment variables and symlinks, which comes
-in handly when you have to compile LilyPond very often.  
+in handly when you have to compile LilyPond more often.  
 
 sect(PREREQUISITES)
 
@@ -24,11 +24,11 @@ disk-space run configure with code(--disable-debugging).
 Although we recommend to use Unix, LilyPond is known to run on Windows
 NT/95/98 as well.  See Section ref(w32).
 
-it() GNU C++ version 2.7 or newer (2.8 and egcs are also fine).
+it() GNU C++ version 2.8 or newer (egcs-1.1 or newer is also fine).
 it() Python 1.5 (Strictly speaking, you shouldn't need Python for 
    compiling and installing, but you'll need it to regenerate the font
    tables, e.g.). 
-it() GUILE 1.3 (no, GUILE 1.2 won't work),     check out lurl(http://www.gnu.org/programs/guile.html)
+it() GUILE 1.3 (no, GUILE 1.2 won't work), check out lurl(http://www.gnu.org/programs/guile.html).
 )
 
 sect(RUNNING)
@@ -41,7 +41,7 @@ it()TeX
 it()A PostScript printer and/or viewer (such as Ghostscript) is strongly
     recommended.  Xdvi will show all embedded PostScript too if you have
     Ghostscript installed.
-it() GUILE 1.3 (no, GUILE 1.2 won't work),     check out lurl(http://www.gnu.org/programs/guile.html)
+it() GUILE 1.3 (no, GUILE 1.2 won't work), check out lurl(http://www.gnu.org/programs/guile.html)
 )
 
 
diff --git a/NEWS b/NEWS
index 9a22a07baef923c661a0d0f3186059b05d92fc46..5cccae0f1815f2efbd94d57ac7db1b936ac59320 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,23 @@
+pl 12.jcn2
+       - bf: package-diff
+       - new chord syntax, again: TONIC [DURATION] ['-' MODIFIERS/ADDITIONS]
+       - shorthand prefix for note-mode: '@', no shorthand for notes in chord
+           mode...
+pl 12.jcn1
+pl 11.jcn6
+       - bf: ly2dvi: better guess LILYPONDPREFIX: <bin>../share/lilypond
+       - chord-table; urg bugs:
+          * note-collisions
+          * accidental-placement
+       - bf: cis m (\textsharpm, urg)
+  
+pl 11.jcn5
+       - bib entry, twinkle-pop
+       - bf's: chords
+
+pl 11.jcn4
+
 pl 13
        - mutopia stuff (thanks, Peter)
        - bugfix : \maininput
diff --git a/TODO b/TODO
index dc35057fb1799e5aeb300228dbba2b9664734241..03915a7737ce91f65eddf674fda83867b522de56 100644 (file)
--- a/TODO
+++ b/TODO
@@ -16,7 +16,6 @@ BUGS:
          - one volta spanner per score
          - repeat bars span staffs
          - placement alternative number
-         - dimensions of volta bracket
 
        * who is trying to print too (small/big) piano braces all the time?
            warning: piano brace too small (16.000pt)
@@ -29,6 +28,8 @@ BUGS:
 
        * configure error if GUILE 1.3 not found
 
+       * configure error if no rtti (gcc 2.8 or egcs-1.1)
+
        * catch GUILE errors?
 
        * add new glyphs to font.ly
@@ -407,12 +408,11 @@ PROJECTS
         .. ?
 
        * chords
-       - guitar chords
-       - chord names
+       - jazz style inversions C/E => <e g c>
+       - guitar chords (fret diagrams)
+       - other chord name styles (american(?) style)
        - basso continuo
-       - Syntax/parser
        - MIDI output?
-       - typesetting
 
        * Debug logs:
        - derive lily_stream, Dstream, texstream from ostream?
diff --git a/VERSION b/VERSION
index 8c6a8f419e5b9842009b5ef54520b04282eb50a7..bb973035121d4553d1c1a9e3241d801cae373911 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=1
 PATCH_LEVEL=13
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=uu1
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index 5752409eb6ed9d83f8739cd5ab152580ba00a9ec..b7cfc4d16f33bf1bd4249b41bc38a29c203bd8d8 100644 (file)
@@ -6,6 +6,7 @@
 setenv GS_LIB "@datadir@/afm"
 setenv GS_FONTPATH "@datadir@/ps"
 setenv LILYINCLUDE "@datadir@/ly:@datadir@/afm"
+setenv LILYPONDPREFIX "@datadir@"
 
 # include an empty path component for the system wide includes.
 setenv MFINPUTS "@datadir@/mf:$MFINPUTS::"
index 40e778f75ab8a21ea8d5fff1d13353d0edc1dede..b40bea1689ed0eb7af04aa65d49205c1b64c07f3 100644 (file)
@@ -5,6 +5,8 @@
 GS_LIB="@datadir@/afm"
 GS_FONTPATH="@datadir@/ps"
 LILYINCLUDE="@datadir@/ly:@datadir@/afm"
+# bit silly. for ly2dvi, overrules compiled-in datadir...
+LILYPONDPREFIX="@datadir@"
 
 # include an empty path component for the system wide includes.
 MFINPUTS="@datadir@/mf:"${MFINPUTS:=":"}
@@ -12,7 +14,7 @@ TEXINPUTS="@datadir@/tex:@datadir@/ps:"${TEXINPUTS:=":"}
 
 GUILE_LOAD_PATH="@datadir@/scm:$GUILE_LOAD_PATH"
 
-export GUILE_LOAD_PATH LILYINCLUDE MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH
+export GUILE_LOAD_PATH LILYINCLUDE LILYPONDPREFIX MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH
 
        
 # echo  $LILYINCLUDE $MFINPUTS $TEXINPUTS $GS_LIB $GS_FONTPATH
index ccc61338dc38fa81075af0b07d57b6905f8393d8..67c5d80616c46a1329e525d51951038c8fe579f4 100755 (executable)
@@ -47,6 +47,8 @@ ln -sf $LILYPOND_SOURCEDIR/scripts/out/mudela-book $prefix/bin/mudela-book
 chmod 755 $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh
 ln -sf $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh $prefix/bin/ps-to-gifs
 ln -sf $LILYPOND_SOURCEDIR/mf/out/ afm
+mkdir -p $prefix/share/lilypond
+ln -sf $LILYPOND_SOURCEDIR/scm $prefix/share/lilypond
 if [ -f ../.gdbinit ];
 then
     ln ../.gdbinit .
index 14be2746a9be339a443c7459ad5edf8c41abe9e1..8e150650c8f7ef26875a753004a9d62caa2a1341 100644 (file)
@@ -14,8 +14,8 @@ Description: The GNU Project music typesetter.
  beautiful sheet music from a music definition file.  It can also play
  mechanical performances to a MIDI file.  Features include multiple
  staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,
- beams, slurs, triplets, formatting scores, part extraction.  It includes
- a nice font of musical symbols.
+ beams, slurs, triplets, named chords, transposing, formatting scores, 
part extraction.  It includes a nice font of musical symbols.
  .
   URLs: http://www.cs.uu.nl/~hanwen/lilypond/
         http://www.xs4all.nl/~jantien/lilypond/
diff --git a/input/bugs/bar-space.ly b/input/bugs/bar-space.ly
new file mode 100644 (file)
index 0000000..5c70a49
--- /dev/null
@@ -0,0 +1,16 @@
+\version "1.0.12";
+
+scales = \notes\transpose c''{
+               f2 f f f f f f f f f\break 
+       }
+
+keys = \notes{
+                \key b; s1 \key f; s1 \key f; s1 \key f; s1 \key f; s1 
+       }
+
+\score{
+       <
+               \type ChordNames \scales
+               \type Staff < \scales \keys >
+       >
+}
diff --git a/input/test/chord-table.ly b/input/test/chord-table.ly
new file mode 100644 (file)
index 0000000..37e0ae9
--- /dev/null
@@ -0,0 +1,44 @@
+\header{
+filename =     "chord-table.ly";
+copyright =    "public domain";
+enteredby =    "jcn";
+}
+
+tab = \notes\transpose c'''\chords{
+       c1 c-m c-4 c-m4 c-5+ c-5- c-m5- c-5-5+ c-6\break %c-m6\break
+       % Han-Wen: try this instead, and Wierd Things (spacing etc) happen:
+%      \notes {<c1 e g>} c1-m c-4 c-m4 c-5+ c-5- c-m5- c-5-5+ c-6  c-m6\break
+}
+
+\score{
+       \type StaffGroup <
+               \type Staff=c \notes\transpose c\tab
+               \type ChordNames=c \notes\transpose c\tab
+               \type Staff=cis \notes\transpose cis\tab
+               \type ChordNames=cis \notes\transpose cis\tab
+               \type Staff=des \notes\transpose des\tab
+               \type ChordNames=des \notes\transpose des\tab
+               \type Staff=d \notes\transpose d\tab
+               \type ChordNames=d \notes\transpose d\tab
+               \type Staff=es \notes\transpose es\tab
+               \type ChordNames=es \notes\transpose es\tab
+               \type Staff=e \notes\transpose e\tab
+               \type ChordNames=e \notes\transpose e\tab
+               \type Staff=fis \notes\transpose fis\tab
+               \type ChordNames=fis \notes\transpose fis\tab
+               \type Staff=g \notes\transpose g\tab
+               \type ChordNames=g \notes\transpose g\tab
+               \type Staff=as \notes\transpose as\tab
+               \type ChordNames=as \notes\transpose as\tab
+               \type Staff=a \notes\transpose a\tab
+               \type ChordNames=a \notes\transpose a\tab
+               \type Staff=bes \notes\transpose bes,\tab
+               \type ChordNames=bes \notes\transpose bes,\tab
+               \type Staff=b \notes\transpose b,\tab
+               \type ChordNames=b \notes\transpose b,\tab
+       >
+       \paper{
+               textheight = \vsize - 4.0 * \staffheight;
+       }
+
+}
index e3c0c4d182a3677ac7de27eb019e0cb61a32ba17..6f46d043368cdc10e62a8957957aed38bd5411c8 100644 (file)
@@ -3,27 +3,49 @@
 %{
 Would this be acceptable/good enough/convenient for entry?
 
-   Convention/Standard    Logical/Lily(?)
+   Convention/Standard    Lily
    
    C#                     cis
    Cb                     ces
-   Cm/Cmin                c3-     
-   Caug                   c5+
-   Cdim                   c5-
-   Cmaj7                  c7
-   C7                     c7-
-   Csus/Csus4             c4^3
+   Cm; Cmin               c-3-; c-m; c-min
+   Caug                   c-5+; c-aug;
+   Cdim                   c-5-; c-dim
+   Cmaj7                  c-7+; c-maj
+   C7                     c-7
+   Csus; Csus4            c-4; c-sus
 %}
 
 scales = \notes\transpose c''\chords{
-               *c *g *d *a *e *b *fis
-               *c *f *bes *es *as *des *ges
-                *c6 *c7 *c9 *c11 *c13
+               %<c1 e g>
+               c1-m c-min c4-dim c-aug c-sus c-maj
+                c1-6 c4-7 c-9 c-11 c-13
+               c1 g d a e b fis
+                c1 f bes es as des ges
+       }
+
+keys = \notes{
+                s1
+                s1 s1 s1
+                s1 s1
+                s1
+                \key g; s1
+                \key d; s1 
+                \key a; s1 
+                \key e; s1 
+                \key b; s1 
+                \key fis; s1
+                \key c; s1 
+                \key f; s1 
+                \key bes; s1
+                \key es; s1
+                \key as; s1
+                \key des; s1
+                \key ges; s1
        }
 
 \score{
        <
                \type ChordNames \scales
-               \type Staff \scales
+               \type Staff < \scales \keys >
        >
 }
index 0f3ef80c6fa990a2f3b6859330de6ed8399d4967..b18d69be773b734cea3abbb73af166f6b0517532 100644 (file)
@@ -11,31 +11,32 @@ copyright =  "public domain";
 Tested Features                lyrics and chords
 %}
 
-\version "1.0.10";
-
+\version "1.0.12";
+  
 melodie = \notes\relative c'' {
         \clef "violin";
-        \time 2/4 ;
-
+          \time 2/4 ;
+  
         c4 c  | g' g | a a | g2  |
         f4 f  | e e  | d d | c2  |
         g'4 g | f f  | e e | d d |
         g  g  | f f  | e e | d d |
-       % copy 1-8
+      % copy 1-8
         c4 c  | g' g | a a | g2  |
-        f4 f  | e e  | d d | c2  |
+        f4 f  | e e  | d d | c2 \bar "|.";
 }
 
 acc = \chords {
-       % why don't \skip, s4 work?
-        @2c @c @f @c
-        @f @c @g7 @c
-       @g @f @c  @g7 % urg, bug!
-        @g @f @c  @g7
-       % copy 1-8
-        @2c @c @f @c
-        @f @c @g7 @c
-}
+      % why don't \skip, s4 work?
+        c2 c f c
+        f c g-7 c
+      g f c  g-7 % urg, bug!
+        g f c  g-7
+      % copy 1-8
+        c2 c f c
+        f c g-7 c
+  }
+  
 
 text = \lyrics{ 
         \property Lyrics . textstyle =  "italic"
@@ -51,10 +52,24 @@ text = \lyrics{
 
 \score {
         <  
-          \chords \type ChordNames \acc
-%         \notes \type Staff=chords \acc
-          \notes \type Staff=melody \melodie
+         \type ChordNames \acc
+         \type Staff=melody \melodie
+           \type Lyrics \text
+          >
+      \header{
+              title = "Ah, vous dirais-je, maman ";
+      }
+          \paper {  }
+  }
+
+\score {
+        <  
+         \chords \type ChordNames \transpose bes\acc
+         \notes \type Staff=melody \transpose bes\melodie
            \lyrics \type Lyrics \text
         >
+      \header{
+              piece = "clarinet in B\\textflat";
+      }
         \paper {  }
 }
index 7bf7c05142e5167232cd393f4e1d550e0b2fd8b3..273d9afde3a0a8153b74bd5953ebb90c751527e6 100644 (file)
@@ -61,6 +61,20 @@ Chord_name_engraver::do_process_requests ()
 
    */
 
+  /*
+   Banter style chord names (almost).
+   TODO:
+     - don't print inclusive scale (i.e. no "9" in c 9/11)
+     - handle c7 / cmaj7
+     - use #,b iso -es -is on tonica
+     - switch on property, add american (?) chordNameStyle
+
+  Scalar chordNameStyle = get_property ("chordNameStyle");
+  if (chordNameStyle == "Banner")
+     chord = pitches_to_banner (pitch_arr_.size ());
+
+   */
+
   Scalar style = get_property ("textstyle");
   Scalar alignment = get_property ("textalignment");
   Text_def* text_p = new Text_def;
index 70dc4623c8f697dcbda3f80db15e8845b5545d15..91e51c635bfe27d1ab5ad83627412e80118dbc1a 100644 (file)
@@ -25,49 +25,50 @@ bool busy_parsing();
 void kill_lexer();
 void set_lexer();
 
-
 /// lexer for Mudela
-class My_lily_lexer : public Includable_lexer {
-  int lookup_keyword (String);
-  int scan_bare_word (String);
-  int scan_escaped_word (String);
-
-  char escaped_char(char) const;
+class My_lily_lexer : public Includable_lexer 
+{
 public:
   String main_input_str_;
   void * lexval_l;
   Scope * toplevel_scope_p_;
   bool main_input_b_;
-  
+
+  Notename_table *chordmodifier_tab_p_;
   Notename_table *note_tab_p_;
   Array<Scope*> scope_l_arr_;
   Keyword_table * keytable_p_;
   int errorlevel_i_;
-  Notename_table *chordmodifier_tab_p_;
-  Musical_pitch lookup_notename (String s);
+
+  My_lily_lexer ();
+  ~My_lily_lexer ();
+  int yylex ();
+
   void start_main_input ();
-  void set_notename_table(Notename_table*tab_p);
+  bool notename_b (String) const;
   bool chordmodifier_b (String) const;
   void set_chordmodifier_table (Notename_table*tab_p);
-  Musical_pitch lookup_chordmodifier (String s);
-   
-  bool notename_b(String) const;
+  void set_notename_table (Notename_table*tab_p);
   Identifier*lookup_identifier (String s);
-  Musical_pitch lookup_pitch (String s);
+  Musical_pitch lookup_notename (String s);
+  Musical_pitch lookup_chordmodifier (String s);
   void push_note_state();
   void push_chord_state();
   void push_lyric_state();
   void pop_state();
   void LexerError (char const *);
-  My_lily_lexer();
   void set_identifier (String str, Identifier* i, bool unique_b = true);
-  ~My_lily_lexer();
-  int yylex();
   void print_declarations (bool init_b) const;
-  void add_notename (String, Musical_pitch);
   bool note_state_b() const;
   bool chord_state_b() const;
   bool lyric_state_b() const;
+
+private:
+  int lookup_keyword (String);
+  int scan_bare_word (String);
+  int scan_escaped_word (String);
+
+  char escaped_char(char) const;
 };
 
 #endif
index 3d2a87f6012c52b99cfeccfc0520e44d4e571a9c..a56f86aae95f00dab205662a5e93d1f95f48c64e 100644 (file)
@@ -292,6 +292,9 @@ EXTENDER    [_][_]
        {NOTECOMMAND}   {
                return scan_escaped_word (YYText () + 1);
        }
+       {NOTECOMMAND}   {
+               return scan_escaped_word (YYText () + 1);
+       }
        {UNSIGNED}              {
                yylval.i = String_convert::dec2_i (String (YYText ()));
                return UNSIGNED;
@@ -443,7 +446,7 @@ My_lily_lexer::scan_bare_word (String str)
                    yylval.pitch = new Musical_pitch (lookup_notename (str));
                    yylval.pitch->set_spot (Input (source_file_l (), 
                      here_ch_C ()));
-                   return NOTENAME_PITCH;
+                    return (YYSTATE == notes) ? NOTENAME_PITCH : TONICNAME_PITCH;
                } else if (chordmodifier_b (str)) {
                    DOUT << "(chordmodifier)\n";
                    yylval.pitch = new Musical_pitch (lookup_chordmodifier (str));
index 2cf38355e3fa835fd64e0db4f5bc9b315d2d6deb..6ebde09668a6331e1056c17e1236c75350c571c5 100644 (file)
@@ -223,6 +223,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <i>      dots
 %token <i>     DIGIT
 %token <pitch> NOTENAME_PITCH
+%token <pitch> TONICNAME_PITCH
 %token <pitch> CHORDMODIFIER_PITCH
 %token <id>    DURATION_IDENTIFIER
 %token <id>    IDENTIFIER
@@ -266,11 +267,12 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <symtables>      symtables symtables_body
 
 %type <pitch>   explicit_musical_pitch steno_musical_pitch musical_pitch absolute_musical_pitch
+%type <pitch>   steno_tonic_pitch
 %type <notereq>        steno_notepitch
 %type <pitch_arr>      pitch_list
-%type <music>  chord
-%type <pitch_arr>       chord_additions chord_subtractions
-%type <pitch>           chord_note
+%type <music>  chord notemode_chord
+%type <pitch_arr>      chord_additions chord_subtractions
+%type <pitch>  chord_addsub chord_note
 %type <midi>   midi_block midi_body
 %type <duration>       duration_length
 
@@ -297,7 +299,8 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <tempo>  tempo_request
 %type <notenametab> notenames_body notenames_block chordmodifiers_block
 
-%expect 6
+/* 5 extra for notemode_chord */
+%expect 15
 
 
 %left '-' '+'
@@ -613,6 +616,11 @@ optional_semicolon:
        | ';'
        ;
 
+optional_dot:
+       /* empty */
+       | '.'
+       ;
+
 paper_def_body:
        /* empty */                     {
                Paper_def *p = THIS->default_paper_p ();
@@ -820,6 +828,10 @@ Composite_music:
                $$ = new Transposed_music ($3, *$2);
                delete $2;
        }
+       | TRANSPOSE steno_tonic_pitch Music {
+               $$ = new Transposed_music ($3, *$2);
+               delete $2;
+       }
        | NOTES
                { THIS->lexer_p_->push_note_state (); }
        Music
@@ -1073,6 +1085,20 @@ steno_musical_pitch:
        }
        ;
 
+steno_tonic_pitch:
+       TONICNAME_PITCH {
+               $$ = $1;
+       }
+       | TONICNAME_PITCH sup_quotes    {
+               $$ = $1;
+               $$->octave_i_ +=  $2;
+       }
+       | TONICNAME_PITCH sub_quotes     {
+               $$ = $1;
+               $$->octave_i_ += - $2;
+       }
+       ;
+
 explicit_musical_pitch:
        MUSICAL_PITCH '{' int_list '}'  {/* ugh */
                Array<int> &a = *$3;
@@ -1425,8 +1451,7 @@ abbrev_type:
 
 simple_element:
        steno_notepitch notemode_duration  {
-               if (!THIS->lexer_p_->note_state_b ()
-                 && !THIS->lexer_p_->chord_state_b ())
+               if (!THIS->lexer_p_->note_state_b ())
                        THIS->parser_error (_ ("have to be in Note mode for notes"));
                $1->duration_ = *$2;
                $$ = THIS->get_note_element ($1, $2);
@@ -1508,9 +1533,12 @@ chord_subtractions:
        {
                $$ = new Array<Musical_pitch>;
        }
-       | '^' chord_subtractions chord_note {
-               $2->push (*$3);
-               $$ = $2;
+       | '^' {
+               $$ = new Array<Musical_pitch>;
+       }
+       | chord_subtractions chord_addsub {
+               $$ = $1;
+               $$->push (*$2);
        }
        ;
 
index 02b6f9a5e5c1ecd3af3ff962e8e84f2df293225c..a36afe58321ed5863d68a758f662d007d1525e61 100644 (file)
@@ -14,7 +14,7 @@ Output: DVI file
 """
 
 name = 'ly2dvi'
-version = '0.0.6'
+version = '0.0.7'
 errorlog = ''
 
 import sys
@@ -422,7 +422,9 @@ class Properties:
         else:
             p=os.path.split(sys.argv[0])
             p=os.path.split(p[0])
-            this.setRoot(p[0],'init')
+           # bit silly. for ly2dvi, overrules compiled-in datadir...
+           # how to do this better (without running lily, of course?
+            this.setRoot(p[0] + '/share/lilypond', 'init')
 
         if not os.environ.has_key('HOME'):
             if os.environ.has_key('HOMEDRIVE') and \
index 61039414f64b2540cae74a12cd297d00c895ee64..9e81e29102ce865d48d4ab99acad7c08a56d477b 100644 (file)
@@ -1,3 +1,6 @@
+pl 61
+       - bf: package-diff
+
 pl 60
        - small fixes.
 
index e24ec2af87daa2a19b86a84d43275528555a8d68..c08a52b25dc2f8a3d9cc3f01ceeac1e0a1ad8304 100644 (file)
@@ -1,7 +1,7 @@
 PACKAGE_NAME=StepMake
 MAJOR_VERSION=0
 MINOR_VERSION=1
-PATCH_LEVEL=59
+PATCH_LEVEL=61
 MY_PATCH_LEVEL=
 
 # use the above to send patches, always empty for released version:
index 4bf347e9aa14b87e4dabb6bceb5771d26c2ecc92..79f7da48c0fa68ad03de2381b7eaa3e2a8444292 100644 (file)
@@ -17,11 +17,7 @@ deb:
          dpkg-buildpackage -b; \
        )'
 
-# urg urg
-# this one works for unix (try 'make diff help==' or 'make diff release==')
-makeflags=$(patsubst %==, %, $(patsubst %----,%,$(MAKEFLAGS:%=--%)))
-# and this one for nt
-# makeflags=$(patsubst %==, %, $(patsubst %----,%,$($(MAKEFLAGS:%=--%):--unix%=%)))
+makeflags=$(patsubst %==, %, $(patsubst ----%,,$(MAKEFLAGS:%=--%)))
 
 diff:
        $(PYTHON) $(step-bindir)/package-diff.py --package=$(topdir) $(makeflags)