Generated by hanwen@cs.uu.nl, From = lilypond-1.4.4, To = lilypond-1.4.5 usage cd lilypond-source-dir; patch -E -p1 < lilypond-1.4.5.diff Patches do not contain automatically generated files or (urg) empty directories, i.e., you should rerun autoconf, configure diff -urN ../lilypond-1.4.4/CHANGES ./CHANGES --- ../lilypond-1.4.4/CHANGES Wed Jun 27 10:17:13 2001 +++ ./CHANGES Sun Jul 15 14:15:40 2001 @@ -1,4 +1,51 @@ +1.4.4.mb1 +======== + +* Documentation fixes + +1.4.4.stable.jcn4 +================= + +* Website: downloadable pictures with better alt texts. +* Bugfix: c:dim7 generates . + +* Bugfix: call Cm5-/7 in Banter style. + +* Bugfix: don't change value of chord modifiers. + +* Bugfix: size and overstrike fix for some Banter chord names. + +* Bugfix: text2html: escape entities inside
.
+
+* Added some template .ly's for evaluation.
+
+* Bugfix: text2html: escape entities inside 
.
+
+* Now really included lexer-gcc-3.0.patch.
+
+* Added feature to ly2dvi to find feta pfa font files used in a
+postscript file to make printing of direct postscript a bit easier:
+
+    lilypond -fps input/trip.ly
+    cat $(ly2dvi -f trip.ps) trip.ps | lpr
+
+* Reincluded 1.4.3.jcn2.
+
+* Website fixes.
+
+* Ly2dvi now leaves .tex and .latex output if latex fails, and cleans
+the temp dir if anything fails.
+
+* Fixes for windows scripts.
+
+* Beam and stem fixes:
+ - Fixes for draw-box and draw_beam PostScript routines.
+ - Stems reach to top (or bottom) of beam.
+ - Beam uses correct stem thickness.
+
+1.4.4
+=====
 
 1.4.3.jcn2
 ==========
diff -urN ../lilypond-1.4.4/Documentation/misc/CHANGES-1.3 ./Documentation/misc/CHANGES-1.3
--- ../lilypond-1.4.4/Documentation/misc/CHANGES-1.3	Fri May 11 15:29:05 2001
+++ ./Documentation/misc/CHANGES-1.3	Thu Jun 28 18:05:31 2001
@@ -41,7 +41,7 @@
 * PO updates.
 
 * petite-ouverture-a-danser.ly bugfix, twinkle.ly bugfix
-V
+
 1.3.153
 =======
 
@@ -363,7 +363,7 @@
 
 * Add a check for regular identifiers to parser.
 
-1.3.145
+1.3.146
 =======
 
 * Make and ly2dvi fixes.
diff -urN ../lilypond-1.4.4/Documentation/topdocs/INSTALL.texi ./Documentation/topdocs/INSTALL.texi
--- ../lilypond-1.4.4/Documentation/topdocs/INSTALL.texi	Wed Jun 27 10:16:36 2001
+++ ./Documentation/topdocs/INSTALL.texi	Thu Jun 28 18:05:31 2001
@@ -500,8 +500,9 @@
 
 Flex (2.5.4a-11) in unstable does not produce g++-3.0 compliant C++
 code.  To compile LilyPond with gcc-3.0 you may do:
+
 @example
-        CC=gcc-3.0 CXX=g++-3.0 ./configure
+        CC=gcc-3.0 CXX=g++-3.0 ./configure --enable-config=gcc-3.0
         make conf=gcc-3.0 -C lily out-gcc-3.0/lexer.cc
         patch -p1 < lexer-gcc-3.0.patch
         make conf=gcc-3.0 -C lily
diff -urN ../lilypond-1.4.4/Documentation/topdocs/index.tely ./Documentation/topdocs/index.tely
--- ../lilypond-1.4.4/Documentation/topdocs/index.tely	Thu May 17 11:40:10 2001
+++ ./Documentation/topdocs/index.tely	Sun Jul 15 14:14:41 2001
@@ -7,7 +7,10 @@
 
 @html
 

