]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.146
authorfred <fred>
Wed, 27 Mar 2002 01:00:24 +0000 (01:00 +0000)
committerfred <fred>
Wed, 27 Mar 2002 01:00:24 +0000 (01:00 +0000)
16 files changed:
CHANGES
VERSION
input/regression/lyrics-multi-stanza.ly
input/regression/multi-measure-rest.ly
input/regression/stanza-number.ly [new file with mode: 0644]
input/tutorial/menuet.ly
input/tutorial/miniatures.ly
input/tutorial/os-flute-2.ly
input/tutorial/os-score.ly
input/tutorial/sammartini.ly
ly/engraver.ly
scripts/abc2ly.py
scripts/etf2ly.py
scripts/mup2ly.py
scripts/musedata2ly.py
scripts/pmx2ly.py

diff --git a/CHANGES b/CHANGES
index 9d10d4a5a6b9b547c5a6a74ccdcaae105e45f3fa..4f8acd2e6fb17b30bfd5c6706055d6a1fe11e9fb 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,59 @@
-1.3.144.jcn4
+
+1.3.145.jcn2
+============
+
+* Make and ly2dvi fixes.
+* Made feta-timesig C a bit rounder. 
+
+* Included flat autogenerated list of grob interfaces into refman.
+
+* Moved Rest_engraver to ThreadContext.
+
+* Documentation updates.
+
+* Bugfix: package-diff: remove all out-?.* dirs.
+
+* Preliminary tutorial fixes.
+
+* Ly2dvi:
+   - keep .dvi output when making .ps.
+   - name latex wrapper for foo.ly: foo.latex
+   - keep .tex and .latex output if latex fails
+   - keep .dvi output if dvips fails
+   - replaced --outdir option with --output=FILE option, where FILE
+     may include directories
+   - enhancements and fixes
+
+* Typo fix: clean-fonts
+
+* Bugfixes: lilypond-login.sh
+
+* Tutorial and refman fixes (Mats)
+
+1.3.145.hwn1
 ============
 
+* Bugfix: LyricsVoice.stz property now works.
+
+* Remove sem-colons from lilypond syntax. 
+
+* Removed a grammar ambiguity: '-' DIGIT (fingering, only possible in \notes)
+now can not be interpreted as a negative number.
+
+
+1.3.145.rz1
+===========
+
+* Stem/notehead attach bug fixed (still probs with mensural head and
+  other head on same stem)
+
+* Minor font changes
+
+
+1.3.145
+=======
+
 * Build fixes for icon, this fixes 'rpm' target.  Tried to reinclude
 in rpm using (.png and) .xpm, but latest LinuxPPC release's rpm
 (3.0.6) Icon: tag handling is broken.
diff --git a/VERSION b/VERSION
index c2c931e21bd9cd177e9b3413f895ed84f1814fb2..cbf28cdcc634aa7e07a0257ac0043bdaac2f3664 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=145
+PATCH_LEVEL=146
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
index 9aa98b4565f9c7a977b3eefc3a75e92027cab4f5..1af9baed140378aef7eb27c4c559cabadcdef2c9 100644 (file)
@@ -1,9 +1,14 @@
+\header {
 
+texidoc = "Lyrics syllables are aligned according to
+  punctuation. Stanza and stz set stanza numbers. "
+
+}
 
        
 \score {
 \addlyrics
-  \notes \relative c'' \context Voice = duetto { \time 3/4; g2 e4 a2 f4 g2.  }
+  \notes \relative c'' \context Voice = duetto { \time 3/4 g2 e4 a2 f4 g2.  }
   \lyrics \context Lyrics <
   \context LyricsVoice = "duet-1" {
     \property LyricsVoice . stanza = "Bert"
@@ -12,6 +17,6 @@
     \property LyricsVoice . stanza = "Ernie" 
     Ooooo, ch\'e -- ri, je t'aime. }
   >
-  \paper { linewidth = -1.0;}
+  \paper { linewidth = -1.0}
 }
 
index c99aa0a88e1ac1ea2046258b05bf4e6c30f76cdc..1392a639a51f9e40de5b3c70f7a782b5a814e740 100644 (file)
@@ -1,20 +1,22 @@
 \header{
+
 texidoc="
 Multiple measure rests do not collide with barlines and clefs.  They
 are not expanded when you set @code{Score.skipBars}.  Although the
 multi-measure-rest is a Spanner, minimum distances are set to keep it
 colliding from barlines. 
-";
+"
+
 }
 
 
