From: fred Date: Wed, 27 Mar 2002 01:00:24 +0000 (+0000) Subject: lilypond-1.3.146 X-Git-Tag: release/1.5.59~790 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=badde0812054c999bdfb345139829ebe08bac500;p=lilypond.git lilypond-1.3.146 --- diff --git a/CHANGES b/CHANGES index 9d10d4a5a6..4f8acd2e6f 100644 --- 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 c2c931e21b..cbf28cdcc6 100644 --- 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 diff --git a/input/regression/lyrics-multi-stanza.ly b/input/regression/lyrics-multi-stanza.ly index 9aa98b4565..1af9baed14 100644 --- a/input/regression/lyrics-multi-stanza.ly +++ b/input/regression/lyrics-multi-stanza.ly @@ -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} } diff --git a/input/regression/multi-measure-rest.ly b/input/regression/multi-measure-rest.ly index c99aa0a88e..1392a639a5 100644 --- a/input/regression/multi-measure-rest.ly +++ b/input/regression/multi-measure-rest.ly @@ -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 index 0000000000..bd56fc5ad5 --- /dev/null +++ b/input/regression/stanza-number.ly @@ -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 }>} diff --git a/input/tutorial/menuet.ly b/input/tutorial/menuet.ly index 6cef8dee95..6fba5af310 100644 --- a/input/tutorial/menuet.ly +++ b/input/tutorial/menuet.ly @@ -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 } } diff --git a/input/tutorial/miniatures.ly b/input/tutorial/miniatures.ly index 1dd8aa064d..7939232451 100644 --- a/input/tutorial/miniatures.ly +++ b/input/tutorial/miniatures.ly @@ -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" } +} diff --git a/input/tutorial/os-flute-2.ly b/input/tutorial/os-flute-2.ly index f89b07f2f5..11cf5fb309 100644 --- a/input/tutorial/os-flute-2.ly +++ b/input/tutorial/os-flute-2.ly @@ -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) diff --git a/input/tutorial/os-score.ly b/input/tutorial/os-score.ly index 8c4fc4f4c6..db0e3b3938 100644 --- a/input/tutorial/os-score.ly +++ b/input/tutorial/os-score.ly @@ -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 > @@ -45,37 +46,26 @@ \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 } } diff --git a/input/tutorial/sammartini.ly b/input/tutorial/sammartini.ly index 653c26a661..9b96735fad 100644 --- a/input/tutorial/sammartini.ly +++ b/input/tutorial/sammartini.ly @@ -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 { - - \stemDown g'8. b,16 - s1 s2. r4 - g + + \stemDown g'8. b,16 + s1 s2. r4 + g } oboes = \notes \relative c'' \context Voice = oboe { - \stemUp s4 g8. b,16 c8 r - \grace \times 2/3 { } - < - { \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 <)b8. d8.-\trill> | - [ < )f8. a>] <)b,8 d> r [ ] r | - [ < )e8. g>] + \stemUp s4 g8. b,16 c8 r + \grace + \times 2/3 { } + < + { \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 <)b8. d8.-\trill> | + [ < )f8. a>] <)b,8 d> r [ ] r | + [ < )e8. g>] } -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 - r4 - < {\stemUp r2 } - \context Voice = reallyLow {\stemDown g2 ~ | g4 c8 } > + c4 g8. b,16 + \autochange Staff \hoomPah + \translator Staff = down + \stemDown [c8 c'8] r4 + r4 + < {\stemUp r2 } + \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 } } diff --git a/ly/engraver.ly b/ly/engraver.ly index 5a6c0eff0f..8205f6c3df 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -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 ) diff --git a/scripts/abc2ly.py b/scripts/abc2ly.py index 79d241faa0..3e330e34e1 100644 --- a/scripts/abc2ly.py +++ b/scripts/abc2ly.py @@ -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 diff --git a/scripts/etf2ly.py b/scripts/etf2ly.py index 563e0308dc..1511bf2a96 100644 --- a/scripts/etf2ly.py +++ b/scripts/etf2ly.py @@ -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): diff --git a/scripts/mup2ly.py b/scripts/mup2ly.py index d4e4f4e2e0..0bb9cbf01b 100644 --- a/scripts/mup2ly.py +++ b/scripts/mup2ly.py @@ -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 diff --git a/scripts/musedata2ly.py b/scripts/musedata2ly.py index 81bb7bcc9e..9f1a3d1699 100644 --- a/scripts/musedata2ly.py +++ b/scripts/musedata2ly.py @@ -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 diff --git a/scripts/pmx2ly.py b/scripts/pmx2ly.py index c260b06819..44535e503a 100644 --- a/scripts/pmx2ly.py +++ b/scripts/pmx2ly.py @@ -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' ,