-[logo] + +[picture of lily-cello-girl] + @end html diff -urN ../lilypond-1.4.4/Documentation/user/lilypond-book.itely ./Documentation/user/lilypond-book.itely --- ../lilypond-1.4.4/Documentation/user/lilypond-book.itely Sun May 20 21:25:56 2001 +++ ./Documentation/user/lilypond-book.itely Wed Jul 11 14:52:55 2001 @@ -223,6 +223,11 @@ @item printfilename Prints the file name before the music example. Useful in conjunction with @code{\lilypondfile}. +@item relative, relative @var{N} + Use relative octave mode. By default, notes are specified relative + central C. The optional integer argument specifies how many octaves + higher (positive number) or lower (negative number) to place the + starting note. @end table @section Invocation diff -urN ../lilypond-1.4.4/Documentation/user/ly2dvi.itexi ./Documentation/user/ly2dvi.itexi --- ../lilypond-1.4.4/Documentation/user/ly2dvi.itexi Tue Jun 12 02:40:35 2001 +++ ./Documentation/user/ly2dvi.itexi Wed Jul 11 14:52:55 2001 @@ -138,6 +138,9 @@ @item papersize The paper size (as a name, e.g. @code{a4}). It is normally read from the @code{\paper} block. + +@item pagenumber + If set to @code{no}, no page numbers will be printed. @end table @unnumberedsubsec Environment variables diff -urN ../lilypond-1.4.4/Documentation/user/refman.itely ./Documentation/user/refman.itely --- ../lilypond-1.4.4/Documentation/user/refman.itely Sun Jun 3 14:56:56 2001 +++ ./Documentation/user/refman.itely Wed Jul 11 14:52:55 2001 @@ -395,7 +395,7 @@ @lilypond[fragment, relative, singleline, verbatim] \property Voice.tupletSpannerDuration = #(make-moment 1 4) -\times 2/3 { c''8 c c c c c } +\times 2/3 { c'8 c c c c c } @end lilypond The format of the number is determined by the property @@ -974,7 +974,7 @@ @lilypond[fragment,relative,verbatim] \context Staff { - r4 [r8 g'' a r8] r8 [g | a] r8 + r4 [r8 g' a r8] r8 [g | a] r8 } @end lilypond Whenever an manual beam is busy, the automatic beamer will not produce @@ -990,7 +990,7 @@ @lilypond[fragment,relative,verbatim] \context Staff { - [f'8 r16 f g a] + [f8 r16 f g a] [f8 r16 \property Voice.stemLeftBeamCount = #1 f g a] } @end lilypond @@ -1008,7 +1008,7 @@ @lilypond[fragment,relative,verbatim] \property Voice.Beam \set #'direction = #1 \property Voice.Beam \set #'height = #0 - [a''8 e' d c] + [a'8 e' d c] @end lilypond Here's how you'd specify a weird looking beam that instead of being @@ -1017,7 +1017,7 @@ @lilypond[fragment,relative,verbatim] \property Voice.Beam \set #'staff-position = #4 \property Voice.Beam \set #'height = #-4 - [c'8 c] + [c8 c] @end lilypond @cindex @code{default-neutral-direction} @@ -1054,7 +1054,7 @@ @lilypond[fragment,relative,verbatim] \property Voice.Slur \set #'direction = #1 \property Voice.Stem \set #'length = #5.5 - g''8(g)g4 + g'8(g)g4 \property Voice.Slur \set #'attachment = #'(stem . stem) g8(g)g4 @end lilypond @@ -1066,7 +1066,7 @@ @lilypond[fragment,relative,verbatim] \property Voice.Stem \set #'direction = #1 \property Voice.Slur \set #'direction = #1 - d'32( d'4 )d8.. + d32( d'4 )d8.. \property Voice.Slur \set #'attachment = #'(stem . stem) d,32( d'4 )d8.. @end lilypond @@ -1084,7 +1084,7 @@ @lilypond[verbatim,singleline,relative] \property Voice.Beam \override #'direction = #-1 \property Voice.Slur \override #'direction = #1 - c'16( a' f' a a f a, )c, + c16( a' f' a a f a, )c, c( a' f' a a f d, )c \property Voice.Slur \override #'beautiful = #5.0 c( a' f' a a f d, )c @@ -1108,7 +1108,7 @@ respectively. @lilypond[fragment,verbatim,center,relative] - \time 6/4 c'' \( ( d ) e f ( e ) \) d + \time 6/4 c' \( ( d ) e f ( e ) \) d @end lilypond Typographically, the phrasing slur behaves almost exactly like a normal @@ -1397,7 +1397,7 @@ @code{\glissando} to a note: @lilypond[fragment,relative,verbatim] - c''-\glissando c' + c'-\glissando c' @end lilypond @refbugs @@ -1439,7 +1439,7 @@ @code{\sp}, @code{\spp}, @code{\sfz}, and @code{\rfz}. @lilypond[verbatim,singleline,fragment,relative] - c''\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff + c'\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff c2\sf c\rfz @end lilypond @@ -1477,7 +1477,7 @@ \context Voice { \property Voice.crescendoText = "cresc." \property Voice.crescendoSpanner = #'dashed-line - a''2\mf\< a a \!a + a'2\mf\< a a \!a } @end lilypond @@ -1857,7 +1857,7 @@ @lilypond[fragment,relative,verbatim] - \context Voice + \context Voice @end lilypond When an arpeggio crosses staffs in piano music, you attach an arpeggio @@ -1867,7 +1867,7 @@ @lilypond[fragment,relative,verbatim] \context PianoStaff < \property PianoStaff.connectArpeggios = ##t - \context Voice = one { } + \context Voice = one { } \context Voice = other { \clef bass } > @end lilypond @@ -1899,7 +1899,7 @@ \context PianoStaff < \property PianoStaff.followVoice = ##t \context Staff \context Voice { - c'1 + c1 \translator Staff=two b2 a } @@ -3246,7 +3246,7 @@ output}). @lilypond[fragment,relative,verbatim] - a''^"3 $\\times$ \\`a deux" + a'^"3 $\\times$ \\`a deux" @end lilypond You can also use raw PostScript commands embedded in text scripts. This diff -urN ../lilypond-1.4.4/Documentation/windows/compiling.texi ./Documentation/windows/compiling.texi --- ../lilypond-1.4.4/Documentation/windows/compiling.texi Sun Jun 3 14:56:56 2001 +++ ./Documentation/windows/compiling.texi Thu Jun 28 18:05:31 2001 @@ -19,11 +19,19 @@ included in LilyPond's source distribution. @end table +@subsection Cross compiling + These binaries are cross compiled for Windows on a GNU/Linux box. You may want to check out the @uref{http://www.lilypond.org/gnu-windows/cross.tar.gz,cross compilation scripts}. +@subsection Compiling on Windows + +Compiling on Windows should be possible, but how should we now? If you +have any experiences you want to share, please do so at +@uref{http://lilypond.org/wiki?CompilingOnWindows,Compiling on Windows}. +Or write to one of the mailing lists. @section Windows installation specifics diff -urN ../lilypond-1.4.4/Documentation/windows/installing.texi ./Documentation/windows/installing.texi --- ../lilypond-1.4.4/Documentation/windows/installing.texi Wed Jun 6 18:36:02 2001 +++ ./Documentation/windows/installing.texi Thu Jun 28 18:05:31 2001 @@ -90,7 +90,8 @@ @subsection Trouble For problems and solutions see -@uref{Troubleshooting Windows,http://lilypond.org/TroubleshootingWindows}. +@uref{http://lilypond.org/wiki?TroubleshootingWindows,Troubleshooting +Windows} @subsection Additional software diff -urN ../lilypond-1.4.4/Documentation/windows/lily-gs.sh ./Documentation/windows/lily-gs.sh --- ../lilypond-1.4.4/Documentation/windows/lily-gs.sh Thu Apr 19 12:56:39 2001 +++ ./Documentation/windows/lily-gs.sh Sun Jul 8 23:01:26 2001 @@ -3,7 +3,7 @@ gs550="/usr/windows/gstools/gs5.50" -gs650="/usr/windows/gs/gs6.50" +gs650="/usr/windows/gs/gs6.50/bin" gsview26="/usr/windows/gstools/gsview" gsview36="/usr/windows/Ghostgum/GSview" diff -urN ../lilypond-1.4.4/Documentation/windows/lily-miktex.sh ./Documentation/windows/lily-miktex.sh --- ../lilypond-1.4.4/Documentation/windows/lily-miktex.sh Thu Apr 19 12:56:39 2001 +++ ./Documentation/windows/lily-miktex.sh Sun Jul 8 23:01:26 2001 @@ -10,7 +10,7 @@ b="$(cygpath -u ""$reg"")" # Where we installed it -c=texmf="/usr/windows/MiKTeX" +c="/usr/windows/MiKTeX" for i in "$a" "$b" "$c"; do if [ -d "$i" ]; then diff -urN ../lilypond-1.4.4/Documentation/windows/zlily-profile.sh ./Documentation/windows/zlily-profile.sh --- ../lilypond-1.4.4/Documentation/windows/zlily-profile.sh Thu Apr 19 12:56:39 2001 +++ ./Documentation/windows/zlily-profile.sh Sun Jul 8 23:01:26 2001 @@ -22,6 +22,9 @@ export POSIX_TEXINPUTS POSIX_TFMFONTS POSIX_TFMFONTS export WINDOWS_TEXINPUTS WINDOWS_TFMFONTS WINDOWS_MFINPUTS +GS_FONTPATH="$WINDOWS_GS_FONTPATH" +GS_LIB="$WINDOWS_GS_LIB" + PATH="/usr/lilypond/bin:$PATH" PATH="@prefix@/bin:$PATH" diff -urN ../lilypond-1.4.4/GNUmakefile.in ./GNUmakefile.in --- ../lilypond-1.4.4/GNUmakefile.in Sun Jun 3 14:56:56 2001 +++ ./GNUmakefile.in Mon Jul 9 00:18:46 2001 @@ -20,7 +20,7 @@ README_FILES = DEDICATION COPYING NEWS CHANGES ROADMAP README_TXT_FILES = AUTHORS.txt README.txt INSTALL.txt FAQ.txt IN_FILES := $(wildcard *.in) -EXTRA_DIST_FILES = lilypond-font-lock.el lilypond-mode.el lilypond-init.el vimrc VERSION $(README_FILES) $(SCRIPTS) $(IN_FILES) emacsclient.patch mktexnam.patch +EXTRA_DIST_FILES = lilypond-font-lock.el lilypond-mode.el lilypond-init.el vimrc VERSION $(README_FILES) $(SCRIPTS) $(IN_FILES) emacsclient.patch mktexnam.patch lexer-gcc-3.0.patch NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES) INSTALLATION_DIR=$(datadir) INSTALLATION_FILES=$(configuration) VERSION diff -urN ../lilypond-1.4.4/VERSION ./VERSION --- ../lilypond-1.4.4/VERSION Wed Jun 27 12:56:14 2001 +++ ./VERSION Sun Jul 15 14:14:41 2001 @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=4 -PATCH_LEVEL=4 +PATCH_LEVEL=5 MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a diff -urN ../lilypond-1.4.4/input/GNUmakefile ./input/GNUmakefile --- ../lilypond-1.4.4/input/GNUmakefile Sun Jun 3 14:56:56 2001 +++ ./input/GNUmakefile Sun Jul 15 14:14:41 2001 @@ -1,6 +1,6 @@ depth = .. -SUBDIRS=bugs test regression tutorial no-notation ascii-art +SUBDIRS=bugs test regression tutorial no-notation ascii-art template # nereides is tweaked a lot, can't do (read webpage) examples=trip star-spangled-banner paddy twinkle #nereides diff -urN ../lilypond-1.4.4/input/ascii-art/GNUmakefile ./input/ascii-art/GNUmakefile --- ../lilypond-1.4.4/input/ascii-art/GNUmakefile Thu Apr 5 19:20:57 2001 +++ ./input/ascii-art/GNUmakefile Sun Jul 15 14:14:41 2001 @@ -1,8 +1,5 @@ -# input/bugs/Makefile - depth = ../.. LOCALSTEPMAKE_TEMPLATES=ly mutopia include $(depth)/make/stepmake.make - diff -urN ../lilypond-1.4.4/input/bugs/beam.ly ./input/bugs/beam.ly --- ../lilypond-1.4.4/input/bugs/beam.ly Thu Jan 1 01:00:00 1970 +++ ./input/bugs/beam.ly Thu Jun 28 12:48:57 2001 @@ -0,0 +1,15 @@ +\header { + texidoc="beam-stem attachment test" +} + +\score { + \context RhythmicStaff \notes { + \stemUp [c8 c] + \stemDown [c8 c] + \stemUp [c8. c16] + } + \paper { + linewidth = -1.0 + magnification = 64 + } +} \ No newline at end of file diff -urN ../lilypond-1.4.4/input/template/GNUmakefile ./input/template/GNUmakefile --- ../lilypond-1.4.4/input/template/GNUmakefile Thu Jan 1 01:00:00 1970 +++ ./input/template/GNUmakefile Sun Jul 15 14:14:41 2001 @@ -0,0 +1,7 @@ +depth = ../.. + +LOCALSTEPMAKE_TEMPLATES=ly mutopia +EXTRA_DIST_FILES=README + +include $(depth)/make/stepmake.make + diff -urN ../lilypond-1.4.4/input/template/README ./input/template/README --- ../lilypond-1.4.4/input/template/README Thu Jan 1 01:00:00 1970 +++ ./input/template/README Sun Jul 15 14:14:41 2001 @@ -0,0 +1,57 @@ + +* Mention this somewhere in documentation (Tutorial) + +* Better comment-out most header entries, or + move to template/title.ly altogether? + +* Naming conventions for voices/staffs + (think: \autochange, \partcombine)? + +* Add (commented-out) stuff like \time 3/4 + \property Staff.TimeSignature \set #'style = #xxx? + +* Handy emacs shortcuts to (these) templates? + +* Mutopia headers? + +* Another approach would be to not include any music in the templates, + and standardise the naming of the music, so that you'd do: + + title = 'Piano piece' + upper = \notes { ... } + lower = \notes { ... } + + \include "template/piano.ly" + + In this case, we'd also need one simple music example file per + template. This approach can be even easier to use, but is not very + flexible, it only works for simple and uniform pieces. + +* Possibly some of you already have created something like this? I was + thinking of having templates for: + + single melody = melody.ly + melody with lyrics = melody-lyrics.ly + melody with lyrics and chords = melody-lyrics-chords.ly + piano = piano.ly + piano with several voices = piano-4-voices.ly + piano with lyrics (between staffs) = piano-lyrics.ly + piano with melody and lyrics = piano-melody-lyrics.ly + +TODO (Choral templates, anyone?) + piano with lyrics and chords + (string) duet + (string) duet parts + string quartet + string quintet parts + orchestral score + orchestral parts + choral score + choral score with piano reduction (i.e., the piano staves have the + same notes as the choral parts) + choral score with piano accompaniment + choral parts + + + + diff -urN ../lilypond-1.4.4/input/template/melody-lyrics-chords.ly ./input/template/melody-lyrics-chords.ly --- ../lilypond-1.4.4/input/template/melody-lyrics-chords.ly Thu Jan 1 01:00:00 1970 +++ ./input/template/melody-lyrics-chords.ly Sun Jul 15 14:14:41 2001 @@ -0,0 +1,45 @@ +\version "1.5.1" + +\header { + dedication = "dedication" + title = "Title" + subtitle = "Subtitle" + subsubtitle = "Subsubtitle" + composer = "Composer (xxxx-yyyy)" + opus = "Opus 0" + piece = "Piece I" + instrument = "Instrument" + arranger = "Arranger" + poet = "Poet" + texttranslator = "Translator" + copyright = "public domain" + enteredby = "jcn" + source = "urtext" +} + +melody = \notes \relative c' { + a b c d +} + +text = \lyrics { + Aaa Bee Cee Dee +} + +accompaniment = \chords { + a2: c2 +} + +\score { + < + \context ChordNames \accompaniment + \addlyrics + \context Staff = one { + \property Staff.noAutoBeaming = ##t + \property Staff.automaticMelismata = ##t + \melody + } + \context Lyrics \text + > + \paper { } + \midi { } +} diff -urN ../lilypond-1.4.4/input/template/melody-lyrics.ly ./input/template/melody-lyrics.ly --- ../lilypond-1.4.4/input/template/melody-lyrics.ly Thu Jan 1 01:00:00 1970 +++ ./input/template/melody-lyrics.ly Sun Jul 15 14:14:41 2001 @@ -0,0 +1,40 @@ +\version "1.5.1" + +\header { + dedication = "dedication" + title = "Title" + subtitle = "Subtitle" + subsubtitle = "Subsubtitle" + composer = "Composer (xxxx-yyyy)" + opus = "Opus 0" + piece = "Piece I" + instrument = "Instrument" + arranger = "Arranger" + poet = "Poet" + texttranslator = "Translator" + copyright = "public domain" + enteredby = "jcn" + source = "urtext" +} + +melody = \notes \relative c'' { + a b c d +} + +text = \lyrics { + Aaa Bee Cee Dee +} + +\score { + < + \addlyrics + \context Staff = one { + \property Staff.noAutoBeaming = ##t + \property Staff.automaticMelismata = ##t + \melody + } + \context Lyrics \text + > + \paper { } + \midi { } +} diff -urN ../lilypond-1.4.4/input/template/melody.ly ./input/template/melody.ly --- ../lilypond-1.4.4/input/template/melody.ly Thu Jan 1 01:00:00 1970 +++ ./input/template/melody.ly Sun Jul 15 14:14:41 2001 @@ -0,0 +1,28 @@ +\version "1.5.1" + +\header { + dedication = "dedication" + title = "Title" + subtitle = "Subtitle" + subsubtitle = "Subsubtitle" + composer = "Composer (xxxx-yyyy)" + opus = "Opus 0" + piece = "Piece I" + instrument = "Instrument" + arranger = "Arranger" + poet = "Poet" + texttranslator = "Translator" + copyright = "public domain" + enteredby = "jcn" + source = "urtext" +} + +melody = \notes \relative c' { + a b c d +} + +\score { + \context Staff \melody + \paper { } + \midi { } +} diff -urN ../lilypond-1.4.4/input/template/piano-4-voices.ly ./input/template/piano-4-voices.ly --- ../lilypond-1.4.4/input/template/piano-4-voices.ly Thu Jan 1 01:00:00 1970 +++ ./input/template/piano-4-voices.ly Sun Jul 15 14:14:41 2001 @@ -0,0 +1,55 @@ +\version "1.5.1" + +\header { + dedication = "dedication" + title = "Title" + subtitle = "Subtitle" + subsubtitle = "Subsubtitle" + composer = "Composer (xxxx-yyyy)" + opus = "Opus 0" + piece = "Piece I" + instrument = "Instrument" + arranger = "Arranger" + poet = "Poet" + texttranslator = "Translator" + copyright = "public domain" + enteredby = "jcn" + source = "urtext" +} + +upperOne = \notes\relative c'' { + \voiceOne + a b c d +} + +upperTwo = \notes\relative c' { + \voiceTwo + a2 c +} + +lowerOne = \notes\relative c { + \voiceOne + a2 c +} + +lowerTwo = \notes\relative c { + \voiceTwo + a1 +} + +\score { + \context PianoStaff < + %\time 4/4 + \context Staff = upper < + \context Voice = one \upperOne + \context Voice = two \upperTwo + > + \context Staff = lower < + \clef bass + \context Voice = one \lowerOne + \context Voice = two \lowerTwo + > + > + \paper { } + \midi { } +} \ No newline at end of file diff -urN ../lilypond-1.4.4/input/template/piano-lyrics.ly ./input/template/piano-lyrics.ly --- ../lilypond-1.4.4/input/template/piano-lyrics.ly Thu Jan 1 01:00:00 1970 +++ ./input/template/piano-lyrics.ly Sun Jul 15 14:14:41 2001 @@ -0,0 +1,54 @@ +\version "1.5.1" + +\header { + dedication = "dedication" + title = "Title" + subtitle = "Subtitle" + subsubtitle = "Subsubtitle" + composer = "Composer (xxxx-yyyy)" + opus = "Opus 0" + piece = "Piece I" + instrument = "Instrument" + arranger = "Arranger" + poet = "Poet" + texttranslator = "Translator" + copyright = "public domain" + enteredby = "jcn" + source = "urtext" +} + +upper = \notes\relative c'' { + a b c d +} + +lower = \notes\relative c { + a2 c +} + +text = \lyrics { + Aaa Bee Cee Dee +} + +\score { + \context GrandStaff < + \addlyrics + \context Staff = upper \upper + \context Lyrics \text + \context Staff = lower < + \clef bass + \lower + > + > + \paper { + \translator { + \GrandStaffContext + \accepts "Lyrics" + } + \translator { + %\LyricsVoiceContext + \LyricsContext + \consists "Bar_engraver" + } + } + \midi { } +} \ No newline at end of file diff -urN ../lilypond-1.4.4/input/template/piano-melody-lyrics.ly ./input/template/piano-melody-lyrics.ly --- ../lilypond-1.4.4/input/template/piano-melody-lyrics.ly Thu Jan 1 01:00:00 1970 +++ ./input/template/piano-melody-lyrics.ly Sun Jul 15 14:14:41 2001 @@ -0,0 +1,58 @@ +\version "1.5.1" + +\header { + dedication = "dedication" + title = "Title" + subtitle = "Subtitle" + subsubtitle = "Subsubtitle" + composer = "Composer (xxxx-yyyy)" + opus = "Opus 0" + piece = "Piece I" + instrument = "Instrument" + arranger = "Arranger" + poet = "Poet" + texttranslator = "Translator" + copyright = "public domain" + enteredby = "jcn" + source = "urtext" +} + +melody = \notes \relative c'' { + a b c d +} + +text = \lyrics { + Aaa Bee Cee Dee +} + +upper = \notes\relative c'' { + a b c d +} + +lower = \notes\relative c { + a2 c +} + +\score { + < + \addlyrics + \context Staff = mel { + \property Staff.noAutoBeaming = ##t + \property Staff.automaticMelismata = ##t + \melody + } + \context Lyrics \text + + \context PianoStaff < + \context Staff = upper \upper + \context Staff = lower < + \clef bass + \lower + > + > + > + \paper { + \translator { \HaraKiriStaffContext } + } + \midi { } +} \ No newline at end of file diff -urN ../lilypond-1.4.4/input/template/piano.ly ./input/template/piano.ly --- ../lilypond-1.4.4/input/template/piano.ly Thu Jan 1 01:00:00 1970 +++ ./input/template/piano.ly Sun Jul 15 14:14:41 2001 @@ -0,0 +1,39 @@ +\version "1.5.1" + +\header { + dedication = "dedication" + title = "Title" + subtitle = "Subtitle" + subsubtitle = "Subsubtitle" + composer = "Composer (xxxx-yyyy)" + opus = "Opus 0" + piece = "Piece I" + instrument = "Instrument" + arranger = "Arranger" + poet = "Poet" + texttranslator = "Translator" + copyright = "public domain" + enteredby = "jcn" + source = "urtext" +} + +upper = \notes\relative c'' { + a b c d +} + +lower = \notes\relative c { + a2 c +} + +\score { + \context PianoStaff < + %\time 4/4 + \context Staff = upper \upper + \context Staff = lower < + \clef bass + \lower + > + > + \paper { } + \midi { } +} \ No newline at end of file diff -urN ../lilypond-1.4.4/input/test/chord-banter.ly ./input/test/chord-banter.ly --- ../lilypond-1.4.4/input/test/chord-banter.ly Thu Jan 1 01:00:00 1970 +++ ./input/test/chord-banter.ly Sun Jul 15 14:14:41 2001 @@ -0,0 +1,54 @@ +\version "1.3.146" +\header{ +filename = "chord-table.ly" +copyright = "public domain" +enteredby = "jcn" +} + +tab = \notes\transpose c'''\chords{ + c1 c:m c:4 c:m4 c:5+ \break + c:5- c:dim c:5-.5+ c:6 c:m6\break + c:4.6 c:7 c:m7 c:4.7 c:m4.7\break + c:5+.7 c:5-.7 c:m5-.7 c:maj c:m.maj\break + c:4.maj c:m4.maj c:5+.maj c:m4+.maj c:5-.maj\break + c1:m5-.maj c:dim7 c:5-.5+.7 c:6.maj c:m6.maj\break + c:4.6.maj c:9 c:m9 c:4.9 c:m.4.9\break +} + +\score{ +% \context StaffGroup < + < + \context Staff=c \notes\transpose c\tab + \context ChordNames=c \notes\transpose c\tab +%{ + \context Staff=cis \notes\transpose cis\tab + \context ChordNames=cis \notes\transpose cis\tab + \context Staff=des \notes\transpose des\tab + \context ChordNames=des \notes\transpose des\tab + \context Staff=d \notes\transpose d\tab + \context ChordNames=d \notes\transpose d\tab + \context Staff=es \notes\transpose es\tab + \context ChordNames=es \notes\transpose es\tab + \context Staff=e \notes\transpose e\tab + \context ChordNames=e \notes\transpose e\tab + \context Staff=fis \notes\transpose fis\tab + \context ChordNames=fis \notes\transpose fis\tab + \context Staff=g \notes\transpose g\tab + \context ChordNames=g \notes\transpose g\tab + \context Staff=as \notes\transpose as\tab + \context ChordNames=as \notes\transpose as\tab + \context Staff=a \notes\transpose a\tab + \context ChordNames=a \notes\transpose a\tab + \context Staff=bes \notes\transpose bes,\tab + \context ChordNames=bes \notes\transpose bes,\tab + \context Staff=b \notes\transpose b,\tab + \context ChordNames=b \notes\transpose b,\tab +%} + > + \paper{ + textheight = \vsize - 4.0 * \staffheight + } + +} + + diff -urN ../lilypond-1.4.4/input/test/title.ly ./input/test/title.ly --- ../lilypond-1.4.4/input/test/title.ly Mon May 14 00:35:29 2001 +++ ./input/test/title.ly Sun Jul 15 14:14:41 2001 @@ -6,6 +6,7 @@ subtitle = "Subtitle" subsubtitle = "Subsubtitle" composer = "Composer (xxxx-yyyy)" + instrument = "Instrument" arranger = "Arranger" poet = "Poet" % ugr: warning: Identifier name is a keyword: `translator' @@ -14,7 +15,6 @@ copyright = "public domain" enteredby = "jcn" source = "urtext" - instrument = "Instrument" } \score { diff -urN ../lilypond-1.4.4/input/test/trills.ly ./input/test/trills.ly --- ../lilypond-1.4.4/input/test/trills.ly Thu Jan 1 01:00:00 1970 +++ ./input/test/trills.ly Thu Jun 28 18:05:31 2001 @@ -0,0 +1,42 @@ +\header { + texidoc="Document trills, pralls and turns" + title="Marques des agr\'ements et leur signification" + copyright="(1689)" +} + +\score { + < + \property Score.TimeSignature = \turnOff + \context GrandStaff < + \context Staff=upper \notes\relative c'' { + \time 1/4 + c4-\prallprall + \time 3/8 + c4.^"TODO" + c4.-\downprall + c4.-\upprall + \time 5/8 + c4-\turn c4.-\upprall + } + \context Lyrics=one \lyrics { + "Tremblement"4 + "Tremblement"4. + "Cadence" + "autre" + "Double"4 "cadence"4. + } + \context Lyrics=two \lyrics { + "simple"4 + "appuy\'e"4. + } + \context Staff=lower \notes\relative c'' { + % autobeamer has som problems here + [\repeat unfold 4 { d32 c }] + d8~[\repeat unfold 4 { d32 c }] + d32 c b c \repeat unfold 4 { d32 c } + b32 c d c \repeat unfold 4 { d32 c } + [c32( b a16 b )c] [b32 c d c \repeat unfold 4 { d32 c }] + } + > + > +} \ No newline at end of file diff -urN ../lilypond-1.4.4/lexer-gcc-3.0.patch ./lexer-gcc-3.0.patch --- ../lilypond-1.4.4/lexer-gcc-3.0.patch Thu Jan 1 01:00:00 1970 +++ ./lexer-gcc-3.0.patch Mon Jul 9 00:18:46 2001 @@ -0,0 +1,11 @@ +--- ./lily/out-gcc-3.0/lexer.cc~ Tue Jun 26 13:12:26 2001 ++++ ./lily/out-gcc-3.0/lexer.cc Tue Jun 26 13:11:56 2001 +@@ -21,7 +21,7 @@ + #ifdef __cplusplus + + #include +-class istream; ++#include + #include + + /* Use prototypes in function declarations. */ diff -urN ../lilypond-1.4.4/lily/beam.cc ./lily/beam.cc --- ../lilypond-1.4.4/lily/beam.cc Fri May 4 15:42:59 2001 +++ ./lily/beam.cc Sun Jul 8 23:01:43 2001 @@ -670,6 +670,14 @@ Real stem_y = calc_stem_y_f (me, s, y, dy); + stem_y += Stem::get_direction (s) + * gh_scm2double (me->get_grob_property ("thickness")) / 2; + +#if 0 // doesn't play well with dvips + stem_y += Stem::get_direction (s) + * gh_scm2double (me->get_grob_property ("thickness")) / 2; +#endif + /* caution: stem measures in staff-positions */ Real id = me->relative_coordinate (common, Y_AXIS) - stems[i]->relative_coordinate (common, Y_AXIS); @@ -762,7 +770,6 @@ (prev && ! (prev->relative_coordinate (0, X_AXIS) < here->relative_coordinate (0, X_AXIS)))) programming_error ("Beams are not left-to-right"); - Real staffline_f = me->paper_l ()->get_var ("stafflinethickness"); int multiplicity = get_multiplicity (me); SCM space_proc = me->get_grob_property ("space-function"); @@ -772,8 +779,7 @@ Real interbeam_f = gh_scm2double (space) ; Real bdy = interbeam_f; - Real stemdx = staffline_f; - + #if 0 // ugh -> use commonx Real dx = visible_stem_count (me) ? @@ -811,12 +817,20 @@ Half beam should be one note-width, but let's make sure two half-beams never touch */ - Real w = here->relative_coordinate (0, X_AXIS) - prev->relative_coordinate (0, X_AXIS); + + // FIXME: TODO (check) stem width / sloped beams + Real w = here->relative_coordinate (0, X_AXIS) + - prev->relative_coordinate (0, X_AXIS); + Real stem_w = gh_scm2double (prev->get_grob_property ("thickness")) + // URG + * me->paper_l ()->get_var ("stafflinethickness"); + w = w/2 relative_coordinate (0, X_AXIS) + - here->relative_coordinate (0, X_AXIS); + + Real stem_w = gh_scm2double (next->get_grob_property ("thickness")) + // URG + * me->paper_l ()->get_var ("stafflinethickness"); - Real w = next->relative_coordinate (0, X_AXIS) - here->relative_coordinate (0, X_AXIS); - Molecule a = Lookup::beam (dydx, w + stemdx, thick); - a.translate_axis (- stemdx/2, X_AXIS); + Molecule a = Lookup::beam (dydx, w + stem_w, thick); + a.translate_axis (- stem_w/2, X_AXIS); int j = 0; Real gap_f = 0; - + SCM gap = me->get_grob_property ("gap"); if (gh_number_p (gap)) { @@ -853,7 +875,7 @@ else gap_f = nw_f / 2; w -= 2 * gap_f; - a = Lookup::beam (dydx, w + stemdx, thick); + a = Lookup::beam (dydx, w + stem_w, thick); } for (; j < rwholebeams; j++) diff -urN ../lilypond-1.4.4/lily/chord.cc ./lily/chord.cc --- ../lilypond-1.4.4/lily/chord.cc Thu May 3 17:03:49 2001 +++ ./lily/chord.cc Sun Jul 15 14:14:41 2001 @@ -298,6 +298,10 @@ for (SCM i = add; gh_pair_p (i); i = gh_cdr (i)) { Pitch* p = unsmob_pitch (gh_car (i)); + /* Ugr + This chord modifier stuff should really be fixed + Cmaj7 yields C 7/7- + */ if (p->octave_i () == -100) { p->octave_i_ = 0; @@ -322,7 +326,10 @@ if (highest_step < 5) tmp = ly_snoc (fifth, tmp); else if (dim_b) - add = lower_step (tonic, add, gh_int2scm (5)); + { + add = lower_step (tonic, add, gh_int2scm (5)); + add = lower_step (tonic, add, gh_int2scm (7)); + } /* find missing thirds */ SCM missing = missing_thirds (tmp); diff -urN ../lilypond-1.4.4/lily/main.cc ./lily/main.cc --- ../lilypond-1.4.4/lily/main.cc Mon Jun 18 11:04:05 2001 +++ ./lily/main.cc Thu Jun 28 18:05:31 2001 @@ -101,6 +101,7 @@ follow regular localisation guidelines). */ static Long_option_init options_static[] = { + /* print example usage: lilypond -e "(set-lily-option 'help 0)" ? */ {_i ("EXPR"), "evaluate", 'e',_i ("evalute EXPR as Scheme after .scm init is read")}, /* another bug in option parser: --output=foe is taken as an abbreviation for --output-format */ diff -urN ../lilypond-1.4.4/lily/parser.yy ./lily/parser.yy --- ../lilypond-1.4.4/lily/parser.yy Fri Apr 27 16:43:49 2001 +++ ./lily/parser.yy Sun Jul 15 14:14:41 2001 @@ -1791,10 +1791,11 @@ $$ = gh_cons ($1, SCM_EOL); } | CHORDMODIFIER_PITCH { - $$ = gh_cons ($1, SCM_EOL); + $$ = gh_cons (unsmob_pitch ($1)->smobbed_copy (), SCM_EOL); } | CHORDMODIFIER_PITCH chord_note { /* Ugh. */ - $$ = gh_list ($1, $2, SCM_UNDEFINED); + $$ = gh_list (unsmob_pitch ($1)->smobbed_copy (), + $2, SCM_UNDEFINED); } ; diff -urN ../lilypond-1.4.4/lily/scm-option.cc ./lily/scm-option.cc --- ../lilypond-1.4.4/lily/scm-option.cc Sun Apr 15 16:24:20 2001 +++ ./lily/scm-option.cc Thu Jun 28 18:05:31 2001 @@ -53,13 +53,20 @@ SCM set_lily_option (SCM var, SCM val) { + /* + Scheme option usage: + lilypond -e "(set-lily-option 'help 0)" + */ if (var == ly_symbol2scm ("help")) { cout << '\n'; cout << _ ("Scheme options:"); - cout << "help"; - cout << "midi-debug (boolean)"; - cout << "testing-level (int)"; + cout << '\n'; + cout << " help (any-symbol)"; + cout << '\n'; + cout << " midi-debug (boolean)"; + cout << '\n'; + cout << " testing-level (int)"; cout << '\n'; exit (0); } diff -urN ../lilypond-1.4.4/lily/span-bar.cc ./lily/span-bar.cc --- ../lilypond-1.4.4/lily/span-bar.cc Sun Mar 11 19:10:34 2001 +++ ./lily/span-bar.cc Sun Jul 15 14:48:40 2001 @@ -25,6 +25,116 @@ me->add_dependency (b); } +MAKE_SCHEME_CALLBACK (Span_bar,brew_molecule,1); + +/** + * Limitations/Bugs: + * + * (1) Elements from 'me->get_grob_property ("elements")' must be + * ordered according to their y coordinates relative to their common + * axis group parent. Otherwise, the computation goes mad. (TODO: + * apply a sort algorithm that ensures this precondition.) However, + * until now, I have seen no case where lily has not fulfilled this + * precondition. + * + * (2) This method depends on bar_engraver not being removed from + * staff context. If bar_engraver is removed, the size of the staff + * lines is evaluated as 0, which results in a solid span bar line + * with faulty y coordinate. + */ +SCM +Span_bar::brew_molecule (SCM smobbed_me) +{ + Grob *me = unsmob_grob (smobbed_me); + SCM first_elt = me->get_grob_property ("elements"); + Grob *first_staff_bar = unsmob_grob (gh_car (first_elt)); + Grob *last_staff_bar = 0; + + // compute common refpoint of elements & last_staff_bar + Grob *refp = me; + for (SCM elts = first_elt; + gh_pair_p (elts); + elts = gh_cdr (elts)) + { + SCM smobbed_staff_bar = gh_car (elts); + Grob *staff_bar = unsmob_grob (smobbed_staff_bar); + refp = staff_bar->common_refpoint (refp, Y_AXIS); + last_staff_bar = staff_bar; + } + + // determine refp->extent, but ignore lyrics etc. above and below + Interval refp_extent; + refp_extent[LEFT] = + first_staff_bar->relative_coordinate (refp, (Axis)Y_AXIS) - + 0.5 * (first_staff_bar->extent (refp, Y_AXIS)[UP] - + first_staff_bar->extent (refp, Y_AXIS)[DOWN]); + refp_extent[RIGHT] = + last_staff_bar->relative_coordinate (refp, (Axis)Y_AXIS) + + 0.5 * (last_staff_bar->extent (refp, Y_AXIS)[UP] - + last_staff_bar->extent (refp, Y_AXIS)[DOWN]); + + // global yoffs correction (compensate centering around refp) + Real yoffs = 0.5 * (refp_extent[LEFT] - refp_extent[RIGHT]); + + // evaluate glyph + Span_bar::evaluate_glyph(me); + SCM glyph = me->get_grob_property (ly_symbol2scm ("glyph")); + + + /* + glyph may not be a string, when ME is killed by Hara Kiri in + between. + */ + if (!gh_string_p (glyph)) + return SCM_EOL; + + String glyph_str = ly_scm2string (glyph); + + // compose span_bar_mol + Molecule span_bar_mol = Molecule::Molecule (); + Grob *prev_staff_bar = 0; + Real prev_staff_bar_length = 0.0; + for (SCM elts = first_elt; + gh_pair_p (elts); + elts = gh_cdr (elts)) + { + SCM smobbed_staff_bar = gh_car (elts); + SCM smobbed_staff_bar_molecule = + Bar::brew_molecule (smobbed_staff_bar); + Grob *staff_bar = unsmob_grob (smobbed_staff_bar); + Real staff_bar_length = + unsmob_molecule (smobbed_staff_bar_molecule)-> + extent (Y_AXIS).length (); + + if (prev_staff_bar) { + + Interval l; + l[LEFT] = prev_staff_bar->extent (refp, Y_AXIS)[UP]; + l[RIGHT] = staff_bar->extent (refp, Y_AXIS)[DOWN]; + + SCM smobbed_staff_bar = gh_car (elts); + Grob *staff_bar = unsmob_grob (smobbed_staff_bar); + SCM smobbed_interstaff_bar_molecule = + Bar::compound_barline (staff_bar, glyph_str, l.length()). + smobbed_copy (); + + Molecule *interstaff_bar_mol = + unsmob_molecule (smobbed_interstaff_bar_molecule); + + yoffs += prev_staff_bar_length; // skip staff bar + yoffs += 0.5 * (l[RIGHT] - l[LEFT]); // compensate interstaff bar centering + interstaff_bar_mol->translate_axis (yoffs, Y_AXIS); + yoffs += 0.5 * (l[RIGHT] - l[LEFT]); + + span_bar_mol.add_molecule (*interstaff_bar_mol); + } + prev_staff_bar = staff_bar; + prev_staff_bar_length = staff_bar_length; + } + + return span_bar_mol.smobbed_copy (); +} + MAKE_SCHEME_CALLBACK (Span_bar,width_callback,2); SCM Span_bar::width_callback (SCM element_smob, SCM scm_axis) diff -urN ../lilypond-1.4.4/lily/stem.cc ./lily/stem.cc --- ../lilypond-1.4.4/lily/stem.cc Wed May 16 00:49:48 2001 +++ ./lily/stem.cc Thu Jun 28 12:48:57 2001 @@ -511,6 +511,7 @@ Interval stem_y (y1,y2); stem_y.unite (Interval (y2,y1)); + // dy? Real dy = Staff_symbol_referencer::staff_space (me)/2.0; if (Grob *hed = support_head (me)) @@ -524,7 +525,10 @@ if (!invisible_b (me)) { - Real stem_width = gh_scm2double (me->get_grob_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness"); + Real stem_width = gh_scm2double (me->get_grob_property ("thickness")) + // URG + * me->paper_l ()->get_var ("stafflinethickness"); + Molecule ss =Lookup::filledbox (Box (Interval (-stem_width/2, stem_width/2), Interval (stem_y[DOWN]*dy, stem_y[UP]*dy))); mol.add_molecule (ss); diff -urN ../lilypond-1.4.4/ps/lilyponddefs.ps ./ps/lilyponddefs.ps --- ../lilypond-1.4.4/ps/lilyponddefs.ps Mon May 14 00:35:29 2001 +++ ./ps/lilyponddefs.ps Sun Jul 8 23:01:46 2001 @@ -46,29 +46,6 @@ grestore } bind def -% -% FIXME. translate to middle of box. -% - -/draw-box % breapth width depth height -{ - /h exch def - /d exch def - /w exch def - /b exch def - gsave - - 0 setlinewidth - b neg d neg rmoveto - b w add 0 rlineto - 0 d h add rlineto - b w add neg 0 rlineto - closepath % 0 d h add neg rlineto - fill - - grestore -} bind def - /start-line % height { dup base-line-skip gt { diff -urN ../lilypond-1.4.4/ps/music-drawing-routines.ps ./ps/music-drawing-routines.ps --- ../lilypond-1.4.4/ps/music-drawing-routines.ps Sun May 6 03:10:10 2001 +++ ./ps/music-drawing-routines.ps Thu Jun 28 18:05:32 2001 @@ -1,7 +1,9 @@ -%!PS-Adobe-1.0: lily.ps +%!PS-Adobe-1.0: music-drawing-routines.ps % % Functions for direct and embedded PostScript + +% FIXME: set with individual symbols % round cappings 1 setlinecap @@ -10,17 +12,81 @@ 1 copy mul exch 1 copy mul add sqrt } bind def -/draw_beam % width slope thick -{ - 2 div /beam_thick exch def - /beam_slope exch def - /beam_wd exch def - beam_slope beam_wd mul /beam_ht exch def - 0 beam_thick neg moveto - beam_wd beam_ht rlineto - 0 beam_thick 2 mul rlineto - 0 beam_thick lineto - closepath fill +% FIXME. translate to middle of box. +% Nice rectangle with rounded corners +% FIXME: linewidth hardcoded. check: too round? +/draw_box % breapth width depth height +{ + %% FIXME: hardcoded + currentdict /testing known { + %% real thin lines for testing + /l 0.005 def + }{ + /l 0.05 def + } ifelse + + 0 setlinecap + l setlinewidth + 1 setlinejoin + + l 2 div sub /h exch def + l 2 div sub /d exch def + + %% UGH huh? + %% Where does this correction come from? + %% Why don't we need this in x direction? + h l 2 div sub /h exch def + d l 2 div sub /d exch def + + l 2 div sub /w exch def + l 2 div sub /b exch def + + b neg d neg moveto + b w add 0 rlineto + 0 d h add rlineto + b w add neg 0 rlineto + 0 d h add neg rlineto + + currentdict /testing known { + %% outline only, for testing: + stroke + }{ + closepath gsave stroke grestore fill + } ifelse +} bind def + +% Nice beam with rounded corners +% FIXME: linewidth hardcoded. check: too round? +/draw_beam % slope width thick +{ + %% FIXME: hardcoded + currentdict /testing known { + %% real thin lines for testing + /l 0.01 def + }{ + /l 0.1 def + } ifelse + l 2 div setlinewidth + + 0 setlinecap + 1 setlinejoin + + l sub /t exch def + l sub /w exch def + w mul /h exch def + + l 2 div t 2 div neg moveto + w h rlineto + 0 t rlineto + w neg h neg rlineto + 0 t neg rlineto + + currentdict /testing known { + %% outline only, for testing: + stroke + }{ + closepath gsave stroke grestore fill + } ifelse } bind def /draw_repeat_slash % width slope thick diff -urN ../lilypond-1.4.4/scm/chord-name.scm ./scm/chord-name.scm --- ../lilypond-1.4.4/scm/chord-name.scm Mon Jun 18 11:04:06 2001 +++ ./scm/chord-name.scm Sun Jul 15 14:14:41 2001 @@ -52,7 +52,11 @@ (((0 . 0) (3 . 0) (4 . 0)) . ("" (super "4") " " )) ;; Cdim iso Cm5- (((0 . 0) (2 . -1) (4 . -1)) . ("dim")) - ; Co iso Cm5-7- + ; URG: Simply C:m5-/maj7 iso Cdim maj7 + (((0 . 0) (2 . -1) (4 . -1) (6 . 0)) . ("m" (super "5-/maj7" " "))) + ; URG: Simply C:m5-/7 iso Cdim7 + (((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . ("m" (super "5-/7" " "))) + ; Co iso C:m5-/7- (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" (super "o") " ")) ; Cdim9 (((0 . 0) (2 . -1) (4 . -1) (6 . -2) (1 . -1)) . ("dim" (super "9") " ")) @@ -309,18 +313,19 @@ ;; additions, subtractions and bass or inversion into chord name (define (chord::inner-name-banter tonic exception-part additions subtractions bass-and-inversion steps) - (let ((tonic-text (pitch->chord-name-text-banter tonic steps)) - (except-text exception-part) - (sep-text (if (and (string-match "super" (format "~s" exception-part)) + (let* ((tonic-text (pitch->chord-name-text-banter tonic steps)) + (except-text exception-part) + (sep-text (if (and (string-match "super" (format "~s" except-text)) (or (pair? additions) (pair? subtractions))) (list simple-super "/"))) - (adds-text (chord::additions->text-banter additions subtractions)) - (subs-text (chord::subtractions->text-banter subtractions)) - (b+i-text (chord::bass-and-inversion->text-banter bass-and-inversion))) + (adds-text (chord::additions->text-banter additions subtractions)) + (subs-text (chord::subtractions->text-banter subtractions)) + (b+i-text (chord::bass-and-inversion->text-banter bass-and-inversion))) (text-append - tonic-text except-text sep-text - (list (list simple-super) adds-text subs-text) + tonic-text except-text " " sep-text + ;;(list (list simple-super) adds-text subs-text) + (list (list '((raise . 1) (font-relative-size . -1))) adds-text subs-text) b+i-text))) (define (chord::name-banter tonic exception-part unmatched-steps diff -urN ../lilypond-1.4.4/scm/grob-description.scm ./scm/grob-description.scm --- ../lilypond-1.4.4/scm/grob-description.scm Wed Jun 13 16:29:19 2001 +++ ./scm/grob-description.scm Thu Jun 28 16:00:58 2001 @@ -518,7 +518,7 @@ (SpanBar . ( (break-align-symbol . Staff_bar) (bar-size-procedure . ,Span_bar::get_bar_size) - (molecule-callback . ,Bar::brew_molecule) + (molecule-callback . ,Span_bar::brew_molecule) (visibility-lambda . ,begin-of-line-invisible) (X-extent-callback . ,Span_bar::width_callback) (Y-offset-callbacks . (,Span_bar::center_on_spanned_callback)) diff -urN ../lilypond-1.4.4/scm/lily.scm ./scm/lily.scm --- ../lilypond-1.4.4/scm/lily.scm Sun May 20 21:17:33 2001 +++ ./scm/lily.scm Thu Jun 28 16:02:04 2001 @@ -5,7 +5,7 @@ ;;;; (c) 1998--2001 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys -;;; Library funtions +;;; Library functions (use-modules (ice-9 regex)) diff -urN ../lilypond-1.4.4/scm/ps.scm ./scm/ps.scm --- ../lilypond-1.4.4/scm/ps.scm Mon Apr 23 00:27:16 2001 +++ ./scm/ps.scm Thu Jun 28 18:05:32 2001 @@ -52,10 +52,9 @@ "lilypondpaperoutputscale div scalefont setfont } bind def " "\n")) - (define (beam width slope thick) (string-append - (numbers->string (list width slope thick)) " draw_beam" )) + (numbers->string (list slope width thick)) " draw_beam" )) (define (comment s) (string-append "% " s)) @@ -108,7 +107,7 @@ (define (filledbox breapth width depth height) (string-append (numbers->string (list breapth width depth height)) - " draw-box" )) + " draw_box" )) ;; obsolete? (define (font-def i s) @@ -127,6 +126,7 @@ " {exch pop //systemdict /run get exec} " (ly-gulp-file "music-drawing-routines.ps") "{ exch pop //systemdict /run get exec } " + (if (defined? 'ps-testing) "\n /testing true def" "") )) (define (lily-def key val) @@ -171,7 +171,7 @@ (define (stem breapth width depth height) (string-append (numbers->string (list breapth width depth height)) - " draw-box" )) + " draw_box" )) (define (stop-line) "}\nstop-line\n") diff -urN ../lilypond-1.4.4/scm/tex.scm ./scm/tex.scm --- ../lilypond-1.4.4/scm/tex.scm Mon Apr 23 00:27:16 2001 +++ ./scm/tex.scm Sun Jul 8 23:01:26 2001 @@ -97,13 +97,14 @@ (define (header-end) (string-append "\\special{\\string! " - + ;; URG: ly-gulp-file: now we can't use scm output without Lily (if use-regex ;; fixed in 1.3.4 for powerpc -- broken on Windows (regexp-substitute/global #f "\n" (ly-gulp-file "music-drawing-routines.ps") 'pre " %\n" 'post) (ly-gulp-file "music-drawing-routines.ps")) + (if (defined? 'ps-testing) "/testing true def%\n" "") "}" "\\input lilyponddefs\\newdimen\\outputscale \\outputscale=\\lilypondpaperoutputscale pt\\turnOnPostScript")) @@ -164,12 +165,11 @@ "}\\vss}\\interscoreline\n") (define (stop-last-line) "}\\vss}") + (define (filledbox breapth width depth height) - (string-append - "\\kern" (number->dim (- breapth)) - "\\vrule width " (number->dim (+ breapth width)) - "depth " (number->dim depth) - "height " (number->dim height) " ")) + (embedded-ps + (string-append (numbers->string (list breapth width depth height)) + " draw_box" ))) (define (text s) (string-append "\\hbox{" (output-tex-string s) "}")) diff -urN ../lilypond-1.4.4/scripts/lilypond-book.py ./scripts/lilypond-book.py --- ../lilypond-1.4.4/scripts/lilypond-book.py Thu Jun 14 13:01:30 2001 +++ ./scripts/lilypond-book.py Sun Jul 15 14:14:41 2001 @@ -401,7 +401,9 @@ @end tex @html