-\score { \notes { \time 3/4; \key cis \major;
+\score { \notes { \time 3/4 \key cis \major
            R2.*15 R2. R2.*7 }
        \paper {
        \translator {
                \ScoreContext
                skipBars = ##t
        }
-       linewidth = -1.;        
+       linewidth = -1. 
        }
 }
diff --git a/input/regression/stanza-number.ly b/input/regression/stanza-number.ly
new file mode 100644 (file)
index 0000000..bd56fc5
--- /dev/null
@@ -0,0 +1,13 @@
+\header {
+texidoc = "Stanza numbers may differ for the first and following systems."
+}
+
+\score {
+
+< \context LyricsVoice \lyrics {
+
+\property LyricsVoice . stanza =  "first"
+\property LyricsVoice . stz =  "2nd"
+Foo1 Bar1   }
+
+\notes { c''1 \break c''1 }>} 
index 6cef8dee955b399acb5a8905d9c7857ae65d3ab8..6fba5af310a06aac942b9cb45d6f09da604a187d 100644 (file)
@@ -1,17 +1,17 @@
 
-% lines preceded by a percent are comments.
+% lines preceded by a percent sign are comments.
 \include "paper16.ly"
 \score {
-    \notes                     
+    \notes
     \relative c''
-        \sequential {          
-           \key g \major;
-           \time 3/4;          
+        \sequential {
+           \key g \major
+           \time 3/4    
 
        \repeat "volta" 2 \sequential {
            d4 g,8 a b c d4 g, g |
            e'4 c8 d e fis g4 g, g |
-           c4 d8()c b a( )b4 c8 b a g |
+           c4 d8( )c b a( )b4 c8 b a g |
            a4 [b8 a] [g fis] g2.  |
        }
 
@@ -22,9 +22,9 @@
         g4 fis e |
         fis a,  r8 cis8
         d2.-\fermata
-        \bar "|.";
+        \bar "|."
     }
     \paper {
-       linewidth = 10.0 \cm; % standard settings are too wide for a book
+       linewidth = 10.0 \cm % standard settings are too wide for a book
    }
 }
index 1dd8aa064d47c3dea55bc5923d91d23a56eeab9a..79392324519f9a6fa5df5b54a945722c1a94d509 100644 (file)
@@ -1,24 +1,20 @@
-  \version "1.3.138";
-  \header {
-        title = "Two miniatures";
-  }
-  
-  #(set! point-and-click line-column-location)
-  
-  \paper { linewidth = -1.0; }
+\version "1.3.138"
+\header { title = "Two miniatures" }
 
-  \score {
+#(set! point-and-click line-column-location)
+
+\paper { linewidth = -1.0 }
+
+\score {
     \notes { c'4 d'4 }
     \header {
-       opus = "Opus 1.";
-       piece = "Up";
-    }
-  }
-  
-  \score {
-    \notes { d'4 c'4  }
+        opus = "Opus 1."
+        piece = "Up" }
+}
+
+\score {
+    \notes { d'4 c'4 }
     \header {
-       opus = "Opus 2.";
-       piece = "Down";
-    }
-  }
+        opus = "Opus 2."
+        piece = "Down" }
+}
index f89b07f2f5df859836c64ad8faab610332ce473e..11cf5fb3094be6bfd8d61da26f9e57169417f4f3 100644 (file)
@@ -1,31 +1,28 @@
 
-\include "os-music.ly";
-\include "paper16.ly";
+\include "os-music.ly"
+\include "paper16.ly"
 
 \score {
   \context Staff <
+    \property Score.skipBars = ##t
     \property Staff.midiInstrument = #"flute"
     \global
     \Key
     \flautoII
   >
   \header {
-    instrument = "flute I";
+    instrument = "flute I"
   }
   \paper {
-    linewidth = 80 * \staffspace;
-    textheight = 40 * \staffspace;
-    \translator {
-      \OrchestralScoreContext
-      skipBars = ##t
-    }
+    linewidth = 80 * \staffspace
+    textheight = 40 * \staffspace
   }
   \midi {
-    \tempo 4 = 75;
+    \tempo 4 = 75
   }
 }
 
 
 % switch off settings of -score file, so the rest of the
 % tutorial isn't \special
-#(set! point-and-click #f)
\ No newline at end of file
+#(set! point-and-click #f)
index 8c4fc4f4c6f2ce4b42ee6131e781a9a9652b26e9..db0e3b3938a9e122fb8b896506e9c0c79b8d8a5a 100644 (file)
@@ -1,8 +1,8 @@
 
-\version "1.3.138";
+\version "1.3.138"
 
-\include "os-music.ly";
-\include "paper13.ly";
+\include "os-music.ly"
+\include "paper13.ly"
 
 #(set! point-and-click line-column-location)
 #(define text-flat '((font-relative-size . -2) (music "accidentals--1")))
@@ -10,6 +10,7 @@
 \score {
   <
     \global
+    \property Score.BarNumber \override #'padding = #3
     \context StaffGroup = woodwind <
       \context Staff = flauti <
        \property Staff.midiInstrument = #"flute"
@@ -25,7 +26,7 @@
        \property Staff.midiInstrument = #"timpani"
        \property Staff.instrument = #'(lines "Timpani" "(C-G)")
        \property Staff.instr = #"Timp."
-       \clef bass;
+       \clef bass
         \Key
        \timpani
       >
        \property Staff.instrument = #`(lines "Corno" (rows "(E" ,text-flat ")"))
        \property Staff.instr = #`(lines "Cor."  (rows "(E" ,text-flat ")"))
        \property Staff.transposing = #3
-       \notes \key bes \major;
+       \notes \key bes \major
        \context Voice=one \corno
       >
     >
   >
   \paper {
-    indent = 15 * \staffspace;
-    linewidth = 60 * \staffspace;
-    textheight = 90 * \staffspace;
-    \translator{
-      \ThreadContext
-      \consists "Rest_engraver";
-    }
+    indent = 15 * \staffspace
+    linewidth = 60 * \staffspace
+    textheight = 90 * \staffspace
     \translator{
       \VoiceContext
-      \remove "Rest_engraver";    
-      \consists "Multi_measure_rest_engraver";
-      \consists "Bar_engraver";
+      \consists "Multi_measure_rest_engraver"
     }
     \translator{
       \HaraKiriStaffContext
-      \remove "Multi_measure_rest_engraver";
-      \remove "Bar_engraver";
-    }
-    \translator {
-      \OrchestralScoreContext
-      BarNumber \override #'padding = #3
+      \remove "Multi_measure_rest_engraver"
     }
   }
   \midi {
-    \tempo 4 = 75;
+    \tempo 4 = 75
   }
 }
 
index 653c26a6615a1df6864a9cbdc613420b0a8d64b0..9b96735fad5a070f2a03ffb1899f8c469e7b0959 100644 (file)
@@ -1,60 +1,62 @@
 
-\include "paper16.ly";
+\include "paper16.ly"
 
 stemdown = \property Voice.Stem \override #'direction = #-1
 stemup = \property Voice.Stem \override #'direction = #1
 stemboth = \property Voice.Stem \revert #'direction  
 
 viola = \notes \relative c' \context Voice = viola {
-       <c4-\f-\arpeggio g' c>
-       \stemDown g'8. b,16
-       s1 s2. r4
-       g
+    <c4-\f-\arpeggio g' c>
+    \stemDown g'8. b,16
+    s1 s2. r4
+    g
 }
 
 oboes = \notes \relative c'' \context Voice = oboe {
-       \stemUp s4  g8. b,16 c8 r <e'8.^\p g> <f16 a>
-       \grace <e8( g> <d4 f> <c2 e> \times 2/3 { <d8 \< f> <e g> <f a> }
-       <
-         { \times 2/3 { a8 g c } \! c2 }
-         \context Voice = oboeTwo {
-               \stemDown
-               \grace {
-                 \property Grace.Stem \override #'direction = #-1
-                 [f,16 g] }
-               f8 e e2
-       } >
-       \stemBoth
-       \grace <c,8( e> <)b8. d8.-\trill> <c16 e> | 
-       [<d ( f> < )f8. a>] <)b,8 d> r [<d16( f> <f8. )a>] <b,8 d> r  |
-       [<c16( e>  < )e8. g>] <c8 e,>
+    \stemUp s4  g8. b,16 c8 r <e'8.^\p g> <f16 a>
+    \grace <e8( g> <d4 f> <c2 e>
+    \times 2/3 { <d8 \< f> <e g> <f a> }
+    <
+        { \times 2/3 { a8 g c } \! c2 }
+        \context Voice = oboeTwo {
+            \stemDown
+            \grace {
+                \property Grace.Stem \override #'direction = #-1
+                [f,16 g] }
+                f8 e e2
+            }
+    >
+    \stemBoth
+    \grace <c,8( e> <)b8. d8.-\trill> <c16 e> | 
+    [<d ( f> < )f8. a>] <)b,8 d> r [<d16( f> <f8. )a>] <b,8 d> r  |
+    [<c16( e>  < )e8. g>] <c8 e,>
 }
 
