Generated by hanwen@cs.uu.nl using package-diff 0.62,
From = lilypond-1.0.12, To = lilypond-1.0.13

usage 

    cd lilypond-source-dir; patch -E -p1 < lilypond-1.0.13.diff

Patches do not contain automatically generated files 
or (urg) empty directories, 
i.e., you should rerun autoconf, configure 
and possibly make outdirs.

--state
1.0.12
1.0.12.uu1
1.0.13
++state
diff -urN ../lilypond-1.0.12/Documentation/tex/GNUmakefile ./Documentation/tex/GNUmakefile
--- ../lilypond-1.0.12/Documentation/tex/GNUmakefile	Mon Sep 28 17:18:27 1998
+++ ./Documentation/tex/GNUmakefile	Mon Oct  5 11:20:38 1998
@@ -21,11 +21,11 @@
 STEPMAKE_TEMPLATES=tex documentation
 LOCALSTEPMAKE_TEMPLATES=lilypond mudela
 
-
+export BIBINPUTS:=$(shell pwd)//$(PATHSEP)$(BIBINPUTS)
 include $(depth)/make/stepmake.make 
 
 
-export BIBINPUTS:="$(topdir)/Documentation/tex//"$(PATHSEP)$(BIBINPUTS)
+
 
 
 
@@ -39,6 +39,15 @@
 
 GENHTMLS = engraving colorado glossary computer-notation
 OUTGENHTMLS = $(addprefix $(outdir)/, $(GENHTMLS:%=%.html))
+
+#urg should generalise and move Lilypond -> StepMake
+# URG.  Lilypond specific. Move out. 
+$(outdir)/%.html: %.data $(depth)/VERSION
+	$(PYTHON) $(step-bindir)/table-to-html.py --columns=7 --linesep='
' --package=$(topdir) -o $@ $<
+	$(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) $@
+
+$(outdir)/%.tex: %.data $(depth)/VERSION
+	$(PYTHON) $(step-bindir)/table-to-html.py --columns=7 --linesep='
' --package=$(topdir) -o $@ --latex $<
 
 
 $(outdir)/glossary.dvi: $(outdir)/glossary-table.tex
diff -urN ../lilypond-1.0.12/Documentation/tex/computer-forms.el ./Documentation/tex/computer-forms.el
--- ../lilypond-1.0.12/Documentation/tex/computer-forms.el	Tue Sep 15 18:22:43 1998
+++ ./Documentation/tex/computer-forms.el	Thu Jan  1 00:00:00 1970
@@ -1,21 +0,0 @@
-; Computer vocabularies are Copyright (C) 1998 
-; Jan Nieuwenhuizen <janneke@gnu.org>
-; Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-(setq forms-file "computer.data")
-(setq forms-number-of-fields 7)
-(setq forms-read-only nil)                 ; to make sure
-(setq forms-field-sep ":")
-(setq forms-multi-line nil)
-
-(setq forms-format-list
-      (list
-       "*** Musical vocabulary ***\n"
-       "\nUS English:        " 1
-       "\nFrancais:          " 2
-       "\nDeutsch:           " 3
-       "\nBritish English:   " 4
-       "\nNederlands:        " 5
-       "\nItaliano:          " 6
-       "\n\nExplanation\n\n" 7
-	))
diff -urN ../lilypond-1.0.12/Documentation/tex/computer.data ./Documentation/tex/computer.data
--- ../lilypond-1.0.12/Documentation/tex/computer.data	Tue Sep 15 18:22:43 1998
+++ ./Documentation/tex/computer.data	Thu Jan  1 00:00:00 1970
@@ -1,88 +0,0 @@
-assemble::::samenstellen::
-assembler::::samensteller::
-assert::::::
-binary::::tweetallig, binair::
-bit::::hapje::
-boot::::::
-bug::::luis::
-byte::::hapje::
-c(entral) p(rocessing) u(nit)::::c(entrale) v(erwerkings) e(enheid)::
-character::::teken:carattere:
-compile::::vertalen:compilare:
-compiler::::vertaler:compilatore:
-computer:ordinateur:rechner::rekentuig:comptatore:
-debug::::ontluizen::
-debugger::::ontluizer::
-default::::verval::
-device::::apparaat::
-directory::inhaltsverzeichnis(urg)::index::
-drag and drop::::sleur en pleur(silly)::
-(disk) drive::::(schijf) speler::
-edit::::redigeren, bewerken (hmm)::
-editor::::redigeur, bewerker (hmm)::
-exception::::uitzondering:eccezione:
-f(requently) a(sked) q(uestions)::::v(eel) v(oorkomende) v(ragen)::
-fatal::::noodlottig:fatale:
-file::datei::bestand:documento:
-float::::zweef::
-floating point::::zwevende komma::
-floppy disk::::schijfje:dischetto:
-free software::::vrij bedenksel::
-hard disk::::harde schijf::
-hardware::::ijzer::
-hexadecimal::::zestientallig::
-home page::::volkstuintje(silly), thuispagina(urg)::
-howto::::hoedan::
-hyper link::::super verbinding::
-identifier::::::
-inode::::::
-input::::invoer::
-int::::heel::
-integer::::geheel getal::
-interface::schnittstelle::tussensmoel(silly)::
-interpret::::vertolken:interpretare:
-interpreter::::vertolker::
-keyboard::tastatur::toetsenbord::
-lilypond:étang de lis:lilyteich:lily pond:lelievijver:stagno del giglio:
-(hard) link::::(harde) verbinding::
-linux::::loes(silly)::
-log in::::aanloggen::
-maintainer::::onderhouder::
-memory::::geheugen::
-menu::::::
-mirror::::spiegel::
-monitor::::beeldscherm::
-mouse::::muis::
-octal::::achttallig::
-open source software::::open-baar bedenksel::
-output::::uitvoer::
-(disk) partition::::(schijf) deel::
-patch::::lap::
-pixel::::puntje::
-pointer::::wijzer::
-printer::drucker::drukker::
-program::::programma::
-public domain::::publiek domein(urg)::
-real (number)::::reeel getal::
-real time::::waartijds::
-reset::::::
-root (directory)::::::
-root window::::::
-run::::draaien:girare:
-script::::schrift::
-sector::::segment::
-shell::::schaal::
-shortcut::::afstekertje::
-signed (int)::::::
-software::::bedenksel, programmatuur(spec), zachtwaar(silly)::
-string::::snoer:corda:
-swap(file)::::wisselbestand::
-symbolic link::::verwijz(ende verbind)ing::
-t(ape)ar(chive)::::b(and)ar(chief)::
-tarball::::barbaal::
-template::::leest::
-terminal::::eindstation::
-track::::spoor::
-unsigned (int)::::::
-void (pointer)::::leeg (wijzer)::
-workstation::::werkstation::
diff -urN ../lilypond-1.0.12/Documentation/tex/glossary-forms.el ./Documentation/tex/glossary-forms.el
--- ../lilypond-1.0.12/Documentation/tex/glossary-forms.el	Tue Sep 15 18:22:43 1998
+++ ./Documentation/tex/glossary-forms.el	Mon Oct  5 11:20:38 1998
@@ -7,7 +7,7 @@
 (setq forms-number-of-fields 7)
 (setq forms-read-only nil)                 ; to make sure
 (setq forms-field-sep "@")
-(setq forms-multi-line nil)
+(setq forms-multi-line "\C-m")
 
 (setq forms-format-list
       (list
diff -urN ../lilypond-1.0.12/Documentation/tex/glossary-table.data ./Documentation/tex/glossary-table.data
--- ../lilypond-1.0.12/Documentation/tex/glossary-table.data	Tue Sep 15 18:22:43 1998
+++ ./Documentation/tex/glossary-table.data	Mon Oct  5 11:20:38 1998
@@ -9,12 +9,12 @@
 adjacent keys@tons voisins@@@@@
 alto@alto@@@alt@@
 ancient form??? (diatonic minor scale)@forme du mode mineur ancien@@@@@
-appoggiatura@appogiature, ports de voix, notes d'agr\'ement@langer Vorschl\"age@@@appogiature@
-arbitrary number of bars' rest)@bâton de pause@@@@@
+appoggiatura@appogiature, ports de voix, notes d'agr\'ement@langer Vorschl\"age@@lange voorslag@appogiature@
+arbitrary number of bars' rest)@bâton de pause@@@meermaats rust@@
 arpeggio@arpège, arpègement@Brechungen@@gebroken akoord@arpeggio@
 artificial measure@mesure artificielle@@@@@
 artificial rest@respiration@@@@@
-ascending interval@intervalle ascendant@@@@@
+ascending interval@intervalle ascendant@@@stijgend interval@@
 augmented (interval)@augmenté (intervalle)@@@overmatig interval@@
 B@si@@@@@
 backfall, forefall@accent, chute, port de voix@Vorschlag@@korte voorslag@appogiature@
@@ -25,14 +25,14 @@
 bass@basse@@@bas@@
 beam@barre@Balken@@waardestreep/balk@barra@
 beat@temps@@@tel@@
-brace@accolade@Klammer@@@accolada@Symbol at the start of a system that connects staffs.
+brace@accolade@Klammer@@accolade, haak@accolada@Symbol at the start of a system that connects staffs.
 brass@@@@koper (blazers)@@
 C clef@clé d'ut@@@C sleutel, alt sleutel@chiave di tenore@
 C@do@@@C@@
 C@ut@@@@@
 cadence@cadence@@@cadens@@
 cadenza@fioriture@@@cadens@cadenza@
-cent@@@@@@1/1200 of an octave (1/100 of an equally tempered semitone)
+cent@@@@cent@@1/1200 of an octave (1/100 of an equally tempered semitone)
 chain of trills@chaîne de trilles@@@triller@@
 character@caractère@@@@@
 chevron@chevron@@@@@
@@ -41,19 +41,19 @@
 chromatic semitone@demi-ton chromatique@@@chromatische halve toon@@
 chromatic transposition@transposition chromatique@@@@@
 chromatic type@genre chromatique@@@@@
-church mode, ecclesiastical mode@mode ecclésiastique@@@@@
-clef@clé@Schl\"ussel@@Sleutel@la chiave (pl. le chiavi)@
-comma@comma@@@@@Difference in pitch of a note when the note is derived from a different tuning system.
+church mode, ecclesiastical mode@mode ecclésiastique@@@kerk toonladder@@
+clef@clé@Schl\"ussel@@sleutel@la chiave (pl. le chiavi)@
+comma@comma@@@komma@@Difference in pitch of a note when the note is derived from a different tuning system.
 compound interval@intervalle composé@@@@@
-compound measure@mesure composée@@@@@
+compound measure@mesure composée@@@samengestelde maat@@
 conjunct movement@mouvement conjoint@@@@@
 consonant interval; consonance@consonance@@@consonant@@
 contralto@contralto@@@@@
 contro-time@contre-temps@@@@@
 crescendo@crescendo@@@@crescendo@written with an extended opening angular bracket, indicates increasing volume
-cue-notes@@Stichnoten@@stichnoten@@
+cue-notes@@Stichnoten@@stichnoten@@In an orchestral part, notes for a different instrument that hint when to
start playing.  Usually printed in smaller type.
 D@ré@@@@@
-dash over/below@pizzicato@@@@@
+dash over/below@@@@@pizzicato@With plucked strings
 decrescendo@@@@@decrescendo@written with an extended closing angular bracket, indicates decreasing volume
 degree [of the scale]@degré [de la gamme]@@@trap [van de toonladder]@@
 descending interval@intervalle descendant@@@dalend interval@@
@@ -68,27 +68,27 @@
 dominant ninth chord@accord de neuvième dominante@@@dominant noon akkoord@@
 dominant seventh chord@accord de septième dominante@@@dominant septiem akkoord@@
 dominant@dominante@@@dominant@@A tone that creates tension;the fifth degree of the scale.
-dorian mode@@@@@@Mode obtained by raising the sixth in minor mode.  A Dorian scale can be played from D to D with no sharps or flats.
-dot (augmentation dot) @point@Punkt@@punt@punto@
+dorian mode@@@@dorische toonladder@@Mode obtained by raising the sixth in minor mode.  A Dorian scale can be played from D to D with no sharps or flats.
+dot (augmentation dot) @point@Punkt@@punt@punto@An augmentation dot after note adds multiplies the duration by one and a half.
 dot and curved line combined@point et liaison combinés@@@@@
-dot over/below@@@@staccato@staccato@
+dot over/below@@@@staccato@staccato@Play each note short.
 dot@point@@@punt@@
 dotted note@note pointée@@@@@
 double appoggiatura@appogiature double@@@@@
-double bar line@double barre@Doppeltaktstrich@@dubbele streep@doppia barra@
+double bar line@double barre@Doppeltaktstrich@@dubbele streep@doppia barra@Indicates the end of a section within a movement.
 double dotted note@note doublement pointée@@@@@
 double flat@double bémol@Doppel-Be@@dubbelmol@doppio bemolle@
-double sharp@double dièse@Doppelkreuz@@dubbelkruis@doppio diesis@
-double trill@trille double@@@@@
+double sharp@double dièse@Doppelkreuz@@dubbelkruis@doppio diesis@Raise pitch by two semitones
+double trill@trille double@@@@@A trill on a chord
 double triplet@double triolet@@@dubbele triool@@
-double whole note@@@breve@brevis@breve@
+double whole note@@@breve@brevis@breve@Note during twice as long as a whole note. Mainly used in pre-1650 music.
 duple meter@temps binaire@@@tweedelige maatsoort@@
 duplet@duolet@@@duool@@
 duration@durée@@@duur, lengte@@
 E@mi@@@@@
 eighth note@croche@@quaver@achtste noot@@
 eighth rest@demi-soupir@@quaver rest@achtste rust@@
-engraving@@notenstechen@@steken@@
+engraving@@notenstechen@@steken@@The traditional process of music printing: cutting in a plate of metal.
Now also the term for the art of music typography.
 enharmonic@enharmonique@@@enharmonisch@@Two notes, intervals, or scales are enharmonic if they have different names but sound the same.  Examples: C sharp and D flat, diminished fourth and major third
 equal temperament@tempérament égal@@@getempereerde stemming@@Tuning system in which each semitone is precisely 100 cents.
 essential alteration@altération essentielle@@@@@
@@ -97,22 +97,22 @@
 F@fa@@@@@
 fermata@pauses@Fermate@@fermate@fermata@Prolonged sound or silence of indefinite duration
 fifth@quinte@@@kwint@@
-flag, hook, tail, pennant@crochet@F\"anchen@@vlaggetje@coda uncinata@
-flat@bémol@Be@@mol@bemolle@
+flag, hook, tail, pennant@crochet@F\"anchen@@vlaggetje@coda uncinata@Ornament at the end of the stem of a note. The number of flags
determines the lengths of notes shorter than a quarter note.
+flat@bémol@Be@@mol@bemolle@Lower pitch by a semitone
 four-bar rest@bâton de pause@@@@@
 fourth@quarte@@@kwart@@
 G@sol@@@@@
-glissando@glissement@Glissando@@glissando@glissando@
+glissando@glissement@Glissando@@glissando@glissando@Letting the pitch  slide fluently from one note to the other
 graces@petites notes@kurz Vorschl\"age, Manieren (?)@@versieringen@appogiature@
 grand staff@@@@piano systeem@@A combination of two staffs with a brace.  Usually used for piano music.
 half note@blanche@@minim@halve noot@@
 half rest@demi-pause@@minim rest@halve rust@@
-harmonic cadence@cadence harmonique@@@cadens@@
+harmonic cadence@cadence harmonique@@@harmonische cadens@@Sequence of chords that terminate a musical phrase or section.
 harmonic form (diatonic minor scale)@forme harmonique@@@@@
 harmonic interval@intervalle harmonique@@@@@
 incomplete measure@mesure incomplète@@@@@
 interval@intervalle@@@interval@@Difference in pitch between two notes
-inversion of interval@renversement d'intervalle@@@inversie@@
+inversion of interval@renversement d'intervalle@@@interval inversie@@
 irregular contro-time@contre-temps irrégulier@@@@@
 irregular group@groupe irrégulier@@@@@
 irregular measure@mesure irrégulière@@@@@
@@ -124,7 +124,7 @@
 leading note@sensible@@@@@
 ledger line, leger line@ligne supplémentaire@Hilfslinien, Kopfstriche (?)@@hulplijntje@lineette@A ledger line is an extension of the staff.  
 legato curve@liaison rythmique@@@legato boog@@
-lilypond@étang de lis@lilyteich@lily pond@lelievijver@stagno del giglio@
+lilypond@étang de lis@lilyteich@lily pond@lelievijver@stagno del giglio@A pond with  lilies floating in it, also the name of a music typesetter.
 line@ligne@@@lijn@@
 long appoggiatura@appogiature longue@@@@@
 lower number@chiffre inférieur@@@@@
@@ -132,13 +132,13 @@
 major mode@mode majeur@@@@@
 meantone temperament@tempérament mésotonique@@@@@Tuning based on a fifth that is 16 cents smaller than the natural fifth.  
 mediant@médiante@@@mediant@@The third degree of a scale
-melodic cadence@cadence mélodique@@@cadens@@
+melodic cadence@cadence mélodique@@@cadens@@A free-form section at the end of a solo-concerto, where the soloist
can demonstrate his/her virtuosity.
 melodic form (diatonic minor scale)@forme mélodique@@@@@
 meter, time@m\`etre@Takt, Metrum@@maatsoort@@A recurring pattern of stress
-metronome@métronome@@@metronoom@@
-metronomic indication@indication métronomique@@@@@
+metronome@métronome@@@metronoom@@Device which sounds a steady beat
+metronomic indication@indication métronomique@@@@@Exact tempo indication (in beats per minute).  Also denoted by M.M. (M\"azels Metronom)
 mezzo-soprano@mezzo-soprano@@@@@
-middle C@do central@@@centrale C@@
+middle C@do central@@@centrale C@@First C below the 440 Hz A.
 minor (interval)@mineur (intervalle)@@@@@
 minor mode@mode mineur@@@@@
 modal note@note modale@@@@@
@@ -147,8 +147,8 @@
 mordent@mordant, pinc\'e@Pralltriller, Mordent@@mordent@mordente@
 motive@incise@@@motief@@
 musical ladder@échelle musicale@@@@@
-mixolydian mode@@@@@@Mode obtained by lowering the seventh in major.  A mixolydian scale can be obtained by playing G to G with no sharps or flats.
-natural sign@bécarre@Aufl\"osungszeichen@@herstellingsteken@bequadro@
+mixolydian mode@@@@Mixolydische toonladder@@Mode obtained by lowering the seventh in major.  A mixolydian scale can be obtained by playing G to G with no sharps or flats.
+natural sign@bécarre@Aufl\"osungszeichen@@herstellingsteken@bequadro@Do not play the following note flat or sharp.
 ninth@@@@noon@@
 note head@@Notenkopf@@noot balletje@@
 note@note@Note@@noot@nota@
@@ -164,7 +164,7 @@
 perfect major chord@accord parfait majeur@@@@@
 perfect minor chord@accord parfait mineur@@@@@
 phrase member@membre de phrase@@@@@
-phrase@phrase@@@@@
+phrase@phrase@@@frase, zin@@
 phrasing@phrasé@@@@@
 pitch pipe; tuning fork@diapason@@@stemfluitje; stemvork@@
 pitch@hauteur@@@toonhoogte@@
@@ -230,7 +230,7 @@
 tonality@tonalité@@@tonaliteit@@
 tone@ton@@@toon@@
 tonic@tonique@@@tonica@@
-transposition@transposition@@@transpositie@@
+transposition@transposition@@@transpositie@@Shifting a melody up or down in pitch, while keeping the same relative pitches.
 treble clef@clé de sol@G Schl\"ussel@@G sleutel, viool sleutel@chiave di violino@
 tremolo@tr\'emolo@Tremolo@@tremolo@tremolo@
 trill; shake@trille, tremblement, battement (cadence)@Triller@@triller@trillo@
@@ -240,7 +240,7 @@
 turn; gruppetto@bris\'e, groupe, doubl\'e, grupetto@Doppelschlag@@dubbelslag@grupetto@
 two-bar rest@bâton de pause@@@@@
 underline over/below@portamento@@@@@
-unison@unisson@@@@unisono@
+unison@unisson@@@@unisono@Different instruments playing exactly the same melody.
 unit of beat@unité de temps@@@@@
 unit of measure@unité de mesure@@@@@
 upper number@chiffre supérieur@@@@@
diff -urN ../lilypond-1.0.12/Documentation/tex/glossary.yo ./Documentation/tex/glossary.yo
--- ../lilypond-1.0.12/Documentation/tex/glossary.yo	Thu Sep 24 15:45:24 1998
+++ ./Documentation/tex/glossary.yo	Mon Oct  5 11:20:38 1998
@@ -31,7 +31,7 @@
 
 article(Glossary of notation terms)
       (Han-Wen Nienhuys and Jan Nieuwenhuizen)
-      (nop()PIPETHROUGH(date "+%B %d, %Y")()()nop())
+      ()
 
 COMMENT(
 
@@ -74,6 +74,9 @@
        \inlanguage{Nederlands}{#5}\inlanguage{Italiano}{#6}}
       \input glossary-table
     }
+
+    \bibliography{engraving}    
+    \bibliographystyle{plain}
 ))
 
 whenhtml(
diff -urN ../lilypond-1.0.12/Documentation/tex/refman.yo ./Documentation/tex/refman.yo
--- ../lilypond-1.0.12/Documentation/tex/refman.yo	Tue Sep 29 16:14:56 1998
+++ ./Documentation/tex/refman.yo	Mon Oct  5 11:27:04 1998
@@ -3,6 +3,10 @@
 redef(var)(1)(whenlatex(latexcommand({\normalfont\scshape )ARG1+latexcommand(}))\
     whenhtml(sc(ARG1)))
 
+
+redef(mycode)(1)(tt(ARG1))
+
+
 COMMENT( This document contains Mudela fragments.  You need at least
 Yodl-1.30.18 to convert this to tex or html.
 
@@ -20,15 +24,14 @@
 \setlength{\textwidth}{5.875in} 
 \setlength{\oddsidemargin}{0.25in}   
 \setlength{\evensidemargin}{0.25in}
-\usepackage[T1]{fontenc}
 \input mudela-book
 )
 
-whenlatex(notableofcontents())
+COMMENT(whenlatex(notableofcontents()))
 whentexinfo(notableofcontents())
 
-article(Mudela, reference manual)
-      (Han-Wen Nienhuys and Jan Nieuwenhuizen)
+article(Mudela Reference Manual)
+      (Andrew Moriano, Han-Wen Nienhuys and Jan Nieuwenhuizen)
       (nop()PIPETHROUGH(date "+%B %d, %Y")()()nop())
 
 COMMENT(
@@ -57,8 +60,9 @@
 bf(This document is not up to date).  All rendered examples of course
 are current, but the rest probably isn't.  Adjusting the tutorial was
 considered more important than writing the reference manual.  We
-apologize for the inconvenience.
-
+apologize for the inconvenience.  For a complete and up-to-date
+definition, see file(lily/parser.yy), file(lily/lexer.ll), and the
+init files.
 
 This document describes the the GNU LilyPond input format, which is an
 effective language for defining music.  We call this language (rather
@@ -77,105 +81,164 @@
 definition reuse. See the documentation file file(MANIFESTO), included
 with the LilyPond sources for reasons and design considerations.
 
-The below is included for explanatory purposes only (i.e., for a
-complete and up-to-date definition, see file(lily/parser.yy) and
-file(lily/lexer.ll)).
-
-As a related note, you should take a look at the examples and the init
-files, as this document does not cover every aspect of Mudela yet, and
-may be out of date.footnote(Ok, I am being pessimistic here.  This
-just is a disclaimer.  Docs usually are written after the program
-itself.)  This document intends to give an idea of how it works. It is
-not a guide on how to use it.
-
 
 sect(Running LilyPond)
 
-When invoked with a filename that has no extension, LilyPond will add
-a file(.ly) extension.  When invoked with a filename  ending  in
-file(.fly),  LilyPond processes  the file as a music fragment  using
-file(init.fly).  When file(foo.fly) is read, LilyPond does something
-like this:
-\verb(\score {
+When invoked with a filename that has no extension, LilyPond will try adding
+a file(.fly) extension first, and a file(.ly) extension second.  
+If the filename ends with 
+file(.fly),  LilyPond processes  the file as music using
+file(init.fly).  In this case, LilyPond does something
+like:
+verb(\score {
   \notes\relative c {
-    \input "foo.fly"
+    \input "yourfile.fly"
   }
   \paper{}
   \midi{}
 })
+If you invoke LilyPond with a file file(foo.)var(ext) that doesn't
+have the file(.ly) extension then LilyPond will look for a file called
+file(init.)var(ext) and process this file.  The file
+file(init.)var(ext) must contain the code(\maininput) keyword or LilyPond
+will not read the user specified file.
 
 
 sect(Syntax)
 
-A Mudela files consists of statements, generally
-separated by spaces, tabs or newlines.  A one line comment is
-introduced by a code(%) character.  Block comments are started by
-code(%{) and ended by code(%}).  They cannot be nested.
-
-Mudela supports several data types.  Four types of simple constants
-are supported: integers, reals, strings, and notes.  An integer is a
-sequence of digits such as code(12).  A real is fromed from an
-optional minus sign and a sequence of digits followed by a decimal
-point and an optional exponent such as code(-1.2e3).  A string is
-started and ended with the code(") character.  To include a code(")
-character in a string, you must write code(\").  Various other
-backslash sequences have special interpretations as in the C language.
-A string that contains no spaces can be written without the quotes.  A
-note consists of a note name followed by an optional duration.  See
-section ref(notedesc) for details on this type.  A dimension consists
-of a real followed by one of the dimension keywords: code(\mm),
-code(\pt), code(\in), or code(\cm).  Dimensions are converted
-immediately to a real which gives the dimension in points, so they can
-be mixed with reals.
+subsect(Basic Mudela)
+
+A Mudela file consists of keywords with arguments and identifier
+assignments separated by spaces, tabs or newlines.  (Semicolons are
+used by some keywords but are not generally required.)  A one line
+comment is introduced by a code(%) character.  Block comments are
+started by code(%{) and ended by code(%}).  They cannot be nested.
+
+Mudela supports several types:
 
+description(
+
+dit(integer) 
+Formed from an optional minus sign followed by digits.  Arithmetic
+operations cannot be done with integers, and integers cannot be mixed
+with reals.
+
+dit(real) 
+Formed from an optional minus sign and a sequence of digits followed
+by a emph(required) decimal point and an optional exponent such as
+code(-1.2e3).  Reals can be built up using the usual operations:
+code(+), code(-), code(*), and code(/), with parentheses for grouping.
+
+dit(string) 
+Begins and ends with the code(") character.  To include a code(")
+character in a string write code(\").  Various other backslash
+sequences have special interpretations as in the C language.  A string
+that contains no spaces can be written without the quotes.  See
+Section ref(modes) for details on unquoted strings; their
+interpretation varies depending on the situation.  On the right side
+of identifier assignments and within the code(\header) keyword,
+strings can be concatenated using the code(+) character.
+
+dit(dimension) Consists of a real followed by one of the dimension
+keywords: code(\mm), code(\pt), code(\in), or code(\cm).  Dimensions
+are converted immediately to a real which gives the dimension in
+points, so they can be mixed with reals, but the result is no longer
+of type dimension.  The keywords that require a dimension
+(code(\shape) and code(\symboltables)) will not accept this.
+
+dit(pitch) 
+A pitch is a string which is the name of a pitch.  Example: code(a).
+The pitch names can be redefined with the code(\notenames) keyword.
+See Section(notelang) for pitch names in different languages.  Pitches
+can only be specified inside note mode which is specified with
+code(\notes).  Therefore, keywords which require pitch arguments must
+appear inside code(\notes).  
+
+dit(music) 
+Music is a compound type: arbitrarily complicated expressions with a
+hierarchical structure can be formed from simple building blocks.  The
+simplest expression of type music is a single note.  A note is formed
+from a pitch and an optional duration and must be specified within
+code(\notes).  See Section ref(notedesc) for details.  More
+complicated expressions of type music are formed by surrounding a
+sequence of expressions of type music with braces code({) and code(})
+or with angle brackets code(<) and code(>).  Items appearing in braces
+will be treated as serial. Items in angle brackets will be
+simultaneous.  So for example code({ c e g }) represents an arpeggio
+and code(< c e g >) represents a chord.  These items can be nested any
+way you like.  This simple example shows how three chords can be
+expressed in two different ways:
+mudela(fragment,verbatim,center)(
+\notes<{a b  c'}{c' d' e'}{e' f' g'}>
+\notes{<a c' e'><b  d' f'><c' e' g'>}
+)
+
+)
+
+
+COMMENT(
 Compound types are built up from the simple types.  The compound types
 are: arglist, assignlist and musiclist.  An arglist is a
 white space separated list of integers, reals and or strings surrounded
 by braces code({) and code(}).  An assignlist is a list of 
 identifier assignments, which have the form var(key)code(=)var(value).
-The simplest musiclist is a single note.  More complicated music lists
-are formed by surrounding a list of musiclists with braces code({) and
-code(}) or with angle brackets code(<) and code(>).  Items appearing
-in braces will be treated as serial. Items in angle brackets will be
-simultaneous. 
-
 A statement in Mudela has one of three forms:
 verb(\keyword argument
 \keyword argument1 argument2 ... ;
 string=value)
-        
-To assign an identifier you use:
-verb(string = ...)
-To use an identifier, you must preceed it with a backslash: code(\).
-verb(oboe = \notes { ... }
-\score{ \notes { \oboe }})
-The left-hand part of the assignment is really a string, so 
-verb("Foo bar 4 2 " = \notes { ... })
-is also a valid assignment (but you would have trouble referencing it)
-If you reuse identifiers, then the previous contents will be thrown
-away after the right hand is evaluated, e.g.
-verb(bla = \notes { \bla })
-is legal.
-
-COMMENT(It's not clear to me what things are allowed on the RHS of 
-an identifier assignment.)
-
-The following words are keywords.  You can define an identifer whose
-name is a keyword, but you will not be able to reference it.
-
-verb(absdynamic  font           mm             pt              time       
-accepts     grouping       musicalpitch   relative        translator 
-bar         header         notenames      score           transpose  
-cadenza     in             notes          script          type       
-clear       include        octave         shape           version    
-clef        key            output         skip        
-cm          keysignature   paper          spandynamic 
-consists    lyric          partial        symboltables
-contains    mark           penalty        table       
-duration    midi           property       tempo )
+)
+
+subsect(Identifiers)
+
+Identifiers allow names to be assigned to constants, music, or other
+Mudela structures.  To assign an identifier you use
+var(name)=var(value) and to refer to an identifier, you preceed its
+name with a backslash: code(\)var(name).  It is legal to redefine an
+identifier in terms of its old value: code(foo = \foo * 2.0).
+Identifier assignments must appear at the top level in the Mudela
+file.
+
+An identifier can be created with any string for its name, but you
+will only be able to refer to identifiers whose names begin with a
+letter and are entirely alphanumeric.  It is also impossible to refer
+to an identifier whose name is the same as the name of a keyword.  The
+following words are keywords:
+verb(absdynamic   header         musicalpitch   score         transpose
+accepts	     in             notenames      script      	 type     
+bar	     include        notes          shape       	 version  
+cadenza	     key            output         skip        
+clef	     keysignature   paper          spandynamic 
+cm	     lyric          partial        symboltables
+consists     maininput      penalty        table       
+duration     mark           property       tempo       
+font	     midi           pt             time        
+grouping     mm             relative       translator)
+
+The right hand side of an identifier assignment is parsed completely
+when the assignment is made.  It therefore must have any context
+specified in the definition.  For example, you must write
+code(foo=\notes{a8 b c}) rather than code(foo={a8 b c}).  Even though
+the context is specified in the definition, you must refer to the
+identifier inside the correct context:
+verb(foo = \paper{ linewidth = 6.0\in }
+\score{
+  \notes{ ... }
+  \paper{ \foo }
+})
+If code(\foo) is used here without the surrounding code(\paper) then
+an error will result.
+
+Identifiers can be set equal to integers, reals, strings, music,
+durations (specified with code(\duration)), note ornaments (specified
+with code(\script), dynamics commands, or code(:)), translator
+definitions, the code(\paper) block, the code(\midi) block or the
+code(\score) block.  When identifiers are used for translators, the
+code(\paper), code(\midi), and code(\score) blocks, they may only be
+referred to as the first item in a block.  So code(\paper{\one \two})
+is illegal because the identifier code(\two) is not the first thing in
+the block.
+
 
-COMMENT( I don't know the proper way to make this kind of table in
-yodl. )
 
 COMMENT(
 subsect(Hierarchical structures)
@@ -200,13 +263,14 @@
 )
 
 
-
-sect(Modes)
+subsect(Modes)
+label(modes)
 
 To simplify different aspects of music definition (entering the notes
-and manipulating them) Mudela has a number of different input "modes".
+and manipulating them) Mudela has three different input modes which
+affect how unquoted strings are interpreted.
 In each mode, words are identified on the input.  If code("word") is
-encountered, it is treated as a string.  If code("\word") is
+encountered, it is treated as a string.  If code(\word) is
 encountered it is treated as a keyword or as an identifier.  The
 behavior of the modes differs in two ways: different modes treat
 unquoted words different, and different modes have different rules for
@@ -228,24 +292,31 @@
 likely complain that you should be in code(\lyric) mode to do lyrics. 
 
 dit(Lyric mode) Lyrics mode is introduced by the keyword
-  code(\lyric).  Because of the various control characters that can
-  appear in lyrics, e.g., foreign language accents, the inputting a
-  string containing these has been made very easy.  Every sequence of
-non-digit and non-white characters starting with an alphabetic
-character or the code(_) is considered a word.  When code("word") is
-encountered it is treated as a lyric (without the quotes).  Likewise,
-when code(word) is encountered, it is treated as a lyric.  The code(_)
-character is converted to a space; it provides a mechanism for
-creating words that contain spaces.  
+code(\lyric).  This mode is has rules that make it easy to include
+punctuation and diacritical marks in words.  A word in Lyrics mode
+begins with: an alphabetic character, code(_),
+code(?), code(!), code(:), code('), 
+the control characters code(^A) through code(^F), code(^Q) through
+code(^W), code(^Y), code(^^), any 8-bit character with ASCII code over
+127, or a two character combination of a backslash followed by one
+of code(`), code('), code(") or code(^).  
+Subsequent characters of a word can be any character that is not a
+digit and not white space.  One important consequence of this is that
+a word can end with code(}), which may be confusing if you thought the
+code(}) was going to terminate lyrics mode.  Any code(_) characters
+which appear in an unquoted word are converted to spaces, providing a
+mechanism for introducing spaces into words without using quotes.  
+Quoted words can also be used in lyrics mode to specify words that
+cannot be specified with the above rules.  Here are some examples.
+Not all of these words are printable by TeX().  
 verb(a&@&@&TSI|{[    % a word
-1THtrhortho     % not a "word"
+\'afoo}		% a word
+1THtrhortho     % not a word because it starts with a digit
+``Hello''       % not a word because it starts with `
 Leise DOEXPAND(Fl\)DOEXPAND("u\)ss{}teren meine Sapfe       % 4 words
-_ _ _ _         % 4 words: 4 spaces
+_ _ _ _         % 4 words, each one a space
 ))
 
-COMMENT(Well, " seems to present some problems.  Also `` seems to be
-problematic.  So the above statement isn't quite right.  Unless these
-characters are considered to be "white")
 
 COMMENT(
 These modes are of a lexical nature. Normal and Note mode largely
@@ -269,16 +340,14 @@
 letters code(c) through code(b), where code(c) is an octave below
 middle C and the letters span the ocatave above that C.  
 In Dutch, a sharp is formed by adding
-code(is).  A flat is formed by adding code(es).
-Double sharps and double flats are obtained by adding code(isis) or
-code(eses).  
+code(-is) to the end of a pitch name.  A flat is formed by adding code(-es).
+Double sharps and double flats are obtained by adding code(-isis) or
+code(-eses).  
 Lily has predefined sets of notenames
-for various nop(languages)footnote(These 
-are Dutch, English, German, Italian and Swedish.
-Simply include the language specific init file file(language.ly).).
-Rests are specified with the note name code(r).  There is also a note
-name code(s) which produces a nonprinting note of the specified
-duration.  
+for various nop(languages).  See Section ref(notelang) for details.
+Rests are specified with the note name code(r) or code(R).  
+There is also a note name code(s) which produces a nonprinting note of the
+specified duration.
 
 The optional octave specification takes the form of a series of single
 quote 
@@ -310,7 +379,7 @@
 will determine what accidentals to  typeset  depending on the  key and
 context.   
 A reminder accidental can be forced by
-using the optional exclamation mark `code(!)'
+using the  optional exclamation mark `code(!)'
 on a pitch.
 mudela(fragment,verbatim,center)(
 cis' d' e' cis'  c'! d' e' c' 
@@ -337,11 +406,22 @@
 In addition, the duration can be followed by a multiplier which is
 introduced with the asterisk code(*) and can be an integer or a
 fraction.  The multiplier changes the duration that LilyPond uses
-internally for the note, but it does not change the symbol that is
-printed.  
+internally for the note, but for notes it 
+does not change the symbol that is printed.  
 mudela(fragment,verbatim,center)(
 c'4*2 c'4*2 d'8*2/3 d'8*2/3
 )
+For long rests with durations equal to an integer number of whole notes,
+LilyPond produces output that indicates the duration of the rest.  If you use
+code(r) then one rest symbol will be printed and several measures left blank.
+If you use code(R) then all of the measure will be filled with whole rests.
+If you set the code(Score.SkipBars) property, then only one measure will be
+printed; with code(R), a number indicating the length of the rest will be
+displayed.  
+mudela(fragment,verbatim,center)(
+r1*3 R1*3
+\property Score.SkipBars=1
+r1*3 R1*3)
 
 Extra long notes can be obtained using the code(\breve) and
 code(longa) durations:
@@ -350,7 +430,7 @@
 )
 
 
-subsect(Beams and Tuplets)
+subsect(Note Spanners: Beams, Tuplets, Slurs and Ties)
 
 A beam is specified by surrounding the beamed notes with brackets
 code([) and code(]).  
@@ -380,50 +460,41 @@
 [/3 b'8 b' b' ]/1  \[/3 a'4 a'8\]/1
 )
 
-COMMENT(The rest of this section needs to be rewritten.  I don't
-understand what's going on at all here.  The meaning of the lone ] is
-unclear.  And the : syntax is also unclear.  --Adrian)   
+COMMENT(This next bit needs to be fixed...or the language needs to be
+fixed.)
 
 Here is a combination
 mudela(fragment,verbatim,center)(
 [/3 a'8 a'16 a'] a'8 \]
 )
 
-Abbreviations
-mudela(fragment,verbatim,center)(
-c'1:16 [:16 e'1 g']
-)
-
-mudela(fragment,verbatim,center)(
-c'4:32 [:16 c'8 d'8]
-)
-
-
-
-subsect(Slurs and Ties)
-
-A tie connects two adjacent note heads
-
+Another type of spanner is the slur.  Slurs connects chords and try to
+avoid crossing stems.  A slur is started with code(CHAR(40)) and stopped with
+code(CHAR(41)).  The starting code(CHAR(40)) appears to the right of the first note
+in the slur.  The terminal code(CHAR(41)) apppears to the left of the first
+note in the slur.  This makes it possible to put a note in slurs from
+both sides:
 mudela(fragment,verbatim,center)(
-e' ~ e'
+f'()g'()a' [a'8 b']( a'4 g' )f'
 )
 
-Whereas a slur rather connects `chords', 
-and tries to avoid crossing stems
+A tie connects two adjacent note heads.  When used with chords, it
+connects all of the note heads.  Ties are indicated using the tilde symbol
+code(~) by analogy with TeX()'s tie which connects words.  For ties
+between chords, the input convention is somewhat peculiar.  You cannot
+write code(<c g>~<c g>), but rather must put the tilde after
+a note within the first chord.  
 
 mudela(fragment,verbatim,center)(
-e'( )e'
+e' ~ e' <c'~ e' g'><c' e' g'>
 )
 
-And of course, such a (legato) slur can span several notes
-mudela(fragment,verbatim,center)(
-c'( d' e' )f'
-)
 
 subsect(Note Ornaments)
 
 A variety of symbols can appear above and below notes to indicate
-different characteristics of the performance.  These symbols can be
+different characteristics of the performance.  
+These symbols can be
 added to a note with `var(note)code(-\)var(name)'.  Numerous different
 symbols are defined in file(script.ly).  Each symbol is defined using
 the code(\script) keyword which specifies where symbols appear.
@@ -454,48 +525,163 @@
 }
 )
 
+COMMENT( The following are defined in script.ly but do not work:
+
+portato lbheel rbheel lbtoe rbtoe lfheel rfheel lftoe rftoe )
+
 In addition, it is possible to place arbitrary strings of text or
 TeX() above or below notes by using a string instead of an identifier:
 `code(c^"text")'.  Fingerings can be placed by simply using digits.
+All of these note ornaments appear in the printed output but have no
+effect on the MIDI rendering of the music.
 
 To save typing,  a few common symbols  can  be  abbreviated  with
 single characters:
 mudela()(
 \score{ \notes {
-	\property Voice.textstyle = typewriter
+        \property Voice.textstyle = typewriter
         c''4-._"c-." s4
-        c''4--_"c--"  s4
+        c''4--_"c-{}-"  s4
         c''4-+_"c-+" s4
         c''4-|_"c-|" s4
         c''4->_"c->"  s4
         c''4-^_"c-\\^{ }"  s4 }
-	\paper { linewidth = 12.\cm; }})
+        \paper { linewidth = 12.\cm; }})
 
-Dynamic marks are specified by using an identifier after
-a note without a dash: code(c4 \ff).  The available  dynamic marks
-are:  code(\ppp),  code(\pp), code(\p), code(\mp), code(\mf),
-code(\f), code(\ff),  code(\fff), code(\fp), code(sf), and code(\sfz).
+Dynamic marks are specified by using an identifier after a note
+without a dash: code(c4 \ff).  Note that this syntax is inconsistent
+with the syntax for other types of ornaments.  The available dynamic
+marks are: code(\ppp), code(\pp), code(\p), code(\mp), code(\mf),
+code(\f), code(\ff), code(\fff), code(\fp), code(sf), and code(\sfz).
 
 A crescendo mark is started with code(\cr) and terminated with
 code(\rc).  A decrescendo mark is started with code(\decr) and
 terminated with code(\rced).
 
+Tremolo marks can be printed by a note by adding code(:)[var(length)]
+after the note.  The length must be at least 8.  A var(length) value
+of 8 gives one line across the note stem.  
+If the length is omitted,
+then the last value is used, or the value of the code(Abbrev)
+property if there was no last value.  To place tremolo marks in
+between two notes, begin with code([:)var(length) and end with code(]).
+The tremolo marks will appear instead of beams.  Putting more than two
+notes in such a construction will produce odd effects. 
+mudela(fragment,verbatim,center)(
+c'2:8 c':32 [:16 e'1 g'] [:8 e'4 f']
+)
+
+COMMENT(
+Is the last paragraph correct?  Is it called "tremolo"?  Why is
+"abbreviation" used?  (What is the unabreviated form?)
+
 
+mudela(fragment,verbatim,center)(
+c'4:32 [:16 c'8 d'8]
+)
+
+)
+
+
+sect(Other Ways to Enter Pitches)
+
+subsect(Pitch Names in Other Languages)
+label(notelang)
+
+The pitch names can be easily redefined using the code(\notenames) command.
+Note name definitions have been provided in various languages.  
+Simply include the language specific init file.  For example:
+code(\include "english.ly").  The available language files and the names
+they define are:
+
+verb(                        Note Names               sharp       flat
+nederlands.ly  c   d   e   f   g   a   bes b   -is         -es
+english.ly     c   d   e   f   g   a   bf  b   -s/-sharp   -f/-flat
+deutsch.ly     c   d   e   f   g   a   b   h   -is         -es
+norsk.ly       c   d   e   f   g   a   b   h   -iss/-is    -ess/-es
+svenska.ly     c   d   e   f   g   a   b   h   -iss        -ess
+italiano.ly    do  re  mi  fa  sol la  sid si  -d          -b)
+
+subsect(Relative Pitch Specification)
+label(relative)
+
+One very common error when entering music is to place notes in the wrong
+octave.  One way to avoid being confused by large numbers of octave changing
+marks is to use
+the code(\relative) keyword. 
+Music which appears within code(\relative) is
+interpreted differently.  The octave of a note is determined by making it as
+close to the previous note as possible.  The octave changing marks code(') and
+code(,) can then be added to raise or lower this note by octaves.  You have to
+specify a starting pitch because the first note of a list has no predecessor.  
+
+mudela(fragment,verbatim,center)(
+\relative c'' { c d b c, d b c' d 
+                b c,, d b }
+)
+
+When the preceeding item is a chord, the first note of the chord is used to
+determine the first note of the next chord.  But other notes within the second
+chord are determined by looking at the immediately preceeding note.  
+
+mudela(fragment,verbatim,center)(
+\relative c' { <c e g> 
+    <c' e g> <c, e' g> }
+) 
+
+The code(\relative) keyword can only appear in music, so there must be a
+surrounding code(\notes) keyword which does not appear in the fragments shown
+above.  Also note that if the music passed to a code(\relative) keyword 
+contains a code(\transpose) keyword, the tranposed music will not be
+processed in relative mode.  An additional code(\relative) must be placed
+inside the code(\transpose).  
+
+
+subsect(Tranposition of Pitches)
+label(transpose)
+
+Another way to modify the meaning of the note names is to use the
+code(\transpose) keyword.  This keyword allows you to transpose music.
+To use transposition, specify the pitch that middle C should be tranposed to.
+It is important to distinguish between enharmonic pitches as they can produce
+different transpositions.  To transpose up half a step, for example, either 
+code(\transpose cis') or code(\transpose des') will work.  But the first
+version will print sharps and the second version will print flats.  
+In this example, a scale in the key of E is transposed to F, or to E-sharp 
+with odd results.
+mudela(fragment,verbatim,center)(
+\relative c' { \key e; 
+  e fis gis a b cis dis e }
+)
+mudela(fragment,verbatim,center)(
+\transpose des' \relative c' { \key e; 
+   e fis gis a b cis dis e }
+)
+mudela(fragment,verbatim,center)(
+\transpose cis' \relative c' { \key e; 
+    e fis gis a b cis dis e }
+)
+If you want to use both code(\transpose) and code(\relative), then you must use
+code(\transpose) first.  Any code(\relative) keywords that are outside the 
+code(\transpose) have no effect on notes that appear inside the
+code(\transpose).  
 
 sect(Lyrics)
 
 Lyrics are entered like notes, with pitches replaced
 by text.  For example code(Twin-4 kle4 twin-4 kle4) enters four
-syllables, each with quarter note duration.  
+syllables, each with quarter note duration.  Note that the hyphen has
+no special meaning for lyrics, and does not introduce special symbols.
+See Section ref(modes) for a description of what is interpreted as a lyric.
 
 In order to instruct LilyPond to write lyrics underneath the
 staff, you must enter the lyrics context with code(\type Lyrics).  
 Lyrics should be entered in lyrics mode which is entered with code(\lyric).
 
-Two syllables or words that compose a single
-duration entry are bound together using an underscore: 
-code(He_could4 not4).  Here is a full example:
-mudela(verbatim)(\score{ 
+Spaces can be introduced into a lyric either by using quotes (code("))
+or by using an underscore without quotes: code(He_could4 not4).  All
+unquoted underscores are converted to spaces.  Here is a full example: 
+mudela(verbatim)(\score{
   <  \notes \transpose c'' {c d e c | c d e c | e f g'2 | 
                               e'4 f g'2 \bar "|."; }
      \type Lyrics \lyric { 
@@ -508,9 +694,11 @@
 URG
                         Fr\`e-4 re Ja- que
                         Fr\`e- re Ja- que
+Why does this warrant an URG?
 )
 
 
+COMMENT(
 
 sect(Chords and Voices)
 
@@ -536,13 +724,15 @@
 >
 )
 
+)
 
 sect(Time)  
 
 LilyPond aligns all musical objects according to the amount of time
 they occupy.  All of these objects have a duration.  When music is
-written in series using braces the duration is the sum of the 
-durations of the elements.  When music is stacked using angle
+written sequentially using braces the duration is the sum of the 
+durations of the elements.  When music is stacked into simultaneous music 
+using angle
 brackets, the duration is the maximum of the durations of the
 elements.  
 
@@ -568,7 +758,7 @@
 takes a list of durations to specify the grouping. 
 
 
-
+COMMENT(
 sect(Composition: forming bigger structures)
 label(sec:grammar)
 
@@ -633,27 +823,31 @@
 { c <c e> <c e g> <c e g \transpose d' dis > }  % 4 increasing chords
 )
 
-
+)
 
 
 sect(Keywords)
 
-Keywords sometimes appear alone, but usually they require arguments. 
-A keyword may have a single argument, or a sequence of arguments separated
-by spaces and terminated by a semicolon:
-`code(\keyword argument argument ... ;)'
+Keywords sometimes appear alone, but usually they require arguments.
+A keyword may have a single argument, a sequence of arguments in
+braces, or a sequence of arguments separated by spaces and terminated
+by a semicolon.  The precise syntax of each keyword is shown below.
+Keywords must appear in the right context.  If you use a keyword in
+the wrong place, even if the usage is syntactically correct, you will
+get the message ``parse error'' from LilyPond.
 
 
 description(
 
-dit(code(\absdynamic) code({) var(code) code(})) Internal command for
+dit(code(\absdynamic) code({) var(code) code(})) Internal keyword for
 printing dynamic marks such as $f$ under music.  The parameter
 var(code) is unsigned and specifies the dynamic mark to print.
 Normally you should use the more user friendly abbreviations defined
 in the init file file(dynamic.ly).
 
-dit(code(\accepts) var(string)code(;)) This command can appear only within a
-code(\translator) block.  It specifies what contexts are allowed
+dit(code(\accepts) var(string)code(;)) This keyword can appear only within a
+code(\translator) block.  It specifies what contexts are allowed with the
+context that is being defined.  See Section ref(translators).  
 
 dit(code(\bar) var(bartype)code(;)) Prints a special bar symbol, or at
 measure boundaries, replaces the regular bar symbol with a special
@@ -666,23 +860,20 @@
 line break is allowed at that spot.  Note that the printing of special bars
 has no effect on the MIDI output.
 
-dit(code(\cadenza) var(togglevalue)code(;)) Toggles the automatic generation
+dit(mycode(\cadenza) var(togglevalue)code(;)) Toggles the automatic generation
 of bar lines.  If var(togglevalue) is 0 then bar line generation is
 turne off.   If var(togglevalue) is  1  then a bar is  immediately
 printed and bar generation is turned  on.
 
-dit(code(\clear)) Allowed only within code(\notename).  Clears all the
-previously defined note names.  
-
 dit(code(\clef) var(clefname)code(;)) Allowed only in music.  
 Sets the current clef.  The argument is
 a string which specifies the name of the clef.  Several clef names are
 supported.  If code(_8) or code(^8) is added to the end of a clef
 name then the clef lowered or raised an octave will be generated.  
 Here are the supported clef names with middle C shown in each clef:
-mudela()(
+mudela(center)(
 \score{
-  \notes{  
+  \notes{ \cadenza 1;
    %\property Voice.textstyle = typewriter
    \clef subbass; c'4-"\kern-10mm subbass" 
            \clef bass;    c'4^"\kern -8mm bass"
@@ -690,55 +881,17 @@
            \clef varbaritone; c'4^"\kern -10mm varbaritone"
            \clef tenor;     c'4_"\kern -10mm tenor"
            \clef "G_8";   c'4^"\kern -6mm G\_8"  }  
-\paper{ linewidth= 4.5 \in;
-Staff = \translator {
-        \type "Line_group_engraver_group";
-
-        defaultclef = violin;
-
-%       \consists "Bar_engraver";
-        \consists "Clef_engraver";
-        \consists "Key_engraver";
-        \consists "Local_key_engraver";
-        \consists "Time_signature_engraver";
-        \consists "Staff_sym_engraver";
-        \consists "Collision_engraver";
-        \consists "Rest_collision_engraver";
-        \consists "Separating_line_group_engraver";
-          
-        \accepts "Voice";
-        }
-
-}
-
+   \paper{ linewidth= 4.5 \in }
 }
 )
-mudela()(
+mudela(center)(
 \score{
-  \notes{\clef alto;    c'4_"\kern -10mm alto"
+  \notes{\cadenza 1; \clef alto;    c'4_"\kern -10mm alto"
            \clef mezzosoprano; c'4^"\kern -10mm mezzosoprano"
            \clef soprano;  c'4_"\kern -10mm soprano"
            \clef treble;  c'4^"\kern -6mm treble"
            \clef french;  c'4_"\kern -10mm french" }  
-\paper{ linewidth= 4.5 \in;
-Staff = \translator {
-        \type "Line_group_engraver_group";
-
-        defaultclef = violin;
-
-%       \consists "Bar_engraver";
-        \consists "Clef_engraver";
-        \consists "Key_engraver";
-        \consists "Local_key_engraver";
-        \consists "Time_signature_engraver";
-        \consists "Staff_sym_engraver";
-        \consists "Collision_engraver";
-        \consists "Rest_collision_engraver";
-        \consists "Separating_line_group_engraver";
-          
-        \accepts "Voice";
-        }
-}
+  \paper{ linewidth= 4.5 \in }
 }
 )
 The treble  clef  can also  be obtained using  the  names code(G) or
@@ -746,12 +899,9 @@
 
 dit(code(\cm)) Specify a dimension in centimeters. 
 
-dit(code(\consists) var(string)code(;)) This command can appear only within a
+dit(code(\consists) var(string)code(;)) This keyword can appear only within a
 code(\translator) block.  It specifies that an engraver named
-var(string) should be added to the translator.
-
-dit(code(\contains)) Produces a parse error.  (There is no rule in the
-grammar that refers to this token.)
+var(string) should be added to the translator.  See Section ref(translators).
 
 dit(code(\duration) code({) var(length) var(dotcount) code(})) Specify note
 duration.  The parameter var(length) is the negative logarithm (base
@@ -759,7 +909,7 @@
 note, etc.  The number of dots  after  the  note is given by
 var(dotcount). 
 
-dit(code(\font) var(string)) Internal command.  Used within
+dit(code(\font) var(string)) Internal keyword.  Used within
 code(\symboltables) to specify the font.
 
 dit(code(\grouping) var(durationseq); )  Sets  the  metric structure of
@@ -768,14 +918,20 @@
 together in 5/16 time.  The default grouping is to have as many groups
 of 3 as possible followed by groups of two.  
 
+dit(code(\header) code({) var(key1) = var(val1); var(key2) = var(val2); ... code(}))
+Specifies information about the music.  A header should appear at the
+top of the file describing the file's contents.  If a file has
+multiple code(\score) blocks, then a header should appear in
+each score block describing its contents.  Tools like code(ly2dvi) can
+use this information for generating titles.   Some possible key values
+are: title, opus, description, composer, enteredby, and copyright.
+
 dit(code(\in)) Specify a dimension in inches.  
 
 dit(code(\include) var(file)) Include the specified file.  The
 argument var(file) is a string.  The full filename including the
 file(.ly) extension must be given. 
 
-dit(code(\lyric) var(lyriclist)) Parse var(lyriclist) in lyrics mode.
-
 dit(code(\key) var(pitch)) Change key signature to that of
 var(pitch)-major.
 
@@ -783,8 +939,21 @@
 Specify an arbitrary key signature.  The pitches from var(pitch) will
 be printed in the key signature in the order that they appear on the list.
 
+dit(code(\lyric) var(lyriclist)) Parse var(lyriclist) in lyrics mode.
+
+dit(code(\maininput)) Internal command.  This command is used for creating init
+files like file(init.fly) that read the user file into the middle of another
+file.  Using it in a user file will lead to an infinite loop.
+        
 dit(code(\mark) var(unsigned) or code(\mark) var(string)) Allowed in
-music only.  What does this do?
+music only.  Prints a mark over or under (?) the staff.  You must add
+code(Mark_engraver) to the Score context and it only seems to work if the
+mark appears at the beginning of a line.  
+
+dit(code(\midi) var(statementlist)) Appears in a score block to
+indicate that musical output should be produced.  See code(\tempo).
+
+dit(code(\mm)) Specify a dimension in millimeters. 
 
 dit(code(\musicalpitch) code({) var(octave) var(note) var(shift) code(})) 
 Specify note pitch.  The octave is specified by an integer,
@@ -793,47 +962,30 @@
 is zero for a natural, negative to add flats, or positive to add
 sharps.
 
-dit(code(\notes) var(music)) Enter note mode and process the
-specified music. 
-
-dit(code(\time) var(numerator)code(/)var(denominator)) Change the time
-signature.  The default time signature  is 4/4.  
-
-dit(code(\midi) var(statementlist)) Appears in a score block to
-indicate that musical output should be produced.  See code(\tempo).
-
-dit(code(\mm)) Specify a dimension in millimeters. 
-
-dit(code(\header) code({) var(key1) = var(val1); var(key2) = var(val2); ... code(}))
-Specifies information about the music.  A header should appear at the
-top of the file describing the file's contents.  If a file has
-multiple code(\score) blocks, then a header should appear in
-each score block describing its contents.  Tools like code(ly2dvi) can
-use this information for generating titles.   Some possible key values
-are: title, opus, description, composer, enteredby, and copyright.
-
 dit(code(\notenames) var(assignmentlist)) Define new note names.  
 The argument is a list of definitions of  the form
 var(name) = var(pitch),  where var(pitch) is specified with the
-code(\musicalpitch) command.  Another possibility is code(\clear)
-which can appear instead of an assignment.  
+code(\musicalpitch) keyword.  
 
-dit(code(\octave)) Generate a parse error.  Never referred to in the
-grammar.
+dit(code(\notes) var(music)) Enter note mode and process the
+specified music. 
 
-dit(code(\output) var(string)code(;)) Allowed only in
+dit(code(\)code(output) var(string)code(;)) Allowed only in
 code(\paper) block.  The parameter var(string) specifies an alternate
 name for the TeX() output.  A file(.tex) extension will be added to
 var(string) to produce the output file name.
 
-dit(code(\partial) var(duration)) Specify that the first measure of
-the music lasts only for the specified duration.
-
 dit(code(\paper) var(statmentlist)) 
 Appears in a score block to indicate that the music should be printed.
+The var(statmentlist) contains statements that change features of the
+output.  See Section ref(paper).  
+
+dit(code(\partial) var(duration)) Specify that the first measure of
+the music lasts only for the specified duration.
 
-dit(code(\penalty) code(=) var(int)) Allowed only in musiclists.
-Discourages line breaks.
+dit(code(\penalty) code(=) var(int)) Allowed only in music.
+Discourage or encourage line breaks.  See identifiers code(\break) and
+code(\nobreak) in Section ref(ident). 
 
 dit(code(\property) var(contextname)code(.)var(propname) code(=) var(value))
 Sets the var(propname) property of the context var(contextname) to the
@@ -843,28 +995,19 @@
 
 dit(code(\relative) var(pitch) var(music)) Processes the specified
 var(music) in relative pitch
-mode.  In this mode, the octave of a pitch note is chosen so that the
-note is closest to the preceeding note.  
+mode.  In this mode, the octave of a pitch is chosen so that the
+pitch is closest to the preceeding pitch.  
 The argument var(pitch) is
 the starting pitch for this comparision.  In the case of chords, the
-first note of a chord is used as the base for the pitches in the next
-chord.  
-
-Because transposing changes both note names and octaves relativizing
-transposed music doesn't make any sense.  If you want to transpose
-relative music, do code(\transpose var(pitch) \relative var(pitch)
-var(music)), i.e., first enter the music in relative mode, and then
-transpose it by prepending the code(\transpose) keyword.
-code(\relative var(pitch) \transpose var(pitch)) has no effect.
+first note of a chord is used as the base for the first pitches in the next
+chord.  See Section ref(relative).
 
-For the same reason the first code(\relative) in code(\relative
-var(pitch1) \relative var(pitch2) var(music)) has no effect.
-
-
-dit(code(\score) var(statementlist)) Define music.
+dit(code(\score) var(statementlist)) Create a Score context.  This
+is the top level notation context.  
+COMMENT(this still needs work)
 
 dit(code(\script) code({) var(name) var(instaff) var(withstem)
-var(location) var(invertible) var(priority) code(})) This command is
+var(location) var(invertible) var(priority) code(})) This keyword is
 used the initialization file(script.ly) to define the various symbols
 that can appear above and below notes.  The first argument is the name
 of the symbol.  The second argument var(instaff) is 1 if the symbol
@@ -896,54 +1039,63 @@
 mysterious error in lyrics).
 
 dit(code(\spandynamic) code({) var(kind) var(toggle) code(})) Internal
-command for crescendo and decrescendo symbols.  The first parameter
+keyword for crescendo and decrescendo symbols.  The first parameter
 var(kind) is set to 1 for a crescendo and -1 for a decrescendo.  The
 second parameter is set to 1 to start the mark and 2 to stop it.
 Users should use the abbreviations which are defined in the
 initialization file file(dynamic.ly).
 
-dit(code(\symboltables)) Internal command.  Used to create symbol
+dit(code(\symboltables)) Internal keyword.  Used to create symbol
 tables.  See initialization files file(paper*.ly), file(feta*.ly), and
 file(table*.ly).  
 
-dit(code(\table)) Internal command.  Used within code(\symboltables)
-to specify the tables.  See initialization  files. 
+dit(code(\table)) Internal keyword.  Used within code(\symboltables)
+to specify the tables.  See initialization files. 
 
 dit(code(\tempo) var(duration) = var(perminute)) Used within
 code(\midi) to specify the tempo.  For example, 
 `code(\midi { \tempo 4 = 76})' requests output with 76 quarter notes
 per minute. 
 
+
+dit(code(\time) var(numerator)code(/)var(denominator)) Change the time
+signature.  The default time signature  is 4/4.  
+
+
 dit(code(\translator) var(statements) or code(\translator)
 var(context) = var(name)) The first variant appears only within
 code(\paper) and specifies a translator for
 converting music to notation.  The translator is specified with a
 single code(\type) statement and a series of code(\accepts), and
-code(\consists) statements.  The second variant appears in a
-musiclist.  It specifies that the current the contexts
+code(\consists) statements.  See Section ref(translators). 
+The second variant appears in 
+music.  It specifies that the current the contexts
 contained within the specified context should be shifted to the
 context with the specified name.  
 
 COMMENT( \translator seems like a strange name for the second
 operation, and is the overloading desireable? )
 
-dit(code(\type) var(contexttype) [code(=) var(contextname)]
-var(musiclist) or code(\type) var(translatortype)code(;)) The first
-variant is used only within musiclists to 
-create a instance of a context.  The new context
-can optionally be given a name.  The second variant appears within a
-code(\translator) block and specifies the type of translator being
-created.
-
 dit(code(\transpose) var(pitch) var(music)) Transposes the specified
-music.  Middle C is tranposed to var(pitch). 
+music.  Middle C is tranposed to var(pitch).  This is allowed in music only,
+and if it appears inside code(\relative), then any notes specified for
+transposition should be specified inside another code(\relative).  See Section
+ref(transpose).  
+
+dit(code(\type) var(contexttype) [code(=) var(contextname)]
+var(music) or code(\type) var(translatortype)code(;)) The first
+variant is used only within music to create an instance of a
+context.  The new context can optionally be given a name.  The
+specified var(music) is processed in the new context. The second
+variant appears within a code(\translator) block and specifies the
+type of translator being created.
 
 dit(code(\version) var(string)) Specify the version of Mudela that a
 file was written for.  The argument is the version number, for example
 code("1.0.1").  Note that the Mudela version is different from the
 LilyPond version.
 
-)
+)  
 
 
 sect(Notation Contexts)
@@ -951,47 +1103,48 @@
 Notation contexts provide information that appears in printed music
 but not in the music itself.  A new musical context is created using
 the code(\type) keyword: `code(\type) var(contexttype) [code(=)
-var(contextname)] var(musiclist)'.  The following context types are
+var(contextname)] var(music)'.  The following context types are
 allowed.
 
 description(
 
-dit(code(Lyrics)) Typesets lyrics.
+dit(code(LyricVoice)) Corresponds to a voice with lyrics.  Handles the printing
+of a single line of lyrics.  
 
 dit(code(Voice)) Corresponds to a voice on a staff.
   This context handles the conversion of noteheads,
   dynamic signs, stems, beams, super- and subscripts, slurs, ties and rests.
 
+dit(code(Lyrics)) Typesets lyrics.  It can contain code(LyricVoice) contexts.
+
 dit(code(Staff)) Handles clefs, bar lines, keys,
-  accidentals.  It can contain code(Voice) or code(Lyrics) contexts.
+  accidentals.  It can contain code(Voice) contexts.
 
 dit(code(RhythmicStaff)) A context like code(Staff) but for printing
 rhythms.  Pitches are ignored; the notes are printed on one line.  
-It can contain code(Voice) or code(Lyrics) contexts. 
+It can contain code(Voice) contexts. 
 
 dit(code(GrandStaff)) Contains code(Staff) or code(RhythmicStaff)
 contexts.  It adds a brace on the left side grouping the staffs
 together. The bar lines of the contained staffs are connected vertically.
-It can contain code(Staff), code(RhythmicStaff) or code(Lyrics) contexts.
+It can contain code(Staff) contexts.
 
 dit(code(StaffGroup)) Contains code(Staff) or code(RhythmicStaff)
 contexsts.  Adds a bracket on the left side, grouping the staffs
 together.  The bar lines of the contained staffs are connected vertically.
-It can contain code(Staff), code(RhythmicStaff) or code(Lyrics) contexts.  
+It can contain code(Staff), code(RhythmicStaff), code(GrandStaff) or code(Lyrics) contexts.  
 
-dit(code(ChoireStaff)) Identical to code(StaffGroup) except that the
+dit(code(ChoirStaff)) Identical to code(StaffGroup) except that the
 contained staffs are not connected vertically.  
 
-COMMENT(Odd spelling of "choir".)
-
-dit(code(Score)) This is the top level notation context.  It is entered with
-the code(\score) command rather than the code(\type) command.  No
+dit(code(Score)) This is the top level notation context.  It is specified with
+the code(\score) keyword rather than the code(\type) command.  No
 other context can contain a code(Score) context.  This context handles
 the administration of time signatures.  It also makes sure that items
 such as clefs, time signatures, and key-signatures are aligned across
 staffs.  It can contain code(Lyrics), code(Staff),
 code(RhythmicStaff), code(GrandStaff), code(StaffGroup), and
-code(ChoireStaff) contexts.
+code(ChoirStaff) contexts.
 
 )
 
@@ -1000,161 +1153,258 @@
 `code(\property) var(context)code(.)var(propname) code(=) var(value)'.
 Properties can also be set within the code(\translator) block
 corresponding to the appropriate context.  In this case, they are
-assigned by `var(propname) code(=) var(value)'.
+assigned by `var(propname) code(=) var(value)'.  The settings made with
+code(\property) are processed after settings made in the code(\translator)
+block, so the code(\property) settings will override code(\translator)
+settings.  
+
+The code(\property) keyword will create any property you specify.
+There is no guarantee that a property will actually be used.  If you
+spell a property name wrong, there will be no error message.  In order to find
+out what properties are used, you must search the source code 
+for code(get_property).  
+Properties that are set in one context are inherited by all of the
+contained contexts.  This means that a property valid for the Voice
+context can be set in the Score context (for example) and thus take
+effect in all Voice contexts.  
 
+subsubsubsect(Lyrics properties)
 
 description(
-  dit(Lyrics properties)
 
-     description(
-        dit(code(textstyle)) Set the font for lyrics.  The available
-font choices are code(normaltext), code(roman), code(italic), code(bold)
+dit(code(textstyle)) Set the font for lyrics.  The available font
+choices are code(normaltext), code(roman), code(italic), code(bold)
 code(normaltext), code(large), code(Large), code(huge), and
-code(finger).  The code(finger) font can only display numbers.  
-Note also that you must be careful when using code(\property) in
-Lyrics mode.  Because of the way strings are parsed, either put quotes
-around the arguments to code(\property) or be sure to leave a space on
-both sides of the dot.  
-    dit(code(textalignment))
-Controls alignment of lyrics.
-Set to -1 to align the left end of the lyric with
-the note; set to 1 to align the right end of the lyric with the note.
-Set to 0 to align the center of the lyric with the note.  
-       )
-   dit(Voice properties)
-
-     description(  
-     dit(code(ydirection)) Determines the direction of
-stems, subscripts, beams, slurs, and ties.  Set to -1 to force them
-down, 1 to force them up, or 0 to let LilyPond decide.  This can be
-used to distinguish between voices on the same staff.  The
+code(finger).  The code(finger) font can only display numbers.  Note
+also that you must be careful when using code(\property) in Lyrics
+mode.  Because of the way strings are parsed, either put quotes around
+the arguments to code(\property) or be sure to leave a space on both
+sides of the dot.
+
+dit(code(textalignment)) Controls alignment of lyrics.  Set to \left
+to align the left end of the lyric with the note; set to \right to
+align the right end of the lyric with the note.  Set to \center to
+align the center of the lyric with the note.  
+
+)
+
+subsubsubsect(Voice properties)
+
+description(  
+
+dit(code(midi_instrument)) Sets  the  instrument for MIDI  output. 
+
+dit(code(transposing)) Tranpose the MIDI output.  Set this property to
+the number of half-steps to transpose by.
+
+dit(code(ydirection)) Determines the direction of stems, subscripts,
+beams, slurs, and ties.  Set to code(\down) to force them down,
+code(\up) to force them up, or code(\free) to let LilyPond decide.
+This can be used to distinguish between voices on the same staff.  The
 code(\stemdown), code(\stemup), and code(\stemboth) identifiers set
-this property.  
-   dit(code(slurydirection)) Set to 0 for free choice of slur
-direction, set to 1 to force slurs up, set to 0 to force slurs down.
-The shorthands code(\slurup), code(\slurdown), and code(\slurboth) are
-available.  
-
-   dit(code(slurdash)) Set to 0 for normal slurs, 1 for dotted slurs,
-and a larger value for dashed slurs.  Identifiers code(\slurnormal)
-  and code(\slurdotted) are  predefined  to  set the first two settings.
+this property.  See also the identifiers code(\voiceone),
+code(\voicetwo), code(\voicethree) and code(\voicefour).
+
+dit(code(slurydirection)) Set to code(\free) for free choice of slur
+direction, set to code(\up) to force slurs up, set to code(\down) to
+force slurs down.  The shorthands code(\slurup), code(\slurdown), and
+code(\slurboth) are available.
+
+dit(code(slurdash)) Set to 0 for normal slurs, 1 for dotted slurs, and
+a larger value for dashed slurs.  Identifiers code(\slurnormal) and
+code(\slurdotted) are predefined to set the first two settings.
 
-   dit(code(hshift)) Set to 1 to enable LilyPond to shift notes
+dit(code(hshift)) Set to 1 to enable LilyPond to shift notes
 horizontally if they collide with other notes.  This is useful when
 typesetting many voices on one staff.  The identifier code(\shift) is
-defined to enable this.  
+defined to enable this.
+
+dit(code(dynamicdir)) Determines location of dynamic marks.  Set to
+code(\up) to print marks above the staff; set to code(\down) to print
+marks below the staff.
+
+dit(code(textalignment)) Controls alignment of superscripted and
+subscripted text.  Set to \left to align the left end of the text with
+the note; set to \right to align the right end of the text with the
+note.  Set to \center to align the center of the text with the note.
 
-   dit(code(textalignment)) Controls alignment of superscripted and
-subscripted text.  Set to -1 to align the left end of the text with
-the note; set to 1 to align the right end of the text with the note.
-Set to 0 to align the center of the text with the note.  
-  dit(code(textstyle)) Set the text style for superscripts and
+dit(code(textstyle)) Set the text style for superscripts and
 subscripts.  See above for list of text styles.
 
-  dit(code(fontsize)) Can be used to select smaller font sizes for music.  The
-  normal font size is 0, and the two smaller sizes are -1 and -2.
+dit(code(fontsize)) Can be used to select smaller font sizes for
+music.  The normal font size is 0, and the two smaller sizes are -1
+and -2.
+
+dit(code(pletvisibility)) Determines whether tuplets of notes are
+labelled.  Setting to 0 shows nothing; setting to 1 shows a number;
+setting to 2 shows a number and a bracket if there is no beam; setting
+to 3 shows a number, and if there is no beam it adds a bracket;
+setting to 4 shows both a number and a bracket unconditionally.  
 
-  dit(code(pletvisibility)) Determines whether tuplets of notes are
-  labelled.   Setting to 0 shows nothing; setting to 1  shows a
-  number; setting to 2  shows a  number and  a bracket if there is  no
-  beam; setting  to  3 shows  a number, and if there is no beam it
-  adds a  bracket; setting  to 4 shows both a  number  and  a bracket
-  unconditionally.   
 )
 
-dit(Staff properties)
+subsubsubsect(Staff properties)
+
+description(
+ 
+dit(code(defaultclef)) Determines the default clef.  See code(\clef)
+keyword.
 
- description(
+dit(code(nolines)) Sets the number of lines that the staff has.
  
-   dit(code(defaultclef)) Determines the default clef.  See code(\clef)
-   keyword.
+dit(code(barAlways)) If set to 1 a bar line is drawn after each note.
+
+dit(code(defaultBarType)) Sets the default type of bar line.  See
+code(\bar) keyword.
+
+
+
+
+dit(code(keyoctaviation)) If set to 1, then keys are the same in all
+octaves.  If set to 0 then the key signature for different octaves can
+be different and is specified independently: code(\keysignature bes
+fis').  The default value is 1.  Can be set to zero with
+code(\specialkey) or reset to 1 with code(\normalkey).
 
-   dit(code(nolines)) If set to 1, then the staff has only one line instead
- of the usual five lines.
-    
-   dit(code(barAlways)) If set to 1 a bar line is drawn after each note.
-
-   dit(code(defaultBarType)) Sets the default  type of bar  line.  See
-   code(\bar) keyword.   
-
-   dit(code(keyoctaviation)) If set to 1, then keys are the same in all
-   octaves.  If set to 0 then the key signature for different octaves
-   can be different and is specified independently:
-   code(\keysignature bes fis').  The default value
-   is 1.  Can be set to zero with code(\specialkey) or reset to 1 with
-   code(\normalkey).  
-
-   dit(code(instrument) and code(instr)) If code(Staff_margin_engraver) is
-   added to the Staff translator, then the code(instrument) property is used to
-   label the first line of the staff and the code(instr) property is used to
-   label subsequent lines.
-COMMENT(Check that this works)
+dit(code(instrument) and code(instr)) If code(Staff_margin_engraver)
+is added to the Staff translator, then the code(instrument) property
+is used to label the first line of the staff and the code(instr)
+property is used to label subsequent lines.
+COMMENT(This prints the instrument name on top of the staff lines.)
 
-   dit(code(midi_instrument)) Sets  the  instrument for MIDI  output. 
+dit(code(abbrev)) Set length for tremolo to be used if no length is
+explicitly specified.
+
+dit(code(createKeyOnClefChange)) Set to a nonempty string if you want key
+signatures to be printed when the clef changes.  Set to the empty string (the
+default) if you do not want key signatures printed.
+
+
+dit(code(timeSignatureStyle)) Changes the default two-digit layout
+   for time signatures. The following values are recognized:
+   description(
+      dit(code(C)): 4/4 and 2/2 are typeset as C and struck C,
+      respectively. All other time signatures are written with two digits.
+      dit(code(old)): 2/2, 3/2, 3/4, 4/4, 6/4 and 9/4 are typeset with
+      old-style mensuration marks. All other time signatures are 
+      written with two digits.
+      dit(code(1)): All time signatures are typeset with a single
+      digit, e.g. 3/2 is written as 3.
+      dit(code(C2/2,C4/4, old2/2, old3/2, old3/4, old4/4, old6/4 or
+      old9/4)): Tells Lilypond to use a specific symbol as time
+      signature.
+   )
+
+The different time signature characters are shown below with
+their names:
+mudela(fragment,center)(
+\relative c'' {
+\property Voice.textstyle = typewriter
+\property Staff.timeSignatureStyle = "C"
+\time 2/2; a2^"C" a2 \time 2/2;
+\property Staff.timeSignatureStyle = "old3_2"
+a2_"old3\_2" a2 \time 2/2;
+\property Staff.timeSignatureStyle = "oldC"
+a2^"oldC" a2 \time 2/2;
+\property Staff.timeSignatureStyle = "old6_4"
+a2_"old6\_4" a2 \time 2/2;
+\property Staff.timeSignatureStyle = "old9_4"
+a2^"old9\_4" a2
+}
+)
+
+COMMENT( timeSignatureSymbol?  timeSignatureChar? )
 
-   dit(code(transposing)) Tranpose the MIDI  output. 
-COMMENT(What syntax?   "0 c" "2 c" ???)
 
-     dit(code(ydirection))   What does this do in staff ???
 )
    
-  dit(GrandStaff  properties)
 
-    description( 
-      dit(code(maxVerticalAlign))
-      dit(code(minVerticalAlign))
-      )
 
-   dit(Score properties)
+subsubsubsect(GrandStaff properties)
+
+description( 
+
+dit(code(maxVerticalAlign)) Set the maximum vertical distance between
+staffs.
+
+dit(code(minVerticalAlign)) Set the minimum vertical distance between
+staffs.  
 
-   description(
-    dit(code(part))  Set  to a part  number  for  music with  several  parts.   
-      Each part has its own code(\score) block  with a different part setting.  
-   dit(code(SkipBars)) ???
-
-   dit(code(beamquantisation)) Set to 0 for no  quantization.  Set  to 1 to
-   quantize  position  and  slope.  Set to 2 to  avoid  wedges.   These three
-   settings  are available via code(\beamposfree),  code(\beamposnormal),  and
-   code(\beampostraditional).    
-
-   dit(code(beamslopedamping)) Set to 0 for undamped beams.  Set to 1 for
-   damped beams.  Set to 100000 for beams with zero slope.  The identifiers
-   code(\beamslopeproportional), code(\beamslopedamped), and
-   code(\beamslopezero) each set the corresponding value.
-  )
-       
 )
 
+subsubsubsect(Score properties)
+
+description(
+
+dit(code(SkipBars)) Set to 1 to skip the empty bars that are produced
+by multimeasure notes and rests.  These bars will not appear on the
+printed output.  Set to zero (the default) to expand multimeasure
+notes and rests into their full length, printing the appropriate
+number of empty bars so that synrchonization with other voices is
+preserved.  COMMENT(meaning of "skip" here seems to be different from
+the meaning used for the keyword \skip.)
+
+dit(code(beamquantisation)) Set to code(\none) for no quantization.
+Set to code(\normal) to quantize position and slope.  Set to
+code(\traditional) to avoid wedges.  These three settings are
+available via code(\beamposfree), code(\beamposnormal), and
+code(\beampostraditional).
+
+dit(code(beamslopedamping)) Set to code(\none) for undamped beams.
+Set to code(\normal) for damped beams.  Set to code(\infinity) for
+beams with zero slope.  The identifiers code(\beamslopeproportional),
+code(\beamslopedamped), and code(\beamslopezero) each set the
+corresponding value.
+
+)
+       
 
 COMMENT(
 
 Mystery properties:
 
-bar-column-engraver.cc:  "barColumnPriority"
-bar-number-engraver.cc:  "barNumberBreakPriority"
-bar-number-engraver.cc:  "barScriptPadding"
-dynamic-engraver.cc:     "dynamicdir"
-mark-engraver.cc:        "markScriptPadding"
-mark-engraver.cc:        "markBreakPriority"
-span-bar-engraver.cc:    "singleStaffBracket"
-staff-margin-engraver.cc:"marginBreakPriority"
-stem-engraver.cc:        "abbrev"
+bar-number-engraver.cc:  "barScriptPadding"  vertical space for numbers
+mark-engraver.cc:        "markScriptPadding" vertical space for marks
+span-bar-engraver.cc:    "singleStaffBracket" do single staffs get a bracket?
+bar-column-engraver.cc:  "barColumnPriority"        
+bar-number-engraver.cc:  "barNumberBreakPriority"   Control horizontal ordering
+mark-engraver.cc:        "markBreakPriority"      of bars, clefs, keysig
+staff-margin-engraver.cc:"marginBreakPriority"    etc.  Slated for revision
 )
 
-sec(Pre-defined Identifiers)
+sect(Pre-defined Identifiers)
+label(ident)
 
 Various identifiers are defined in the initialization files to
 provide shorthands for some settings.  
 
 description(
+dit(code(\break)) Force a line break in music by using a large
+argument for the keyword code(\penalty). 
+dit(code(\center)) Used for setting textalignment property.  Is set to 0.
 dit(code(\cr)) Start a crescendo.
 dit(code(\decr)) Start a decrescendo.
+dit(code(\down)) Used for setting direction setting properties.  Is
+equal to -1.  
 dit(code(\f)) Print forte symbol on the preceeding note.
 dit(code(\ff)) Print fortissimo symbol on the preceeding note. 
 dit(code(\fff)) Print fortississimo symbol on preceeding note. 
 dit(code(\fp)) Print fortepiano symbol on preceeding note. 
+dit(code(\free)) Used for setting direction setting properties.  Is
+equal to 0.  
+dit(code(\Gourlay)) Used for setting the paper variable
+code(castingalgorithm).  Is equal to 1.0.  
+dit(code(\infinity)) Used for setting the Score.beamslopedamping
+property.  Is actually equal to 10000.  
+dit(code(\left)) Used for setting textalignment property.  Is equal to -1.
 dit(code(\mf)) Print mezzoforte symbol on preceeding note. 
 dit(code(\mp)) Print mezzopiano symbol on preceeding note. 
+dit(code(\nobreak)) Prevent a line break in music by using a large
+negative argument for the keyword code(\penalty). 
+dit(code(\none)) Used for setting Score.beamslopedamping and
+Score.beamquantisation properties.  Is equal to 0.
+dit(code(\normal)) Used for setting Score.beamslopedamping and
+Score.beamquantisation properties.  Is equal to 1.
 dit(code(\normalkey)) Select normal key signatures where each octave
 has the same key signature.  This sets the Staff.keyoctaviation property.
 dit(code(\p)) Print a piano symbol on preceeding note. 
@@ -1162,10 +1412,13 @@
 dit(code(\ppp)) Print pianississimo symbol on preceeding note. 
 dit(code(\rc)) Terminate a crescendo. 
 dit(code(\rced)) Terminate a decrescendo
+dit(code(\right)) Used for setting textalignment property.  Is set to 1.
 dit(code(\sf)) Print a ?? symbol on preceeding note. 
 dit(code(\sfz)) Print a ?? symbol on preceeding note. 
-dit(code(\shift)) Enable note heads that collide with other note heads
-to be shifted horiztonally.  This sets the Voice.hshift property.
+dit(code(\shiftoff)) Disable horizontal shifting of note heads that collide.  
+Sets the Voice.hshift property.
+dit(code(\shifton)) Enable note heads that collide with other note heads
+to be shifted horiztonally.  Sets the Voice.hshift property.
 dit(code(\slurboth)) Allow slurs to be above or below notes.  This
 sets the Voice.slurydirection property. 
 dit(code(\slurdown)) Force slurs to be below notes. This sets the
@@ -1179,40 +1432,203 @@
 dit(code(\stemdown)) Force stems, beams, and slurs to point down.
 This sets the Voice.ydirection property. 
 dit(code(\stemup)) Force stems, beams and slurs to point up.  This
-sets the Voice.ydirectoin property. 
+sets the Voice.ydirection property. 
+dit(code(\traditional)) Used for setting the 
+Score.beamquantisation property.  Is equal to 2.  
+dit(code(\up)) Used for setting various direction properties.  Is
+equal to 1. 
+dit(code(\voiceone)) Enter Voice context called code(one) and force stems down.
+(See code(\stemdown).)
+dit(code(\voicetwo)) Enter Voice context called code(two) and force stems
+up. (See code(\stemup).)
+dit(code(\voicethree)) Enter Voice context called code(three) and force stems
+up.  
+dit(code(\voicefour)) Enter Voice context called code(four), force stems down
+and turn on horizontal shifting.  (See code(\stemdown) and code(\shifton).)
+dit(code(\Wordwrap)) Used for setting the paper variable
+code(castingalgorithm).  Equal to 0.0.  
 )
 
 
 sect(The code(\paper) Block)
+label(paper)
 
 The code(\paper) block may begin with an optional identifier reference.  No
 identifier references are allowed anywhere else in the block.  
-The keywords code(\shape), code(\output) and code(\translator) may
+The keywords code(\shape), code(\)code(output) and code(\translator) may
 appear in this block.  In addition, variable assignments may appear.  
 The variables control layout details and are set to reasonable
-defaults that depend on the font size in use. 
+defaults that depend on the font size in use.  The only way to find out what
+variables are supported is to search the source code for code(get_var). 
 
 subsect(Paper variables)
 
+There are a large number of paper variables that are used to set internal
+details of the layout.  Usually you will not want to change these variables.
+Two variables that you may want to change are code(linewidth) and code(indent).
+
 description(
   dit(var(integer)) If an integer appears on the left side of an
 assignment then a code(\symboltables) keyword must appear on the right
-side.  This defines a font.  
+side.  This defines a music font at a particular size.  See Voice
+property code(\fontsize).
 
-dit(code(arithmetic_basicspace))
-dit(code(arithmetic_multiplier))
-dit(code(basicspace))
-dit(code(beam_thickness)) Specify the thickness of beams
-dit(code(geometric))
+dit(code(arithmetic_basicspace) and code(arithmetic_multiplier))
+The space taken by a note is determined by the formula 
+verb(arithmetic_multiplier * ( c + time ))
+where code(time) is the amount of time a note occupies.  The value of
+code(c) is affected by code(arithmetic_basicspace).  Increasing
+code(arithmetic_basicspace) will increase code(c).
+dit(code(barsize)) Specify height of bars.  This value may need to be
+adjusted if you change the number of lines in the staff.
+dit(code(beam_dir_algorithm)) Specify algorithm for determining
+whether beams go up or down.  It is real valued.  If set to 2.0 then
+majority selection is used.  If set to 3.0, then mean selection is
+used based on the mean center distance.  If set to 4.0 then median
+selection is used, based on the median center distance.  
+dit(code(beam_ideal_stem1))
+dit(code(beam_ideal_stem2))
+dit(code(beam_minimum_stem1))
+dit(code(beam_minimum_stem2))
+dit(code(beam_multiple_break))
+dit(code(beam_slope_damp_correct_factor))
+dit(code(beam_thickness)) Specify the thickness of beams.
+dit(code(castingalgorithm)) 
+dit(code(forced_stem_shorten)) Stems that have been forced to go the
+unnatural direction are shortened by this amount.  Equal to
+code(\interline) by default.  
+dit(code(gourlay_energybound))
+dit(code(gourlay_maxmeasures)) Maximum number of measures per line
+when using Gourlay method.
+Decreasing this greatly reduces computation time.  Default value: 10.  
 dit(code(indent)) Sets the indentation of the first line of music.  
 dit(code(interbeam))
 dit(code(interbeam4))
-dit(code(interline))
-dit(code(internote))
+dit(code(interline))  The distance between two staff
+lines, calculated from the center of the lines.  
 dit(code(linewidth))  Sets the width of the lines.  If it is set to
--1, then a single unjustified line is produced.  
-dit(code(notewidth))
+-1.0, then a single unjustified line is produced.  
+dit(code(notewidth)) Width of an average note head.  
 dit(code(rulethickness)) Determines thickness of staff lines and bars. 
-dit(code(staffheight))
-dit(code(unitspace))
+dit(code(slur_clip_angle))
+dit(code(slur_clip_height))
+dit(code(slur_clip_ratio))
+dit(code(slur_height_limit))
+dit(code(slur_ratio))
+dit(code(slur_rc_factor))
+dit(code(slur_slope_damping))
+dit(code(slur_thickness))
+dit(code(slur_x_gap))
+dit(code(slur_x_minimum))
+dit(code(staffheight)) The height of the staff from the center of the
+bottom line to the center of the top line.  Equal to to code(4 * \interline).
+dit(code(stem_length)) Specify length of stems for notes in the staff
+that don't have beams.  
+dit(code(stemthickness)) Specifies the thickness of the stem lines.  
+dit(code(tie_slope_damping))
+dit(code(tie_x_minimum))
+)
+
+subsect(Translators)
+label(translators)
+
+The behavior of notation contexts is defined by the translators for
+those contexts.  The translator for a context specifies what notations
+are handled by the context, it specifies what other contexts the
+context can contain, and it sets property values for the context.  The
+default contexts are all defined in file(engraver.ly).  An easy way to
+change the behavior of a context is to copy the definition from that
+file and modify it.  
+
+The first thing that appears inside a code(\translator)
+definition is the type of the context being created.  There are 
+four types:
+description(
+  dit(code(Engraver_group_engraver))
+  dit(code(Hara_kiri_line_group_engraver))
+  dit(code(Line_group_engraver_group))
+  dit(code(Score_engraver))  
+)
+COMMENT( The names of these types seem somewhat confusing. )
+
+After the type of the context is specified, property assignments and
+code(\consists) and code(\accepts) keywords can appear in any order.  
+Each code(\accepts) keyword specifies what contexts can be contained
+inside this one.  
+
+The code(\consists) keywords specify which notations are
+handled by the context.  Each code(\consists) keyword specifies the
+name of an engraver which handles a certain notation.  
+Here is a list
+of the engravers. 
+
+description(
+dit(code(Abbreviation_beam_engraver))
+dit(code(Bar_column_engraver)) 
+dit(code(Bar_engraver)) Engraves bar lines.  Normally in code(Staff) and
+code(RhythmicStaff).  
+dit(code(Bar_number_engraver)) Engrave bar numbers.  These numbers
+appear at the start of each line.  Not normally in any translator.  Can
+be added to code(Score) for Score-wide numbering or to code(Staff) for
+numbering on each staff.  
+
+dit(code(Beam_engraver)) Handles beam requests by engraving beams.  Normally
+appears in the code(Voice) translator.  If omitted, then notes will be printed
+with flags instead of beams.
+
+dit(code(Beam_req_swallow_translator)) Swallows beam requests.  In
+code(LyricVoice).  
+dit(code(Clef_engraver)) Engraves the clef symbol.  Normally in code(Staff).
+dit(code(Collision_engraver))
+dit(code(Dot_column_engraver)) Engraves dots on dotted notes shifted to the
+right of the note.  Normally in code(Voice).  If omitted, then dots appear on
+top of the notes.  
+dit(code(Dynamic_engraver)) Engraves dynamics symbols.  Normally in code(Voice).
+dit(code(Font_size_engraver))
+dit(code(Key_engraver)) Engraves the key signature.  Normally in code(Staff).
+dit(code(Local_key_engraver))
+dit(code(Lyric_engraver)) Engraves lyrics.  Normally in code(LyricVoice).
+dit(code(Multi_measure_rest_engraver)) Engraves multi-measure rests that are
+produced with code(R).  Normally in code(Voice).
+dit(code(Note_heads_engraver)) Engraves note heads.  Normally in code(Voice).
+Removing this gives a fatal error.  
+COMMENT(Perhaps should be Note_head_engraver)
+dit(code(Piano_bar_engraver))
+dit(code(Pitch_squash_engraver)) Treat all pitches as middle C.  Used in
+code(RhythmicStaff).  Note that the notes move, but the locations of
+accidentals stay the same. 
+dit(code(Plet_engraver)) Engraves brackets and the number over tuplets.  In
+code(Voice).  
+dit(code(Plet_swallow_engraver)) Swallows tuplet requests without any output.
+In code(LyricVoice).  
+COMMENT( Should this be named Plet_req_swallow_translator? )
+dit(code(Priority_horizontal_align_engraver))
+dit(code(Rest_collision_engraver)) Handles collisions of rests. In code(Staff).
+dit(code(Rest_engraver)) Engraves rests.  Normally in code(Voice).
+dit(code(Rhythmic_column_engraver))
+dit(code(Score_priority_engraver))
+dit(code(Script_engraver)) Handles note ornaments generated by code(\script).
+Normally in code(Voice).  
+dit(code(Separating_line_group_engraver))
+dit(code(Skip_req_swallow_translator))
+dit(code(Slur_engraver)) Engraves slurs.  Normally in code(Voice).
+dit(code(Span_bar_engraver)) Engraves lines across multiple staffs.  Normally
+in code(Staffgroup) and code(GrandStaff).  Removing this from code(StaffGroup)
+gives the definition of code(ChoirStaff).  
+dit(code(Span_score_bar_engraver))
+dit(code(Staff_group_bar_engraver))
+dit(code(Staff_margin_engraver)) Prints the name of the instrument
+(specified by code(Staff.instrument) and code(Staff.instr)) at the
+left of the staff.  
+dit(code(Staff_sym_engraver))
+dit(code(Stem_engraver)) Engraves stems.  Normally in code(Voice).
+dit(code(Ties_engraver)) Engraves ties.  Normally in code(Voice).
+COMMENT(perhaps should be named Tie_engraver?)
+dit(code(Time_signature_engraver)) Engraves the time signature.  Normally in
+code(Staff) and code(RhythmicStaff).
+dit(code(Timing_engraver)) Responsible for synchronizing timing information
+from staffs.  Normally in code(Score).  In order to create polyrhythmic music,
+this engraver should be removed from code(Score) and placed in code(Staff).
+dit(code(Vertical_align_engraver)) 
 )
+
diff -urN ../lilypond-1.0.12/Documentation/tex/tutorial.yo ./Documentation/tex/tutorial.yo
--- ../lilypond-1.0.12/Documentation/tex/tutorial.yo	Tue Sep 29 12:55:19 1998
+++ ./Documentation/tex/tutorial.yo	Mon Oct  5 11:20:05 1998
@@ -687,7 +687,7 @@
 Let us review these commands:
 
 description(
-dit(mymycode(\clef) var(clefname)) This command sets the current clef for notation,
+dit(mycode(\clef) var(clefname)) This command sets the current clef for notation,
   i.e., a clef symbol is printed and the notes following this command
   are shifted vertically.  The argument is a string, the name of the
   new clef. The default clef is the treble clef.
@@ -696,12 +696,12 @@
     \clef "treble"; c'4
     \clef "alto"; c'4    
   )
-dit(mymycode(\key) var(pitch)) This command changes the current key signature.  The
+dit(mycode(\key) var(pitch)) This command changes the current key signature.  The
   key signature is printed at the start of every line.  The argument
   is the name of the corresponding major key.  The key of C-minor can 
   thus be specified as `mycode(\key es)'.
   
-dit(mymycode(\keysignature) var(pitchlist))
+dit(mycode(\keysignature) var(pitchlist))
 
 This command changes the current key signature.  Unlike the
 `mycode(\key)' command, this command can produce arbitrary key
@@ -714,7 +714,7 @@
 example.
 
 
-dit(mymycode(\time) var(numerator)mycode(/)var(denominator))
+dit(mycode(\time) var(numerator)mycode(/)var(denominator))
   This command changes the current time signature.  LilyPond uses the
   time signature to
   calculate where to place the bars that start a measure.  These bars
@@ -730,7 +730,7 @@
   )
 
 
-dit(mymycode(\cadenza) var(togglevalue)) When typesetting music without a
+dit(mycode(\cadenza) var(togglevalue)) When typesetting music without a
 regular meter (such as an ad libitum cadenza), no bar lines should be
 printed.  In LilyPond you can achieve this by issuing the command
 `mycode(\cadenza 1)': it turns off the automatically
@@ -740,7 +740,7 @@
 is printed.  LilyPond will act as if you are again at the start of a
 measure.
 
-dit(mymycode(\bar) var(bartype))
+dit(mycode(\bar) var(bartype))
   This command lets you print special bar
   lines and repeat symbols.  You can also use it to allow line breaks
   when entering cadenzas.  The argument var(bartype) is a string that
@@ -761,7 +761,7 @@
 
 
   
-dit(mymycode(\partial) var(duration)) some music starts with a measure that
+dit(mycode(\partial) var(duration)) some music starts with a measure that
 isn't fully filled, a so-called upstep.  The mycode(\partial) command
 allows you to make
 upsteps. The argument is a duration similar to the duration of a note.
@@ -774,7 +774,7 @@
     [d'8 dis'] e' c''4 e'8 c''4 
   )
 
-  dit(mymycode(\grouping) var(durationslist)) sets the metric structure of the measure.
+  dit(mycode(\grouping) var(durationslist)) sets the metric structure of the measure.
     Its effect can best be shown by an example:
     mudela(fragment,verbatim)(
         \time 5/16;
@@ -976,9 +976,9 @@
 \notes \relative c' {  \time 2/4; g'4 c,4 a'4 f4 e c d2 }
 \paper { 
   linewidth = -1.;
-  Staff = \translator {
+  \translator {
     \type "Line_group_engraver_group";
-
+    Staff ;
     defaultclef = violin;
 
     \consists "Timing_engraver";
@@ -1000,9 +1000,9 @@
   \notes \relative c' {  \time 2/4; g'4 c,4 a'4 f4 e c d2 }
   \paper{
   linewidth = -1.;
-    Staff = \translator {
+    \translator {
     \type "Line_group_engraver_group";
-    defaultclef = violin;
+    defaultclef = violin;Staff;
     \consists "Time_signature_engraver";
     \consists "Separating_line_group_engraver";
     \accepts "Voice";
@@ -1018,9 +1018,9 @@
   \notes \relative c' {  \time 2/4; g'4 c,4 a'4 f4 e c d2 }
   \paper{
   linewidth = -1.;
-    Staff = \translator {
+    \translator {
     \type "Line_group_engraver_group";
-    defaultclef = violin;
+    defaultclef = violin;Staff ;
     \consists "Bar_engraver";
     \consists "Time_signature_engraver";
     \consists "Separating_line_group_engraver";
@@ -1036,9 +1036,9 @@
   \notes\relative c' { \time 2/4; g'4 c,4
 a'4 f4 e c d2 } \paper {
   linewidth = -1.;
-  Staff = \translator {
+  \translator {
     \type "Line_group_engraver_group";
-
+    Staff ;
     defaultclef = violin;
     \consists "Bar_engraver";
     \consists "Time_signature_engraver";
@@ -1057,9 +1057,9 @@
   \notes \relative c' {\clef alto;  \time 2/4; g'4 c,4 a'4 f4 e c d2 }
 \paper {
   linewidth = -1.;
-  Staff = \translator {
+   \translator {
     \type "Line_group_engraver_group";
-
+    Staff;
      defaultclef = violin;
     \consists "Bar_engraver";
     \consists "Time_signature_engraver";
@@ -1574,10 +1574,15 @@
 \translator
 {
         \type "Engraver_group_engraver";
+
+	"ContextName"
+
         \accepts "...";
         \accepts "...";
         \accepts "...";
 
+
+
         \consists " ... ";
         \consists " ... ";
         \consists " ... ";
@@ -1634,30 +1639,14 @@
 
 mudela(verbatim)(
 polymetricpaper = \paper {
-  Score = \translator {
-    \type Score_engraver;
-    \consists "Score_priority_engraver";
-    \consists "Priority_horizontal_align_engraver";
-    \consists "Vertical_align_engraver";
-    % \consists "Timing_engraver"; % removed Timing_engraver
-    \accepts "Staff";
+  \translator {
+    \ScoreContext
+    \remove "Timing_engraver";
   }
 
-  Staff = \translator {
-    \type "Line_group_engraver_group";
-
-    defaultclef = violin;
-
-    \consists "Bar_engraver";
-    \consists "Clef_engraver";
-    \consists "Key_engraver";
-    \consists "Local_key_engraver";
-    \consists "Time_signature_engraver";
-    \consists "Timing_engraver";  % added Timing_engraver
-    \consists "Staff_sym_engraver";
-    \consists "Separating_line_group_engraver";
-
-    \accepts "Voice";
+  \translator {
+    \StaffContext
+    \consists "Timing_engraver";
   }
 }
 \score {
diff -urN ../lilypond-1.0.12/NEWS ./NEWS
--- ../lilypond-1.0.12/NEWS	Wed Sep 30 11:04:38 1998
+++ ./NEWS	Mon Oct  5 11:48:08 1998
@@ -1,3 +1,58 @@
+pl 12.mb1
+	- bf: feta-timesig.mf Added horizontal space, minor corrections.
+	- Changed meaning of Staff.timeSignatureStyle:
+		C	Use C and stroked C for 4/4,2/2
+		old	Use old style mensuration marks
+		1	Use single number
+		Cn/m	Set symbol explicitly, n/m=2/2 or 4/4	
+		oldn/m	Set symbol explicitly, n/m=2/2,3/2,3/4,4/4,6/4 or 9/4.
+	  All other time signatures are typeset with the default two-digit
+	  layout.
+		
+
+pl 12.jcn2
+	- Lookup abstract base class
+	- Lookup/Symtable(s): separation of input/output
+
+pl 12.jcn1
+	- preparations for braindead PostScript output
+
+pl 12.hwn3
+	- praeludium-fuga-E to relative mode
+	- bf: mudela-mode.el
+	- bf: BIBINPUTS
+	- more dutch glossary + explanations
+	- table-to-html fixes
+pl 12.hwn2
+	- bf: mymycode in .yo
+	- VERSION to out/
+	- add VPATH to mutopia
+	- access_Identifier (bool): (non)copy arg now explicit.
+	- bf: lilypond-latex.tex
+  
+
+
+pl 12.hwn1
+	- \remove "Engraver_type";
+	- \output "bla" -> output = "bla" (mudela 0.1.6)
+	- \property defaultclef -> \property defaultClef
+	- naming of access_{Engraver,Performer,Translator_group} ()
+	- changed syntax for \translator in \paper{} (mudela 0.1.6)
+	- declared contexts:
+
+		StaffContext = \translator { .. }
+		\translator { \StaffContext }
+
+	- elt_b -> elem_b
+	- bf: add Separating_line_group_engraver to RhythmicStaff.
+
+
+pl 12.am1
+	- large doc patch, ChoireStaff -> ChoirStaff
+
+*******
+pl 12
+
 pl 11.uu2
 	- added Transposed_music for mixing transposition and relative 
 
diff -urN ../lilypond-1.0.12/TODO ./TODO
--- ../lilypond-1.0.12/TODO	Tue Sep 22 13:39:52 1998
+++ ./TODO	Mon Oct  5 13:34:21 1998
@@ -7,31 +7,29 @@
 Most of the items are marked in the code as well, with full explanation. 
 grep for TODO and ugh/ugr/urg
 
-	* uniformise property names.
 
-	ydirection <-> yDirection
+BUGS:
+
+	* fix \n after proccing
+
+ Summary of minor spelling irregularities:
+>   capitalization/use of underscores in property names
+>   \lyric vs \notes  \lyric vs \type Lyrics  (\lyric should have an -s)
 
-	* 
-   \score{
-      \notes { \property Staff.defaultclef = bass    a b c d }
-      \paper{
-
-
-   Staff = \translator {
-	   \type "Line_group_engraver_group";
-	   \consists "Bar_engraver";
-	   \consists "Clef_engraver";
-	   \consists "Key_engraver";
-	   \consists "Local_key_engraver";
-	   \consists "Time_signature_engraver";
-	   \consists "Staff_sym_engraver";
-	   \consists "Collision_engraver";
-	   \consists "Rest_collision_engraver";
-	   \consists "Separating_line_group_engraver";
-	   \accepts "Voice";
-	}
-   }
-}
+	* fix Score.skipBars
+
+	* repeat bars: need distance after ":|" and before "|:"
+
+	* \shape 1st dim skipped? 
+
+	* fix marks/barnumbers/marginal notes
+
+****
+
+
+	* uniformise property names.
+
+	* ydirection <-> yDirection
 
 	* typo checks on property names?
 
@@ -39,8 +37,6 @@
 
 	* make engraver hacking robust.
 
-	* fix LOCALE settings, and \def\foo{2,000pt} output
-
 	* use streambufs and iostream
 	to provide IO handling for TeX stream, mudela stream, data-file.
 
@@ -50,8 +46,6 @@
 
 	* zip target for binary windows dist (JBR)
 
-	* repeat bars: need distance after ":|" and before "|:"
-
 	* text continuationss
 
 	* revise documentation
@@ -60,10 +54,6 @@
 
 	* junking \skip req in lyrics
 
-	* \shape 1st dim skipped? 
-
-	* Choire -> Choir
-
 	* Language:
 	- general plet mechanism.
 
@@ -86,13 +76,13 @@
 
 	* install TeX stuff into tex/generic directory.
 
+	* /etc/profile.d support for RPM.
+
 	* percussion note heads
 
 	* mi2mu empty staffs.
 
 	* include MIDI list 
-
-	* make separate translation property list.
 
 	* make GNU style webpages.
 
diff -urN ../lilypond-1.0.12/VERSION ./VERSION
--- ../lilypond-1.0.12/VERSION	Wed Sep 30 12:00:35 1998
+++ ./VERSION	Mon Oct  5 11:48:37 1998
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=0
-PATCH_LEVEL=12
+PATCH_LEVEL=13
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
diff -urN ../lilypond-1.0.12/buildscripts/genheader.py ./buildscripts/genheader.py
--- ../lilypond-1.0.12/buildscripts/genheader.py	Mon Sep 28 15:38:01 1998
+++ ./buildscripts/genheader.py	Mon Oct  5 11:19:59 1998
@@ -4,7 +4,7 @@
 # 
 # source file of the GNU LilyPond music typesetter
 # 
-# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+# (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
 import os
 import sys
diff -urN ../lilypond-1.0.12/buildscripts/mf-to-table.py ./buildscripts/mf-to-table.py
--- ../lilypond-1.0.12/buildscripts/mf-to-table.py	Tue Sep 15 18:22:43 1998
+++ ./buildscripts/mf-to-table.py	Mon Oct  5 11:48:08 1998
@@ -4,7 +4,7 @@
 # 
 # source file of the GNU LilyPond music typesetter
 # 
-# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+# (c) 1997 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
 import os
 import sys
@@ -14,7 +14,6 @@
 import regsub
 import time
 
-sys.path.append ('@abs-step-bindir@')
 
 (options, files) = getopt.getopt(
     sys.argv[1:], 'a:d:hl:o:p:t:', 
@@ -60,6 +59,7 @@
 	    if begin_autometric_re.search(line) == -1:
 		line = ''
 	    line = line + regsub.sub('\n','', suf)
+            line = regsub.sub('\r','', line)
 
 	if self.eof():
 	   return ''
diff -urN ../lilypond-1.0.12/flower/dictionary.cc ./flower/dictionary.cc
--- ../lilypond-1.0.12/flower/dictionary.cc	Tue Sep 15 18:22:43 1998
+++ ./flower/dictionary.cc	Mon Oct  5 11:19:59 1998
@@ -18,7 +18,7 @@
   Dictionary (Dictionary const&);
   T &elem (String s);
   T const &elem (String s) const;
-  bool elt_b (String s) const;
+  bool elem_b (String s) const;
   void add (String, T);
   void clear ();
 }
diff -urN ../lilypond-1.0.12/flower/dstream.cc ./flower/dstream.cc
--- ../lilypond-1.0.12/flower/dstream.cc	Tue Sep 15 18:22:43 1998
+++ ./flower/dstream.cc	Mon Oct  5 11:19:59 1998
@@ -53,9 +53,9 @@
   String cl (strip_member (mem));
   String idx = cl;
 
-  if (silent_assoc_p_->elt_b (mem))
+  if (silent_assoc_p_->elem_b (mem))
     idx  = mem;
-  else if (silent_assoc_p_->elt_b (cl))
+  else if (silent_assoc_p_->elem_b (cl))
     idx = cl;
   else
     {
@@ -74,7 +74,7 @@
 bool
 Dstream::silent_b (String s) const
 {
-  if (!silent_assoc_p_->elt_b (s))
+  if (!silent_assoc_p_->elem_b (s))
     return false;
   return (*silent_assoc_p_)[s];
 }
@@ -162,7 +162,7 @@
     (*silent_assoc_p_)[r[0]] = (bool)(int)(Scalar (r[1]));
   }
 
-  if ((*silent_assoc_p_).elt_b ("Dstream_default_silence"))
+  if ((*silent_assoc_p_).elem_b ("Dstream_default_silence"))
     default_silence_b_ = (*silent_assoc_p_)["Dstream_default_silence"];
 }
 
diff -urN ../lilypond-1.0.12/flower/include/assoc.hh ./flower/include/assoc.hh
--- ../lilypond-1.0.12/flower/include/assoc.hh	Tue Sep 15 18:22:43 1998
+++ ./flower/include/assoc.hh	Mon Oct  5 11:19:59 1998
@@ -55,11 +55,11 @@
     return arr.size() -1;
   }
 public:
-  bool elt_b (K key) const {
+  bool elem_b (K key) const {
     return find (key) >= 0;
   }
   void del (K key) {
-    assert (elt_b (key));
+    assert (elem_b (key));
     int i= find (key);
     arr[i].free = true;
   }
@@ -77,7 +77,7 @@
     return elem (key);
   }
   V const & elem (K key) const { 
-    assert (elt_b (key));
+    assert (elem_b (key));
     return arr[find (key)].val;
   }
   void clear () 
diff -urN ../lilypond-1.0.12/flower/include/interval.hh ./flower/include/interval.hh
--- ../lilypond-1.0.12/flower/include/interval.hh	Tue Sep 15 18:22:43 1998
+++ ./flower/include/interval.hh	Mon Oct  5 11:19:59 1998
@@ -100,7 +100,7 @@
   }
   String str() const;    
   void print () const;
-  bool elt_b (T r);
+  bool elem_b (T r);
   void negate () {
     T r = -left;
     T l = -right;
diff -urN ../lilypond-1.0.12/flower/include/interval.tcc ./flower/include/interval.tcc
--- ../lilypond-1.0.12/flower/include/interval.tcc	Tue Sep 15 18:22:43 1998
+++ ./flower/include/interval.tcc	Mon Oct  5 11:19:59 1998
@@ -125,7 +125,7 @@
 
 template<class T>
 bool
-Interval_t<T>::elt_b (T r)
+Interval_t<T>::elem_b (T r)
 {
   return r >= left && r <= right;
 }
diff -urN ../lilypond-1.0.12/init/bar-numbering.ly ./init/bar-numbering.ly
--- ../lilypond-1.0.12/init/bar-numbering.ly	Tue Sep 15 18:22:43 1998
+++ ./init/bar-numbering.ly	Thu Jan  1 00:00:00 1970
@@ -1,22 +0,0 @@
-% bar-numbering.ly
-% 
-Staff = \translator {
-	\type "Line_group_engraver_group";
-	defaultclef = violin;
-	barColumnPriority = "0";
-
-	marginBreakPriority = "-4";
-	\consists "Bar_engraver";
-	\consists "Clef_engraver";
-	\consists "Key_engraver";
-	\consists "Time_signature_engraver";
-	\consists "Local_key_engraver";
-	\consists "Staff_sym_engraver";
-	\consists "Collision_engraver";
-	\consists "Rest_collision_engraver";
-	\consists "Bar_column_engraver";
-	\consists "Bar_number_engraver";
-	\consists "Separating_line_group_engraver";
-	  
-	\accepts "Voice";
-}
diff -urN ../lilypond-1.0.12/init/book-fragment.ly ./init/book-fragment.ly
--- ../lilypond-1.0.12/init/book-fragment.ly	Fri Sep 18 12:53:23 1998
+++ ./init/book-fragment.ly	Mon Oct  5 11:19:59 1998
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
 	
-\version "1.0.4";
+\version "1.0.6";
 
 
 \include "declarations.ly"
diff -urN ../lilypond-1.0.12/init/book-init.ly ./init/book-init.ly
--- ../lilypond-1.0.12/init/book-init.ly	Fri Sep 18 12:53:23 1998
+++ ./init/book-init.ly	Mon Oct  5 11:19:59 1998
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
 	
-\version "1.0.4";
+\version "1.0.6";
 
 
 \include "declarations.ly";
diff -urN ../lilypond-1.0.12/init/center-fragment.ly ./init/center-fragment.ly
--- ../lilypond-1.0.12/init/center-fragment.ly	Fri Sep 18 12:53:23 1998
+++ ./init/center-fragment.ly	Mon Oct  5 11:19:59 1998
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
 	
-\version "1.0.4";
+\version "1.0.6";
 
 
 \include "declarations.ly"
diff -urN ../lilypond-1.0.12/init/center.ly ./init/center.ly
--- ../lilypond-1.0.12/init/center.ly	Fri Sep 18 12:53:23 1998
+++ ./init/center.ly	Mon Oct  5 11:19:59 1998
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
 	
-\version "1.0.4";
+\version "1.0.6";
 
 
 \include "declarations.ly"
diff -urN ../lilypond-1.0.12/init/engraver.ly ./init/engraver.ly
--- ../lilypond-1.0.12/init/engraver.ly	Mon Sep 21 11:55:46 1998
+++ ./init/engraver.ly	Mon Oct  5 11:20:05 1998
@@ -2,8 +2,10 @@
 % setup for Request->Element conversion. Guru-only
 %
 
-Staff = \translator {
+StaffContext=\translator {
 	\type "Line_group_engraver_group";
+	Staff ;
+
 %{
 	The Hara_kiri_line_group_engraver is a Line_group_engraver 
 	that will not typeset an empty line of staff, i.e., a line 
@@ -12,7 +14,6 @@
 	Hara_kiri_line_group_engraver.
 %}
 %	\type "Hara_kiri_line_group_engraver";
-	defaultclef = violin;
 
 	\consists "Bar_engraver";
 	\consists "Clef_engraver";
@@ -43,16 +44,21 @@
 	(\property Staff.instrument; Staff.instr for subsequent lines)
 	to the left of a staff.
 %}
-%{
+
 	marginBreakPriority = "-5";
+
+%{
 	\consists "Staff_margin_engraver";
 %}
 	\consists "Separating_line_group_engraver";
 	  
 	\accepts "Voice";
-}
-ChoireStaff = \translator {
+};
+
+\translator{\StaffContext }
+\translator {
 	\type "Line_group_engraver_group";
+	ChoirStaff;
 	\consists "Vertical_align_engraver";
 	\consists "Staff_group_bar_engraver";
 	\accepts "Staff";
@@ -62,21 +68,23 @@
 }
 
 
-RhythmicStaff = \translator
-{
+RhythmicStaffContext=\translator{
 	\type "Line_group_engraver_group";
 	nolines  = "1";
 	\consists "Pitch_squash_engraver";
-
+	\consists "Separating_line_group_engraver";	
+	RhythmicStaff;
 	\consists "Bar_engraver";
 	\consists "Time_signature_engraver";
 	\consists "Staff_sym_engraver";
 	\accepts "Voice";
-}
-
-Voice = \translator {
+};
+\translator{\RhythmicStaffContext}
+VoiceContext = \translator {
 	\type "Engraver_group_engraver";
 	\consists "Dynamic_engraver";
+	Voice ;
+	
  	\consists "Rest_engraver";
 	\consists "Dot_column_engraver";
 	\consists "Stem_engraver";
@@ -91,60 +99,57 @@
 	\consists "Ties_engraver";
 	\consists "Note_heads_engraver" ;	
 	\consists "Skip_req_swallow_translator";
-	%\accepts "Thread";
-}
-
+};
 
-GrandStaff = \translator {
+\translator {\VoiceContext}
+\translator {
 	\type "Line_group_engraver_group";
-
+	GrandStaff;
 	\consists "Span_bar_engraver";
 	\consists "Vertical_align_engraver";
 	\consists "Piano_bar_engraver";
 	minVerticalAlign = 1.5*\staffheight;
 
-	% This should come last
 	\accepts "Staff";
 }
 
-StaffGroup = \translator {
+\translator {
 	\type "Line_group_engraver_group";
 %	\type "Hara_kiri_line_group_engraver";
 	\consists "Span_bar_engraver";
 	\consists "Vertical_align_engraver";
 	\consists "Staff_group_bar_engraver";
-
+	StaffGroup;
 	\accepts "Staff";
 	\accepts "RhythmicStaff";
 	\accepts "GrandStaff";
 	\accepts "Lyrics";
 }
 
-LyricVoice = 
 \translator{
 	\type "Line_group_engraver_group";
 
+	LyricVoice ;
 	\consists "Separating_line_group_engraver";
 	\consists "Lyric_engraver";
 	\consists "Beam_req_swallow_translator";
 	\consists "Plet_swallow_engraver";
 }
 
-Lyrics = \translator {
+\translator {
 	\type "Line_group_engraver_group";
+	Lyrics;
 	\consists "Vertical_align_engraver";
 	\accepts "LyricVoice";
 }
 
-Score = \translator {
+ScoreContext = \translator {
 	\type Score_engraver;
+	Score;
+	defaultClef = violin;
 
 	\consists "Timing_engraver";
-	% uncomment to bar numbers on a whole system.
-%{
-	\consists "Bar_column_engraver";
-	\consists "Bar_number_engraver";
-%}
+
 	\consists "Bar_column_engraver";
 	\consists "Span_score_bar_engraver";
 	\consists "Score_priority_engraver";
@@ -157,13 +162,90 @@
 	\accepts "RhythmicStaff";	
 	\accepts "Lyrics";
 	\accepts "GrandStaff";
-	\accepts "ChoireStaff";
-}
+	\accepts "ChoirStaff";
+};
+\translator { \ScoreContext }
+
+ScoreWithNumbers = \translator {
+ 	\type "Score_engraver";
+
+	% uncomment to bar numbers on a whole system.
+	\consists "Bar_column_engraver";
+	\consists "Bar_number_engraver";
+
+};
+
+\translator {
+ 	\type "Score_engraver";
+	StupidScore;
 
-StupidScore = \translator {
-	\type Score_engraver;
 	\consists "Staff_sym_engraver";
 }
 
 
 
+BarNumberingStaffContext = \translator {
+	\StaffContext
+	barColumnPriority = "0";
+	marginBreakPriority = "-4";
+	\consists "Mark_engraver";
+	\consists "Bar_column_engraver";
+	\consists "Bar_number_engraver";
+
+};
+
+
+HaraKiriStaffContext = \translator {
+	\type "Hara_kiri_line_group_engraver";
+	Staff;
+	barColumnPriority = "0";
+	marginBreakPriority = "-4";
+
+	\consists "Bar_engraver";
+	\consists "Clef_engraver";
+	\consists "Key_engraver";
+	\consists "Time_signature_engraver";
+	\consists "Local_key_engraver";
+	\consists "Staff_sym_engraver";
+	\consists "Collision_engraver";
+	\consists "Rest_collision_engraver";
+	\consists "Staff_margin_engraver";
+	\consists "Separating_line_group_engraver";
+	  
+	\accepts "Voice";
+};
+
+OrchestralPartStaffContext = \translator {
+	\HaraKiriStaffContext
+	barColumnPriority = "0";
+	marginBreakPriority = "-4";
+	\consists "Mark_engraver";
+	\consists "Bar_column_engraver";
+	\consists "Bar_number_engraver";
+};
+
+OrchestralScoreContext= \translator {
+	\type Score_engraver;
+	Score;
+	barScriptPadding = "2.0";	% dimension \pt
+	markScriptPadding = "4.0";
+	barColumnPriority = "-4";
+	markBreakPriority = "-4";
+	defaultClef = violin;
+
+	\consists "Timing_engraver";
+	\consists "Bar_column_engraver";
+	\consists "Bar_number_engraver";
+	\consists "Mark_engraver";
+	\consists "Span_score_bar_engraver";
+	\consists "Score_priority_engraver";
+	\consists "Priority_horizontal_align_engraver";
+	\consists "Vertical_align_engraver";
+
+	\accepts "ChoirStaff";
+	\accepts "StaffGroup";
+	\accepts "Staff";
+	\accepts "RhythmicStaff";	
+	\accepts "Lyrics";
+	\accepts "GrandStaff";
+};
diff -urN ../lilypond-1.0.12/init/fragment.ly ./init/fragment.ly
--- ../lilypond-1.0.12/init/fragment.ly	Fri Sep 18 12:53:23 1998
+++ ./init/fragment.ly	Mon Oct  5 11:19:59 1998
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
 	
-\version "1.0.4";
+\version "1.0.6";
 
 
 \include "declarations.ly"
diff -urN ../lilypond-1.0.12/init/init.fly ./init/init.fly
--- ../lilypond-1.0.12/init/init.fly	Fri Sep 18 16:16:17 1998
+++ ./init/init.fly	Mon Oct  5 11:19:59 1998
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
 	
-\version "1.0.4";
+\version "1.0.6";
 
 
 \include "declarations.ly"
diff -urN ../lilypond-1.0.12/init/init.ly ./init/init.ly
--- ../lilypond-1.0.12/init/init.ly	Fri Sep 18 12:53:23 1998
+++ ./init/init.ly	Mon Oct  5 11:19:59 1998
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
 	
-\version "1.0.4";
+\version "1.0.6";
 
 
 \include "declarations.ly";
diff -urN ../lilypond-1.0.12/init/paper16.ly ./init/paper16.ly
--- ../lilypond-1.0.12/init/paper16.ly	Mon Sep 21 10:46:12 1998
+++ ./init/paper16.ly	Mon Oct  5 11:19:59 1998
@@ -6,7 +6,7 @@
 
 
 
-\version "1.0.4";
+\version "1.0.6";
 
 paper_sixteen = \paper {
 	staffheight = 16.0\pt;
diff -urN ../lilypond-1.0.12/init/paper20.ly ./init/paper20.ly
--- ../lilypond-1.0.12/init/paper20.ly	Mon Sep 21 10:46:12 1998
+++ ./init/paper20.ly	Mon Oct  5 11:19:59 1998
@@ -5,7 +5,7 @@
  \include "table13.ly";
  \include "table16.ly";
 
-\version "1.0.4";
+\version "1.0.6";
 
 paper_twenty = \paper {
 	staffheight = 20.0\pt;
@@ -13,8 +13,8 @@
 	papersize = "a4";
 
 	% ugh see table20 for sizes
-	quartwidth =  6.61\pt
-	wholewidth = 9.90\pt
+	quartwidth =  6.61\pt;
+	wholewidth = 9.90\pt;
 
 
 	arithmetic_basicspace = 2.;
diff -urN ../lilypond-1.0.12/init/performer.ly ./init/performer.ly
--- ../lilypond-1.0.12/init/performer.ly	Tue Sep 15 18:22:43 1998
+++ ./init/performer.ly	Mon Oct  5 11:19:59 1998
@@ -1,57 +1,68 @@
 %
 % setup for Request->Element conversion. Guru-only
 %
-
-Staff =	\translator {
+\translator {
 	\type "Staff_performer";
 	\accepts Voice;
+	Staff;
 	\consists "Key_performer";
 	\consists "Time_signature_performer";
 }
 
-Thread =\translator
+\translator
 {
 	\type "Performer_group_performer";
+	Thread ;
 	\consists "Note_performer";
 }
-
-Voice = \translator
+\translator
 {
 	\type "Performer_group_performer";
 	\accepts Thread;
+Voice;
 }
-
-GrandStaff = \translator
+\translator
 {
 	\type "Performer_group_performer";
 	\accepts Staff;
-}
 
-LyricVoice = \translator {
+GrandStaff;}
+
+\translator {
 	\type "Performer_group_performer";
 	\consists "Lyric_performer";
+LyricVoice;
 }
 
-
-Lyrics = \translator { 
+\translator{
+	\type "Performer_group_performer";
+	ChoirStaff;
+	\accepts Staff;
+}
+\translator { 
 	\type "Staff_performer";
 	\accepts LyricVoice;
+	Lyrics;
 	\consists "Time_signature_performer";
 }
-
-StaffGroup = \translator
+\translator
 {
 	\type Performer_group_performer;
+
+	StaffGroup;
 	\accepts Staff;
 }
-
-Score = \translator {
+\translator {
 	\type "Score_performer";
+
+
+	Score;
 	instrument = piano;
 	\accepts Staff;
 	\accepts GrandStaff;
 	\accepts Lyrics; 
 	\accepts StaffGroup;
+	\accepts ChoirStaff;
 	\consists "Swallow_performer";
 }
 
diff -urN ../lilypond-1.0.12/init/property.ly ./init/property.ly
--- ../lilypond-1.0.12/init/property.ly	Tue Sep 15 18:22:43 1998
+++ ./init/property.ly	Mon Oct  5 11:22:05 1998
@@ -48,6 +48,14 @@
 keyoctaviation	0	Key signature only for specified octave	\specialkey
 keyoctaviation	1	Key signature for all octaves	\normalkey
 
+timeSignatureStyle	C	Use C and stroked C for 4/4,2/2
+timeSignatureStyle	old	Use old style mensuration marks
+timeSignatureStyle	1	Use single number
+timeSignatureStyle	""	Use normal two-digit time signature
+timeSignatureStyle	Cn/m	Set symbol explicitly, n/m=2/2 or 4/4	
+timeSignatureStyle	oldn/m	Set symbol explicitly,
+				n/m=2/2,3/2,3/4,4/4,6/4	or 9/4.
+
 
 [Staff?]
 instrument		ascii	midi instrument table lookup
diff -urN ../lilypond-1.0.12/init/score-bar-numbering.ly ./init/score-bar-numbering.ly
--- ../lilypond-1.0.12/init/score-bar-numbering.ly	Tue Sep 15 18:22:43 1998
+++ ./init/score-bar-numbering.ly	Thu Jan  1 00:00:00 1970
@@ -1,26 +0,0 @@
-% score-bar-numbering.ly
-
-Score = \translator {
-	\type Score_engraver;
-	barScriptPadding = "2.0";	% dimension \pt
-	markScriptPadding = "4.0";
-	barColumnPriority = "-4";
-	markBreakPriority = "-4";
-
-	\consists "Timing_engraver";
-	\consists "Bar_column_engraver";
-	\consists "Bar_number_engraver";
-	\consists "Mark_engraver";
-	\consists "Span_score_bar_engraver";
-	\consists "Score_priority_engraver";
-	\consists "Priority_horizontal_align_engraver";
-	\consists "Vertical_align_engraver";
-
-	\accepts "ChoireStaff";
-	\accepts "StaffGroup";
-	\accepts "Staff";
-	\accepts "RhythmicStaff";	
-	\accepts "Lyrics";
-	\accepts "GrandStaff";
-}
-
diff -urN ../lilypond-1.0.12/init/score-paper.ly ./init/score-paper.ly
--- ../lilypond-1.0.12/init/score-paper.ly	Tue Sep 15 18:22:43 1998
+++ ./init/score-paper.ly	Thu Jan  1 00:00:00 1970
@@ -1,29 +0,0 @@
-%score-paper.ly
-
-\paper { 
-	% for simple testing only!
-%	castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn
-Staff = \translator {
-	\type "Hara_kiri_line_group_engraver";
-
-	defaultclef = violin;
-	barColumnPriority = "0";
-	marginBreakPriority = "-4";
-
-	\consists "Bar_engraver";
-	\consists "Clef_engraver";
-	\consists "Key_engraver";
-	\consists "Time_signature_engraver";
-	\consists "Local_key_engraver";
-	\consists "Staff_sym_engraver";
-	\consists "Collision_engraver";
-	\consists "Rest_collision_engraver";
-	\consists "Staff_margin_engraver";
-	\consists "Separating_line_group_engraver";
-	  
-	\accepts "Voice";
-}
-
-\include "score-bar-numbering.ly";
-
-}
diff -urN ../lilypond-1.0.12/input/example-3.ly ./input/example-3.ly
--- ../lilypond-1.0.12/input/example-3.ly	Fri Sep 18 12:53:23 1998
+++ ./input/example-3.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 one = \notes\relative c{
 	c'' d e f
diff -urN ../lilypond-1.0.12/input/keys.ly ./input/keys.ly
--- ../lilypond-1.0.12/input/keys.ly	Fri Sep 18 12:53:23 1998
+++ ./input/keys.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 
 blah = \notes {
@@ -20,6 +20,6 @@
 }
 
 \score{
-	\blah
+	\type Staff \blah
 	
 }
diff -urN ../lilypond-1.0.12/input/kortjakje.ly ./input/kortjakje.ly
--- ../lilypond-1.0.12/input/kortjakje.ly	Fri Sep 18 12:53:23 1998
+++ ./input/kortjakje.ly	Mon Oct  5 11:19:59 1998
@@ -10,7 +10,7 @@
 Tested Features: example file with comments
 
 %}
-\version "1.0.4";
+\version "1.0.6";
 
 
 % the % is a comment.
diff -urN ../lilypond-1.0.12/input/part.ly ./input/part.ly
--- ../lilypond-1.0.12/input/part.ly	Fri Sep 18 12:59:11 1998
+++ ./input/part.ly	Mon Oct  5 11:19:59 1998
@@ -1,5 +1,5 @@
-\version "1.0.4";
-part = \{
+\version "1.0.6";
+part = \notes {
 	c-1 c c c
 	r1*3
 	c4-5 c c c
@@ -10,29 +10,18 @@
 
 a4 = \paper{
 	linewidth= 80.\mm;
-	Staff = \translator {
-		\type "Engraver_group_engraver";
-		defaultclef = violin;
-		\consists "Bar_engraver";
-		\consists "Clef_engraver";
-		\consists "Key_engraver";
-		\consists "Meter_engraver";
-		\consists "Local_key_engraver";
-		\consists "Staff_sym_engraver";
-		\consists "Collision_engraver";
-		\consists "Rest_collision_engraver";
+	 \translator {
+	 	\StaffContext
+		
 		\consists "Bar_column_engraver";
 		\consists "Bar_number_engraver";
-		\consists "Separating_line_group_engraver";
-		\consists "Line_group_engraver";
-		\accepts "Voice";
+		
 	}
 }
 
 \score{
 	<
 		\notes{ 
-			\property Score.part = 1
 			\part
 		}
 	>
@@ -42,7 +31,6 @@
 \score{
 	<
 		\notes{ 
-			\property Score.part = 0
 			\part
 		}
 	>
diff -urN ../lilypond-1.0.12/input/pedal.ly ./input/pedal.ly
--- ../lilypond-1.0.12/input/pedal.ly	Fri Sep 18 12:53:24 1998
+++ ./input/pedal.ly	Mon Oct  5 11:19:59 1998
@@ -1,3 +1,7 @@
+%
+% This file does not work.  
+%
+
 % pedal.ly
 % 
 % Johann Sebastian Bach
@@ -24,7 +28,7 @@
 % \lbheel \lbheel \lfheel \lftoe
 % \rbheel \rbtoe \rfheel \rftoe
 
-\version "1.0.4";
+\version "1.0.6";
 
 \score{
 		\notes {
diff -urN ../lilypond-1.0.12/input/praeludium-fuga-E.ly ./input/praeludium-fuga-E.ly
--- ../lilypond-1.0.12/input/praeludium-fuga-E.ly	Fri Sep 18 12:53:24 1998
+++ ./input/praeludium-fuga-E.ly	Mon Oct  5 11:20:39 1998
@@ -23,7 +23,7 @@
    * organ staff...
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 
 
@@ -32,19 +32,19 @@
    \key e;
 }
 
-praeludium_right = \notes\transpose c'' {
+praeludium_right =  \notes {
   \$praeludium_commands
   \clef violin;
 
   % 13 -- how to type -- where to split -- this more neatly?
   \type Staff <
-    { \stemup r4 dis'4 e'4. e'8 ~ |
-      \shifton e'4 [d'8 fis'8] \shiftoff gis'4 ~ [gis'8 fis'16 e'16] |
-      fis'4 ~ [fis'8 e'16 dis'16] e'4 r8 e'8 }
-    { \stemup \shifton r4 bis4 cis'4 \shiftoff cis'4 |
-      a'4 ~ [a'16 gis'16 a'16 b'16] \shifton dis'4 cis'4 ~ |
-      [cis'8 dis'16 ais16] bis4 cis'4 r8 b8 }
-    {
+    \type Voice = I \relative c'' { \stemup r4 dis4 e4. e8 ~ |
+      \shifton e4 [d8 fis8] \shiftoff gis4 ~ [gis8 fis16 e ] |
+      fis4 ~ [fis8 e16 dis] e4 r8 e8 }
+    \type Voice = III \relative c'' { \stemup \shifton r4 bis cis \shiftoff cis |
+      a' ~ [a16 gis a b] \shifton dis,4 cis ~ |
+      [cis8 dis16 ais] bis4 cis r8 b }
+    \type Voice = IV \relative c'' {
 
       %\stemup
       %{
@@ -52,61 +52,61 @@
        edition; a hack to avoid collisions
       %}
       \stemdown
-      \shifton s4 gis4 }
+      \shifton s4 gis }
       
-    { \stemdown
+    \type Voice =  II \relative c' { \stemdown
 %      \shifton       % idem
 
-      r4 fis4 \shiftoff gis4 gis4 |
-      a4. cis'8 gis2 |
-      fis4 gis4 gis4 r8 e8 }
+      r4 fis \shiftoff gis gis |
+      a4. cis8 gis2 |
+      fis4 gis gis r8 e8 }
   > |
   % 16
 }
 
-praeludium_left = \notes {
+praeludium_left = \notes \relative c {
   \$praeludium_commands
   \clef bass;
 
   % 13
   \type Staff <
-    { \stemup r4 dis'4 cis'4 cis'4 ~ |
-      [cis'8 a8 d'8 cis'8] [bis8 gis8] cis'4 |
-      dis'2 cis'4 r8 cis'8 }
+    { \stemup r4 dis' cis cis ~ |
+      [cis8 a d cis] [bis gis] cis4 |
+      dis2 cis4 r8 cis }
     { \stemup bis2 }
-    { \stemup \shifton r4 gis4 ~ [gis 8 gis8] ~ \stemdown \shiftoff gis4 |
+    { \stemup \shifton r4 gis ~ [gis8 gis] ~ \stemdown \shiftoff gis4 |
       a4. fis8 gis4. a8 ~ |
-      a4 gis4 gis4 r8 gis8 }
+      a4 gis4 gis r8 gis }
 %    { \stemup \shifton s4 fis4 e}
 % a quick hack to avoid some collisons
     { \stemdown \shifton s4 fis4 e}
     { \stemdown s4 dis4 cis4 }
   > |
-  % 16
+  %16
 }
 
-praeludium_pedal = \notes {
+praeludium_pedal = \notes \relative c{
   \$praeludium_commands  
   \clef bass;
 
-  % 13
-  r4 fis,4-\ltoe e,4.-\lheel e8-\rheel | 
-  fis4.-\rtoe fis8-\rtoe fis4-\rtoe [e8-\ltoe a8-\rtoe] | 
-  dis4-\ltoe gis4-\rtoe [cis8-\ltoe b,!8-\lheel ais,8-\rtoe gis,8-\ltoe] |
-  % 16
+  %13
+  r4 fis,4-\ltoe e4.-\lheel e'8-\rheel | 
+  fis4.-\rtoe fis8-\rtoe fis4-\rtoe [e8-\ltoe a-\rtoe] | 
+  dis,4-\ltoe gis-\rtoe [cis,8-\ltoe b!-\lheel ais-\rtoe gis-\ltoe] |
+  %16
 }
 
 
-fuga2_commands = \notes{
-  \time 3/4;
+fugaII_commands = \notes{
+  \time3/4;
   \key e;              % E-major
 }
 
-fuga2_right = \notes\transpose c'' {
-  \$fuga2_commands
+fugaII_right = \notes   \relative c''   {
+  \$fugaII_commands
   \clef violin;
 
-  % 15
+  %15
   \type Staff <
     { \stemup [b8 fis8] b4 }
     { \stemdown fis2 }
@@ -120,56 +120,56 @@
       |
    %}
    \type Staff <
-     { \stemup \shiftoff e'4 }
-     { \stemup \shifton cis'4 }
-     { \stemup \shifton ais4 }
-     { \stemdown fis4 }
+     { \stemup \shiftoff e4 }
+     { \stemup \shifton cis }
+     { \stemup \shifton ais }
+     { \stemdown fis }
    > |
-  % 16
+  %16
   \type Staff <
-    { \stemup dis'2 dis'4 |
-      cis'2 cis'4 |
-      b4. [cis'8 dis'8 e'8] }
-    { \stemup \shifton [b8 fis8] b2 ~ |
-      [b8 a!16 gis16] a2 ~ |
+    { \stemup dis2 dis4 |
+      cis2 cis4 |
+      b4. [cis8 dis e] }
+    { \stemup \shifton [b8 fis] b2 ~ |
+      [b8 a!16 gis] a2 ~ |
       a4 gis2 }
     { \stemdown fis2. ~ |
-      fis2. ~ |
+      fis ~ |
       fis4 e2 }
   > |
-  % 19
+  %19
 }
 
-fuga2_left = \notes {
-  \$fuga2_commands  
+fugaII_left = \notes {
+  \$fugaII_commands  
   \clef bass;
 
-  % 15
+  %15
   \type Staff < 
     { \stemdown b2 \stemup ais4 |
       b2 b4 }
     { \stemdown s2 e4 |
       fis2 fis4 }
   >
-  \stemdown cis'2 e'4 |
+  \stemdown cis2 e4 |
   b4. b8 b4 |
-  % 19
+  %19
 }
 
-fuga2_pedal = \notes {
-  \$fuga2_commands  
+fugaII_pedal = \notes \relative c {
+  \$fugaII_commands  
   \clef bass;
 
-  % 15
+  %15
   dis4.-\ltoe e8-\rtoe cis4 |
-  b,4.-\lheel [cis8-\ltoe dis8-\rtoe e8-\rheel] |
+  b4.-\lheel [cis8-\ltoe dis8-\rtoe e8-\rheel] |
   fis4.-\rtoe [e8-\rheel dis8-\rtoe cis8-\ltoe] |
   dis4-\rtoe e4-\rheel e,4-\ltoe |
-  % 19
+  %19
 }
 
 breakmusic = \notes { 
-  %\time 4/4;
+  %\time4/4;
   r1
 }
 
@@ -179,16 +179,16 @@
   \type Score <
     \type GrandStaff <
       \type Staff = treble {
-        \praeludium_right \breakmusic \fuga2_right }
+        \praeludium_right \breakmusic \fugaII_right }
       \type Staff = bass { 
-        \praeludium_left \breakmusic \fuga2_left }
+        \praeludium_left \breakmusic \fugaII_left }
     > 
     \type Staff = pedal {
-      \praeludium_pedal \breakmusic \fuga2_pedal }
+      \praeludium_pedal \breakmusic \fugaII_pedal }
   >
 
   \paper{}
 
   \midi {
-    \tempo 4 = 96; }
+    \tempo 4 =96; }
 }
diff -urN ../lilypond-1.0.12/input/rhythm.ly ./input/rhythm.ly
--- ../lilypond-1.0.12/input/rhythm.ly	Fri Sep 18 12:53:24 1998
+++ ./input/rhythm.ly	Mon Oct  5 11:19:59 1998
@@ -7,12 +7,11 @@
 
 
 
-\version "1.0.4";
+\version "1.0.6";
 
 ritme = \notes\transpose c'' {
-	\partial 8;
-
 	\time  4/4;
+	\partial 8;
 	c8					|
 	
 	[a8~  a8. a8 a16 a16 a16] c4.		|	% watch the beams!
@@ -37,11 +36,15 @@
 	
 
 another = 
-	\notes{ \time 4/4; 
-		c1.  c1. c4 c4 c4 c4  \time  4/4; c1 c1 c1
+	\notes{ \time 6/4; 
+		c1.  c1. \time 4/4;c4 c4 c4 c4  c1 c1 c1
 	 }
 
 
+%
+% Beams are incorrect for the next staff.  They cut through the whole notes.
+%
+
 yanother = 
 	\notes{ \time 4/4; 
 		c1 c1 c1 c4 c4 c4 c4  c1 c1 c1
@@ -60,57 +63,17 @@
 	\paper{
 
 	%% remove Timing_engraver and Bar_number_engraver
-	Score = \translator {
-	\type Score_engraver;
-
-	%\consists "Timing_engraver";
-
-	\consists "Span_score_bar_engraver";
-	\consists "Score_priority_engraver";
-	\consists "Priority_horizontal_align_engraver";
-	\consists "Vertical_align_engraver";
-
-
-	\accepts "StaffGroup";
-	\accepts "Staff";
-	\accepts "Lyrics";
-	\accepts "GrandStaff";
-}
-
-RhythmicStaff = \translator
-{
-	  \type "Engraver_group_engraver";
-	nolines  = "1";
-	  \consists "Pitch_squash_engraver";
-
-	\consists "Bar_column_engraver";
-	\consists "Bar_number_engraver";
-	  \consists "Bar_engraver";
-	  \consists "Meter_engraver";
-	  \consists "Staff_sym_engraver";
-	  \consists "Line_group_engraver";
-	  \consists "Timing_engraver";
-	  \accepts "Voice";
-}
-	%% add Timing_engraver to the staff
-	Staff = \translator {
-	  \type "Engraver_group_engraver";
-	defaultclef=	violin;
-
-	\consists "Bar_column_engraver";
-	\consists "Bar_number_engraver";
-	\consists "Timing_engraver";
-	  \consists "Bar_engraver";
-	  \consists "Clef_engraver";
-	  \consists "Key_engraver";
-	  \consists "Meter_engraver";
-	  \consists "Local_key_engraver";
-	  \consists "Staff_sym_engraver";
-	  \consists "Collision_engraver";
-	  \consists "Rest_collision_engraver";
-
-	  \consists "Line_group_engraver";
-	  \accepts "Voice";
-	}
+ \translator {
+ \ScoreContext
+ \remove "Timing_engraver";
+  }
+  \translator {
+  \RhythmicStaffContext
+  \consists "Timing_engraver";
+  }
+  \translator{
+  \StaffContext
+  \consists "Timing_engraver";
+  }
 	}
 }
diff -urN ../lilypond-1.0.12/input/scales.ly ./input/scales.ly
--- ../lilypond-1.0.12/input/scales.ly	Fri Sep 18 12:53:24 1998
+++ ./input/scales.ly	Mon Oct  5 11:19:59 1998
@@ -1,3 +1,7 @@
+%
+% This file prints lots of warning messages about scripts-dportato
+%
+
 \header{
 filename =	 "scales.ly";
 enteredby =	 "HWN";
@@ -12,7 +16,7 @@
 % scales with accents.
 %
 
-\version "1.0.4";
+\version "1.0.6";
 blah = 	\notes {
 		\time 6/8;	
 \transpose c {
diff -urN ../lilypond-1.0.12/input/scripts.ly ./input/scripts.ly
--- ../lilypond-1.0.12/input/scripts.ly	Fri Sep 18 12:53:24 1998
+++ ./input/scripts.ly	Mon Oct  5 11:19:59 1998
@@ -1,5 +1,5 @@
 	
-\version "1.0.4";
+\version "1.0.6";
 
 
 blah = 	\notes{ \transpose c'' {
diff -urN ../lilypond-1.0.12/input/test/abbrev.ly ./input/test/abbrev.ly
--- ../lilypond-1.0.12/input/test/abbrev.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/abbrev.ly	Mon Oct  5 11:19:59 1998
@@ -1,5 +1,5 @@
 
-\version "1.0.4";
+\version "1.0.6";
 \score{
 	\notes \transpose c'''{
 		\stemup
diff -urN ../lilypond-1.0.12/input/test/bar-scripts.ly ./input/test/bar-scripts.ly
--- ../lilypond-1.0.12/input/test/bar-scripts.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/bar-scripts.ly	Mon Oct  5 11:19:59 1998
@@ -1,7 +1,7 @@
 
 
 
-\version "1.0.4";
+\version "1.0.6";
 
 onestaff = \type Staff = foo\notes  {
 	\property Staff.instr = instr
@@ -18,55 +18,10 @@
 	\type Staff = bufl { c1 c2  }
 >
 
-scpaper =  \paper {Score = \translator {
-	\type Score_engraver;
-	barScriptPadding = "2.0";	% dimension \pt
-	markScriptPadding = "4.0";
-	barColumnPriority = "-4";
-	markBreakPriority = "-4";
-	barNumberBreakPriority = "-4";
-	
-	\consists "Timing_engraver";
-	\consists "Bar_column_engraver";
-	\consists "Bar_number_engraver";
-	\consists "Mark_engraver";
-	\consists "Span_score_bar_engraver";
-	\consists "Score_priority_engraver";
-	\consists "Priority_horizontal_align_engraver";
-	\consists "Vertical_align_engraver";
-
-	\accepts "ChoireStaff";
-	\accepts "StaffGroup";
-	\accepts "Staff";
-	\accepts "RhythmicStaff";	
-	\accepts "Lyrics";
-	\accepts "GrandStaff";
-}}
-
-stpaper =\paper{
-Staff = \translator {
-	\type "Line_group_engraver_group";
-	defaultclef = violin;
-	barColumnPriority = "0";
-	barNumberBreakPriority = "0";
-	marginBreakPriority = "-4";
-
-	\consists "Bar_engraver";
-	\consists "Clef_engraver";
-	\consists "Key_engraver";
-	\consists "Time_signature_engraver";
-	\consists "Local_key_engraver";
-	\consists "Staff_sym_engraver";
-	\consists "Mark_engraver";	
-	\consists "Collision_engraver";
-	\consists "Rest_collision_engraver";
-	\consists "Bar_column_engraver";
-	\consists "Bar_number_engraver";
-	\consists "Separating_line_group_engraver";
-	\consists "Staff_margin_engraver";
-	\accepts "Voice";
-}}
+scpaper =  \paper {\translator {\OrchestralScoreContext}}
+
 
+stpaper =\paper{ \BarNumberingStaffContext }
 scscore = \score { \grstaff \paper {
 \scpaper
 }}
diff -urN ../lilypond-1.0.12/input/test/beam-chord.ly ./input/test/beam-chord.ly
--- ../lilypond-1.0.12/input/test/beam-chord.ly	Tue Sep 15 18:22:43 1998
+++ ./input/test/beam-chord.ly	Mon Oct  5 11:19:59 1998
@@ -1,5 +1,7 @@
+\version "1.0.4";
+
 \score{
-	\melodic\transpose c'{
+	\notes\transpose c'{
 		\property Score.beamquantisation = \none
 
 		[a'8 <a' g'']>
diff -urN ../lilypond-1.0.12/input/test/beam-pos.ly ./input/test/beam-pos.ly
--- ../lilypond-1.0.12/input/test/beam-pos.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/beam-pos.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 \score{
 	\notes\transpose c''{
diff -urN ../lilypond-1.0.12/input/test/beams.ly ./input/test/beams.ly
--- ../lilypond-1.0.12/input/test/beams.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/beams.ly	Mon Oct  5 11:19:59 1998
@@ -6,7 +6,7 @@
 
 TestedFeatures =	 "beams and beamflags";
 }
-\version "1.0.4";
+\version "1.0.6";
 
 \score{
 	<
diff -urN ../lilypond-1.0.12/input/test/broken.ly ./input/test/broken.ly
--- ../lilypond-1.0.12/input/test/broken.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/broken.ly	Mon Oct  5 11:19:59 1998
@@ -1,11 +1,11 @@
 \header{
 enteredby =	 "jcn";
 copyright =	 "PD";
-TestedFeatures =	 "This file tests Feta embedded slurs"
+TestedFeatures =	 "This file tests Feta embedded slurs" +
 	 "(Feta definitively is not an abbreviation of Font-En-TjA)";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 shortlong = \notes{
 	c4()c( c c  |
diff -urN ../lilypond-1.0.12/input/test/clefs.ly ./input/test/clefs.ly
--- ../lilypond-1.0.12/input/test/clefs.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/clefs.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 \score {
        \notes{ 
diff -urN ../lilypond-1.0.12/input/test/collisions.ly ./input/test/collisions.ly
--- ../lilypond-1.0.12/input/test/collisions.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/collisions.ly	Mon Oct  5 11:19:59 1998
@@ -5,11 +5,11 @@
 copyright =	 "public domain";
 Tested =	 "test the Collision resolution ";
 }
-\version "1.0.4";
+\version "1.0.6";
 
 
 
-two_voice = \notes 
+twovoice = \notes 
 	\type Staff < 
 	  { \stemdown
 		c4 d e f g2~  g4 a [c8 d e f] c2| }
@@ -18,7 +18,7 @@
 
 	>
 
-two_voice_steminvert = \notes 
+twovoicesteminvert = \notes 
 	\type Staff <  
 	  { 
  \stemup
@@ -29,7 +29,7 @@
 
 	>
 
-three_voice = \notes 
+threevoice = \notes 
 	\type Staff <
 	{ \stemup 
 		g4 f e f g a g2 }
@@ -76,9 +76,9 @@
 }
 
 \score{
-	\notes \transpose c' {  \two_voice  
-	\two_voice_steminvert 
-	\three_voice  
+	\notes \transpose c' {  \twovoice  
+	\twovoicesteminvert 
+	\threevoice  
 	\rests 
 	% UGH ! bug!
 	%\restsII 
diff -urN ../lilypond-1.0.12/input/test/defaultbars.ly ./input/test/defaultbars.ly
--- ../lilypond-1.0.12/input/test/defaultbars.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/defaultbars.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 
 \score {
diff -urN ../lilypond-1.0.12/input/test/denneboom.ly ./input/test/denneboom.ly
--- ../lilypond-1.0.12/input/test/denneboom.ly	Thu Sep 24 15:45:24 1998
+++ ./input/test/denneboom.ly	Mon Oct  5 11:19:59 1998
@@ -7,7 +7,7 @@
 
 \include "paper20.ly"
 
-\version "1.0.4";
+\version "1.0.6";
 
 oden = \lyric{ 
 	O8 |
diff -urN ../lilypond-1.0.12/input/test/dotted-slur.ly ./input/test/dotted-slur.ly
--- ../lilypond-1.0.12/input/test/dotted-slur.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/dotted-slur.ly	Mon Oct  5 11:19:59 1998
@@ -1,15 +1,15 @@
-\version "1.0.4";
+\version "1.0.6";
 
 \score{
 	\notes{
 		c( d e )c |
-		\slurdotted;
+		\slurdotted
 		c( d e )c |
-		\slurnormal;
+		\slurnormal
 		c( d e )c |
 		\property Voice.slurdash = 3
 		c( d e )c |
-		\slurnormal;
+		\slurnormal
 		c( d e )c |
 	}
 	\paper{ 
@@ -19,4 +19,5 @@
 		castingalgorithm = \Wordwrap;
 	}
 }
+
 
diff -urN ../lilypond-1.0.12/input/test/find-quarts.ly ./input/test/find-quarts.ly
--- ../lilypond-1.0.12/input/test/find-quarts.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/find-quarts.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 \score{
 	\notes \relative c {
diff -urN ../lilypond-1.0.12/input/test/font-body.ly ./input/test/font-body.ly
--- ../lilypond-1.0.12/input/test/font-body.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/font-body.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 FontBody=	\notes\transpose c''{ 
 		\bar "|:";
diff -urN ../lilypond-1.0.12/input/test/font.ly ./input/test/font.ly
--- ../lilypond-1.0.12/input/test/font.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/font.ly	Mon Oct  5 11:19:59 1998
@@ -7,7 +7,7 @@
 % "(Feta definitively is not an abbreviation of Font-En-TjA)";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "font-body.ly"
 \score{
@@ -21,7 +21,7 @@
 	    \paper_twenty
 	    linewidth = 17.5 \cm;
 	    gourlay_maxmeasures =5.;
-	    \output "font20.tex";
+	    \output =  "font20.tex";
 	}
 }
 
diff -urN ../lilypond-1.0.12/input/test/font16.ly ./input/test/font16.ly
--- ../lilypond-1.0.12/input/test/font16.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/font16.ly	Mon Oct  5 11:19:59 1998
@@ -7,7 +7,7 @@
 % "(Feta definitively is not an abbreviation of Font-En-TjA)";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 \include "font-body.ly"
 
 \score{
diff -urN ../lilypond-1.0.12/input/test/gourlay.ly ./input/test/gourlay.ly
--- ../lilypond-1.0.12/input/test/gourlay.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/gourlay.ly	Mon Oct  5 11:19:59 1998
@@ -4,7 +4,7 @@
 TestedFeatures =	 "This file tests some nasty Gourlay spacings";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 %{
 
@@ -14,11 +14,11 @@
 
 \score{
        \notes \type Staff  \transpose c''<
-               { \stemup; d2 d     | d d | d4 d2. | \break;  c1 }
-               \transpose c, { \stemdown; g4 g g g | \[2/3 g2 g2 g2 \] | g4. g8 g2 | c1 }
+               { \stemup d2 d     | d d | d4 d2. | \break  c1 }
+               \transpose c, { \stemdown g4 g g g | \[2/3 g2 g2 g2 \] | g4. g8 g2 | c1 }
                >
        \paper{
-           linewidth = 8.\cm;
+           linewidth = 8.\cm
        }
 }
 
diff -urN ../lilypond-1.0.12/input/test/grace.ly ./input/test/grace.ly
--- ../lilypond-1.0.12/input/test/grace.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/grace.ly	Mon Oct  5 11:19:59 1998
@@ -1,5 +1,5 @@
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "table13.ly";
 \include "table16.ly";
diff -urN ../lilypond-1.0.12/input/test/hara-kiri.ly ./input/test/hara-kiri.ly
--- ../lilypond-1.0.12/input/test/hara-kiri.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/hara-kiri.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 toeter_i = \notes\relative c {
 	\property Staff.instrument = "Toeters"
diff -urN ../lilypond-1.0.12/input/test/keys.ly ./input/test/keys.ly
--- ../lilypond-1.0.12/input/test/keys.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/keys.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 %{
 test key itemv breaking
diff -urN ../lilypond-1.0.12/input/test/knee.ly ./input/test/knee.ly
--- ../lilypond-1.0.12/input/test/knee.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/knee.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 \score{
 	\notes\relative c'{
 		[c16 \stemdown c'' \stemboth c,, d]
diff -urN ../lilypond-1.0.12/input/test/mark.ly ./input/test/mark.ly
--- ../lilypond-1.0.12/input/test/mark.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/mark.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 global = \notes {
   s1 | \mark "A";
diff -urN ../lilypond-1.0.12/input/test/multi-rest.ly ./input/test/multi-rest.ly
--- ../lilypond-1.0.12/input/test/multi-rest.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/multi-rest.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 voice_one = \notes\transpose c'	{  \stemup
 	R1 * 2 | f'4-. r r2 | R1 * 3 |
diff -urN ../lilypond-1.0.12/input/test/orchestalpart.ly ./input/test/orchestalpart.ly
--- ../lilypond-1.0.12/input/test/orchestalpart.ly	Thu Jan  1 00:00:00 1970
+++ ./input/test/orchestalpart.ly	Mon Oct  5 11:20:05 1998
@@ -0,0 +1,9 @@
+
+\score
+{
+	\notes { c1 c1 \property Score.skipBars = 1 c1 \break R1*8 c1 c1 c1 c1
+	}
+	\paper {
+
+	}
+}
diff -urN ../lilypond-1.0.12/input/test/ossia.ly ./input/test/ossia.ly
--- ../lilypond-1.0.12/input/test/ossia.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/ossia.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 \score {
 
diff -urN ../lilypond-1.0.12/input/test/score-bar-scripts.ly ./input/test/score-bar-scripts.ly
--- ../lilypond-1.0.12/input/test/score-bar-scripts.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/score-bar-scripts.ly	Mon Oct  5 11:19:59 1998
@@ -1,7 +1,7 @@
 
 
 
-\version "1.0.4";
+\version "1.0.6";
 
 onestaff =	\type Staff = foo\notes  {
 		\property Staff.instr = instr
@@ -32,7 +32,7 @@
 	\consists "Priority_horizontal_align_engraver";
 	\consists "Vertical_align_engraver";
 
-	\accepts "ChoireStaff";
+	\accepts "ChoirStaff";
 	\accepts "StaffGroup";
 	\accepts "Staff";
 	\accepts "RhythmicStaff";	
diff -urN ../lilypond-1.0.12/input/test/sleur.ly ./input/test/sleur.ly
--- ../lilypond-1.0.12/input/test/sleur.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/sleur.ly	Mon Oct  5 11:19:59 1998
@@ -1,11 +1,11 @@
 \header{
 enteredby =	 "jcn";
 copyright =	 "PD";
-TestedFeatures =	 "This file tests Feta embedded slurs"
+TestedFeatures =	 "This file tests Feta embedded slurs" +
 	 "(Feta definitively is not an abbreviation of Font-En-TjA)";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 shortlong = \notes{
 	c4()c( c c  |
diff -urN ../lilypond-1.0.12/input/test/slur-bug.ly ./input/test/slur-bug.ly
--- ../lilypond-1.0.12/input/test/slur-bug.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/slur-bug.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 % bug
 % excentric slur can't handle this ...
diff -urN ../lilypond-1.0.12/input/test/slur-damping.ly ./input/test/slur-damping.ly
--- ../lilypond-1.0.12/input/test/slur-damping.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/slur-damping.ly	Mon Oct  5 11:19:59 1998
@@ -1,5 +1,5 @@
 % test damping
-\version "1.0.4";
+\version "1.0.6";
 
 \score{
 	\notes\relative c'{
diff -urN ../lilypond-1.0.12/input/test/slur-swap.ly ./input/test/slur-swap.ly
--- ../lilypond-1.0.12/input/test/slur-swap.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/slur-swap.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 % urg, the direction of the slur gets swapped!
 \score{
diff -urN ../lilypond-1.0.12/input/test/slurs.ly ./input/test/slurs.ly
--- ../lilypond-1.0.12/input/test/slurs.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/slurs.ly	Mon Oct  5 11:19:59 1998
@@ -1,5 +1,5 @@
 
-\version "1.0.4";
+\version "1.0.6";
 
 \score{
 	\notes\transpose c'{
@@ -27,7 +27,6 @@
 		c c c c |
 		c c c c |
 		c c c )c |
-	}
 	}
 	}
 }
diff -urN ../lilypond-1.0.12/input/test/spacing.ly ./input/test/spacing.ly
--- ../lilypond-1.0.12/input/test/spacing.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/spacing.ly	Mon Oct  5 11:19:59 1998
@@ -6,7 +6,7 @@
 TestedFeatures =	 "This file tests various spacings";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 multipart = \notes{ 
     \type StaffGroup < 
diff -urN ../lilypond-1.0.12/input/test/stem.ly ./input/test/stem.ly
--- ../lilypond-1.0.12/input/test/stem.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/stem.ly	Mon Oct  5 11:19:59 1998
@@ -8,7 +8,7 @@
 	
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 beamintervals = \notes{
 		\time 7/4;
diff -urN ../lilypond-1.0.12/input/test/test-lyrics.ly ./input/test/test-lyrics.ly
--- ../lilypond-1.0.12/input/test/test-lyrics.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/test-lyrics.ly	Mon Oct  5 11:19:59 1998
@@ -1,7 +1,7 @@
-\version "1.0.4";
+\version "1.0.6";
 
 $somewhat_long = \lyric{
-	\textstyle "roman" ;
+	\property Lyrics . textstyle = "roman" 
 	AaaaaaA2
 	BbbbbbB2
 	CcccccC2 
@@ -11,7 +11,7 @@
 }
 
 $rather_long = \lyric{
-	\textstyle "roman" ;
+	\property Lyrics . textstyle = "roman" 
 	LLLLoooonggggg2 
 	Syyllllaaabbble2 
 	LLLLoooonggggg2 
@@ -21,7 +21,7 @@
 }
 
 $quite_long = \lyric{
-	\textstyle "roman" ;
+	\property Lyrics . textstyle = "roman"
 	LLLLLLLLLooooongggggggg2 
 	Syyyyyyyyyyyyylllllllaaaaaabbble2 
 	LLLLLLLLLooooongggggggg2 
diff -urN ../lilypond-1.0.12/input/test/tie-bug.ly ./input/test/tie-bug.ly
--- ../lilypond-1.0.12/input/test/tie-bug.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/tie-bug.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 
 %  middle tie is wrong
diff -urN ../lilypond-1.0.12/input/test/tie.ly ./input/test/tie.ly
--- ../lilypond-1.0.12/input/test/tie.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/tie.ly	Mon Oct  5 11:19:59 1998
@@ -1,4 +1,4 @@
-\version "1.0.4";
+\version "1.0.6";
 
 tie = \notes\transpose c''{
 
diff -urN ../lilypond-1.0.12/input/test/time.fly ./input/test/time.fly
--- ../lilypond-1.0.12/input/test/time.fly	Wed Sep 30 11:47:09 1998
+++ ./input/test/time.fly	Mon Oct  5 11:22:05 1998
@@ -1,23 +1,111 @@
-
-
 \property Staff.timeSignatureStyle = "C"
-\time 12/8;
-
-[c8 c c][c8 c c][c8 c c][c8 c c]
-
+\time 1/1;
+c''1^"timeSignatureStyle = \"C\"" |
 \time 2/2;
-\property Staff.timeSignatureStyle = "old3_2"
-c2 c2
-
+c1 |
+\time 3/4;
+c2. |
+\time 4/4;
+c1 |
+\time 5/4;
+c2. c2 |
+\time 6/4;
+c1. |
+\time 3/2;
+c1. |
+\time 7/4;
+c1 c2. |
+\time 8/4;
+c\breve |
+\time 9/4;
+c2. c2. c2. |
+\break
+\property Staff.timeSignatureStyle = "old"
+\time 1/1;
+c1^"timeSignatureStyle = \"old\"" |
 \time 2/2;
-\property Staff.timeSignatureStyle = "oldC"
-c2 c2
-
+c1 |
+\time 3/4;
+c2. |
+\time 4/4;
+c1 |
+\time 5/4;
+c2. c2 |
+\time 6/4;
+c1. |
+\time 3/2;
+c1. |
+\time 7/4;
+c1 c2. |
+\time 8/4;
+c\breve |
+\time 9/4;
+c2. c2. c2. |
+\break
+\property Staff.timeSignatureStyle = ""
+\time 1/1;
+c1^"timeSignatureStyle = \"\"" |
 \time 2/2;
-\property Staff.timeSignatureStyle = "old6_4"
-c2 c2
-
+c1 |
+\time 3/4;
+c2. |
+\time 4/4;
+c1 |
+\time 5/4;
+c2. c2 |
+\time 6/4;
+c1. |
+\time 3/2;
+c1. |
+\time 7/4;
+c1 c2. |
+\time 8/4;
+c\breve |
+\time 9/4;
+c2. c2. c2. |
+\break
+\property Staff.timeSignatureStyle = "1"
+\time 1/1;
+c1^"timeSignatureStyle = \"1\"" |
 \time 2/2;
-\property Staff.timeSignatureStyle = "old9_4"
-c2 c2
+c1 |
+\time 3/4;
+c2. |
+\time 4/4;
+c1 |
+\time 5/4;
+c2. c2 |
+\time 6/4;
+c1. |
+\time 3/2;
+c1. |
+\time 7/4;
+c1 c2. |
+\time 8/4;
+c\breve |
+\time 9/4;
+c2. c2. c2. |
+\break
+\property Staff.timeSignatureStyle = "old9/4"
+\property Staff.textalignment = \center
+\time 1/1;
+c1^"old9/4" |
+\property Staff.timeSignatureStyle = "old6/4"
+\time 2/2;
+c1^"old6/4" |
+\property Staff.timeSignatureStyle = "old3/2"
+\time 3/4;
+c2.^"old3/2" |
+\property Staff.timeSignatureStyle = "old4/4"
+\time 4/4;
+c1^"old4/4" |
+\property Staff.timeSignatureStyle = "old2/2"
+\time 5/4;
+c2.^"old2/2" c2 |
+\property Staff.timeSignatureStyle = "C4/4"
+\time 6/4;
+c1.^"C4/4" |
+\property Staff.timeSignatureStyle = "C2/2"
+\time 3/2;
+c1.^"C2/2" |
 
diff -urN ../lilypond-1.0.12/input/test/title.ly ./input/test/title.ly
--- ../lilypond-1.0.12/input/test/title.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/title.ly	Mon Oct  5 11:19:59 1998
@@ -10,7 +10,7 @@
 instrument=	"Instrument";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \score{
 	\notes
diff -urN ../lilypond-1.0.12/input/test/transposition.ly ./input/test/transposition.ly
--- ../lilypond-1.0.12/input/test/transposition.ly	Tue Sep 29 15:48:47 1998
+++ ./input/test/transposition.ly	Mon Oct  5 11:19:59 1998
@@ -6,7 +6,7 @@
 		= \transpose d =>
         \keysignature gis;
 
-As you can see in output the example file "test.ly" there are a few problems left:
+As you can see in output =  the example file "test.ly" there are a few problems left:
 - key undo (already in the Todo)
 - "wrong" transposition: e.g. \transpose d of fis-major = gis-major (better as-major?).
 	The solution gis=as etc. would concern both note and key transposistion
@@ -22,7 +22,7 @@
 }
 
 
-\version "1.0.4";
+\version "1.0.6";
 
 vOne = \notes \relative c''{
         \clef"violin";
diff -urN ../lilypond-1.0.12/input/test/vertical-align.ly ./input/test/vertical-align.ly
--- ../lilypond-1.0.12/input/test/vertical-align.ly	Fri Sep 18 12:53:24 1998
+++ ./input/test/vertical-align.ly	Mon Oct  5 11:19:59 1998
@@ -1,5 +1,5 @@
 
-\version "1.0.4";
+\version "1.0.6";
 
 \score {
 \notes <
@@ -14,22 +14,6 @@
 
 >
 
-\paper{
-Staff = \translator {
-	\type "Line_group_engraver_group";
-	defaultclef = violin;
+\paper{}
 
-	\consists "Bar_engraver";
-
-	\consists "Key_engraver";
-	\consists "Local_key_engraver";
-	\consists "Time_signature_engraver";
-	\consists "Staff_sym_engraver";
-	\consists "Collision_engraver";
-	\consists "Rest_collision_engraver";
-	\consists "Separating_line_group_engraver";
-	  
-	\accepts "Voice";
-}
-}
 }
diff -urN ../lilypond-1.0.12/input/tril.ly ./input/tril.ly
--- ../lilypond-1.0.12/input/tril.ly	Fri Sep 18 12:53:24 1998
+++ ./input/tril.ly	Mon Oct  5 11:19:59 1998
@@ -1,11 +1,11 @@
 \header{
 enteredby =	 "jcn";
 copyright =	 "PD";
-TestedFeatures =	 "This file tests trills"
+TestedFeatures =	 "This file tests trills" +
 	 "(Feta definitively is not an abbreviation of Font-En-TjA)";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \score{
 	\notes{ 
diff -urN ../lilypond-1.0.12/input/twinkle-pop.ly ./input/twinkle-pop.ly
--- ../lilypond-1.0.12/input/twinkle-pop.ly	Fri Sep 18 12:53:24 1998
+++ ./input/twinkle-pop.ly	Mon Oct  5 11:19:59 1998
@@ -12,7 +12,7 @@
 Tested Features		lyrics and chords
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 melodie = \notes\relative c {
         \clef"violin";
diff -urN ../lilypond-1.0.12/input/twinkle.ly ./input/twinkle.ly
--- ../lilypond-1.0.12/input/twinkle.ly	Fri Sep 18 12:53:24 1998
+++ ./input/twinkle.ly	Mon Oct  5 11:19:59 1998
@@ -20,7 +20,7 @@
 Tested Features: lyrics, interleaving lyrics and staffs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 melody = \notes \relative c'' {
 	\clef violin;
diff -urN ../lilypond-1.0.12/lily/GNUmakefile ./lily/GNUmakefile
--- ../lilypond-1.0.12/lily/GNUmakefile	Tue Sep 15 18:22:42 1998
+++ ./lily/GNUmakefile	Mon Oct  5 11:20:06 1998
@@ -6,7 +6,6 @@
 NAME = lilypond
 SUBDIRS = include
 
-EXTRA_DIST_FILES = VERSION 
 MODULE_LIBS=$(depth)/lib $(depth)/flower
 
 STEPMAKE_TEMPLATES= c++ executable 
@@ -21,7 +20,4 @@
 $(outdir)/main.o: $(outdir)/BLURB.hh $(outdir)/COPERTINA.hh $(outdir)/FLAPTEKST.hh
 
 
-# ugh . -> $(outdir)
-VERSION: $(depth)/VERSION
-	cp $< $@
 
diff -urN ../lilypond-1.0.12/lily/VERSION ./lily/VERSION
--- ../lilypond-1.0.12/lily/VERSION	Wed Sep 30 12:01:01 1998
+++ ./lily/VERSION	Thu Jan  1 00:00:00 1970
@@ -1,11 +0,0 @@
-PACKAGE_NAME=LilyPond
-MAJOR_VERSION=1
-MINOR_VERSION=0
-PATCH_LEVEL=12
-MY_PATCH_LEVEL=
-
-# use the above to send patches: MY_PATCH_LEVEL is always empty for a
-# released version.
-#
-# Please don't move these comments up; the patch should fail if 
-# the previous version was wrong.
diff -urN ../lilypond-1.0.12/lily/abbrev.cc ./lily/abbrev.cc
--- ../lilypond-1.0.12/lily/abbrev.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/abbrev.cc	Mon Oct  5 11:20:27 1998
@@ -33,7 +33,6 @@
   Real interbeam_f = paper ()->interbeam_f (stem_l_->mult_i_);
   Real w = 1.5 * lookup_l ()->ball (2).dim_.x ().length ();
   Real internote_f = paper ()->internote_f ();
-  Real interline_f = paper ()->interline_f ();
   Real beam_f = paper ()->beam_thickness_f ();
 
   int beams_i = 0;
diff -urN ../lilypond-1.0.12/lily/afm.cc ./lily/afm.cc
--- ../lilypond-1.0.12/lily/afm.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/afm.cc	Mon Oct  5 11:22:05 1998
@@ -105,13 +105,13 @@
   UGH. should have hashtable.
  */
 Adobe_font_char_metric
-Adobe_font_metric::find_char (String nm) const
+Adobe_font_metric::find_char (String nm, bool warn) const
 {
   for (int i=0; i < char_metrics_.size (); i++)
     if (char_metrics_[i].N_ == nm)
       return char_metrics_[i];
-
-  warning (_f ("can't find character called `%s'", nm.ch_C()));
+  if (warn)
+    warning (_f ("can't find character called `%s'", nm.ch_C()));
 
  Adobe_font_char_metric a;
  return a;
diff -urN ../lilypond-1.0.12/lily/atom.cc ./lily/atom.cc
--- ../lilypond-1.0.12/lily/atom.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/atom.cc	Mon Oct  5 11:22:05 1998
@@ -29,12 +29,12 @@
       if (abs (off_[ax]) >= 100 CM)
 	{
 	  warning (_f ("ridiculous dimension: %s, %s", axis_name_str (ax),
-		   print_dimen(off_[ax])));
+		   print_dimen (off_[ax])));
 	  
 	  if (experimental_features_global_b)
 	    assert (false);
 
-	  ((Atom*)this)->off_[ax] = 0.0;
+	  ( (Atom*)this)->off_[ax] = 0.0;
 	  ridiculous = true;
 	}
     }
@@ -44,21 +44,21 @@
 
 
 void
-Atom::print() const
+Atom::print () const
 {
 #ifndef NPRINT
-  DOUT << "texstring: " << tex_ << '\n';
+  DOUT << "string: " << str_ << '\n';
 
   DOUT << "dim:";
-  for (Axis i=X_AXIS; i < NO_AXES; incr(i))
-    DOUT << axis_name_str(i) << " = " << dim_[i].str();
+  for (Axis i=X_AXIS; i < NO_AXES; incr (i))
+    DOUT << axis_name_str (i) << " = " << dim_[i].str ();
 
   DOUT << "\noffset: " << off_.str ();
 #endif
 }
 
 Box
-Atom::extent() const
+Atom::extent () const
 {
   Box b (dim_);
   b.translate (off_);
@@ -66,23 +66,30 @@
 }
 
 
-Atom::Atom()
+Atom::Atom ()
   : dim_ (Interval (0,0),Interval (0,0))
 {
-  tex_ = "\\unknown";
+  /*
+    urg
+    We should probably make Atom an abstract base class to
+    derive Ps_atom and Tex_atom from.
+    But Atom is used as a simple type *everywhere*,
+    and we don't have virtual contructors.
+   */
+  str_ = ps_output_global_b ? "unknown" : "\\unknown";
 }
 
 Atom::Atom (String s, Box b)
   :  dim_ (b)
 {
-  tex_ = s;
+  str_ = s;
 }
 
 
 String
-Atom::str() const
+Atom::str () const
 {
-  return String ("Atom (\'") + tex_ + "\', (" + dim_.x().str () + ", "
+  return String ("Atom (\'") + str_ + "\', (" + dim_.x ().str () + ", "
     + dim_.y ().str () + "))";
 }
 
@@ -106,4 +113,10 @@
 {
   off_ += o;
   check_infinity_b ();
+}
+
+bool
+Atom::empty() const
+{
+  return (dim_.y().length() == 0);
 }
diff -urN ../lilypond-1.0.12/lily/change-iterator.cc ./lily/change-iterator.cc
--- ../lilypond-1.0.12/lily/change-iterator.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/change-iterator.cc	Mon Oct  5 11:19:59 1998
@@ -60,11 +60,10 @@
 	Translator_group * dest = 
 	  report_to_l ()->find_create_translator_l (to_type, to_id);
 	current->remove_translator_p (last);
-	dest->add (last);
+	dest->add_translator (last);
       }
     else
       {
-	
 	/*
 	  We could change the current translator's id, but that would make 
 	  errors hard to catch
diff -urN ../lilypond-1.0.12/lily/clef-engraver.cc ./lily/clef-engraver.cc
--- ../lilypond-1.0.12/lily/clef-engraver.cc	Tue Sep 22 13:39:22 1998
+++ ./lily/clef-engraver.cc	Mon Oct  5 11:19:59 1998
@@ -181,7 +181,7 @@
 void
 Clef_engraver::do_creation_processing()
 {
-  Scalar def = get_property ("defaultclef");
+  Scalar def = get_property ("defaultClef");
   if (def.to_bool ()) // egcs: Scalar to bool is ambiguous
     set_type (def);
   
diff -urN ../lilypond-1.0.12/lily/dynamic-engraver.cc ./lily/dynamic-engraver.cc
--- ../lilypond-1.0.12/lily/dynamic-engraver.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/dynamic-engraver.cc	Mon Oct  5 11:20:27 1998
@@ -72,7 +72,7 @@
 	  Text_def * td_p = new Text_def;
 	  td_p->align_dir_ = CENTER;
 	  String loud = dreq_l->access_Absolute_dynamic_req ()->loudness_str ();
-	  td_p->text_str_ = paper ()->lookup_l (0)->dynamic (loud).tex_;
+	  td_p->text_str_ = paper ()->lookup_l (0)->dynamic (loud).str_;
 	  td_p->style_str_ = "dynamic";
 
 	  
diff -urN ../lilypond-1.0.12/lily/engraver-group.cc ./lily/engraver-group.cc
--- ../lilypond-1.0.12/lily/engraver-group.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/engraver-group.cc	Mon Oct  5 11:19:59 1998
@@ -30,7 +30,7 @@
   Link_array<Translator_group> groups = group_l_arr ();
   for (int i=0; i < groups.size(); i++) 
     {
-      Engraver * eng = groups[i]->engraver_l ();
+      Engraver * eng = groups[i]->access_Engraver  ();
       if (eng)
 	{
 	  Engraver_group_engraver * group =
@@ -52,7 +52,7 @@
 	    info.req_l_ = &dummy_req;
 	  for (int i=0; i < nongroups.size(); i++) 
 	    {	// Is this good enough?
-	      Engraver * eng = nongroups[i]->engraver_l ();
+	      Engraver * eng = nongroups[i]->access_Engraver  ();
 	      if (eng && eng!= info.origin_grav_l_arr_[0])
 		eng->acknowledge_element (info);
 	    }
@@ -60,7 +60,7 @@
       announce_info_arr_.clear ();
       for (int i=0; i < nongroups.size(); i++)
 	{
-	  Engraver * eng = nongroups[i]->engraver_l ();
+	  Engraver * eng = nongroups[i]->access_Engraver  ();
 	  if (eng)
 	    eng->process_acknowledged ();
 	}
@@ -77,7 +77,7 @@
   Link_array<Translator> simple_translators = nongroup_l_arr (); 
   for (int i=0; i < simple_translators.size(); i++)
     {
-    Engraver * eng = simple_translators[i]->engraver_l ();
+    Engraver * eng = simple_translators[i]->access_Engraver  ();
     if (eng)
       eng->fill_staff_info (inf);
     }
diff -urN ../lilypond-1.0.12/lily/engraver.cc ./lily/engraver.cc
--- ../lilypond-1.0.12/lily/engraver.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/engraver.cc	Mon Oct  5 11:19:59 1998
@@ -57,6 +57,6 @@
 Engraver::daddy_grav_l () const
 {
   return (daddy_trans_l_ )
-       ? (Engraver_group_engraver*) daddy_trans_l_->engraver_l ()
+       ? (Engraver_group_engraver*) daddy_trans_l_->access_Engraver  ()
        : 0;
 }
diff -urN ../lilypond-1.0.12/lily/header.cc ./lily/header.cc
--- ../lilypond-1.0.12/lily/header.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/header.cc	Mon Oct  5 11:20:27 1998
@@ -4,6 +4,7 @@
   source file of the GNU LilyPond music typesetter
 
   (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "string.hh"
@@ -11,25 +12,36 @@
 #include "header.hh"
 #include "main.hh"
 
-extern char const *lily_version_number_sz();
+extern char const *lily_version_number_sz ();
 
+Header::Header ()
+{
+  lily_id_str_ = "Lily was here, " +
+    String (lily_version_number_sz ());
+}
 
+//urg
 String
-Header::TeX_string() const
+Header::tex_string () const
 {
   String s;
 
   s+= "\\def\\LilyIdString{"  + lily_id_str_ + "}";
   
-  for (Dictionary_iter<String> i(*this); i.ok(); i++) 
-    {
-      s += "\\def\\mudela" + i.key() + "{" + i.val() + "}";
-    }
+  for (Dictionary_iter<String> i (*this); i.ok (); i++) 
+    s += "\\def\\mudela" + i.key () + "{" + i.val () + "}";
   return s;
 }
 
-Header::Header ()
+String
+Header::ps_string () const
 {
-  lily_id_str_ = "Lily was here, " +
-    String (lily_version_number_sz ());
+  String s;
+
+  s+= "/lily_id_string\n{" + lily_id_str_ + "} bind def\n";
+  
+  for (Dictionary_iter<String> i (*this); i.ok (); i++) 
+    s += "/mudela" + i.key () + "{" + i.val () + "} bind def";
+  return s;
 }
+
diff -urN ../lilypond-1.0.12/lily/identifier.cc ./lily/identifier.cc
--- ../lilypond-1.0.12/lily/identifier.cc	Fri Sep 18 12:53:24 1998
+++ ./lily/identifier.cc	Mon Oct  5 11:20:27 1998
@@ -14,7 +14,6 @@
 #include "my-lily-lexer.hh"
 #include "debug.hh"
 #include "symtable.hh"
-#include "lookup.hh"
 #include "script-def.hh"
 #include "request.hh"
 #include "translator.hh"
@@ -85,7 +84,6 @@
 
 
 DEFAULT_PRINT(General_script_def);
-DEFAULT_PRINT(Lookup);
 DEFAULT_PRINT(Translator);
 DEFAULT_PRINT(Symtables);
 DEFAULT_PRINT(Music);
@@ -104,7 +102,6 @@
 
 DUMMY_STR(Notename_table);
 DUMMY_STR(General_script_def);
-DUMMY_STR(Lookup);
 DUMMY_STR(Translator);
 DUMMY_STR(Symtables);
 DUMMY_STR(Music);
@@ -179,7 +176,6 @@
 IMPLEMENT_ID_CLASS(Real);
 IMPLEMENT_ID_CLASS(String);
 IMPLEMENT_ID_CLASS(General_script_def);
-IMPLEMENT_ID_CLASS(Lookup);
 IMPLEMENT_ID_CLASS(Symtables);
 IMPLEMENT_ID_CLASS(Music);
 IMPLEMENT_ID_CLASS(Score);
@@ -196,7 +192,6 @@
 DEFAULT_ACCESSOR(int);
 DEFAULT_ACCESSOR(Real);
 DEFAULT_ACCESSOR(String);
-DEFAULT_ACCESSOR(Lookup);
 DEFAULT_ACCESSOR(Symtables);
 DEFAULT_ACCESSOR(Score);
 DEFAULT_ACCESSOR(Midi_def);
diff -urN ../lilypond-1.0.12/lily/include/afm.hh ./lily/include/afm.hh
--- ../lilypond-1.0.12/lily/include/afm.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/afm.hh	Mon Oct  5 11:22:05 1998
@@ -43,7 +43,7 @@
   String EncodingScheme_;
   Array<Adobe_font_char_metric> char_metrics_;
 
-  Adobe_font_char_metric find_char (String name) const;
+  Adobe_font_char_metric find_char (String name, bool warn=true) const;
   String str () const;
   Adobe_font_metric ();
 };
diff -urN ../lilypond-1.0.12/lily/include/atom.hh ./lily/include/atom.hh
--- ../lilypond-1.0.12/lily/include/atom.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/atom.hh	Mon Oct  5 11:22:05 1998
@@ -18,7 +18,7 @@
 class Atom {
   Offset off_;
 public:
-  String tex_;
+  String str_;
   String font_;
   Box dim_;
 
@@ -32,5 +32,6 @@
   Box extent() const;
   void print() const;
   bool check_infinity_b () const;
+  bool empty() const;
 };
 #endif
diff -urN ../lilypond-1.0.12/lily/include/engraver.hh ./lily/include/engraver.hh
--- ../lilypond-1.0.12/lily/include/engraver.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/engraver.hh	Mon Oct  5 11:19:59 1998
@@ -70,7 +70,7 @@
   Engraver () {}
 
   DECLARE_MY_RUNTIME_TYPEINFO;
-  virtual Engraver * engraver_l () { return this; }
+  virtual Engraver * access_Engraver () { return this; }
 };
 
 
diff -urN ../lilypond-1.0.12/lily/include/header.hh ./lily/include/header.hh
--- ../lilypond-1.0.12/lily/include/header.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/header.hh	Mon Oct  5 11:20:27 1998
@@ -19,9 +19,12 @@
    information.  */
 struct Header : Dictionary<String>
 {
-  String lily_id_str_;
-  String TeX_string() const;
   Header ();
+
+  String tex_string () const;
+  String ps_string () const;
+
+  String lily_id_str_;
 };
 
 #endif // HEADER_HH
diff -urN ../lilypond-1.0.12/lily/include/identifier.hh ./lily/include/identifier.hh
--- ../lilypond-1.0.12/lily/include/identifier.hh	Fri Sep 18 12:53:24 1998
+++ ./lily/include/identifier.hh	Mon Oct  5 11:20:27 1998
@@ -22,7 +22,6 @@
 class Symtables_identifier;
 class Midi_def_identifier;
 class Paper_def_identifier;
-class Lookup_identifier;
 class Real_identifier;
 class int_identifier;
 class String_identifier;
@@ -61,7 +60,6 @@
   IDACCESSOR(Symtables)
   IDACCESSOR(Midi_def)
   IDACCESSOR(Paper_def)
-  IDACCESSOR(Lookup)
   IDACCESSOR(Real)
   IDACCESSOR(String)
   IDACCESSOR(Request)
@@ -86,7 +84,7 @@
     {\
       return this;\
     }\
-			     virtual Class* access_ ## Class (bool copy_b = true) const;\
+			     virtual Class* access_ ## Class (bool copy_b) const;\
 			     ~Class ## _identifier();\
 			     virtual void do_print () const; \
 			     virtual String do_str () const; \
@@ -99,7 +97,6 @@
 DECLARE_ID_CLASS(Real);
 DECLARE_ID_CLASS(String);
 DECLARE_ID_CLASS(General_script_def);
-DECLARE_ID_CLASS(Lookup);
 DECLARE_ID_CLASS(Symtables);
 DECLARE_ID_CLASS(Music);
 DECLARE_ID_CLASS(int);
diff -urN ../lilypond-1.0.12/lily/include/lily-proto.hh ./lily/include/lily-proto.hh
--- ../lilypond-1.0.12/lily/include/lily-proto.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/lily-proto.hh	Mon Oct  5 11:20:27 1998
@@ -73,6 +73,7 @@
 struct Dynamic_req;
 struct Element_group;
 struct Element_group_item;
+struct Engraver_group_engraver;
 struct General_script_def;
 struct Graphical_element;
 struct Graphical_axis_group;
@@ -145,6 +146,8 @@
 struct Musical_req;
 struct Music;
 struct Music_sequence;
+struct Music_wrapper_iterator;
+struct Music_wrapper;
 struct My_lily_parser;
 struct Note_column;
 struct Note_column_engraver;
@@ -154,28 +157,29 @@
 struct Note_head_engraver;
 struct Notename_table;
 struct Offset;
-struct Outputter;
-struct Performer;
 struct Paper_column;
-struct Paper_score;
 struct Paper_def;
+struct Paper_outputter;
+struct Paper_score;
+struct Paper_stream;
 struct Partial_measure_req;
+struct Performer;
 struct Plet;
 struct Plet_engraver;
 struct Plet_req;
 struct Plet_spanner;
 struct Rational;
-struct Music_wrapper_iterator;
-struct Music_wrapper;
-struct Relative_octave_music;
-struct Engraver_group_engraver;
 struct Piano_brace;
 struct Performer;
 struct Performer_group_performer;
 struct Property_iterator;
+struct Ps_lookup;
+struct Ps_outputter;
+struct Ps_stream;
 struct Request;
 struct Request_column;
 struct Engraver;
+struct Relative_octave_music;
 struct Rest;
 struct Rest_collision;
 struct Rest_collision_engraver;
@@ -223,6 +227,8 @@
 struct Super_element;
 struct Translation_property;
 struct Tempo_req;
+struct Tex_lookup;
+struct Tex_outputter;
 struct Tex_stream;
 struct Text_def;
 struct Text_gob;
@@ -231,7 +237,6 @@
 struct Text_req;
 struct Text_spanner;
 struct Tie;
-struct Tex_outputter;
 struct Tie_engraver;
 struct Tie_req;
 struct Time_description;
diff -urN ../lilypond-1.0.12/lily/include/lookup.hh ./lily/include/lookup.hh
--- ../lilypond-1.0.12/lily/include/lookup.hh	Mon Sep 28 15:40:53 1998
+++ ./lily/include/lookup.hh	Mon Oct  5 11:41:39 1998
@@ -3,11 +3,12 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
-#ifndef LOOKUPSYMS_HH
-#define LOOKUPSYMS_HH
+#ifndef LOOKUP_HH
+#define LOOKUP_HH
 
 #include "atom.hh"
 #include "fproto.hh"
@@ -15,49 +16,53 @@
 #include "direction.hh"
 #include "curve.hh"
 #include "afm.hh"
+#include "symtable.hh"
 
 /** handy interface to symbol table
  */
-struct Lookup {
-  Paper_def * paper_l_;
-  Symtables *symtables_p_;
-  String font_;
-  String font_path_;  
-  Adobe_font_metric * afm_p_;
+class Lookup
+{
+public:
+  Lookup ();
+  Lookup (Lookup const&);
+  Lookup (Symtables const&);
+  virtual ~Lookup ();
   
-  
-  Lookup();
-  Lookup (Lookup const &);
-  ~Lookup();
-  
-  void add (String, Symtable*);
-  void print() const;
-  Atom afm_find (String) const; 
-
-  Atom fill (Box b) const;
-  Atom beam (Real,Real, Real) const;
-  Atom ps_beam (Real, Real, Real) const;
-  Atom streepje (int type) const;
-  Atom vbrace (Real &dy) const;
-  Atom vbracket (Real &dy) const;
-  Atom time_signature (Array<Scalar>) const;
-  Atom special_time_signature (String) const;
-  Atom stem (Real y1_pos, Real y2_pos) const;
-  Atom rule_symbol (Real height, Real width) const;
   Atom accidental (int) const;
+  void add (String, Symtable*);
+  virtual Atom afm_find (String s) const = 0;
+  Atom afm_find (String, String) const;
   Atom ball (int) const;
-  Atom flag (int, Direction) const;
-  Atom rest (int, bool outside) const;
-  Atom clef (String) const;
   Atom bar (String, Real height) const;
+  Atom beam (Real,Real, Real) const;
+  Atom clef (String) const;
+  virtual Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const = 0;
   Atom dots () const;
-  Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const;
-  Atom slur (Array<Offset> controls) const;
-  Atom plet (Real dy, Real dx, Direction dir) const;
-  Atom text (String style, String text) const;
-  Atom script (String idx) const;
-  Atom hairpin (Real width, bool decresc, bool continued) const;
   Atom dynamic (String) const;
+  Atom fill (Box b) const;
+  Atom flag (int, Direction) const;
+  virtual Atom hairpin (Real width, bool decresc, bool continued) const = 0;
+  virtual Atom plet (Real dy, Real dx, Direction dir) const = 0;
+  void print () const;
+  virtual Atom ps_beam (Real slope, Real width, Real thick) const = 0;
+  Atom rest (int, bool outside) const;
+  Atom rule_symbol (Real height, Real width) const;
+  Atom script (String idx) const;
+  virtual Atom stem (Real y1_pos, Real y2_pos) const = 0;
+  Atom stem (Real y1_pos, Real y2_pos, String) const;
+  virtual Atom slur (Array<Offset> controls) const = 0;
+  Atom streepje (int type) const;
+  Atom text (String style, String text) const;
+  Atom vbrace (Real &dy) const;
+  virtual Atom vbracket (Real &dy) const = 0;
+  Atom special_time_signature (String, Array<Scalar>) const;
+  Atom time_signature (Array<Scalar>) const;
+
+  Paper_def * paper_l_;
+  Symtables *symtables_p_;
+  String font_;
+  String font_path_;  
+  Adobe_font_metric * afm_p_;
 };
 
-#endif // LOOKUPSYMS_HH
+#endif // LOOKUP_HH
diff -urN ../lilypond-1.0.12/lily/include/main.hh ./lily/include/main.hh
--- ../lilypond-1.0.12/lily/include/main.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/main.hh	Mon Oct  5 11:20:27 1998
@@ -24,6 +24,7 @@
 extern bool find_quarts_global_b;
 extern int exit_status_i_;
 extern bool experimental_features_global_b;
+extern bool ps_output_global_b;
 extern bool dependency_global_b;
 extern bool version_ignore_global_b;
 
diff -urN ../lilypond-1.0.12/lily/include/music-output-def.hh ./lily/include/music-output-def.hh
--- ../lilypond-1.0.12/lily/include/music-output-def.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/music-output-def.hh	Mon Oct  5 11:20:00 1998
@@ -21,11 +21,14 @@
  */
 class Music_output_def  
 {
+  Scope *translator_p_dict_p_;
 public:
-  Dictionary<Translator*> translator_p_dict_;
+  Scope *scope_p_;
+  
   Array<String> filename_str_arr_;
 
 
+
   
   Music_output_def (Music_output_def const&);
   Music_output_def ();
@@ -37,8 +40,8 @@
 
   Global_translator *get_global_translator_p ();
   Translator_group *get_group_translator_p (String type) const;
-  void assign_translator (String, Translator*);
-  String outfile_str_;
+    String get_default_output () const;
+  void assign_translator (Translator*);
   Translator * find_translator_l (String) const;
   virtual int get_next_default_count () const;
 };
diff -urN ../lilypond-1.0.12/lily/include/p-score.hh ./lily/include/p-score.hh
--- ../lilypond-1.0.12/lily/include/p-score.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/p-score.hh	Mon Oct  5 11:20:27 1998
@@ -22,8 +22,10 @@
     */
 
 class Paper_score : public Music_output {
-  Tex_outputter *open_tex_outputter (Tex_stream*);
-  Tex_stream *open_output_stream ();
+  Paper_outputter *open_paper_outputter (Paper_stream*);
+  Paper_outputter *open_ps_outputter (Ps_stream*);
+  Paper_outputter *open_tex_outputter (Tex_stream*);
+  Paper_stream *open_output_stream ();
   
 public:
   Paper_def *paper_l_;
@@ -37,7 +39,7 @@
   /// other elements
   Pointer_list<Score_element*> elem_p_list_;
   
-  Outputter *outputter_l_;  
+  Paper_outputter *outputter_l_;  
   Line_of_score * line_l_;
   
   Paper_score ();
diff -urN ../lilypond-1.0.12/lily/include/paper-def.hh ./lily/include/paper-def.hh
--- ../lilypond-1.0.12/lily/include/paper-def.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/paper-def.hh	Mon Oct  5 11:20:27 1998
@@ -37,8 +37,8 @@
 class Paper_def : public Music_output_def 
 {
   Assoc<int, Lookup *> *lookup_p_assoc_p_;
-  Scope* scope_p_;
   static int default_count_i_;
+  bool ps_b_;
 
 protected:
   VIRTUAL_COPY_CONS(Paper_def,Music_output_def);
@@ -92,7 +92,9 @@
   Real arithmetic_constant (Moment minimal_mom) const;
   Real arithmetic_spacing (Moment mom,Real constant) const;
   virtual int get_next_default_count () const;
-  String TeX_output_settings_str () const;
+  //urg
+  String tex_output_settings_str () const;
+  String ps_output_settings_str () const;
   // urg
   friend int yyparse (void*);
 };
diff -urN ../lilypond-1.0.12/lily/include/paper-outputter.hh ./lily/include/paper-outputter.hh
--- ../lilypond-1.0.12/lily/include/paper-outputter.hh	Thu Jan  1 00:00:00 1970
+++ ./lily/include/paper-outputter.hh	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,37 @@
+/*
+  paper-outputter.hh -- declare Paper_outputter
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef PAPER_OUTPUTTER_HH
+#define PAPER_OUTPUTTER_HH
+
+#include "lily-proto.hh"
+#include "array.hh"
+#include "string.hh"
+
+/**
+  Abstract interface for a Score_element to output itself.
+ */
+class Paper_outputter
+{
+public:
+  Paper_outputter (Paper_stream *);
+  virtual ~Paper_outputter ();
+
+  virtual void output_molecule (Molecule const *, Offset, char const *)=0;
+  void output_molecule (Molecule const *, Offset, char const *, String);
+  virtual void start_line ()=0;
+  virtual void stop_line ()=0;
+  virtual void switch_to_font (String fontname)=0;
+
+  Array<String> font_arr_;
+  String current_font_;
+  Paper_stream* outstream_l_;
+};
+
+#endif // PAPER_OUTPUTTER_HH
diff -urN ../lilypond-1.0.12/lily/include/paper-stream.hh ./lily/include/paper-stream.hh
--- ../lilypond-1.0.12/lily/include/paper-stream.hh	Thu Jan  1 00:00:00 1970
+++ ./lily/include/paper-stream.hh	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,37 @@
+#ifndef PAPER_STREAM_HH
+#define PAPER_STREAM_HH
+
+#include <iostream.h>
+#include "string.hh"
+
+/** Paper output
+  Baseclass for writing to a PostScript or TeX file.
+  It counts braces to prevent nesting errors, and
+  it will add a comment sign before each newline.
+ */
+
+class Paper_stream
+{
+public:
+    bool outputting_comment;
+    ostream *os;
+    int nest_level;
+    /// to check linelen in output. TeX has limits.
+    int line_len_i_;
+    
+    /// open a file for writing
+    Paper_stream (String filename);
+    virtual void header () = 0;
+
+    /// delegate conversion to scalar class
+    virtual Paper_stream &operator <<(Scalar);
+
+    /// close the file
+    virtual ~Paper_stream();
+
+private:
+    Paper_stream (Paper_stream const&);
+    void break_line();
+};
+
+#endif // PAPER_STREAM_HH
diff -urN ../lilypond-1.0.12/lily/include/performer.hh ./lily/include/performer.hh
--- ../lilypond-1.0.12/lily/include/performer.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/performer.hh	Mon Oct  5 11:20:00 1998
@@ -27,7 +27,7 @@
 protected:
   virtual int get_tempo_i() const;
   virtual void play (Audio_element * elem_p );
-  Performer * performer_l () { return this; }
+  Performer * access_Performer () { return this; }
 };
 
 
diff -urN ../lilypond-1.0.12/lily/include/ps-lookup.hh ./lily/include/ps-lookup.hh
--- ../lilypond-1.0.12/lily/include/ps-lookup.hh	Thu Jan  1 00:00:00 1970
+++ ./lily/include/ps-lookup.hh	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,32 @@
+/*
+  tex-lookup.hh -- declare Tex_lookup
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#ifndef PS_LOOKUP_HH
+#define PS_LOOKUP_HH
+
+#include "lookup.hh"
+
+class Ps_lookup : public Lookup
+{
+public:
+  Ps_lookup ();
+  Ps_lookup (Lookup const& s);
+  Ps_lookup (Symtables const& s);
+  virtual ~Ps_lookup ();
+
+  virtual Atom afm_find (String s) const;
+  virtual Atom Ps_lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const;
+  virtual Atom Ps_lookup::hairpin (Real width, bool decresc, bool continued) const;
+  virtual Atom Ps_lookup::plet (Real dy , Real dx, Direction dir) const;
+  virtual Atom Ps_lookup::ps_beam (Real slope, Real width, Real thick) const;
+  virtual Atom Ps_lookup::slur (Array<Offset> controls) const;
+  virtual Atom stem (Real y1, Real y2) const;
+  virtual Atom Ps_lookup::vbracket (Real &y) const;
+};
+
+#endif // PS_LOOKUP_HH
diff -urN ../lilypond-1.0.12/lily/include/ps-outputter.hh ./lily/include/ps-outputter.hh
--- ../lilypond-1.0.12/lily/include/ps-outputter.hh	Thu Jan  1 00:00:00 1970
+++ ./lily/include/ps-outputter.hh	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,27 @@
+/*
+  ps-outputter.hh -- declare Ps_outputter
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef PS_OUTPUTTER_HH
+#define PS_OUTPUTTER_HH
+
+#include "paper-outputter.hh"
+
+class Ps_outputter : public Paper_outputter
+{
+public:
+  Ps_outputter (Paper_stream *);
+  virtual ~Ps_outputter ();
+
+  void switch_to_font (String);
+  virtual void output_molecule (Molecule const*, Offset, char const*);
+  virtual void start_line ();
+  virtual void stop_line ();
+};
+
+#endif // PS_OUTPUTTER_HH
diff -urN ../lilypond-1.0.12/lily/include/ps-stream.hh ./lily/include/ps-stream.hh
--- ../lilypond-1.0.12/lily/include/ps-stream.hh	Thu Jan  1 00:00:00 1970
+++ ./lily/include/ps-stream.hh	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,21 @@
+#ifndef PS_STREAM_HH
+#define PS_STREAM_HH
+
+#include "paper-stream.hh"
+
+/** PS output.
+  Use this class for writing to a PS file.
+  It counts braces to prevent nesting errors, and
+  it will add a comment sign before each newline.
+  */
+class Ps_stream : public Paper_stream
+{
+public:
+    Ps_stream (String filename);
+    virtual ~Ps_stream();
+
+    virtual void header();
+    virtual Paper_stream &operator <<(Scalar);
+};
+
+#endif // PS_STREAM_HH
diff -urN ../lilypond-1.0.12/lily/include/symtable.hh ./lily/include/symtable.hh
--- ../lilypond-1.0.12/lily/include/symtable.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/symtable.hh	Mon Oct  5 11:20:27 1998
@@ -22,14 +22,18 @@
 };
 
 
-struct Symtables : private Dictionary<Symtable*> {
-    
-    Symtable* operator()(String s);
-    ~Symtables();
-    Symtables();
-    Symtables (Symtables const&);
-    void add (String, Symtable*);
-    void print() const;
+struct Symtables : private Dictionary<Symtable*>
+{
+  Symtables();
+  Symtables (Symtables const&);
+  ~Symtables();
+
+  Symtable* operator()(String s);
+  void add (String, Symtable*);
+  void print() const;
+
+  String font_;
+  String font_path_;  
 };
 
 
diff -urN ../lilypond-1.0.12/lily/include/tex-lookup.hh ./lily/include/tex-lookup.hh
--- ../lilypond-1.0.12/lily/include/tex-lookup.hh	Thu Jan  1 00:00:00 1970
+++ ./lily/include/tex-lookup.hh	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,34 @@
+/*
+  tex-lookup.hh -- declare Tex_lookup
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#ifndef TEX_LOOKUP_HH
+#define TEX_LOOKUP_HH
+
+#include "ps-lookup.hh"
+
+class Tex_lookup : public Ps_lookup
+{
+public:
+  Tex_lookup ();
+  Tex_lookup (Lookup const& s);
+  Tex_lookup (Symtables const& s);
+  virtual ~Tex_lookup();
+
+  virtual Atom afm_find (String s) const;
+  virtual Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const;
+  Atom embed (Atom a) const;
+  virtual Atom hairpin (Real width, bool decresc, bool continued) const;
+  virtual Atom plet (Real dy , Real dx, Direction dir) const;
+  virtual Atom ps_beam (Real slope, Real width, Real thick) const;
+  virtual Atom slur (Array<Offset> controls) const;
+  virtual Atom stem (Real y1, Real y2) const;
+  virtual Atom vbracket (Real &y) const;
+};
+
+#endif // TEX_LOOKUP_HH
diff -urN ../lilypond-1.0.12/lily/include/tex-outputter.hh ./lily/include/tex-outputter.hh
--- ../lilypond-1.0.12/lily/include/tex-outputter.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/tex-outputter.hh	Mon Oct  5 11:20:27 1998
@@ -1,5 +1,5 @@
 /*
-  outputter.hh -- declare Outputter
+  tex-outputter.hh -- declare Tex_outputter
 
   source file of the GNU LilyPond music typesetter
 
@@ -7,38 +7,21 @@
 */
 
 
-#ifndef OUTPUTTER_HH
-#define OUTPUTTER_HH
+#ifndef TEX_OUTPUTTER_HH
+#define TEX_OUTPUTTER_HH
 
-#include "lily-proto.hh"
-#include "array.hh"
-#include "string.hh"
-
-/**
-  Abstract interface for a Score_element to output itself.
- */
-struct Outputter
-{
-  virtual ~Outputter(){}
-  virtual void start_line ()=0;
-  virtual void output_molecule (Molecule const *, Offset, char const *)=0;
-  virtual void stop_line ()=0;
-};
+#include "paper-outputter.hh"
 
-/**
-  Output a line of score using  TeX strings
- */
-struct Tex_outputter : Outputter
+class Tex_outputter : public Paper_outputter
 {
-  Array<String> font_arr_;
-  String current_font_;
-  
-  Tex_outputter (Tex_stream *);
-  Tex_stream * outstream_l_;
+public:
+  Tex_outputter (Paper_stream *);
+  virtual ~Tex_outputter ();
+
   void switch_to_font (String);
   virtual void output_molecule (Molecule const*, Offset, char const*);
   virtual void start_line ();
   virtual void stop_line ();
 };
 
-#endif // OUTPUTTER_HH
+#endif // TEX_OUTPUTTER_HH
diff -urN ../lilypond-1.0.12/lily/include/tex-stream.hh ./lily/include/tex-stream.hh
--- ../lilypond-1.0.12/lily/include/tex-stream.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/tex-stream.hh	Mon Oct  5 11:20:27 1998
@@ -1,34 +1,21 @@
-#ifndef TSTREAM__HH
-#define TSTREAM__HH
-
-#include <iostream.h>
-#include "string.hh"
+#ifndef TEX_STREAM_HH
+#define TEX_STREAM_HH
 
+#include "paper-stream.hh"
 
 /** TeX output.
   Use this class for writing to a TeX file.
   It counts braces to prevent nesting errors, and
   it will add a comment sign before each newline.
   */
-class Tex_stream {
-    void break_line();
+class Tex_stream : public Paper_stream
+{
 public:
-    bool outputting_comment;
-    ostream *os;
-    int nest_level;
-    /// to check linelen in output. TeX has limits.
-    int line_len_i_;
-    
-    /// open a file for writing
     Tex_stream (String filename);
-    void header();
-
-    /// delegate conversion to scalar class
-    Tex_stream &operator <<(Scalar);
+    virtual ~Tex_stream();
 
-    /// close the file
-    ~Tex_stream();
-private:
-    Tex_stream (Tex_stream const&);
+    virtual void header();
+    virtual Paper_stream &operator <<(Scalar);
 };
-#endif
+
+#endif // TEX_STREAM_HH
diff -urN ../lilypond-1.0.12/lily/include/timing-engraver.hh ./lily/include/timing-engraver.hh
--- ../lilypond-1.0.12/lily/include/timing-engraver.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/timing-engraver.hh	Mon Oct  5 11:20:00 1998
@@ -19,7 +19,7 @@
 {   
 protected:
   virtual void fill_staff_info (Staff_info&);
-  virtual Engraver * engraver_l () { return Engraver::engraver_l (); }
+  virtual Engraver * access_Engraver () { return Engraver::access_Engraver (); }
 public:
   TRANSLATOR_CLONE(Timing_engraver);
   DECLARE_MY_RUNTIME_TYPEINFO;
diff -urN ../lilypond-1.0.12/lily/include/translator-group.hh ./lily/include/translator-group.hh
--- ../lilypond-1.0.12/lily/include/translator-group.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/translator-group.hh	Mon Oct  5 11:20:00 1998
@@ -25,20 +25,29 @@
   hierarchically grouped #Translator#s
   */
 class Translator_group : public virtual Translator {
+  Array<String> consists_str_arr_;
+  Array<String> accepts_str_arr_;
+
 public:
   Pointer_list<Translator *> trans_p_list_;
   String id_str_;
-  Array<String> consists_str_arr_;
-  Array<String> accepts_str_arr_;
+
+
+  
+  
   int iterator_count_;
 
   TRANSLATOR_CLONE(Translator_group);
   DECLARE_MY_RUNTIME_TYPEINFO;
 
+  void set_acceptor (String accepts, bool add);
+  void set_element (String accepts, bool add);  
+  
+  
   Translator_group(Translator_group const &);
   Translator_group();
-  void add (Translator *);
-
+  void add_translator (Translator *trans_p);
+  
   Link_array<Translator> nongroup_l_arr () const;
   Link_array<Translator_group> group_l_arr () const;
   
@@ -53,6 +62,8 @@
   Translator *remove_translator_p (Translator*trans_l);
   void check_removal ();
 
+
+  
   Translator *get_simple_translator (char const *type) const;
   Translator_group *find_existing_translator_l (String n, String id);
   Translator_group *find_create_translator_l (String n, String id);
@@ -61,7 +72,7 @@
   Translator_group*get_default_interpreter();
 protected:
   virtual ~Translator_group ();
-  virtual Translator_group * group_l () { return this; }
+  virtual Translator_group * access_Translator_group () { return this; }
   virtual void do_print () const;
   virtual void do_process_requests ();
   virtual void do_add_processing ();
diff -urN ../lilypond-1.0.12/lily/include/translator.hh ./lily/include/translator.hh
--- ../lilypond-1.0.12/lily/include/translator.hh	Tue Sep 15 18:22:42 1998
+++ ./lily/include/translator.hh	Mon Oct  5 11:20:00 1998
@@ -66,9 +66,9 @@
   Music_output_def *output_def_l () const;
   
   virtual Moment now_moment () const;  
-  virtual Engraver *engraver_l () { return 0; }
-  virtual Performer *performer_l() { return 0; }
-  virtual Translator_group * group_l () { return 0; }
+  virtual Engraver *access_Engraver () { return 0; }
+  virtual Performer *access_Performer() { return 0; }
+  virtual Translator_group * access_Translator_group () { return 0; }
 
 protected:
    enum { 
diff -urN ../lilypond-1.0.12/lily/local-key-engraver.cc ./lily/local-key-engraver.cc
--- ../lilypond-1.0.12/lily/local-key-engraver.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/local-key-engraver.cc	Mon Oct  5 11:20:00 1998
@@ -40,7 +40,7 @@
     }
   else
     {
-      key_C_ = &((Key_engraver*)result->engraver_l ())->key_;
+      key_C_ = &((Key_engraver*)result->access_Engraver  ())->key_;
       local_key_ = *key_C_;
     }
 }
diff -urN ../lilypond-1.0.12/lily/lookup.cc ./lily/lookup.cc
--- ../lilypond-1.0.12/lily/lookup.cc	Mon Sep 28 15:53:53 1998
+++ ./lily/lookup.cc	Mon Oct  5 11:41:20 1998
@@ -5,11 +5,11 @@
 
   (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
-  TODO
-  This doth suck. We should have PS output, and read spacing info from AFMs
-
-  Glissando, 
+  Jan Nieuwenhuizen <janneke@gnu.org>
 
+  TODO
+      Read spacing info from AFMs
+      Glissando
 */
 
 #include "lookup.hh"
@@ -22,14 +22,14 @@
 #include "string-convert.hh"
 #include "main.hh"
 
-Lookup::Lookup()
+Lookup::Lookup ()
 {
   paper_l_ = 0;
   symtables_p_ = new Symtables;
   afm_p_ =0;
 }
 
-Lookup::Lookup (Lookup const &s)
+Lookup::Lookup (Lookup const& s)
 {
   font_ = s.font_;
   font_path_ = s.font_path_;
@@ -38,119 +38,101 @@
   afm_p_ = 0;
 }
 
-Lookup::~Lookup()
+Lookup::Lookup (Symtables const& s)
+{
+  font_ = s.font_;
+  font_path_ = s.font_path_;
+  paper_l_ = 0;
+  symtables_p_ = new Symtables (s);
+  afm_p_ = 0;
+}
+
+Lookup::~Lookup ()
 {
   delete afm_p_;
   delete symtables_p_;
 }
 
 Atom
-Lookup::afm_find (String s) const
+Lookup::accidental (int j) const
+{
+  return afm_find (String ("accidentals") + String ("-") + to_str (j));
+}
+
+void
+Lookup::add (String s, Symtable*p)
+{
+  symtables_p_->add (s, p);
+}
+
+Atom
+Lookup::afm_find (String s, String str) const
 {
   if (!afm_p_)
     {
       *mlog << "[" << font_path_;
-      ((Lookup*)this)->afm_p_ = new Adobe_font_metric (read_afm (font_path_));
+      ( (Lookup*)this)->afm_p_ = new Adobe_font_metric (read_afm (font_path_));
       *mlog << "]" << flush ;
       DOUT << this->afm_p_->str ();
     }
   Adobe_font_char_metric m = afm_p_->find_char (s);
 
   Atom a;
-  a.tex_ = String_convert::form_str ("\\char%d", m.code ());
+  if (m.width () ==0)
+    return a;
+  
   a.dim_ = m.B_;
   a.dim_[X_AXIS] *= 1 / 1000.0;
   a.dim_[Y_AXIS] *= 1 / 1000.0;
+  a.str_ = String_convert::form_str (str.ch_C (), m.code ());
   a.font_ = font_;
   return a;
 }
 
-void
-Lookup::add (String s, Symtable*p)
-{
-  symtables_p_->add (s, p);
-}
-
-void
-Lookup::print() const
-{
-#ifndef NPRINT
-  DOUT << "Lookup {\n";
-  symtables_p_->print();
-  DOUT << "}\n";
-#endif
-}
-
-Atom
-Lookup::text (String style, String text) const
-{
-  Array<String> a;
-
-  a.push (text);
-  Atom tsym =  (*symtables_p_)("style")->lookup (style);
-  tsym.tex_ = substitute_args (tsym.tex_,a);
-  tsym.font_ = font_;
-
-  return tsym;
-}
-
-
-
 Atom
 Lookup::ball (int j) const
 {
   if (j > 2)
     j = 2;
 
-  Atom s = afm_find (String ("balls") + String ("-") + to_str (j));
-  return s;
-}
-
-Atom
-Lookup::rest (int j, bool o) const
-{
-  Atom s =afm_find (String ("rests")
-		    + String ("-") + to_str (j) + (o ? "o" : ""));
-
-  return s;
+  return afm_find (String ("balls") + String ("-") + to_str (j));
 }
 
 Atom
-Lookup::fill (Box b) const
+Lookup::bar (String str, Real h) const
 {
-  Atom s;
-  s.tex_ = "";
-  s.dim_ = b;
-
+  Array<String> a;
+  a.push (print_dimen (h));
+  Atom s = (*symtables_p_) ("bars")->lookup (str);
+  s.str_ = substitute_args (s.str_, a);
+  s.dim_.y () = Interval (-h/2, h/2);
+  s.font_ = font_;
   return s;
 }
 
-Atom
-Lookup::accidental (int j) const
+Atom 
+Lookup::beam (Real slope, Real width, Real thick) const
 {
-  Atom s= afm_find (String ("accidentals") + String ("-") + to_str (j));
-  return s;
+  Atom a (ps_beam (slope, width, thick));
+  Real height = slope * width; 
+  Real min_y = (0 <? height) - thick/2;
+  Real max_y = (0 >? height) + thick/2;
+  
+  a.dim_[X_AXIS] = Interval (0, width);
+  a.dim_[Y_AXIS] = Interval (min_y, max_y);
+  return a;
 }
 
-
 Atom
-Lookup::bar (String s, Real h) const
+Lookup::clef (String st) const
 {
-  Array<String> a;
-  a.push (print_dimen (h));
-  Atom ret=(*symtables_p_)("bars")->lookup (s);
-  ret.tex_ = substitute_args (ret.tex_, a);
-  ret.dim_.y() = Interval (-h/2, h/2);
-  ret.font_ = font_;
-  return ret;
+  return afm_find (String ("clefs") + String ("-") + st);
 }
 
 Atom
-Lookup::script (String st) const
+Lookup::dots () const
 {
-  Atom s= afm_find (String ("scripts") + String ("-") + st);
-
-  return s;
+  return afm_find (String ("dots") + String ("-") + String ("dot"));
 }
 
 Atom
@@ -160,151 +142,73 @@
 }
 
 Atom
-Lookup::clef (String st) const
-{
-  Atom s=afm_find (String ("clefs") + String ("-") + st);
-
-  return s;
-}
-
-Atom
-Lookup::dots () const
+Lookup::fill (Box b) const
 {
-  Atom s=afm_find (String ("dots") + String ("-") + String("dot"));
-  
-    return s;
+  Atom a;
+  a.dim_ = b;
+  return a;
 }
 
 Atom
 Lookup::flag (int j, Direction d) const
 {
   char c = (d == UP) ? 'u' : 'd';
-  Atom s=afm_find (String ("flags") + String ("-") + to_str (c) + to_str (j));
-
-  return s;
-}
-
-Atom
-Lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const
-{
-  assert (controls.size () == 8);
-
-  String ps = "\\embeddedps{\n";
-  
-  Real dx = controls[3].x () - controls[0].x ();
-  Real dy = controls[3].y () - controls[0].y ();
-
-  for (int i = 1; i < 4; i++)
-    ps += String_convert::double_str (controls[i].x ()) + " "
-      + String_convert::double_str (controls[i].y ()) + " ";
-
-  ps += String_convert::double_str (controls[0].x ()) + " "
-    + String_convert::double_str (controls[0].y ()) + " ";
-
-  ps += String_convert::double_str (thick) + " ";
-  Real on = dash > 1? thick * dash - thick : 0;
-  Real off = 2 * thick;
-  ps += "[" + String_convert::double_str (on) + " ";
-  ps += String_convert::double_str (off) + "] ";
-  ps += String_convert::int_str (0) + " ";
-  ps += " draw_dashed_slur}";
-
-  Atom s;
-  s.tex_ = ps;
-  
-  s.dim_[X_AXIS] = Interval (0, dx);
-  s.dim_[Y_AXIS] = Interval (0 <? dy,  0 >? dy);
-  s.font_ = font_;
-  return s;
+  return afm_find (String ("flags") + String ("-") + to_str (c) + to_str (j));
 }
 
-Atom
-Lookup::slur (Array<Offset> controls) const
+void
+Lookup::print () const
 {
-  assert (controls.size () == 8);
-
-  String ps = "\\embeddedps{\n";
-  
-  Real dx = controls[3].x () - controls[0].x ();
-  Real dy = controls[3].y () - controls[0].y ();
-
-  for (int i = 5; i < 8; i++)
-    ps += String_convert::double_str (controls[i].x ()) + " "
-      + String_convert::double_str (controls[i].y ()) + " ";
-
-  ps += String_convert::double_str (controls[4].x ()) + " "
-    + String_convert::double_str (controls[4].y ()) + " ";
-  
-  for (int i = 1; i < 4; i++)
-    ps += String_convert::double_str (controls[i].x ()) + " "
-      + String_convert::double_str (controls[i].y ()) + " ";
-
-  ps += String_convert::double_str (controls[0].x ()) + " "
-    + String_convert::double_str (controls[0].y ()) + " ";
-
-  ps += " draw_slur}";
-
-  Atom s;
-  s.tex_ = ps;
-  
-  s.dim_[X_AXIS] = Interval (0, dx);
-  s.dim_[Y_AXIS] = Interval (0 <? dy,  0 >? dy);
-  s.font_ = font_;
-  return s;
-
+#ifndef NPRINT
+  DOUT << "Lookup {\n";
+  symtables_p_->print ();
+  DOUT << "}\n";
+#endif
 }
 
 Atom
-Lookup::streepje (int type) const
+Lookup::rest (int j, bool o) const
 {
-  if (type > 2)
-    type = 2;
-
-  return  afm_find ("balls-" + to_str (type) + "l");
+   return afm_find (String ("rests")
+		    + String ("-") + to_str (j) + (o ? "o" : ""));
 }
 
 Atom
-Lookup::hairpin (Real width, bool decresc, bool continued) const
+Lookup::rule_symbol (Real height, Real width) const
 {
-  String embed;
-  Atom ret;  
-  Real height = paper_l_->staffheight_f () / 6;
-  embed = "\\embeddedps{\n" ;
-  embed += to_str (width) + " " 
-	+ to_str (height) + " " 
-    + to_str (continued ? height/2 : 0) + 
-    + " draw_"  + String(decresc ? "de" : "") + "cresc}\n";
-  ret.tex_ = embed;
-
-
-  ret.dim_.x () = Interval (0, width);
-  ret.dim_.y () = Interval (-2*height, 2*height);
-  ret.font_ = font_;
-  return ret;
+  Atom bs= (*symtables_p_) ("param")->lookup ("rule");
+  Array<String> args;
+  args.push (print_dimen (height));
+  args.push (print_dimen (width));
+  bs.str_ = substitute_args (bs.str_,args);
+  bs.dim_.x () = Interval (0,width);
+  bs.dim_.y () = Interval (0,height);
+  return bs;
 }
 
 Atom
-Lookup::time_signature (Array<Scalar> a) const
+Lookup::script (String str) const
 {
-  Atom s((*symtables_p_)("param")->lookup ("time_signature"));
-  s.tex_ = substitute_args (s.tex_,a);
-
-  return s;
+  return afm_find (String ("scripts") + String ("-") + str);
 }
 
-
-
 Atom
-Lookup::special_time_signature (String s) const
+Lookup::special_time_signature (String s, Array<Scalar> arr) const
 {
-  Atom a (afm_find ("timesig-"+ s));
-  return a;
+  String symbolname="timesig-"+s+"%/%";
+  Atom a (afm_find (substitute_args(symbolname,arr)));
+  if (!a.empty()) 
+    return a;
+  // Try if the full name was given
+  a=afm_find ("timesig-"+s);
+  if (!a.empty()) 
+    return a;
+  // Resort to default layout with numbers
+  return time_signature(arr);
 }
 
-
-
 Atom
-Lookup::stem (Real y1,Real y2) const
+Lookup::stem (Real y1, Real y2, String str) const
 {
   if (y1 > y2)
     {
@@ -314,26 +218,55 @@
     }
   Atom s;
 
-  s.dim_.x() = Interval (0,0);
-  s.dim_.y() = Interval (y1,y2);
+  s.dim_.x () = Interval (0,0);
+  s.dim_.y () = Interval (y1,y2);
 
   Array<String> a;
 
-  
   Real stem_width = paper_l_->get_var ("stemthickness");
   a.push (print_dimen (-stem_width /2));
   a.push (print_dimen (stem_width));
   a.push (print_dimen (y2));
   a.push (print_dimen (-y1));
 
-  String src = "\\kern %\\vrule width % height % depth %";
-  s.tex_ = substitute_args (src,a);
+  s.str_ = substitute_args (str, a);
+  s.font_ = font_;
+  return s;
+}
+
+Atom
+Lookup::streepje (int type) const
+{
+  if (type > 2)
+    type = 2;
+
+  return  afm_find ("balls" + String ("-") +to_str (type) + "l");
+}
+
+Atom
+Lookup::text (String style, String text) const
+{
+  Array<String> a;
+
+  a.push (text);
+  Atom s =  (*symtables_p_) ("style")->lookup (style);
+  s.str_ = substitute_args (s.str_,a);
   s.font_ = font_;
+
+  return s;
+}
+
+Atom
+Lookup::time_signature (Array<Scalar> a) const
+{
+  Atom s ((*symtables_p_) ("param")->lookup ("time_signature"));
+  s.str_ = substitute_args (s.str_, a);
+
   return s;
 }
 
 /*
-  should be handled via Tex_ code and Lookup::bar()
+  should be handled via Tex_ code and Lookup::bar ()
  */
 Atom
 Lookup::vbrace (Real &y) const
@@ -358,12 +291,12 @@
     }
 
   
-  int idx = int (rint ((y- min_y)/step)) + 1;
+  int idx = int (rint ( (y- min_y)/step)) + 1;
   
   {
     Array<String> a;
     a.push (to_str (idx));
-    brace.tex_ = substitute_args (brace.tex_,a);
+    brace.str_ = substitute_args (brace.str_,a);
     brace.dim_[Y_AXIS] = Interval (-y/2,y/2);
   }
 
@@ -372,53 +305,4 @@
   return brace;
 }
 
-Atom
-Lookup::vbracket (Real &y) const
-{
-  Atom psbracket;
-  Real min_y = paper_l_->staffheight_f ();
-  if (y < min_y)
-    {
-      warning (_ ("bracket")
-	+ " " + _ ("too small") +  "(" + print_dimen (y) + ")");
-//      y = min_y;
-    }
-  psbracket.tex_ = String ("\\embeddedps{ ") + to_str (y) + " draw_bracket}";
-  psbracket.dim_[Y_AXIS] = Interval (-y/2,y/2);
-  psbracket.dim_[X_AXIS] = Interval (0,4 PT);
-  return psbracket;
-#if 0
-  Atom bracket = afm_find (String ("param") + "bracket");
-  Interval ydims = bracket.dim_[Y_AXIS];
-
-  Real min_y = ydims[LEFT];
-  Real max_y = ydims[RIGHT];
-  Real step = 1.0 PT;
- 
-  if (y < min_y)
-    {
-      warning (_ ("bracket")
-	+ " " + _ ("too small") +  " (" + print_dimen (y) + ")");
-      y = min_y;
-    }
-  if (y > max_y)
-    {
-      warning (_ ("bracket")
-       + " " + _ ("too big") + " (" + print_dimen (y) + ")");
-      y = max_y;
-    }
-
-  
-  int idx = int (rint ((y- min_y)/step)) + 1;
-  
-  {
-    Array<String> a;
-    a.push (to_str (idx));
-    bracket.tex_ = substitute_args (bracket.tex_,a);
-    bracket.dim_[Y_AXIS] = Interval (-y/2,y/2);
-  }
-
-  return bracket;
-#endif
-}
 
diff -urN ../lilypond-1.0.12/lily/main.cc ./lily/main.cc
--- ../lilypond-1.0.12/lily/main.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/main.cc	Mon Oct  5 11:20:27 1998
@@ -30,6 +30,7 @@
 bool no_paper_global_b = false;
 bool no_timestamps_global_b = false;
 bool find_quarts_global_b = false;
+bool ps_output_global_b = false;
 String default_outname_base_global =  "lelie";
 int default_count_global;
 File_path global_path;
@@ -234,6 +235,7 @@
 	{
 	case 't':
 	  experimental_features_global_b = true;
+	  ps_output_global_b = true;
 	  break;
 	case 'o':
 	  outname_str = oparser.optional_argument_ch_C_;
diff -urN ../lilypond-1.0.12/lily/music-output-def.cc ./lily/music-output-def.cc
--- ../lilypond-1.0.12/lily/music-output-def.cc	Fri Sep 18 12:53:24 1998
+++ ./lily/music-output-def.cc	Mon Oct  5 11:20:06 1998
@@ -6,11 +6,12 @@
   (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-
+#include "scope.hh"
 #include "debug.hh"
 #include "music-output-def.hh"
 #include "global-translator.hh"
 #include "dictionary-iter.hh"
+#include "identifier.hh"
 
 int
 Music_output_def::get_next_default_count () const
@@ -22,28 +23,46 @@
 
 Music_output_def::Music_output_def ()
 {
+  scope_p_ = new Scope;
+  translator_p_dict_p_ = new Scope;
 }
 
 Music_output_def::~Music_output_def ()
 {
-  for (Dictionary_iter<Translator*> i (translator_p_dict_); i.ok (); i++)
-    delete i.val ();
+  delete scope_p_;
+  delete translator_p_dict_p_;
 }
 
 Music_output_def::Music_output_def (Music_output_def const &s)
 {
-  outfile_str_ = s.outfile_str_;
-  for (Dictionary_iter<Translator*> i (s.translator_p_dict_); i.ok (); i++)
-    assign_translator (i.key (), i.val ()->clone ());
+  scope_p_ = new Scope (*s.scope_p_);
+  translator_p_dict_p_ = new Scope (*s.translator_p_dict_p_);
+  
+  for (Dictionary_iter<Identifier*> i (*translator_p_dict_p_);  i.ok (); i++)
+    {
+      Translator * t = i.val ()->access_Translator (false);
+      t-> output_def_l_ = this;
+    }
+}
+
+void
+Music_output_def::assign_translator (Translator*tp)
+{
+  String s =tp->type_str_;
+  if (translator_p_dict_p_->elem_b (s))
+    delete translator_p_dict_p_->elem (s);
+  
+  (*translator_p_dict_p_)[s] = new Translator_identifier (tp, 0);
+  tp ->output_def_l_ = this;
 }
 
 Translator*
 Music_output_def::find_translator_l (String name) const
 {
-  if (translator_p_dict_.elt_b (name))
-    return translator_p_dict_[name];
+  if (translator_p_dict_p_->elem_b (name))
+    return (*translator_p_dict_p_)[name]->access_Translator ();
 
-  if (global_translator_dict_p->elt_b (name))
+  if (global_translator_dict_p->elem_b (name))
     return (*global_translator_dict_p)[name];
 
   return 0;
@@ -57,33 +76,28 @@
   if (!t)
     error (_("Can't find Score context"));
   t = t->clone ();
-  Global_translator *g = t->group_l ()->global_l ();
+  Global_translator *g = t->access_Translator_group ()->global_l ();
   t->add_processing ();
   
   return g;
 }
 
-
-void
-Music_output_def::assign_translator (String s, Translator*t)
-{
-  t->type_str_ = s;
-  t->output_def_l_ = this;
-  
-  if (translator_p_dict_.elt_b (s))
-    delete translator_p_dict_[s];
-  translator_p_dict_[s] = t;
-}
-
 void
 Music_output_def::print () const
 {
 #ifndef NPRINT
-  for (Dictionary_iter<Translator*> i (translator_p_dict_); i.ok (); i++)
-    {
-      DOUT << i.key () << " = ";
-      i.val ()->print ();
-    }
-  DOUT << "output: " << outfile_str_;
+  translator_p_dict_p_->print ();
+  scope_p_->print( );
 #endif
+}
+
+String
+Music_output_def::get_default_output () const
+{
+  if (!scope_p_->elem_b ("output"))
+    return "";  
+  Identifier * id = (*scope_p_) ["output"];
+
+  String *p = id->access_String ();
+  return p ? *p : String ("");
 }
diff -urN ../lilypond-1.0.12/lily/my-lily-lexer.cc ./lily/my-lily-lexer.cc
--- ../lilypond-1.0.12/lily/my-lily-lexer.cc	Mon Sep 21 10:18:18 1998
+++ ./lily/my-lily-lexer.cc	Mon Oct  5 11:20:00 1998
@@ -52,6 +52,7 @@
   {"property", PROPERTY},
   {"pt", PT_T},
   {"relative", RELATIVE},
+  {"remove", REMOVE},
   {"score", SCORE},
   {"script", SCRIPT},
   {"shape", SHAPE},
@@ -86,7 +87,7 @@
 My_lily_lexer::lookup_identifier (String s)
 {
   for (int i = scope_l_arr_.size (); i--; )
-    if (scope_l_arr_[i]->elt_b (s))
+    if (scope_l_arr_[i]->elem_b (s))
       return (*scope_l_arr_[i])[s];
   return 0;
 }
@@ -165,7 +166,7 @@
 bool
 My_lily_lexer::notename_b (String s) const
 {
-  return note_tab_p_->elt_b (s);
+  return note_tab_p_->elem_b (s);
 }
 
 void
diff -urN ../lilypond-1.0.12/lily/p-score.cc ./lily/p-score.cc
--- ../lilypond-1.0.12/lily/p-score.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/p-score.cc	Mon Oct  5 11:20:27 1998
@@ -16,11 +16,15 @@
 #include "plist.hh"
 #include "p-col.hh"
 #include "p-score.hh"
-#include "tex-stream.hh"
 #include "p-col.hh"
 #include "header.hh"
 #include "word-wrap.hh"
 #include "gourlay-breaking.hh"
+#include "paper-stream.hh"
+#include "ps-stream.hh"
+#include "tex-stream.hh"
+#include "paper-outputter.hh"
+#include "ps-outputter.hh"
 #include "tex-outputter.hh"
 #include "file-results.hh"
 #include "misc.hh"
@@ -203,8 +207,8 @@
       line_l_->space_processing ();
 
   Array<Column_x_positions> breaking = calc_breaking ();
-  Tex_stream *tex_stream_p = open_output_stream ();
-  outputter_l_=open_tex_outputter (tex_stream_p);
+  Paper_stream *paper_stream_p = open_output_stream ();
+  outputter_l_ = open_paper_outputter (paper_stream_p);
 
   Link_array<Line_of_score> lines;
   for (int i=0; i < breaking.size (); i++)
@@ -230,9 +234,14 @@
       remove_line (line_l);
 	
     }
-  *tex_stream_p << "\n\\EndLilyPondOutput";
+
+  if (ps_output_global_b)
+    *paper_stream_p << "\nshowpage\n";
+  else
+    *paper_stream_p << "\n\\EndLilyPondOutput";
+
   delete outputter_l_;
-  delete tex_stream_p;
+  delete paper_stream_p;
   outputter_l_ = 0;
 }
 
@@ -267,11 +276,12 @@
     }
 }
 
-Tex_stream *
+Paper_stream *
 Paper_score::open_output_stream ()
 {
   // output
-  String base_outname = paper_l_->outfile_str_ ;
+  String base_outname=paper_l_->get_default_output ();
+
   if (base_outname.empty_b ())
     {
       base_outname = default_outname_base_global;
@@ -283,36 +293,75 @@
     }
 
   String outname = base_outname;
-  if (outname != "-")
-     outname += ".tex";
-  target_str_global_array.push (outname);
 
-  *mlog << _f ("TeX output to %s...", 
-    outname == "-" ? String ("<stdout>") : outname ) << endl;
+  Paper_stream* p;
+  if (ps_output_global_b)
+    {
+      if (outname != "-")
+	 outname += ".ps";
+      *mlog << _f ("PostScript output to %s...", 
+		   outname == "-" ? String ("<stdout>") : outname ) << endl;
+      p = new Ps_stream (outname);
+    }
+  else
+    {
+      if (outname != "-")
+	 outname += ".tex";
+      *mlog << _f ("TeX output to %s...", 
+		   outname == "-" ? String ("<stdout>") : outname ) << endl;
+      p = new Tex_stream (outname);
+    }
+  target_str_global_array.push (outname);
+  return p;
+}
 
-  return  new Tex_stream (outname);
+// urg
+Paper_outputter*
+Paper_score::open_paper_outputter (Paper_stream* paper_stream_p)
+{
+  if (ps_output_global_b)
+    return open_ps_outputter ((Ps_stream*)paper_stream_p);
+  else
+    return open_tex_outputter ((Tex_stream*)paper_stream_p);
 }
 
+// urg urg urg
+Paper_outputter*
+Paper_score::open_ps_outputter (Ps_stream *ps_out_p)
+{
+  Ps_outputter *interfees_p = new Ps_outputter (ps_out_p);
 
+  if (header_global_p)
+    *ps_out_p << header_global_p->ps_string ();
+  
+  *ps_out_p << _ ("% outputting Score, defined at: ") << origin_str_ << '\n';
+
+  // urg
+  if (header_l_)
+    *ps_out_p << header_l_->ps_string ();
+  //aaarg
+  *ps_out_p << paper_l_->ps_output_settings_str ();
+
+  if (experimental_features_global_b)
+    *ps_out_p << "turnOnExperimentalFeatures\n";
 
-Tex_outputter *
+  return interfees_p;
+}
+
+Paper_outputter*
 Paper_score::open_tex_outputter (Tex_stream *tex_out_p)
 {
   Tex_outputter *interfees_p= new Tex_outputter (tex_out_p);
 
   if (header_global_p)
-    {
-      *tex_out_p << header_global_p->TeX_string ();
-    }
+    *tex_out_p << header_global_p->tex_string ();
     
   
   *tex_out_p << _ ("% outputting Score, defined at: ") << origin_str_ << '\n';
 
   if (header_l_)
-    {
-      *tex_out_p << header_l_->TeX_string();
-    }
-  *tex_out_p << paper_l_->TeX_output_settings_str ();
+    *tex_out_p << header_l_->tex_string();
+  *tex_out_p << paper_l_->tex_output_settings_str ();
   
 
   if (experimental_features_global_b)
diff -urN ../lilypond-1.0.12/lily/paper-def.cc ./lily/paper-def.cc
--- ../lilypond-1.0.12/lily/paper-def.cc	Mon Sep 21 10:46:03 1998
+++ ./lily/paper-def.cc	Mon Oct  5 11:20:27 1998
@@ -13,6 +13,8 @@
 #include "paper-def.hh"
 #include "debug.hh"
 #include "lookup.hh"
+#include "ps-lookup.hh"
+#include "tex-lookup.hh"
 #include "dimension.hh"
 #include "assoc-iter.hh"
 #include "score-engraver.hh"
@@ -26,9 +28,9 @@
 Paper_def::Paper_def ()
 {
   lookup_p_assoc_p_ = new Assoc<int, Lookup*>;
-  scope_p_ = new Scope;
 }
 
+
 Paper_def::~Paper_def ()
 {
   for (Assoc_iter<int, Lookup*> ai(*lookup_p_assoc_p_); ai.ok (); ai++)
@@ -36,7 +38,6 @@
       delete ai.val ();
     }
   
-  delete scope_p_;
   delete lookup_p_assoc_p_;
 }
 
@@ -46,18 +47,17 @@
   lookup_p_assoc_p_ = new Assoc<int, Lookup*>;
   for (Assoc_iter<int, Lookup*> ai(*s.lookup_p_assoc_p_); ai.ok (); ai++)
     {
-      Lookup * l=new Lookup (*ai.val ());
+      Lookup * l = ps_output_global_b ? new Ps_lookup (*ai.val ())
+	: new Tex_lookup (*ai.val ());
       l->paper_l_ = this;
       set_lookup (ai.key(), l);
     }
-  
-  scope_p_ = new Scope (*s.scope_p_);
 }
 
 Real
 Paper_def::get_var (String s) const
 {
-  if (!scope_p_->elt_b (s))
+  if (!scope_p_->elem_b (s))
     error (_f ("unknown paper variable: `%s\'", s));
   Real * p = scope_p_->elem (s)->access_Real (false);
   if (!p)
@@ -134,7 +134,7 @@
 void
 Paper_def::set_lookup (int i, Lookup*l)
 {
-  if (lookup_p_assoc_p_->elt_b (i))
+  if (lookup_p_assoc_p_->elem_b (i))
     {
       delete lookup_p_assoc_p_->elem (i);
     }
@@ -200,11 +200,6 @@
       ai.val ()->print ();
     }
 
-  for (Assoc_iter<String,Identifier*> i (*scope_p_); i.ok (); i++)
-    {
-      DOUT << i.key () << "= ";
-      DOUT << i.val ()->str () << '\n';
-    }
   DOUT << "}\n";
 #endif
 }
@@ -218,7 +213,18 @@
 IMPLEMENT_IS_TYPE_B1 (Paper_def, Music_output_def);
 
 String
-Paper_def::TeX_output_settings_str () const
+Paper_def::ps_output_settings_str () const
+{
+  String s ("\n ");
+  for (Assoc_iter<String,Identifier*> i (*scope_p_); i.ok (); i++)
+    s += String ("/mudelapaper") + i.key () 
+      + "{" + i.val ()->str () + "} bind def\n";
+  s +=  *scope_p_->elem ("texsetting")->access_String ();
+  return s;
+}
+
+String
+Paper_def::tex_output_settings_str () const
 {
   String s ("\n ");
   for (Assoc_iter<String,Identifier*> i (*scope_p_); i.ok (); i++)
@@ -235,4 +241,6 @@
 {
   return default_count_i_ ++;
 }
+
+
 
diff -urN ../lilypond-1.0.12/lily/paper-outputter.cc ./lily/paper-outputter.cc
--- ../lilypond-1.0.12/lily/paper-outputter.cc	Thu Jan  1 00:00:00 1970
+++ ./lily/paper-outputter.cc	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,52 @@
+/*
+  paper-outputter.cc -- implement Paper_outputter
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include "paper-outputter.hh"
+#include "paper-stream.hh"
+#include "molecule.hh"
+#include "atom.hh"
+#include "array.hh"
+#include "dimension.hh"
+// urg, silly name
+#include "tex.hh"
+#include "string-convert.hh"
+#include "debug.hh"
+
+Paper_outputter::Paper_outputter (Paper_stream *s)
+{
+  outstream_l_ = s;
+}
+
+Paper_outputter::~Paper_outputter ()
+{
+}
+
+void
+Paper_outputter::output_molecule (Molecule const*m, Offset o, char const *nm, String s)
+{
+  if (check_debug)
+    *outstream_l_ << String ("\n%start: ") << nm << "\n";
+
+  for (PCursor <Atom*> i (m->atoms_); i.ok (); i++)
+    {
+      Offset a_off = i->offset ();
+      a_off += o;
+
+      switch_to_font (i->font_);
+
+      Array<String> a;
+      String r;
+  
+      a.push (print_dimen (a_off.y()));
+      a.push (print_dimen (a_off.x()));
+      a.push (i->str_);
+      r += substitute_args (s, a);
+      *outstream_l_ << r;
+    }
+}
diff -urN ../lilypond-1.0.12/lily/paper-stream.cc ./lily/paper-stream.cc
--- ../lilypond-1.0.12/lily/paper-stream.cc	Thu Jan  1 00:00:00 1970
+++ ./lily/paper-stream.cc	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,108 @@
+/*
+  paper-stream.cc -- implement Paper_stream
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include <fstream.h>
+#include <time.h>
+
+//#include "tex.hh"
+#include "main.hh"
+#include "paper-stream.hh"
+#include "debug.hh"
+
+const int MAXLINELEN = 200;
+
+Paper_stream::Paper_stream (String filename)
+{
+  if (filename.length_i () && (filename != "-"))
+    os = new ofstream (filename.ch_C ());
+  else
+//    os = new ostream (cout.ostreambuf ());
+    os = new ostream (cout._strbuf);
+  if (!*os)
+    error (_f ("can't open file: `%s\'", filename));
+  nest_level = 0;
+  line_len_i_ = 0;
+  outputting_comment=false;
+  //  header ();
+}
+
+Paper_stream::~Paper_stream ()
+{
+  *os << flush;
+  if (!*os)
+    {
+      warning (_ ("error syncing file (disk full?)"));
+      exit_status_i_ = 1;
+    }
+  delete os;
+  assert (nest_level == 0);
+}
+
+// print string. don't forget indent.
+Paper_stream&
+Paper_stream::operator << (Scalar s)
+{
+  for (char const *cp = s.ch_C (); *cp; cp++)
+    {
+	if (outputting_comment)
+	  {
+	    *os << *cp;
+	    if (*cp == '\n')
+	      {
+		outputting_comment=false;
+
+	      }
+	    continue;
+	  }
+	line_len_i_ ++;
+	switch (*cp)
+	    {
+	    case '%':
+		outputting_comment = true;
+		*os << *cp;
+		break;
+	    case '{':
+		nest_level++;
+		*os << *cp;
+		break;
+	    case '}':
+		nest_level--;
+		*os << *cp;
+
+		if (nest_level < 0)
+		  {
+		    delete os;	// we want to see the remains.
+		    assert (nest_level>=0);
+		  }
+		/* FALLTHROUGH */
+
+	    case '\n':
+		break_line ();
+		break;
+	    case ' ':
+		*os <<  ' ';
+		if (line_len_i_ > MAXLINELEN)
+		   break_line ();
+
+		break;
+	    default:
+		*os << *cp;
+		break;
+	      }
+    }
+  return *this;
+}
+
+void
+Paper_stream::break_line ()
+{
+  *os << "%\n";
+  *os << to_str (' ', nest_level);
+  line_len_i_ = 0;
+}
+
diff -urN ../lilypond-1.0.12/lily/parser.yy ./lily/parser.yy
--- ../lilypond-1.0.12/lily/parser.yy	Tue Sep 29 15:39:21 1998
+++ ./lily/parser.yy	Mon Oct  5 11:29:22 1998
@@ -16,6 +16,8 @@
 #include "script-def.hh"
 #include "symtable.hh"
 #include "lookup.hh"
+#include "ps-lookup.hh"
+#include "tex-lookup.hh"
 #include "misc.hh"
 #include "my-lily-lexer.hh"
 #include "paper-def.hh"
@@ -44,8 +46,8 @@
 #include "transposed-music.hh"
 
 // mmm
-Mudela_version oldest_version ("1.0.3");
-Mudela_version version ("1.0.4");
+Mudela_version oldest_version ("1.0.6");
+Mudela_version version ("1.0.6");
 
 
 // needed for bison.simple's malloc() and free()
@@ -95,8 +97,6 @@
     Score *score;
     Header *header;
     Interval *interval;
-    Lookup*lookup;
-
     Musical_req* musreq;
     Music_output_def * outputdef;
     Musical_pitch * pitch;
@@ -112,7 +112,7 @@
     String *string;
     Atom * symbol;
     Symtable * symtable;
-    Symtables * symtables;
+    Symtables* symtables;
     Text_def * textdef;
     Tempo_req *tempo;
     char c;
@@ -175,6 +175,7 @@
 %token PROPERTY
 %token PT_T
 %token RELATIVE
+%token REMOVE
 %token SCORE
 %token SCRIPT
 %token SHAPE
@@ -233,7 +234,7 @@
 %type <duration> entered_notemode_duration explicit_duration
 %type <interval>	dinterval
 %type <intvec>	intastint_list int_list
-%type <lookup>	symtables symtables_body
+%type <symtables>	symtables symtables_body
 
 %type <pitch>   explicit_musical_pitch steno_musical_pitch musical_pitch absolute_musical_pitch
 %type <notereq>	steno_notepitch
@@ -245,7 +246,7 @@
 %type <music>	Music  relative_music Sequential_music Simultaneous_music
 %type <music>	property_def translator_change
 %type <music_list> Music_list
-%type <paper>	paper_block paper_body
+%type <paper>	paper_block paper_def_body
 %type <real>	dim real
 %type <real>	real_mult_expression real_primary
 %type <real>	unit
@@ -327,7 +328,7 @@
 		$$ = new Notename_table;
 	}
 	| NOTENAME_TABLE_IDENTIFIER	{
-		$$ = $1-> access_Notename_table();
+		$$ = $1-> access_Notename_table(true);
 	}
 	| notenames_body STRING '=' explicit_musical_pitch {
 		(*$$)[*$2] = *$4;
@@ -368,7 +369,8 @@
 	    $4->set_spot (THIS->pop_spot ());
 	}
 	;
-
+simple_identifier_init: identifier_init
+	;
 identifier_init:
 	score_block {
 		$$ = new Score_identifier ($1, SCORE_IDENTIFIER);
@@ -393,8 +395,7 @@
 
 	}
 	| symtables {
-		$$ = new Lookup_identifier ($1, IDENTIFIER);
-
+		$$ = new Symtables_identifier ($1, IDENTIFIER);
 	}
 	| post_request {
 		$$ = new Request_identifier ($1, POST_REQUEST_IDENTIFIER);
@@ -402,11 +403,7 @@
 	| explicit_duration {
 		$$ = new Duration_identifier ($1, DURATION_IDENTIFIER);
 	}
-	| simple_identifier_init
-	;
-
-simple_identifier_init:
-	real {
+	| real {
 		$$ = new Real_identifier (new Real ($1), REAL_IDENTIFIER);
 	}
 	| string {
@@ -427,11 +424,16 @@
 
 translator_spec_body:
 	TRANS_IDENTIFIER	{
-		$$ = $1->access_Translator ();
+		$$ = $1->access_Translator (true);
 		$$-> set_spot (THIS->here_input ());
 	}
 	| TYPE STRING ';'	{
 		Translator* t = get_translator_l (*$2);
+		Translator_group * tg = t->access_Translator_group ();
+
+		if (!tg)
+			THIS->parser_error (_("Need a translator group for a context"));
+		
 		t = t->clone ();
 		t->set_spot (THIS->here_input ());
 		$$ = t;
@@ -453,12 +455,20 @@
 		delete $4;
 		$$->set_property (*$2, str);
 	}
+	| translator_spec_body STRING ';' {
+		$$->type_str_ = *$2;
+		delete $2;
+	}
 	| translator_spec_body CONSISTS STRING ';' {
-		$$->group_l ()->consists_str_arr_.push (*$3);
+		$$->access_Translator_group ()-> set_element (*$3, true);
 		delete $3;
 	}
 	| translator_spec_body ACCEPTS STRING ';' {
-		$$->group_l ()->accepts_str_arr_.push (*$3);
+		$$->access_Translator_group ()-> set_acceptor (*$3, true);
+		delete $3;
+	}
+	| translator_spec_body REMOVE STRING ';' {
+		$$->access_Translator_group ()-> set_element (*$3, false);
 		delete $3;
 	}
 	;
@@ -486,7 +496,7 @@
 		$$ = new Score;
 	}
 	| SCORE_IDENTIFIER {
-		$$ = $1->access_Score ();
+		$$ = $1->access_Score (true);
 	}
 	| score_body mudela_header 	{
 		$$->header_p_ = $2;
@@ -528,7 +538,7 @@
 	PAPER
 */
 paper_block:
-	PAPER '{' paper_body '}' 	{ 
+	PAPER '{' paper_def_body '}' 	{ 
 		$$ = $3;
 		THIS-> lexer_p_->scope_l_arr_.pop ();
 	}
@@ -539,41 +549,34 @@
 	| ';'
 	;
 
-paper_body:
+paper_def_body:
 	/* empty */		 	{
 		Paper_def *p = THIS->default_paper_p ();
 		THIS-> lexer_p_-> scope_l_arr_.push (p->scope_p_);
 		$$ = p;
 	}
 	| PAPER_IDENTIFIER optional_semicolon	{
-		Paper_def *p = $1->access_Paper_def ();
+		Paper_def *p = $1->access_Paper_def (true);
 		THIS->lexer_p_->scope_l_arr_.push (p->scope_p_);
 		$$ = p;
 	}
-	| paper_body OUTPUT STRING ';'	{ 
-		$$->outfile_str_ = *$3;
-		delete $3;
+	| paper_def_body int '=' symtables		{ // ugh, what a syntax
+		Lookup * l = ps_output_global_b ? new Ps_lookup (*$4)
+		  : new Tex_lookup (*$4);
+		$$->set_lookup ($2, l);
 	}
-	| paper_body int '=' symtables		{ // ugh, what a syntax
-		$$->set_lookup ($2, $4);
-	}
-	| paper_body STRING '=' simple_identifier_init optional_semicolon {
-	    Identifier* id = $4;
-	    id->init_b_ = THIS->init_parse_b_;
-	    if (id->is_type_b (Translator_identifier::static_name ()))
-	      {
-		$$->assign_translator (*$2, id->access_Translator ());
-		delete id;
-	      }
-	    else
-	      THIS->lexer_p_->set_identifier (*$2, id);
+	| paper_def_body STRING '=' simple_identifier_init ';' {
+	      THIS->lexer_p_->set_identifier (*$2, $4);
 	      delete $2;
 	}
-	| paper_body SHAPE '=' shape_array ';' {
+	| paper_def_body translator_spec {
+		$$-> assign_translator ($2);
+	}
+	| paper_def_body SHAPE '=' shape_array ';' {
 		$$->shape_int_a_ = *$4;
 		delete $4;
 	}
-	| paper_body error {
+	| paper_def_body error {
 
 	}
 	;
@@ -583,10 +586,7 @@
 		$$ = $1;
 	}
 	| REAL_IDENTIFIER		{
-		Real *r_p = $1->access_Real ();
-		$$ = * r_p;
-		DOUT << "Lookup real: " << *r_p << "\n";
-		delete r_p;
+		$$= *$1->access_Real (false);
 	}
 	| dim
 	| '(' real ')' {
@@ -635,15 +635,10 @@
 		$$ = THIS->default_midi_p ();
 	}
 	| MIDI_IDENTIFIER	{
-		$$ = $1-> access_Midi_def ();		
+		$$ = $1-> access_Midi_def (true);
 	}
-	| midi_body STRING '=' translator_spec	{
-		$$-> assign_translator (*$2, $4);
-		delete $2;
-	}
-	| midi_body OUTPUT STRING ';'	{
-		$$->outfile_str_ = *$3;
-		delete $3;
+	| midi_body translator_spec	{
+		$$-> assign_translator ($2);
 	}
 	| midi_body tempo_request ';' {
 		$$->set_tempo ($2->dur_.length (), $2->metronome_i_);
@@ -703,7 +698,7 @@
 		$$ = new Transposed_music ($3, *$2);
 		delete $2;
 	}
-	| MUSIC_IDENTIFIER { $$ = $1->access_Music (); }
+	| MUSIC_IDENTIFIER { $$ = $1->access_Music (true); }
 	| NOTES
 		{ THIS->lexer_p_->push_note_state (); }
 	Music
@@ -795,7 +790,7 @@
 		$$ = new Barcheck_req;
 	}
 	| COMMAND_IDENTIFIER	{
-		$$ = $1->access_Request ();
+		$$ = $1->access_Request (true);
 	}
 	;
 
@@ -891,7 +886,7 @@
 
 post_request:
 	POST_REQUEST_IDENTIFIER	{
-		$$ = (Request*)$1->access_Request ();
+		$$ = (Request*)$1->access_Request (true);
 	}
 	| dynamic_req {
 		$$ = $1;
@@ -1232,7 +1227,7 @@
 		     }
 	}
 	| DURATION_IDENTIFIER	{
-		$$ = $1->access_Duration ();
+		$$ = $1->access_Duration (true);
 	}
 	| steno_duration '.' 	{
 		$$->dots_i_ ++;
@@ -1330,9 +1325,7 @@
 		$$ = -$2;
 	}
 	| INT_IDENTIFIER	{
-		int *i_p = $1->access_int ();
-		$$ = *i_p;
-		delete i_p;
+		$$ = *$1->access_int (false);
 	}
 	;
 
@@ -1341,10 +1334,7 @@
 		$$ = $1;
 	}
 	| STRING_IDENTIFIER	{
-		String *s_p = $1->access_String ();
-
-		$$ = s_p;
-		DOUT << "Lookup string: " << *s_p << "\n";
+		$$ = $1->access_String (true);
 	}
 	;
 
@@ -1378,10 +1368,10 @@
 
 symtables_body:
 	 		{
-		$$ = new Lookup;
+		$$ = new Symtables;
 	}
 	| IDENTIFIER		{
-		$$ = $1->access_Lookup ();
+		$$ = $1->access_Symtables (true);
 	}
 	| symtables_body FONT STRING 		{
 		$$->font_ = *$3;
@@ -1450,4 +1440,5 @@
 {
 	yyparse ((void*)this);
 }
+
 
diff -urN ../lilypond-1.0.12/lily/performance.cc ./lily/performance.cc
--- ../lilypond-1.0.12/lily/performance.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/performance.cc	Mon Oct  5 11:20:00 1998
@@ -121,7 +121,7 @@
 {
   print ();
 
-  String out=midi_l_->outfile_str_;
+  String out = midi_l_->get_default_output ();
   if (out.empty_b ())
     {
       
diff -urN ../lilypond-1.0.12/lily/performer.cc ./lily/performer.cc
--- ../lilypond-1.0.12/lily/performer.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/performer.cc	Mon Oct  5 11:20:00 1998
@@ -30,6 +30,6 @@
 Performer::daddy_perf_l () const
 {
   return (daddy_trans_l_) 
-    ?(Performer_group_performer*) daddy_trans_l_->performer_l ()
+    ?(Performer_group_performer*) daddy_trans_l_->access_Performer ()
     : 0;
 }
diff -urN ../lilypond-1.0.12/lily/ps-lookup.cc ./lily/ps-lookup.cc
--- ../lilypond-1.0.12/lily/ps-lookup.cc	Thu Jan  1 00:00:00 1970
+++ ./lily/ps-lookup.cc	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,184 @@
+/*
+  ps-lookup.cc -- implement Ps_lookup
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include "ps-lookup.hh"
+#include "debug.hh"
+#include "symtable.hh"
+#include "dimension.hh"
+#include "tex.hh"
+#include "scalar.hh"
+#include "paper-def.hh"
+#include "string-convert.hh"
+#include "main.hh"
+
+Ps_lookup::Ps_lookup ()
+  : Lookup ()
+{
+}
+
+Ps_lookup::Ps_lookup (Lookup const& s)
+  : Lookup (s)
+{
+}
+
+Ps_lookup::Ps_lookup (Symtables const& s)
+  : Lookup (s)
+{
+}
+
+Ps_lookup::~Ps_lookup ()
+{
+}
+
+Atom
+Ps_lookup::afm_find (String s) const
+{
+  return Lookup::afm_find (s, String ("(%d)"));
+}
+
+Atom
+Ps_lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const
+{
+  assert (controls.size () == 8);
+
+  String ps;
+  
+  Real dx = controls[3].x () - controls[0].x ();
+  Real dy = controls[3].y () - controls[0].y ();
+
+  for (int i = 1; i < 4; i++)
+    ps += String_convert::double_str (controls[i].x ()) + " "
+      + String_convert::double_str (controls[i].y ()) + " ";
+
+  ps += String_convert::double_str (controls[0].x ()) + " "
+    + String_convert::double_str (controls[0].y ()) + " ";
+
+  ps += String_convert::double_str (thick) + " ";
+  Real on = dash > 1? thick * dash - thick : 0;
+  Real off = 2 * thick;
+  ps += "[" + String_convert::double_str (on) + " ";
+  ps += String_convert::double_str (off) + "] ";
+  ps += String_convert::int_str (0) + " ";
+  ps += " draw_dashed_slur";
+
+  Atom a;
+  a.str_ = ps;
+  
+  a.dim_[X_AXIS] = Interval (0, dx);
+  a.dim_[Y_AXIS] = Interval (0 <? dy,  0 >? dy);
+  a.font_ = font_;
+  return a;
+}
+
+Atom
+Ps_lookup::hairpin (Real width, bool decresc, bool continued) const
+{
+  Atom a;  
+  Real height = paper_l_->staffheight_f () / 6;
+  String ps;
+  ps += to_str (width) + " " 
+	+ to_str (height) + " " 
+    + to_str (continued ? height/2 : 0) + 
+    + " draw_"  + String (decresc ? "de" : "") + "cresc\n";
+  a.str_ = ps;
+
+
+  a.dim_.x () = Interval (0, width);
+  a.dim_.y () = Interval (-2*height, 2*height);
+  a.font_ = font_;
+  return a;
+}
+
+Atom
+Ps_lookup::plet (Real dy , Real dx, Direction dir) const
+{
+  String ps;
+  
+  ps += String_convert::double_str (dx) + " " 
+    + String_convert::double_str (dy) + " "
+    + String_convert::int_str ( (int)dir) +
+    " draw_plet";
+
+  Atom s;
+  s.str_ = ps;
+  return s;
+}
+
+Atom
+Ps_lookup::ps_beam (Real slope, Real width, Real thick) const
+{
+  String ps;
+  ps += to_str (width) + " "+ to_str (slope) + " " + to_str (thick)
+    + " draw_beam";
+
+  Atom s;
+  s.str_ = ps;
+  return s;
+}
+
+Atom
+Ps_lookup::slur (Array<Offset> controls) const
+{
+  assert (controls.size () == 8);
+
+  String ps;
+  
+  Real dx = controls[3].x () - controls[0].x ();
+  Real dy = controls[3].y () - controls[0].y ();
+
+  for (int i = 5; i < 8; i++)
+    ps += String_convert::double_str (controls[i].x ()) + " "
+      + String_convert::double_str (controls[i].y ()) + " ";
+
+  ps += String_convert::double_str (controls[4].x ()) + " "
+    + String_convert::double_str (controls[4].y ()) + " ";
+  
+  for (int i = 1; i < 4; i++)
+    ps += String_convert::double_str (controls[i].x ()) + " "
+      + String_convert::double_str (controls[i].y ()) + " ";
+
+  ps += String_convert::double_str (controls[0].x ()) + " "
+    + String_convert::double_str (controls[0].y ()) + " ";
+
+  ps += " draw_slur";
+
+  Atom s;
+  s.str_ = ps;
+  
+  s.dim_[X_AXIS] = Interval (0, dx);
+  s.dim_[Y_AXIS] = Interval (0 <? dy,  0 >? dy);
+  s.font_ = font_;
+  return s;
+}
+
+Atom
+Ps_lookup::stem (Real y1, Real y2) const
+{
+  //  return Lookup::stem (y1, y2, "\\kern %\\vrule width % height % depth %");
+  return Lookup::stem (y1, y2, "% % moveto % % lineto");
+}
+
+Atom
+Ps_lookup::vbracket (Real &y) const
+{
+  Atom psbracket;
+  Real min_y = paper_l_->staffheight_f ();
+  if (y < min_y)
+    {
+      warning (_ ("bracket")
+	+ " " + _ ("too small") +  " (" + print_dimen (y) + ")");
+//      y = min_y;
+    }
+  psbracket.str_ = to_str (y) + " draw_bracket";
+  psbracket.dim_[Y_AXIS] = Interval (-y/2,y/2);
+  psbracket.dim_[X_AXIS] = Interval (0,4 PT);
+  return psbracket;
+}
+
+
+
diff -urN ../lilypond-1.0.12/lily/ps-outputter.cc ./lily/ps-outputter.cc
--- ../lilypond-1.0.12/lily/ps-outputter.cc	Thu Jan  1 00:00:00 1970
+++ ./lily/ps-outputter.cc	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,81 @@
+/*
+  ps-outputter.cc -- implement Ps_outputter
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include "ps-outputter.hh"
+#include "ps-stream.hh"
+#include "molecule.hh"
+#include "atom.hh"
+#include "array.hh"
+#include "dimension.hh"
+#include "tex.hh"
+#include "string-convert.hh"
+#include "debug.hh"
+
+Ps_outputter::Ps_outputter (Paper_stream *s)
+  :Paper_outputter (s)
+{
+}
+
+Ps_outputter::~Ps_outputter ()
+{
+}
+
+/*
+   26 fonts ought to be enough for anyone.
+*/
+static String
+ps_font_command(int i)
+{
+  return "\\font"  +String_convert::form_str ("%c",  'A' + i) ;
+}
+
+void
+Ps_outputter::switch_to_font (String fontname)
+{
+  if (!fontname.length_i () || fontname == current_font_)
+    return;
+
+  current_font_ = fontname;
+  int i=0;
+  for (; i< font_arr_.size (); i++)
+    if (font_arr_[i] == fontname)
+      {
+	*outstream_l_ <<ps_font_command (i) << "\n";
+	return ;
+      }
+
+  
+  font_arr_.push (fontname);
+  *outstream_l_ << "\\font"  + ps_font_command (i) << "=" + fontname << "\n";
+  *outstream_l_<< ps_font_command (i);
+}
+
+void
+Ps_outputter::output_molecule (Molecule const*m, Offset o, char const *nm)
+{
+  if (check_debug)
+    *outstream_l_ << String ("\n%start: ") << nm << "\n";
+
+  Paper_outputter::output_molecule (m, o, nm, "% % % placebox");
+}
+
+void
+Ps_outputter::start_line ()
+{
+  *outstream_l_ << "\\hbox{%\n";
+}
+
+void
+Ps_outputter::stop_line ()
+{
+  *outstream_l_ << "}";
+  *outstream_l_ << "\\interscoreline";
+  current_font_ = "";
+  font_arr_.clear ();
+}
diff -urN ../lilypond-1.0.12/lily/ps-plet.cc ./lily/ps-plet.cc
--- ../lilypond-1.0.12/lily/ps-plet.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/ps-plet.cc	Thu Jan  1 00:00:00 1970
@@ -1,32 +0,0 @@
-/*
-  ps-plet.cc -- implement Lookup::*plet
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <math.h>
-#include "main.hh"
-#include "misc.hh"
-#include "lookup.hh"
-#include "molecule.hh"
-#include "dimension.hh"
-#include "debug.hh"
-#include "paper-def.hh"
-#include "string-convert.hh"
-
-Atom
-Lookup::plet (Real dy , Real dx, Direction dir) const
-{
-  String ps = "\\embeddedps{\n";
-  
-  ps += String_convert::double_str (dx) + " " 
-    + String_convert::double_str (dy) + " "
-    + String_convert::int_str ((int)dir) +
-    " draw_plet}";
-
-  Atom s;
-  s.tex_ = ps;
-  return s;
-}
diff -urN ../lilypond-1.0.12/lily/ps-stream.cc ./lily/ps-stream.cc
--- ../lilypond-1.0.12/lily/ps-stream.cc	Thu Jan  1 00:00:00 1970
+++ ./lily/ps-stream.cc	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,54 @@
+/*
+  tex-stream.cc -- implement Ps_stream
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include <fstream.h>
+#include <time.h>
+
+#include "main.hh"
+#include "ps-stream.hh"
+#include "debug.hh"
+
+Ps_stream::Ps_stream (String filename)
+  : Paper_stream (filename)
+{
+  header ();
+}
+
+void
+Ps_stream::header ()
+{
+  *os << _ ("%%!PS Adobe\n");
+  // urg, merge with Tex
+  *os << _ ("% Creator: ");
+  if (no_timestamps_global_b)
+    *os << "GNU LilyPond\n";
+  else
+    *os << get_version_str () << '\n';
+  *os << _ ("% Automatically generated");
+  if (no_timestamps_global_b)
+    *os << ".\n";
+  else
+    {
+      *os << _ (", at ");
+      time_t t (time (0));
+      *os << ctime (&t) << "%\n";
+    }
+}
+
+Ps_stream::~Ps_stream ()
+{
+}
+
+// print string. don't forget indent.
+Paper_stream&
+Ps_stream::operator << (Scalar s)
+{
+  return Paper_stream::operator << (s);
+}
+
diff -urN ../lilypond-1.0.12/lily/scope.cc ./lily/scope.cc
--- ../lilypond-1.0.12/lily/scope.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/scope.cc	Mon Oct  5 11:20:00 1998
@@ -46,3 +46,5 @@
 
 Scope::Scope ()
 {}
+
+
diff -urN ../lilypond-1.0.12/lily/score-priority-engraver.cc ./lily/score-priority-engraver.cc
--- ../lilypond-1.0.12/lily/score-priority-engraver.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/score-priority-engraver.cc	Mon Oct  5 11:20:00 1998
@@ -48,7 +48,7 @@
       
       int priority =item_l->break_priority_i_;
       Horizontal_group_item * hg =0;
-      if (!align_p_assoc_.elt_b(priority))
+      if (!align_p_assoc_.elem_b(priority))
 	{
 	  hg = new Horizontal_group_item;
 	  announce_element (Score_element_info (hg,0));
diff -urN ../lilypond-1.0.12/lily/scores.cc ./lily/scores.cc
--- ../lilypond-1.0.12/lily/scores.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/scores.cc	Mon Oct  5 11:20:00 1998
@@ -80,6 +80,8 @@
 	}
       else
 	{
+	  if (!monitor->silent_b ("do_scores"))
+	      is_p->print ();
 	  is_p->process();
 	}
     }
diff -urN ../lilypond-1.0.12/lily/staff-performer.cc ./lily/staff-performer.cc
--- ../lilypond-1.0.12/lily/staff-performer.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/staff-performer.cc	Mon Oct  5 11:20:00 1998
@@ -88,7 +88,7 @@
   return instrument_str_;
 
 /* ugh, but can 't
-  if (properties_dict_.elt_b ("instrument"))
+  if (properties_dict_.elem_b ("instrument"))
     return properties_dict_["instrument"];
   return "";
 */
diff -urN ../lilypond-1.0.12/lily/symtable.cc ./lily/symtable.cc
--- ../lilypond-1.0.12/lily/symtable.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/symtable.cc	Mon Oct  5 11:20:27 1998
@@ -23,6 +23,8 @@
 Symtables::Symtables (Symtables const &s)
   : Dictionary<Symtable*> (s)
 {
+  font_ = s.font_;
+  font_path_ = s.font_path_;
   for (Assoc_iter<String, Symtable*>  i (s); i.ok(); i++)
     {
       add (i.key(), new Symtable (*i.val ()));
@@ -40,7 +42,7 @@
 Atom
 Symtable::lookup (String s) const
 {
-  if (elt_b (s))
+  if (elem_b (s))
     {
       Atom a (elem(s));
       return a;
@@ -56,7 +58,7 @@
 Symtable*
 Symtables::operator()(String s)
 {
-  if (!elt_b (s))
+  if (!elem_b (s))
     {
       error (_f ("Symtable `%s\' unknown", s));
       /* 
diff -urN ../lilypond-1.0.12/lily/tex-beam.cc ./lily/tex-beam.cc
--- ../lilypond-1.0.12/lily/tex-beam.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/tex-beam.cc	Thu Jan  1 00:00:00 1970
@@ -1,65 +0,0 @@
-/*
-  tex-beam.cc -- implement Lookup::beam
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-/*
-  Code to generate beams for TeX
-  */
-
-#include <math.h>
-#include "atom.hh"
-#include "molecule.hh"
-#include "tex.hh"
-#include "symtable.hh"
-#include "dimension.hh"
-#include "debug.hh"
-#include "lookup.hh"
-#include "misc.hh"
-#include "paper-def.hh"
-#include "string-convert.hh"
-#include "main.hh"
-
-
-Atom
-Lookup::rule_symbol (Real height, Real width) const
-{
-  Atom bs=(*symtables_p_)("param")->lookup ("rule");
-  Array<String> args;
-  args.push (print_dimen (height));
-  args.push (print_dimen (width));
-  bs.tex_ = substitute_args (bs.tex_,args);
-  bs.dim_.x() = Interval (0,width);
-  bs.dim_.y() = Interval (0,height);
-  return bs;
-}
-
-Atom 
-Lookup::beam(Real slope, Real width, Real thick) const
-{
-  
-  Atom a (ps_beam (slope, width, thick));
-  Real height = slope * width; 
-  Real min_y = (0 <? height) - thick/2;
-  Real max_y = (0 >? height) + thick/2;
-  
-  a.dim_[X_AXIS] = Interval(0, width);
-  a.dim_[Y_AXIS] = Interval(min_y, max_y);
-  return a;
-}
-
-Atom
-Lookup::ps_beam (Real slope, Real width, Real thick) const
-{
-  String ps = "\\embeddedps{\n";
-  ps += to_str (width) + " "+ to_str (slope) + " " + to_str (thick)
-    + " draw_beam}";
-
-  Atom s;
-  s.tex_ = ps;
-  return s;
-}
-
diff -urN ../lilypond-1.0.12/lily/tex-lookup.cc ./lily/tex-lookup.cc
--- ../lilypond-1.0.12/lily/tex-lookup.cc	Thu Jan  1 00:00:00 1970
+++ ./lily/tex-lookup.cc	Mon Oct  5 11:20:27 1998
@@ -0,0 +1,93 @@
+/*
+  tex-lookup.cc -- implement Tex_lookup
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+  Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include "tex-lookup.hh"
+#include "debug.hh"
+#include "symtable.hh"
+#include "dimension.hh"
+#include "tex.hh"
+#include "scalar.hh"
+#include "paper-def.hh"
+#include "string-convert.hh"
+#include "main.hh"
+
+Tex_lookup::Tex_lookup ()
+  : Ps_lookup ()
+{
+}
+
+Tex_lookup::Tex_lookup (Lookup const& s)
+  : Ps_lookup (s)
+{
+}
+
+Tex_lookup::Tex_lookup (Symtables const& s)
+  : Ps_lookup (s)
+{
+}
+
+Tex_lookup::~Tex_lookup()
+{
+}
+
+Atom
+Tex_lookup::afm_find (String s) const
+{
+  return Lookup::afm_find (s, String ("\\char%d"));
+}
+
+Atom
+Tex_lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const
+{
+  return embed (Ps_lookup::dashed_slur (controls, thick, dash));
+}
+
+Atom
+Tex_lookup::embed (Atom a) const
+{
+  a.str_ = "\\embeddedps{\n" + a.str_ + "}";
+  return a;
+}
+
+Atom
+Tex_lookup::hairpin (Real width, bool decresc, bool continued) const
+{
+  return embed (Ps_lookup::hairpin (width, decresc, continued));
+}
+
+Atom
+Tex_lookup::plet (Real dy , Real dx, Direction dir) const
+{
+  return embed (Ps_lookup::plet (dy, dx, dir));
+}
+
+Atom
+Tex_lookup::ps_beam (Real slope, Real width, Real thick) const
+{
+  return embed (Ps_lookup::ps_beam (slope, width, thick));
+}
+
+Atom
+Tex_lookup::slur (Array<Offset> controls) const
+{
+  return embed (Ps_lookup::slur (controls));
+}
+
+Atom
+Tex_lookup::stem (Real y1, Real y2) const
+{
+  return Lookup::stem (y1, y2, "\\kern %\\vrule width % height % depth %");
+}
+
+Atom
+Tex_lookup::vbracket (Real &y) const
+{
+  return embed (Ps_lookup::vbracket (y));
+}
+
diff -urN ../lilypond-1.0.12/lily/tex-outputter.cc ./lily/tex-outputter.cc
--- ../lilypond-1.0.12/lily/tex-outputter.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/tex-outputter.cc	Mon Oct  5 11:20:27 1998
@@ -4,6 +4,7 @@
   source file of the GNU LilyPond music typesetter
 
   (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "tex-outputter.hh"
@@ -16,9 +17,13 @@
 #include "string-convert.hh"
 #include "debug.hh"
 
-Tex_outputter::Tex_outputter (Tex_stream *s)
+Tex_outputter::Tex_outputter (Paper_stream *s)
+  :Paper_outputter (s)
+{
+}
+
+Tex_outputter::~Tex_outputter ()
 {
-  outstream_l_ = s;
 }
 
 /*
@@ -57,26 +62,8 @@
   if (check_debug)
     *outstream_l_ << String ("\n%start: ") << nm << "\n";
 
-  for (PCursor <Atom*> i (m->atoms_); i.ok (); i++)
-    {
-      Offset a_off = i->offset ();
-      a_off += o;
-
-      switch_to_font (i->font_);
-
-      Array<String> a;
-      String r;
-  
-    
-      String s ("\\placebox{%}{%}{%}");
-      a.push (print_dimen (a_off.y()));
-      a.push (print_dimen (a_off.x()));
-      a.push (i->tex_);
-      r += substitute_args (s, a);
-      *outstream_l_ << r;
-    }
+  Paper_outputter::output_molecule (m, o, nm, "\\placebox{%}{%}{%}");
 }
-
 
 void
 Tex_outputter::start_line ()
diff -urN ../lilypond-1.0.12/lily/tex-stream.cc ./lily/tex-stream.cc
--- ../lilypond-1.0.12/lily/tex-stream.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/tex-stream.cc	Mon Oct  5 11:20:27 1998
@@ -15,30 +15,21 @@
 #include "tex-stream.hh"
 #include "debug.hh"
 
-const int MAXLINELEN = 200;
-
 Tex_stream::Tex_stream (String filename)
+  : Paper_stream (filename)
 {
-  if (filename.length_i () && (filename != "-"))
-    os = new ofstream (filename.ch_C ());
-  else
-//    os = new ostream (cout.ostreambuf ());
-    os = new ostream (cout._strbuf);
-  if (!*os)
-    error (_f ("can't open file: `%s\'", filename));
-  nest_level = 0;
-  line_len_i_ = 0;
-  outputting_comment=false;
-  header();
+  header ();
 }
+
 void
-Tex_stream::header()
+Tex_stream::header ()
 {
+  // urg, merge with Ps
   *os << _ ("% Creator: ");
   if (no_timestamps_global_b)
     *os << "GNU LilyPond\n";
   else
-    *os << get_version_str() << '\n';
+    *os << get_version_str () << '\n';
   *os << _ ("% Automatically generated");
   if (no_timestamps_global_b)
     *os << ".\n";
@@ -50,78 +41,14 @@
     }
 }
 
-Tex_stream::~Tex_stream()
+Tex_stream::~Tex_stream ()
 {
-  *os << flush;
-  if (!*os)
-    {
-      warning(_ ("error syncing file (disk full?)"));
-      exit_status_i_ = 1;
-    }
-  delete os;
-  assert (nest_level == 0);
 }
 
 // print string. don't forget indent.
-Tex_stream&
+Paper_stream&
 Tex_stream::operator << (Scalar s)
 {
-  for (char const *cp = s.ch_C (); *cp; cp++)
-    {
-	if (outputting_comment)
-	  {
-	    *os << *cp;
-	    if (*cp == '\n')
-	      {
-		outputting_comment=false;
-
-	      }
-	    continue;
-	  }
-	line_len_i_ ++;
-	switch (*cp)
-	    {
-	    case '%':
-		outputting_comment = true;
-		*os << *cp;
-		break;
-	    case '{':
-		nest_level++;
-		*os << *cp;
-		break;
-	    case '}':
-		nest_level--;
-		*os << *cp;
-
-		if (nest_level < 0)
-		  {
-		    delete os;	// we want to see the remains.
-		    assert (nest_level>=0);
-		  }
-		/* FALLTHROUGH */
-
-	    case '\n':
-		break_line();
-		break;
-	    case ' ':
-		*os <<  ' ';
-		if (line_len_i_ > MAXLINELEN)
-		   break_line();
-
-		break;
-	    default:
-		*os << *cp;
-		break;
-	      }
-    }
-  return *this;
-}
-
-void
-Tex_stream::break_line()
-{
-  *os << "%\n";
-  *os << to_str (' ', nest_level);
-  line_len_i_ = 0;
+  return Paper_stream::operator << (s);
 }
 
diff -urN ../lilypond-1.0.12/lily/time-signature-engraver.cc ./lily/time-signature-engraver.cc
--- ../lilypond-1.0.12/lily/time-signature-engraver.cc	Mon Sep 28 15:46:58 1998
+++ ./lily/time-signature-engraver.cc	Mon Oct  5 11:20:00 1998
@@ -30,7 +30,7 @@
       return ;
     }
   
-  Timing_engraver * timing_grav_l= (Timing_engraver*) result->engraver_l ();
+  Timing_engraver * timing_grav_l= (Timing_engraver*) result->access_Engraver  ();
   
   Time_signature_change_req *req = timing_grav_l->time_signature_req_l();
   if (req)
diff -urN ../lilypond-1.0.12/lily/time-signature.cc ./lily/time-signature.cc
--- ../lilypond-1.0.12/lily/time-signature.cc	Mon Sep 28 15:43:01 1998
+++ ./lily/time-signature.cc	Mon Oct  5 11:22:05 1998
@@ -19,16 +19,25 @@
 }
 
 Molecule*
-Time_signature::brew_molecule_p() const
+Time_signature::brew_molecule_p () const
 {
   Atom s;
   if (time_sig_type_str_.length_i ())
     {
-      s = lookup_l ()-> special_time_signature (time_sig_type_str_);
+      if (time_sig_type_str_[0]=='1')
+	{
+	  Array<Scalar> tmparr=args_;
+	  tmparr[1]=Scalar(0);
+	  s = lookup_l ()->time_signature (tmparr);
+	}
+      else
+	{
+	  s = lookup_l ()-> special_time_signature (time_sig_type_str_,args_);
+	}
     }
   else
     s = lookup_l ()->time_signature (args_);
-  s.translate_axis (-s.extent()[Y_AXIS].center (), Y_AXIS);
+  s.translate_axis (-s.extent ()[Y_AXIS].center (), Y_AXIS);
   return new Molecule (Atom (s));
 }
 
diff -urN ../lilypond-1.0.12/lily/translator-ctors.cc ./lily/translator-ctors.cc
--- ../lilypond-1.0.12/lily/translator-ctors.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/translator-ctors.cc	Mon Oct  5 11:20:00 1998
@@ -30,7 +30,7 @@
 Translator*
 get_translator_l (String s)
 {
-  if (global_translator_dict_p->elt_b (s))
+  if (global_translator_dict_p->elem_b (s))
     {
 //      return (*global_translator_dict_p)[s];
 	Translator* t = (*global_translator_dict_p)[s];
diff -urN ../lilypond-1.0.12/lily/translator-group.cc ./lily/translator-group.cc
--- ../lilypond-1.0.12/lily/translator-group.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/translator-group.cc	Mon Oct  5 11:20:00 1998
@@ -50,7 +50,7 @@
 IMPLEMENT_IS_TYPE_B1(Translator_group, Translator);
 
 void
-Translator_group::add (Translator *trans_p)
+Translator_group::add_translator (Translator *trans_p)
 {
   trans_p_list_.bottom().add (trans_p);
   trans_p->daddy_trans_l_ = this;
@@ -58,6 +58,31 @@
   trans_p->add_processing ();
 }
 
+void
+Translator_group::set_acceptor (String accepts, bool add)
+{
+  if (add)
+    accepts_str_arr_.push (accepts);
+  else
+    for (int i=accepts_str_arr_.size (); i--; )
+      if (accepts_str_arr_[i] == accepts)
+	accepts_str_arr_.del (i);
+}
+
+void
+Translator_group::set_element (String s, bool add)
+{
+  if (!get_translator_l (s))
+    error ("Program has no such type");
+
+  if (add)
+    consists_str_arr_.push (s);
+  else
+    for (int i=consists_str_arr_.size (); i--; )
+      if (consists_str_arr_[i] == s)
+	consists_str_arr_.del (i);
+}
+
 bool
 Translator_group::removable_b() const
 {
@@ -85,9 +110,9 @@
   for (int i=0; i < accepts_str_arr_.size (); i++)
     {
       Translator *t = output_def_l ()->find_translator_l (accepts_str_arr_[i]);
-      if (!t || !t->group_l ())
+      if (!t || !t->access_Translator_group ())
 	continue;
-      accepted_arr.push (t->group_l());
+      accepted_arr.push (t->access_Translator_group ());
     }
 
 
@@ -133,8 +158,8 @@
       // start at 1.  The first one (index 0) will be us.
       for (int i=0; i < path.size (); i++)
 	{
-	  Translator_group * new_group = path[i]->clone ()->group_l ();
-	  current->add (new_group);
+	  Translator_group * new_group = path[i]->clone ()->access_Translator_group ();
+	  current->add_translator (new_group);
 	  current = new_group;
 	}
       current->id_str_ = id;
@@ -185,8 +210,8 @@
   Link_array<Translator_group> groups;
   for (PCursor<Translator*> i (trans_p_list_.top ()); i.ok (); i++)
     {
-      if (i->group_l ())
-	groups.push (i->group_l ());
+      if (i->access_Translator_group ())
+	groups.push (i->access_Translator_group ());
     }
   return groups;
 }
@@ -197,7 +222,7 @@
   Link_array<Translator> groups;
   for (PCursor<Translator*> i (trans_p_list_.top ()); i.ok (); i++)
     {
-      if (!i->group_l ())
+      if (!i->access_Translator_group ())
 	groups.push (i.ptr ());
     }
   return groups;
@@ -263,8 +288,8 @@
 	  warning (_f ("can't find or create `%s\'", accepts_str_arr_[0]));
 	  t = this;
 	}
-      Translator_group * g= t->clone ()->group_l ();
-      add (g);
+      Translator_group * g= t->clone ()->access_Translator_group ();
+      add_translator (g);
 
       if (!g->is_bottom_translator_b ())
 	return g->get_default_interpreter ();
@@ -352,6 +377,6 @@
       if (!t)
 	warning (_f ("can't find `%s\'", consists_str_arr_[i]));
       else
-	add (t->clone ());
+	add_translator (t->clone ());
     }
 }
diff -urN ../lilypond-1.0.12/lily/translator.cc ./lily/translator.cc
--- ../lilypond-1.0.12/lily/translator.cc	Tue Sep 15 18:22:42 1998
+++ ./lily/translator.cc	Mon Oct  5 11:20:00 1998
@@ -157,7 +157,7 @@
 Scalar
 Translator::get_property (String id)
 {
-  if (properties_dict_.elt_b (id))
+  if (properties_dict_.elem_b (id))
     {
       return properties_dict_[id];
     }
diff -urN ../lilypond-1.0.12/make/STATE-VECTOR ./make/STATE-VECTOR
--- ../lilypond-1.0.12/make/STATE-VECTOR	Wed Sep 30 12:00:40 1998
+++ ./make/STATE-VECTOR	Mon Oct  5 13:32:43 1998
@@ -90,3 +90,5 @@
 1.0.11.mb1
 1.0.11.uu1
 1.0.12
+1.0.12.uu1
+1.0.13
diff -urN ../lilypond-1.0.12/mf/feta-timesig.mf ./mf/feta-timesig.mf
--- ../lilypond-1.0.12/mf/feta-timesig.mf	Wed Sep 30 11:04:15 1998
+++ ./mf/feta-timesig.mf	Mon Oct  5 11:22:05 1998
@@ -1,12 +1,19 @@
 % 
 % feta-timesig.mf --  implement Time Signatures
 % 
-% source file of the Feta (Font-En-Tja) music font
+% source file of the Feta (not an abbreviation of Font-En-Tja) music font
 % 
 % (c) 1998 Mats Bengtsson <matsb@s3.kth.se>
 
 fet_begingroup("timesig");
 
+def set_C_width =
+	save left_width, right_width;
+	left_width# := .8 interline#;
+	right_width# := .7 interline#;
+	define_pixels(left_width,right_width);
+enddef;
+
 def draw_C =
 	save hair, bulb_rad;
 	hair# := stafflinethickness#;
@@ -16,9 +23,9 @@
 	x1r = x5;
 	y1r = .4 interline;
 	z2 = (0, interline);
-	z3r = (-b, 0);
+	z3r = (-left_width, 0);
 	z4 = (0, -interline);
-	z5r = (w, -2 stafflinethickness);
+	z5r = (right_width, -2 stafflinethickness);
 	
 	penpos1(hair, 0);
 	penpos2(stafflinethickness, 90);
@@ -36,14 +43,18 @@
 	penlabels(1,2,3,4,5);
 enddef;
 
-fet_beginchar ("4/4 meter", "C", "fourfourmeter")
-	set_char_box(.8 interline#, .7 interline#, interline#, interline#);
+fet_beginchar ("4/4 meter", "C4/4", "fourfourmeter")
+	set_C_width;
+	set_char_box(left_width# + interline#, right_width# + interline#, 
+		interline#, interline#);
 	
 	draw_C;
 fet_endchar;
 
-fet_beginchar ("2/2 meter", "C2", "allabreve")
-	set_char_box(.8 interline#, .7 interline#, 1.4 interline#, 1.4 interline#);
+fet_beginchar ("2/2 meter", "C2/2", "allabreve")
+	set_C_width;
+	set_char_box(left_width# + interline#, right_width# + interline#, 
+		1.4 interline#, 1.4 interline#);
 	
 	draw_C;
 	draw_block((-1.5stafflinethickness, -d), (0, h));
@@ -57,31 +68,37 @@
 Cthickness# := 2 stafflinethickness#;
 define_pixels(Cdiameter,Cthickness);
 
-fet_beginchar ("Mensural 4/4 meter", "oldC", "oldfourfourmeter")
-	set_char_box(.5 Cdiameter#, .5 Cdiameter#, .5 Cdiameter#, .5 Cdiameter#);
+%% tempus imperfectum cum prolatione imperfecta
+fet_beginchar ("Mensural 4/4 meter", "old4/4", "oldfourfourmeter")
+	set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
+		.5 Cdiameter#, .5 Cdiameter#);
 	
 	pickup pencircle scaled Cthickness;
 	draw threequartercircle rotated 45 scaled Cdiameter;
 fet_endchar;
 
-fet_beginchar ("Mensural 2/2 meter", "oldC2", "oldallabreve")
-	set_char_box(.5 Cdiameter#, .5 Cdiameter#, interline#, interline#);
+fet_beginchar ("Mensural 2/2 meter", "old2/2", "oldallabreve")
+	set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
+		interline#, interline#);
 	
 	pickup pencircle scaled Cthickness;
 	draw threequartercircle rotated 45 scaled Cdiameter;
 	draw_block((-Cthickness, -d), (0, h));
 fet_endchar;
 
-fet_beginchar ("Mensural 3/2 meter", "old3_2", "oldthreetwometer")
-	set_char_box(.5 Cdiameter#, .5 Cdiameter#, .5 Cdiameter#, .5 Cdiameter#);
+%% tempus perfectum cum prolatione imperfecta
+fet_beginchar ("Mensural 3/2 meter", "old3/2", "oldthreetwometer")
+	set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
+		.5 Cdiameter#, .5 Cdiameter#);
 	
 	pickup pencircle scaled Cthickness;
 	draw fullcircle scaled Cdiameter;
 fet_endchar;
 
-fet_beginchar ("Mensural 6/4 meter", "old6_4", "oldsixfourmeter")
-	set_char_box(.5 Cdiameter#, .5 Cdiameter#, 
-		.5 Cdiameter# + .5 interline#, Cdiameter#+ .5 interline#);
+%% tempus imperfectum cum prolatione perfecta
+fet_beginchar ("Mensural 6/4 meter", "old6/4", "oldsixfourmeter")
+	set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
+		.5 Cdiameter# + .5 interline#, .5 Cdiameter#+ .5 interline#);
 	
 	pickup pencircle scaled Cthickness;
 	draw threequartercircle rotated 45 scaled Cdiameter 
@@ -90,9 +107,10 @@
 	draw (0,.5 interline);
 fet_endchar;
 
-fet_beginchar ("Mensural 9/4 meter", "old9_4", "oldninefourmeter")
-	set_char_box(.5 Cdiameter#, .5 Cdiameter#, 
-		.5 Cdiameter# + .5 interline#, Cdiameter#+ .5 interline#);
+%% tempus perfectum cum prolatione perfecta
+fet_beginchar ("Mensural 9/4 meter", "old9/4", "oldninefourmeter")
+	set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
+		.5 Cdiameter# + .5 interline#, .5 Cdiameter#+ .5 interline#);
 	
 	pickup pencircle scaled Cthickness;
 	draw fullcircle scaled Cdiameter shifted (0,.5 interline);
diff -urN ../lilypond-1.0.12/mi2mu/GNUmakefile ./mi2mu/GNUmakefile
--- ../lilypond-1.0.12/mi2mu/GNUmakefile	Tue Sep 15 18:22:43 1998
+++ ./mi2mu/GNUmakefile	Mon Oct  5 11:20:06 1998
@@ -9,7 +9,6 @@
 SUBDIRS = include
 EXTRA_DIST_FILES += TODO
 MODULE_LIBS=$(depth)/lib $(depth)/flower
-
 STEPMAKE_TEMPLATES=c++ executable
 
 include $(depth)/make/stepmake.make 
@@ -21,5 +20,3 @@
 
 $(outdir)/mi2mu-version.o: $(outdir)/version.hh
 
-VERSION: $(depth)/VERSION
-	cp $< $@
diff -urN ../lilypond-1.0.12/mudela-mode.el ./mudela-mode.el
--- ../lilypond-1.0.12/mudela-mode.el	Fri Sep 18 12:53:24 1998
+++ ./mudela-mode.el	Mon Oct  5 11:20:39 1998
@@ -35,7 +35,7 @@
 		     "accepts" "accidentals" "break" "bar" "cadenza" 
 		     "clef" "cm" "consists" "contains" "duration" "absdynamic" 
 		     "in" "translator" "type" "lyric" "key" "maininput" "notes"
-		     "musical_pitch" "meter" "midi" "mm" "header"
+		     "musical_pitch" "time" "midi" "mm" "header"
 		     "notenames" "octave" "output" "partial" "paper" "plet"
 		     "property" "pt" "shape" "relative" "include" "score"
 		     "script" "skip"  "table" "spandynamic" "symboltables"
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/bassi-part.ly ./mutopia/Coriolan/bassi-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/bassi-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/bassi-part.ly	Mon Oct  5 11:20:06 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "violoncello.ly"
@@ -26,7 +26,7 @@
 
 \score{
 	\$bassi
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/clarinetti-part.ly ./mutopia/Coriolan/clarinetti-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/clarinetti-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/clarinetti-part.ly	Mon Oct  5 11:20:06 1998
@@ -7,13 +7,13 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "clarinetti.ly"
 \score{
 	\$clarinetti_staff
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/clarinetti.ly ./mutopia/Coriolan/clarinetti.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/clarinetti.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/clarinetti.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "clarinetto-1.ly"
 \include "clarinetto-2.ly"
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/clarinetto-1.ly ./mutopia/Coriolan/clarinetto-1.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/clarinetto-1.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/clarinetto-1.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 clarinetto1 = \notes \relative c {
 	R1 *2 | d''4-.\ff r r2 | R1 *3 | e4-. r r2 | R1 *3 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/clarinetto-2.ly ./mutopia/Coriolan/clarinetto-2.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/clarinetto-2.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/clarinetto-2.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 clarinetto2 = \notes \relative c { 
 	R1*2 bes''4-.\ff r r2 | R1*3 | cis4-. r r2 | R1 *3 | 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/contrabasso-part.ly ./mutopia/Coriolan/contrabasso-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/contrabasso-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/contrabasso-part.ly	Mon Oct  5 11:20:06 1998
@@ -7,14 +7,14 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "contrabasso.ly"
 
 \score{
 	\$contrabasso_staff 
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/contrabasso.ly ./mutopia/Coriolan/contrabasso.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/contrabasso.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/contrabasso.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 contrabasso = \notes \relative c {
 %	\translator Staff=violoncello
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/coriolan-part-paper.ly ./mutopia/Coriolan/coriolan-part-paper.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/coriolan-part-paper.ly	Thu Jan  1 00:00:00 1970
+++ ./mutopia/Coriolan/coriolan-part-paper.ly	Mon Oct  5 11:20:06 1998
@@ -0,0 +1,9 @@
+
+\paper { \translator {
+	\OrchestralPartStaffContext
+
+	}
+	\translator { \ScoreContext
+		skipBars = 1;	
+	}
+}
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/coriolan.ly ./mutopia/Coriolan/coriolan.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/coriolan.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/coriolan.ly	Mon Oct  5 11:20:06 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 
@@ -63,7 +63,7 @@
 	\$bassi
 >
 
- \include "score-paper.ly"
+
 \score{
 	<
 		\property Score . textstyle =  "italic"
@@ -76,6 +76,7 @@
 	\paper{
 		% Give hara-kiri something to do...
 		linewidth = 130.0\mm;
+		\translator { \OrchestralScoreContext }
 	}
 	\midi{ \tempo 4 = 160; }
 }
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/corni-part.ly ./mutopia/Coriolan/corni-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/corni-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/corni-part.ly	Mon Oct  5 11:20:06 1998
@@ -7,13 +7,13 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "corni.ly"
 \score{
 	\$corni_staff
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/corni.ly ./mutopia/Coriolan/corni.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/corni.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/corni.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "corno-1.ly"
 \include "corno-2.ly"
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/corno-1.ly ./mutopia/Coriolan/corno-1.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/corno-1.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/corno-1.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 corno1 = \notes \relative c {
 	R1 *2 | f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/corno-2.ly ./mutopia/Coriolan/corno-2.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/corno-2.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/corno-2.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 corno2 = \notes \relative c {
 	R1 *2 | d''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/fagotti-part.ly ./mutopia/Coriolan/fagotti-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/fagotti-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/fagotti-part.ly	Mon Oct  5 11:20:06 1998
@@ -9,13 +9,13 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "fagotti.ly"
 \score{
 	\$fagotti_staff
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/fagotti.ly ./mutopia/Coriolan/fagotti.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/fagotti.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/fagotti.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "fagotto-1.ly"
 \include "fagotto-2.ly"
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/fagotto-1.ly ./mutopia/Coriolan/fagotto-1.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/fagotto-1.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/fagotto-1.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 fagotto1 = \notes \relative c {
 	R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/fagotto-2.ly ./mutopia/Coriolan/fagotto-2.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/fagotto-2.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/fagotto-2.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 fagotto2 = \notes \relative c {
 	R1 *2 | f4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/flauti-part.ly ./mutopia/Coriolan/flauti-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/flauti-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/flauti-part.ly	Mon Oct  5 11:20:06 1998
@@ -9,14 +9,14 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "flauti.ly"
 
 \score{
 	\$flauti_staff
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/flauti.ly ./mutopia/Coriolan/flauti.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/flauti.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/flauti.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "flauto-1.ly"
 \include "flauto-2.ly"
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/flauto-1.ly ./mutopia/Coriolan/flauto-1.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/flauto-1.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/flauto-1.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 flauto1 = \notes \relative c {
 	R1 *2 | c'''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/flauto-2.ly ./mutopia/Coriolan/flauto-2.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/flauto-2.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/flauto-2.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 flauto2 = \notes \relative c {
 	R1 *2 | as'''4-.\ff r r2 | R1 *3 | b4-. r r2 | R1 *3 | 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/global.ly ./mutopia/Coriolan/global.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/global.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/global.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 global = \notes {
 	\time 4/4;
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/oboe-1.ly ./mutopia/Coriolan/oboe-1.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/oboe-1.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/oboe-1.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 oboe1 = \notes \relative c'' {
 	R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/oboe-2.ly ./mutopia/Coriolan/oboe-2.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/oboe-2.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/oboe-2.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 oboe2 = \notes \relative c{
 	R1 *2| f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/oboi-part.ly ./mutopia/Coriolan/oboi-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/oboi-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/oboi-part.ly	Mon Oct  5 11:20:06 1998
@@ -9,14 +9,14 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "oboi.ly"
 
 \score{
 	\$oboi_staff 
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/oboi.ly ./mutopia/Coriolan/oboi.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/oboi.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/oboi.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "oboe-1.ly"
 \include "oboe-2.ly"
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/timpani.ly ./mutopia/Coriolan/timpani.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/timpani.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/timpani.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 timpani = \notes \relative c {
 	R1 *2 | c4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/trombe-part.ly ./mutopia/Coriolan/trombe-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/trombe-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/trombe-part.ly	Mon Oct  5 11:20:06 1998
@@ -9,13 +9,13 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "trombe.ly"
 \score{
 	\$trombe_staff 
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/trombe.ly ./mutopia/Coriolan/trombe.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/trombe.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/trombe.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "trombo-1.ly"
 \include "trombo-2.ly"
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/trombo-1.ly ./mutopia/Coriolan/trombo-1.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/trombo-1.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/trombo-1.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 trombo1 = \notes \relative c {
 	R1 *2 | c''4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/trombo-2.ly ./mutopia/Coriolan/trombo-2.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/trombo-2.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/trombo-2.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 trombo2 = \notes \relative c {
 	R1 *2 | c'4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/viola-1.ly ./mutopia/Coriolan/viola-1.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/viola-1.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/viola-1.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 viola1 = \notes \relative c {
 	\type Voice=one
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/viola-2.ly ./mutopia/Coriolan/viola-2.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/viola-2.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/viola-2.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 viola2 = \notes \relative c {
 	% starts on (actualy, most part is on) same staff as viola1
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/viola-part.ly ./mutopia/Coriolan/viola-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/viola-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/viola-part.ly	Mon Oct  5 11:20:06 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "viola-1.ly"
@@ -27,7 +27,7 @@
 
 \score{
 	\$viola_staff
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/violino-1-part.ly ./mutopia/Coriolan/violino-1-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/violino-1-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/violino-1-part.ly	Mon Oct  5 11:20:06 1998
@@ -7,14 +7,14 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "violino-1.ly"
 
 \score{
 	\$violino1_staff 
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/violino-1.ly ./mutopia/Coriolan/violino-1.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/violino-1.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/violino-1.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 violino1 = \notes \relative c {
 	c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/violino-2-part.ly ./mutopia/Coriolan/violino-2-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/violino-2-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/violino-2-part.ly	Mon Oct  5 11:20:06 1998
@@ -7,14 +7,14 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "violino-2.ly"
 
 \score{
 	\$violino2_staff 
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/violino-2.ly ./mutopia/Coriolan/violino-2.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/violino-2.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/violino-2.ly	Mon Oct  5 11:20:00 1998
@@ -7,7 +7,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 violino2 = \notes \relative c {
 	c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/violoncello-part.ly ./mutopia/Coriolan/violoncello-part.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/violoncello-part.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/violoncello-part.ly	Mon Oct  5 11:20:06 1998
@@ -7,14 +7,14 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "global.ly"
 \include "violoncello.ly"
 
 \score{
 	\$violoncello_staff 
-	\include "part-paper.ly"
+	\include "coriolan-part-paper.ly"
 	\midi{ \tempo 4 = 160; }
 }
 
diff -urN ../lilypond-1.0.12/mutopia/Coriolan/violoncello.ly ./mutopia/Coriolan/violoncello.ly
--- ../lilypond-1.0.12/mutopia/Coriolan/violoncello.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/Coriolan/violoncello.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 violoncello = \notes \relative c {
 	c1\ff ~ | c | f,4-. r r2 | r1 | c'1\ff ~ | c | f,4-. r r2 |
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly ./mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly	Mon Oct  5 11:20:00 1998
@@ -4,7 +4,7 @@
 	piece = "Allemande";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 global = \notes{
 	\time 4/4;
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly ./mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly	Mon Oct  5 11:20:00 1998
@@ -10,7 +10,7 @@
   copyright =   "Public Domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 global = \notes {
 	\time 4/4;
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly ./mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly	Mon Oct  5 11:20:00 1998
@@ -14,7 +14,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 one = \notes\relative c {
 	\property Voice . textstyle =  "italic"
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly ./mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly	Mon Oct  5 11:20:00 1998
@@ -14,7 +14,7 @@
 copyright =	 "public domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 one = \notes\relative c{
 	\property Voice . textstyle =  "italic"
 	r8\mf [c'-1( e-2 g-4] [e-2 c-1 bes'-5 g-3] |
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly ./mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly	Mon Oct  5 11:20:00 1998
@@ -12,7 +12,7 @@
 enteredby =	 "jcn";
 copyright =	 "public domain";
 }
-\version "1.0.4";
+\version "1.0.6";
 
 one = \notes\relative c{
 	\property Voice . textstyle =  "italic"
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly ./mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly	Mon Oct  5 11:20:00 1998
@@ -12,7 +12,7 @@
 enteredby =	 "jcn";
 copyright =	 "public domain";
 }
-\version "1.0.4";
+\version "1.0.6";
 
 
 one = \notes\relative c{
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly ./mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly	Mon Oct  5 11:20:00 1998
@@ -12,7 +12,7 @@
 enteredby =	 "jcn";
 copyright =	 "public domain";
 }
-\version "1.0.4";
+\version "1.0.6";
 
 
 one = \notes\relative c{
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly	Mon Oct  5 11:20:00 1998
@@ -15,7 +15,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "allemande-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly	Mon Oct  5 11:20:00 1998
@@ -15,7 +15,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "allemande-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly	Mon Oct  5 11:20:00 1998
@@ -15,7 +15,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "courante-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly	Mon Oct  5 11:20:00 1998
@@ -15,7 +15,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "courante-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly	Mon Oct  5 11:20:00 1998
@@ -15,7 +15,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "gigue-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly	Mon Oct  5 11:20:00 1998
@@ -15,7 +15,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "gigue-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly	Mon Oct  5 11:20:00 1998
@@ -16,7 +16,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "menuetto-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly	Mon Oct  5 11:20:00 1998
@@ -17,7 +17,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "menuetto-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly	Mon Oct  5 11:20:00 1998
@@ -15,7 +15,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "prelude-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly	Mon Oct  5 11:20:00 1998
@@ -15,7 +15,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "prelude-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly	Mon Oct  5 11:20:00 1998
@@ -15,7 +15,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "sarabande-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly	Mon Oct  5 11:20:00 1998
@@ -15,7 +15,7 @@
  dotted slurs
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "sarabande-urtext.ly";
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly ./mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly	Tue Sep 15 18:22:43 1998
+++ ./mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly	Mon Oct  5 11:20:00 1998
@@ -2,6 +2,9 @@
 	linewidth= 180.\mm;
 	gourlay_maxmeasures = 10.0;
 	% for simple testing only!
-%	castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn
-	\include "bar-numbering.ly";
+
+
+	\translator {
+		\BarNumberingStaffContext
+	}
 }
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/wtk1-fugue1.ly ./mutopia/J.S.Bach/wtk1-fugue1.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/wtk1-fugue1.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/wtk1-fugue1.ly	Mon Oct  5 11:20:00 1998
@@ -11,7 +11,7 @@
 %{
 	
 %}
-\version "1.0.4";
+\version "1.0.6";
 
 
 global = 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/wtk1-fugue2.ly ./mutopia/J.S.Bach/wtk1-fugue2.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/wtk1-fugue2.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/wtk1-fugue2.ly	Mon Oct  5 11:20:00 1998
@@ -13,7 +13,7 @@
  Tested Features: stem direction, multivoice, forced accidentals.
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "nederlands.ly"                 % for correct parsing of note names
 
diff -urN ../lilypond-1.0.12/mutopia/J.S.Bach/wtk1-prelude1.ly ./mutopia/J.S.Bach/wtk1-prelude1.ly
--- ../lilypond-1.0.12/mutopia/J.S.Bach/wtk1-prelude1.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/J.S.Bach/wtk1-prelude1.ly	Mon Oct  5 11:20:00 1998
@@ -8,7 +8,7 @@
 copyright =	 "Public Domain";
 }
 
-\version "1.0.4";
+\version "1.0.6";
 
 global = 
     \notes {
diff -urN ../lilypond-1.0.12/mutopia/W.A.Mozart/cadenza.ly ./mutopia/W.A.Mozart/cadenza.ly
--- ../lilypond-1.0.12/mutopia/W.A.Mozart/cadenza.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/W.A.Mozart/cadenza.ly	Mon Oct  5 11:20:00 1998
@@ -13,7 +13,7 @@
 Ugh.. Wish we had grace notes....  It adds another dimension to this
 piece of music.  %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 
 cad = \notes  \relative c' {
diff -urN ../lilypond-1.0.12/mutopia/W.A.Mozart/horn-concerto-3.ly ./mutopia/W.A.Mozart/horn-concerto-3.ly
--- ../lilypond-1.0.12/mutopia/W.A.Mozart/horn-concerto-3.ly	Fri Sep 18 12:53:24 1998
+++ ./mutopia/W.A.Mozart/horn-concerto-3.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 }
 
 
-\version "1.0.4";
+\version "1.0.6";
 
 allegro =
 	\notes
diff -urN ../lilypond-1.0.12/mutopia/gallina.ly ./mutopia/gallina.ly
--- ../lilypond-1.0.12/mutopia/gallina.ly	Fri Sep 18 12:53:25 1998
+++ ./mutopia/gallina.ly	Mon Oct  5 11:22:05 1998
@@ -45,7 +45,7 @@
 definition below. --MB
 %} 
 
-\version "1.0.4";
+\version "1.0.6";
 
 vi1=\notes \relative c'' {
   \time 4/4;
@@ -227,6 +227,7 @@
 
 \score{
   \type StaffGroup <
+    \property StaffGroup.timeSignatureStyle = "old"
     \vi1
     \vi2
     \bc
@@ -234,24 +235,14 @@
   \paper{
     gourlay_maxmeasures=7.;
 
-%{
+    \translator { \VoiceContext
+
 %% Uncomment to get the original layout without beams.
 %%%% Compare to the definition in init/engraver.ly.
-    Voice = \translator {
-       \type "Engraver_group_engraver";
-       \consists "Dynamic_engraver";
-       \consists "Rest_engraver";
-       \consists "Stem_engraver";
-       \consists "Plet_engraver";
- %     \consists "Beam_engraver";
-       \consists "Beam_req_swallow_translator";
-       \consists "Abbreviation_beam_engraver";
-       \consists "Script_engraver";
-       \consists "Rhythmic_column_engraver";
-       \consists "Slur_engraver";
-       \accepts "Thread";
-    }
-%}
+
+%  \remove "Beam_engraver";
+ 
+ }
     
   }
   \midi{ 
diff -urN ../lilypond-1.0.12/mutopia/los-toros-oboe.ly ./mutopia/los-toros-oboe.ly
--- ../lilypond-1.0.12/mutopia/los-toros-oboe.ly	Fri Sep 18 12:53:25 1998
+++ ./mutopia/los-toros-oboe.ly	Mon Oct  5 11:20:06 1998
@@ -8,7 +8,7 @@
 copyright =	 "public domain";
 latexheaders=    "headers";
 } 
-\version "1.0.4";
+\version "1.0.6";
 
 %{
 Silly latex file dropped; use ly2dvi
@@ -304,13 +304,13 @@
 >
 
 a4 = \paper{
-	\include "bar-numbering.ly"
+	\translator{ \BarNumberingStaffContext }
 }
 
 a4sixteen = \paper{
 	\paper_sixteen
 	linewidth= 193.\mm;
-	\include "bar-numbering.ly"
+	\translator { \BarNumberingStaffContext }
 }
 
 \score{
diff -urN ../lilypond-1.0.12/mutopia/standchen-16.ly ./mutopia/standchen-16.ly
--- ../lilypond-1.0.12/mutopia/standchen-16.ly	Fri Sep 18 12:53:25 1998
+++ ./mutopia/standchen-16.ly	Mon Oct  5 11:20:00 1998
@@ -9,6 +9,6 @@
 copyright =	 "public domain";
 } 
 
-\version "1.0.4";
+\version "1.0.6";
 
 \include "standchen.ly"
diff -urN ../lilypond-1.0.12/mutopia/standchen-20.ly ./mutopia/standchen-20.ly
--- ../lilypond-1.0.12/mutopia/standchen-20.ly	Fri Sep 18 12:53:25 1998
+++ ./mutopia/standchen-20.ly	Mon Oct  5 11:20:00 1998
@@ -9,7 +9,7 @@
 description = "A schubert song in 20 pt";
 } 
 
-\version "1.0.4";
+\version "1.0.6";
 
 % fool make-website
 % \include "standchen.ly";
diff -urN ../lilypond-1.0.12/mutopia/standchen.ly ./mutopia/standchen.ly
--- ../lilypond-1.0.12/mutopia/standchen.ly	Fri Sep 18 12:53:25 1998
+++ ./mutopia/standchen.ly	Mon Oct  5 11:20:06 1998
@@ -16,7 +16,7 @@
 Note: Original key F.
 %}
 
-\version "1.0.4";
+\version "1.0.6";
 
 $vocal_verse1 = \notes\relative c{
 	% ugh: treble/bass
@@ -448,7 +448,7 @@
 		\$lyric_staff
 		{ \notes \transpose a { \$grand_staff } }
 	>
-	\include "score-paper.ly";
+	\paper { \translator { \OrchestralScoreContext }}
 	\midi{
 		\tempo 4 = 54;
 	}
diff -urN ../lilypond-1.0.12/scripts/convert-mudela.py ./scripts/convert-mudela.py
--- ../lilypond-1.0.12/scripts/convert-mudela.py	Mon Sep 21 10:54:05 1998
+++ ./scripts/convert-mudela.py	Mon Oct  5 11:20:00 1998
@@ -200,7 +200,31 @@
 	
 	conversions.append ((1,0,4), conv, 'default_{paper,midi}\n')
 
+if 1:
+	def conv(lines):
+		newlines =[]
+		for x in lines:
+			x =  regsub.gsub ('ChoireStaff', 'ChoirStaff',x)
+			x =  regsub.gsub ('\\output', 'output = ',x)
+			newlines.append (x)
+		return newlines
+	
+	conversions.append ((1,0,5), conv, 'ChoireStaff -> ChoirStaff\n')
 
+if 1:
+	def conv(lines):
+		newlines =[]
+		found = 0
+		for x in lines:
+			found = regex.search ('[a-zA-Z]+ = *\\translator',x) <> -1
+			newlines.append (x)
+			if found: break
+		if found:
+			sys.stderr.write ('\nNot smart enough to \\translator syntax\n')
+			raise FatalConversionError()
+		return newlines
+	
+	conversions.append ((1,0,6), conv, 'foo = \\translator {\type .. } ->\translator {\type ..; foo; }\n')
 ############################
 
 def get_conversions (from_version, to_version):
diff -urN ../lilypond-1.0.12/scripts/ly2dvi32.py ./scripts/ly2dvi32.py
--- ../lilypond-1.0.12/scripts/ly2dvi32.py	Wed Sep 30 11:43:28 1998
+++ ./scripts/ly2dvi32.py	Mon Oct  5 11:48:10 1998
@@ -14,7 +14,7 @@
 """
 
 name = 'ly2dvi'
-version = '0.0.4'
+version = '0.0.5'
 errorlog = ''
 
 import sys
@@ -504,14 +504,18 @@
         locate and open titledefs.tex file
         """
 
-        path =''
-        cmd =('kpsewhich tex %s %s' % (var,errorlog))
-        pipe = os.popen (cmd, 'r')
-        path = pipe.readline ()[:-1] # chop off \n
-	return_status =  pipe.close()
-	if return_status and not path:
+        if os.name == 'nt':
             path = os.path.join(this.get('root'), 'texmf', 'tex',
                                 'lilypond', var)
+        else:
+            path =''
+            cmd =('kpsewhich tex %s %s' % (var,errorlog))
+            pipe = os.popen (cmd, 'r')
+            path = pipe.readline ()[:-1] # chop off \n
+            return_status =  pipe.close()
+            if return_status and not path:
+                path = os.path.join(this.get('root'), 'texmf', 'tex',
+                                    'lilypond', var)
 	fd = open(path, 'r')
         return fd
 
diff -urN ../lilypond-1.0.12/stepmake/NEWS ./stepmake/NEWS
--- ../lilypond-1.0.12/stepmake/NEWS	Mon Sep 28 17:03:54 1998
+++ ./stepmake/NEWS	Mon Oct  5 11:20:39 1998
@@ -1,5 +1,12 @@
+pl 55
+	- table-to-html stuff moved .
+
+pl 54
+	- && for TeX
+
 pl 53
 	- moved TeX stuff into tex template
+
 pl 52
 	- striproff
 	- reeable $(PACKAGE)_LIBES,_INCLUDES
diff -urN ../lilypond-1.0.12/stepmake/VERSION ./stepmake/VERSION
--- ../lilypond-1.0.12/stepmake/VERSION	Mon Sep 28 17:03:55 1998
+++ ./stepmake/VERSION	Mon Oct  5 11:20:39 1998
@@ -1,7 +1,7 @@
 PACKAGE_NAME=StepMake
 MAJOR_VERSION=0
 MINOR_VERSION=1
-PATCH_LEVEL=53
+PATCH_LEVEL=55
 MY_PATCH_LEVEL=
 
 # use the above to send patches, always empty for released version:
diff -urN ../lilypond-1.0.12/stepmake/bin/table-to-html.py ./stepmake/bin/table-to-html.py
--- ../lilypond-1.0.12/stepmake/bin/table-to-html.py	Tue Sep 15 18:22:43 1998
+++ ./stepmake/bin/table-to-html.py	Mon Oct  5 11:20:39 1998
@@ -43,67 +43,60 @@
 def footer (html):
     html.write ('</table></body>')
 
-def convert_html (inname, outname, separator):
-    # urg, again?
-    from flower import *
-    table = File (inname)
+def convert_html (inname, outname, cols, separator, linesep):
+    table = open (inname)
     # ugh
-    html = File (outname, 'w')
+    html = open (outname, 'w')
 
     header (html)
     i = 0
-    while not table.eof ():
-	line = table.readline ()
+    for line in table.readlines ():
 	i = i + 1
 	if not len(line):
 	    continue
 	columns = split (line, separator)
 	html_line = '<tr><td>' + join (columns, '</td><td>') + '</td></tr>'
+	html_line= regsub.gsub (linesep, ' ',html_line)
 	html.write (html_line)
-	if len (columns) < 7:
-	    print inname + ': ' + str(i) + ':warning: not enough cols\n'
-	    continue
-	if len (columns) > 7:
-	    print inname + ': ' + str(i) + ':warning: too many cols\n'
-	    continue
+
+	if len (columns) <> cols:
+		print i
+		raise 'not enough cols'
 
     table.close ()
     footer (html)
     html.close ()
 
-def convert_tex (inname, outname, separator):
-    # urg, again?
-    from flower import *
-    table = File (inname)
-    # ugh
-    html = File (outname, 'w')
+
+def convert_tex (inname, outname, cols, separator, linesep):
+    table = open (inname)
+    html = open(outname, 'w')
 
     i = 0
-    while not table.eof ():
-	line = table.readline ()
+    for line in table.readlines ():    
 	i = i + 1
 	if not len(line):
 	    continue
 	columns = split (line, separator)
-	if len (columns) < 7:
-	    print inname + ': ' + str(i) + ':warning: not enough cols\n'
-	    continue
-	if len (columns) > 7:
-	    print inname + ': ' + str(i) + ':warning: too many cols\n'
-	    continue
-
-	html_line =  '\\tableentry{' + join (columns, '}{') + '}\n'
-	html.write (html_line)
+	if len (columns) <> cols:
+		print i
+		raise 'not enough cols'
+
+	tex_line =  '\\tableentry{' + join (columns, '}{') + '}\n'
+	tex_line = regsub.gsub (linesep, ' ', tex_line)
+	html.write (tex_line)
+	
     table.close ()
     html.close ()
 
 def main ():
     identify ()
     (options, files) = getopt.getopt (
-	sys.argv[1:], 'to:hp:s:', ['help', 'latex', 'output=', 'package=', 'separator='])
+	sys.argv[1:], 'tl:o:hp:c:s:', ['columns=', 'help', 'latex', 'output=', 'package=', 'separator=', 'linesep='])
     latex = 0
     separator = '@'
     output = ''
+    linesep = '\r'
     for opt in options:
 	o = opt[0]
 	a = opt[1]
@@ -117,6 +110,10 @@
 	    output = a
 	elif o == '--package' or o == '-p':
 	    topdir=a
+	elif o == '--linesep' or o == '-l':
+		linesep = a
+	elif o == '--columns' or o == '-c':
+		cols =  atoi(a)
 	else:
 	    print o
 	    raise getopt.error
@@ -129,9 +126,9 @@
     from flower import *
 
     if latex:
-	convert_tex (files[0], output, separator)
+	convert_tex (files[0], output,  cols, separator, linesep)
     else:
-	convert_html (files[0], output, separator)
+	convert_html (files[0], output, cols, separator, linesep)
 
 main ()
 
diff -urN ../lilypond-1.0.12/stepmake/stepmake/documentation-rules.make ./stepmake/stepmake/documentation-rules.make
--- ../lilypond-1.0.12/stepmake/stepmake/documentation-rules.make	Thu Sep 17 13:35:59 1998
+++ ./stepmake/stepmake/documentation-rules.make	Mon Oct  5 11:20:39 1998
@@ -15,13 +15,6 @@
 $(outdir)/%.txt: $(outdir)/%.1
 	troff -man -Tascii $< | grotty -b -u -o > $@
 
-#urg should generalise and move Lilypond -> StepMake
-$(outdir)/%.html: %.data $(depth)/VERSION
-	$(PYTHON) $(step-bindir)/table-to-html.py --package=$(topdir) -o $@ $<
-	$(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) $@
-
-$(outdir)/%.tex: %.data $(depth)/VERSION
-	$(PYTHON) $(step-bindir)/table-to-html.py --package=$(topdir) -o $@ --latex $<
 
 include $(stepdir)/yodl-rules.make
 include $(stepdir)/texinfo-rules.make
diff -urN ../lilypond-1.0.12/stepmake/stepmake/generic-targets.make ./stepmake/stepmake/generic-targets.make
--- ../lilypond-1.0.12/stepmake/stepmake/generic-targets.make	Tue Sep 15 18:22:43 1998
+++ ./stepmake/stepmake/generic-targets.make	Mon Oct  5 11:20:06 1998
@@ -3,7 +3,7 @@
 
 .PHONY : all clean config default dist doc doc++  exe help html lib TAGS\
 	 po
-
+VPATH=$(outdir)/		#ugh?
 # target all:
 #
 all:	 default
@@ -119,9 +119,12 @@
 
 	$(LOOP)
 
-$(outdir)/version.hh: VERSION
-	sh ./$(step-bindir)/make-version.sh > $@
+# ugh . -> $(outdir)
+$(outdir)/VERSION: $(depth)/VERSION
+	cp $< $@
 
+$(outdir)/version.hh: VERSION
+	sh ./$(step-bindir)/make-version.sh $< > $@
 
 # should this be in Rules?
 configure: configure.in aclocal.m4
diff -urN ../lilypond-1.0.12/stepmake/stepmake/tex-rules.make ./stepmake/stepmake/tex-rules.make
--- ../lilypond-1.0.12/stepmake/stepmake/tex-rules.make	Mon Sep 28 13:17:06 1998
+++ ./stepmake/stepmake/tex-rules.make	Mon Oct  5 11:20:39 1998
@@ -4,12 +4,11 @@
 	(cd $(outdir); tex \\nonstopmode \\input $(<F))
 
 $(outdir)/%.dvi: $(outdir)/%.latex
-	(cd $(outdir); \
-	  latex \\nonstopmode \\input $(<F);\
-	  bibtex $(basename $(<F));\
-	  latex \\nonstopmode \\input $(<F);\
-	  latex \\nonstopmode \\input $(<F);\
-	)
+	(cd $(outdir)&& \
+	  latex \\nonstopmode \\input $(<F)&&\
+	  (bibtex $(basename $(<F))&&\
+	  latex \\nonstopmode \\input $(<F)&&\
+	  latex \\nonstopmode \\input $(<F) ) || true)
 
 $(outdir)/%.ps: $(outdir)/%.dvi
 	dvips -ta4 -o $@ $<
diff -urN ../lilypond-1.0.12/tex/fetdefs.tex ./tex/fetdefs.tex
--- ../lilypond-1.0.12/tex/fetdefs.tex	Tue Sep 15 18:22:43 1998
+++ ./tex/fetdefs.tex	Mon Oct  5 11:22:05 1998
@@ -90,23 +90,10 @@
 
 \def\generalmeter#1#2{%
   \ifnum #2 = 0\relax
-    \ifcase #1
-    \or\or
-      % 2
-      \allabreve
-    \or
-      % 3
-      \threetwometer    % tempus perfectum cum prolatione imperfecta
-    \or
-      % 4
-      \fourfourmeter    % tempus imperfectum cum prolatione imperfecta
-    \or\or
-      % 6
-      \sixfourmeter     % tempus imperfectum cum prolatione perfecta
-    \or\or\or
-      % 9
-      \ninefourmeter    % tempus perfectum cum prolatione perfecta
-    \fi
+    \vbox to 0pt{%
+      \vss
+      \hbox to 0.45\staffheight{\hss \fetanummer #1\hss}%
+      \vss}%
   \else
     \vbox to 0pt{%
       \vss
diff -urN ../lilypond-1.0.12/tex/lilypond-latex.tex ./tex/lilypond-latex.tex
--- ../lilypond-1.0.12/tex/lilypond-latex.tex	Tue Sep 15 18:22:43 1998
+++ ./tex/lilypond-latex.tex	Mon Oct  5 11:20:06 1998
@@ -66,7 +66,6 @@
                         \ifnum\thepage=1{\hfil \LilyIdString}%
                         \else{foo\hfil\the\pageno\hfil}%
                         \fi}}%
-\fi
 \nopagenumbers
 }
 
diff -urN ../lilypond-1.0.12/tex/lilyponddefs.tex ./tex/lilyponddefs.tex
--- ../lilypond-1.0.12/tex/lilyponddefs.tex	Fri Sep 18 12:54:29 1998
+++ ./tex/lilyponddefs.tex	Mon Oct  5 11:20:01 1998
@@ -231,9 +231,9 @@
 %        to time.
 %
 \ifx\csname nolilyfooter\endcsname\relax
-        \message{footer defined}%
-        \csname lilyfooter\texsuffix\endcsname
-\else
-        \message{footer empty!}
+        \message{[footer empty]}
         \csname nolilyfooter\texsuffix\endcsname
+\else
+        \message{[footer defined]}%
+        \csname lilyfooter\texsuffix\endcsname%
 \fi