- + +[picture of music] + @end html """, } diff -urN ../lilypond-1.4.4/scripts/ly2dvi.py ./scripts/ly2dvi.py --- ../lilypond-1.4.4/scripts/ly2dvi.py Tue Jun 12 11:43:05 2001 +++ ./scripts/ly2dvi.py Sun Jul 8 23:01:49 2001 @@ -65,6 +65,7 @@ import __main__ import operator import tempfile +import traceback datadir = '@datadir@' sys.path.append (datadir + '/python') @@ -353,6 +354,7 @@ ('', '', 'no-lily', _ ("don't run LilyPond")), ('', 'm', 'no-paper', _ ("produce MIDI output only")), (_ ("FILE"), 'o', 'output', _ ("write ouput to FILE")), + (_ ("FILE"), 'f', 'find-pfa', _ ("find pfa fonts used in FILE")), # why capital P? ('', 'P', 'postscript', _ ("generate PostScript output")), (_ ("KEY=VAL"), 's', 'set', _ ("change global setting KEY to VAL")), @@ -622,11 +624,39 @@ df.write ('\n') df.close (); +def find_file_in_path (path, name): + for d in string.split (path, os.pathsep): + if name in os.listdir (d): + return os.path.join (d, name) + +# Added as functionality to ly2dvi, because ly2dvi may well need to do this +# in future too. +PS = '%!PS-Adobe' +def find_pfa_fonts (name): + s = open (name).read () + if s[:len (PS)] != PS: + # no ps header? + errorport.write (_( "error: ") + _ ("not a PostScript file: `%s\'" % name)) + errorport.write ('\n') + sys.exit (1) + here = 0 + m = re.match ('.*?/(feta[-a-z0-9]+) +findfont', s[here:], re.DOTALL) + pfa = [] + while m: + here = m.end (1) + pfa.append (m.group (1)) + m = re.match ('.*?/(feta[-a-z0-9]+) +findfont', s[here:], re.DOTALL) + return pfa + + (sh, long) = getopt_args (__main__.option_definitions) try: (options, files) = getopt.getopt(sys.argv[1:], sh, long) -except getopt.error, s: - errorport.write ("\nerror: getopt says `%s\'\n\n" % s) +except getopt.error, s: + errorport.write ('\n') + errorport.write (_( "error: ") + _ ("getopt says: `%s\'" % s)) + errorport.write ('\n') + errorport.write ('\n') help () sys.exit (2) @@ -639,6 +669,13 @@ elif o == '--help' or o == '-h': help () sys.exit (0) + elif o == '--find-pfa' or o == '-f': + fonts = map (lambda x: x + '.pfa', find_pfa_fonts (a)) + files = map (lambda x: + find_file_in_path (os.environ['GS_FONTPATH'], x), + fonts) + print string.join (files, ' ') + sys.exit (0) elif o == '--include' or o == '-I': include_path.append (a) elif o == '--postscript' or o == '-P': @@ -702,8 +739,10 @@ original_output = output_name + if files and files[0] != '-': + # Ugh, maybe make a setup () function files = map (lambda x: strip_extension (x, '.ly'), files) (outdir, outbase) = ('','') @@ -738,40 +777,44 @@ os.chdir (tmpdir) - extra = extra_init - if lily_p: -## try: + try: run_lilypond (files, outbase, dep_prefix) -## # except: -## # TODO: friendly message about LilyPond setup/failing? -## # -## # TODO: lilypond should fail with different -## # error codes for: -## # - guile setup/startup failure -## # - font setup failure -## # - init.ly setup failure -## # - parse error in .ly -## # - unexpected: assert/core dump -## # targets = {} + except: + # TODO: friendly message about LilyPond setup/failing? + # + # TODO: lilypond should fail with different + # error codes for: + # - guile setup/startup failure + # - font setup failure + # - init.ly setup failure + # - parse error in .ly + # - unexpected: assert/core dump + targets = {} + traceback.print_exc () if targets.has_key ('DVI') or targets.has_key ('PS'): -# try: - run_latex (files, outbase, extra) + try: + run_latex (files, outbase, extra_init) # unless: add --tex, or --latex? del targets['TEX'] del targets['LATEX'] -# except Foobar: -# # TODO: friendly message about TeX/LaTeX setup, -# # trying to run tex/latex by hand -# if targets.has_key ('DVI'): -# del targets['DVI'] -# if targets.has_key ('PS'): -# del targets['PS'] + except: + # TODO: friendly message about TeX/LaTeX setup, + # trying to run tex/latex by hand + if targets.has_key ('DVI'): + del targets['DVI'] + if targets.has_key ('PS'): + del targets['PS'] + traceback.print_exc () - # TODO: does dvips ever fail? if targets.has_key ('PS'): - run_dvips (outbase, extra) + try: + run_dvips (outbase, extra_init) + except: + if targets.has_key ('PS'): + del targets['PS'] + traceback.print_exc () # add DEP to targets? if track_dependencies_p: @@ -780,6 +823,7 @@ if os.path.isfile (depfile): progress (_ ("dependencies output to `%s'...") % depfile) + # Hmm, if this were a function, we could call it the except: clauses for i in targets.keys (): ext = string.lower (i) cp_to_dir ('.*\.%s$' % ext, outdir) @@ -799,7 +843,7 @@ cleanup_temp () else: - # FIXME + # FIXME: read from stdin when files[0] = '-' help () errorport.write ("ly2dvi: " + _ ("error: ") + _ ("no files specified on command line.") + '\n') sys.exit (2) diff -urN ../lilypond-1.4.4/stepmake/bin/text2html.py ./stepmake/bin/text2html.py --- ../lilypond-1.4.4/stepmake/bin/text2html.py Mon May 14 18:00:51 2001 +++ ./stepmake/bin/text2html.py Fri Jul 13 14:09:33 2001 @@ -1,8 +1,24 @@ #@PYTHON@ import os +import re import string import sys + +entities = { + "&" : 'amp', + "`" : 'apos', + '>' : 'gt', + '<' : 'lt', + '"' : 'quot', + } + +def txt2html (s): + for i in entities.keys (): + s = re.sub (i, '\001' + entities[i] + ';', s); + s = re.sub ('\001', '&', s); + return s + for a in sys.argv[1:]: # hmm, we need: text2html out/foe.txt -> out/foe.html, # -o is a bit overkill? @@ -18,7 +34,7 @@

 %s
 
-""" % open (a).read () +""" % txt2html (open (a).read ()) open (outfile, 'w').write (s)