-hoomPah  =  \repeat unfold 8
-  \notes  \transpose c' { c8 \stemDown c'8 \stemUp }
+hoomPah = \repeat unfold 8 \notes
+    \transpose c' { c8 \stemDown c'8 \stemUp }
 
 bassvoices = \notes \relative c' {
-       c4 g8. b,16
-       \autochange Staff \hoomPah
-       \translator Staff = down
-       \stemDown [c8 c'8] r4
-       <g d'> r4
-       < {\stemUp r2 <e4 c'> <c8 g'> }
-         \context Voice = reallyLow  {\stemDown g2 ~ | g4 c8 } >
+    c4 g8. b,16
+    \autochange Staff \hoomPah
+    \translator Staff = down
+    \stemDown [c8 c'8] r4
+    <g d'> r4
+    < {\stemUp r2 <e4 c'> <c8 g'> }
+        \context Voice = reallyLow  {\stemDown g2 ~ | g4 c8 } >
 }
 
 \score {
-       \context PianoStaff \notes <
-               \context Staff = up < \time 2/2;
-                       \viola
-                       \oboes
-               >
-               \context Staff = down < \time 2/2; \clef bass;
-                       \bassvoices
-               >
-       >
-       \midi { }
-       \paper {
-         indent = 0.0;
-         linewidth = 15.0 \cm; }
+    \context PianoStaff \notes <
+        \context Staff = up < \time 2/2
+             \viola
+             \oboes
+         >
+         \context Staff = down < \time 2/2 \clef bass;
+             \bassvoices
+         >
+    >
+    \midi { }
+    \paper {
+        indent = 0.0
+        linewidth = 15.0 \cm }
 }
index 5a6c0eff0f78887c7f8a04d661e180cd89c6dcc6..8205f6c3df02f662a0406faca62a2faa90ddb19d 100644 (file)
@@ -1,49 +1,49 @@
-\version "1.3.140"
+\version "1.3.146"
 
 %
 % setup for Request->Element conversion. Guru-only
 %
 
 StaffContext=\translator {
-       \type "Engraver_group_engraver";
-       \name Staff ;
-       \consists "Output_property_engraver";   
+       \type "Engraver_group_engraver"
+       \name Staff 
+       \consists "Output_property_engraver"    
        Generic_property_list = #generic-staff-properties
-       \consists "Property_engraver";
+       \consists "Property_engraver"
        
-       \consists "Multi_measure_rest_engraver";
+       \consists "Multi_measure_rest_engraver"
 
-       \consists "Bar_engraver";
+       \consists "Bar_engraver"
  % Bar_engraver must be first so default bars aren't overwritten
 % with empty ones.
 
 
-%      \consists "Repeat_engraver";
-       \consists "Volta_engraver";
-       \consists "Separating_line_group_engraver";     
+%      \consists "Repeat_engraver"
+       \consists "Volta_engraver"
+       \consists "Separating_line_group_engraver"      
 
 
 
-       \consists "Clef_engraver";
-       \consists "Key_engraver";
-       \consists "Time_signature_engraver";
-       \consists "Staff_symbol_engraver";
-       \consists "Collision_engraver";
-       \consists "Rest_collision_engraver";
-       \consists "Local_key_engraver";
-       \consists "Piano_pedal_engraver";
+       \consists "Clef_engraver"
+       \consists "Key_engraver"
+       \consists "Time_signature_engraver"
+       \consists "Staff_symbol_engraver"
+       \consists "Collision_engraver"
+       \consists "Rest_collision_engraver"
+       \consists "Local_key_engraver"
+       \consists "Piano_pedal_engraver"
 
 %{
-       The Instrument_name_engraver puts the name of the instrument
-       (\property Staff.instrument; Staff.instr for subsequent lines)
+       The Instrument_name_engravei puts the name of the instrument
+       (\property Staff.instrument Staff.instr for subsequent lines)
        to the left of a staff.
 
        This is commented out, so you don't get funny things on the
        PianoStaff      
-       \consists "Instrument_name_engraver";
+       \consists "Instrument_name_engraver"
 %}
 
-       \consistsend "Axis_group_engraver";
+       \consistsend "Axis_group_engraver"
        
        MinimumVerticalExtent = ##f
        ExtraVerticalExtent = ##f
@@ -56,143 +56,143 @@ StaffContext=\translator {
        instrument = #""
        instr = #""
          
-       \accepts "Voice";
+       \accepts "Voice"
 }
 
 
 StaffContainerContext = \translator {
-       \type Engraver_group_engraver;
-       \consists "Axis_group_engraver";
+       \type Engraver_group_engraver
+       \consists "Axis_group_engraver"
        MinimumVerticalExtent = ##f
        ExtraVerticalExtent = ##f
        VerticalExtent = ##f 
        
-       \accepts Staff;
-       \name StaffContainer;
+       \accepts Staff
+       \name StaffContainer
 }
 
 InnerChoirStaffContext = \translator {
-       \type "Engraver_group_engraver";
-       \name InnerChoirStaff;
-       alignmentReference = \center;
-       \consists "System_start_delimiter_engraver";
+       \type "Engraver_group_engraver"
+       \name InnerChoirStaff
+       alignmentReference = #0
+       \consists "System_start_delimiter_engraver"
        SystemStartDelimiter \override #'glyph = #'bracket
 
-       \accepts "Staff";
-       \accepts "RhythmicStaff";
-       \accepts "GrandStaff";
-       \accepts "PianoStaff";
-       \accepts "Lyrics";
-       \accepts "ChordNames";
+       \accepts "Staff"
+       \accepts "RhythmicStaff"
+       \accepts "GrandStaff"
+       \accepts "PianoStaff"
+       \accepts "Lyrics"
+       \accepts "ChordNames"
 }
 ChoirStaffContext = \translator {
        \InnerChoirStaffContext
-       \name ChoirStaff;
-       \accepts "InnerChoirStaff";
-       \accepts "InnerStaffGroup";
+       \name ChoirStaff
+       \accepts "InnerChoirStaff"
+       \accepts "InnerStaffGroup"
 }
 
 
 RhythmicStaffContext=\translator{
-       \type "Engraver_group_engraver";
+       \type "Engraver_group_engraver"
        
-       \consists "Property_engraver";
-       \consists "Output_property_engraver";   
+       \consists "Property_engraver"
+       \consists "Output_property_engraver"    
 
        Generic_property_list = #generic-staff-properties
        MinimumVerticalExtent = ##f
        ExtraVerticalExtent = ##f
        VerticalExtent = ##f 
 
-       \consists "Pitch_squash_engraver";
-       \consists "Separating_line_group_engraver";     
-       \name RhythmicStaff;
-       \alias "Staff";
+       \consists "Pitch_squash_engraver"
+       \consists "Separating_line_group_engraver"      
+       \name RhythmicStaff
+       \alias "Staff"
        
        Bar \override #'bar-size = #4
        VoltaBracket \override #'minimum-space =  #15  % urg, in \pt
        VoltaBracket \override #'padding =  #5  % urg, in \pt
        StaffSymbol \override #'line-count = #1 
 
-%      \consists "Repeat_engraver";
-       \consists "Volta_engraver";
-       \consists "Bar_engraver";
-       \consists "Time_signature_engraver";
-       \consists "Staff_symbol_engraver";
-       \consistsend "Axis_group_engraver";
-       \accepts "Voice";
+%      \consists "Repeat_engraver"
+       \consists "Volta_engraver"
+       \consists "Bar_engraver"
+       \consists "Time_signature_engraver"
+       \consists "Staff_symbol_engraver"
+       \consistsend "Axis_group_engraver"
+       \accepts "Voice"
 }
 
 
 VoiceContext = \translator {
-       \type "Engraver_group_engraver";
-       \name Voice;
+       \type "Engraver_group_engraver"
+       \name Voice
 
        Generic_property_list = #generic-voice-properties
 
        % must come before all
-       \consists "Voice_devnull_engraver";
-       \consists "Output_property_engraver";   
-       \consists "Arpeggio_engraver";
+       \consists "Voice_devnull_engraver"
+       \consists "Output_property_engraver"    
+       \consists "Arpeggio_engraver"
 
-       \consists "Text_spanner_engraver";
-       \consists "Property_engraver";
+       \consists "Text_spanner_engraver"
+       \consists "Property_engraver"
        
-       \consists "Breathing_sign_engraver";
-       \consists "Rest_engraver";
-       \consists "Dot_column_engraver";
-       \consists "Stem_engraver";
-       \consists "Beam_engraver";
-       \consists "Auto_beam_engraver";
+       \consists "Breathing_sign_engraver"
+       % \consists "Rest_engraver"
+       \consists "Dot_column_engraver"
+       \consists "Stem_engraver"
+       \consists "Beam_engraver"
+       \consists "Auto_beam_engraver"
 
-       \consists "Chord_tremolo_engraver";
-       \consists "Percent_repeat_engraver";
-       \consists "Melisma_engraver";
+       \consists "Chord_tremolo_engraver"
+       \consists "Percent_repeat_engraver"
+       \consists "Melisma_engraver"
 
 %{
  Must come before text_engraver, but after note_column engraver.
 
 %}
-       \consists "Dynamic_engraver";
-       \consists "Text_engraver";
-
-       \consists "Script_engraver";
-       \consists "Script_column_engraver";
-       \consists "Rhythmic_column_engraver";
-       \consists "Phrasing_slur_engraver";
-       \consists "Slur_engraver";
-       \consists "Tie_engraver";
-       \consists "Tuplet_engraver";
-       \consists "Grace_position_engraver";
-       \consists "A2_engraver";
-
-       \consists "Skip_req_swallow_translator";
-       \accepts Thread; % bug if you leave out this!
-       \accepts Grace;
+       \consists "Dynamic_engraver"
+       \consists "Text_engraver"
+
+       \consists "Script_engraver"
+       \consists "Script_column_engraver"
+       \consists "Rhythmic_column_engraver"
+       \consists "Phrasing_slur_engraver"
+       \consists "Slur_engraver"
+       \consists "Tie_engraver"
+       \consists "Tuplet_engraver"
+       \consists "Grace_position_engraver"
+       \consists "A2_engraver"
+
+       \consists "Skip_req_swallow_translator"
+       \accepts Thread % bug if you leave out this!
+       \accepts Grace
 }
 
 GraceContext=\translator {
-       \type "Grace_engraver_group";
-       \name "Grace";
-       \consists "Output_property_engraver";   
+       \type "Grace_engraver_group"
+       \name "Grace"
+       \consists "Output_property_engraver"    
 
        Generic_property_list = #generic-grace-properties
        
-       \consists "Note_heads_engraver";
-       \consists "Local_key_engraver";
-       \consists "Stem_engraver";
-       \consists "Beam_engraver";
-       \consists "Slur_engraver";
+       \consists "Note_heads_engraver"
+       \consists "Local_key_engraver"
+       \consists "Stem_engraver"
+       \consists "Beam_engraver"
+       \consists "Slur_engraver"
 
-       \consists "Auto_beam_engraver";
-       \consists "Align_note_column_engraver";
+       \consists "Auto_beam_engraver"
+       \consists "Align_note_column_engraver"
 
-       \consists "Rhythmic_column_engraver";
+       \consists "Rhythmic_column_engraver"
 
-       \consists "Dynamic_engraver";% in Grace ???
-       \consists "Text_engraver"; % in Grace ???
+       \consists "Dynamic_engraver"% in Grace ???
+       \consists "Text_engraver" % in Grace ???
 
-       \consists "Property_engraver";
+       \consists "Property_engraver"
 
        Stem \override  #'flag-style = #"grace"
        Stem \override  #'stem-length = #6.0
@@ -215,131 +215,132 @@ GraceContext=\translator {
                 = #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
 
        weAreGraceContext = ##t   
-       graceAccidentalSpace= 1.5 ; % in staff space
+       graceAccidentalSpace= #1.5  % in staff space
 }
 
 ThreadContext = \translator{
-       \type Engraver_group_engraver;
-       \name Thread;
+       \type Engraver_group_engraver
+       \name Thread
        
-       \consists "Thread_devnull_engraver";
-       \consists "Note_heads_engraver";
-       \consists "Note_head_line_engraver";
-       \consists "Output_property_engraver";   
+       \consists "Thread_devnull_engraver"
+       \consists "Note_heads_engraver"
+       \consists "Rest_engraver"
+       \consists "Note_head_line_engraver"
+       \consists "Output_property_engraver"    
        Generic_property_list = #generic-thread-properties
-       \consists "Property_engraver";
+       \consists "Property_engraver"
 }
 
 GrandStaffContext=\translator{
-       \type "Engraver_group_engraver";
-       \name GrandStaff;
-       \consists "Span_bar_engraver";
-       \consists "Span_arpeggio_engraver";
-       \consists "System_start_delimiter_engraver";
+       \type "Engraver_group_engraver"
+       \name GrandStaff
+       \consists "Span_bar_engraver"
+       \consists "Span_arpeggio_engraver"
+       \consists "System_start_delimiter_engraver"
        SystemStartDelimiter \override #'glyph = #'brace
        
-       \consists "Property_engraver";  
+       \consists "Property_engraver"   
        Generic_property_list = #generic-grand-staff-properties
-       \accepts "Staff";
+       \accepts "Staff"
 }
 
 PianoStaffContext = \translator{
        \GrandStaffContext
-       \name "PianoStaff";
+       \name "PianoStaff"
 
-       \consists "Vertical_align_engraver";
+       \consists "Vertical_align_engraver"
 
-       alignmentReference = \center;
+       alignmentReference = #0
        verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
        VerticalAlignment \override #'forced-distance = #12
 
-%      \consistsend "Axis_group_engraver";
+%      \consistsend "Axis_group_engraver"
 }
 
 InnerStaffGroupContext= \translator {
-       \type "Engraver_group_engraver";
-       \name InnerStaffGroup;
+       \type "Engraver_group_engraver"
+       \name InnerStaffGroup
 
-       \consists "Span_bar_engraver";
-       \consists "Span_arpeggio_engraver";
-       \consists "Output_property_engraver";   
+       \consists "Span_bar_engraver"
+       \consists "Span_arpeggio_engraver"
+       \consists "Output_property_engraver"    
        SystemStartDelimiter \override #'glyph = #'bracket
 
-       \consists "System_start_delimiter_engraver";
-       \accepts "Staff";
-       \accepts "RhythmicStaff";
-       \accepts "GrandStaff";
-       \accepts "PianoStaff";
+       \consists "System_start_delimiter_engraver"
+       \accepts "Staff"
+       \accepts "RhythmicStaff"
+       \accepts "GrandStaff"
+       \accepts "PianoStaff"
        
-       \accepts "Lyrics";
-       \accepts "ChordNames";
+       \accepts "Lyrics"
+       \accepts "ChordNames"
 }
 StaffGroupContext = \translator {
        \InnerStaffGroupContext
-       \name StaffGroup;
-       \accepts "InnerChoirStaff";
-       \accepts "ChoirStaff";
-       \accepts "InnerStaffGroup";
+       \name StaffGroup
+       \accepts "InnerChoirStaff"
+       \accepts "ChoirStaff"
+       \accepts "InnerStaffGroup"
 }
 
 
 % UGH! JUNKME
 LyricsVoiceContext= \translator{
-       \type "Engraver_group_engraver";
-       \consistsend "Axis_group_engraver";
+       \type "Engraver_group_engraver"
+       \consistsend "Axis_group_engraver"
        MinimumVerticalExtent = #(cons -1.2 1.2)
        ExtraVerticalExtent = ##f
        VerticalExtent = ##f 
-       \name LyricsVoice ;
-       \consists "Separating_line_group_engraver";
-       \consists "Lyric_engraver";
-       \consists "Extender_engraver";
-       \consists "Hyphen_engraver";
-       \consists "Stanza_number_engraver";
-       phrasingPunctuation = #".,;:!?\""
+       \name LyricsVoice 
+       \consists "Separating_line_group_engraver"
+       \consists "Lyric_engraver"
+       \consists "Extender_engraver"
+       \consists "Hyphen_engraver"
+       \consists "Stanza_number_engraver"
+       phrasingPunctuation = #".,:!?\""
        
 }
 NoteNamesContext = \translator {
-       \type "Engraver_group_engraver";
-       \name NoteNames;
-       \consistsend "Axis_group_engraver";
+       \type "Engraver_group_engraver"
+       \name NoteNames
+       \consistsend "Axis_group_engraver"
 
        MinimumVerticalExtent = ##f
        ExtraVerticalExtent = ##f
        VerticalExtent = ##f 
 
        
-       \consists "Note_name_engraver";
-       \consists "Separating_line_group_engraver";
+       \consists "Note_name_engraver"
+       \consists "Separating_line_group_engraver"
 }
 
 LyricsContext = \translator {
-       \type "Engraver_group_engraver";
-       \name Lyrics;
-       \consists Vertical_align_engraver; %need this for getting folded repeats right.
+       \type "Engraver_group_engraver"
+       \name Lyrics
+       \consists Vertical_align_engraver %need this for getting folded repeats right.
        Generic_property_list = #generic-lyrics-properties
-       \consists "Property_engraver";
-       \consistsend "Axis_group_engraver";
+       \consists "Property_engraver"
+       \consistsend "Axis_group_engraver"
        MinimumVerticalExtent = ##f
        ExtraVerticalExtent = ##f
        VerticalExtent = ##f 
        
-       \accepts "LyricsVoice";
+       \accepts "LyricsVoice"
 }
 
 
 ChordNamesContext = \translator {
-       \type "Engraver_group_engraver";
-       \name ChordNames;
+       \type "Engraver_group_engraver"
+       \name ChordNames
 
        Generic_property_list = #generic-chord-staff-properties
 
-       \consists "Property_engraver";  
-       \consists "Output_property_engraver";   
-       \consists "Separating_line_group_engraver";
-       \consists "Chord_name_engraver";
-       \consists "Skip_req_swallow_translator";
-       \consistsend "Axis_group_engraver";
+       \consists "Property_engraver"   
+       \consists "Output_property_engraver"    
+       \consists "Separating_line_group_engraver"
+       \consists "Chord_name_engraver"
+       \consists "Skip_req_swallow_translator"
+       \consistsend "Axis_group_engraver"
        MinimumVerticalExtent = ##f
        ExtraVerticalExtent = ##f
        VerticalExtent = ##f 
@@ -350,9 +351,9 @@ ChordNamesContext = \translator {
 
 
 StupidScore = \translator {
-       \type "Score_engraver";
-       \name Score;
-       \consists "Note_heads_engraver";
+       \type "Score_engraver"
+       \name Score
+       \consists "Note_heads_engraver"
 }
 
 
@@ -360,10 +361,10 @@ StupidScore = \translator {
 
 HaraKiriStaffContext = \translator {
        \StaffContext
-       \remove "Axis_group_engraver";
-       \consistsend "Hara_kiri_engraver";        
-       \consists "Instrument_name_engraver";
-       \accepts "Voice";
+       \remove "Axis_group_engraver"
+       \consistsend "Hara_kiri_engraver"
+       \consists "Instrument_name_engraver"
+       \accepts "Voice"
 }
 %{
   The HaraKiriStaffContexts doesn't override \name,
@@ -376,33 +377,33 @@ HaraKiriStaffContext = \translator {
 
 
 ScoreContext = \translator {
-       \type Score_engraver;
-       \name Score;
+       \type Score_engraver
+       \name Score
        
 
-       \consists "Repeat_acknowledge_engraver";
-       \consists "Timing_engraver";
-       \consists "Output_property_engraver";   
-       \consists "System_start_delimiter_engraver";
-       \consists "Mark_engraver";      
-       \consists "Break_align_engraver";
-       \consists "Spacing_engraver";
-       \consists "Vertical_align_engraver";
-
-       \consists "Lyric_phrasing_engraver";
-       \consists "Bar_number_engraver";
-       \consists "Span_arpeggio_engraver";
-
-       \accepts "Staff";       
-       \accepts "StaffContainer";
-       \accepts "StaffGroup";
-       \accepts "RhythmicStaff";       
-       \accepts "Lyrics";
-       \accepts "ChordNames";
-       \accepts "GrandStaff";
-       \accepts "ChoirStaff";
-       \accepts "PianoStaff";
-       \accepts "NoteNames";
+       \consists "Repeat_acknowledge_engraver"
+       \consists "Timing_engraver"
+       \consists "Output_property_engraver"
+       \consists "System_start_delimiter_engraver"
+       \consists "Mark_engraver"       
+       \consists "Break_align_engraver"
+       \consists "Spacing_engraver"
+       \consists "Vertical_align_engraver"
+
+       \consists "Lyric_phrasing_engraver"
+       \consists "Bar_number_engraver"
+       \consists "Span_arpeggio_engraver"
+
+       \accepts "Staff"
+       \accepts "StaffContainer"
+       \accepts "StaffGroup"
+       \accepts "RhythmicStaff"        
+       \accepts "Lyrics"
+       \accepts "ChordNames"
+       \accepts "GrandStaff"
+       \accepts "ChoirStaff"
+       \accepts "PianoStaff"
+       \accepts "NoteNames"
 
        soloText = #"Solo"
        soloIIText = #"Solo II"
@@ -437,8 +438,8 @@ ScoreContext = \translator {
        clefGlyph = #"clefs-G"
        clefPosition = #-2
 
-        automaticPhrasing = ##t;
-       alignmentReference = \down;
+        automaticPhrasing = ##t
+       alignmentReference = #-1   % \down
        defaultBarType = #"|"
 
        explicitClefVisibility = #all-visible
@@ -468,7 +469,6 @@ ScoreContext = \translator {
          Staff_bar
          Time_signature
          Custos
-         Stanza_number
        )
 
 
index 79d241faa061911f0c3a1037a8822b80978a4b49..3e330e34e132b25d98cfc24cb236c467856e28a8 100644 (file)
@@ -96,24 +96,24 @@ def check_clef(s):
              # about this we'll support that.
              s = s[4:]
              state.base_octave = -1
-             voices_append("\\clef \"G_8\";\n")
+             voices_append("\\clef \"G_8\"\n")
       elif re.match('^treble', s):
               s = s[6:]
               if re.match ('^-8', s):
                       s = s[2:]
                       state.base_octave = -2
-                      voices_append("\\clef \"G_8\";\n")
+                      voices_append("\\clef \"G_8\"\n")
               else:
                       state.base_octave = 0
-                      voices_append("\\clef treble;\n")
+                      voices_append("\\clef treble\n")
       elif re.match('^alto', s):
               s = s[4:]
               state.base_octave = -1
-              voices_append ("\\clef alto;\n" )
+              voices_append ("\\clef alto\n" )
       elif re.match('^bass',s ):
               s = s[4:]
               state.base_octave = -2
-              voices_append ("\\clef bass;\n" )
+              voices_append ("\\clef bass\n" )
       return s
 
 def select_voice (name, rol):
@@ -153,7 +153,7 @@ def dump_header (outf,hdr):
        ks = hdr.keys ()
        ks.sort ()
        for k in ks:
-               outf.write ('\t%s = "%s";\n'% (k,hdr[k]))
+               outf.write ('\t%s = "%s"\n'% (k,hdr[k]))
        outf.write ('}')
 
 def dump_lyrics (outf):
@@ -221,7 +221,7 @@ def dump_score (outf):
        if part_names:
                outf.write ("\t    \\translator \n\t    {\n")
                outf.write ("\t\t\\StaffContext\n")
-               outf.write ("\t\t\\consists Staff_margin_engraver;\n")
+               outf.write ("\t\t\\consists Staff_margin_engraver\n")
                outf.write ("\t    }\n")
        outf.write ("\t}\n\t\\midi {}\n}\n")
 
@@ -548,7 +548,7 @@ def try_parse_header_line (ln, state):
                                set_default_len_from_time_sig (a)
                        else:
                                length_specified = 0
-                       voices_append ('\\time %s;' % a)
+                       voices_append ('\\time %s' % a)
                        state.next_bar = ''
                if g == 'K': # KEY
                        a = check_clef(a)
@@ -564,11 +564,11 @@ def try_parse_header_line (ln, state):
                                                key_info = m.group(1)
                                                clef_info = m.group(2)
                                        __main__.global_key  = compute_key (key_info)# ugh.
-                                       voices_append ('\\key %s;' % lily_key(key_info))
+                                       voices_append ('\\key %s' % lily_key(key_info))
                                        check_clef(clef_info)
                                else:
                                        __main__.global_key  = compute_key (a)# ugh.
-                                       voices_append ('\\key %s \\major;' % lily_key(a))
+                                       voices_append ('\\key %s \\major' % lily_key(a))
                if g == 'N': # Notes
                        header ['footnotes'] = header['footnotes'] +  '\\\\\\\\' + a
                if g == 'O': # Origin
@@ -599,9 +599,9 @@ def try_parse_header_line (ln, state):
                                state.next_bar = ''
                        select_voice (voice, rest)
                if g == 'W':    # Words
-                       lyrics_append(a);
+                       lyrics_append(a)
                if g == 'w':    # vocals
-                       slyrics_append (a);
+                       slyrics_append (a)
 
                return ''
        return ln
@@ -702,7 +702,7 @@ def parse_duration (str, parser_state):
                        str = str[1:]
                while str[0] == '>':
                        str = str [1:]
-                       current_dots = current_dots + 1;
+                       current_dots = current_dots + 1
                        parser_state.next_den = parser_state.next_den * 2
                
                while str[0] == '<':
@@ -954,16 +954,16 @@ old_bar_dict = {
 '|' :  '|'
 }
 bar_dict = {
- '|]' : '\\bar "|.";',
- '||' : '\\bar "||";',
- '[|' : '\\bar "||";',
+ '|]' : '\\bar "|."',
+ '||' : '\\bar "||"',
+ '[|' : '\\bar "||"',
  ':|' : '}',
  '|:' : '\\repeat volta 2 {',
  '::' : '} \\repeat volta 2 {',
  '|1' : '} \\alternative{{',
  '|2' : '} {',
  ':|2' : '} {',
- '|' :  '\\bar "|";'
+ '|' :  '\\bar "|"'
   }
 
 
@@ -986,14 +986,14 @@ def try_parse_bar (str,state):
                if str[:trylen] and bar_dict.has_key (str[:trylen]):
                        s = str[:trylen]
                        if using_old:
-                               bs = "\\bar \"%s\";" % old_bar_dict[s]
+                               bs = "\\bar \"%s\"" % old_bar_dict[s]
                        else:
                                bs = "%s" % bar_dict[s]
                        str = str[trylen:]
                        if s in alternative_opener:
                                if not in_repeat[current_voice_idx]:
                                        using_old = 't'
-                                       bs = "\\bar \"%s\";" % old_bar_dict[s]
+                                       bs = "\\bar \"%s\"" % old_bar_dict[s]
                                else:
                                        doing_alternative[current_voice_idx] = 't'
 
@@ -1006,7 +1006,7 @@ def try_parse_bar (str,state):
                                        if doing_alternative[current_voice_idx]:
                                                do_curly = 't'
                                if using_old:
-                                       bs = "\\bar \"%s\";" % old_bar_dict[s]
+                                       bs = "\\bar \"%s\"" % old_bar_dict[s]
                                else:
                                        bs =  bar_dict[s]
                                doing_alternative[current_voice_idx] = ''
@@ -1014,7 +1014,7 @@ def try_parse_bar (str,state):
                        if s in repeat_opener:
                                in_repeat[current_voice_idx] = 't'
                                if using_old:
-                                       bs = "\\bar \"%s\";" % old_bar_dict[s]
+                                       bs = "\\bar \"%s\"" % old_bar_dict[s]
                                else:
                                        bs =  bar_dict[s]
                        break
@@ -1083,7 +1083,7 @@ def try_parse_chord_delims (str, state):
                str = str[1:]
 
        
-       voices_append ("\\spanrequest \\stop \"slur\"" * end);
+       voices_append ("\\spanrequest \\stop \"slur\"" * end)
        voices_append (ch)
        return str
 
index 563e0308dcb55dae5a4a54d3fb659cfeac1e3a0f..1511bf2a964905f10d1e780c0122271ac9ba31ed 100644 (file)
@@ -283,7 +283,7 @@ articulation_dict ={
        1: '.',
        3: '>',
        18: '"arp"' , # arpeggio
-};
+}
 
 class Articulation:
        def __init__ (self, a,b, finale):
@@ -466,15 +466,15 @@ class Staff:
                        g = m.global_measure
                        e = ''
                        if g and last_key <> g.keysignature:
-                               e = e + "\\key %s \\major; " % lily_notename (g.keysignature)
+                               e = e + "\\key %s \\major " % lily_notename (g.keysignature)
                                last_key = g.keysignature
                        if g and last_time <> g.timesig :
-                               e = e + "\\time %d/%d; " % g.timesig
+                               e = e + "\\time %d/%d " % g.timesig
                                last_time = g.timesig
 
                        
                        if last_clef <> m.clef :
-                               e = e + '\\clef "%s";' % lily_clef (m.clef)
+                               e = e + '\\clef "%s"' % lily_clef (m.clef)
                                last_clef = m.clef
                        if e:
                                if gap <> (0,1):
index d4e4f4e2e06fc07b4bc02d25930d0e463485853a..0bb9cbf01b8f55073015ffb8876de4f92dea9334 100644 (file)
@@ -81,7 +81,7 @@ def warranty ():
        sys.stdout.write ('\n')
        sys.stdout.write (_ (r'''
 Distributed under terms of the GNU General Public License. It comes with
-NO WARRANTY.'''))
+absolutely NO WARRANTY.'''))
        sys.stdout.write ('\n')
 
 def progress (s):
@@ -162,7 +162,9 @@ def help ():
        sys.stdout.write (_ ("Options:"))
        sys.stdout.write ('\n')
        sys.stdout.write (options_help_str (option_definitions))
-       sys.stdout.write ('\n\n')
+       sys.stdout.write ('\n')
+       warning (_ ("%s is far from completed.  Not all constructs are recognised.") % program_name)
+       sys.stdout.write ('\n')
        sys.stdout.write (_ ("Report bugs to %s") % 'bug-gnu-music@gnu.org')
        sys.stdout.write ('\n')
        sys.exit (0)
@@ -441,7 +443,7 @@ class Clef:
                self.type = cl
                
        def dump (self):
-               return '\\clef %s;' % self.type
+               return '\\clef %s' % self.type
 
 key_sharps = ('c', 'g', 'd', 'a', 'e', 'b', 'fis')
 key_flats = ('BUG', 'f', 'bes', 'es', 'as', 'des', 'ges')
@@ -453,11 +455,11 @@ class Key:
                
        def dump (self):
                if self.sharps and self.flats:
-                       k = '\\keysignature %s ;' % 'TODO'
+                       k = '\\keysignature %s ' % 'TODO'
                elif self.sharps:
-                       k = '\\notes\\key %s \major;' % key_sharps[self.sharps]
+                       k = '\\notes\\key %s \major' % key_sharps[self.sharps]
                elif self.flats:
-                       k = '\\notes\\key %s \major;' % key_flats[self.flats]
+                       k = '\\notes\\key %s \major' % key_flats[self.flats]
                return k
 
 class Time:
@@ -465,7 +467,7 @@ class Time:
                self.frac = frac
                
        def dump (self):
-               return '\\time %d/%d;' % (self.frac[0], self.frac[1])
+               return '\\time %d/%d' % (self.frac[0], self.frac[1])
        
 
 clef_table = {
@@ -888,7 +890,9 @@ class Parser:
        def parse_context_score (self, line):
                debug ('score: ' + line)
                line = string.lstrip (line)
-               #ugh, these should also be matche in context_staff
+               # ugh: these (and lots more) should also be parsed in
+               # context staff.  we should have a class Staff_properties
+               # and parse/set all those.
                m = re.match ('^(time[ \t]*=[ \t]*([0-9]+)[ \t]*/[ \t]*([0-9]+))', line)
                if m:
                        line = line[len (m.group (1)):]
@@ -1040,6 +1044,8 @@ class Pre_processor:
                        s = ''
                return s
 
+       # duh: mup is strictly line-based, except for `define',
+       # which is `@' terminated and may span several lines
        def process_macro_define (self, line):
                global macros
                # don't define new macros in unactive areas
index 81bb7bcc9e8b1f25811b55c4e864a31a8d6c27c4..9f1a3d16993f685c06c43bc99b362582e3a87464 100644 (file)
@@ -77,7 +77,7 @@ class Ref_parser:
        def dump( self):
                str = ''
                for (k,v) in self.dict.items ():
-                       str = str +'  %s = "%s";\n' % (k,v)
+                       str = str +'  %s = "%s"\n' % (k,v)
                str = '\\header {\n%s}' % str
                return str
        
@@ -102,7 +102,7 @@ def get_key (s):
        return ''
 
 def get_timesig (s):
-       return '\\time %s;\n' % s
+       return '\\time %s\n' % s
 
 
 divisions = 4
index c260b068195a68ea37feaf84962a02824476add4..44535e503afa5a6e265c279d3788703c6ae7aa18 100644 (file)
@@ -209,7 +209,7 @@ class Clef:
        def __init__ (self, cl):
                self.type = cl
        def dump(self):
-               return '\\clef %s;' % self.type
+               return '\\clef %s' % self.type
 
 clef_table = {
        'b':'bass'  ,