summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHan-Wen Nienhuys <hanwen@xs4all.nl>1998-08-11 01:45:43 +0200
committerHan-Wen Nienhuys <hanwen@xs4all.nl>1998-08-11 01:45:43 +0200
commit1cf3d59c1559fb9774c4c1c8cae155cfe54a927c (patch)
treecbfa7cce6bae38537b71ee355d0f3b5d74a201e5
parent1e95a0be01466d1c98644f7705c8e07e41cc645c (diff)
release: 1.0.1
-rw-r--r--ANNOUNCE73
-rw-r--r--ANNOUNCE-0.12
-rw-r--r--ANNOUNCEMENT102
-rw-r--r--AUTHORS.txt180
-rw-r--r--BUGS54
-rw-r--r--DEDICATION8
-rw-r--r--Documentation/AUTHORS.pod75
-rw-r--r--Documentation/BLURB.in6
-rw-r--r--Documentation/COPERTINA.in7
-rw-r--r--Documentation/COPERTINA.yo9
-rw-r--r--Documentation/CodingStyle.yo (renamed from Documentation/CodingStyle.pod)385
-rw-r--r--Documentation/FLAPTEKST.in7
-rw-r--r--Documentation/FLAPTEKST.yo9
-rw-r--r--Documentation/INSTALL.pod341
-rw-r--r--Documentation/MANIFESTO.pod172
-rw-r--r--Documentation/MANIFESTO.yo97
-rw-r--r--Documentation/Makefile62
-rw-r--r--Documentation/PATCHES.pod138
-rw-r--r--Documentation/README-W32.yo753
-rw-r--r--Documentation/TODO10
-rw-r--r--Documentation/automake.urgh97
-rw-r--r--Documentation/disclaimer-w32.yo9
-rw-r--r--Documentation/faq.pod454
-rw-r--r--Documentation/faq.yo398
-rw-r--r--Documentation/gnu-music.pod176
-rw-r--r--Documentation/gnu-music.yo108
-rw-r--r--Documentation/index.pod187
-rw-r--r--Documentation/index.yo66
-rw-r--r--Documentation/internals.yo (renamed from Documentation/internals.pod)247
-rw-r--r--Documentation/language.pod135
-rw-r--r--Documentation/links.pod164
-rw-r--r--Documentation/links.yo135
-rw-r--r--Documentation/literature.pod325
-rw-r--r--Documentation/man/Makefile23
-rw-r--r--Documentation/man/convert-mudela.pod49
-rw-r--r--Documentation/man/convert-mudela.yo67
-rw-r--r--Documentation/man/lilypond.pod329
-rw-r--r--Documentation/man/lilypond.yo251
-rw-r--r--Documentation/man/ly2dvi.pod263
-rw-r--r--Documentation/man/ly2dvi.yo199
-rw-r--r--Documentation/man/mi2mu.pod120
-rw-r--r--Documentation/man/mi2mu.yo90
-rw-r--r--Documentation/man/mudela-book.pod58
-rw-r--r--Documentation/man/mudela-book.yo75
-rw-r--r--Documentation/mutopia.yo (renamed from Documentation/mutopia.pod)53
-rw-r--r--Documentation/other-packages.pod215
-rw-r--r--Documentation/out/dummy.dep0
-rw-r--r--Documentation/pictures/Makefile15
-rw-r--r--Documentation/pictures/lelie_icon.xpm (renamed from Documentation/lelie_icon.xpm)0
-rw-r--r--Documentation/pictures/lelie_logo.xpm (renamed from Documentation/lelie_logo.xpm)0
-rw-r--r--Documentation/pictures/lelieblond.xpm (renamed from Documentation/lelieblond.xpm)0
-rw-r--r--Documentation/pictures/screenshot.xpm537
-rw-r--r--Documentation/relative-octaves.pod88
-rw-r--r--Documentation/relative-octaves.yo89
-rw-r--r--Documentation/scherm.in16
-rw-r--r--Documentation/schermo.in16
-rw-r--r--Documentation/tex/Makefile50
-rw-r--r--Documentation/tex/colorado.bib147
-rw-r--r--Documentation/tex/computer-forms.el21
-rw-r--r--Documentation/tex/computer-notation.bib599
-rw-r--r--Documentation/tex/computer.data88
-rw-r--r--Documentation/tex/engraving.bib544
-rw-r--r--Documentation/tex/mudela.doc1267
-rw-r--r--Documentation/tex/mudela.yo2676
-rw-r--r--Documentation/tex/other-packages.bib334
-rw-r--r--Documentation/tex/out/dummy.dep0
-rw-r--r--Documentation/tex/vocabulary-forms.el (renamed from Documentation/vocabulary-forms.el)8
-rw-r--r--Documentation/tex/vocabulary.data252
-rw-r--r--Documentation/topdocs/AUTHORS.yo51
-rw-r--r--Documentation/topdocs/INSTALL.yo298
-rw-r--r--Documentation/topdocs/Makefile31
-rw-r--r--Documentation/topdocs/PATCHES.yo130
-rw-r--r--Documentation/topdocs/README.yo93
-rw-r--r--Documentation/topdocs/index.yo78
-rw-r--r--Documentation/topdocs/scherm.in16
-rw-r--r--Documentation/topdocs/schermo.in16
-rw-r--r--Documentation/topdocs/topweb.yo1
-rw-r--r--Documentation/topinfo.yo37
-rw-r--r--Documentation/topweb.pod82
-rw-r--r--Documentation/vocabulary.data252
-rw-r--r--INSTALL.txt504
-rw-r--r--NEWS1369
-rw-r--r--NEWS-0.0 (renamed from ONEWS)0
-rw-r--r--NEWS-0.12141
-rw-r--r--PATCHES.txt231
-rw-r--r--README.txt (renamed from README)61
-rw-r--r--TODO346
-rw-r--r--VERSION7
-rw-r--r--aclocal.m4917
-rw-r--r--bin/Makefile13
-rwxr-xr-xbin/add-URLs.sh5
-rw-r--r--bin/add-html-footer.py79
-rwxr-xr-xbin/clean-embeds.sh10
-rwxr-xr-xbin/conflily.sh52
-rwxr-xr-xbin/convert-mudela.pl386
-rw-r--r--bin/doos-dist.sh28
-rwxr-xr-xbin/lilypython.py201
-rw-r--r--bin/ls-latex.py128
-rwxr-xr-xbin/make-patch.py186
-rwxr-xr-xbin/mudela-book.pl212
-rw-r--r--bin/out/dummy.dep0
-rwxr-xr-xbin/ps-to-gifs.sh22
-rwxr-xr-xbin/release.py45
-rw-r--r--bin/rpm-dist.sh35
-rwxr-xr-xbin/show-latest.pl55
-rwxr-xr-xbin/table-to-html.py92
-rw-r--r--bin/tar-docxx.sh30
-rw-r--r--buildscripts/Makefile13
-rwxr-xr-xbuildscripts/clean-diaper.sh (renamed from bin/clean-diaper.sh)0
-rwxr-xr-xbuildscripts/clean-fonts.sh (renamed from bin/clean-fonts.sh)2
-rw-r--r--buildscripts/docxx-lily.sh16
-rw-r--r--[-rwxr-xr-x]buildscripts/find-typenames.pl (renamed from bin/find-typenames.pl)0
-rw-r--r--buildscripts/gen-sitemap.sh6
-rw-r--r--[-rwxr-xr-x]buildscripts/genheader.py (renamed from bin/genheader.py)61
-rw-r--r--buildscripts/html-accents.py115
-rw-r--r--buildscripts/localpackage.py16
-rw-r--r--buildscripts/ltconfig (renamed from bin/ltconfig)0
-rw-r--r--buildscripts/ltmain.sh (renamed from bin/ltmain.sh)0
-rw-r--r--buildscripts/mail-address.sh (renamed from bin/mail-address.sh)0
-rw-r--r--[-rwxr-xr-x]buildscripts/mf-to-table.py (renamed from bin/mf-to-table.py)111
-rw-r--r--buildscripts/mutopia-index.py (renamed from bin/mutopia-index.py)102
-rw-r--r--buildscripts/profile-conf.sh (renamed from bin/profile-conf.sh)0
-rwxr-xr-xbuildscripts/ps-to-gifs.sh77
-rw-r--r--buildscripts/run-lilypond.sh9
-rwxr-xr-xbuildscripts/set-lily.sh56
-rw-r--r--buildscripts/show-current.sh9
-rw-r--r--buildscripts/template.py59
-rw-r--r--config.hh.in12
-rw-r--r--config.make.in39
-rwxr-xr-xconfigure2177
-rw-r--r--configure.in316
-rw-r--r--debian/Makefile37
-rw-r--r--debian/README.Debian58
-rw-r--r--debian/TODO3
-rw-r--r--debian/changelog48
-rw-r--r--debian/control28
-rw-r--r--debian/control.foka30
-rw-r--r--debian/control.in16
-rw-r--r--debian/copyright20
-rw-r--r--debian/out/control22
-rw-r--r--debian/out/dummy.dep0
-rwxr-xr-x[-rw-r--r--]debian/postinst246
-rw-r--r--debian/postinst.old.sh18
-rwxr-xr-x[-rw-r--r--]debian/postrm38
-rw-r--r--debian/preinst70
-rwxr-xr-x[-rw-r--r--]debian/rules29
-rw-r--r--dstreamrc (renamed from .dstreamrc)44
-rw-r--r--flower/Makefile59
-rw-r--r--flower/NEWS-1.0 (renamed from flower/ONEWS)0
-rw-r--r--flower/NEWS-1.1.46 (renamed from flower/NEWS)18
-rw-r--r--flower/README4
-rw-r--r--flower/VERSION12
-rw-r--r--flower/axis.cc6
-rw-r--r--flower/choleski.cc2
-rw-r--r--flower/cpu-timer.cc2
-rw-r--r--flower/data-file.cc70
-rw-r--r--flower/dictionary.cc4
-rw-r--r--flower/directed-graph.cc8
-rw-r--r--flower/dstream.cc24
-rw-r--r--flower/file-path.cc13
-rw-r--r--flower/flower-debug.cc2
-rw-r--r--flower/flower-version.cc13
-rw-r--r--flower/full-storage.cc2
-rw-r--r--flower/getopt-long.cc (renamed from flower/lgetopt.cc)46
-rw-r--r--flower/include/Makefile15
-rw-r--r--flower/include/acursor.hh2
-rw-r--r--flower/include/arithmetic-operator.hh2
-rw-r--r--flower/include/array.hh (renamed from flower/include/varray.hh)2
-rw-r--r--flower/include/array.icc66
-rw-r--r--flower/include/assoc.hh2
-rw-r--r--flower/include/axes.hh2
-rw-r--r--flower/include/cpu-timer.hh2
-rw-r--r--flower/include/cursor.icc2
-rw-r--r--flower/include/data-file.hh30
-rw-r--r--flower/include/diagonal-storage.hh65
-rw-r--r--flower/include/dictionary-iter.hh2
-rw-r--r--flower/include/dictionary.hh2
-rw-r--r--flower/include/directed-graph.hh4
-rw-r--r--flower/include/dstream.hh13
-rw-r--r--flower/include/file-path.hh4
-rw-r--r--flower/include/flower-debug.hh2
-rw-r--r--flower/include/full-storage.hh4
-rw-r--r--flower/include/full-storage.icc2
-rw-r--r--flower/include/getopt-long.hh (renamed from flower/include/lgetopt.hh)12
-rw-r--r--flower/include/international.hh19
-rw-r--r--flower/include/interval.hh10
-rw-r--r--flower/include/interval.tcc2
-rw-r--r--flower/include/iterate.hh2
-rw-r--r--flower/include/libc-extension.hh13
-rw-r--r--flower/include/list.icc4
-rw-r--r--flower/include/list.tcc2
-rw-r--r--flower/include/matrix-storage.hh4
-rw-r--r--flower/include/matrix.hh4
-rw-r--r--flower/include/nscalar.hh2
-rw-r--r--flower/include/out/dummy.dep0
-rw-r--r--flower/include/parray.hh4
-rw-r--r--flower/include/plist.tcc2
-rw-r--r--flower/include/pointer.hh2
-rw-r--r--flower/include/pointer.tcc2
-rw-r--r--flower/include/pqueue.hh4
-rw-r--r--flower/include/priorities.hh4
-rw-r--r--flower/include/rational.hh4
-rw-r--r--flower/include/real.hh2
-rw-r--r--flower/include/scalar.hh22
-rw-r--r--flower/include/string-convert.hh4
-rw-r--r--flower/include/string-data.hh2
-rw-r--r--flower/include/string-data.icc2
-rw-r--r--flower/include/string-handle.hh2
-rw-r--r--flower/include/string-handle.icc2
-rw-r--r--flower/include/string.hh55
-rw-r--r--flower/include/string.icc2
-rw-r--r--flower/include/text-db.hh4
-rw-r--r--flower/include/text-stream.hh12
-rw-r--r--flower/include/unionfind.hh2
-rw-r--r--flower/include/varray.icc3
-rw-r--r--flower/include/vector.hh5
-rw-r--r--flower/include/virtual-methods.hh16
-rw-r--r--flower/interval.cc6
-rw-r--r--flower/libc-extension.cc23
-rw-r--r--flower/matrix-debug.cc22
-rw-r--r--flower/matrix.cc2
-rw-r--r--flower/nscalar.cc2
-rw-r--r--flower/offset.cc5
-rw-r--r--flower/out/dummy.dep0
-rw-r--r--flower/rational.cc58
-rw-r--r--flower/scalar.cc2
-rw-r--r--flower/string-convert.cc61
-rw-r--r--flower/string.cc194
-rw-r--r--flower/stringutil.cc2
-rw-r--r--flower/text-db.cc52
-rw-r--r--flower/text-stream.cc44
-rw-r--r--flower/vector.cc2
-rw-r--r--init/Makefile15
-rw-r--r--init/bar-numbering.ly7
-rw-r--r--init/book-fragment.ly2
-rw-r--r--init/book-init.ly14
-rw-r--r--init/center-fragment.ly24
-rw-r--r--init/center.ly15
-rw-r--r--init/declarations.ly3
-rw-r--r--init/deutsch.ly140
-rw-r--r--init/engraver.ly88
-rw-r--r--init/fragment.ly24
-rw-r--r--init/init.fly (renamed from init/no-tape.ly)5
-rw-r--r--init/init.ly (renamed from init/lily-init.ly)2
-rw-r--r--init/italiano.ly70
-rw-r--r--init/nederlands.ly152
-rw-r--r--init/norsk.ly282
-rw-r--r--init/out/dummy.dep0
-rw-r--r--init/paper-params16.ly0
-rw-r--r--init/paper-params20.ly0
-rw-r--r--init/paper11.ly2
-rw-r--r--init/paper13.ly2
-rw-r--r--init/paper16.ly15
-rw-r--r--init/paper20.ly12
-rw-r--r--init/paper26.ly4
-rw-r--r--init/params.ly28
-rw-r--r--init/part-paper.ly (renamed from mutopia/Coriolan/part-paper.ly)26
-rw-r--r--init/performer.ly16
-rw-r--r--init/property.ly135
-rw-r--r--init/score-bar-numbering.ly15
-rw-r--r--init/score-paper.ly29
-rw-r--r--init/script.ly2
-rw-r--r--init/simple-init.ly12
-rw-r--r--init/svenska.ly140
-rw-r--r--init/table11.ly79
-rw-r--r--init/table13.ly80
-rw-r--r--init/table16.ly92
-rw-r--r--init/table20.ly95
-rw-r--r--init/table26.ly78
-rw-r--r--input/Makefile12
-rw-r--r--input/bugs/Makefile11
-rw-r--r--input/bugs/beam-bug.ly35
-rw-r--r--input/bugs/beam-length.ly12
-rw-r--r--input/bugs/grouping.fly2
-rw-r--r--input/bugs/hari-number.ly32
-rw-r--r--input/bugs/multi-slope.ly6
-rw-r--r--input/bugs/out/dummy.dep0
-rw-r--r--input/bugs/slur-broken.ly2
-rw-r--r--input/bugs/slur-bug.fly (renamed from input/bugs/slur-bug.ly)0
-rw-r--r--input/bugs/slur-symmetry.ly (renamed from input/bugs/s.ly)5
-rw-r--r--input/bugs/stem-length.ly7
-rw-r--r--input/bugs/tie-bug.ly13
-rw-r--r--input/coriolan-alto.ly77
-rw-r--r--input/example-1.fly13
-rw-r--r--input/example-2.fly13
-rw-r--r--input/example-3.ly29
-rw-r--r--input/keys.ly18
-rw-r--r--input/kortjakje.ly41
-rw-r--r--input/minimal.ly52
-rw-r--r--input/multi.ly47
-rw-r--r--input/out/dummy.dep0
-rw-r--r--input/part.ly1
-rw-r--r--input/pedal.ly7
-rw-r--r--input/praeludium-fuga-E.ly74
-rw-r--r--input/rhythm.ly30
-rw-r--r--input/scales.ly47
-rw-r--r--input/scripts.ly13
-rw-r--r--input/test/Makefile13
-rw-r--r--input/test/a.ly (renamed from input/bugs/a.ly)24
-rw-r--r--input/test/abbrev.ly29
-rw-r--r--input/test/bar-scripts.ly78
-rw-r--r--input/test/beam-abbrev.fly5
-rw-r--r--input/test/beam-chord.ly9
-rw-r--r--input/test/beam-length.fly3
-rw-r--r--input/test/beam-pos.ly4
-rw-r--r--input/test/beams.ly32
-rw-r--r--input/test/broken.ly12
-rw-r--r--input/test/clefs.ly26
-rw-r--r--input/test/collisions.ly31
-rw-r--r--input/test/denneboom.ly10
-rw-r--r--input/test/find-quarts.ly8
-rw-r--r--input/test/font-body.ly62
-rw-r--r--input/test/font.ly2
-rw-r--r--input/test/font16.ly2
-rw-r--r--input/test/font20.ly7
-rw-r--r--input/test/gourlay.ly7
-rw-r--r--input/test/grace.ly27
-rw-r--r--input/test/hara-kiri.ly111
-rw-r--r--input/test/keys.ly11
-rw-r--r--input/test/knee.ly5
-rw-r--r--input/test/mark.ly23
-rw-r--r--input/test/multi-rest.ly4
-rw-r--r--input/test/multi-slope.fly1
-rw-r--r--input/test/ossia.ly3
-rw-r--r--input/test/out/dummy.dep0
-rw-r--r--input/test/score-bar-scripts.ly75
-rw-r--r--input/test/sizes.fly10
-rw-r--r--input/test/sleur.ly51
-rw-r--r--input/test/slur-bug.ly8
-rw-r--r--input/test/slur-damping.ly7
-rw-r--r--input/test/slur-swap.ly18
-rw-r--r--input/test/slurs.ly16
-rw-r--r--input/test/spacing.ly4
-rw-r--r--input/test/stem.ly21
-rw-r--r--input/test/test-lyrics.ly4
-rw-r--r--input/test/tie-bug.ly8
-rw-r--r--input/test/tie.ly8
-rw-r--r--input/test/title.ly24
-rw-r--r--input/test/transposing.fly10
-rw-r--r--input/test/transposition.ly64
-rw-r--r--input/test/updown.fly9
-rw-r--r--input/test/vertical-align.ly33
-rw-r--r--input/tril.ly2
-rw-r--r--input/twinkle-pop.ly16
-rw-r--r--input/twinkle.ly68
-rw-r--r--intl/ChangeLog693
-rw-r--r--intl/Makefile48
-rw-r--r--intl/Makefile.in.dist166
-rw-r--r--intl/bindtextdom.c172
-rw-r--r--intl/cat-compat.c.dist252
-rw-r--r--intl/config.h18
-rw-r--r--intl/dcgettext.c522
-rw-r--r--intl/dgettext.c59
-rw-r--r--intl/finddomain.c503
-rw-r--r--intl/gettext.c70
-rw-r--r--intl/gettext.h105
-rw-r--r--intl/gettextP.h79
-rw-r--r--intl/hash-string.h62
-rw-r--r--intl/intl-compat.c76
-rw-r--r--intl/libgettext.h177
-rw-r--r--intl/libintl.inst108
-rwxr-xr-xintl/linux-msg.sed100
-rw-r--r--intl/loadmsgcat.c191
-rw-r--r--intl/localealias.c317
-rwxr-xr-xintl/po2tbl.sed.in102
-rw-r--r--intl/textdomain.c97
-rwxr-xr-xintl/xopen-msg.sed104
-rw-r--r--lib/Makefile22
-rw-r--r--lib/binary-source-file.cc8
-rw-r--r--lib/duration-convert.cc17
-rw-r--r--lib/duration-iter.cc4
-rw-r--r--lib/duration.cc5
-rw-r--r--lib/include/Makefile13
-rw-r--r--lib/include/binary-source-file.hh2
-rw-r--r--lib/include/duration-convert.hh4
-rw-r--r--lib/include/duration.hh8
-rw-r--r--lib/include/file-storage.hh2
-rw-r--r--lib/include/input.hh2
-rw-r--r--lib/include/mapped-file-storage.hh2
-rw-r--r--lib/include/out/dummy.dep0
-rw-r--r--lib/include/plet.hh2
-rw-r--r--lib/include/simple-file-storage.hh2
-rw-r--r--lib/include/source-file.hh3
-rw-r--r--lib/include/source.hh4
-rw-r--r--lib/include/thank-you-cygnus.hh (renamed from lib/include/windhoos-suck-suck-suck-thank-you-cygnus.hh)0
-rw-r--r--lib/include/warn.hh2
-rw-r--r--lib/input.cc6
-rw-r--r--lib/mapped-file-storage.cc9
-rw-r--r--lib/moment.cc2
-rw-r--r--lib/out/dummy.dep0
-rw-r--r--lib/plet.cc2
-rw-r--r--lib/simple-file-storage.cc12
-rw-r--r--lib/source-file.cc28
-rw-r--r--lib/source.cc6
-rw-r--r--lib/template.cc2
-rw-r--r--lib/thank-you-cygnus.cc (renamed from lib/windhoos-suck-suck-suck-thank-you-cygnus.cc)2
-rw-r--r--lib/warn.cc4
-rw-r--r--lily/Makefile44
-rw-r--r--lily/VERSION10
-rw-r--r--lily/abbrev.cc111
-rw-r--r--lily/abbreviation-beam-engraver.cc16
-rw-r--r--lily/abbreviation-beam.cc8
-rw-r--r--lily/afm-reader.cc154
-rw-r--r--lily/afm.cc118
-rw-r--r--lily/align-element.cc187
-rw-r--r--lily/atom.cc38
-rw-r--r--lily/audio-column.cc4
-rw-r--r--lily/audio-element.cc2
-rw-r--r--lily/audio-item.cc13
-rw-r--r--lily/audio-staff.cc4
-rw-r--r--lily/axis-group-administration.cc83
-rw-r--r--lily/axis-group-element.cc59
-rw-r--r--lily/axis-group-item.cc12
-rw-r--r--lily/axis-group-spanner.cc39
-rw-r--r--lily/bar-column-engraver.cc103
-rw-r--r--lily/bar-column-grav.cc76
-rw-r--r--lily/bar-column.cc6
-rw-r--r--lily/bar-engraver.cc (renamed from lily/bar-grav.cc)12
-rw-r--r--lily/bar-number-engraver.cc84
-rw-r--r--lily/bar-number-grav.cc68
-rw-r--r--lily/bar.cc26
-rw-r--r--lily/beam-engraver.cc (renamed from lily/beam-grav.cc)32
-rw-r--r--lily/beam-swallow-trans.cc2
-rw-r--r--lily/beam.cc81
-rw-r--r--lily/bezier.cc10
-rw-r--r--lily/bow.cc30
-rw-r--r--lily/boxes.cc6
-rw-r--r--lily/break-align-item.cc8
-rw-r--r--lily/break.cc31
-rw-r--r--lily/change-iterator.cc10
-rw-r--r--lily/change-translator.cc2
-rw-r--r--lily/chord-iterator.cc2
-rw-r--r--lily/clef-engraver.cc256
-rw-r--r--lily/clef-grav.cc184
-rw-r--r--lily/clef-item.cc131
-rw-r--r--lily/col-info.cc18
-rw-r--r--lily/colhpos.cc22
-rw-r--r--lily/collision-engraver.cc59
-rw-r--r--lily/collision-grav.cc45
-rw-r--r--lily/collision.cc16
-rw-r--r--lily/command-request.cc155
-rw-r--r--lily/crescendo.cc12
-rw-r--r--lily/debug.cc44
-rw-r--r--lily/dimen.cc12
-rw-r--r--lily/direction.cc2
-rw-r--r--lily/dot-column-engraver.cc54
-rw-r--r--lily/dot-column.cc14
-rw-r--r--lily/dots.cc10
-rw-r--r--lily/dynamic-engraver.cc (renamed from lily/dynamic-grav.cc)75
-rw-r--r--lily/encompass-info.cc2
-rw-r--r--lily/engraver-group.cc8
-rw-r--r--lily/engraver.cc6
-rw-r--r--lily/font-size-engraver.cc36
-rw-r--r--lily/general-script-def.cc2
-rw-r--r--lily/global-translator.cc2
-rw-r--r--lily/gourlay-breaking.cc16
-rw-r--r--lily/graphical-axis-group.cc90
-rw-r--r--lily/graphical-element.cc33
-rw-r--r--lily/grouping.cc2
-rw-r--r--lily/hara-kiri-line-group-engraver.cc17
-rw-r--r--lily/hara-kiri-vertical-group-spanner.cc50
-rw-r--r--lily/head-engraver.cc (renamed from lily/head-grav.cc)18
-rw-r--r--lily/header.cc12
-rw-r--r--lily/heads-engraver.cc86
-rw-r--r--lily/horizontal-align-item.cc116
-rw-r--r--lily/horizontal-group-elem.cc23
-rw-r--r--lily/horizontal-group-item.cc7
-rw-r--r--lily/horizontal-vertical-group-elem.cc19
-rw-r--r--lily/horizontal-vertical-group-item.cc8
-rw-r--r--lily/idealspacing.cc4
-rw-r--r--lily/identifier.cc112
-rw-r--r--lily/includable-lexer.cc33
-rw-r--r--lily/include/Makefile9
-rw-r--r--lily/include/abbrev.hh4
-rw-r--r--lily/include/abbreviation-beam-engraver.hh6
-rw-r--r--lily/include/abbreviation-beam.hh6
-rw-r--r--lily/include/afm-reader.hh22
-rw-r--r--lily/include/afm.hh56
-rw-r--r--lily/include/align-element.hh58
-rw-r--r--lily/include/atom.hh7
-rw-r--r--lily/include/audio-column.hh4
-rw-r--r--lily/include/audio-element.hh2
-rw-r--r--lily/include/audio-item.hh9
-rw-r--r--lily/include/audio-staff.hh4
-rw-r--r--lily/include/axis-group-administration.hh36
-rw-r--r--lily/include/axis-group-element.hh25
-rw-r--r--lily/include/axis-group-item.hh2
-rw-r--r--lily/include/axis-group-spanner.hh2
-rw-r--r--lily/include/bar-align-engraver.hh (renamed from lily/include/bar-align-grav.hh)4
-rw-r--r--lily/include/bar-column-engraver.hh (renamed from lily/include/bar-column-grav.hh)14
-rw-r--r--lily/include/bar-column.hh6
-rw-r--r--lily/include/bar-engraver.hh (renamed from lily/include/bar-grav.hh)4
-rw-r--r--lily/include/bar-number-engraver.hh (renamed from lily/include/bar-number-grav.hh)6
-rw-r--r--lily/include/bar.hh16
-rw-r--r--lily/include/beam-engraver.hh (renamed from lily/include/beam-grav.hh)6
-rw-r--r--lily/include/beam-swallow-trans.hh2
-rw-r--r--lily/include/beam.hh9
-rw-r--r--lily/include/bezier.hh4
-rw-r--r--lily/include/bow.hh3
-rw-r--r--lily/include/box.hh (renamed from lily/include/boxes.hh)1
-rw-r--r--lily/include/break-align-item.hh4
-rw-r--r--lily/include/break-caching.hh4
-rw-r--r--lily/include/break.hh12
-rw-r--r--lily/include/cf-basic.hh13
-rw-r--r--lily/include/cf-string.hh1
-rw-r--r--lily/include/change-iterator.hh2
-rw-r--r--lily/include/change-translator.hh2
-rw-r--r--lily/include/chord-iterator.hh2
-rw-r--r--lily/include/clef-engraver.hh (renamed from lily/include/clef-grav.hh)10
-rw-r--r--lily/include/clef-item.hh43
-rw-r--r--lily/include/col-info.hh10
-rw-r--r--lily/include/colhpos.hh12
-rw-r--r--lily/include/collision-engraver.hh (renamed from lily/include/collision-grav.hh)8
-rw-r--r--lily/include/collision.hh6
-rw-r--r--lily/include/command-request.hh77
-rw-r--r--lily/include/crescendo.hh4
-rw-r--r--lily/include/curve.hh4
-rw-r--r--lily/include/dimension.hh (renamed from lily/include/dimen.hh)0
-rw-r--r--lily/include/direction.hh2
-rw-r--r--lily/include/directional-spanner.hh2
-rw-r--r--lily/include/dot-column-engraver.hh28
-rw-r--r--lily/include/dot-column-grav.hh20
-rw-r--r--lily/include/dot-column.hh9
-rw-r--r--lily/include/dots.hh2
-rw-r--r--lily/include/drul-array.hh2
-rw-r--r--lily/include/dynamic-engraver.hh (renamed from lily/include/dynamic-grav.hh)6
-rw-r--r--lily/include/elem-group.hh4
-rw-r--r--lily/include/encompass-info.hh2
-rw-r--r--lily/include/engraver-group.hh8
-rw-r--r--lily/include/engraver.hh14
-rw-r--r--lily/include/file-results.hh4
-rw-r--r--lily/include/font-size-engraver.hh27
-rw-r--r--lily/include/general-script-def.hh2
-rw-r--r--lily/include/global-translator.hh2
-rw-r--r--lily/include/gourlay-breaking.hh4
-rw-r--r--lily/include/graphical-axis-group.hh40
-rw-r--r--lily/include/graphical-element.hh27
-rw-r--r--lily/include/grouping.hh4
-rw-r--r--lily/include/hara-kiri-line-group-engraver.hh9
-rw-r--r--lily/include/hara-kiri-vertical-group-spanner.hh13
-rw-r--r--lily/include/head-engraver.hh (renamed from lily/include/head-grav.hh)4
-rw-r--r--lily/include/header.hh8
-rw-r--r--lily/include/heads-engraver.hh32
-rw-r--r--lily/include/horizontal-align-item.hh36
-rw-r--r--lily/include/horizontal-group-element.hh (renamed from lily/include/horizontal-group-elem.hh)13
-rw-r--r--lily/include/horizontal-group-item.hh10
-rw-r--r--lily/include/horizontal-vertical-group-element.hh (renamed from lily/include/horizontal-vertical-group-elem.hh)18
-rw-r--r--lily/include/horizontal-vertical-group-item.hh10
-rw-r--r--lily/include/idealspacing.hh2
-rw-r--r--lily/include/identifier.hh62
-rw-r--r--lily/include/includable-lexer.hh18
-rw-r--r--lily/include/ineq-constrained-qp.hh2
-rw-r--r--lily/include/item.hh16
-rw-r--r--lily/include/key-engraver.hh (renamed from lily/include/key-grav.hh)10
-rw-r--r--lily/include/key-item.hh38
-rw-r--r--lily/include/key-performer.hh2
-rw-r--r--lily/include/key.hh4
-rw-r--r--lily/include/keyword.hh2
-rw-r--r--lily/include/leastsquares.hh4
-rw-r--r--lily/include/lily-proto.hh40
-rw-r--r--lily/include/line-group-group-engraver.hh (renamed from lily/include/line-group-grav.hh)17
-rw-r--r--lily/include/line-of-score.hh (renamed from lily/include/scoreline.hh)10
-rw-r--r--lily/include/line-spacer.hh8
-rw-r--r--lily/include/linear-programming.hh2
-rw-r--r--lily/include/linespace.hh12
-rw-r--r--lily/include/local-key-engraver.hh (renamed from lily/include/local-key-grav.hh)6
-rw-r--r--lily/include/local-key-item.hh12
-rw-r--r--lily/include/lookup.hh20
-rw-r--r--lily/include/lyric-engraver.hh4
-rw-r--r--lily/include/lyric-performer.hh4
-rw-r--r--lily/include/main.hh6
-rw-r--r--lily/include/meter-performer.hh31
-rw-r--r--lily/include/meter.hh30
-rw-r--r--lily/include/midi-def.hh2
-rw-r--r--lily/include/midi-item.hh6
-rw-r--r--lily/include/midi-stream.hh2
-rw-r--r--lily/include/midi-walker.hh4
-rw-r--r--lily/include/minterval.hh2
-rw-r--r--lily/include/misc.hh10
-rw-r--r--lily/include/molecule.hh13
-rw-r--r--lily/include/mudela-version.hh2
-rw-r--r--lily/include/multi-measure-rest-engraver.hh2
-rw-r--r--lily/include/multi-measure-rest.hh2
-rw-r--r--lily/include/music-iterator.hh4
-rw-r--r--lily/include/music-list.hh2
-rw-r--r--lily/include/music-output-def.hh2
-rw-r--r--lily/include/music-output.hh2
-rw-r--r--lily/include/music-wrapper-iterator.hh2
-rw-r--r--lily/include/music-wrapper.hh2
-rw-r--r--lily/include/music.hh2
-rw-r--r--lily/include/musical-pitch.hh14
-rw-r--r--lily/include/musical-request.hh97
-rw-r--r--lily/include/my-lily-lexer.hh4
-rw-r--r--lily/include/my-lily-parser.hh13
-rw-r--r--lily/include/note-column.hh12
-rw-r--r--lily/include/note-head.hh2
-rw-r--r--lily/include/note-performer.hh4
-rw-r--r--lily/include/notename-table.hh2
-rw-r--r--lily/include/notename.hh2
-rw-r--r--lily/include/out/dummy.dep0
-rw-r--r--lily/include/p-col.hh6
-rw-r--r--lily/include/p-score.hh8
-rw-r--r--lily/include/paper-def.hh12
-rw-r--r--lily/include/parseconstruct.hh2
-rw-r--r--lily/include/performance.hh6
-rw-r--r--lily/include/performer-group-performer.hh4
-rw-r--r--lily/include/performer.hh8
-rw-r--r--lily/include/piano-brace.hh33
-rw-r--r--lily/include/pitch-squash-engraver.hh (renamed from lily/include/pitch-squash-grav.hh)6
-rw-r--r--lily/include/plet-engraver.hh4
-rw-r--r--lily/include/plet-spanner.hh6
-rw-r--r--lily/include/plet-swallow-engraver.hh4
-rw-r--r--lily/include/priority-halign-engraver.hh (renamed from lily/include/priority-halign-grav.hh)6
-rw-r--r--lily/include/property-iterator.hh2
-rw-r--r--lily/include/qlp.hh2
-rw-r--r--lily/include/qlpsolve.hh10
-rw-r--r--lily/include/relative-music-iterator.hh2
-rw-r--r--lily/include/relative-music.hh2
-rw-r--r--lily/include/request-iterator.hh2
-rw-r--r--lily/include/request.hh71
-rw-r--r--lily/include/rest-collision-engraver.hh (renamed from lily/include/rest-collision-grav.hh)10
-rw-r--r--lily/include/rest-collision.hh6
-rw-r--r--lily/include/rest-column-engraver.hh (renamed from Documentation/man/out/dummy.dep)0
-rw-r--r--lily/include/rest-column-grav.hh0
-rw-r--r--lily/include/rest-engraver.hh (renamed from lily/include/rest-grav.hh)4
-rw-r--r--lily/include/rest.hh4
-rw-r--r--lily/include/rhythmic-column-engraver.hh (renamed from lily/include/rhythmic-column-grav.hh)11
-rw-r--r--lily/include/rhythmic-head.hh8
-rw-r--r--lily/include/rod.hh2
-rw-r--r--lily/include/scope.hh2
-rw-r--r--lily/include/score-bar.hh4
-rw-r--r--lily/include/score-column.hh6
-rw-r--r--lily/include/score-elem.hh119
-rw-r--r--lily/include/score-element-info.hh (renamed from lily/include/score-elem-info.hh)14
-rw-r--r--lily/include/score-element.hh128
-rw-r--r--lily/include/score-engraver.hh (renamed from lily/include/score-grav.hh)10
-rw-r--r--lily/include/score-performer.hh4
-rw-r--r--lily/include/score-priority-engraver.hh (renamed from lily/include/score-priority-grav.hh)6
-rw-r--r--lily/include/score.hh6
-rw-r--r--lily/include/script-column.hh6
-rw-r--r--lily/include/script-def.hh2
-rw-r--r--lily/include/script-engraver.hh (renamed from lily/include/script-grav.hh)4
-rw-r--r--lily/include/script.hh37
-rw-r--r--lily/include/separating-group-spanner.hh8
-rw-r--r--lily/include/separating-line-group-engraver.hh (renamed from lily/include/separating-line-group-grav.hh)10
-rw-r--r--lily/include/single-malt-grouping-item.hh8
-rw-r--r--lily/include/slur-engraver.hh (renamed from lily/include/slur-grav.hh)6
-rw-r--r--lily/include/slur.hh8
-rw-r--r--lily/include/span-bar-engraver.hh (renamed from lily/include/span-bar-grav.hh)8
-rw-r--r--lily/include/span-bar.hh15
-rw-r--r--lily/include/span-score-bar-engraver.hh (renamed from lily/include/span-score-bar-grav.hh)8
-rw-r--r--lily/include/span-score-bar.hh24
-rw-r--r--lily/include/spanner.hh30
-rw-r--r--lily/include/spring-spacer.hh10
-rw-r--r--lily/include/staff-bracket.hh28
-rw-r--r--lily/include/staff-info.hh5
-rw-r--r--lily/include/staff-performer.hh4
-rw-r--r--lily/include/staff-side.hh35
-rw-r--r--lily/include/staff-sym-engraver.hh (renamed from lily/include/staff-sym-grav.hh)4
-rw-r--r--lily/include/staff-sym.hh4
-rw-r--r--lily/include/stem-engraver.hh (renamed from lily/include/stem-grav.hh)6
-rw-r--r--lily/include/stem-info.hh2
-rw-r--r--lily/include/stem.hh15
-rw-r--r--lily/include/super-element.hh (renamed from lily/include/super-elem.hh)10
-rw-r--r--lily/include/swallow-engraver.hh (renamed from lily/include/swallow-grav.hh)4
-rw-r--r--lily/include/swallow-perf.hh2
-rw-r--r--lily/include/symtable.hh4
-rw-r--r--lily/include/tex-outputter.hh (renamed from lily/include/outputter.hh)14
-rw-r--r--lily/include/tex-stream.hh5
-rw-r--r--lily/include/tex.hh8
-rw-r--r--lily/include/text-def.hh8
-rw-r--r--lily/include/text-item.hh2
-rw-r--r--lily/include/text-spanner.hh6
-rw-r--r--lily/include/tie-engraver.hh43
-rw-r--r--lily/include/tie-grav.hh38
-rw-r--r--lily/include/tie.hh6
-rw-r--r--lily/include/ties-engraver.hh51
-rw-r--r--lily/include/time-description.hh8
-rw-r--r--lily/include/time-signature-engraver.hh (renamed from lily/include/meter-grav.hh)14
-rw-r--r--lily/include/time-signature.hh31
-rw-r--r--lily/include/timing-engraver.hh (renamed from lily/include/timing-grav.hh)4
-rw-r--r--lily/include/timing-translator.hh4
-rw-r--r--lily/include/translation-property.hh2
-rw-r--r--lily/include/translator-change.hh2
-rw-r--r--lily/include/translator-group.hh2
-rw-r--r--lily/include/translator.hh30
-rw-r--r--lily/include/type-swallow-trans.hh4
-rw-r--r--lily/include/vertical-align-elem.hh29
-rw-r--r--lily/include/vertical-align-engraver.hh (renamed from lily/include/vertical-align-grav.hh)6
-rw-r--r--lily/include/vertical-align-spanner.hh13
-rw-r--r--lily/include/vertical-group-element.hh (renamed from lily/include/vertical-group-elem.hh)12
-rw-r--r--lily/include/vertical-group-spanner.hh10
-rw-r--r--lily/include/voice-iterator.hh2
-rw-r--r--lily/include/word-wrap.hh4
-rw-r--r--lily/ineq-constrained-qp.cc71
-rw-r--r--lily/item.cc75
-rw-r--r--lily/key-engraver.cc187
-rw-r--r--lily/key-grav.cc130
-rw-r--r--lily/key-item.cc129
-rw-r--r--lily/key-performer.cc6
-rw-r--r--lily/key.cc12
-rw-r--r--lily/keyword.cc5
-rw-r--r--lily/lexer.ll37
-rw-r--r--lily/lexerinit.cc2
-rw-r--r--lily/lily-version.cc6
-rw-r--r--lily/line-group-grav.cc58
-rw-r--r--lily/line-group-group-engraver.cc66
-rw-r--r--lily/line-of-score.cc (renamed from lily/scoreline.cc)16
-rw-r--r--lily/line-spacer.cc2
-rw-r--r--lily/linear-programming.cc2
-rw-r--r--lily/local-key-engraver.cc (renamed from lily/local-key-grav.cc)45
-rw-r--r--lily/local-key-item.cc26
-rw-r--r--lily/lookup.cc144
-rw-r--r--lily/lyric-engraver.cc (renamed from lily/lyric-grav.cc)33
-rw-r--r--lily/lyric-performer.cc16
-rw-r--r--lily/main.cc209
-rw-r--r--lily/meter-grav.cc61
-rw-r--r--lily/meter-performer.cc56
-rw-r--r--lily/midi-def.cc2
-rw-r--r--lily/midi-item.cc66
-rw-r--r--lily/midi-stream.cc6
-rw-r--r--lily/midi-walker.cc42
-rw-r--r--lily/misc.cc5
-rw-r--r--lily/mixed-qp.cc (renamed from lily/qlp.cc)34
-rw-r--r--lily/molecule.cc44
-rw-r--r--lily/mudela-version.cc6
-rw-r--r--lily/multi-measure-rest-engraver.cc10
-rw-r--r--lily/multi-measure-rest.cc10
-rw-r--r--lily/music-iterator.cc3
-rw-r--r--lily/music-list.cc8
-rw-r--r--lily/music-output-def.cc2
-rw-r--r--lily/music-wrapper-iterator.cc2
-rw-r--r--lily/music-wrapper.cc2
-rw-r--r--lily/music.cc2
-rw-r--r--lily/musical-pitch.cc139
-rw-r--r--lily/musical-request.cc57
-rw-r--r--lily/my-lily-lexer.cc29
-rw-r--r--lily/my-lily-parser.cc51
-rw-r--r--lily/note-column.cc26
-rw-r--r--lily/note-head.cc12
-rw-r--r--lily/note-performer.cc33
-rw-r--r--lily/note.cc2
-rw-r--r--lily/notename-table.cc2
-rw-r--r--lily/out/dummy.dep0
-rw-r--r--lily/outputter.cc57
-rw-r--r--lily/p-col.cc6
-rw-r--r--lily/p-score.cc81
-rw-r--r--lily/paper-def.cc73
-rw-r--r--lily/parser.yy270
-rw-r--r--lily/performance.cc15
-rw-r--r--lily/performer-group-performer.cc4
-rw-r--r--lily/performer.cc4
-rw-r--r--lily/piano-brace.cc54
-rw-r--r--lily/pitch-squash-engraver.cc (renamed from lily/pitch-squash-grav.cc)8
-rw-r--r--lily/plet-engraver.cc27
-rw-r--r--lily/plet-spanner.cc22
-rw-r--r--lily/plet-swallow-engraver.cc4
-rw-r--r--lily/priority-halign-engraver.cc (renamed from lily/priority-halign-grav.cc)14
-rw-r--r--lily/property-iterator.cc2
-rw-r--r--lily/ps-plet.cc4
-rw-r--r--lily/qlpsolve.cc79
-rw-r--r--lily/relative-octave-music.cc2
-rw-r--r--lily/request-iterator.cc6
-rw-r--r--lily/request.cc6
-rw-r--r--lily/rest-collision-engraver.cc52
-rw-r--r--lily/rest-collision-grav.cc47
-rw-r--r--lily/rest-collision.cc10
-rw-r--r--lily/rest-engraver.cc (renamed from lily/rest-grav.cc)14
-rw-r--r--lily/rest.cc6
-rw-r--r--lily/rhythmic-column-engraver.cc120
-rw-r--r--lily/rhythmic-column-grav.cc105
-rw-r--r--lily/rhythmic-head.cc10
-rw-r--r--lily/rod.cc4
-rw-r--r--lily/scope.cc8
-rw-r--r--lily/score-bar.cc2
-rw-r--r--lily/score-column.cc8
-rw-r--r--lily/score-elem-info.cc25
-rw-r--r--lily/score-element-info.cc25
-rw-r--r--lily/score-element.cc (renamed from lily/score-elem.cc)156
-rw-r--r--lily/score-engraver.cc (renamed from lily/score-grav.cc)40
-rw-r--r--lily/score-performer.cc8
-rw-r--r--lily/score-priority-engraver.cc (renamed from lily/score-priority-grav.cc)14
-rw-r--r--lily/score.cc19
-rw-r--r--lily/scores.cc48
-rw-r--r--lily/script-column.cc14
-rw-r--r--lily/script-def.cc4
-rw-r--r--lily/script-engraver.cc (renamed from lily/script-grav.cc)25
-rw-r--r--lily/script.cc93
-rw-r--r--lily/separating-group-spanner.cc9
-rw-r--r--lily/separating-line-group-engraver.cc (renamed from lily/separating-line-group-grav.cc)16
-rw-r--r--lily/single-malt-grouping-item.cc10
-rw-r--r--lily/slur-engraver.cc (renamed from lily/slur-grav.cc)34
-rw-r--r--lily/slur.cc18
-rw-r--r--lily/span-bar-engraver.cc (renamed from lily/span-bar-grav.cc)29
-rw-r--r--lily/span-bar.cc69
-rw-r--r--lily/span-score-bar-engraver.cc (renamed from lily/span-score-bar-grav.cc)21
-rw-r--r--lily/span-score-bar.cc34
-rw-r--r--lily/spanner.cc37
-rw-r--r--lily/spring-spacer.cc56
-rw-r--r--lily/staff-bracket.cc47
-rw-r--r--lily/staff-info.cc4
-rw-r--r--lily/staff-performer.cc10
-rw-r--r--lily/staff-side.cc83
-rw-r--r--lily/staff-sym-engraver.cc (renamed from lily/staff-sym-grav.cc)6
-rw-r--r--lily/staff-sym.cc18
-rw-r--r--lily/stem-engraver.cc (renamed from lily/stem-grav.cc)34
-rw-r--r--lily/stem-info.cc9
-rw-r--r--lily/stem.cc78
-rw-r--r--lily/super-elem.cc34
-rw-r--r--lily/swallow-engraver.cc (renamed from lily/swallow-grav.cc)4
-rw-r--r--lily/swallow-perf.cc2
-rw-r--r--lily/symtable.cc19
-rw-r--r--lily/template1.cc4
-rw-r--r--lily/template2.cc2
-rw-r--r--lily/template3.cc2
-rw-r--r--lily/template4.cc2
-rw-r--r--lily/template5.cc2
-rw-r--r--lily/template7.cc2
-rw-r--r--lily/template8.cc2
-rw-r--r--lily/tex-beam.cc8
-rw-r--r--lily/tex-outputter.cc94
-rw-r--r--lily/tex-stream.cc28
-rw-r--r--lily/tex.cc6
-rw-r--r--lily/text-def.cc21
-rw-r--r--lily/text-item.cc7
-rw-r--r--lily/text-spanner.cc10
-rw-r--r--lily/tie-engraver.cc (renamed from lily/tie-grav.cc)36
-rw-r--r--lily/tie.cc17
-rw-r--r--lily/ties-engraver.cc149
-rw-r--r--lily/time-description.cc24
-rw-r--r--lily/time-signature-engraver.cc62
-rw-r--r--lily/time-signature.cc (renamed from lily/meter.cc)10
-rw-r--r--lily/timing-engraver.cc (renamed from lily/timing-grav.cc)8
-rw-r--r--lily/timing-translator.cc46
-rw-r--r--lily/translation-property.cc4
-rw-r--r--lily/translator-ctors.cc12
-rw-r--r--lily/translator-group.cc15
-rw-r--r--lily/translator.cc4
-rw-r--r--lily/type-swallow-trans.cc2
-rw-r--r--lily/version.cc12
-rw-r--r--lily/vertical-align-elem.cc72
-rw-r--r--lily/vertical-align-engraver.cc62
-rw-r--r--lily/vertical-align-grav.cc50
-rw-r--r--lily/vertical-align-spanner.cc15
-rw-r--r--lily/vertical-group-elem.cc22
-rw-r--r--lily/vertical-group-spanner.cc7
-rw-r--r--lily/voice-iterator.cc2
-rw-r--r--lily/warn.cc4
-rw-r--r--lily/word-wrap.cc26
-rw-r--r--make/Docrules.make48
-rw-r--r--make/Executable.make15
-rw-r--r--make/Files.make36
-rw-r--r--make/Include.make18
-rw-r--r--make/Initial.make41
-rw-r--r--make/Install_outfiles.make15
-rw-r--r--make/Install_outfiles.sub.make19
-rw-r--r--make/Installfiles.make16
-rw-r--r--make/Lilypond.make6
-rw-r--r--make/Makefile59
-rw-r--r--make/Mudela_rules.make11
-rw-r--r--make/Mutopia.make38
-rw-r--r--make/Rules.make69
-rw-r--r--make/STATE-VECTOR60
-rw-r--r--make/Scripts.make28
-rw-r--r--make/Stepmake.make26
-rw-r--r--make/Substitute.make20
-rw-r--r--make/Targets.make243
-rw-r--r--make/Template.make66
-rw-r--r--make/Toplevel.make.in91
-rw-r--r--make/Toplevel_version.make3
-rw-r--r--make/User.make6
-rw-r--r--make/Variables.make228
-rw-r--r--make/Version.make6
-rw-r--r--make/WWW.make14
-rw-r--r--make/lelievijver.lsm.in20
-rw-r--r--make/lilypond.lsm.in15
-rw-r--r--make/lilypond.spec.in50
-rw-r--r--make/out/dummy.dep0
-rw-r--r--make/out/lelievijver.lsm31
-rw-r--r--make/out/lilypond.lsm25
-rw-r--r--make/out/lilypond.spec58
-rw-r--r--make/out/zlilypond-docs.spec52
-rw-r--r--make/rpmrc.in6
-rw-r--r--make/zlilypond-docs.spec.in46
-rw-r--r--mf/Makefile59
-rw-r--r--mf/Rules.make31
-rw-r--r--mf/TODO6
-rw-r--r--mf/feta-autometric.mf2
-rw-r--r--mf/feta-beum.mf2
-rw-r--r--mf/feta-bolletjes.mf2
-rw-r--r--mf/feta-brackets16.mf2
-rw-r--r--mf/feta-brackets20.mf2
-rw-r--r--mf/feta-eindelijk.mf21
-rw-r--r--mf/feta-klef.mf2
-rw-r--r--mf/feta-schrift.mf6
-rw-r--r--mf/feta-slag.mf2
-rw-r--r--mf/feta-sleur.mf2
-rw-r--r--mf/out/dummy.dep0
-rw-r--r--mi2mu/Makefile63
-rw-r--r--mi2mu/include/Makefile14
-rw-r--r--mi2mu/include/mi2mu-global.hh2
-rw-r--r--mi2mu/include/mi2mu-proto.hh2
-rw-r--r--mi2mu/include/midi-parser.hh2
-rw-r--r--mi2mu/include/midi-score-parser.hh2
-rw-r--r--mi2mu/include/midi-track-parser.hh2
-rw-r--r--mi2mu/include/mudela-column.hh2
-rw-r--r--mi2mu/include/mudela-item.hh8
-rw-r--r--mi2mu/include/mudela-score.hh4
-rw-r--r--mi2mu/include/mudela-staff.hh4
-rw-r--r--mi2mu/include/mudela-stream.hh5
-rw-r--r--mi2mu/include/mudela-voice.hh2
-rw-r--r--mi2mu/include/out/dummy.dep0
-rw-r--r--mi2mu/main.cc116
-rw-r--r--mi2mu/mi2mu-version.cc12
-rw-r--r--mi2mu/midi-parser.cc6
-rw-r--r--mi2mu/midi-score-parser.cc14
-rw-r--r--mi2mu/midi-track-parser.cc41
-rw-r--r--mi2mu/mudela-column.cc2
-rw-r--r--mi2mu/mudela-item.cc118
-rw-r--r--mi2mu/mudela-score.cc63
-rw-r--r--mi2mu/mudela-staff.cc26
-rw-r--r--mi2mu/mudela-stream.cc33
-rw-r--r--mi2mu/mudela-voice.cc46
-rw-r--r--mi2mu/out/dummy.dep0
-rw-r--r--mi2mu/template9.cc2
-rw-r--r--mi2mu/version.cc5
-rw-r--r--mudela-mode.el19
-rw-r--r--mutopia/Coriolan/Makefile17
-rw-r--r--mutopia/Coriolan/bassi-part.ly32
-rw-r--r--mutopia/Coriolan/clarinetti-part.ly10
-rw-r--r--mutopia/Coriolan/clarinetti.ly23
-rw-r--r--mutopia/Coriolan/clarinetto-1.ly19
-rw-r--r--mutopia/Coriolan/clarinetto-2.ly25
-rw-r--r--mutopia/Coriolan/contrabasso-part.ly20
-rw-r--r--mutopia/Coriolan/contrabasso.ly151
-rw-r--r--mutopia/Coriolan/coriolan.ly39
-rw-r--r--mutopia/Coriolan/corni-part.ly10
-rw-r--r--mutopia/Coriolan/corni.ly21
-rw-r--r--mutopia/Coriolan/corno-1.ly23
-rw-r--r--mutopia/Coriolan/corno-2.ly28
-rw-r--r--mutopia/Coriolan/fagotti-part.ly8
-rw-r--r--mutopia/Coriolan/fagotti.ly12
-rw-r--r--mutopia/Coriolan/fagotto-1.ly19
-rw-r--r--mutopia/Coriolan/fagotto-2.ly21
-rw-r--r--mutopia/Coriolan/flauti-part.ly8
-rw-r--r--mutopia/Coriolan/flauti.ly12
-rw-r--r--mutopia/Coriolan/flauto-1.ly26
-rw-r--r--mutopia/Coriolan/flauto-2.ly23
-rw-r--r--mutopia/Coriolan/global.ly11
-rw-r--r--mutopia/Coriolan/oboe-1.ly22
-rw-r--r--mutopia/Coriolan/oboe-2.ly20
-rw-r--r--mutopia/Coriolan/oboi-part.ly8
-rw-r--r--mutopia/Coriolan/oboi.ly12
-rw-r--r--mutopia/Coriolan/out/dummy.dep0
-rw-r--r--mutopia/Coriolan/timpani.ly26
-rw-r--r--mutopia/Coriolan/trombe-part.ly8
-rw-r--r--mutopia/Coriolan/trombe.ly13
-rw-r--r--mutopia/Coriolan/trombo-1.ly21
-rw-r--r--mutopia/Coriolan/trombo-2.ly23
-rw-r--r--mutopia/Coriolan/viola-1.ly304
-rw-r--r--mutopia/Coriolan/viola-2.ly44
-rw-r--r--mutopia/Coriolan/viola-part.ly33
-rw-r--r--mutopia/Coriolan/viola.ly36
-rw-r--r--mutopia/Coriolan/violino-1-part.ly20
-rw-r--r--mutopia/Coriolan/violino-1.ly283
-rw-r--r--mutopia/Coriolan/violino-2-part.ly20
-rw-r--r--mutopia/Coriolan/violino-2.ly297
-rw-r--r--mutopia/Coriolan/violoncello-part.ly20
-rw-r--r--mutopia/Coriolan/violoncello.ly305
-rw-r--r--mutopia/J.S.Bach/Makefile20
-rw-r--r--mutopia/J.S.Bach/Petites-Preludes/Makefile12
-rw-r--r--mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly119
-rw-r--r--mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly130
-rw-r--r--mutopia/J.S.Bach/Petites-Preludes/preludes-3.lym4 (renamed from mutopia/J.S.Bach/preludes-3.lym4)11
-rw-r--r--mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly207
-rw-r--r--mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly225
-rw-r--r--mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly133
-rw-r--r--mutopia/J.S.Bach/Petites-Preludes/preludes-paper.ly9
-rw-r--r--mutopia/J.S.Bach/Petites-Preludes/preludes.ly (renamed from mutopia/J.S.Bach/preludes.ly)5
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/Makefile12
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/allemande-alto.ly (renamed from mutopia/J.S.Bach/allemande-alto.ly)17
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly (renamed from mutopia/J.S.Bach/allemande-cello.ly)15
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly100
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/courante-alto.ly (renamed from mutopia/J.S.Bach/courante-alto.ly)19
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly (renamed from mutopia/J.S.Bach/courante-cello.ly)17
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly85
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/gigue-alto.ly50
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly49
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly145
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-alto.ly (renamed from mutopia/J.S.Bach/menuetto-alto.ly)28
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly (renamed from mutopia/J.S.Bach/menuetto-cello.ly)24
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly (renamed from mutopia/J.S.Bach/menuetto-urtext.ly)52
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/prelude-alto.ly (renamed from mutopia/J.S.Bach/prelude-alto.ly)20
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly (renamed from mutopia/J.S.Bach/prelude-cello.ly)18
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly365
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-alto.ly (renamed from mutopia/J.S.Bach/sarabande-alto.ly)17
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly (renamed from mutopia/J.S.Bach/sarabande-cello.ly)15
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly (renamed from mutopia/J.S.Bach/sarabande-urtext.ly)62
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly (renamed from mutopia/J.S.Bach/scs-paper.ly)0
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/scsii-alto.ly (renamed from mutopia/J.S.Bach/scsii-alto.ly)0
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly (renamed from mutopia/J.S.Bach/scsii-cello.ly)0
-rw-r--r--mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly (renamed from mutopia/J.S.Bach/solo-cello-suite-ii.ly)2
-rw-r--r--mutopia/J.S.Bach/allemande-urtext.ly102
-rw-r--r--mutopia/J.S.Bach/courante-urtext.ly69
-rw-r--r--mutopia/J.S.Bach/out/dummy.dep0
-rw-r--r--mutopia/J.S.Bach/prelude-urtext.ly117
-rw-r--r--mutopia/J.S.Bach/preludes-1.ly125
-rw-r--r--mutopia/J.S.Bach/preludes-2.ly132
-rw-r--r--mutopia/J.S.Bach/preludes-4.ly209
-rw-r--r--mutopia/J.S.Bach/preludes-5.ly216
-rw-r--r--mutopia/J.S.Bach/preludes-6.ly127
-rw-r--r--mutopia/J.S.Bach/wtk1-fugue1.ly246
-rw-r--r--mutopia/J.S.Bach/wtk1-fugue2.ly213
-rw-r--r--mutopia/J.S.Bach/wtk1-prelude1.ly15
-rw-r--r--mutopia/J.S.Bach/wtk1-prelude2.ly.m410
-rw-r--r--mutopia/Makefile17
-rw-r--r--mutopia/TODO3
-rw-r--r--mutopia/W.A.Mozart/Makefile19
-rw-r--r--mutopia/W.A.Mozart/cadenza.ly2
-rw-r--r--mutopia/W.A.Mozart/horn-concerto-3.ly48
-rw-r--r--mutopia/W.A.Mozart/out/dummy.dep0
-rw-r--r--mutopia/gallina.ly202
-rw-r--r--mutopia/los-toros-oboe.ly52
-rw-r--r--mutopia/out/dummy.dep0
-rw-r--r--mutopia/standchen-16.ly2
-rw-r--r--mutopia/standchen-20.ly2
-rw-r--r--mutopia/standchen.ly375
-rw-r--r--out/dummy.dep0
-rw-r--r--po/Makefile32
-rw-r--r--po/TODO63
-rw-r--r--po/it.po891
-rw-r--r--po/lilypond.po884
-rw-r--r--po/nl.po905
-rw-r--r--scripts/Makefile15
-rw-r--r--scripts/convert-mudela.py264
-rw-r--r--[-rwxr-xr-x]scripts/ly2dvi.sh (renamed from bin/ly2dvi.sh)319
-rw-r--r--scripts/mudela-book.py246
-rw-r--r--stepmake/AUTHORS.txt24
-rw-r--r--stepmake/Documentation/Makefile24
-rw-r--r--stepmake/Documentation/automake.yo124
-rw-r--r--stepmake/Documentation/layout.yo20
-rw-r--r--stepmake/Documentation/topdocs/AUTHORS.yo27
-rw-r--r--stepmake/Documentation/topdocs/BLURB.in6
-rw-r--r--stepmake/Documentation/topdocs/INSTALL.yo162
-rw-r--r--stepmake/Documentation/topdocs/Makefile35
-rw-r--r--stepmake/INSTALL.txt20
-rw-r--r--stepmake/NEWS246
-rw-r--r--stepmake/README18
-rw-r--r--stepmake/TODO23
-rw-r--r--stepmake/VERSION9
-rw-r--r--stepmake/aclocal.m4653
-rw-r--r--stepmake/bin/Makefile10
-rw-r--r--stepmake/bin/add-html-footer.py134
-rwxr-xr-xstepmake/bin/config.guess (renamed from bin/config.guess)0
-rwxr-xr-xstepmake/bin/config.sub (renamed from bin/config.sub)0
-rw-r--r--stepmake/bin/fake-yodl.sh33
-rwxr-xr-xstepmake/bin/flower.py (renamed from bin/flower.py)2
-rwxr-xr-xstepmake/bin/install-dot-exe.sh24
-rw-r--r--stepmake/bin/install-layout.sh12
-rwxr-xr-xstepmake/bin/install-sh (renamed from bin/install-sh)0
-rw-r--r--stepmake/bin/latex2yodl.sh61
-rw-r--r--stepmake/bin/ls-latex.py204
-rwxr-xr-xstepmake/bin/make-version.sh (renamed from bin/make-version.sh)0
-rw-r--r--stepmake/bin/ntpwd.py29
-rw-r--r--stepmake/bin/package-diff.py282
-rwxr-xr-xstepmake/bin/package-zet.sh42
-rw-r--r--stepmake/bin/package-zip.sh58
-rwxr-xr-xstepmake/bin/packagepython.py173
-rw-r--r--stepmake/bin/pod2yodl.sh40
-rwxr-xr-xstepmake/bin/release.py74
-rw-r--r--stepmake/bin/show-latest.sh11
-rwxr-xr-xstepmake/bin/stepdirs.sh47
-rwxr-xr-xstepmake/bin/stepmakeise.sh105
-rw-r--r--stepmake/bin/tar-docxx.sh49
-rw-r--r--stepmake/bin/template.py60
-rw-r--r--stepmake/bin/texi2man.sh51
-rw-r--r--stepmake/bin/text2html.sh17
-rwxr-xr-xstepmake/bin/zet-step.sh18
-rw-r--r--stepmake/config.hh.in14
-rw-r--r--stepmake/config.make.in59
-rwxr-xr-xstepmake/configure1585
-rw-r--r--stepmake/configure.in37
-rw-r--r--stepmake/make/Makefile9
-rw-r--r--stepmake/make/Rules.make8
-rw-r--r--stepmake/make/STATE-VECTOR18
-rw-r--r--stepmake/make/Stepmake.make20
-rw-r--r--stepmake/make/Substitute.make17
-rw-r--r--stepmake/make/Targets.make26
-rw-r--r--stepmake/make/Toplevel.make.in40
-rw-r--r--stepmake/make/Toplevel_version.make8
-rw-r--r--stepmake/make/User.make15
-rw-r--r--stepmake/make/Variables.make20
-rw-r--r--stepmake/make/out/stepmake.lsm15
-rw-r--r--stepmake/make/out/stepmake.spec26
-rw-r--r--stepmake/make/stepmake.lsm.in15
-rw-r--r--stepmake/make/stepmake.spec.in26
-rw-r--r--stepmake/stepmake/C++.make4
-rw-r--r--stepmake/stepmake/C++_files.make14
-rw-r--r--stepmake/stepmake/C++_rules.make27
-rw-r--r--stepmake/stepmake/C++_vars.make14
-rw-r--r--stepmake/stepmake/C.make24
-rw-r--r--stepmake/stepmake/C_rules.make26
-rw-r--r--stepmake/stepmake/Documentation.shared.make48
-rw-r--r--stepmake/stepmake/Documentation.vars.make20
-rw-r--r--stepmake/stepmake/Documentation_rules.make25
-rw-r--r--stepmake/stepmake/Executable.make34
-rw-r--r--stepmake/stepmake/Files.make27
-rw-r--r--stepmake/stepmake/Include.make7
-rw-r--r--stepmake/stepmake/Install_outfiles.make15
-rw-r--r--stepmake/stepmake/Install_outfiles.sub.make5
-rw-r--r--stepmake/stepmake/Installfiles.make15
-rw-r--r--stepmake/stepmake/Intlrules.make7
-rw-r--r--stepmake/stepmake/Library.make3
-rw-r--r--stepmake/stepmake/Library_targets.make17
-rw-r--r--stepmake/stepmake/Library_vars.make20
-rw-r--r--stepmake/stepmake/Makedir.shared.make31
-rw-r--r--stepmake/stepmake/Makefile23
-rw-r--r--stepmake/stepmake/Manual.make (renamed from make/Manual.make)5
-rw-r--r--stepmake/stepmake/Metafont.make15
-rw-r--r--stepmake/stepmake/Package.make36
-rw-r--r--stepmake/stepmake/Po_rules.make28
-rw-r--r--stepmake/stepmake/Pod_rules.make32
-rw-r--r--stepmake/stepmake/Rules.make39
-rw-r--r--stepmake/stepmake/Script_files.make10
-rw-r--r--stepmake/stepmake/Scripts.make21
-rw-r--r--stepmake/stepmake/Substitute.make35
-rw-r--r--stepmake/stepmake/Targets.make194
-rw-r--r--stepmake/stepmake/Template.make50
-rw-r--r--stepmake/stepmake/Texinfo_rules.make41
-rw-r--r--stepmake/stepmake/Toplevel.make62
-rw-r--r--stepmake/stepmake/Variables.make160
-rw-r--r--stepmake/stepmake/WWW.make17
-rw-r--r--stepmake/stepmake/Yodl_rules.make26
-rw-r--r--test/Makefile48
-rw-r--r--test/VERSION (renamed from mi2mu/VERSION)2
-rw-r--r--test/out/dummy.dep0
-rw-r--r--tex/Makefile20
-rw-r--r--tex/fetdefs.tex93
-rw-r--r--tex/lily-ps-defs.tex4
-rw-r--r--tex/lilyponddefs.tex124
-rw-r--r--tex/mudela-book.tex34
-rw-r--r--tex/out/dummy.dep0
-rw-r--r--tex/titledefs.tex47
-rw-r--r--vimrc6
1144 files changed, 41924 insertions, 22224 deletions
diff --git a/ANNOUNCE b/ANNOUNCE
deleted file mode 100644
index 3b3c6fb30f..0000000000
--- a/ANNOUNCE
+++ /dev/null
@@ -1,73 +0,0 @@
-Keywords: midi notation music typesetting gnu font
-Subject: LilyPond 0.2 released - The GNU Project music typesetter
-
-GNU LilyPond - The GNU Project Music Typesetter
-
-
-WHAT IS LilyPond?
-
-GNU LilyPond is the GNU Project Music typesetter: it reads a music
-definition file and outputs formatted sheet music to a TeX file or
-(mechanical) performances to MIDI files.
-
-
-WHAT'S NEW SINCE VERSION 0.1?
-
-* LilyPond now includes a completely new music font: the Feta font.
- We were quite disappointed with available music fonts, so we rolled
- our own. We did our best to copy the best symbol designs available,
- and we think that we've succeeded in doing so. We're proud of the
- result, and we hope you agree, so go check it out!
-
-* More elegant output due to
-
- * better spacing
- * better line breaking
- * better font design
- * PostScript output for variable symbols
-
-* Lots of bugfixes
-
-* More robust, flexible, tweakable design
-
-* Better MIDI importing
-
-* Easier to use due to better shell scripts and input format
-enhancements
-
-* MusixTeX not needed anymore
-
-
-WHAT CAN LILYPOND DO?
-
-ASCII script input (mudela), with identifiers (for music reuse),
-customizable notenames.
-
-MIDI output lets you check if you have entered the correct notes.
-MIDI to Mudela conversion through the mi2mu program.
-
-Font size selectable (from 26pt downto 11 pt) for each score.
-Multiple staffs in one score. Each staff may have various different
-meters. Multiple voices within one staff (up to four handled
-graciously); beams optionally shared between voices. Multiple scores
-within one input file. Each score is output to a different file.
-
-Beams, slurs, chords, super/subscripts (accents and text), general
-n-plet (triplet, quadruplets, etc.), lyrics, transposition, dynamics
-(both absolute and hairpin style), clef changes, meter changes,
-cadenza-mode, key changes, repeat bars.
-
-Integration with LaTeX through Perl scripts.
-
-
-MORE INFO
-
-Sources for this project are on
-
- ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe)
- ftp://alpha.gnu.org/gnu/ (US)
-
-More detailed info and examples can be found on the webpage at
-
- http://www.stack.nl/~hanwen/lilypond/index.html
-
diff --git a/ANNOUNCE-0.1 b/ANNOUNCE-0.1
index 9f7d6e2e37..8ed22c92be 100644
--- a/ANNOUNCE-0.1
+++ b/ANNOUNCE-0.1
@@ -22,7 +22,7 @@ You can see some babyfood, diapers and pictures at
http://www.stack.nl/~hanwen/lilypond/index.html
-You can send your congratulations to Janneke (jan@digicash.com) and
+You can send your congratulations to Janneke (janneke@gnu.org) and
Wendy (hanwen@stack.nl)
diff --git a/ANNOUNCEMENT b/ANNOUNCEMENT
new file mode 100644
index 0000000000..33190c9cf2
--- /dev/null
+++ b/ANNOUNCEMENT
@@ -0,0 +1,102 @@
+Keywords: midi notation music typesetting gnu font engraving
+Subject: GNU LilyPond 1.0 released - The Music Typesetter
+
+GNU LilyPond - The Music Typesetter
+
+
+WHAT IS LilyPond?
+
+LilyPond is the GNU Project music typesetter. This program can print
+beautiful sheet music from a music definition file. It can also play
+performances to a MIDI file.
+
+
+WHAT'S NEW SINCE VERSION 0.1?
+
+* LilyPond now includes a completely new music font: the Feta font.
+ We were quite disappointed with available music fonts, so we rolled
+ our own. We did our best to copy the best symbol designs available,
+ and we think that we've succeeded in doing so. We're proud of the
+ result, and we hope you agree, so go check it out!
+
+* More elegant output due to
+
+ * more sophisticated beam/slur formatting
+ * better spacing
+ * better line breaking
+ * better font design
+ * PostScript output for variable symbols
+
+* Lots of bugfixes
+
+* More robust, flexible and tweakable design
+
+* Better MIDI file importing
+
+* Easier to use due to better shell scripts and input format
+enhancements
+
+* MusixTeX is not needed anymore
+
+* Faster
+
+
+
+FEATURES
+
+* Multiple staffs, polyphonic music (more voices on one staff),
+Polymetric music.
+
+* Support for full orchestral score: Hara_kiri systems (lines with
+only rests are automatically skipped), multi-measure rests, bar
+numbering, brackets at the left.
+
+* Optimal beam slopes, slur/notehead collision resolution, dashed
+slurs. Formatting parameters are runtime tunable
+
+* Very beautiful symbols. Variable size symbols generated on the fly
+as embedded postscript.
+
+* MIDI output
+
+* Optimal linebreaking, manual intervention possible. Linelength is
+settable per line.
+
+* Readable yet very fast to type input language. With configurable
+note names and identifiers. Comes with an emacs-mode
+
+* With lots of examples (among others a fragment of Van Beethoven's
+Coriolan, J.S.Bach Cello Suite II, F. Schubert "Leise flehen meine
+Lieder")
+
+* Runs on UNIX and Windows-32.
+
+* Easy generation of titling.
+
+* WWW browsable documentation.
+
+* Support for Urtext: separation of modern and original interpretation.
+
+* Polyphonic music (with automatic collision resolution)
+
+* Spacing and collision resolution of accidentals and syllables is
+done automatically
+
+* Internationalisation support (Italian, Dutch)
+
+* Multiple font sizes within one piece
+
+* Integration with LaTeX and YODL
+
+
+MORE INFO
+
+Sources for this project are on
+
+ ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe)
+ ftp://ftp.gnu.org/pub/gnu/
+
+More detailed info and examples can be found on the webpage at
+
+ http://www.cs.uu.nl/~hanwen/lilypond/index.html
+
diff --git a/AUTHORS.txt b/AUTHORS.txt
index 41e559eb68..ebf1db1135 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -1,132 +1,50 @@
-
-
-AUTHORS(1) LilyPond documentation AUTHORS(1)
-
-
-NAME
- AUTHORS - who did what on GNU LilyPond?
-
-DESCRIPTION
- This file lists authors of GNU LilyPond, and what they
- wrote.
-
-AUTHORS
- o Han-Wen Nienhuys <hanwen@cs.ruu.nl>,
- http://www.cs.ruu.nl/people/hanwen
- Main author.
-
- o Jan Nieuwenhuizen <jan@digicash.com>,
- http://www.digicash.com/~jan
- Main author
-
-CONTRIBUTORS
- o Mats Bengtsson <matsb@s3.kth.se>,
- parts of clef-reg.cc, clef-item.cc swedish notenames,
- testing, general comments, duration logs/longa/brevis
- etc
-
- o Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>,
- TeX titling and lytodvi.sh
-
- o Shay Rojanski
- Some mudela source.
-
- o Werner Lemberg <xlwy01@uxp1.hrz.uni-dortmund.de>,
- misc bugfixes, some Beam and Stem code.
-
- o Donald Ervin Knuth, http://www.cs.stanford.edu/~?
- mf/ital-*.mf (these were taken from the CM fonts)
-
- o Alexandre Oliva <oliva@dcc.unicamp.br>,
- http://sunsite.unicamp.br/~oliva
- testing
-
- o Anthony Fok <foka@debian.org>,
- debian package: debian/*
-
- o Franc,ois Pinard <pinard@iro.umontreal.ca>,
- Documentation/Vocab*, internationalization stuff
-
- o Neil Jerram <nj104@cus.cam.ac.uk>.
- Documentation/Vocab*
-
- o David R. Linn <drl@vuse.vanderbilt.edu>,
- Mailing list maintenance.
-
- Your name could be here! If you want to help, then take a
- look at the SMALLISH PROJECTS section of in the file TODO.
- Some do not involve coding C++
-
-
-
-
-6/Apr/98 LilyPond 0.1.65 1
-
-
-
-
-
-AUTHORS(1) LilyPond documentation AUTHORS(1)
-
-
- [And of course we sincerely thank J.S.Bach, F.Schubert, T.
- Merula and W.A.Mozart for their beautiful music]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-6/Apr/98 LilyPond 0.1.65 2
-
-
+TITLE INFORMATION: AUTHORS - who did what on GNU LilyPond?
+
+Contents
+
+This file lists authors of GNU LilyPond, and what they wrote.
+This list is alphabetically ordered.
+
+o Mats Bengtsson <matsb@s3.kth.se>,
+ http://www.s3.kth.se/~matsb
+ clef stuff, key stuff, swedish notenames, testing, general
+ comments.
+o Eric Bullinger <eric@aut.ee.ethz.ch>,
+ accidental transposition.
+o Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>,
+ TeX titling and lytodvi.sh
+o Anthony Fok <foka@debian.org>,
+ debian package: debian/*
+o Neil Jerram <nj104@cus.cam.ac.uk>.
+ Documentation/Vocab*
+o Donald Ervin Knuth, http://www.cs-staff.stanford.edu/~knuth
+ mf/ital-*.mf (these were taken from the CM fonts)
+o Werner Lemberg <xlwy01@uxp1.hrz.uni-dortmund.de>,
+ misc bugfixes, some Beam and Stem code.
+o David R. Linn <drl@vuse.vanderbilt.edu>,
+ Mailing list maintenance.
+o Han-Wen Nienhuys <hanwen@cs.uu.nl>,
+ http://www.cs.uu.nl/~hanwen
+
+ Main author.
+o Jan Nieuwenhuizen <janneke@gnu.org>,
+ http://www.digicash.com/~jan
+
+ Main author
+o Alexandre Oliva <oliva@dcc.unicamp.br>,
+ http://sunsite.unicamp.br/~oliva
+ testing
+o Franc,ois Pinard <pinard@iro.umontreal.ca>,
+ Documentation/Vocab*, started internationalization stuff
+o Jeffrey B. Reed <daboys@bga.com>,
+ Windows-NT support.
+o Shay Rojanski
+ Some mudela source.
+
+Your name could be here! If you want to help, then take a look at the
+SMALLISH PROJECTS section of in the file TODO. Some do not involve
+coding C++
+
+[And of course we sincerely thank J.S.Bach, F.Schubert, T. Merula and
+W.A.Mozart for their beautiful music]
diff --git a/BUGS b/BUGS
index f7da705fa8..36b24a234a 100644
--- a/BUGS
+++ b/BUGS
@@ -1,32 +1,40 @@
-input/abbrev.ly
+
+This documents serious bugs
********
-\score{
- \melodic{
- [c2 c]
- }
-}
-lilypond: ../flower/include/varray.hh:141: struct Rhythmic_grouping *& Array<Rhythmic_grouping *>::elem(int) const: Assertion `i >=0&&i<size_' failed.
-Aborted (core dumped)
-*********
-\score{
- \melodic{
- [c]
+
+
+[All platforms]
+
+When dealing with beaming that is not correct (eg quarter notes in
+beams.), you can get the following assert. This is a serious bug, but
+a good solution is quite a lot of work.
+
+ \score{
+ \melodic{
+ [c2 c]
+ }
}
-}
-lilypond: ../flower/include/cursor.tcc:104: int Cursor<void *>::operator -(class Cursor<void *>) const: Assertion `c.ok()' failed.
-Aborted (core dumped)
+results in
+ lilypond: ../flower/include/varray.hh:141: struct Rhythmic_grouping *& Array<Rhythmic_grouping *>::elem(int) const: Assertion `i >=0&&i<size_' failed.
-[GNU libc]
+And this
-The GNU extension memmem() is known to be buggy on linux libc 5.0.9
-and before. Glibc upto 2.0.5 also has problems with memmem (), but
-these should not affect LilyPond.
+ \score{
+ \melodic{
+ [c]
+ }
+ }
+in
-[Linux Intel]
+ lilypond: ../flower/include/cursor.tcc:104: int Cursor<void *>::operator -(class Cursor<void *>) const: Assertion `c.ok()' failed.
+ Aborted (core dumped)
+
+
+[Linux libg++ 2.7]
LilyPond occasionally crashes while parsing the initialisation files.
This is a very obscure bug, and usually entering the commandline
@@ -49,11 +57,9 @@ Typical stacktrace:
Includable_lexer::new_input (this=0x8209a00, s={strh_ = {
:
+This behaviour has been observed with machines that have old libg++
+versions (LinuxPPC feb '98, RedHat 4.x).
-I get bitten by this every once in a while, and I am very interested
-in hints what might be wrong. This problem has only been identified
-with libc-5.3 and libc-5.4 platforms, so you might try upgrading to
-6.0, ie. GNU libc-2.
[Linux Intel]
diff --git a/DEDICATION b/DEDICATION
index 895b59cc0c..b6a224e0b3 100644
--- a/DEDICATION
+++ b/DEDICATION
@@ -5,10 +5,10 @@
met through music.
- Those deserving special mention (in no particular order):
+ Those deserving special mentioning (in no particular order):
Esther, Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn,
-Maartje, Suzanne, Ilse (gee, again?), Bonne and last (but certainly
-not least) Janneke!
+Maartje, Suzanne, Ilse (gee, again?) and last (but certainly not
+least) Janneke!
HWN
@@ -21,7 +21,7 @@ Eva, Roos, Judith, Tim, and, of course, Wendy!
Of course, our other friends in the `Eindhovens Jongeren Ensemble'
-(http://www.cs.ruu.nl/~hanwen/eje.html) cannot go unmentioned either.
+(http://www.cs.uu.nl/~hanwen/eje.html) cannot go unmentioned either.
--- * ---
diff --git a/Documentation/AUTHORS.pod b/Documentation/AUTHORS.pod
deleted file mode 100644
index 538b9c1852..0000000000
--- a/Documentation/AUTHORS.pod
+++ /dev/null
@@ -1,75 +0,0 @@
-=head1 NAME
-
-AUTHORS - who did what on GNU LilyPond?
-
-=head1 DESCRIPTION
-
-This file lists authors of GNU LilyPond, and what they wrote.
-
-=head1 AUTHORS
-
-=over 4
-
-=item * Han-Wen Nienhuys <hanwen@cs.ruu.nl>, http://www.cs.ruu.nl/people/hanwen
-
-Main author.
-
-=item * Jan Nieuwenhuizen <jan@digicash.com>, http://www.digicash.com/~jan
-
-Main author
-
-=back
-
-=head1 CONTRIBUTORS
-
-=over 4
-
-=item * Mats Bengtsson <matsb@s3.kth.se>,
-
-parts of clef-reg.cc, clef-item.cc swedish notenames, testing, general
-comments, duration logs/longa/brevis etc
-
-=item * Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>,
-
-TeX titling and lytodvi.sh
-
-=item * Shay Rojanski
-
-Some mudela source.
-
-=item * Werner Lemberg <xlwy01@uxp1.hrz.uni-dortmund.de>,
-
-misc bugfixes, some Beam and Stem code.
-
-=item * Donald Ervin Knuth, http://www.cs.stanford.edu/~?
-
-mf/ital-*.mf (these were taken from the CM fonts)
-
-=item * Alexandre Oliva <oliva@dcc.unicamp.br>, http://sunsite.unicamp.br/~oliva
-
-testing
-
-=item * Anthony Fok <foka@debian.org>,
-
-debian package: debian/*
-
-=item * Franc,ois Pinard <pinard@iro.umontreal.ca>,
-
-Documentation/Vocab*, internationalization stuff
-
-=item * Neil Jerram <nj104@cus.cam.ac.uk>.
-
-Documentation/Vocab*
-
-=item * David R. Linn <drl@vuse.vanderbilt.edu>,
-
-Mailing list maintenance.
-
-=back
-
-Your name could be here! If you want to help, then take a look at the
-SMALLISH PROJECTS section of in the file F<TODO>. Some do not involve
-coding C++
-
-[And of course we sincerely thank J.S.Bach, F.Schubert, T. Merula and
-W.A.Mozart for their beautiful music]
diff --git a/Documentation/BLURB.in b/Documentation/BLURB.in
new file mode 100644
index 0000000000..68ca4dc05e
--- /dev/null
+++ b/Documentation/BLURB.in
@@ -0,0 +1,6 @@
+LilyPond is the GNU Project music typesetter. This program can print
+beautiful sheet music from a music definition file. It can also play
+mechanical performances to a MIDI file. Features include multiple
+staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,
+beams, slurs, triplets, formatting scores, part extraction. It includes
+a nice font of musical symbols.
diff --git a/Documentation/COPERTINA.in b/Documentation/COPERTINA.in
new file mode 100644
index 0000000000..664aec837e
--- /dev/null
+++ b/Documentation/COPERTINA.in
@@ -0,0 +1,7 @@
+LilyPond è il tipografo musicale del progetto GNU. Questo programma è
+fatto per stampare belle partiture da un documento definito per musica.
+Può anche suonare le prestazioni meccaniche ad un documento MIDI. Le
+caratteristiche includono i personali multipli, tester, chiavi, suoni,
+lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,
+segni di formattazione, estrazione delle parte. È compresa una seria
+completa di caratteri musicali.
diff --git a/Documentation/COPERTINA.yo b/Documentation/COPERTINA.yo
new file mode 100644
index 0000000000..b4e0e0acef
--- /dev/null
+++ b/Documentation/COPERTINA.yo
@@ -0,0 +1,9 @@
+COMMENT(silly... DEFINEMACRO(pic)(1)(url(ARG1)(ARG1.gif)))
+DEFINEMACRO(pic)(1)(verbinclude(ARG1.in))
+
+nsect(LilyPond è il tipografo musicale del progetto GNU. )
+
+includefile(COPERTINA.in)
+nl()
+pic(schermo)
+
diff --git a/Documentation/CodingStyle.pod b/Documentation/CodingStyle.yo
index 0f57d3e1b3..fb74fdfc2e 100644
--- a/Documentation/CodingStyle.pod
+++ b/Documentation/CodingStyle.yo
@@ -1,17 +1,16 @@
-=head1 NAME
+report(CodingStyle - standards while programming for GNU
+LilyPond)(Han-Wen Nienhuys and Jan Nieuwenhuizen)()()
-CodingStyle - standards while programming for GNU LilyPond
-
-=head1 DESCRIPTION
+nsect(DESCRIPTION)
We use these standards while doing programming for GNU LilyPond. If
you do some hacking, we appreciate it if you would follow this rules,
but if you don't, we still like you.
Functions and methods do not return errorcodes, but use assert for
-checking status.
+checking status.
-=head2 Quote:
+quote(
A program should be light and agile, its subroutines
connected like a string of pearls. The spirit and intent of
@@ -34,26 +33,30 @@ in a state of disorder and confusion. The only way to correct
this is to rewrite the program.
-- Geoffrey James, "The Tao of Programming"
+)
-=head2 LANGUAGES
+nsubsect(LANGUAGES)
C++, /bin/sh and python are preferred. Perl is not.
-=head2 FILES
+nsubsect(FILES)
Definitions of classes that are only accessed via pointers
(*) or references (&) shall not be included as include files.
filenames
+verb(
".hh" Include files
".cc" Implementation files
".icc" Inline definition files
".tcc" non inline Template defs
+)
in emacs:
+verb(
(setq auto-mode-alist
(append '(("\\.make$" . makefile-mode)
("\\.cc$" . c++-mode)
@@ -63,23 +66,26 @@ in emacs:
("\\.pod$" . text-mode)
)
auto-mode-alist))
+)
-The class Class_name_abbreviation is coded in F<class-name-abbr.*>
+The class Class_name_abbreviation is coded in file(class-name-abbr.*)
-=head2 INDENTATION
+nsubsect(INDENTATION)
in emacs:
-
+verb(
(add-hook 'c++-mode-hook
'(lambda() (c-set-style "gnu")
)
)
+)
-If you like using font-lock, you can also add this to your F<.emacs>:
+If you like using font-lock, you can also add this to your file(.emacs):
+verb(
(setq font-lock-maximum-decoration t)
(setq c++-font-lock-keywords-3
(append
@@ -87,21 +93,26 @@ If you like using font-lock, you can also add this to your F<.emacs>:
'(("\\b\\([a-zA-Z_]+_\\)\\b" 1 font-lock-variable-name-face)
("\\b\\([A-Z]+[a-z_]+\\)\\b" 1 font-lock-type-face))
))
+)
-=head2 CLASSES and TYPES:
+nsubsect(CLASSES and TYPES:)
+verb(
This_is_a_class
AClass_name (for Abbreviation_class_name)
+)
-=head2 MEMBERS
+nsubsect(MEMBERS)
+verb(
Class::member()
Type Class::member_type_
Type Class::member_type()
+)
-the C<type> is a Hungarian notation postfix for C<Type>. See below
+the code(type) is a Hungarian notation postfix for code(Type). See below
-=head2 MACROS
+nsubsect(MACROS)
Macros should be written completely in uppercase
@@ -109,19 +120,21 @@ The code should not be compilable if proper macro declarations are not
included.
Don't laugh. It took us a whole evening/night to figure out one of
-these bugs.
+these bugs, because we had a macro that looked like
+code(DECLARE_VIRTUAL_FUNCTIONS()).
-=head2 BROKEN CODE
+nsubsect(BROKEN CODE)
Broken code (hardwired dependencies, hardwired constants, slow
-algorithms and obvious limitations) should be marked as such:
-either with a verbose TODO, or with a short "ugh" comment.
+algorithms and obvious limitations) should be marked as such: either
+with a verbose TODO, or with a short "ugh" comment.
-=head2 COMMENTS
+nsubsect(COMMENTS)
The source is commented in the DOC++ style. Check out doc++ at
-http://www.zib.de/Visual/software/doc++/index.html
+lurl(http://www.zib.de/Visual/software/doc++/index.html)
+verb(
/*
C style comments for multiline comments.
They come before the thing to document.
@@ -157,16 +170,17 @@ http://www.zib.de/Visual/software/doc++/index.html
data_member_ = 121; // ugh
}
};
-
+)
Unfortunately most of the code isn't really documented that good.
-=head2 MEMBERS (2)
+nsubsect(MEMBERS (2))
Standard methods:
+verb(
///check that *this satisfies its invariants, abort if not.
void OK() const
@@ -186,31 +200,37 @@ Standard methods:
/// replace some data of *this
set (..)
+)
-=head2 Constructor
+nsubsect(Constructor)
Every class should have a default constructor.
Don't use non-default constructors if this can be avoided:
+verb(
Foo f(1)
+)
is less readable than
+verb(
Foo f;
f.x = 1
+)
or
- Foo f(Foo_convert::int_to_foo (1))
-
+verb(
+ Foo f(Foo_convert::int_to_foo (1))
+)
-=head1 HUNGARIAN NOTATION NAMING CONVENTION
+nsect(HUNGARIAN NOTATION NAMING CONVENTION)
-Proposed is a naming convention derived from the so-called I<Hungarian
-Notation>.
+Proposed is a naming convention derived from the so-called
+em(Hungarian Notation).
-=head2 Hungarian
+nsubsect(Hungarian)
The Hungarian Notation was conceived by or at least got its name from,
the hungarian programmer Charles Simonyi. It is a naming convention
@@ -224,11 +244,11 @@ where a particular object implies a specific interface (a set of
member functions, perhaps some redefined operators), and for
accounting heap allocated memory pointers and links.
-=head2 Advantages
+nsubsect(Advantages)
Another fun quote from Microsoft Secrets:
-
+quote(
The Hungarian naming convention gives developers the ability
to read other people's code relatively easily, with a minmum
number of comments in the source code. Jon De Vann estimated
@@ -237,233 +257,150 @@ Another fun quote from Microsoft Secrets:
understandable due to the use of Hungarian: "if you look at
our source code, you also notice very few comments. Hungarian
gives us the ability to go in and read code..."
+)
Wow! If you use Hungarian you don't have to document your software!
Just think of the hours I have wasted documenting while this "silver bullet"
-existed. I feel so stupid and ashamed! [Didn't MMM-Brooks say `There is
-no silver bullet?' --HWN]
-
-
-=head2 Disadvantages
-
-=over 5
-
-=item *
-
-more keystrokes (disk space!)
-
-=item *
-
-it looks silly C<get_slu_p()>
-
-=item *
-
-it looks like code from micro suckers
-
-=item *
-
-(which) might scare away some (otherwise good?)
-progammers, or make you a paria in the free
-software community
-
-=item *
-
-it has ambiguities
-
-=item *
-
-not very useful if not used consistently
-
-=item *
-
-usefullness in I<very large> (but how many classes is very large?)
-remains an issue.
-
-=back
-
-
-
-=head2 Proposal
-
-=over 5
-
-=item *
-
-learn about cut and paste / use emacs or vi
-or lean to type using ten fingers
-
-=item *
-
-Use emacs dabbrev-expand, with dabbrev-case-fold-search set to nil.
-
-=item *
-
-use no, or pick less silly, abbrvs.
-
-=item *
-
-use non-ambiguous postfixes C<identifier_name_type_modifier[_modifier]>
-
-=item *
-
-There is no need for Hungarian if the scope of the variable is small,
-ie. local variables, arguments in function definitions (not
-declarations).
-
-=back
-
-Macros, C<enum>s and C<const>s are all uppercase,
+existed. I feel so stupid and ashamed! (Didn't MMM-Brooks say `There is
+no silver bullet?' --HWN)
+
+
+nsubsect(Disadvantages)
+
+itemize(
+it()more keystrokes (disk space!)
+it()it looks silly code(get_slu_p())
+it()it looks like code from micro suckers
+it()(which) might scare away some (otherwise good?)
+ progammers, or make you a paria in the free
+ software community
+it()it has ambiguities
+it()not very useful if not used consistently
+it()usefullness in em(very large) (but how many classes is very large?)
+ remains an issue.
+)
+
+nsubsect(Proposal)
+
+itemize(
+it()learn about cut and paste / use emacs or vi
+ or lean to type using ten fingers
+it()Use emacs dabbrev-expand, with dabbrev-case-fold-search set to nil.
+it()use no, or pick less silly, abbrvs.
+it()use non-ambiguous postfixes code(identifier_name_type_modifier[_modifier])
+it()There is no need for Hungarian if the scope of the variable is small,
+ ie. local variables, arguments in function definitions (not
+ declarations).
+)
+
+Macros, code(enum)s and code(const)s are all uppercase,
with the parts of the names separated by underscores.
-=head2 Types
-
-=over 5
-
-=item C<byte>
-
-
-unsigned char. (The postfix _by is ambiguous)
-
-=item C<b>
-
-
-bool
-
-=item C<bi>
-
-bit
-
-=item C<ch>
-
-char
-
-=item C<f>
-
-float
-
-=item C<i>
-
-signed integer
-
-=item C<str>
-
-string class
-
-=item C<sz>
-
-Zero terminated c string
-
-=item C<u>
-
-unsigned integer
-
-=back
-
-=head2 User defined types
-
-
+nsubsect(Types)
+
+description(
+dit(code(byte))
+ unsigned char. (The postfix _by is ambiguous)
+dit(code(b))
+ bool
+dit(code(bi))
+ bit
+dit(code(ch))
+ char
+dit(code(f))
+ float
+dit(code(i))
+ signed integer
+dit(code(str))
+ string class
+dit(code(sz))
+ Zero terminated c string
+dit(code(u))
+ unsigned integer
+)
+
+nsubsect(User defined types)
+
+verb(
/** Slur blah. blah.
(slur)
*/
class Slur {};
Slur* slur_p = new Slur;
+)
-=head2 Modifiers
+nsubsect(Modifiers)
The following types modify the meaning of the prefix.
These are preceded by the prefixes:
-=over 5
-
-=item C<a>
-
-array
-
-=item C<array>
-
-user built array.
-
-=item C<c>
-
-const. Note that the proper order is C<Type const> i.s.o. C<const Type>
-
-=item C<C>
-
-A const pointer. This would be equivalent to C<_c_l>, but since any
-"const" pointer has to be a link (you can't delete a const pointer),
-it is superfluous.
-
-=item C<l>
-
-temporary pointer to object (link)
-
-=item C<p>
-
-pointer to newed object
-
-=item C<r>
-
-reference
-
-=back
-
-=over 5
-
-=head2 Adjective
+description(
+dit(code(a))
+ array
+dit(code(array))
+ user built array.
+dit(code(c))
+ const. Note that the proper order is code(Type const)
+ i.s.o. code(const Type)
+dit(code(C))
+ A const pointer. This would be equivalent to code(_c_l), but since any
+ "const" pointer has to be a link (you can't delete a const pointer),
+ it is superfluous.
+dit(code(l))
+ temporary pointer to object (link)
+dit(code(p))
+ pointer to newed object
+dit(code(r))
+ reference
+)
+
+nsubsect(Adjective)
Adjectives such as global and static should be spelled out in full.
They come before the noun that they refer to, just as in normal english.
+verb(
foo_global_i: a global variable of type int commonly called "foo".
+)
static class members do not need the static_ prefix in the name (the
Class::var notation usually makes it clear that it is static)
-=item C<loop_i>
-
-Variable loop: an integer
-
-=item C<u>
-
-Temporary variable: an unsigned integer
-
-=item C<test_ch>
-
-Variable test: a character
-
-=item C<first_name_str>
-
-Variable first_name: a String class object
-
-=item C<last_name_ch_a>
-
-Variable last_name: a C<char> array
-
-=item C<foo_i_p>
-
-Variable foo: an C<Int*> that you must delete
-
-=item C<bar_i_l>
-
-Variable bar: an C<Int*> that you must not delete
-
-=back
+description(
+dit(code(loop_i))
+ Variable loop: an integer
+dit(code(u))
+ Temporary variable: an unsigned integer
+dit(code(test_ch))
+ Variable test: a character
+dit(code(first_name_str))
+ Variable first_name: a String class object
+dit(code(last_name_ch_a))
+ Variable last_name: a code(char) array
+dit(code(foo_i_p))
+ Variable foo: an code(Int*) that you must delete
+dit(code(bar_i_l))
+ Variable bar: an code(Int*) that you must not delete
+)
Generally default arguments are taboo, except for nil pointers.
The naming convention can be quite conveniently memorised, by
expressing the type in english, and abbreviating it
+verb(
static Array<int*> foo
+)
-C<foo> can be described as "the static int-pointer user-array", so you get
+code(foo) can be described as "the static int-pointer user-array", so you get
+verb(
foo_static_l_arr
-
+)
-=head1 MISCELLANEOUS
+nsect(MISCELLANEOUS)
For some tasks, some scripts are supplied, notably creating patches, a
mirror of the website, generating the header to put over cc and hh
@@ -473,10 +410,12 @@ Use them.
The following generic identifications are used:
+verb(
up == 1
left == -1
right == 1
down == -1
+)
Intervals are pictured lying on a horizontal numberline (Interval[-1]
is the minimum). The 2D plane has +x on the right, +y pointing up.
diff --git a/Documentation/FLAPTEKST.in b/Documentation/FLAPTEKST.in
new file mode 100644
index 0000000000..90ee5e5d21
--- /dev/null
+++ b/Documentation/FLAPTEKST.in
@@ -0,0 +1,7 @@
+LilyPond is de muziekzetter van het GNU Project. Dit programma drukt
+prachtige bladmuziek volgens een muzikaal definitie bestand. Ook kan
+het een mechanische uitvoering afspelen naar een MIDI bestand.
+Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,
+sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,
+balken, boogjes, triolen, partituren, en uittreksels voor individuele
+partijen. Een fraaie set muziektekens is inbegrepen.
diff --git a/Documentation/FLAPTEKST.yo b/Documentation/FLAPTEKST.yo
new file mode 100644
index 0000000000..4513c045e3
--- /dev/null
+++ b/Documentation/FLAPTEKST.yo
@@ -0,0 +1,9 @@
+COMMENT(silly...DEFINEMACRO(pic)(1)(url(ARG1)(ARG1.gif)))
+DEFINEMACRO(pic)(1)(verbinclude(ARG1.in))
+
+nsect(LilyPond -- De Muziek Zetter van het GNU Project)
+
+includefile(FLAPTEKST.in)
+nl()
+pic(scherm)
+
diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod
deleted file mode 100644
index 741db8d433..0000000000
--- a/Documentation/INSTALL.pod
+++ /dev/null
@@ -1,341 +0,0 @@
-=head1 NAME
-
-INSTALL - installing GNU LilyPond
-
-=head1 DESCRIPTION
-
-This page documents installation and compilation of GNU LilyPond
-
-=head1 ABSTRACT
-
-You do something which looks remotely like
-
- configure
- make
- make install
-
-The detailed instructions follow here.
-
-=head1 PREREQUISITES
-
-For compilation you need.
-
-=over 5
-
-=item *
-
-A GNU system: GNU LilyPond is known to run on these GNU systems: Linux
-(PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and Solaris.
-
-If you have the Cygnus WINDOWS32 port of the GNU utils, it will even
-work in Windows NT/95, but we don't promise to support it.
-
-=item *
-
-GNU C++ version 2.7 or newer (yes, 2.8 is fine).
-
-=item *
-
-Python
-
-=back
-
-=head1 RUNNING
-
-GNU LilyPond does use a lot of resources. For operation you need the following:
-
-=over 5
-
-=item *
-
-TeX
-
-=item *
-
-A PostScript printer and/or viewer (such as Ghostscript) is strongly
-recommended. Xdvi will show all embedded PostScript too if you have
-Ghostscript installed.
-
-=back
-
-=head1 RECOMMENDED
-
-Although not strictly necessary, these are recommended to have.
-
-=over 5
-
-=item *
-
-GNU make.
-
-=item *
-
-Flex (version 2.5.4 or newer).
-
-=item *
-
-Bison (version 1.25 or newer).
-
-=item *
-
-Perl-5. Most documentation was created with the perl's Plain Old
-Documentation. (I use 5.003)
-
-=item *
-
-Python. Although perl is nice, python is better. We will shift
-towards python for build scripts
-
-=item *
-
-GNU find
-
-=item *
-
-A fast computer (a full page of music typically takes 1 minute on my
-486/133, using the B<--enable-checking> compile. It's lot slower than
-most MusiXTeX preprocessors)
-
-=back
-
-=head1 WEBSITE
-
-If you want to auto-generate Lily's website, you'll need some additional
-conversion tools.
-
-=over 5
-
-=item *
-
-xpmtoppm (from the Portable Bitmap Utilities) (included within the
-RedHat package libgr-progs).
-
-=item *
-
-Bib2html (http://pertsserver.cs.uiuc.edu/~hull/bib2html.)
-Which, in turn depends on Man2htlm (http://askdonald.ask.uni-karlsruhe.de/
-hppd/hpux/Networking/WWW/Man2html-1.05) for proper installation (ugh).
-TeTeX users, don't forget to rerun texhash.
-
-=back
-
-=head1 CONFIGURING and COMPILING
-
-to install GNU LilyPond, simply type:
-
- configure
- make
- make install
-
-This will install the following files:
-
- /usr/local/man/man1/mi2mu.1
- /usr/local/man/man1/convert-mudela.1
- /usr/local/man/man1/mudela-book.1
- /usr/local/man/man1/lilypond.1
- /usr/local/lib/libflower.{so,a}
- /usr/local/bin/lilypond
- /usr/local/bin/mi2mu
- /usr/local/share/lilypond/*
- /usr/lib/texmf/texmf/tex/lilypond/*
-
-The TeX include directory is detected dynamically, but it can be
-adjusted with B<--enable-tex-prefix> and B<--enable-tex-dir>. The
-above assumes that you are root and have the GNU development tools,
-and your make is GNU make. If this is not the case, you can adjust
-your environment variables to your taste:
-
- export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR"
- configure
-
-C<CPPFLAGS> are the preprocessor flags.
-
-the configure script is Cygnus configure, and it will accept
-B<--help>. If you are not root, you will probably have to make it with
-
- configure --prefix=/home/me_myself_and_I/
-
-In this case, you will have to set MFINPUTS, and TEXINPUTS accordingly.
-
-If you want to install GNU LilyPond in F</usr/local>, and your TeX has
-no default hooks for local stuff (mine is broken too), you can do:
-
- configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf
-
-Since GNU LilyPond currently is beta, you are advised to also use
-
- --enable-debugging
- --enable-checking
-
-other options include:
-
-=over 4
-
-=item B<--enable-shared>
-
-Make a shared library (gnu/linux, solaris (?) only )
-
-=item B<--enable-printing>
-
-Enable debugging print routines (lilypond B<-d> option)
-
-=item B<--enable-optimise>
-
-Set maximum optimisation: compile with B<-O2>
-
-=item B<--enable-profiling>
-
-Compile with support for profiling
-
-=item B<--enable-tex-prefix>
-
-Set the directory where TeX and Metafont live
-
-=item B<--enable-tex-dir>
-
-Set then directory TeX input is in (detected as a subdir of
-tex-prefix). This should be a directory that is reachable both for
-tex and latex. On my system the best choice would be
-F</usr/lib/texmf/texmf/tex/generic//>.
-
-=item B<--enable-mf-dir>
-
-Set the directory mf input is in (idem). On my system the best
-choice would be F</usr/lib/texmf/texmf/fonts/source/public/>.
-
-=item B<--enable-config>
-
-Output to different configuration files. Needed for multi-platform
-builds
-
-
-=back
-
-All options are documented in the F<configure> help
-The option B<--enable-optimise> is recommended for Real Life usage.
-
-If you do
-
- make all
-
-everything will be compiled, but nothing will be installed. The
-resulting binaries can be found in the subdirectories F<out/> (which
-contain all files generated during compilation).
-
-=head1 CONFIGURING FOR MULTIPLE PLATFORMS
-
-If you want to compile LilyPond with different configuration settings,
-then, you can use the B<--enable-config> option. Example: suppose I
-want to build with and without profiling. Then I'd use the
-following for the normal build,
-
- configure --prefix=~ --disable-optimise --enable-checking
- make
- make install
-
-and for the profiling version, I specify a different configuration.
-
- configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking
- make configuration=optprof
- make configuration=optprof install
-
-
-=head1 INSTALLING
-
-If you have done a successful C<make>, then a simple
-
- make install
-
-should do the trick.
-
-If you are doing an upgrade, please remember to remove obsolete .pk
-and .tfm files of the fonts. A script has been provided to do the
-work, see F<bin/clean-fonts.sh>.
-
-=head1 CAVEATS
-
-=over 5
-
-=item *
-
-The -O2 option to gcc triggers a gcc bug on DEC Alpha in dstream.cc. You
-should turn off this flag for this file.
-
-=item *
-
-Perl5.003 and Perl5.004 use different syntax for pod2html.
-
-=back
-
-=head1 EXAMPLE
-
-This is what I type in my xterm:
-
- lilypond someinput.ly
- tex someinput.tex
- xdvi someinput&
-
-This is what the output looks like over here:
-
- GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0
- Parsing ... [/home/hw/share/lilypond/init//
- <..etc..>
- init//performer.ly]]][input/kortjakje.ly]
- Creating elements ...[8][16][24][25]
- Preprocessing elements...
- Calculating column positions ... [14][25]
- Postprocessing elements...
- TeX output to someinput.tex ...
- Creating MIDI elements ...MIDI output to someinput.midi ...
-
-
- hw:~/musix/spacer$ xdvi someinput&
- [1] 855
-
-Check out the input files, some of them have comments
-Please refer to the man page for more information.
-
-=head1 REDHAT LINUX
-
-RedHat Linux users can compile an RPM. A spec file is in
-F<make/out/lilypond.spec>. You should install a gif file called
-F<lelie_icon.gif> along with the sources. You can generate this gif
-file by typing
-
- make gifs
-
-in the directory F<Documentation>.
-
-
-
-=head1 DEBIAN GNU/LINUX
-
-A Debian package is also available; contact Anthony Fok
-<foka@debian.org>. The build scripts are in the subdirectory debian/
-
-
-=head1 WINDOWS NT/95
-
-So, you're stuck with Windows, eh? Well, don't worry, you just
-need (to get) Cygnus' windows32 port of gnu development stuff;
-have a look at http://www.cygnus.com/gnu-win32.
-
-To make GNU LilyPond under, brr, aargh, shudder... windows32, well,
-simply type:
-
- bash configure
- make
-
-B<Note> If you rely on broken DOS/Windows tools such as pkzip/WinZIP
-to unpack the distribution, make sure the B<entire> source tree
-is unpacked correctly, in particular the empty out directories
-(F<flower/out>, F<lib/out> et. al.)
-
-=head1 AUTHORS
-
-Han-Wen Nienhuys <hanwen@cs.ruu.nl>
-
-Jan Nieuwenhuizen <jan@digicash.com>
-
-
-Have fun!
diff --git a/Documentation/MANIFESTO.pod b/Documentation/MANIFESTO.pod
deleted file mode 100644
index 58847a4d84..0000000000
--- a/Documentation/MANIFESTO.pod
+++ /dev/null
@@ -1,172 +0,0 @@
-=head1 NAME
-
-MANIFESTO -- Rationale behind the GNU LilyPond project
-
-=head1 DESCRIPTION
-
-
-GNU LilyPond was written with some considerations in mind:
-
-
-=over 4
-
-=item *
-
-Describing a well-defined language for defining music. We call
-this language (rather arrogantly) The Musical Definition Language
-(mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a
-TeX file.
-
-=item *
-
-Providing an easy-to-use interface for typesetting music in
-its broadest sense. This interface should be intuitive from a musical
-point of view. By broadest sense we mean: it is designed for music
-printed left to right in staffs, using notes to designate rythm and
-pitch.
-
-=item *
-
-Generating high-quality output. Ideally it should be of a professional
-quality. We'd like to render Herbert Chlapiks words, "Fine music
-setting is not possible without a knowledgeable printer," untrue.
-
-=item *
-
-Making a system which is fully tweakable. It should be possible to
-typeset a book on how not to typeset music.
-
-=back
-
-=head1 LILYPOND
-
-
-Further considerations while doing the programming
-
-=over 4
-
-=item *
-
-GNU LilyPond uses TeX for its output. This is not a key issue: in a
-future version, GNU LilyPond might bypass TeX, but at the moment TeX
-is convenient for producing output.
-
-=item *
-
-GNU LilyPond does not display notes directly, nor will it be rehacked
-to be used interactively. GNU LilyPond writes output to a file. It
-will not be extended to play music, or to recognize music.
-
-[As an aside, I am contemplating to create a library for rendering
-music, which is "X-capable", so that others can create interactive tools]
-
-=item *
-
-GNU LilyPond is intended to run on Unix platforms, but it should
-be portable to any platform which can run TeX and the GNU tools
-
-=item *
-
-GNU LilyPond is free. Commercial windows packages for setting music are
-abundant. Free musicprinting software is scarce. For more thoughts on
-this, please consult the F<gnu-music> documentation.
-
-=item *
-
-GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit
-broken systems.
-
-=back
-
-=head1 MUDELA
-
-The design of Mudela has been (perfect past tense, hopefully) an
-ongoing process, the most important criteria being:
-
-=over 4
-
-=item *
-
-define the (musical) message of the composer as unambiguously as possible.
-
-This means that, given a piece Mudela, it should be possible for a
-program to play a reasonable interpretation of the piece.
-
-It also means that, given a piece of Mudela, it should be possible for a
-program to print a score of the piece.
-
-=item *
-
-be intuitive, and easily readable (compared to, say, Musi*TeX input,
-or MIDI :-),
-
-=item *
-
-be easily writable in ASCII with a simple texteditor
-
-=back
-
-Other considerations were (and will be):
-
-=over 4
-
-=item *
-
-be able to edit the layout without danger of changing the original
-music (Urtext),
-
-=item *
-
-allow for adding different interpretations, again,
-without danger of changing the original,
-
-=item *
-
-easy to create a conductor's score,
-as well as the scores for all individual instruments,
-
-=item *
-
-provide simple musical manipulations, such as S<(i) extracting> a
-slice of music from a previously defined piece, S<(ii) extracting>
-only the rhythm from a piece of music, S<(iii) transposing>, etc.,
-
-=item *
-
-easy to comprehend to both programmers and others.
-
-=back
-
-One of the things that (might) be here would be: feasible to use in a
-graphic editor. We don't have experience with these beasts, so we
-don't know how to do this. Comments appreciated.
-
-Musical pieces could be
-
-=over 4
-
-=item *
-
-Orchestral scores, (eg Mahler)
-
-=item *
-
-piano pieces (eg. Schubert, Rachmaninov),
-
-=item *
-
-pop songs (lyrics and chords),
-
-=item *
-
-Gregorian chants,
-
-=item *
-
-Bach multivoice organ pieces,
-
-=item *
-
-Short excerpts to be used in musicological publications.
-
-=back
diff --git a/Documentation/MANIFESTO.yo b/Documentation/MANIFESTO.yo
new file mode 100644
index 0000000000..0bb3533763
--- /dev/null
+++ b/Documentation/MANIFESTO.yo
@@ -0,0 +1,97 @@
+
+article(MANIFESTO -- Rationale behind the GNU LilyPond project)(HWN
+and JCN)()
+
+sect(Goals for LilyPond)
+
+
+GNU LilyPond was written with some considerations in mind:
+
+
+itemize(
+it() Describing a well-defined language for defining music. We call
+ this language (rather arrogantly) The Musical Definition Language
+ (mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a
+ TeX file.
+it() Providing an easy-to-use interface for typesetting music in
+ its broadest sense. This interface should be intuitive from a musical
+ point of view. By broadest sense we mean: it is designed for music
+ printed left to right in staffs, using notes to designate rythm and
+ pitch.
+it()Generating high-quality output. Ideally it should be of a professional
+ quality. We'd like to render Herbert Chlapiks words, "Fine music
+ setting is not possible without a knowledgeable printer," untrue.
+it()Making a system which is fully tweakable. It should be possible to
+ typeset a book on how not to typeset music.
+)
+
+sect(Development constraints)
+
+
+Further considerations while doing the programming
+
+itemize(
+it()GNU LilyPond uses TeX for its output. This is not a key issue: in a
+ future version, GNU LilyPond might bypass TeX, but at the moment TeX
+ is convenient for producing output.
+it()GNU LilyPond does not display notes directly, nor will it be rehacked
+ to be used interactively. GNU LilyPond writes output to a file. It
+ will not be extended to play music, or to recognize music.
+ [As an aside, I am contemplating to create a library for rendering
+ music, which is "X-capable", so that others can create interactive tools]
+it()GNU LilyPond is intended to run on Unix platforms, but it should
+ be portable to any platform which can run TeX and the GNU tools
+it()GNU LilyPond is free. Commercial windows packages for setting music are
+ abundant. Free musicprinting software is scarce. For more thoughts on
+ this, please consult the file(gnu-music) documentation.
+it()GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit
+ broken systems.
+)
+
+sect(Goals for mudela)
+
+The design of Mudela has been (perfect past tense, hopefully) an
+ongoing process, the most important criteria being:
+
+itemize(
+it()define the (musical) message of the composer as unambiguously as possible.
+ This means that, given a piece Mudela, it should be possible for a
+ program to play a reasonable interpretation of the piece.
+
+ It also means that, given a piece of Mudela, it should be possible for a
+ program to print a score of the piece.
+it()be intuitive, and easily readable (compared to, say, Musi*TeX input,
+ or MIDI :-),
+it()be easily writable in ASCII with a simple texteditor
+)
+
+Other considerations were (and will be):
+
+itemize(
+it()be able to edit the layout without danger of changing the original
+ music (Urtext),
+it()allow for adding different interpretations, again,
+ without danger of changing the original,
+it()easy to create a conductor's score,
+ as well as the scores for all individual instruments,
+it()provide simple musical manipulations, such as em(i) extracting a
+ slice of music from a previously defined piece, em(ii) extracting
+ only the rhythm from a piece of music, em(iii) transposing, etc.,
+it()easy to comprehend to both programmers and others.
+)
+
+One of the things that (might) be here would be: feasible to use in a
+graphic editor. We don't have experience with these beasts, so we
+don't know how to do this. Comments appreciated.
+
+Musical pieces could be
+
+itemize(
+it()Orchestral scores, (eg Mahler)
+it()piano pieces (eg. Schubert, Rachmaninov),
+it()pop songs (lyrics and chords),
+it()Gregorian chants,
+it()Bach multivoice organ pieces,
+it()Short excerpts to be used in musicological publications.
+)
+
diff --git a/Documentation/Makefile b/Documentation/Makefile
index e8fe751ce9..5b2a1f6023 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -1,67 +1,23 @@
# Documentation/Makefile
-# subdir level:
-#
depth = ..
-#
-# identify module:
-#
NAME = Documentation
-SUBDIRS=man tex
+SUBDIRS=man tex pictures topdocs
-#
-
-# generic variables:
-#
-include ./$(depth)/make/Variables.make
-include ./$(depth)/make/Version.make
-include ./$(depth)/make/Files.make
-include ./$(depth)/make/Docrules.make
-#
-
-
-#
-DATAFILES = $(wildcard *.data)
-TEXTFILES = $(OUTPODFILES:.pod=$(DOTTEXT))
-GROFFFILES = $(OUTPODFILES:.pod=.1)
-HTMLFILES = $(OUTPODFILES:.pod=.html) $(datafiles)
+include $(depth)/make/Stepmake.make
default: do-doc
-#
-# list of distribution files:
-#
-XPMS=$(wildcard *.xpm)
-giffiles = $(addprefix $(outdir)/,$(XPMS:.xpm=.gif))
-
-gifs: $(giffiles)
-
-datafiles = $(addprefix $(outdir)/,$(DATAFILES:.data=.html))
-
-EXTRA_DISTFILES = $(XPMS) vocabulary.data vocabulary-forms.el automake.urgh\
- gnu-music-history
-
-# don't do DVI files. They can only be made if lily is installed
-do-doc: $(TEXTFILES)
-
-readme-topfiles:
- cd $(depth); for i in $(README_TOPFILES); do \
- ln -f $$i Documentation/$(outdir)/$$i$(DOTTEXT); done
-
-README_TOPFILES=NEWS DEDICATION TODO ANNOUNCE-0.1
-README_TXTFILES=$(addprefix $(outdir)/,$(addsuffix $(DOTTEXT), $(README_TOPFILES)))
+README_TOP_FILES=NEWS DEDICATION TODO ANNOUNCE-0.1
-local-WWW: $(HTMLFILES) readme-topfiles $(README_TXTFILES) $(giffiles)
+EXTRA_DIST_FILES = gnu-music-history TODO
-# generic targets and rules:
-#
-include $(depth)/make/Targets.make
-include $(depth)/make/Rules.make
+BLURBS=BLURB COPERTINA FLAPTEKST
+# INFO_FILES = $(outdir)/$(package).info
-# ugh
-check-doc-deps: do-doc
- @echo # hi
+OUTTEXINFO_FILES = $(outdir)/topinfo.texinfo $(outdir)/mutopia.texinfo
-doc: do-doc
+texinfo: $(OUTTEXINFO_FILES)
+include $(stepdir)/Documentation.shared.make
diff --git a/Documentation/PATCHES.pod b/Documentation/PATCHES.pod
deleted file mode 100644
index 723bd87573..0000000000
--- a/Documentation/PATCHES.pod
+++ /dev/null
@@ -1,138 +0,0 @@
-=head1 NAME
-
-PATCHES - track and distribute your code changes
-
-=head1 DESCRIPTION
-
-This page documents how to distribute your changes to GNU LilyPond
-
-=head1 ABSTRACT
-
-Distributing a change normally goes like this:
-
-=over 5
-
-=item *
-
-make your fix/add your code
-
-=item *
-
-Add changes to NEWS, and add yourself to Documentation/AUTHORS.pod
-
-=item *
-
-generate a patch,
-
-=item *
-
-e-mail your patch to one of the mailing lists
-gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org
-
-
-=back
-
-=head1 GENERATING A PATCH
-
-In F<VERSION>, set TOPLEVEL_MY_PATCH_LEVEL:
-
- VERSION:
- ...
- TOPLEVEL_MY_PATCH_LEVEL = jcn1
-
-In F<NEWS>, enter a summary of changes:
-
- NEWS:
- pl 0.1.48.jcn1
- - added PATCHES.pod
-
-Then, from the top of Lily's source tree, type
-
- make-patch
-
-which leaves your patch as F<./patch-0.1.48.jcn1>.
-
-If you didn't configure Lily using --srcdir, you can do:
-
- release
-
- tar-ball: ../patches/patch-0.1.48.jcn1.gz
- patch: ../patches/patch-0.1.48.jcn1.gz
- updeet: ../test/updeet
-
-=head1 PREREQUISITES
-
-For creating a patch you need
-
-=over 5
-
-=item *
-
-All items mentioned in F<INSTALL>. You're not going to send a patch
-that you haven't even built, right?
-
-=item *
-
-GNU Diff
-
-=item *
-
-Python (version 1.4 or newer).
-You can of course make a patch by hand, which would go something like:
-
- make distclean
- cd ..
- diff -urN lilypond-0.1.48 lilypond-0.1.48.jcn1 > patch-0.1.48.jcn1
-
-but there are handy python scripts available. If you're doing development,
-you'll need Python for other LilyPond scripts anyway.
-
-=item *
-
-The Lily directory structure, which looks like:
-
- lilypond-0.1.48/
- patches/
- releases/
- test/
-
-=back
-
-=head1 APPLYING PATCHES
-
-If you're following LilyPond development regularly, you probably want to
-download just the patch for each subsequent release.
-After downloading the patch (into the patches directory, of course), simply
-apply it:
-
- gzip -dc ../patches/patch-0.1.49.gz | patch -p1 -E
-
-and don't forget to make automatically generated files:
-
- autoconf 1)
- configure
-
-=head1 SYNCHRONISE
-
-If you're not very quick with sending your patch, there's a good chance
-that an new release of LilyPond comes available. In such a case (and
-sometimes for other unkown reasons :-), the maintainer will probably ask
-you to make a new patch against the latest release.
-Your best bet is to download the latest release, and apply your patch
-against this new source tree:
-
- cd lilypond-0.1.49
- gzip -dc ../patches/patch-0.1.48.jcn1.gz | patch -p1 -E
- autoconf 1)
- configure
-
-Then, make a patch as shown above.
-
-1) patches don't include automatically generated files, i.e. F<configure>
- and files generated by F<configure>.
-
-=head1 MAINTAINER
-
-Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-Just keep on sending those patches!
diff --git a/Documentation/README-W32.yo b/Documentation/README-W32.yo
new file mode 100644
index 0000000000..1523309d65
--- /dev/null
+++ b/Documentation/README-W32.yo
@@ -0,0 +1,753 @@
+article(LilyPond on W32)
+ (Jan Nieuwenhuizen and Jeffrey Reed)
+ ()
+
+No, there's no reason to be concered, Lily should work in
+Windows-NT(/95/98?) too. The setup may not be easy or smooth. This
+document will help you getting started.
+
+sect(DISCLAIMER)
+
+If you have the Cygnus gnu-windows32 port of the GNU utils, LilyPond
+will work in Windows-NT (/95/98?).
+
+We still recommend you use Unix. In particular, use GNU/Linux: We've
+been there, and we've seen it happen several times. It is bf(much)
+easier and quicker to install RedHat Linux and LilyPond than to
+obtain, compile and install all the necessary tools to compile and run
+LilyPond on Windows.
+
+``Ok, thanks for the suggestions. I can't run Linux or I don't want
+to run Unix. What can I expect?''
+
+itemize(
+it()LilyPond development is moving quite fast, and all developers use Unix.
+ Newly added features may require some attention to get them to work.
+it()LilyPond depends on a number of other packages that usually are
+ available on Unix boxes, but are not installed by default on Windows.
+)
+
+subsect(INSTALL)
+
+Like Yodl, LilyPond will now install/extract in a unix-like tree:
+verb(
+ usr/[local/]bin/
+ usr/[local/]share/lilypond/*
+)
+etc.
+
+Both Yodl and Lily run in a the unix-like Cygnus gnu-windows environment;
+hopefully Cygnus will adopt the file(/usr/[local/]) tree too.
+
+nl()
+If you really don't want usr/ in your root directory, but rather scatter
+your programs and packages all over your harddisk, do something like:
+verb(
+ md lilypond
+ cd lilypond
+ unzip ../lilypond-0.1.77.exe.zip
+)
+and add file(lilypond/usr/bin) to your file(PATH) and
+file(lilypond/usr/share/lilypond) to your file(LILYINCLUDE).
+
+
+subsect(BUILDING LILYPOND)
+
+If you've received a binary release of LilyPond (file(.exe.zip)),
+you may skip the following sections.
+
+subsect(GOOD NEWS)
+
+It can be done! Occasionally, the Cygnus b19.1 cross compiler and
+utilities under GNU/Linux are used to make the binary file(.exe.zip)
+releases (some makefile hacking was needed to build this stuff). Jeffrey
+Reed tries to keep-up with LilyPond development, and is doing quite well.
+
+subsect(UNPACKING)
+
+I have heard of such tools that think they're probably much smarter than the
+packager and thus decide for themselves that they don't need to unpack certain
+files (e.g., empty directories such as bin/out).
+
+To unpack the lilypond sources, you should do something like: verb(
+ tar zxf releases/lilypond-x.y.z.tar.gz
+)
+
+subsect(ABOUT UNIX)
+
+If you're familiar with the GNU/Cygnus development package, you may skip
+this.
+
+Don't forget to set
+verb(
+ /start/settings/control-panel/system/environment/system-variables:
+ GCC_EXEC_PREFIX=/Cygnus/b19/H-i386-cygwin32/lib/gcc-lib/
+ MAKE_MODE=UNIX
+)
+You want to run bash, while building Lily:
+verb(
+ c:\bash
+ bash-2.01$
+)
+The install instructions mention something like:
+verb(
+ configure
+ make
+ make install
+)
+
+Now for a small UNIX lesson: The current working directory (cwd) is
+by default not in your PATH, like it is under DOS (for security reasons).
+Check this by looking at the output of:
+verb(
+ echo $PATH
+)
+The cwd looks like code('::') or code(':.'). If it's not there, you may
+add the cwd to your path:
+verb(
+ PATH=$PATH:.
+)
+or you must use './' when issuing a command in th cwd, try:
+verb(
+ ./configure
+ make
+)
+
+sect(LILYPOND Windows-NT Support -- by Jeffrey Reed)
+
+My point of reference comes from 15 odd years working with a variety
+of tt(UNIX) platforms. I am relatively new to Windows-NT and, even
+though I am a card carrying tt(UNIX) bigot, I am excited about the
+NT OS. My goals for lilypond are to give back to the Free Software
+Foundation a little of what they have given me over the years and to
+contribute to the lilypond project by supporting a Windows-NT port. I
+hope that someday we can distribute and run lilypond on the NT OS in a
+much more native fashion.
+
+itemize(
+it()link(Building lilypond on tt(Windows-NT))(build)
+it()link(Maintaining lilypond on tt(Windows-NT))(maintain)
+it()link(Running lilypond on tt(Windows-NT))(run)
+)
+
+
+subsect(Building lilypond on Windows-NT) label(build)
+Currently as stated above lilypond is primarily a tt(UNIX) thing.
+The Windows-NT port is based on the tt(UNIX) environment provided by
+url(Cygnus)(http://www.cygnus.com). Therefore the first step is to
+download and install the Cygnus development kit:
+
+subsubsect(Cygnus Development Kit)
+lurl(http://www.cygnus.com/misc/gnu-win32/)
+
+
+Please follow the documentation Cygnus has on there web site for
+downloading and installing. The important part is that you down load
+the entire development kit. I believe it is file(cdk.exe). The
+installation will ask you where you want to install it. I will refer
+to Cygnus installation directory as file(/gnuwin32/b19). There should be a
+file(README) file that contains installation instructions. After the
+installation is complete you should have a em(Cygnus) shortcut in your
+em(Program) section of your em(Start Menu). This shortcut is your
+door to the tt(UNIX) world and I will refer to the resulting window
+as a file(bash) shell.
+
+The shortcut points to file(/gnuwin32/b19/cygnus.bat). The following
+is my file(cygnus.bat) file.
+
+verb(
+@ECHO OFF
+rem default environment
+
+rem GNU cygnus installation
+
+SET CYGREL=B19.1
+SET MAKE_MODE=unix
+SET LOCAL_ROOT=d:\gnuwin32
+SET LOCAL_FS=d:/gnuwin32
+SET LOCAL_DIR=/gnuwin32
+SET CYGROOT=%LOCAL_ROOT%\b19
+SET CYGFS=%LOCAL_FS%/b19
+SET GCC_EXEC_PREFIX=%CYGROOT%\H-i386-cygwin32\lib\gcc-lib\
+SET TCL_LIBRARY=%CYGROOT%\share\tcl8.0\
+SET GDBTK_LIBRARY=%CYGFS%/share/gdbtcl
+
+rem This was not in the original but is needed by lots of packages
+SET BISON_SIMPLE=%CYGFS%/share/bison.simple
+
+rem I place the cygnus stuff in front of /WINNT
+SET PATH=d:\bin;%CYGROOT%\H-i386-cygwin32\bin;%PATH%
+SET MANPATH=%LOCAL_ROOT%\man;%LOCAL_ROOT%\b19\man;%LOCAL_ROOT%\b19\cdk-man\man;%LOCAL_ROOT%\a2ps-4.10\man
+SET INFOPATH=%LOCAL_FS%/b19/cdk-man/info;%LOCAL_FS%/b19/info;%LOCAL_DIR%/info
+SET PATH=%PATH%;%LOCAL_ROOT%\bin
+
+
+rem General tools not included with Cygnus Development Kit
+
+
+rem CVS
+
+SET PATH=%PATH%;%LOCAL_ROOT%\cvs-1.9.28\bin
+SET INFOPATH=%INFOPATH%;%LOCAL_FS%/cvs-1.9.28/info
+SET MANPATH=%MANPATH%;%LOCAL_ROOT%\cvs-1.9.28\man
+
+rem EMACS
+
+SET PATH=%PATH%;%LOCAL_ROOT%\emacs-19.34\bin
+SET INFOPATH=%INFOPATH%;%LOCAL_FS%/emacs-19.34/info
+
+rem VIM
+
+SET VIM=%LOCAL_ROOT%\vim-4.6\doc
+SET PATH=%PATH%;%LOCAL_ROOT%\vim-4.6
+
+rem TeX
+
+SET PATH=%PATH%;%LOCAL_ROOT%\texmf\miktex\bin
+
+rem a2ps
+
+SET PATH=%PATH%;%LOCAL_ROOT%\a2ps-4.10\bin
+SET INFOPATH=%INFOPATH%;%LOCAL_FS%/a2ps-4.10/info
+SET MANPATH=%MANPATH%;%LOCAL_ROOT%\a2ps-4.10\man
+
+rem python
+
+SET PATH=%PATH%;\Program Files\Python
+
+rem perl
+
+SET PATH=%PATH%;\qub
+
+rem yodl
+
+SET PATH=%PATH%;%LOCAL_ROOT%\yodl-1.30.0.pre10\bin
+set MANPATH=%MANPATH%;%LOCAL_ROOT%\yodl-1.30.0.pre10\man
+
+uname -sv
+bash -login
+)
+
+Please look over this carefully. Be careful with the forward and
+backward slash notations. The paths specified were done for good
+reasons. Maybe someday we will all be using code(UNC). Note the
+tt(BISON) entry and the tt(PATH) ordering in particular. Also note
+that the generic file(cygnus.bat) you will be looking at does not
+include alot of the packages listed. We will be installing some of
+these.
+
+There is also some discussion of how you want to em(mount) the Cygnus
+development kit. em(mount) is a tt(UNIX) term that refers to the
+mechanism used to provide a disk resource to the filesystem. Cygnus
+supplies a mechinism for em(mounting) a filesystem as a tt(DOS) like
+resource or a tt(UNIX) like resource. Among other things this
+attempts to deal with the text file carriage return line feed on
+tt(DOS) versus the line feed on tt(UNIX) and the issue that tt(DOS)
+has two file types, text and binary. Where tt(UNIX) deals with a
+single streams type. I have used the default out of the box
+configuration with no problems. We will however later discuss
+mounting a directory as a binary resource ref(binary).
+
+The installation also suggests that you create a directory file(/bin)
+and copy file(/gnuwin32/b19/H-i386-cygwin32/bin/sh.exe) to file(/bin).
+The file(sh.exe) shell provided by Cygnus is a descendant of the
+file(ash) shell and I have found that some of the tt(GNU) products
+configure/installations work better with the file(bash) shell. So
+this is my recommendation for post installation steps. From a
+file(bash) shell:
+
+itemize(
+it()code(cd /)
+it()code(mkdir bin)
+it()code(cd /bin)
+it()code(cp /gnuwin32/b19/H-i386-cygwin32/bin/bash.exe sh.exe)
+it()code(cd /)
+it()code(mkdir /tmp)
+it()code(chmod a+rwx tmp)
+it()code(mkdir /etc)
+it()code(cd /etc)
+it()code(mkpasswd -l > passwd)
+it()code(mkgroup -l > group)
+)
+
+subsubsect(Ecgs Compiler, assembler, and linker)
+lurl(http://www.xraylith.wisc.edu/~khan/software/gnu-win32/egcs.html)
+
+
+Cygnus recommends using the ecgs compiler. I do too. Follow the
+instructions from the above site to install ecgs compiler/linker and
+the gas assembler. We have attempted to compile lilypond with the
+Cygnus default compiler/linker with poor results. So for lilypond
+anyway this step is a requirement.
+
+I took the following steps to download and install the ecgs suite.
+Keep in mind that it is better to follow the instructions from the
+indicated website.
+
+itemize(
+it()download
+url(egcs-1.0.2-cygb19.tar.gz)(ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/cygwin32/b19-releases/egcs-1.0.2-cygb19.tar.gz)
+to /tmp
+it()download
+url(gas-980303-cygb19.tar.gz)(ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/cygwin32/b19-releases/gas-980303-cygb19.tar.gz)
+to /tmp
+it() read
+url(INSTALL)(http://www.xraylith.wisc.edu/~khan/software/gnu-win32/egcs-cygb19-install.html)
+)
+
+In a bash shell
+itemize(
+it() cd $CYGFS/include
+it() mv g++ g++-b19
+it() cd $CYGFS
+it() tar zxf /tmp/gas-980303-cygb19.tar.gz
+it() tar zxf /tmp/egcs-1.0.2-cygb19.tar.gz
+)
+
+You now have a compiler, assembler, linker combination capable of
+compiling lilypond.
+
+subsubsect(bf(GNU)'s Internationalization Package)
+lurl(http://www.gnu.org/order/ftp.html)
+
+Considering the origin of the major contributors of lilypond, this is a
+must. However before we actually do a bf(GNU) build we have to
+discuss some caveats of the Windows-NT OS in particular the naming of
+executable files. tt(Windows-NT) uses a .exe extension where tt(UNIX)
+does not use an extension. This causes a problem during the
+installation portion of a bf(GNU) build. The following script can be
+used to help alleviate this problem.
+
+verb(
+#!/bin/sh
+
+realinstall=/gnuwin32/b19/H-i386-cygwin32/bin/install.exe
+args=''
+while [ $# -ne 0 ]
+do
+ case $1 in
+ -*CHAR(41) args="$args $1"
+ ;;
+
+ *CHAR(41) if [ -f $1.exe ]; then
+ args="$args $1.exe"
+ else
+ args="$args $1"
+ fi
+ ;;
+ esac
+ shift
+done
+
+$realinstall $args
+)
+
+I place this in script file(~/bin). Having said that here is how one
+might build the em(gettext) package.
+
+itemize(
+it() download the package from one of the ftp sites.
+it() From a bash shell, cd ~/usr/src.
+it() tar zxf gettext-0.10.tar.gz
+it() cd gettext-0.10
+it() ./configure --prefix=$CYGFS/H-i386-cygwin32
+it() make
+it() make install
+)
+
+subsubsect(bf(GNU)'s roff package)
+lurl(http://www.gnu.org/order/ftp.html)
+
+Following the instructions for em(gettext) package to download, build,
+and install the em(groff) package.
+
+subsubsect(Python Programing Language)
+lurl(http://www.python.org)
+
+Python is the scripting language of choice for a lilypond build.
+There is a native tt(Windows-NT) self extracting binary distribution
+available. I recommend installing Python in a directory that does
+bf(not) have spaces. And then place it in the bash shell path by
+editing $CYGFS/cygnus.bat.
+
+subsubsect(Perl Programing Language)
+lurl(http://www.cpan.org)
+
+I believe perl is used in some legacy scripts to date. There is a
+native tt(Windows-NT) self extracting binary distribution available.
+I recommend installing Perl in a directory that does bf(not) have
+spaces. And then place it in the bash shell path by editing
+$CYGFS/cygnus.bat.
+
+subsubsect(Yodl Document Language)
+lurl(http://www.digicash.com/~jan/yodl/)
+
+Yodl for documentation in Lilypond. It is currently being updated by
+Jan Nieuwenhuizen. The development methodology of em(Yodl) as well as
+em(LilyPond) relies on a the following directory structure:
+
+label(dirstr)
+verb(
+$HOME/usr/src/
+ |-releases/
+ |-patches/
+ |-test/
+)
+
+description(
+
+dit(releases/) Downloaded and generated releases live here. For
+example file(yodl-1.30.0.pre12.tar.gz) and
+file(lilypond-0.1.81.tar.gz).
+
+dit(patches/) Downloaded and generated patches live here. For
+example file(yodl-1.30.0.pre12.diff.gz) and
+file(lilypond-0.1.81.diff.gz).
+
+dit(test/) This directory is used to generate releases and patches.
+
+)
+
+I strongly recommend using this file structure to build em(yodl) and
+em(lilypond).
+
+itemize(
+it() download the package from
+lurl(http://www.digicash.com/~jan/yodl/) to
+file($HOME/usr/src/releases).
+it() From a bash shell, cd file($HOME/usr/src).
+it() tar zxf releases/yodl-em(<version>).tar.gz
+it() cd yodl-em(<version>)
+it() ./configure --prefix=/gnuwin32/yodl-em(<version>) --srcdir=.
+Since em(yodl) is under development I choose to install it in a
+version rooted directory. This allows me to test newly released
+versions without losing a known working version.
+it() make
+it() make install
+it() place it in the bash shell path by editing $CYGFS/cygnus.bat.
+For example:
+verb(\
+rem yodl
+
+SET PATH=%PATH%;%LOCAL_ROOT%\yodl-1.30.0.pre12\bin
+
+)
+)
+
+subsubsubsect(Yodl build CAVEAT)
+
+em(yodl) uses the em(stepmake) package for it's build methodology.
+The build of em(stepmake) documentation will fail due to the fact
+that em(yodl) is not yet installed. This is normal and shouldn't be a
+problem.
+
+subsubsect(Lilypond) label(lilybuild)
+itemize(
+it() download the package from
+lurl(http://www.cs.uu.nl/people/hanwen/lilypond/) to
+file($HOME/usr/src/releases).
+it() From a bash shell, cd file($HOME/usr/src).
+it() tar zxf releases/lilypond-em(<version>).tar.gz
+it() cd lilypond-em(<version>)
+it() ./configure --prefix=/gnuwin32/lilypond-em(<version>) \ nl()
+ --srcdir=. \ nl()
+ --enable-tex-prefix=/gnuwin32/lilypond-em(<version>)/texmf \ nl()
+ --enable-tex-dir=/gnuwin32/lilypond-em(<version>)/texmf/tex \ nl()
+ --enable-mf-dir=/gnuwin32/lilypond-em(<version>)/texmf/mf nl()
+Since em(lilypond) is under development I choose to install it in a
+version rooted directory. This allows me to test newly released
+versions without losing a known working version.
+it() make
+it() make install
+it() place it in the bash shell path by editing $CYGFS/cygnus.bat.
+For example:
+verb(\
+rem lilypond
+
+SET PATH=%PATH%;%LOCAL_ROOT%\lilypond-0.1.80\bin
+
+)
+)
+
+subsect(Maintaining lilypond on Windows-NT) label(maintain)
+
+If you have built em(lilypond) on tt(Windows-NT) using the directory
+structure described link(previously)(dirstr) and the process described
+in section ref(lilybuild), then you are ready to maintain
+em(lilypond). It can not be that easy!? Well, there is one caveat.
+Currently to use the file(stepmake/bin/release.py) and
+file(stepmake/bin/package-diff.py) scripts you need to obtain/build a
+version of em(python) that was built with bf(Cygnus) development kit.
+The process I used is as follows:
+
+itemize(
+it() obtain python source from lurl(http://www.python.org)
+it() tar zxf /tmp/python-em(<version>).tar.gz
+it() cd python-em(<version>)
+it() configure --prefix=/gnuwin32/python-em(<version>)
+it() edit toplevel file(Makefile) code(EXE) macro so it reads code(EXE=.exe)
+it() make
+it() make install
+it() place it in the bash shell path by editing $CYGFS/cygnus.bat.
+For example:
+verb(\
+rem python
+
+SET PATH=%PATH%;%LOCAL_ROOT%\python-1.5.1\bin
+
+)
+)
+
+I choose to build em(lilypond) with the standard tt(Windows-NT)
+em(python) and use the bf(Cygnus) version for using the release
+scripts. This way I can make sure the tt(Windows-NT) em(python)
+version is able to build em(lilypond). Currently there are several
+issues with the release scripts. Using code(os.link) and
+code(os.system(set -x;...)) are to name a few.
+
+To generate a new release and patch you must use the directory
+structure described link(previously)(dirstr). And follow the
+instructions found in file(PATCH.txt). Editing
+file(Documentation/AUTHORS.yo), file(VERSION), and file(NEWS) is also
+required. When my edits are complete and tested I:
+
+itemize(
+it() Edit file(config.make) and change em(python) path to the
+bf(Cygnus) version: code(PYTHON=/gnuwin32/Python-1.5.1/bin/python).
+it() make release
+)
+
+The new release is placed in file(releases) directory and the patch is
+placed in the file(patches) directory. I email the new patch to
+email(gnu-music-discuss@gnu.org). More than one patch a day can be
+generated by:
+
+itemize(
+it() cd $HOME/usr/src
+it() tar zxf releases/lilypond-em(<version>).em(<patchlevel>)
+it() use your normal configure
+it() make edits
+it() Change file(VERSION) to increment em(<patchlevel>)
+it() Change file(NEWS)
+it() make release
+)
+
+subsect(Running lilypond on Windows-NT) label(run)
+
+label(binary)
+
+Jeffrey B. Reed email(daboys@bga.com)
+
+
+sect(RUNNING LILYPOND -- by Dominique Cretel)
+
+enumerate(
+eit() First, I have download tha 0.1.64 version of Lilypond music software.
+
+eit() Then I extract it in a temp directory, and I move the directory
+"lilypond-0.1.64" to the root directory of my D drive.
+
+eit() I go to the D:\Lilypond-0.1.64\tex directory to modify the
+lilyponddefs.tex file (lines 75 and 84), and comment all
+cmbx15 ans cmbx14, and replace them by cmbx12.
+
+eit() build a command file like this:
+Note: I use MiKTeX to process the tex file generated.
+
+verb(
+---begin ly2dvi.bat
+echo off
+set ver=0.1.64
+set path=%path%;d:\lilypond-%ver%\bin
+lilypond -I d:\lilypond-%ver%\init %1
+rem *** pause
+
+set path=c:\texmf\miktex\bin;%path%
+set TEXINPUTS=%TEXINPUTS%;d:\lilypond-%ver%\tex
+set MFINPUTS=%MFINPUTS%;d:\lilypond-%ver%\mf
+tex %1.tex
+rem *** pause
+
+dvips %1.dvi
+rem *** pause
+
+set path=%path%;d:\gstools\gsview
+gsview32 %1.ps
+---end ly2dvi.bat
+)
+
+eit() execute lilypond by doing:
+verb(
+ly2ps silly <Enter>
+)
+)
+
+Note:
+nl()
+You'll better have to put the SET commands lines in a separate command
+file to avoid consumming each time environnment ressources.
+
+Bye,nl()
+Dominique Cretel email(dominique.cretel@cfwb.be)
+
+
+sect(PROBLEMS AND ANWSWERS)
+
+subsect(CONFIGURE AND INSTALL)
+This is all to confusing. I have:
+enumerate(
+eit() downloaded file(/tmp/lilypond-0.1.78.tar.gz)
+eit() verb(
+ cd ~/usr/src
+)
+eit() verb(
+ tar zxf /tmp/lilypond-0.1.78.tar.gz
+)
+eit() verb(
+ ./configure --prefix=/users/jeff/lilypond-0.1.78 \\\
+
+ --enable-tex-prefix=/users/jeff/lilypond-0.1.78/texmf \\\
+
+ --enable-tex-dir=/users/jeff/lilypond-0.1.78/texmf/tex \\\
+
+ --enable-mf-dir=/users/jeff/lilypond-0.1.78/texmf/mf
+)
+eit() verb(
+ make
+)
+eit() verb(
+ make install
+)
+)
+
+I did have a problem with lilypond.info. And I will look into this
+further. After mending lilypond.info issue, it compiled and install
+with no problems.
+
+I have 64 Meg of physical memory and 64 Meg of swap. Actually I need
+to increase the swap space. If a memory problem is occuring it most
+likely is during the link process of lilypond. There is a boat load
+of objects to link.
+
+Jan the mount -b stuff is confussing to me. I have the entire system
+mounted _without_ -b and only use -b on certain paths for programs
+that create binary files that do not use O_BINARY open option. By the
+way the midi file open is one of these cases, I need to look into
+that. I have had no problems with this methodology.
+
+
+subsect(DRIVE D:)
+
+The windows multiroot filesystem is an utterly broken concept. Please
+do everything on one (urg) drive, C:.
+
+verb(
+> configure
+> creating cache ./config.cache
+> [..]
+> creating config.make
+> creating config.hh
+> cd: lstat /d failed
+)
+
+Ok, this looks like another stupid windows problem.
+You're working on 'drive D:', right?
+
+I can think of some solutions, but i don't know if they work;
+i just had to do some work in windows some time ago. If you
+have problems with this, please ask email(gnu-win32@cygnus.com).
+I'll start with the simplest:
+itemize(
+ it() do everything on drive C:, or
+ it() explicitely mount drive d:, work from there:
+ verb(
+ mkdir -p /mnt/d
+ mount d: /mnt/d
+ cd /mnt/d/lilypond-x.y.z/
+ )
+ it() make d:/ the root of cygnus, in cmd.exe/command.exe do:
+ verb(
+ umount /
+ mount d: /
+ )
+)
+
+
+subsect(INSTALLING TOOLS)
+
+> - First I have installed Python (for win32) "Pyth151.exe" and "Configure
+nl()
+> don't find it. I had to put it in the path for configure find it?
+nl()
+
+Yes, of course. It should be possible to have different versions of tools
+installed (e.g. perl 4 and perl 5). The best way to tell people (or tools
+like configure) which one to use is to put it in the path?
+
+Another small unix lesson: Where under dos each program installs itself
+into a nice directory
+verb(
+ c:\DosProgram\*
+)
+under unix, installation is handled centrally. Executables go in
+file(/usr/bin) (or file(/usr/local/bin)), and are always in your path.
+
+subsect(VIRTUAL MEMORY)
+
+verb(
+> 4. make -C lily don't work. I get an error (see below). I get several
+> object files in the ./lily/out directory (34 files: 17 *.dep, 16 *.o,
+> and 1 *.hh):
+> [...]
+> include/engraver-group.hh:35: virtual memory exhausted
+> make: *** [out/bar-grav.o] Error 1
+> bash-2.01$
+
+)
+
+Ok, so everything works now, there's only some error with one of the
+source files. Lets see which one (and now the cc's now why they're
+reading this :-)
+
+It looks like you've run out of memory. You should compile without
+optimisation, gcc/egcs need a lot of memory for optimising.
+Reconfigure without optimisation:
+verb(
+ configure --disable-optimise
+)
+or edit file(config.make):
+verb(
+ ## USER_CXXFLAGS = -g # -O no optimise!
+ USER_CXXFLAGS = -g
+)
+
+There are some other things to look at: how much RAM do you have
+(please say something > 8Mb :-)? Although it might be an egcs bug,
+you should have a look at the size of your swap file.
+For an US version of windows, you should find it here:
+verb(
+ /start/settings/control-panel/system/performance/virtual-memory
+)
+you see, amongst others, these entries:
+verb(
+ paging file size for selected drive:
+
+ space-available: xx
+ initial-size: xx
+ maximum-size: xx
+
+ total paging file size for all drives
+
+ currently allocated: xx
+)
+Try to set:
+verb(
+ initial-size: 64
+ maximum-size: 128
+)
+Make sure that:
+itemize(
+it() maximum-size >= 128 Mb
+it() urrently-allocated + space-available >= 128 Mb
+)
+
diff --git a/Documentation/TODO b/Documentation/TODO
new file mode 100644
index 0000000000..060d0c342a
--- /dev/null
+++ b/Documentation/TODO
@@ -0,0 +1,10 @@
+# Documentation/TODO
+
+ * write toplevel info file
+
+ * yodl2texinfo: automatic nodes and menus?
+
+ * get rid of pod manpage layout legacy
+
+
+
diff --git a/Documentation/automake.urgh b/Documentation/automake.urgh
deleted file mode 100644
index 4d811d14e3..0000000000
--- a/Documentation/automake.urgh
+++ /dev/null
@@ -1,97 +0,0 @@
-
-WHAT'S WRONG WITH AUTOMAKE?
-
-
-We have tried to use automake and found it to be inadequate for our
-needs for several reasons. On the surface the shortcomings to
-automake may seem bugs or "not-yet-completed" features. However, make
-itself is broken, and any tool built on top of make is broken as well.
-
-
-IRRITATIONS
-
-We'll start with the superficial irritations first:
-
- - there is no intrinsic support for wildcarding; Adding
-support for wildcarding adds yet another layer to a top-heavy system.
-
-This may sound silly, but for a fast moving project, with 500
-sourcefiles, one does not want to administer a list of filenames by
-hand: files are created, deleted and moved very often, and wildcarding
-prevents that distributions miss files.
-
-
- - Automake tries to cater for every taste of make. But anyone
-who does more than the trivial (configure; make install) has to
-install automake and GNU make anyway. Automake's universal make
-support is good for tools that have to be highly portable, but you
-have pay in ease of use and speed.
-
- - Automake is very much targeted at standard GNU packages that
-are written in C (or C++) and come with info-pages. If you want to add
-dependencies from TeX or METAFONT files you are out of luck. Ditto if
-you have weird file types (.pod), weird programming languages, etc.
-
- - Dependency handling is unreliable in our experience. On
-several occasions we had unexplainable errors, that went away after
-doing a make distclean, and recompile.
-
- - It is slower, much slower than a tailor made solution. On
-JCNs machine this is a diffence of 800% (17 minutes in stead of 2) for
-every distribution made; this constitutes 45 minutes of irritation on
-a hacking-night.
-
- - For a large project, a specialised Makefile system costs
-relatively little extra effort. The extra effort pays itself back in speed
-and control.
-
- - The Makefiles, Makefile.ins, and extensions constitute a
-huge amount of state. We found it hard to reproduce bugs in automake
-(Strictly spoken they aren't bugs, as we haven't diagnosed because we
-couldn't reproduce them.)
-
-
-FUNDAMENTAL PROBLEMS
-
-Many of the fundamental problems can be traced back to flaws in make:
-
- - make is not standardised. The only decent implementation is
-GNU make, and GNU make is not widespread enough to require GNU make for
-compiling GNU tools.
-
- - make does not have enough meta-ness: one cannot manipulate
-dependencies and rules in make: they cannot be put in variables,
-mapped at lists, etc.
-
-(In our tailor made system, we worked around this non-feature by using
-generic include files as a stopgap function call.)
-
- - VPATH is a broken concept: programs should not think on
-their own; thinking is the programmer's job. make should do exactly
-as it is told, and make should enable easy formulation of these
-commands commands.
-
-automake is tries to solve these problems by building on top of this
-broken tool: an extra layer of complexity is added, with
-self-modifying Makefiles, and different Makefile versions for
-maintainer and user.
-
-
-CONCLUSIONS
-
-We could be called "cheap" for complaining about the above points,
-while not even filing decent bugreports. The reality is that we
-ourselves are busy and that we don't find it amusing to hunt for and
-fix bugs in a fix (automake) for a broken tool (make).
-
-It should also be emphasised that we still think that automake is a
-good tool: it is excellent for small projects, and reasonable for big
-projects that are fully "standard." However, for LilyPond, with its
-many sourcefiles and many different filetypes we found it unwieldy.
-
-We hope that some day a better replacement for make comes along, so
-that the gruesomeness of make and friends may die in oblivion. (*)
-
-(*) I personally would like to enter a Makefile as functional program,
-whose execution caches function results on the disk as files. But I
-shan't bother you further with my vaporware thoughts..
diff --git a/Documentation/disclaimer-w32.yo b/Documentation/disclaimer-w32.yo
new file mode 100644
index 0000000000..b4873225a9
--- /dev/null
+++ b/Documentation/disclaimer-w32.yo
@@ -0,0 +1,9 @@
+If you have the Cygnus gnu-windows32 port of the GNU utils, LilyPond
+will work in Windows-NT (/95/98?).
+
+We still recommend you use Unix. In particular, use GNU/Linux: We've
+been there, and we've seen it happen several times. It is em(much)
+easier and quicker to install RedHat Linux and LilyPond than to
+obtain, compile and install all the necessary tools to compile and run
+LilyPond on Windows.
+
diff --git a/Documentation/faq.pod b/Documentation/faq.pod
deleted file mode 100644
index 93edc38a3c..0000000000
--- a/Documentation/faq.pod
+++ /dev/null
@@ -1,454 +0,0 @@
-=head1 NAME
-
-FAQ - GNU LilyPond FAQs
-
-=head1 DESCRIPTION
-
-Q: HELP! I'm stuck!
-
-A: Please read this document carefully. If you are still at loss,
-send your questions to the B<mailing list>, and not to authors
-directly.
-
-Note: relative paths are meant to be relative to the source directory
-
-
-=head2 Installing
-
-Q: Wow, the webpages look really neat, but if I install the .exe file
-on my windows 3.11 machine, it doesn't work.
-
-A: The DOS port is done with the cygnus W32 port of the GNU utils. It
-does I<not> work with windows 3.x; you need NT or w95 (this is not a
-recommendation, btw. We recommend you use Unix, in particular, use
-GNU/Linux)
-
-Q: I get all kinds of errors while compiling F<parser.cc>
-
-A: LilyPond uses features of bison version 1.25. Please confirm that
-you are using a version 1.25 or better, that is B<GNU> bison
-B<1.25>. Don't forget to do "make clean" after installing it. Don't
-forget to remove the stale F<bison.simple> as well.
-
-If the problem persists, then please mail me.
-
-Q: I upgraded by applying a patch, and now my configure/build breaks.
-
-A: Patches don't include automatically generated files, i.e. F<configure>
- and files generated by F<configure>. Regenerate them yourself:
-
- autoconf
- configure
-
-You might need to create some extra "out" directories. Do this
-with
-
- make outdirs
-
-Q: Some of your neat scripts fail, what directories do you use:
-
-A: [This only applies if you don't do C<make install>, and develop out
-of the source directory] I have a directory which contains all music
-related stuff,
-
- ~/something/
-
-which contains:
-
- lilypond/ # the directory as unpacked from the tarball
- releases/ # directory for .tar.gz releases
- patches/ # directory for patches between different releases
- test/ # create tarballs and do diffs from this directory
-
-~/something/lilypond/bin is in the PATH, and contains symlinks to the
-compiled executables. For some of the scripts to work, you have to set
-
- LILYPOND_SOURCEDIR=/home/myself/something/lilypond
-
-in the environment.
-
-If you don't use patches, you'd probably want to symlink
-
- lilypond -> lilypond-x.y.z
-
-=head2 Language: mudela
-
-Q: Why can't you type C<#c> in stead of C<cis> ?
-
-A: We think that C<#c> looks as if you are entering the symbols to
-print (which you are not; remember, you're entering the musical
-content in Mudela)
-
-We're not sure on leaving out this feature. If you think this is a
-good idea, please let us know.
-
-
-Q: Why do I have to type the accidentals to the note if I specified them?
-
-A: Take this example
-
- cis cis
-
-Independently of how it was written and what the current key was, you
-would say that you are playing and reading "two C-sharp" notes. We
-have tried to make the language somewhat context-free. Of course
-sheet music is not context-free. Unfortunately, sheet music is also 2
-dimensional, and ASCII is not.
-
-Technically it would be feasible to have the Interpreting phase do
-tricky things to add (or leave out) the accidentals, but we think that
-it is impractical: it hampers the readability and portability of your
-source, since you need LilyPond to fill in the details and actually
-make sense of it.
-
-
-Q: What is C<cis> anyway
-
-A: C<cis> is the dutch naming for C-sharp. The notes are named
-a, b,.., g. The suffix -is means sharp, and -es flat. This system is
-common in a number of languages (such as swedish, dutch, german.)
-Certain other languages (such as English, French and Italian) just add
-the word for "sharp" to the notename.
-
-We chose the Dutch system, because we're dutch. You are free to chose
-whatever names you like; they are user definable.
-
-Q: I can type
-
- <a c> <e g>
-
-to make a few chords, but why do I have to type
-
-
- < { a~ e } { c ~ g } >
-
-instead of
-
- <a~ c~> <e g>
-
-to generate ties between the chords?
-
-A: When you type
-
- <a c> <e g>
-
-this is shorthand for
-
- < { a } { c } > < { e } { g } >
-
-Ties have to be confined to `voices', and the a and the e are in
-different {} blocks, so they are in different voices. You should view
-the desired construct as a "generalised chord" (two voices stacked
-vertically). It might help you visualise this by using the following
-formatting:
-
- < { a ~ e }
- { c ~ g }
- >
-
-Q: and where do the beams come into this picture?
-
-A: Beams are voice-wide, and may be entered in any part of the
-voicegroup:
-
- < { [a ~ e] } { c ~ g } >
- < { [a ~ e } { c ~ g] } >
- < { [a ~ e] } { [c ~ g] } >
-
-These all give the same result.
-
-Q: Why are [] around the notes, and () inbetween?
-
-A: [] designate beams, a note can only be in one beam at the same
-time. () is a slur, which connects notes. You need to be able to
-specify
-
- a()a()a
-
-
-Q: I want to insert some TeX commands
-
-A: You shouldn't: it's against LilyPond philosophy to have typesetting
-commands in the mudela source. Moreover, this would be difficult. The
-manner in which Request (the basic building blocks of mudela) are
-translated into printable items is complex: it is not always possible
-to associate one Request with one Item or Spanner.
-
-As a further notice, we want to move away from TeX (and perhaps
-output PostScript or render to an X window too), so using TeX will
-make sources non-portable at some time.
-
-=head2 Do you support ...
-
-Q: Do you support pop songs (chords, single staff, lyrics)?
-
-A: Yes, see the F<twinkle-pop> example.
-
-Q: Do you support guitar chord diagrams?
-
-A: No, not yet. We ourselves don't play guitar, and don't know the
-fine points of this notation. We would welcome anyone who could give
-this a try.
-
-Q: Do you support TAB notation?
-
-A: No. The same as for the previous question goes, but TAB is a lot
-more work than diagrams (TAB needs modification of Parser, Lexer,
-Staff, Notehead, Stem code and all the code that creates these graphic
-elements.)
-
-Q: Do you support multiple staff-sizes?
-
-A: Yes and no. At this time you can choose between 11, 13, 16, 19,
-20, 23 and 20 pt staff-size. The sizes can't be changed per staff
-(yet). Look at F<standchen.ly> for an example.
-
-
-=head2 How do I ....
-
-Q: How do I change the TeX layout?
-
-A: See F<lilyponddefs.tex>, it has some comments.
-
-Q: How do I place lyrics under I<each> of the staves in a score, as in
-choral music. I can work out how to put lyrics for each line all under
-the top line, or at the bottom but not between!
-
-A: You change the order lyrics and staves. You have to name all
-staves (lyric and melodic), otherwise they will end up in the same
-staff/lyricline
-
-
- \score {
- < \melodic \type Staff = "treble" \trebleMelody
- \lyric \type Lyrics = "tlyrics" \trebtext
- \type Staff = "bass" \melodic \bassMelody
- \lyric \type Lyrics = "blyrics" \basstext
- >
- \paper { }
- }
-
-
-Q: How do I put more than one marking on a note.
-
-A: You can stack them
-
- c4^"a"^"b"
-
-or use spacing-notes to put markings at different horizontal positions
-
- < c1
- { s4\ff s4^"text" s4-\marcato s4 }
- >
-
-
-Q: How do I get bar numbers?
-
-A: See F<init/engraver.ly>. You have to uncomment some entries. To
-do this `portably' you should redefine some engravers in your own
-source files. Check out F<init/rhythm.ly>.
-
-=head2 Development
-
-Q: Could you implement feature XXXX? It is really easy, just extend
-the syntax to allow YYYY!
-
-A: If it is reasonable, I'll add XXXX to the TODO list. In general
-finding a cute syntax (such as YYYY) isn't very hard. The complicated
-issue how to adapt the internals to do XXXX. The parser is really a
-simple front end to the complicated internals.
-
-Q: Can I join in on LilyPond development? How do I do this?
-
-A: LilyPond development is open for anyone who wants to join. We try
-to use a Bazaar style development model for LilyPond, see
-http://locke.ccil.org/~esr/writings/cathedral.html. This means:
-frequent releases, everyone can send in a patch or do suggestions and
-all development discussions are public.
-
-To be precise, discussions take place on the gnu-music-discuss mailing
-list, which is open for subscription to everyone.
-
-
-Q: I want to implement XXXX! Should I do this?
-
-A: There might be better ways of doing XXXX, so it's a good thing to
-ask about this before you start hacking. If you want to keep in touch
-with current developments, you should subscribe to the mailing list
-(see the "links" section of the documentation).
-
-
-Q: I want to implement XXXX! How should I do this?
-
-A: Your best bet of getting me to include code, is to present it as a
-"fait accompli", ie., to send me a patch.
-
-
-Q: I made some code, how do I get you to include it?
-
-A: Send in a patch:
-
- diff -urN old-file new-file > patch
-
-or
-
- diff -urN old-directory/ new-directory/ > patch
-
-Alternatively, you can use F<bin/make-patch.py>. Don't forget to put
-your name and e-mail address in the F<AUTHORS.pod> file.
-
-Q: How do I learn the C++ code?
-
-A: The entry point is in C<main()>. Good luck. :-)
-
-Seriously, read, reread and reread internals and CodingStyle, and
-just start anywhere.
-
-Anywhere? Well, most of the comment doco are in the header files, so
-your best bet would be C<less lily/include/*.hh>. Some of the most
-important data-structures are to be found in:
-
- - *request.hh
- - engraver.hh
- - performer.hh
- - translator.hh
- - score-elem.hh
- - music.hh
- - music-list.hh
- - music-iterator.hh
- - item.hh
- - spanner.hh
-
-
-Q: Why GPL?
-
-A: Yes.
-
-
-Q: Your make system does not adhere to GNU coding standards, could you
-please fix it?
-
-A: No. We have evaluated the standard GNU combination for compiling
-programs (autoconf, automake, libtool) and found to be inadequate in
-several respects. More detailed argumentation is included with
-LilyPond (see F<Documentation/automake.urgh>)
-
-
-Q: Why do I need g++ >= 2.7?
-
-A: By using g++, GNU LilyPond is portable to all platforms which support
-g++ (there are quite a few). Not having to support other compilers
-saves us a I<lot> of trouble.
-
-
-=head2 Running
-
-
-Q: There are lots of warning messages for the printing, all
-beginning with:
-
- dvilj4l: warning: Invalid keyword or value in \special -
-
-A: You should use dvips and ghostscript to print it: the slurs and
-beams are PS C<\special> commands
-
-
-Q: My symbols are all messed up after I upgraded, I get the wrong
-symbols and dvi-checksum errors!
-
-A: We obviously mucked with the fonts in the upgrade. Remove I<all>
-previous fonts, including the F<.pk> and F<.tfm> fonts in
-F</var/lib/texmf>. A script automating this has been included, see
-F<bin/clean-fonts.sh>
-
-
-Q: I don't get midi-output, even if I use B<-M>!
-
-A: Your \score should include a \midi block, eg.
-
- \score {
- \melodic { c4 c g g }
- \paper {}
- \midi {
- \output "myfile.mid";
- \tempo 4=70;
- }
- }
-
-The B<-M> option was added to LilyPond because processing the \paper
-block is so slow.
-
-Q: A lot of musical stuff doesn't make it to the MIDI file (dynamics,
-articulation, etc).
-
-A: The MIDI output was originally put in as a proof that MIDI could be
-done, and as a method of proof"reading" the input. The MIDI support
-is by no means finished. Patches appreciated.
-
-Q: I get
-
- can't load library 'libflower.so'
-
-A: You are using the dynamically compiled Flower library. Please set
-LD_LIBRARY_PATH to a directory containing F<libflower.so>
-
-=head2 DOZE
-
-Q: I downloaded the W95 port, and it doesn't match the website!
-
-A: The website is usually made from the latest snapshots. The W95
-binaries are only made every once in a while. They can lag several
-versions behind the latest version.
-
-Q: I want a DOS/NT/W95 port.
-
-A.0: Reconsider. Try Linux. It's fun!
-
-A.1: Currently (0.0.27), GNU LilyPond (and flowerLib) compiles,
-links and runs on Windows-nt, using Cygnus' gnu port (release b17.1).
-I (JCN) only had to make a minor workaround for missing library calls.
-Have a look at http://www.cygnus.com/gnu-win32. To make GNU LilyPond
-type C<make>. (I am not promising to maintain this platform, it is just
-that when forced into doze, i'm sometimes too lazy to reboot.)
-
-A.2: I haven't had time to find a Linux GCC crosscompiler (I<with> g++
-and libg++, mind you) to DOS/Windows (in rpm, please :-)
-
-A.3: If you are knowledgeable enough to make w32 compiles from time to
-time, please do so! We want to keep away from w32 as far as possible.
-
-Q: I just love to blindly run the (sometimes bit stale) .exe's you distribute.
-Why do i need cygwin.dll?
-
-A: It's all in this cut-n-paste:
-
-Minimalist GNU-Win32 Readme
-version 0.1.3
-March 20, 1997
-Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
-
-[...]
-
-0.3 Fixes and Improvements
-
-[...]
-In the "coming soon" category I have a version of the GNU Standard C++
-library ported to Mingw32. This means you can use iostreams, complex
-numbers and all those neat STL (Standard Template Library) things
-without needing the Cygwin DLL. I hope to put this port up for
-downloading soon (along with the source of course).
-
-[...]
-
-3.2 C++ Support
-
-To add C++ Support to the above the following extra files are required:
-
-In C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-
-961023:
- cc1plus.exe
-
-Note that this does not include support for the standard C++ libraries
-(only the C run time libraries) or for iostreams. That support is still
-only available with the Cygwin32 API.
-
diff --git a/Documentation/faq.yo b/Documentation/faq.yo
new file mode 100644
index 0000000000..968fbb6b3f
--- /dev/null
+++ b/Documentation/faq.yo
@@ -0,0 +1,398 @@
+article(FAQ - GNU LilyPond FAQs)()()()
+
+DEFINEMACRO(question)(1)(subsect(ARG1))
+
+sect(Miscellaneous)
+
+question(HELP! I'm stuck!)
+
+Please read this document carefully. If you are still at loss,
+send your questions to the bf(mailing list), and not to authors
+directly.
+
+Note: relative paths are meant to be relative to the source directory
+
+sect(Installing)
+
+question(Wow, the webpages look really neat, but if I install the .exe
+file on my DOS/windows 3.11 machine, it doesn't work.)
+
+The DOS port is done with the cygnus gnu/windows32 port of the GNU utils.
+It does em(not) work with windows 3.x; you need Windows-NT (95/98?). This
+is not a recommendation, however. We recommend you use Unix, in
+particular, use GNU/Linux. For further information see file(README-W32).
+
+question(I get all kinds of errors while compiling file(parser.cc))
+
+LilyPond uses features of bison version 1.25. Please confirm that
+you are using a version 1.25 or better, that is bf(GNU) bison
+bf(1.25). Don't forget to do "make clean" after installing it. Don't
+forget to remove the stale file(bison.simple) as well.
+
+If the problem persists, then please send a bug report to the mailing list.
+
+question(I upgraded by applying a patch, and now my configure/build breaks.)
+
+Patches don't include automatically generated files, i.e.
+file(configure) and files generated by file(configure). Regenerate them
+yourself:
+verb(
+ autoconf
+ configure
+)
+You might need to create some extra "out" directories. Do this with
+verb(
+ make outdirs
+)
+question(Some of your neat scripts fail, what directories do you use:)
+
+[This only applies if you don't do code(make install), and develop out
+of the source directory]
+
+I have a directory which contains all our development projects
+verb(
+ ~/usr/
+)
+
+which looks like file(/usr/)
+verb(
+ bin/
+ share
+ lib/
+ share/
+ src/
+
+ etc....
+)
+
+The directory file(~/usr/src/) contains something like
+includefile(../stepmake/Documentation/layout.yo)
+)
+
+~/usr/src/bin is in the PATH, and contains symlinks to the
+compiled executables.
+
+question(Is there an emacs mode?)
+
+Yes. It is included with the source archive as mudela-mode.el. If
+you have an rpm it is in /usr/doc/lilypond-X/. You have to install it
+yourself.
+
+sect(Language: mudela)
+
+question(Why can't you type code(#c) in stead of code(cis) ?)
+
+We think that code(#c) looks as if you are entering the symbols to
+print (which you are not; remember, you're entering the musical
+content in Mudela)
+
+
+question(Why do I have to type the accidentals to the note if I specified them?)
+
+Take this example
+verb(
+ cis cis
+)
+Independently of how it was written and what the current key was, you
+would say that you are playing and reading "two C-sharp" notes. We
+have tried to make the language somewhat context-free. Of course
+sheet music is not context-free. Unfortunately, sheet music is also 2
+dimensional, and ASCII is not.
+
+Technically it would be feasible to have the Interpreting phase do
+tricky things to add (or leave out) the accidentals, but we think that
+it is impractical: it hampers the readability and portability of your
+source, since you need LilyPond to fill in the details and actually
+make sense of it.
+
+
+question(What is code(cis) anyway)
+
+code(cis) is the dutch naming for C-sharp. The notes are named
+a, b,.., g. The suffix -is means sharp, and -es flat. This system is
+common in a number of languages (such as swedish, dutch, german.)
+Certain other languages (such as English, French and Italian) just add
+the word for "sharp" to the notename.
+
+We chose the Dutch system, because we're dutch. You are free to chose
+whatever names you like; they are user definable.
+
+
+question(Why are [] around the notes, and () inbetween?)
+
+[] designate beams, a note can only be in one beam at the same
+time. () is a slur, which connects notes. You need to be able to
+specify
+verb(
+ a()a()a
+)
+
+question(I want to insert some TeX commands.)
+
+You shouldn't: it's against LilyPond philosophy to have typesetting
+commands in the mudela source. Moreover, this would be difficult.
+LilyPond uses TeX like a glorified output engine: the output consists
+of (x,y) positions and symbols. You can only sensibly do TeX stuff in
+the symbol string. You can access the symbol string easily for some
+symbols (notably lyrics and code(^"text") commands).
+
+
+sect(Do you support ...)
+
+question(Do you support pop songs (chords, single staff, lyrics)?)
+
+Yes, see the file(twinkle-pop) example.
+
+
+question(Do you support guitar chord diagrams?)
+
+No, not yet. We ourselves don't play guitar, and don't know the
+fine points of this notation. We would welcome anyone who could give
+this a try.
+
+question(Do you support TAB notation?)
+
+No. The same as for the previous question goes, but TAB is a lot
+more work than diagrams (TAB needs modification of Parser, Lexer,
+Staff, Notehead, Stem code and all the code that creates these graphic
+elements.)
+
+question(Do you support multiple staff-sizes?)
+
+Yes and no. At this time you can choose between 11, 13, 16, 19,
+20, 23 and 20 pt staff-size. The sizes can't be changed per staff
+(yet). Look at file(standchen.ly) for an example.
+
+
+sect(How do I ....)
+
+question(How do I change the TeX layout?)
+
+See file(lilyponddefs.tex), it has some comments. Or use file(ly2dvi).
+
+question(How do I place lyrics under em(each) of the staves in a
+score, as choral music. I can work out how to put lyrics for each line
+all under the top line, or at the bottom but not between!)
+
+You change the order lyrics and staves. You have to name all
+staves (lyric and melodic), otherwise they will end up in the same
+staff/lyricline
+verb(
+ \score {
+ < \melodic \type Staff = "treble" \trebleMelody
+ \lyric \type Lyrics = "tlyrics" \trebtext
+ \type Staff = "bass" \melodic \bassMelody
+ \lyric \type Lyrics = "blyrics" \basstext
+ >
+ \paper { }
+ }
+)
+
+question(How do I put more than one marking on a note.)
+
+You can stack them
+verb(
+ c4^"a"^"b"
+)
+or use spacing-notes to put markings at different horizontal positions
+verb(
+ < c1
+ { s4\ff s4^"text" s4-\marcato s4 }
+ >
+)
+This also works for crescendi, eg,
+verb(
+ < c1
+ { s4\< s2 \! s4 }
+ >
+)
+
+
+question(How do I get bar numbers?)
+
+See file(init/engraver.ly). You have to uncomment some entries. To
+do this `portably' you should redefine some engravers in your own
+source files. Check out file(init/rhythm.ly).
+
+
+sect(Development)
+
+question(Could you implement feature XXXX? It is really easy, just extend
+the syntax to allow YYYY!)
+
+If it is reasonable, I'll add XXXX to the TODO list. In general
+finding a cute syntax (such as YYYY) isn't very hard. The complicated
+issue how to adapt the internals to do XXXX. The parser is really a
+simple front end to the complicated internals.
+
+
+question(Can I join in on LilyPond development? How do I do this?)
+
+LilyPond development is open for anyone who wants to join. We try
+to use a Bazaar style development model for LilyPond, see
+lurl(http://locke.ccil.org/~esr/writings/cathedral.html.) This means:
+frequent releases, everyone can send in a patch or do suggestions and
+all development discussions are public.
+
+To be precise, discussions take place on the gnu-music-discuss mailing
+list, which is open for subscription to everyone.
+
+
+question(I want to implement XXXX! Should I do this?)
+
+There might be better ways of doing XXXX, so it's a good thing to
+ask about this before you start hacking. If you want to keep in touch
+with current developments, you should subscribe to the mailing list
+(see the "links" section of the documentation).
+
+
+question(Is there a GUI frontend? Should I start building one?)
+
+LilyPond currently has no graphical interface. The authors seriously
+doubt if a simple-minded approach (dragging and dropping notes) is any
+easier or quicker to use than mudela. But for composing a graphical
+environment probably is indispensable.
+
+In any case email(Derek Wyatt)(wyatt@?.edu) is working on embryonal GTK
+based editor. There also a GUI package RoseGarden that could be
+extended to output mudela.
+
+
+question(I want to implement XXXX! How should I do this?)
+
+Your best bet of getting me to include code, is to present it as a
+"fait accompli", i.e., to send me a patch.
+
+
+question(I made some code, how do I get you to include it?)
+
+Send in a patch:
+verb(
+ diff -urN old-file new-file > patch
+)
+or
+verb(
+ diff -urN old-directory/ new-directory/ > patch
+)
+Alternatively, you can use issue the command
+verb(
+ make diff
+)
+
+Don't forget to put your name and e-mail address
+in the file(AUTHORS.pod) file, or you won't get credits :-]
+
+
+question(How do I learn the C++ code?)
+
+The entry point is in code(main()). Good luck. :-)
+
+Seriously, read, reread and reread internals and CodingStyle, and
+just start anywhere.
+
+Anywhere? Well, most of the comment doco are in the header files, so
+your best bet would be code(less lily/include/*.hh). Some of the most
+important data-structures are to be found in:
+verb(
+ - *request.hh
+ - engraver.hh
+ - performer.hh
+ - translator.hh
+ - score-elem.hh
+ - music.hh
+ - music-list.hh
+ - music-iterator.hh
+ - item.hh
+ - spanner.hh
+)
+
+question(Why GPL?)
+
+Yes.
+
+
+question(Your make system does not adhere to GNU coding standards, could you
+please fix it?)
+
+No. We have evaluated the standard GNU combination for compiling
+programs (autoconf, automake, libtool) and found to be inadequate in
+several respects. More detailed argumentation is included with
+LilyPond's generic make package code(StepMake)
+(see file(stepmake-x.x.x/Documentation/automake.urgh))
+
+LilyPond already compiles into a different directory ((the different
+directory is called out/, there is one in every source directory).
+make distclean essentially reduces to file(rm -f out/*) in every directory
+
+
+question(gdb crashes when I debug!)
+
+Upgrade to 4.17.
+
+question(Why do I need g++ >= 2.7?)
+
+By using g++, GNU LilyPond is portable to all platforms which support
+g++ (there are quite a few). Not having to support other compilers
+saves us a em(lot) of trouble.
+
+
+sect(Running)
+
+
+question(I use dvilj4, and there are lots of warning messages for the
+printing)
+
+You should use dvips and ghostscript to print the code(dvi) output:
+the slurs and beams are PS code(\special) commands.
+
+
+question(My symbols are all messed up after I upgraded, I get the
+wrong symbols and dvi-checksum errors!)
+
+We obviously mucked with the fonts in the upgrade. Remove em(all)
+previous fonts, including the file(.pk) and file(.tfm) fonts in
+file(/var/lib/texmf). A script automating this has been included, see
+file(buildscripts/clean-fonts.sh).
+
+
+question(The beams and slurs are gone if use the XDvi magnifying glass!?)
+
+The beams and slurs are done in PostScript. XDvi doesn't show
+PostScript in the magnifying glass. Complain to the XDvi maintainers.
+
+
+question(I don't get midi-output, even if I use bf(-M)!)
+
+Your \score should include a \midi block, eg.
+verb(
+ \score {
+ \melodic { c4 c g g }
+ \paper {}
+ \midi {
+ \output "myfile.mid";
+ \tempo 4=70;
+ }
+ }
+)
+The bf(-M) option was added to LilyPond because processing the \paper
+block is so slow.
+
+question(A lot of musical stuff doesn't make it to the MIDI file, eg.
+dynamics, articulation, etc.)
+
+The MIDI output was originally put in as a proof that MIDI could be
+done, and as a method of proof"reading" the input. The MIDI support
+is by no means finished. Patches appreciated.
+
+sect(Windows32)
+
+question(I downloaded the windows32 port, and it doesn't match the website!)
+
+The website is usually made from the latest snapshots. Binary releases,
+in particular the windows32 binaries, are only made every once in a while.
+They may lag several versions behind the latest version.
+
+question(But i want a native DOS/Windows-NT/95 port)
+
+Reconsider. Try Linux. It's fun!
+
diff --git a/Documentation/gnu-music.pod b/Documentation/gnu-music.pod
deleted file mode 100644
index 97656daf6e..0000000000
--- a/Documentation/gnu-music.pod
+++ /dev/null
@@ -1,176 +0,0 @@
-=head1 NAME
-
-GNU Music project - manifesto
-
-=head1 DESCRIPTION
-
-Random ranting about the GNU Music project.
-
-=head1 GOAL
-
-Provide musicians with free software for
-
-=over 4
-
-=item *
-
-composing
-
-=item *
-
-engraving
-
-=item *
-
-playing
-
-=item *
-
-sequencing
-
-=item *
-
-interchanging music
-
-=item *
-
-arranging
-
-=item *
-
-performing
-
-=item *
-
-Metacomposing
-
-=back
-
-These systems should encourage laymen to take up composing, in the
-same way that GNU tools have created a whole new generation of
-programmers.
-
-The public deserves free tools for composing and printing.
-
-
-=head1 REQUIREMENTS
-
-Emacs and TeX serve as useful examples of what programs by the GMP
-should be.
-
-=over 4
-
-=item high-quality
-
-(cf TeX), from engraving point of view
-
-=item high-quality
-
-(cf Emacs) from software point of view: like all GNU software, it
-should have no limits, be fast, etc.
-
-=item tweakable
-
-Printed music has a lot of styles, and special symbols. It may be
-unfeasible to provide and maintain lots of code that is hardwired
-into the system. The tools should be extensible/programmable like
-Emacs and TeX
-
-=item easy to use.
-
-That is, for technical users (that can read a manual). The learning
-curve should be as flat as possible but not at the expense of comfort
-of use and power.
-
-=back
-
-=head1 COMPONENTS
-
-=over 4
-
-=item A set of music fonts
-
-In development, the Feta font.
-
-=item A typesetting engine
-
-In development, included in LilyPond.
-A system with rules on how to set properties of items to be printed
-(up/down directions, breaking, dimensions, etc)
-It should be suited to interactive typesetting (so, incremental
-algorithms are needed)
-
-=item A display engine
-
-which can display clear notewriting in (say) an X-window
-
-Ideally the system should cooperate with the typesetting engine
-
-=item An ASCII language
-
-In development, LilyPond has a language.
-Having an ASCII format which enables urtext, and easy sharing (via
-mail and news forums) encourages cooperation and exchange of music.
-
-=item A printing engine
-
-In development, included in LilyPond.
-
-=item An input system
-
-The natural way to enter composed music is singing or playing it. The
-GMP should have module which can take keyboard input or microphone
-input and convert it to computer data. (microphone input would be
-difficult)
-
-=item sequencing
-
-(have no clue about this)
-
-=item A scanning system
-
-Having a system which can produce mudela from printed scores, greatly
-simplifies creating a collection of music
-
-=item A music-understanding system
-
-(difficult) A system to generate accompaniments, figured bass,
-automatic accompaniment, etc.
-
-=item A performing system
-
-A system which can play credible performances of abstract music
-representations. LilyPond has a bare bones system, but it cannot
-(yet) be described as "credible".
-
-=back
-
-=head1 PROGRAMS
-
-=over 4
-
-=item *
-
-A noninteractive typesetter, suited for batch jobs, and typesetting
-existing music. This would couple the ASCII language, the printing
-engine and the typesetting engine
-
-LilyPond is currently representing this section.
-
-=item *
-
-A GUI for composing. This would combine the display engine, the input
-system and the typesetting engine.
-
-=item *
-
-Libraries for reading and writing various audio/music/notation
-formats.
-
-=back
-
-Find sponsors. This project will take a long time, and in its infant
-stages, having a hard and small core which does a lot of work, is more
-efficient than lots of people doing small subprojects. Finanicial
-support would be desirable.
-
diff --git a/Documentation/gnu-music.yo b/Documentation/gnu-music.yo
new file mode 100644
index 0000000000..5e57da7854
--- /dev/null
+++ b/Documentation/gnu-music.yo
@@ -0,0 +1,108 @@
+article(GNU Music project - manifesto)(Han-Wen Nienhuys and Jan Nieuwenhuizen)()
+
+sect(Goal)
+
+Provide musicians with free software for
+
+itemize(
+it()composing
+it()engraving
+it()playing
+it()sequencing
+it()interchanging music
+it()arranging
+it()performing
+it()Metacomposing
+)
+
+These systems should encourage laymen to take up composing, in the
+same way that GNU tools have created a whole new generation of
+programmers.
+
+The public deserves free tools for composing and printing.
+
+
+sect(Requirements)
+
+Emacs and TeX() serve as useful examples of what programs by the GMP
+should be.
+
+description(
+dit(high-quality)
+ The software should be of high-quality from the application view.
+For example, the notation should be high-quality from an engraving
+point of view, like TeX()
+
+dit(high-quality) The software should be of high-quality point of
+ view, like all GNU software, it should have no limits, be fast,
+ etc.
+
+dit(tweakable)
+ Printed music has a lot of styles, and special symbols. It may be
+ unfeasible to provide and maintain lots of code that is hardwired
+ into the system. The tools should be extensible/programmable like
+ Emacs and TeX.
+
+dit(easy to use.)
+ That is, for technical users (that can read a manual). The learning
+ curve should be as flat as possible but not at the expense of comfort
+ of use and power.
+)
+
+sect(Components)
+
+description(
+dit(A set of music fonts)
+ In development, the Feta font.
+dit(A typesetting engine)
+ In development, included in LilyPond.
+ A system with rules on how to set properties of items to be printed
+ (up/down directions, breaking, dimensions, etc)
+ It should be suited to interactive typesetting (so, incremental
+ algorithms are needed)
+dit(A display engine)
+ which can display clear notewriting in (say) an X-window
+ Ideally the system should cooperate with the typesetting engine
+dit(An ASCII language)
+ In development, LilyPond has a language.
+ Having an ASCII format which enables urtext, and easy sharing (via
+ mail and news forums) encourages cooperation and exchange of music.
+dit(A printing engine)
+ In development, included in LilyPond.
+dit(An input system)
+ The natural way to enter composed music is singing or playing it. The
+ GMP should have module which can take keyboard input or microphone
+ input and convert it to computer data. (microphone input would be
+ difficult)
+dit(sequencing)
+ (have no clue about this)
+dit(A scanning system)
+ Having a system which can produce mudela from printed scores, greatly
+ simplifies creating a collection of music
+dit(A music-understanding system)
+ (difficult) A system to generate accompaniments, figured bass,
+ automatic accompaniment, etc.
+dit(A performing system)
+ A system which can play credible performances of abstract music
+ representations. LilyPond has a bare bones system, but it cannot
+ (yet) be described as "credible".
+)
+
+sect(Programs)
+
+itemize(
+it()A noninteractive typesetter, suited for batch jobs, and typesetting
+ existing music. This would couple the ASCII language, the printing
+ engine and the typesetting engine
+ LilyPond is currently representing this section.
+it()A GUI for composing. This would combine the display engine, the input
+ system and the typesetting engine.
+it()Libraries for reading and writing various audio/music/notation
+ formats.
+)
+
+Find sponsors. This project will take a long time, and in its infant
+stages, having a hard and small core which does a lot of work, is more
+efficient than lots of people doing small subprojects. Finanicial
+support would be desirable.
+
diff --git a/Documentation/index.pod b/Documentation/index.pod
deleted file mode 100644
index 0d3cc364e5..0000000000
--- a/Documentation/index.pod
+++ /dev/null
@@ -1,187 +0,0 @@
-=head1 NAME
-
-The Documentation of LilyPond -- the GNU Project music typesetter
-
-=head1 DESCRIPTION
-
-Note: These pages are created from the latest B<development snapshots>
-of LilyPond. You can look at the bottom if you want to know which
-version this was.
-
-
-=head2 Documentation: Introduction
-
-=over 4
-
-=item *
-<a href=ANNOUNCE-0.1
->
-The announcement of 0.1
-</a
->
-
-
-=item *
-<a href=DEDICATION
->
-DEDICATION
-</a
->
-
-=item *
-<a href=faq.html
->
-FAQs
-</a
->
-
-=item *
-<a href=INSTALL.html
->
-The installation instructions.
-</a
->
-
-=back
-
-=head2 Why: Background Information
-
-=over 4
-
-=item *
-<a href=MANIFESTO.html
->
-Design criteria
-</a
->
-
-=item *
-<a href=gnu-music.html
->
-The GNU Music project
-</a
->
-
-=item *
-<a href=mutopia.html
->
-Mutopia -- Music To the People
-</a
->
-
-=item *
-<a href=lelieblond.gif
->
-The lilypond logo (Big, format: .gif)
-</a
->
-
-=item *
-<a href=lelie_logo.gif
->
-The lilypond logo (medium size, format: .gif)
-</a
->
-
-
-=back
-
-=head2 Documentation: manuals
-
-
-=over 4
-
-=item *
-<a href=../tex/out-www/index.html
->
-TeX documents about LilyPond
-</a
->
-
-=item *
-<a href=../man/out-www/index.html
->
-Manual pages
-</a
->
-
-=item *
-<a href=vocabulary.html
->
-Musical vocabulary.
-</a
->
-
-=back
-
-=head2 The program
-
-=over 5
-
-=item *
-<a href=TODO
->
-The TODO list.
-</a
->
-
-=item *
-<a href=NEWS
->
-The Change log
-</a
->
-
-=item *
-<a href=internals.html
->
-internal structures.
-</a
->
-
-=item *
-<a href=CodingStyle.html
->
-The coding standards of the lilypond project.
-</a
->
-
-=item *
-<a href=AUTHORS.html
->
-AUTHORS
-</a
->
-
-=back
-
-=head2 Links
-
-=over 5
-
-=item *
-<a href=literature.html
->
-Papers, books and online-resources on music typesetting
-</a
->
-
-=item *
-<a href=other-packages.html
->
-Other packages for printing music.
-</a
->
-
-=item *
-<a href=links.html
->
-B<download> LilyPond and other interesting links
-</a
->
-
-
-
-=back
-
-
diff --git a/Documentation/index.yo b/Documentation/index.yo
new file mode 100644
index 0000000000..b9066871c0
--- /dev/null
+++ b/Documentation/index.yo
@@ -0,0 +1,66 @@
+DEFINEMACRO(tops)(0)(../topdocs/DOEXPAND(outdir))
+DEFINEMACRO(pics)(0)(../pictures/DOEXPAND(outdir))
+
+nsect(NAME)
+
+The Documentation of LilyPond -- the GNU Project music typesetter
+
+nsect(DESCRIPTION)
+
+Note: These pages are created from the latest bf(development snapshots)
+of LilyPond. You can look at the bottom if you want to know which
+version this was.
+
+
+nsubsect(Documentation: Introduction)
+
+itemize(
+it()url(The announcement of 0.1)(ANNOUNCE-0.1.html)
+it()url(DEDICATION)(DEDICATION.html)
+it()url(FAQs)(faq.html)
+it()url(The README)(DOEXPAND(tops)/README.html)
+it()url(The installation instructions)(DOEXPAND(tops)/INSTALL.html)
+it()url(But i'm using Windows, am i concerned now?)(README-W32.html)
+)
+
+nsubsect(Why: Background Information)
+
+itemize(
+it() url(Design criteria)(MANIFESTO.html)
+it()url(The GNU Music project)(gnu-music.html)
+it()url(Mutopia -- Music To the People)(mutopia.html)
+it()url(The lilypond
+ logo (Big, format: .gif))(DOEXPAND(pics)/lelieblond.gif)
+it()url(The lilypond
+ logo (medium size, format: .gif))(DOEXPAND(pics)/lelie_logo.gif)
+)
+
+nsubsect(Documentation: manuals)
+
+
+itemize(
+it()url(Mudela)(../tex/DOEXPAND(outdir)/mudela.html)
+it()url(TeX documents about LilyPond)(../tex/DOEXPAND(outdir)/index.html)
+it()url(Manual pages)(../man/DOEXPAND(outdir)/index.html)
+it()url(Musical vocabulary)(../tex/DOEXPAND(outdir)/vocabulary.html)
+)
+
+nsubsect(The program)
+
+itemize(
+it()url(The TODO list)(TODO.html)
+it()url(The Change log)(NEWS.html)
+it()url(About internal structures)(internals.html)
+it()url(The coding standards of the lilypond project)(CodingStyle.html)
+it()url(The Authors)(DOEXPAND(tops)/AUTHORS.html)
+it()url(Sending and applying Patches)(DOEXPAND(tops)/PATCHES.html)
+)
+
+nsubsect(Links)
+
+itemize(
+it()url(Papers, books and online-resources on music typesetting)
+(../tex/DOEXPAND(outdir)/index.html)
+it()url(Other packages for printing music)(../tex/DOEXPAND(outdir)/index.html)
+it()url(bf(download) LilyPond and other interesting links)(links.html)
+)
diff --git a/Documentation/internals.pod b/Documentation/internals.yo
index c3653bc51d..4cb8d0aae3 100644
--- a/Documentation/internals.pod
+++ b/Documentation/internals.yo
@@ -1,44 +1,35 @@
-=head1 NAME
+article(LilyPond internals)(Han-Wen Nienhuys)()
-LilyPond internals - doco to the internals of GNU LilyPond
-
-=head1 DESCRIPTION
-
-This page documents some aspects of the internals of GNU LilyPond. Some of
+This documents some aspects of the internals of GNU LilyPond. Some of
this stuff comes from e-mail I wrote, some from e-mail others wrote,
-some are large comments taken away from the headers. This is why this
-page may be a little incoherent.
+some are large comments taken away from the headers. This page may be
+a little incoherent. Unfortunately, it is also quite outdated. A
+more thorough and understandable document is in the works.
-You should use doc++ to take a peek at the sources.
+You should use code(doc++) to take a peek at the sources.
-This should become a Hacking-HOWTO. If you find any confusing stuff
-here, let me know. I am a hacker, and don't spend enough time doccing
-what I write. (Most stuff here which refers to the code is slightly outdated)
-If you finally have mastered some internal piece of lily, your
-explanation could be added here.
-
-=head1 OVERVIEW
+sect(OVERVIEW)
GNU LilyPond is a "multi-pass" system. The different passes have been
created so that they do not depend on each other. In a later stage
some parts may be moved into libraries, or seperate programs, or they
might be integrated in larger systems.
-=over 4
+description(
-=item Parsing:
+dit(Parsing:)
No difficult algorithms. The .ly file is read, and converted to a list
-of C<Scores>, which each contain C<Music> and paper/midi-definitions.
+of code(Scores), which each contain code(Music) and paper/midi-definitions.
-=item Creating elements
+dit(Interpreting music)
The music is walked column by column. The iterators which do the
walking report the Request to Translators which use this information
to create elements, either MIDI or "visual" elements. The translators
form a hierarchy; the ones for paper output are Engravers, for MIDI
-Performers).
+Performers.
The translators swallow requests, create elements, broadcast them to
other translators on higher or same level in the hierarchy:
@@ -56,168 +47,153 @@ the same voicegroups (beams, brackets, stems). In this way you can put
the voices of 2 instruments in a conductor's score so they make chords
(the Stem_reqs of both instruments will be merged).
-=item Prebreaking
+dit(Prebreaking)
-Breakable stuff (eg. clefs and bars) are copied into pre and postbreaks.
+Breakable stuff (eg. clefs and bars) are copied into pre and
+postbreaks.
-=item Preprocessing
+dit(Preprocessing)
Some dependencies are resolved, such as the direction of stems, beams,
and "horizontal" placement issues (the order of clefs, keys etc,
placement of chords in multi-voice music),
-=item Break calculation:
+dit(Break calculation:)
The lines and horizontal positions of the columns are determined.
-=item Breaking
+dit(Breaking)
Through some magical interactions with Line_of_score and Super_elem
-(check out the source) the "lines" are produced.
+(check out the source) the "lines" are produced.
All other spanners can figure across which lines they are spread. If
applicable, they break themselves into pieces. After this, each piece
(or, if there are no pieces, the original spanner itself) throws out
any dependencies which are in the wrong line.
-=item Postprocesing:
-
-Some items and all spanners need computation after the PCol positions
-are determined. Examples: slurs, vertical positions of staffs.
+dit(Postprocesing:)
-=item Output paper
+Some items and all spanners need computation after the Paper_column
+positions are determined. Examples: slurs, vertical positions of
+staffs.
-=back
+dit(Output paper)
-=head1 INTERNALS
+)
-This chapter deals with the internals of Mudela.
+sect(mudela)
-=head2 Requests
-
-As you can see, most information is stored in the form of a request.
-In music typesetting, the user might want to cram a lot more symbols
-on the paper than actually fits. To reflect this idea (the user asks
-more than we can do), the container for this data is called Request.
+Most information is stored in the form of a request. In music
+typesetting, the user might want to cram a lot more symbols on the
+paper than actually fits. To reflect this idea (the user asks more
+than we can do), the container for this data is called Request.
In a lot of other formats this would be called an 'Event'
-=over 4
-
-=item C<Barcheck_req>
-
-Checks during music processing if start of this voice element
-coincides with the start of a measure. Handy to check if you left out
-some voice elts.
-
-=item C<Note_req>
-
-LilyPond has to decide if the ball should be hanging left or
-right. This influences the horizontal dimensions of a column, and this
-is why request processing should be done before horizontal spacing.
-
-Other voices' frivolities may cause the need for accidentals, so this
-is also for the to decide. The engraver can decide on positioning based on
-ottava commands and the appropriate clef.
-
-=item C<Rest_req>
-
-Typeset a rest.
-
-=item C<Span_req>
-
-This type of request typically results in the creation of a C<Spanner>
-
-=item C<Beam_req>
-
-Start/stop a beam.
-
-Engraver has to combine this request with the stem_request, since the
-number of flags that a stem wants to carry will determine the
-number of beams.
-
-=item C<Dynamic>
-
-Each dynamic is bound to one note (a crescendo spanning multiple
-notes is thought to be made of two "dynamics": a start and a stop).
-Dynamic changes can occur in a smaller time than the length of its
-note, therefore fore each C<Dynamic> request carries a time, measured
-from the start of its note.
-
-=head2 Voice groups
-
-Voice group is a (time-dependent) collection of voices which share
-some characteristics (slurs, stems) at some time.
-
-=head1 Request_engraver
+description(
+dit(code(Barcheck_req))
+ Checks during music processing if start of this voice element
+ coincides with the start of a measure. Handy to check if you left out
+ some voice elts.
+dit(code(Note_req))
+ LilyPond has to decide if the ball should be hanging left or
+ right. This influences the horizontal dimensions of a column, and this
+ is why request processing should be done before horizontal spacing.
+ Other voices' frivolities may cause the need for accidentals, so this
+ is also for the to decide. The engraver can decide on positioning based on
+ ottava commands and the appropriate clef.
+dit(code(Rest_req))
+ Typeset a rest.
+dit(code(Span_req))
+ This type of request typically results in the creation of a code(Spanner)
+dit(code(Beam_req))
+ Start/stop a beam.
+ Engraver has to combine this request with the stem_request, since the
+ number of flags that a stem wants to carry will determine the
+ number of beams.
+dit(code(Dynamic))
+ Each dynamic is bound to one note (a crescendo spanning multiple
+ notes is thought to be made of two "dynamics": a start and a stop).
+ Dynamic changes can occur in a smaller time than the length of its
+ note, therefore fore each code(Dynamic) request carries a time, measured
+ from the start of its note.
+)
+
+sect(Request_engraver)
In the previous section the idea of Request has been explained, but
-this only solves one half of the problem. The other half is
-deciding which requests should be honored, which should merged with
-other requests, and which should be ignored. Consider this (pseudo)input
-
- < % chord
- \music { [c() c] }
- \music { [e() e] }
+this only solves one half of the problem. The other half is deciding
+which requests should be honored, which should merged with other
+requests, and which should be ignored. Consider this input
+
+verb(
+ \type Staff < % chord
+ { \meter 2/4; [c8 c8] }
+ {\meter 2/4; [e8 e8] }
>
+)
-Both the c and e are part of a chord (they are in the same
-Voice_group), so they should share the beams, and the two [ ] pairs
-should be merged. The slurs OTOH are specific for each voice, so they
-should not be shared.
+Both the cs and es are part of a staff (they are in the same
+Voice_group), so they should share meters, but the two [ ] pairs
+should be merged.
-The judge in this "allocation" problem a set of broker. It uses the
-C<Request_engraver> to do most of the work. For each request
-C<Complex_staff> queries so-called C<Request_engraver>s if they want
-to accept a request eg, the C<Notehead_engraver> will accept
-C<Note_req>s, and turn down C<Slur_req>s. If the Music_iterator
+The judge in this "allocation" problem a set of brokers: the requests
+are transmitted to so-called engravers which respond if they want to
+accept a request eg, the code(Notehead_engraver) will accept
+code(Note_req)s, and turn down code(Slur_req)s. If the Music_iterator
cannot find a engraver that wants the request, it is junked (with a
warning message).
After all requests have been either assigned, or junked, the Engraver
-will process the requests (which usually means creating an C<Item> or
-C<Spanner>). If a C<Request_engraver> creates something, it tells
-If all requests have been processed, then each Engraver is notified
-of any created Score_element, via a broadcasting system.
+will process the requests (which usually means creating an code(Item)
+or code(Spanner)). If a code(Request_engraver) creates something, it
+tells the enclosing context. If all items/spanners have been created,
+then each Engraver is notified of any created Score_element, via a
+broadcasting system.
-=head2 example:
+nsubsect(example:)
+verb(
c4
+)
produces:
- note_request (duration 1/4)
- stem_request (duration 1/4)
+verb(
+ Note_request (duration 1/4)
+ Stem_request (duration 1/4)
+)
-note_request will be taken by a C<Notehead_engraver>, stem_request
-will be taken by a C<Stem_beam_engraver>. C<Notehead_engraver> creates
-a C<Notehead>, C<Stem_beam_engraver> creates a C<Stem>. Both announce
-this to the Staff_engraver. Staff_engraver will tell
-C<Stem_beam_engraver> about the C<Notehead>, which will add the
-C<Notehead> to the C<Stem> it just created.
+Note_request will be taken by a code(Notehead_engraver), stem_request
+will be taken by a code(Stem_beam_engraver). code(Notehead_engraver)
+creates a code(Notehead), code(Stem_beam_engraver) creates a
+code(Stem). Both announce this to the Staff_engraver. Staff_engraver
+will tell code(Stem_beam_engraver) about the code(Notehead), which
+will add the code(Notehead) to the code(Stem) it just created.
To decide on merging, several engravers have been grouped. Please
-check F<init/engraver.ly>.
+check file(init/engraver.ly).
-=head1 ITEMS and SPANNERS
+sect(ITEMS and SPANNERS)
The symbols that are printed, are generated by items and spanners
(staff-elements). An item has one horizontal position, whereas a
spanner spans several columns.
-=head1 DEPENDENCIES
+sect(DEPENDENCIES)
In music symbols depend on each other: the stems of a beam should
point in the same direction as the beam itself, so the stems of a beam
depend on the beam. In the same way do scripts depend on the direction
-of the stem. To reflect this, LilyPond has the notion of dependency.
-It works in the same fashion that C<make> uses to build programs: before
-a stem is calculated, its dependencies (the beam) should be
-calculated. Before a slur is calculated, its dependencies (stems, noteheads)
-should be calculated.
+of the stem. To reflect this, LilyPond has the notion of dependency.
+It works in the same fashion that code(make) uses to build programs:
+before a stem is calculated, its dependencies (the beam) should be
+calculated. Before a slur is calculated, its dependencies (stems,
+noteheads) should be calculated.
-=head1 BREAKING
+sect(BREAKING)
So what is this PREBREAK and POSTBREAK stuff?
@@ -246,7 +222,7 @@ At a breakpoint, multiple symbols are printed; symbols to be printed
if the line is not broken, symbols to appear on the previous line, and
on the next line if it is broken.
-=head1 SPACING
+sect(SPACING)
Some terminology: I call a vertical group of symbols (notes) which
@@ -257,6 +233,7 @@ columns.
Example:
+verb(
time ----->
cols: col1 col2 col3 col4
@@ -273,13 +250,16 @@ Example:
time_difference (col1 , col3) = 1 wholes,
time_difference (col2 , col3) = 0.5 wholes,
etc.
+)
these differences are translated into ideal distances
+verb(
distance (col1,col2) = 10 pt
distance (col1,col3) = 14.1 pt
distance (col2,col3) = 10 pt
etc.
+)
as you can see, these distance are conflicting. So instead of
satisfying all those ideals simultaneously, a compromise is sought.
@@ -306,14 +286,3 @@ uses the concept of pre- and post-breaks.
minimum distance to other columns, to prevent symbols from running
into symbols of other columns.)
-
-=head1 SPACING 2
-
-
-This of course does not solve the problem of generating the
-springs. This is an area that needs a lot of work, and the optimal
-solution to find is not of a mathematical nature.
-
-Gourlay's solution is used.
-
-
diff --git a/Documentation/language.pod b/Documentation/language.pod
deleted file mode 100644
index 0757778d80..0000000000
--- a/Documentation/language.pod
+++ /dev/null
@@ -1,135 +0,0 @@
-=head1 NAME
-
-language.pod -- state of the art mudela-vapourware.
-
-=head1 DESCRIPTION
-
-[this document is slowly merged into the mudela doco, as the
-implementation progresses. If you want to see our previous musings,
-take out an old version of lilypond]
-
-=head1 REQUIREMENTS
-
-=head1 CONCRETE PROPOSALS
-
-
-=head1 Decisions (Sat 1997-3-15, dommelpijpje no21)
-
- \extract{ \from 2:3*4 \to 5 oboe }
-
-=head1 THOUGHTS
-
-=head2 Typing
-
-It is difficult to make mistakes with typing now because you have to
-tell LilyPond what it is dealing with
-
- staff { identifier }
-
-versus
-
- staff { music { identifier } }
-
-I'm not sure on dropping this, I'm afraid it will make the language
-less legible. Technically, dropping it is not very difficult (it will
-introduce slight parser-source bloat)
-
-What if the staff is extended to have some more blocks, all of which
-can be declared? Like the score now:
-
- score {
- a_staff_id
- a_midi_id
- a_paper_id
- a_command_id
- }
-
-This will only be readable if the Mudela-user rigidly uses hungarian,
-which he/she won't.
-
-Of course \key should take a \notename. In fact, I think we should
-program the note intervals (which are now hardcoded for midi purposes)
-To allow adaptation to other scales.
-
-As simple fix, we might do key declarations:
-
- \keybes= \key { bes es }
-
- \key{\keybes}
-
-
-
-=head2 Requests
-
-I want to give the user some access to the internals. Technically,
-engravers/performers will happily typeset voices which mix lyrics and
-notes, which combine stem requests and lyricreqs. I want to have a
-
- \request { melodic name = 5, acc = -10
- rhythmic ball=4 dots 2, lyric = "foobar" }
-
-type of syntax. This is the most flexible input format possible, since
-any valid LilyPond input can be made. This strongly implies tying
-mudela to LilyPond. That I don't mind, but it hampers
-portability. Suppose some commercial systems want to read mudela too.
-
-=head2 Command placement:
-
-
-=head2 Volta
-
-uhh?
-
-=head2 Filtering
-
-This is a idea of mine: we could filter some request types from
-voices,
-
-eg:
-
- \mel1 = \music { c-. d-. e-. f-. \meter {2*4} g-. a-. b.- c-. }
-
- \m1 = \filter { "script_req" \mel1 }
- \m2 = \filter { "command_req" \mel1 }
- \m3 = \filter { "melodic_req" \mel1 }
- \m3 = \filter { ("rhythmic_req") && (!"lyric_req") &&
- ("stem_req" || "beam_req") \mel1 }
- % syntax needs change. Clash with () slur?
-
- \mel2 = \music { c c g g a a g2 }
-
- \combined = \merge { \m1, \mel2 }
-
-This means m1 contains the scripts, of \mel, \m2 only the meter
-command surrounded by (essentially) some skips, and \m3 the notes
-without scripts or meters. This could be a solution to the "command in
-music vs. command with skip".
-
-Combined with merging of requests, this would be a powerful tool. In
-this example \combined is a combination of melody mel2 and the accents
-of \mel1.
-
-This idea is for advanced users, but it would come in handy in urtext
-editions:
-
- include "mozart-horn.ly"
-
- \m1 = \merge { \urmozart + \dennisbrain_interpretation }
- \m2 = \merge { \urmozart + \barrytuckwell_interpretation }
-
-
-=head2 Proposed operators:
-
-Just ideas:
-
- || && ! filter syntax
-
-=head2 Quoting
-
-Difficult. Hmm...
-
- \oboe = \music { ........................ }
-
- \oboefragment = \extract { \from 5*2 \to 6*2 \music { \oboe } }
-
-
diff --git a/Documentation/links.pod b/Documentation/links.pod
deleted file mode 100644
index ebc316f933..0000000000
--- a/Documentation/links.pod
+++ /dev/null
@@ -1,164 +0,0 @@
-=head1 NAME
-
-links - Links to other related websites
-
-=head1 DESCRIPTION
-
-This page contains links to organisations and ftp-sites, which may be
-of interest to LilyPond users.
-
-=head2 WWW
-
-=over 4
-
-=item http://www.gnu.org/
-
-LilyPond is part of the GNU Project started by the Free Software
-Foundation to create a system of free software for the world-community
-
-=item http://www.zib.de/Visual/software/doc++/index.html
-
-The documentation system for C++ sources, which is used for the
-LilyPond sources.
-
-=item http://www.iat.unc.edu/technology/music/music.html
-
-An enormous collection of music related URLs
-
-=item http://www.ram.org/ramblings/philosophy/fmp.html
-
-Musings on free music, plus hints how to record your own (free) music.
-
-=back
-
-=head2 Ftp
-
-We will upload major releases to the following sites:
-
-=over 4
-
-=item ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert
-
-The GNU/Linux FTP site
-
-=item ftp://ftp.dante.de/tex-archive/support/lilypond
-
-An ftp site which is in CTAN.
-
-=item ftp://ftp.redhat.com/pub/contrib/
-
-The FTP site of RedHat Software.
-
-
-=back
-
-At this moment we have about one development-patchlevel per week.
-These development releases will also be at
-
-=over 4
-
-=item ftp://pcnov095.win.tue.nl/pub/lilypond/development
-
-=item ftp://sca.uwaterloo.ca/pub/lilypond
-
-=item [your mirror here]
-
-=back
-
-=head2 News
-
-The following newsgroups all contain material relevant to LilyPond
-
-=over 4
-
-=item news://comp.music.research
-
-=item news://rec.music.compose
-
-=item news://gnu.announce
-
-=item news://comp.os.linux.announce
-
-=back
-
-=head2 Mailing lists
-
-For programs which are part of the GNU music project, the following
-mailing list have been setup:
-
-=over 4
-
-=item info-gnu-music@gnu.org
-
-A moderated list for information on the GNU Music project, to
-subscribe: send mail with subject "subscribe" to
-info-gnu-music-request@gnu.org.
-
-As this list is moderated, normal people should ask to drl@gnu.org or
-hanwen@cs.ruu.nl to forward announces instead of sending it to
-info-gnu-music@gnu.org
-
-=item help-gnu-music@gnu.org
-
-For help with programs from the GNU music project. To subscribe: send
-mail with subject "subscribe" to
-help-gnu-music-request@gnu.org
-
-=item bug-gnu-music@gnu.org
-
-If you have bugreports, you should send them to this list. If you want
-to read all bugreports, you should subscribe to this list. To
-subscribe: send mail with subject "subscribe" to
-bug-gnu-music-request@gnu.org
-
-=item gnu-music-discuss@gnu.org,
-
-For discussions concerning the GNU Music project, to subscribe: send
-mail with subject "subscribe" to
-gnu-music-discuss-request@gnu.org
-
-This list is archived at
-http://www.jab.org/mail/gnu-music-discuss@gnu.org
-
-=back
-
-Announces of new versions will be sent to info-gnu-music and
-gnu-music-discuss.
-
-
-=head2 Backlinks
-
-=over 4
-
-=item http://www.ssc.com/linux/
-
-The Number One Free Operating System Kernel: Linux
-
-=item http://www.bright.net/~dlphilp/linux_soundapps.html
-
-Dave Philips' Linux sound applications page
-
-=item http://www.home.fh-karlsruhe.de/~rost0001/web/musik/musik.html
-
-Stochastic composing using LilyPond
-
-=item http://www.medieval.org/emfaq/scores/software.html
-
-More software for (early) music.
-
-=item http://www.emry.net/webwatcher/
-
-The Linux webwatcher: this site logs changes in important Linux sites.
-
-=item http://www.pbm.com/~lindahl/ravenscroft/modern
-
-Transcriptions of the music of Thomas Ravenscroft, partly using
-LilyPond
-
-=item http://www.redhat.com/
-
-RedHat Software Inc. develops and markets a GNU/Linux distribution (of
-which we are avid users)
-
-
-=back
diff --git a/Documentation/links.yo b/Documentation/links.yo
new file mode 100644
index 0000000000..acabea0e7b
--- /dev/null
+++ b/Documentation/links.yo
@@ -0,0 +1,135 @@
+
+article(links - Links to other related websites)(HWN and JCN)()
+
+sect(DESCRIPTION)
+
+This page contains links to organisations and ftp-sites, which may be
+of interest to LilyPond users.
+
+sect(WWW)
+
+nsubsect(LilyPond)
+
+description(
+dit(lurl(http://www.cs.uu.nl/people/hanwen/lilypond/))Han-Wen's site.
+dit(lurl(http://www.digicash.com/~jan/lilypond/))Jan's site.
+dit(lurl(http://sca.uwaterloo.ca/lilypond/))The canadian mirror
+(thanks, Eric!)
+)
+
+subsect(Other)
+
+description(
+dit(lurl(http://www.gnu.org/))
+ LilyPond is part of the GNU Project started by the Free Software
+ Foundation to create a system of free software for the world-community
+dit(lurl(http://www.zib.de/Visual/software/doc++/index.html))
+ The documentation system for C++ sources, which is used for the
+ LilyPond sources.
+dit(lurl(http://www.digicash.com/~jan/yodl/index.html))
+ LilyPond documentation is in Yodl. You'll need a recent
+ development version from
+ lurl(ftp://pcnov095.win.tue.nl/pub/yodl/development).
+dit(lurl(http://www.iat.unc.edu/technology/music/music.html))
+ An enormous collection of music related URLs
+dit(lurl(http://www.ram.org/ramblings/philosophy/fmp.html))
+ Musings on free music, plus hints how to record your own (free) music.
+)
+
+sect(Ftp)
+
+We will upload major releases to the following sites:
+
+description(
+dit(lurl(ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert))
+ The GNU/Linux FTP site
+
+dit(lurl(ftp://ftp.dante.de/tex-archive/support/lilypond))
+ An ftp site which is in CTAN. CTAN is a worldwide network of
+ sites full of TeX() stuff.
+
+dit(lurl(ftp://ftp.redhat.com/pub/contrib/))
+ The FTP site of RedHat Software.
+)
+
+At this moment we have about one development-patchlevel per week.
+These development releases will also be at
+
+itemize(
+it()lurl(ftp://pcnov095.win.tue.nl/pub/lilypond/development)
+
+it()lurl(ftp://sca.uwaterloo.ca/pub/lilypond)
+
+it()[your mirror here]
+)
+
+sect(News)
+
+The following newsgroups all contain material relevant to LilyPond
+itemize(
+
+it()lurl(news://comp.music.research)
+
+it()lurl(news://rec.music.compose)
+
+it()lurl(news://gnu.announce)
+
+it()lurl(news://comp.os.linux.announce)
+)
+
+sect(Mailing lists)
+
+For programs which are part of the GNU music project, the following
+mailing list have been setup:
+
+description(
+dit(info-gnu-music@gnu.org)
+ A moderated list for information on the GNU Music project, to
+ subscribe: send mail with subject "subscribe" to
+ info-gnu-music-request@gnu.org.
+
+ As this list is moderated, normal people should ask to
+ nemail(David R. Linn)(drl@gnu.org) or
+ nemail(Han-Wen)(hanwen@cs.uu.nl) to forward announces instead of
+ sending it to info-gnu-music@gnu.org
+
+dit(help-gnu-music@gnu.org)
+ For help with programs from the GNU music project. To subscribe: send
+ mail with subject "subscribe" to
+ email(help-gnu-music-request@gnu.org)
+dit(bug-gnu-music@gnu.org)
+ If you have bugreports, you should send them to this list. If you want
+ to read all bugreports, you should subscribe to this list. To
+ subscribe: send mail with subject "subscribe" to
+ email(bug-gnu-music-request@gnu.org)
+dit(gnu-music-discuss@gnu.org,)
+ For discussions concerning the GNU Music project, to subscribe: send
+ mail with subject "subscribe" to
+ email(gnu-music-discuss-request@gnu.org)
+ This list is archived at
+ lurl(http://www.jab.org/mail/gnu-music-discuss@gnu.org)
+)
+
+Announces of new versions will be sent to info-gnu-music and
+gnu-music-discuss.
+
+sect(Backlinks)
+
+description(
+dit(lurl(http://www.ssc.com/linux/))
+ The Number One Free Operating System Kernel: Linux
+dit(lurl(http://www.bright.net/~dlphilp/linux_soundapps.html))
+ Dave Philips' Linux sound applications page
+dit(lurl(http://www.home.fh-karlsruhe.de/~rost0001/web/musik/musik.html))
+ Stochastic composing using LilyPond
+dit(lurl(http://www.medieval.org/emfaq/scores/software.html))
+ More software for (early) music.
+dit(lurl(http://www.emry.net/webwatcher/))
+ The Linux webwatcher: this site logs changes in important Linux sites.
+dit(lurl(http://www.pbm.com/~lindahl/ravenscroft/modern))
+ Transcriptions of the music of Thomas Ravenscroft, partly using
+ LilyPond
+dit(lurl(http://www.redhat.com/))
+ RedHat Software Inc. develops and markets a GNU/Linux distribution (of
+ which we are avid users)
+)
diff --git a/Documentation/literature.pod b/Documentation/literature.pod
deleted file mode 100644
index 37fb180df3..0000000000
--- a/Documentation/literature.pod
+++ /dev/null
@@ -1,325 +0,0 @@
-=head1 NAME
-
-Literature -- reading on music engraving, typesetting, etc.
-
-=head1 DESCRIPTION
-
-A list of resources on music printing/writing and engraving. Please
-note that don't have access to most material.
-
-[Personal comments appear in brackets. What I (HWN) know, I've
-commented myself. They are just my personal comments, not to be taken
-too seriously]
-
-=head2 Music engraving: references
-
-Helene Wanske. ``Musiknotation --- Von der Syntax des Notenstichs zum
-EDV-gesteuerten Notensatz'', Schott-Verlag, Mainz 1988. ISBN
-3-7957-2886-x.
-
-[I. A very thorough overview of engraving practices of various
-craftsmen. It includes detailed specs of characters, dimensions etc.
-II. a thorough overview of a anonymous (by now antiquated) automated
-system. EDV Means e(lektronischen) D(aten)v(erarbeitung), electronic
-data processing HWN]
-
-Maxwell Weaner and Walter Boelke. ``Standard Music Notation Practice'',
-revised edition by Arnold Broido and Daniel Dorff. Music Publisher's
-Association of the United States Inc., 1993.
-
-Ted Ross. ``Teach yourself the art of music engraving and processing''
-(3rd edition). Hansen House, Miami Beach, FLorida.
-
-[This is about engraving, i.e. professional typesetting. It contains
-directions on good typesetting, but the sections on reproduction
-technicalities, how to use pens and history are interesting.
-Especially the section on Music Typewriters is amusing HWN]
-
-Gardner Read. ``Modern Rhythmic Notation.'' Indiana University Press,
-1978.
-
-[Sound (boring) review of the various hairy rhythmic notations used by
-avant-garde composers HWN]
-
-Gardner Read. ``Music Notation: a Manual of Modern Practice'' (2nd
-edition). Taplinger Publishing, New York. (Out of print)
-
-[This is as close to the ``standard'' reference work for music
-notation issues as one is likely to get. MB]
-
-Karl Hader. ``Aus der Werkstatt eines Notenstechers'' Waldheim--Eberle
-Verlag, Vienna 1948
-
-[Hader was the chief-engraver of the Waldheim-Eberle music publishers.
-This book contains the most important rules on engraving (according to
-[Chlapik])]
-
-MPA. Standard music notation specifications for computer programming.
-December 1996
-
-[Pamphlet explaining some fine points in music font design HWN]
-
-D. Roush. ``Music Formatting Guidelines,'' Technical Report
-OSU-CISRC-3/88-TR10, Department of Computer and Information Science,
-The Ohio State University, 1988.
-
-[Rules on formatting music formulated for use in computers. Mainly
-distilled from [Ross] HWN]
-
-
-=head2 Notation with computers
-
-Donald Byrd. ``Music Notation by Computer''. Dissertation Indiana
-University, 1985.
-
-Donald Byrd. ``A System for Music Printing by Computer.'' Computers
-and the Humanities, 8 (1974), 161-72.
-
-Leland Smith. ``Editing and Printing Music by Computer.'' Journal of
-Music Theory, 17 (1973), 292-309.
-
-[If I remember correctly, this was concerned more with an input
-language than with the typography. SP.]
-
-David A Gomberg. ``A Computer-Oriented System for Music Printing.''
-Dissertation Washington University. 1975.
-
-Walter B Hewlett. and Eleanor Selfridge-Field. ``Directory of Computer
-Assisted Research in Musicology''. Menlo Park, CA: Center for Computer
-Assisted Research in the Humanities.
-
-[Annual editions since 1985, many containing surveys of music
-typesetting technology. SP]
-
-David A. Gomberg; ``A Computer-oriented System for Music Printing.''
-Computers and the Humanities, Vol.11, pp 63-80.
-
-John S. Gourlay. ``Spacing a Line of Music,'' Technical Report
-OSU-CISRC-10/87-TR35, Department of Computer and Information Science,
-The Ohio State University, 1987.
-
-[Algorithm for generating spacing in one line of (polyphonic) music,
-tailored for use with MusiCopy. LilyPond uses a variant of it (as of
-pl 76) HWN]
-
-Allen Parish, Wael A. Hegazy, John S. Gourlay, Dean K. Roush and
-F. Javier Sola. ``MusiCopy: An automated Music Formatting System''.
-Technical Report OSU-CISRC-10/87-TR29, Department of Computer and
-Information Science, The Ohio State University, 1987.
-
-[A brief overview of MusiCopy HWN]
-
-John S. Gourlay, A. Parrish, D. Roush, F. Sola, Y. Tien. ``Computer
-Formatting of Music,'' Technical Report OSU-CISRC-2/87-TR3, Department
-of Computer and Information Science, The Ohio State University, 1987.
-
-[This paper discusses the development of algorithms for the formatting
-of musical scores (from abstract). It also appeared at PROTEXT III,
-Ireland 1986]
-
-Wael A. Hegazy. ``On the Implementation of the MusiCopy Language
-Processor,'' Technical Report OSU-CISRC-10/87-TR34, Department of
-Computer and Information Science, The Ohio State University, 1987.
-
-[Describes the "parser" which converts MusiCopy MDL to MusiCopy
-Simultaneities & columns HWN]
-
-Wael A. Hegazy and John S. Gourlay. ``Optimal line breaking in
-music''. Technical Report OSU-CISRC-8/87-TR33, Department of Computer
-and Information Science, The Ohio State University, 1987
-
-[This generalizes TeX's breaking algorithm to music. It also appeared in
-Document Manipulation and Typography, J.C. van Vliet (ed) 1988. HWN]
-
-Dean K. Roush. ``Using MusiCopy''. Technical Report
-OSU-CISRC-18/87-TR31, Department of Computer and Information Science,
-The Ohio State University, 1987
-
-[User manual of MusiCopy. Includes an impressive example piece. HWN.]
-
-A. Parrish and John S. Gourlay. ``Computer Formatting of Musical
-Simultaneities,'' Technical Report OSU-CISRC-10/87-TR28, Department of
-Computer and Information Science, The Ohio State University, 1987.
-
-[Placement of balls, stems, dots which occur at the same moment
-("Simultaneity") HWN]
-
-F. Sola. ``Computer Design of Musical Slurs, Ties and Phrase Marks,''
-Technical Report OSU-CISRC-10/87-TR32, Department of Computer and
-Information Science, The Ohio State University, 1987.
-
-[Overview of a procedure for generating slurs HWN]
-
-F. Sola and D. Roush. ``Design of Musical Beams,'' Technical Report
-OSU-CISRC-10/87-TR30, Department of Computer and Information Science,
-The Ohio State University, 1987.
-
-[Calculating beam slopes HWN]
-
-John. S. Gourlay. ``A language for music printing'', Communications
-of the ACM, Vol. 29(5), 388--401, 1986.
-
-[This paper describes the MusiCopy musicsetting system and an input
-language to go with it. HWN]
-
-Dorothea Blostein and Lippold Haken. ``The Lime Music Editor: A Diagram
-Editor Involving Complex Translations'', Software Practice and
-Experience, Vol. 24, No. 3, March 1994, pp. 289-306.
-
-[A description of various conversions, decisions and issues relating
-to this interactive editor HWN]
-
-Lippold Haken and Dorothea Blostein. ``The Tilia Music Representation:
-Extensibility, Abstraction, and Notation Contexts for the Lime Music
-Editor'', Computer Music Journal, Vol. 17, No. 3, 1993, pp. 43-58
-
-[A description of Lime internals (which resemble older (before
-0.0.68pre) LilyPond data structures somewhat) HWN]
-
-Lippold Haken and Dorothea Blostein. ``A New Algorithm for Horizontal
-Spacing of Printed Music'', International Computer Music Conference,
-Banff, Sept. 1995, pp. 118-119.
-
-[This describes an algorithm which uses springs between adjacent
-columns. This algorithm is a "subclass" of the LilyPond algorithm. HWN]
-
-Dorothea Blostein and Lippold Haken. ``Justification of Printed Music'',
-Communications of the ACM, VolJ34, No. 3, March 1991, pp. 88-99.
-
-[This paper provides a shallow overview of the algorithm used in LIME
-for spacing individual lines. HWN]
-
-Gary M. Rader. ``Creating Printed Music Automatically''. Computer Vol
-29(6), June 1996, pp 61--69.
-
-[Describes a system called MusicEase, and explains that it uses
-"constraints" (which go unexplained) to automatically position various
-elements. HWN]
-
-Stephen Dowland Page. ``Computer Tools for Music Information
-Retrieval''. Dissertation University of Oxford, 1988.
-
-[Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford,
-or to the British Library, instead. SP]
-
-Ren\'e Roelofs. ``Een Geautomatiseerd Systeem voor het Afdrukken van
-Muziek'' afstudeerscriptie Bestuurlijke informatica, no 45327, Erasmus
-universiteit Rotterdam, 1991. (``An automated system for printing
-music'' Master's Thesis Managerial Computer Science.)
-
-[This dutch thesis describes a simplistic (monophonic) typesetting system,
-and focuses on the breaking algorithm, which is taken from Hegazy &
-Gourlay HWN]
-
-Miguel Filgueiras and Jos\'e Paulo Leal. ``Representation and
-manipulation of music documents in SceX''. Electronic Publishing,
-vol. 6 (4), 507--518, 1993.
-
-Eric Foxley, ``Music --- A language for typesetting music scores''.
-Software --- Practice and Experience, Vol. 17(8), 485--502, 1987.
-
-[A paper on a TROFF preprocessor to typeset music. The output shown is
-not very sophisticated, and contains some typographical atrocities HWN]
-
-Miguel Filgueiras. ``Implementing a Symbolic Music Processing
-System''. LIACC, Universidade do Porto, 1996; submitted.
-
-Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC,
-Universidade do Porto, forthcoming.
-
-=head2 Engraving: further reading
-
-Tom Gerou and Linda Lusk. ``Essential Dictionary of Music Notation''
-Alfred Publishing, Van Nuys CA, 1996. ISBN 0-88284-768-6.
-
-[A concise, alphabetically ordered list of typesetting and music
-(notation) issues with a rather simplistic attitude but in most
-cases "good-enough" answers JCN]
-
-Herbert Chlapik. ``Die Praxis des Notengraphikers''. Doblinger, 1987.
-ISBN 3-9000 035-96-2.
-
-[An clearly written book for the casually interested reader. It shows
-some of the conventions and difficulties in printing music HWN]
-
-The University of Colorado Music Engraving page.
-http://obenamots.cc.colorado.edu/Musicpress/engraving.html
-
-[Webpages about engraving (designed with finale users in mind) (sic) HWN]
-
-Richard Rastall. ``The Notation of Western Music: an
-Introduction''. J. M. Dent & Sons London, 1983
-
-[Interesting account of the evolution and origin of common notation
-starting from neumes, and ending with modern innovations HWN]
-
-Anthony Donato. Preparing Music Manuscript. Englewood Cliffs:
-Prentice-Hall, 1963.
-
-Donemus. ``Uitgeven van muziek''. Donemus Amsterdam, 1900
-
-George Heussenstamm. ``The Norton Manual of Music Notation''. New York:
-Norton, 1987.
-
-Erdhard Karkoshka. ``Notation in New Music. Trans. Ruth
-Koenig''. Praeger Publishers, New York, 1972. (Out of print)
-
-C. Roemer, ``The Art of Music Copying''. Roerick music co., Sherman Oaks
-(CA), 1973.
-
-Glen Rosecrans. ``Music Notation Primer''. New York: Passantino, 1979.
-
-Kurt Stone. ``Music Notation in the Twentieth Century''. New York: Norton,
-1980. (Out of print)
-
-
-
-=head2 Other stuff
-
-
-Peter S. Langston. ``Unix music tools at Bellcore''. Software ---
-Practice and Experience, Vol. 20(S1), S1/47--S1/61, 1990.
-
-[This paper deals with some command-line tools for music editing and
-playback. It doesn't mention notation issues, but does come with the
-grand idea (not) of using music to monitor complex systems. Imagine
-your nuclear plant supervisor to use AC/DC for checking the reactor HWN]
-
-
-=head2 File formats
-
-Howard Wright <Howard.Wright@ed.ac.uk>, ``how to read and write tab: a
-guide to tab notation''.
-http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html
-
-[FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN]
-
-Cindy Grande, ``NIFF6a Notation Interchange File Format''. Grande
-Software Inc., 1995. http://www.jtauber.com/music/encoding/niff/
-
-[Specs for NIFF, a comprehensive but binary (yuk) format for notation HWN]
-
-SMDL, Standard Musical Description Language,
-ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf. ISO/IEC DIS 10743.
-
-[An ISO defined SGML language. A much more thorough treatment of music
-definition than Mudela (but not suited for manual entry). It deals
-with notation and perfomance issues by (basically) saying "You can
-embed a MIDI or NIFF file" (sic) HWN]
-
-MPDL,
-
-HMSL, Hierarchical Music Structured Language,
-
-DARMS,
-
-enigma,
-
-=head1 AUTHORS
-
-References and comments contributed by Han-Wen Nienhuys (HWN), Miguel
-Filgueiras, Mark Basinski (MB), Dorothea Blostein, Stephen Page (SP),
-Jan Nieuwenhuizen (JCN), Peter Kerr.
-
-This should really be redone in BibTeX
-
diff --git a/Documentation/man/Makefile b/Documentation/man/Makefile
index 1dc4f661ec..a3157a3eb9 100644
--- a/Documentation/man/Makefile
+++ b/Documentation/man/Makefile
@@ -1,19 +1,28 @@
+# Documentation/man/Makefile
depth = ../..
-include $(depth)/make/Include.make
-include $(depth)/make/Docrules.make
+include $(depth)/make/Stepmake.make
+
+include $(stepdir)/Documentation.vars.make
+include $(stepdir)/Documentation_rules.make
+
SECTION=1
-MANTXT = $(addprefix $(outdir)/, $(addsuffix $(DOTTEXT),$(basename $(PODFILES) .pod)))
-MANGROFF = $(addprefix $(outdir)/, $(addsuffix .$(SECTION),$(basename $(PODFILES) .pod)))
+MANTXT = $(addprefix $(outdir)/, $(addsuffix .txt,$(basename $(TEXINFO_FILES) .texinfo)))
+MANGROFF = $(addprefix $(outdir)/, $(addsuffix .$(SECTION),$(basename $(YO_FILES) .yo)))
+
+OUTTEXINFO_FILES= $(addprefix $(outdir)/, $(addsuffix .texinfo,$(basename $(YO_FILES) .yo)))
default: $(MANTXT) $(MANGROFF)
+texinfo: $(OUTTEXINFO_FILES)
INSTALLATION_OUT_FILES=$(MANGROFF)
INSTALLATION_OUT_DIR=$(mandir)/man$(SECTION)
-include $(depth)/make/Install_outfiles.make
+include $(stepdir)/Install_outfiles.make
-local-WWW: $(OUTPODFILES:.pod=.html)
- ls-latex --title 'Manual pages for LilyPond' $(PODFILES) > $(outdir)/index.html
+local-WWW: $(MANGROFF:.1=.html)
+ $(PYTHON) $(step-bindir)/ls-latex.py --package=$(topdir) --title 'Manual pages for LilyPond' $(YO_FILES) \
+ | sed "s!$(outdir)/!!g" > $(outdir)/index.html
+ $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) $(outdir)/index.html
diff --git a/Documentation/man/convert-mudela.pod b/Documentation/man/convert-mudela.pod
deleted file mode 100644
index 8ba3d04e5f..0000000000
--- a/Documentation/man/convert-mudela.pod
+++ /dev/null
@@ -1,49 +0,0 @@
-=head1 NAME
-
-convert-mudela - convert mudela to newer versions
-
-=head1 SYNOPSIS
-
- convert-mudela [options] [files]
-
-=head1 DESCRIPTION
-
-convert-mudela sequentially applies different mudela-conversions to
-upgrade a Mudela input file from FROM_PATCHLEVEL to TO_PATCHLEVEL.
-If no files are given, the standard input and output are used
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<--output>
-
-The output file to write
-
-=item B<--edit>
-
-Do an inline edit of the input file. override B<--output>
-
-=item B<--show-rules>
-
-shows all known conversions.
-
-=item B<--from>=FROM_PATCHLEVEL
-
-Set the level to convert from. If this is not set, convert-mudela will
-guess this, on the basis of C<\version> strings in the file
-
-=item B<--to>=TO_PATCHLEVEL
-
-Set the goal version of the conversion. It defaults to the latest
-available version.
-
-=back
-
-=head1 BUGS
-
-Not all language changes are handled. Multiple output options won't work
-
-=head1 AUTHOR
-
-Han-Wen Nienhuys <hanwen@gnu.org>
diff --git a/Documentation/man/convert-mudela.yo b/Documentation/man/convert-mudela.yo
new file mode 100644
index 0000000000..a9640b80f6
--- /dev/null
+++ b/Documentation/man/convert-mudela.yo
@@ -0,0 +1,67 @@
+
+mailto(janneke@gnu.org)
+COMMENT(ugh, should be automated)
+COMMENT(urg
+ (PIPETHROUGH(echo -n `date '+%d/%b/%y'|tr '[a-z]' '[A-Z]'`)())
+)
+manpage(convert-mudela)
+ (1)
+ (1998)
+ (The LilyPond package)
+ (convert-mudela)
+
+metalC(Automatically generated by yodl(1) from convert-mudela.yo.)
+
+node(Programs)(convert-mudela)(Invoking convert-mudela)(Programs)
+manpagename(convert-mudela)(convert-mudela to newer versions)
+
+convert-mudela sequentially applies different mudela-conversions to
+upgrade a Mudela input file.
+
+menu(
+mit(Invoking convert-mudela)( Command options supported by file(convert-mudela))
+mit(Bugs convert-mudela)( Bugs)
+mit(Author convert-mudela)( Author)
+)
+
+manpagedescription()
+
+Upgrade a Mudela input file from FROM_PATCHLEVEL to TO_PATCHLEVEL.
+If no files are given, the standard input and output are used.
+
+node(convert-mudela)(Invoking convert-mudela)(Bugs convert-mudela)(convert-mudela)
+manpagesynopsis()
+
+ convert-mudela [options] [files]
+
+manpageoptions()
+description(
+dit(--output)
+ The output file to write
+dit(--edit)
+ Do an inline edit of the input file. override @samp{--output}
+dit(--show-rules)
+ shows all known conversions, and exit
+dit(--from=FROM_PATCHLEVEL)
+ Set the level to convert from. If this is not set, convert-mudela will
+ guess this, on the basis of code(\version) strings in the file
+dit(--to=TO_PATCHLEVEL)
+ Set the goal version of the conversion. It defaults to the latest
+ available version.
+)
+
+node(Invoking convert-mudela)(Bugs convert-mudela)(Author convert-mudela)(convert-mudela)
+manpagesection(BUGS)
+
+Not all language changes are handled. Multiple output options won't
+work.
+
+convert-mudela is written in python, so you have install
+url(python)(http://www.python.org).
+
+
+node(Bugs convert-mudela)(Author convert-mudela)(LilyPond)(convert-mudela)
+manpageauthor()
+
+nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl), lurl(http://www.cs.uu.nl/people/hanwen)
+
diff --git a/Documentation/man/lilypond.pod b/Documentation/man/lilypond.pod
deleted file mode 100644
index 9ba489dc1c..0000000000
--- a/Documentation/man/lilypond.pod
+++ /dev/null
@@ -1,329 +0,0 @@
-=head1 NAME
-
-lilypond - the GNU music typesetter
-
-=head1 SYNOPSIS
-
- lilypond [options] [inputfiles]
-
-=head1 DESCRIPTION
-
-LilyPond is the GNU Project music typesetter. The program generates
-visual or auditive output from a music definition file: it can typeset
-formatted sheet music to a TeX file and play (mechanical) performances
-to a MIDI file.
-
-=head1 OPTIONS
-
-=over 5
-
-=item B<-I,--include>=F<FILE>,
-
-add F<FILE> to the search path for input files.
-
-=item B<-M,--midi>
-
-This disables TeX output. If you have a \midi definition, it will do
-the midi output only.
-
-=item B<-d,--dependencies>
-
-Also output rules to be included in Makefile.
-
-=item B<-D,--debug>,
-
-Turn debugging info on. GNU LilyPond reads the file F<.dstreamrc>,
-which lists what functions and classes may produce copious debugging
-output.
-
-=item B<-t,--test>,
-
-Switch on any experimental features. Not for general public use.
-
-=item B<-w,--warranty>,
-
-Show the warranty with which GNU LilyPond comes. (It comes with B<NO
-WARRANTY>!)
-
-=item B<-o,--output=>F<FILE>,
-
-Set the default output file to F<FILE>.
-
-=item B<-h,--help>,
-
-Show a summary of usage.
-
-=item B<-i,--init=>F<FILE>,
-
-Set init file to F<FILE> (default: F<lily-init.ly>).
-
-=item B<--include, -I>=F<DIRECTORY>,
-
-Add F<DIRECTORY> to the search path for input files.
-
-=item B<--ignore-version, -V>,
-
-Make incompatible mudela version non-fatal.
-
-=item B<--find-quarts, -Q>,
-
-Warn about melodic intervals larger than a fourth. Useful for
-converting absolute octave mode stuff to relative octaves.
-
-
-=back
-
-=head1 FEATURES
-
-This is an overview of the features that GNU LilyPond supports. For
-details on how to use them, you should consult mudela(5).
-
-=over 5
-
-=item *
-
-ASCII script input, with identifiers (for music reuse),
-customizable notenames, customisable fontset.
-
-=item *
-
-MIDI output lets you check if you have entered the correct notes.
-
-=item *
-
-MIDI to Mudela conversion through the mi2mu program.
-
-=item *
-
-Multiple staffs in one score. Each staff can have different meters.
-
-=item *
-
-Beams, slurs, ties, chords, super/subscripts (accents and text)
-triplets, general n-plet (triplet, quadruplets, etc.), lyrics,
-transposition dynamics (both absolute and hairpin style).
-
-=item *
-
-Multiple voices within one staff; beams optionally shared
-between voices. Up to four voices is handled cleanly.
-
-=item *
-
-Multiple scores within one input file. Each score is output to
-a different file.
-
-=item *
-
-Clef changes, meter changes, cadenza-mode, key changes, repeat bars.
-
-=back
-
-=head1 DISCLAIMER AND COPYING POLICY
-
-GNU LilyPond is copyright 1996-1998 by its authors. GNU LilyPond is
-distributed under the terms of the GNU General Public License. GNU LilyPond
-is provided without any warranty what so ever.
-GNU LilyPond may be freely distributed. For further information consult
-the GNU General Public License, from the file F<COPYING>.
-
-=head1 AUTHORS
-
-Please consult the documentation file AUTHORS for more detailed
-information, and small contributions.
-
-=over 4
-
-=item *
-
-Han-Wen Nienhuys <hanwen@cs.ruu.nl>, http://www.cs.ruu.nl/people/hanwen
-
-=item *
-
-Jan Nieuwenhuizen <jan@digicash.com>, http://www.digicash.com/~jan.
-
-=back
-
-
-=head1 PROBLEMS
-
-
-There is an extensive list of todoes and bugs. See F<TODO>. If you
-have a problem you should try to find out
-
-=over 4
-
-=item *
-
-If the bug has been fixed in a newer release.
-
-=item *
-
-If the bug has been found earlier, consult F<TODO> and F<BUGS>.
-
-=back
-
-If you have found a bug, then you should send a bugreport.
-
-=over 4
-
-=item *
-Send a copy of the input which causes the error.
-
-=item *
-Send a description of the platform you use.
-
-=item *
-Send a description of the LilyPond version you use (with
-compile/configure options please).
-
-=item *
-Send a description of the bug itself.
-
-=item *
-Send it to bug-gnu-music@gnu.org (you don't have to subscribe
-to this mailinglist).
-
-=back
-
-It does help if you can find out where the bug comes from: if GNU
-LilyPond bombs out, then please recompile using with debugging info
-turned on, and send gdb stacktrace of the crash. It also helps if you
-can print the values of the objects. So if your trace is
-
- received SIGSEGV
- (gdb) backtrace 12
- #0 Interval::operator+= (this=0x11fffec60..)
- at ../flower/interval.hh:50
- #1 0x12005195c in Item::width (this=0x14008a680) at src/item.cc:39
- #2 0x12008fdbc in itemlist_width (its=0x11fffed58 ..
- :
- :
-
-Than it would help if you send a dump of the Interval and the Item
-(use: C<print *this> or use LilyPond C<print()> methods).
-
-
-=head1 FILES
-
-=over 5
-
-=item F<lily-init.ly>
-
-The initialisation file with symbol tables etc. It
-includes files from the directory F<init/>.
-
-=back
-
-=head1 ENVIRONMENT
-
-B<LILYINCLUDE> an (one) additional directory for finding lilypond data.
-
-=head1 BUGS
-
-Lots of them. See F<TODO> and F<BUGS>
-
-=head1 SEE ALSO
-
-=over 4
-
-=item internals
-
-On technical details of LilyPond
-
-=item mudela-man
-
-On the input format. This is a LilyPond-enhanced LaTeX document.
-
-=item MANIFESTO
-
-Goals of the GNU LilyPond project.
-
-=item FAQ
-
-The GNU LilyPond FAQ list
-
-=item http://www.cs.ruu.nl/people/hanwen/lilypond/index.html
-
-GNU LilyPond has her own webpage. This webpage contains the MIDI, GIF
-and PS files for some standard music files. It also has the complete
-LilyPond documentation
-
-=back
-
-GNU LilyPond is
-updated very frequently, the latest version is always available at:
-ftp://pcnov095.win.tue.nl/pub/lilypond and
-ftp://alpha.gnu.org/gnu/lilypond/
-
-
-For programs which are part of the GNU music project, the following
-mailing list have been setup:
-
-
-=over 4
-
-=item info-gnu-music@gnu.org
-
-For information on the GNU Music project, to subscribe: send mail with
-subject "subscribe" to info-gnu-music-request@gnu.org
-
-=item help-gnu-music@gnu.org
-
-For help with programs from the GNU music project. To subscribe: send
-mail with subject "subscribe" to
-help-gnu-music-request@gnu.org
-
-=item bug-gnu-music@gnu.org
-
-If you have bugreports, you should send them to this list. If you want
-to read all bugreports, you should subscribe to this list. To
-subscribe: send mail with subject "subscribe" to
-bug-gnu-music-request@gnu.org
-
-=item gnu-music-discuss@gnu.org,
-
-For discussions concerning the GNU Music project, to subscribe: send
-mail with subject "subscribe" to
-gnu-music-discuss-request@gnu.org,
-
-
-=back
-
-Announces of new versions will be sent to info-gnu-music and
-gnu-music-discuss.
-
-=head1 REMARKS
-
-GNU LilyPond has no connection with the music package Rosegarden, other
-than the names being similar :-)
-
-=head1 HISTORY
-
-(for a detailed changelog, see F<NEWS>)
-
-GNU LilyPond's roots lie in MPP, a preprocessor to the rather arcane
-MusiXTeX macro package for TeX. A friend of mine, Jan Nieuwenhuizen
-wrote the first 44 versions (0.01 to 0.44), then his program caught my
-attention, and I was slowly sucked in to the interesting problem of
-easily producing beautifully printed music. I contributed some
-code. We soon realised that MPP's design was too fundamentally broken
-to be repaired, so it was decided to rewrite MPP. We debated a lot about
-the requirements to an inputformat (fall 1995). I sat down and started
-with a parser-first, bottom-up rewrite called mpp95 (which totally
-failed, obviously).
-
-After long and hard thinking, I came up with an algorithm for the
-horizontal spacing of multiple staffs (april 1996) I coded it (and did
-not test it). After starting with this fundamental piece, I slowly
-added the stages which come before spacing, and after. A half year
-later, I had a first working version, (october 1996). I announced
-Patchlevel 0.0.7 (or 8) to the mutex list after asking some technical
-details on spacing; it was downloaded approximately 4 times. Then I
-got the hang of it, and in the subsequent two months, I coded until it
-had doubled in size (pl 23).
-
-Most the other history is described in the NEWS file. The first large
-scale release (0.1) was done after approximately 78 patchlevels on
-August 1, 1997.
-
diff --git a/Documentation/man/lilypond.yo b/Documentation/man/lilypond.yo
new file mode 100644
index 0000000000..c027f6c6f5
--- /dev/null
+++ b/Documentation/man/lilypond.yo
@@ -0,0 +1,251 @@
+COMMENT(i don't get this)
+mailto(janneke@gnu.org)
+COMMENT(
+ (PIPETHROUGH(echo -n `date '+%d/%b/%y'|tr '[a-z]' '[A-Z]'`)())
+)
+manpage(LilyPond)
+ (1)
+ (1998)
+ (The LilyPond package)
+ (The GNU Project Music Typesetter)
+
+metalC(Automatically generated by yodl(1) from lilypond.yo.)
+
+manpagename(LilyPond)(the GNU Music Typesetter)
+cindex(LilyPond)
+
+COMMENT(nodes and menus by hand, for now)
+node(Author convert-mudela)(LilyPond)(Invoking LilyPond)(Programs)
+menu(
+mit(Invoking LilyPond)( Command options supported by file(LilyPond))
+mit(Disclaimer LilyPond)( Disclaimer)
+mit(Features LilyPond)( Features)
+mit(Problems LilyPond)( Problems)
+mit(Files LilyPond)( Files)
+mit(Environment LilyPond)( Environment)
+mit(Bugs LilyPond)( Bugs)
+mit(See Also LilyPond)( See Also)
+mit(Remarks LilyPond)( Remarks)
+mit(History LilyPond)( History)
+mit(Author LilyPond)( Author)
+)
+
+node(LilyPond)(Invoking LilyPond)(Features LilyPond)(LilyPond)
+
+manpagesynopsis()
+ bf(lilypond) [OPTION]... [MUDELA-FILE]...
+
+manpagedescription()
+
+verbinclude(../BLURB.in)
+
+manpageoptions()
+description(
+dit(-I,--include=FILE)
+ add file(FILE) to the search path for input files.
+dit(-M,--midi)
+ This disables TeX output. If you have a \midi definition, it will do the
+ midi output only.
+dit(-d,--dependencies)
+ Also output rules to be included in Makefile.
+dit(-D,--debug)
+ Turn debugging info on. GNU LilyPond reads the file file(.dstreamrc),
+ which lists what functions and classes may produce copious debugging
+ output.
+dit(-t,--test)
+ Switch on any experimental features. Not for general public use.
+dit(-w,--warranty)
+ Show the warranty with which GNU LilyPond comes. (It comes with
+ bf(NO WARRANTY)!)
+dit(-o,--output=FILE)
+ Set the default output file to file(FILE).
+dit(-h,--help)
+ Show a summary of usage.
+dit(-i,--init=FILE)
+ Set init file to file(FILE) (default: file(init.ly)).
+dit(--include, -I=DIRECTORY)
+ Add file(DIRECTORY) to the search path for input files.
+dit(--ignore-version, -V)
+ Make incompatible mudela version non-fatal.
+dit(--find-fourths, -Q)
+ Warn about melodic intervals larger than a fourth. Useful for
+ converting absolute octave mode stuff to relative octaves.
+)
+
+node(Invoking LilyPond)(Features LilyPond)(Disclaimer LilyPond)(LilyPond)
+manpagesection(FEATURES)
+
+This is an overview of the features that GNU LilyPond supports. For
+details on how to use them, you should consult the Mudela tutorial,
+which is included with the package.
+
+
+itemize(
+it()ASCII script input, with identifiers (for music reuse),
+ customizable notenames, customisable fontset.
+it()MIDI output lets you check if you have entered the correct notes.
+it()MIDI to Mudela conversion through the mi2mu program.
+it()Multiple staffs in one score. Each staff can have different meters.
+it()Beams, slurs, ties, chords, super/subscripts (accents and text)
+ triplets, general n-plet (triplet, quadruplets, etc.), lyrics,
+ transposition dynamics (both absolute and hairpin style).
+it()Multiple voices within one staff; beams optionally shared
+ between voices. Up to four voices is handled cleanly.
+it()Multiple scores within one input file. Each score is output to
+ a different file.
+it()Clef changes, meter changes, cadenza-mode, key changes, repeat bars.
+)
+
+node(Features LilyPond)(Disclaimer LilyPond)(Problems LilyPond)(LilyPond)
+manpagesection(DISCLAIMER)
+
+GNU LilyPond is copyright 1996-1998 by its authors. GNU LilyPond is
+distributed under the terms of the GNU General Public License. GNU LilyPond
+is provided without any warranty what so ever.
+GNU LilyPond may be freely distributed. For further information consult
+the GNU General Public License, from the file file(COPYING).
+
+node(Disclaimer LilyPond)(Problems LilyPond)(Files LilyPond)(LilyPond)
+manpagesection(PROBLEMS)
+
+There is an extensive list of todoes and bugs. See file(TODO). If you
+have a problem you should try to find out
+
+itemize(
+it()If the bug has been fixed in a newer release.
+it()If the bug has been found earlier, consult file(TODO) and file(BUGS).
+)
+
+If you have found a bug, then you should send a bugreport.
+
+itemize(
+it()Send a copy of the input which causes the error.
+it()Send a description of the platform you use.
+it()Send a description of the LilyPond version you use
+ (with compile/configure options please).
+it()Send a description of the bug itself.
+it()Send it to email(bug-gnu-music@gnu.org) (you don't have to subscribe
+ to this mailinglist).
+)
+
+node(Problems LilyPond)(Files LilyPond)(Environment LilyPond)(LilyPond)
+manpagefiles()
+description(
+dit(file(init.ly))
+ The initialisation file with symbol tables etc. It
+ includes files from the directory file(init/).
+)
+
+node(Files LilyPond)(Environment LilyPond)(Bugs LilyPond)(LilyPond)
+manspagesection(environment)
+
+description(
+dit(LILYINCLUDE)
+ additional directories for finding lilypond data. The
+ format is like the format of file(PATH).
+dit(LANG)
+ selects the language for the warning messages of LilyPond.
+)
+
+node(Environment LilyPond)(Bugs LilyPond)(See Also LilyPond)(LilyPond)
+manpagebugs()
+
+Lots of them. See file(TODO) and file(BUGS)
+
+node(Bugs LilyPond)(See Also LilyPond)(Remarks LilyPond)(LilyPond)
+manpageseealso()
+
+description(
+dit(internals)
+ On technical details of LilyPond
+dit(mudela-man)
+ On the input format. This is a LilyPond-enhanced LaTeX document.
+dit(MANIFESTO)
+ Goals of the GNU LilyPond project.
+dit(FAQ)
+ The GNU LilyPond FAQ list
+dit(GNU url(LilyPond)(http://www.cs.uu.nl/people/hanwen/lilypond/index.html))
+ has her own webpage. This webpage contains the MIDI, GIF and PS files for
+ some standard music files. It also has the complete LilyPond documentation
+)
+
+GNU LilyPond is
+updated very frequently, the latest version is always available at:
+lurl(ftp://pcnov095.win.tue.nl/pub/lilypond). This FTP site is mirrored
+at a number of sites; consult the project web pages for information
+about mirrors.
+
+For programs which are part of the GNU music project, the following
+mailing list have been setup:
+
+description(
+dit(email(info-gnu-music@gnu.org))
+ For information on the GNU Music project, to subscribe: send mail with
+ subject "subscribe" to email(info-gnu-music-request@gnu.org)
+dit(email(help-gnu-music@gnu.org))
+ For help with programs from the GNU music project. To subscribe: send
+ mail with subject "subscribe" to email(help-gnu-music-request@gnu.org)
+dit(email(bug-gnu-music@gnu.org))
+ If you have bugreports, you should send them to this list. If you want
+ to read all bugreports, you should subscribe to this list. To
+ subscribe: send mail with subject "subscribe" to
+ email(bug-gnu-music-request@gnu.org)
+dit(email(gnu-music-discuss@gnu.org))
+ For discussions concerning the GNU Music project, to subscribe: send
+ mail with subject "subscribe" to
+ email(gnu-music-discuss-request@gnu.org)
+)
+
+Announces of new versions will be sent to info-gnu-music and
+gnu-music-discuss.
+
+node(See Also LilyPond)(Remarks LilyPond)(History LilyPond)(LilyPond)
+manpagesection(REMARKS)
+
+GNU LilyPond has no connection with the music package Rosegarden, other
+than the names being similar (:-)
+
+node(Remarks LilyPond)(History LilyPond)(Author LilyPond)(LilyPond)
+manpagesection(HISTORY)
+cindex(History)
+
+(for a detailed changelog, see file(NEWS))
+
+GNU LilyPond's roots lie in MPP, a preprocessor to the rather arcane
+MusiXTeX macro package for TeX. A friend of mine, Jan Nieuwenhuizen
+wrote the first 44 versions (0.01 to 0.44), then his program caught my
+attention, and I was slowly sucked in to the interesting problem of
+easily producing beautifully printed music. I contributed some
+code. We soon realised that MPP's design was too fundamentally broken
+to be repaired, so it was decided to rewrite MPP. We debated a lot about
+the requirements to an inputformat (fall 1995). I sat down and started
+with a parser-first, bottom-up rewrite called mpp95 (which totally
+failed, obviously).
+
+After long and hard thinking, I came up with an algorithm for the
+horizontal spacing of multiple staffs (april 1996) I coded it (and did
+not test it). After starting with this fundamental piece, I slowly
+added the stages which come before spacing, and after. A half year
+later, I had a first working version, (october 1996). I announced
+Patchlevel 0.0.7 (or 8) to the mutex list after asking some technical
+details on spacing; it was downloaded approximately 4 times. Then I
+got the hang of it, and in the subsequent two months, I coded until it
+had doubled in size (pl 23).
+
+Most the other history is described in the NEWS file. The first large
+scale release (0.1) was done after approximately 78 patchlevels on
+August 1, 1997.
+
+node(History LilyPond)(Author LilyPond)(Ly2dvi)(LilyPond)
+manpageauthor()
+cindex(Author)
+
+Please consult the documentation file file(AUTHORS.txt) for more detailed
+information, and small contributions.
+
+itemize(
+it()nemail(Han-wen Nienhuys)(hanwen@cs.uu.nl)
+ lurl(http://www.cs.uu.nl/people/hanwen)
+it()nemail(Jan Nieuwenhuizen)(janneke@gnu.org)
+ lurl(http://www.digicash.com/~jan)
+)
diff --git a/Documentation/man/ly2dvi.pod b/Documentation/man/ly2dvi.pod
deleted file mode 100644
index 0fcbfb90fd..0000000000
--- a/Documentation/man/ly2dvi.pod
+++ /dev/null
@@ -1,263 +0,0 @@
-=head1 NAME
-
-ly2dvi - convert mudela to DVI
-
-=head1 SYNOPSIS
-
- ly2dvi [options] inputfile[.ly] [....]
-
-=head1 DESCRIPTION
-
-ly2dvi is a shell script which creates input file for LaTeX,
-based on information from the output files from lilypond.
-The script handles multiple files. If a mudela file name is
-specified lilypond is run to make an output (TeX) file.
-
-One or more LaTeX files are created, based on information found
-in the output (TeX) files, and latex is finally run to create
-one or more DVI files.
-
-=head1 OPTIONS
-
-=over 5
-
-=item B<-D,--debug>
-
-Set debug mode. There are two levels - in level one some debug
-info is written, in level two the command C<set -x> is run, which
-echoes every command in the ly2dvi script.
-
-=item B<-F,--headers=>
-
-Name of additional LaTeX headers file. This is included in the
-tex file at the end of the headers, last line before \begin{document}
-
-=item B<-H,--Heigth=>
-
-Set paper heigth (points). Used together with width and LaTeX name of
-papersize in case of papersize unknown to ly2dvi.
-
-=item B<-F,--headers=>
-
-Name of additional LaTeX headers file. This is included in the
-tex file at the end of the headers, last line before \begin{document}
-
-=item B<-K,--keeplilypond>
-
-Keep LilyPond output after the run.
-
-=item B<-L,--landscape>
-
-Set landscape orientation - portrait is the default.
-(C<-L> produces C<\usepackage[landscape]{article}>)
-
-=item B<-N,--nonumber>
-
-Switch off page numbering.
-
-=item B<-O,--orientation=>
-
-Set orientation landscape - obsolete, use C<-L> instead.
-
-=item B<-W,--Width=>
-
-Set paper width (points). Used together with heigth and LaTeX name of
-papersize in case of papersize unknown to ly2dvi.
-
-=item B<-d,--dependencies>
-
-Tell lilypond to make dependencies file.
-
-=item B<-h,--help>
-
-Print help.
-
-=item B<-k,--keeply2dvi>
-
-Keep the LaTeX file after the run.
-
-=item B<-l,--language=>
-
-Specify LaTeX language.
-(C<-l norsk> produces C<\usepackage[norsk]{babel}>).
-
-=item B<-o,--output=>
-
-Set output directory.
-
-=item B<-p,--papersize=>
-
-Specify papersize.
-(C<-p a4> produces C<\usepackage[a4paper]{article}>)
-
-=item B<-s,--separate>
-
-Normally all output files are included into one LaTeX file.
-With this switch all files are run separately, to produce one
-DVI file for each.
-
-=back
-
-=head1 FEATURES
-
-ly2dvi responds to several parameters specified in the mudela
-file. They are overridden by corresponding command line options.
-
-=over 5
-
-=item B<language="";>
-
-Specify LaTeX language
-
-=item B<latexheaders="";>
-
-Specify additional LaTeX headers file
-
-=item B<orientation="";>
-
-Set orientation.
-
-=item B<paperlinewidth="";>
-
-Specify the width (pt, mm or cm) of the printed lines.
-
-=item B<papersize="";>
-
-Specify name of papersize.
-
-=back
-
-=head1 ENVIRONMENT
-
-=over 5
-
-=item B<LILYINCLUDE>
-
-Additional directories for input files.
-
-=item B<TMP>
-
-Temporary directory name. Default is /tmp
-
-=back
-
-=head1 FILES
-
-F<titledefs.tex> is inspected for definitions used to extract
-additional text definitions from the mudela file. In the current
-version the following are defined:
-
-=over 5
-
-=item B<title>
-
-The title of the music. Centered on top of the first page.
-
-=item B<subtitle>
-
-Subtitle, centered below the title.
-
-=item B<composer>
-
-Name of the composer, rightflushed below the subtitle.
-
-=item B<arranger>
-
-Name of the arranger, rightflushed below the composer.
-
-=item B<instrument>
-
-Name of the instrument, leftflushed at same level as the composer.
-
-=back
-
-F</usr/local/share/lilyrc /etc/lilyrc $HOME/.lilyrc ./.lilyrc>
-are files to set up default running conditions/variables, Bourne shell
-syntax. All files are parsed, in the shown sequence. The variables are
-overridden by variables in the mudela file, and by command line options.
-In the current version the following are allowed:
-
-=over 5
-
-=item B<LANGUAGE=>
-
-Specify LaTeX language.
-
-=item B<LATEXHF=>
-
-Specify additional LaTeX headers file
-
-=item B<LILYINCLUDE=>
-
-Additional directories for input files.
-
-=item B<ORIENTATION=>
-
-Set orientation - portrait is the default.
-
-=item B<OUTPUTDIR=>
-
-Set output directory.
-
-=item B<PAPERSIZE=>
-
-Specify name of papersize.
-
-=item B<PHEIGTH=>
-
-Specify paperheight (points - an inch is 72.27, a cm is 28.453 points).
-
-=item B<TMP=>
-
-Temporary directory name.
-
-=item B<PWIDTH=>
-
-Specify paperwidth (points - an inch is 72.27, a cm is 28.453 points).
-
-=back
-
-=head1 SEE ALSO
-
-lilypond(1), tex(1), latex(1)
-
-=head1 AUTHOR
-
-Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>,
-http://www.termo.unit.no/mtf/people/janaf/
-
-=head1 BUGS
-
-If you have found a bug, you should send a bugreport.
-
-=over 4
-
-=item *
-Send a copy of the input which causes the error.
-
-=item *
-Send a description of the platform you use.
-
-=item *
-Send a description of the LilyPond and ly2dvi version you use.
-
-=item *
-Send a description of the bug itself.
-
-=item *
-Send it to bug-gnu-music@gnu.org (you don't have to subscribe
-to this mailinglist).
-
-=back
-
-=head1 REMARKS
-
-Many papersizes are now supported. Information on other sizes
-(LaTeX names, horizontal and vertical sizes) should be mailed to
-the author or to the mailing list.
-
-Supported papersizes are:
-
-a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, archA, archB, archC, archD,
-archE, b0, b1, b2, b3, b4, b5, flsa, flse, halfletter, ledger, legal,
-letter, note
diff --git a/Documentation/man/ly2dvi.yo b/Documentation/man/ly2dvi.yo
new file mode 100644
index 0000000000..d0a0c6dd28
--- /dev/null
+++ b/Documentation/man/ly2dvi.yo
@@ -0,0 +1,199 @@
+mailto(janneke@gnu.org)
+manpage(LilyPond)
+ (1)
+ (1998)
+ (The LilyPond package)
+ (Ly2dvi)
+
+metalC(Automatically generated by yodl(1) from ly2dvi.yo.)
+
+node(Author LilyPond)(Ly2dvi)(Invoking Ly2dvi)(Programs)
+manpagename(Ly2dvi)(convert mudela to DVI)
+
+menu(
+mit(Invoking Ly2dvi)( Command options supported by file(Ly2dvi))
+mit(Features Ly2dvi)( Features)
+mit(Environment Ly2dvi)( Environment)
+mit(Files Ly2dvi)( Files)
+mit(See Also Ly2dvi)( See Also)
+mit(Bugs Ly2dvi)( Bugs)
+mit(Remarks Ly2dvi)( Remarks)
+mit(Author Ly2dvi)( Author)
+)
+
+manpagedescription()
+ly2dvi is a shell script which creates input file for LaTeX,
+based on information from the output files from lilypond.
+The script handles multiple files. If a mudela file name is
+specified lilypond is run to make an output (TeX) file.
+
+One or more LaTeX files are created, based on information found
+in the output (TeX) files, and latex is finally run to create
+one or more DVI files.
+
+node(Ly2dvi)(Invoking Ly2dvi)(Features Ly2dvi)(Ly2dvi)
+manpagesynopsis()
+
+ ly2dvi [options] inputfile[.ly] [....]
+
+manpageoptions()
+
+description(
+dit(-D,--debug)
+ Set debug mode. There are two levels - in level one some debug
+ info is written, in level two the command bf(set -x) is run, which
+ echoes every command in the ly2dvi script.
+dit(-F,--headers=)
+ Name of additional LaTeX headers file. This is included in the
+ tex file at the end of the headers, last line before code(\begin{document})
+dit(-H,--Heigth=)
+ Set paper heigth (points). Used together with width and LaTeX name of
+ papersize in case of papersize unknown to ly2dvi.
+dit(-F,--headers=)
+ Name of additional LaTeX headers file. This is included in the
+ tex file at the end of the headers, last line before code(\begin{document})
+dit(-K,--keeplilypond)
+ Keep LilyPond output after the run.
+dit(-L,--landscape)
+ Set landscape orientation - portrait is the default.
+ (bf(-L) produces code(\usepackage[landscape]{article}))
+dit(-N,--nonumber)
+ Switch off page numbering.
+dit(-O,--orientation=)
+ Set orientation landscape - obsolete, use bf(-L) instead.
+dit(-W,--Width=)
+ Set paper width (points). Used together with heigth and LaTeX name of
+ papersize in case of papersize unknown to ly2dvi.
+dit(-d,--dependencies)
+ Tell lilypond to make dependencies file.
+dit(-h,--help)
+ Print help.
+dit(-k,--keeply2dvi)
+ Keep the LaTeX file after the run.
+dit(-l,--language=)
+ Specify LaTeX language.
+ (bf(-l norsk) produces code(\usepackage[norsk]{babel})).
+dit(-o,--output=)
+ Set output directory.
+dit(-p,--papersize=)
+ Specify papersize.
+ (bf(-p a4) produces code(\usepackage[a4paper]{article}))
+dit(-s,--separate)
+ Normally all output files are included into one LaTeX file.
+ With this switch all files are run separately, to produce one
+ DVI file for each.
+)
+
+node(Invoking Ly2dvi)(Features Ly2dvi)(Environment Ly2dvi)(Ly2dvi)
+manpagesection(Features)
+
+ly2dvi responds to several parameters specified in the mudela
+file. They are overridden by corresponding command line options.
+
+description(
+dit(language="";)
+ Specify LaTeX language
+dit(latexheaders="";)
+ Specify additional LaTeX headers file
+dit(orientation="";)
+ Set orientation.
+dit(paperlinewidth="";)
+ Specify the width (pt, mm or cm) of the printed lines.
+dit(papersize="";)
+ Specify name of papersize.
+)
+
+node(Features Ly2dvi)(Environment Ly2dvi)(Files Ly2dvi)(Ly2dvi)
+manpagesection(Environment)
+
+description(
+dit(LILYINCLUDE)
+ Additional directories for input files.
+dit(TMP)
+ Temporary directory name. Default is /tmp
+)
+
+node(Environment Ly2dvi)(Files Ly2dvi)(See Also Ly2dvi)(Ly2dvi)
+manpagesection(Files)
+
+file(titledefs.tex) is inspected for definitions used to extract
+additional text definitions from the mudela file. In the current
+version the following are defined:
+
+description(
+dit(title)
+ The title of the music. Centered on top of the first page.
+dit(subtitle)
+ Subtitle, centered below the title.
+dit(composer)
+ Name of the composer, rightflushed below the subtitle.
+dit(arranger)
+ Name of the arranger, rightflushed below the composer.
+dit(instrument)
+ Name of the instrument, leftflushed at same level as the composer.
+)
+
+file(/usr/local/share/lilyrc /etc/lilyrc $HOME/.lilyrc ./.lilyrc)
+are files to set up default running conditions/variables, Bourne shell
+syntax. All files are parsed, in the shown sequence. The variables are
+overridden by variables in the mudela file, and by command line options.
+In the current version the following are allowed:
+
+description(
+dit(LANGUAGE=)
+ Specify LaTeX language.
+dit(LATEXHF=)
+ Specify additional LaTeX headers file
+dit(LILYINCLUDE=)
+ Additional directories for input files.
+dit(ORIENTATION=)
+ Set orientation - portrait is the default.
+dit(OUTPUTDIR=)
+ Set output directory.
+dit(PAPERSIZE=)
+ Specify name of papersize.
+dit(PHEIGTH=)
+ Specify paperheight (points - an inch is 72.27, a cm is 28.453 points).
+dit(TMP=)
+ Temporary directory name.
+dit(PWIDTH=)
+ Specify paperwidth (points - an inch is 72.27, a cm is 28.453 points).
+)
+
+node(Files Ly2dvi)(See Also Ly2dvi)(Bugs Ly2dvi)(Ly2dvi)
+manpagesection(See Also)
+
+lilypond(1), tex(1), latex(1)
+
+node(See Also Ly2dvi)(Bugs Ly2dvi)(Remarks Ly2dvi)(Ly2dvi)
+manpagesection(Bugs)
+
+If you have found a bug, you should send a bugreport.
+
+itemize(
+it()Send a copy of the input which causes the error.
+it()Send a description of the platform you use.
+it()Send a description of the LilyPond and ly2dvi version you use.
+it()Send a description of the bug itself.
+it()Send it to email(bug-gnu-music@gnu.org) (you don't have to subscribe
+ to this mailinglist).
+)
+
+node(Bugs Ly2dvi)(Remarks Ly2dvi)(Author Ly2dvi)(Ly2dvi)
+manpagesection(Remarks)
+
+Many papersizes are now supported. Information on other sizes
+(LaTeX names, horizontal and vertical sizes) should be mailed to
+the author or to the mailing list.
+
+Supported papersizes are:
+
+a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, archA, archB, archC, archD,
+archE, b0, b1, b2, b3, b4, b5, flsa, flse, halfletter, ledger, legal,
+letter, note
+
+node(Remarks Ly2dvi)(Author Ly2dvi)(Mi2mu)(Ly2dvi)
+manpageauthor()
+
+nemail(Jan Arne Fagertun)(Jan.A.Fagertun@energy.sintef.no), lurl(http://www.termo.unit.no/mtf/people/janaf/)
+
diff --git a/Documentation/man/mi2mu.pod b/Documentation/man/mi2mu.pod
deleted file mode 100644
index 6ee3e13a16..0000000000
--- a/Documentation/man/mi2mu.pod
+++ /dev/null
@@ -1,120 +0,0 @@
-=head1 NAME
-
-mi2mu - convert MIDI to mudela(5)
-
-=head1 SYNOPSIS
-
- mi2mu [options] midi-file
-
-=head1 DESCRIPTION
-
-Mi2mu translates a MIDI input file to Mudela (GNU LilyPond source
-format). Mi2mu is part of the GNU LilyPond music typesetting package.
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<-b, --no-quantify>,
-
-Write exact durations, e.g.: `a4*385/384'.
-
-=item B<-d, --debug>,
-
-Print lots of debugging stuff.
-
-=item B<-h, --help>,
-
-Show a summary of usage.
-
-=item B<-I, --include>=F<DIR>,
-
-Add DIR to search path.
-
-=item B<-k, --key>=ACC[:MINOR],
-
-Set default key. ACC > 0 sets number of sharps; ACC < 0 sets number
-of flats. A minor key is indicated by ":1".
-
-=item B<-n, --no-silly>,
-
-Assume no plets or double dots, assume smallest (reciprocal) duration 16.
-
-=item B<-o, --output>=F<FILE>,
-
-Set FILE as default output.
-
-=item B<-p, --no-plets>,
-
-Assume no plets.
-
-=item B<-q, --quiet>,
-
-Be quiet.
-
-=item B<-s, --smallest=N>,
-
-Assume no shorter (reciprocal) durations than N.
-
-=item B<-v, --verbose>,
-
-Be verbose.
-
-=item B<-w, --warranty>,
-
-Show the warranty with which mi2mu comes. (It comes with B<NO WARRANTY>!)
-
-=item B<-x, --no-double-dots>,
-
-Assume no double dotted notes.
-
-=back
-
-=head1 FEATURES
-
-This is an overview of the features that Mi2mu supports.
-
-=over 4
-
-=item *
-
-[todo]
-
-=back
-
-=head1
-DISCLAIMER & COPYING POLICY
-
-Mi2mu is copyright 1996, 1997 by its authors. Mi2mu is distributed
-as part of GNU LilyPond, under the terms of the GNU General Public
-License. Mi2mu is provided without any warranty what so ever.
-Mi2mu may be freely distributed. For further information consult
-the GNU General Public License, from the file F<COPYING>.
-
-=head1 AUTHORS
-
-Please consult the documentation file AUTHORS for more detailed
-information, and small contributions.
-
-=over 4
-
-=item *
-
-Jan Nieuwenhuizen <jan@digicash.com>, http://www.digicash.com/~jan.
-
-=back
-
-=head1 SEE ALSO
-
-=over 4
-
-=item lilypond(1)
-
-The GNU LilyPond music typesetter.
-
-=item mudela-man
-
-On the input format. This is a LilyPond-enhanced LaTeX document.
-
-=back
-
diff --git a/Documentation/man/mi2mu.yo b/Documentation/man/mi2mu.yo
new file mode 100644
index 0000000000..85decf245a
--- /dev/null
+++ b/Documentation/man/mi2mu.yo
@@ -0,0 +1,90 @@
+
+mailto(janneke@gnu.org)
+COMMENT(
+ (PIPETHROUGH(echo -n `date '+%d/%b/%y'|tr '[a-z]' '[A-Z]'`)())
+)
+manpage(LilyPond)
+ (1)
+ (1998)
+ (Mi2mu)
+ (The LilyPond package)
+
+metalC(Automatically generated by yodl(1) from mi2mu.yo.)
+
+node(Author Ly2dvi)(Mi2mu)(Invoking Mi2mu)(Programs)
+
+manpagename(Mi2mu)(convert MIDI to bf(mudela)(5))
+
+menu(
+mit(Invoking Mi2mu)( Command options supported by file(Mi2mu))
+mit(Disclaimer Mi2mu)( Disclaimer)
+mit(Author Mi2mu)( Author)
+)
+
+manpagedescription()
+Mi2mu translates a MIDI input file to Mudela (GNU LilyPond source
+format). Mi2mu is part of the GNU LilyPond music typesetting package.
+
+node(Mi2mu)(Invoking Mi2mu)(Disclaimer Mi2mu)(Mi2mu)
+manpagessynopsis()
+
+ mi2mu [options] midi-file
+
+manpageoptions()
+
+description(
+dit(-b, --no-quantify,)
+ Write exact durations, e.g.: `a4*385/384'.
+dit(-D, --debug,)
+ Print lots of debugging stuff.
+dit(-h, --help,)
+ Show a summary of usage.
+dit(-I, --include=file(DIR),)
+ Add DIR to search path.
+dit(-k, --key=ACC[:MINOR],)
+ Set default key. ACC > 0 sets number of sharps; ACC < 0 sets number
+ of flats. A minor key is indicated by ":1".
+dit(-n, --no-silly,)
+ Assume no plets or double dots, assume smallest (reciprocal) duration 16.
+dit(-o, --output=file(FILE),)
+ Set file(FILE) as default output.
+dit(-p, --no-plets,)
+ Assume no plets.
+dit(-q, --quiet,)
+ Be quiet.
+dit(-s, --smallest=N,)
+ Assume no shorter (reciprocal) durations than N.
+dit(-v, --verbose,)
+ Be verbose.
+dit(-w, --warranty,)
+ Show the warranty with which mi2mu comes. (It comes with bf(NO WARRANTY)!)
+dit(-x, --no-double-dots,)
+ Assume no double dotted notes.
+)
+
+node(Invoking Mi2mu)(Disclaimer Mi2mu)(Author Mi2mu)(Mi2mu)
+manpagesection(DISCLAIMER)
+
+Mi2mu is copyright 1996, 1997 by its authors. Mi2mu is distributed
+as part of GNU LilyPond, under the terms of the GNU General Public
+License. Mi2mu is provided without any warranty what so ever.
+Mi2mu may be freely distributed. For further information consult
+the GNU General Public License, from the file file(COPYING).
+
+manpageseealso()
+
+description(
+dit(bf(lilypond)(1))
+ The GNU LilyPond music typesetter.
+dit(mudela-man)
+ On the input format. This is a LilyPond-enhanced LaTeX document.
+)
+
+node(Disclaimer Mi2mu)(Author Mi2mu)(mudela-book)(Mi2mu)
+manpageauthor()
+
+Please consult the documentation file file(AUTHORS) for more detailed
+information, and small contributions.
+
+nemail(Jan Nieuwenhuizen)(janneke@gnu.org), lurl(http://www.digicash.com/~jan)
+
diff --git a/Documentation/man/mudela-book.pod b/Documentation/man/mudela-book.pod
deleted file mode 100644
index f44c60b354..0000000000
--- a/Documentation/man/mudela-book.pod
+++ /dev/null
@@ -1,58 +0,0 @@
-=head1 NAME
-
-mudela-book - integrate LaTeX and mudela
-
-=head1 SYNOPSIS
-
- mudela-book [options] [file]
-
-=head1 DESCRIPTION
-
-If no file is given, input is taken from the standard input
-
-mudela-book runs LilyPond on fragments of mudela in your source file,
-and produces a LaTeXable document, with formatted music.
-
- \begin{mudela}
- CONTENTS
- \end{mudela}
-
-runs LilyPond on CONTENTS, and puts the result back, surrounded by
-\preexample and \postexample commands. The \begin takes the
-following options:
-
-=over 4
-
-=item fragment
-
-mudela-book adds some redtape. You
-can substitute voice-contents for CONTENTS in this case.
-
-=item verbatim
-
-CONTENTS is copied into the TeX source enclosed in a verbatim block.
-
-=back
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<--outname>
-
-The name of TeX file to output. If none is given, the output is
-printed on stdout.
-
-=item B<--outdir>
-
-The directory to output lilypond output and input to
-
-=back
-
-=head1 BUGS
-
-Doesn't handle incorrect input sanely.
-
-=head1 AUTHOR
-
-Han-Wen Nienhuys <hanwen@gnu.org>
diff --git a/Documentation/man/mudela-book.yo b/Documentation/man/mudela-book.yo
new file mode 100644
index 0000000000..4f1907558d
--- /dev/null
+++ b/Documentation/man/mudela-book.yo
@@ -0,0 +1,75 @@
+
+mailto(janneke@gnu.org)
+COMMENT(
+ (PIPETHROUGH(echo -n `date '+%d/%b/%y'|tr '[a-z]' '[A-Z]'`)())
+)
+manpage(LilyPond)
+ (1)
+ (1998)
+ (The LilyPond package)
+ (mudela-book)
+
+metalC(Automatically generated by yodl(1) from mudela-book.yo.)
+
+node(Author Mi2mu)(mudela-book)(Invoking mudela-book)(Programs)
+
+manpagename(mudela-book)(integrate LaTeX and mudela)
+
+menu(
+mit(Invoking mudela-book)(Command options supported by file(mudela-book))
+mit(Bugs mudela-book)(Bugs)
+mit(Author mudela-book)(Author)
+)
+
+manpagedescription() file(mudela-book) is a script that helps
+integrating mudela and LaTeX(). mudela-book runs LilyPond on
+fragments of mudela in your source file, and includes the results into
+document that can be processed with LaTeX(). The result is a text
+document with formatted music integrated.
+
+
+If the file contains the ``block''
+
+verb(
+ \begin{mudela}
+ CONTENTS
+ \end{mudela}
+)
+
+then LilyPond is run on CONTENTS. mudela-book puts the result back,
+surrounded by code(\preMudelaExample) and code(\postMudelaExample)
+commands. The code(\begin) takes the following options:
+
+description(
+dit(fragment)
+ mudela-book adds some redtape. You
+ can substitute voice-contents for CONTENTS in this case.
+dit(verbatim)
+ CONTENTS is copied into the TeX source enclosed in a verbatim block.
+)
+
+node(mudela-book)(Invoking mudela-book)(Bugs mudela-book)(mudela-book)
+manpagesection(Synopsis)
+
+description(
+dit(--outname)
+ The name of LaTeX() file to output. If this option is not given,
+the output name derived from the input name. The extension file(.doc)
+is stripped, and code(.mudtex) appended.
+dit(--outdir)
+ The directory to output lilypond output and input to.
+dit(--help)
+ print a short help message
+)
+
+node(Invoking mudela-book)(Bugs mudela-book)(Author mudela-book)(mudela-book)
+manpagebugs()
+
+Doesn't handle incorrect input sanely. mudela-book is written in
+python, so you have install url(python)(http://www.python.org).
+
+node(Bugs mudela-book)(Author mudela-book)(Mutopia)(mudela-book)
+manpageauthor()
+
+nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl), lurl(http://www.cs.uu.nl/people/hanwen)
+
diff --git a/Documentation/mutopia.pod b/Documentation/mutopia.yo
index 57c0f30002..28e1bf4c58 100644
--- a/Documentation/mutopia.pod
+++ b/Documentation/mutopia.yo
@@ -1,15 +1,12 @@
-=head1 NAME
+node(Author mudela-book)(Mutopia)(Concept Index)(Top)
-Mutopia project - manifesto
+article(Mutopia project - manifesto)(HWN and JCN)()
-=head1 DESCRIPTION
+This is some random ranting about the Mutopia project, aka "Music To
+the People," the ultimate goal which I want to accomplish using
+LilyPond and mudela.
-Random ranting about the Mutopia project, aka "Music To the People."
-
-This is the ultimate goal which I want to accomplish using LilyPond
-and mudela.
-
-=head1 WHY
+sect(Why)
Music publishers make lots of money out of selling sheet music which
is in the public domain (the composers died a long time ago). It is
@@ -25,7 +22,7 @@ having their music available only discourages people from
experimenting with it. You deserve to get public domain music for
free (zero cents)
-=head1 WHAT
+sect(What )
For literature, the project Gutenberg has an archive of public domain
literary works. For music, this does not exist yet.
@@ -34,34 +31,18 @@ We also need an archive of public domain sheet music; this is what we
call The Mutopia Project.
-=head1 STATUS
+sect(Status)
This project is still in its infancy: we have very little amount of
music available. The music is partly downloadable from the website.
All of it is included in the source archive of LilyPond.
-=over 4
-
-=item *
-
-J.S. Bach, Das Wohltemperierte Clavier I: C major Prelude & Fugue, C
-minor fugue. Solo cello suites: suite II. Six small preludes: some
-preludes.
-
-=item *
-
-W. A. Mozart, Horn concerto 3, solo part + cadenza.
-
-=item *
-
-F. Schubert, St\"andchen (Serenade) "Leise flehen meine Lieder"
-
-=item *
-
-Tarquinio Merula, La Gallina a 2 violini
-
-=item *
-
-Paul Lacome d'Estalenx, La Feria, Los Toros (oboe 1)
-
-=back
+itemize(
+it()J.S. Bach, Das Wohltemperierte Clavier I: C major Prelude & Fugue, C
+ minor fugue. Solo cello suites: suite II. Six small preludes: some
+ preludes.
+it()W. A. Mozart, Horn concerto 3, solo part + cadenza.
+it()F. Schubert, St\"andchen (Serenade) "Leise flehen meine Lieder"
+it()Tarquinio Merula, La Gallina a 2 violini
+it()Paul Lacome d'Estalenx, La Feria, Los Toros (oboe 1)
+)
diff --git a/Documentation/other-packages.pod b/Documentation/other-packages.pod
deleted file mode 100644
index 5d5d5872cd..0000000000
--- a/Documentation/other-packages.pod
+++ /dev/null
@@ -1,215 +0,0 @@
-=head1 NAME
-
-Other-packages -- related packages
-
-=head1 DESCRIPTION
-
-A (not-at-all complete) overview of other music-typesetting/notation
-packages. Feel free to add info (and mail it to me).
-
-=head2 Free packages (with source)
-
-=over 4
-
-=item Rosegarden, http://www.bath.ac.uk/~masjpf/rose.html.
-
-A Notation editor/Sequencer for X. Also outputs musictex.
-
-=item Common Notation,
-http://www-ccrma.stanford.edu/CCRMA/Software/cmn/cmn.html
-
-A versatile lisp package. Part of the Common Music system. Input is in
-Lisp. It needs the Adobe Sonata or Finale Petrucci font.
-
-=item Vivace, http://www.calband.berkeley.edu/~gmeeker/vivace
-
-A amateurish notation program for TclTk and X.
-
-=item MPP
-
-A preprocessor to MusixTeX by Jan Nieuwenhuizen and Han-Wen Nienhuys.
-It is outdated by its successor, LilyPond. MPP is still available via
-the CTAN archive.
-
-=item LilyPond, http://www.cs.ruu.nl/people/hanwen/lilypond/index.html
-
-Added for completeness. You are currently reading her documentation.
-
-=item Music, http://www.cs.nott.ac.uk/Department/Staff/ef/printing.html
-
-A TROFF preprocessor by Eric Foxley.
-
-=item PMX, http://www.gmd.de/Misc/Music/
-
-A Preprocessor for MusiXTeX by Don Simons.
-
-=item M-Tx,
-
-A Preprocessor to PMX by Dirk Laurie.
-
-=item Musictex, http://www.gmd.de/Misc/Music/
-
-MusicTeX is a macro package for TeX to typeset polyphonic or
-instrumental music. It was originally written by Daniel Taupin.
-
-It includes a full-featured (but slightly unsightly) set of fonts.
-
-=item MusiXTeX, http://www.gmd.de/Misc/Music/
-
-A rewrite of MusicTeX, originally by Ross Mitchell and Andreas Egler.
-After quarrels, MusiXTeX has been split into two branches:
-
-=item MusiXTeX, http://www.gmd.de/Misc/Music/
-
-Daniel Taupin's now maintains the branch that still carries
-the name MusiXTeX.
-
-=item OpusTeX, http://www.inf.ethz.ch/personal/acherman/misc.html
-
-Andreas Egler's branch is now called OpusTeX.
-
-=item ABC2MTeX, http://www.gre.ac.uk/~c.walshaw/abc
-
-A preprocessor to MusixTeX by Chris Walshaw for transcribing folk and
-traditional music.
-
-=item SceX http://www.ncc.up.pt/~mig/SceX.html
-
-A preprocessor to MusixTeX by Miguel Filgueiras. Source in prolog
-available on request. (?)
-
-=item MUTEX, http://www.gmd.de/Misc/Music/
-
-A TeX macro package for typesetting single-staff music by Angelika
-Schofer & Andrea Steinbach. With some fonts.
-
-=back
-
-=head2 Free (zero cents)
-
-=over 4
-
-=item Calliope, http://www.cl.cam.ac.uk/users/wfc/
-
-A NeXT package by William F. Clocksin. Requires the Adobe Sonata font.
-
-=back
-
-=head2 Proprietary
-
-=over 4
-
-=item Scribe, http://adu1.adu.lattrobe.edu.au/Music/Scribe.html
-
-A formatter for medieval scores.
-
-=item Mup, http://www.arkkra.com/
-
-A program which creates PS from a script input. Although it comes with
-C source code, it is shareware.
-
-=item MusicEase, http://mesa.colorado.edu/~grader/musicez.html
-
-Described in Computer vol 29(6). Shareware
-
-=item LIME, http://datura.cerl.uiuc.edu/
-
-Notation editor for W95 and Mac
-
-=item Sibelius, http://www.acorn.co.uk/developers/sibelius/Home
-
-Notation editor on Acorn machines. Their developers call it ``best
-notation program available''. In any case, they are good at bragging.
-
-=item [``EDV-Notensatz'']
-
-URW's music-engraving system described by [Wanske]. (Although URW
-used ~DM 1.000.000 while developing this, it didn't buy them a cute
-name.)
-
-=item Logic, http://www.emagic.com/
-
-=item Finale
-
-=item Score, http://www.ymusic.com/Score
-
-Werner Lemberg <sx0005@sx2.hrz.uni-dortmund.de> writes: I consider
-SCORE as the best program for typesetting classical music. [..] the
-price is quite high (about US$ 1000) [..] It has a graphical
-interface but to get all out of the program you have to learn a 400
-page manual almost by heart because you'll change most features by
-inputting parameters (up to 20 for some items) on a command
-line. Expect three months to master SCORE :-)
-
-
-=item Personal Composer
-
-=item Mozart, http://www.mozart.co.uk/
-
-A shareware windows package
-
-=item Capella
-
-=item Encore
-
-=item Musicator
-
-=item Noteworthy, http://www.ntworthy.com
-
-Shareware.
-
-=item WolfGang, http://www.unige.ch/lettres/armus/music/wolfgang.html
-
-=item Amadeus, Jerker.Elsgard@abc.se
-
-Jerker Elsgard <Jerker.Elsgard@abc.se> writes: professional and
-expensive (DM 4000,--) engraving. Designed as a batch program (like
-LilyPond). It is aimed at publishers. Its history is more than
-fifteen years and Amadeus has been running under different Unix
-clones. It uses MIDI-keyboard input
-
-=back
-
-=head2 Unknown
-
-=over 4
-
-=item MusE, [no WWW address known]
-
-A-R Music Engraving, by A-R Editions, Inc. Professional engraving on
-Sun boxen.
-
-=item MusiCopy, [no WWW address]
-
-A project at Ohio State university, which was discontinued in 1987.
-The technical reports that have resulted from MusiCopy can still be
-obtained by writing to OSU department of Computer Science.
-
-
-=item Berlioz, http://www.?.fr/
-
-Dominique Montel (a professional music typesetter) is now working
-together with computer scientists on his own software for music
-publishing, called "Berlioz".
-
-=back
-
-=head2 Other stuff
-
-=over 4
-
-=item Sonata, http://www.adobe.com/type/browser/F/F_SONA.html
-
-The music font by Adobe.
-
-=item Haskore, http://haskell.systemsz.cs.yale.edu/haskore/onlinetutorial/index.html
-
-A programming system for music, based on Haskell, a functional
-programming language. It outputs MIDI, CSound, NeXTStep MusicKit and
-CMN.
-
-
-
-=back
-
-
diff --git a/Documentation/out/dummy.dep b/Documentation/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/Documentation/out/dummy.dep
+++ /dev/null
diff --git a/Documentation/pictures/Makefile b/Documentation/pictures/Makefile
new file mode 100644
index 0000000000..e1c41866c5
--- /dev/null
+++ b/Documentation/pictures/Makefile
@@ -0,0 +1,15 @@
+depth = ../..
+
+include $(depth)/make/Stepmake.make
+include $(stepdir)/Documentation_rules.make
+
+XPM_FILES=$(wildcard *.xpm)
+OUTGIF_FILES = $(addprefix $(outdir)/,$(XPM_FILES:.xpm=.gif))
+
+EXTRA_DIST_FILES= $(XPM_FILES)
+gifs: $(OUTGIF_FILES)
+
+local-WWW: $(OUTGIF_FILES)
+
+icon: $(outdir)/lelie_icon.gif
+ cp $< $(depth)/$(outdir)/$(package)-icon.gif
diff --git a/Documentation/lelie_icon.xpm b/Documentation/pictures/lelie_icon.xpm
index 0ad7f75dc1..0ad7f75dc1 100644
--- a/Documentation/lelie_icon.xpm
+++ b/Documentation/pictures/lelie_icon.xpm
diff --git a/Documentation/lelie_logo.xpm b/Documentation/pictures/lelie_logo.xpm
index 96be267b71..96be267b71 100644
--- a/Documentation/lelie_logo.xpm
+++ b/Documentation/pictures/lelie_logo.xpm
diff --git a/Documentation/lelieblond.xpm b/Documentation/pictures/lelieblond.xpm
index b63f794a3c..b63f794a3c 100644
--- a/Documentation/lelieblond.xpm
+++ b/Documentation/pictures/lelieblond.xpm
diff --git a/Documentation/pictures/screenshot.xpm b/Documentation/pictures/screenshot.xpm
new file mode 100644
index 0000000000..c30a2831de
--- /dev/null
+++ b/Documentation/pictures/screenshot.xpm
@@ -0,0 +1,537 @@
+/* XPM */
+static char *noname[] = {
+/* width height ncolors chars_per_pixel */
+"509 524 6 1",
+/* colors */
+" c #000000",
+". c #FFF0F0",
+"X c #6354C3",
+"o c #F5DEB3",
+"O c #473C8B",
+"+ c #231E45",
+/* pixels */
+"XXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX+",
+"XXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX++",
+"XXOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOO++",
+"XXOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOO++",
+"XXOO++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XOO++",
+"XXOO+XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+XOO++",
+"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOO++",
+"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoooOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOO++",
+"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOoOOOoooOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXXXXXXXXX+OO+XOOOOOOOOOOOOOO+XOO++",
+"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOoOOoOOOoOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOO+XOO++",
+"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoooooOOOoOooOOOoooOOOOooooOoOOoooOoOoOOoOOoOOOoOOoOooOOOOOOOOOOOooooOOOOoooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOO+XOO++",
+"XXOO+XOOXXXXXXXXX+OO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOooOOOOoOOOoOOoOOOoOoOoOOoOooOooOoOoOOOoOOooOOoOOOOOOOOOoOOOoOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOXXX+OOOOO+XOO++",
+"XXOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOoOOOOOoOOOoOOoOOOoOoOoOOoOoOOoOOoOoOOOoOOoOOOoOOOOOOOOOoOOOoOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOXOO+OOOOO+XOO++",
+"XXOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOoOOOOOoooooOOoOOOoOoOoOooOoOOoOOoOoOOOoOOoOOOoOOOOOOOOOoOOOoOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOXOO+OOOOO+XOO++",
+"XXOO+XOO++++++++++OO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOoOOOOOoOOOOOOoOOOoOoOOoOOooOOoOOoOoOOOoOOoOOOoOOOOOOOOOoOOOoOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOO++++OOOOO+XOO++",
+"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOoOOOOOoOOOoOOoOOooOOoOOOOOoOOoOOoOoOOooOOoOOOoOOOooOOOOoOOooOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOO+XOO++",
+"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOoOOOOOOoooOOOOooOoOOOoooOOoOOoOOoOOooOoOOooooOOOOooOOOOOooOoOOOOoooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOO+XOO++",
+"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOO++++++++++OO+XOOOOOOOOOOOOOO+XOO++",
+"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOO++",
+"XXOO+X+++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++X+++++++++++++++XOO++",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
+"XXXX+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XXXX+",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . ..... . . ... .................. ............ . .... . ......... ................ .......... .......... ............................... ............................... ...... .......................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. .. . . . . .. . . .................. ........... .... .. .......... .... ......... ......... ..... ..... ............................... ........ ............ ......... ....... .......................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... . .. . . . . . . . . .................. ........... . .... ... .......... .............. . ........... ........... ............................... ........ ...................... ....... .......................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . . ... . . . ... . . ...... . .. ... . ................. ... ... ... ... ... . . ........... .... ..... ... ... . ... .. . ... ....... .. ... .. ... . .. .. .... .... ................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . . . ... . . . . .... ...... . . . ... . ... ............... .... .. .. .. .... .. .. . .......... ..... ..... ... ... . ... . ... . .. . ... ........ .... ... ... ... .. . . ..... ... ... ...............................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . . . . . . . . ...... . . . ... . ... .............. ..... .. .. .... .. .. . ......... ..... ..... ... ... . ... . ... . ... . ... ........ .... . . ... ... ... . ...... ... ...............................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . ..... . . . . . . ...... . . . ... . ... .............. ..... .. ...... .... .. ...... . ......... ..... ..... ... .. . ... . ... . ... . ... ........ .... . . ... ... ... . . ..... ... ...................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . . . . . . . . . . ...... . . . .. . ... ............. ...... .. .. .. .... .. .. .......... ..... ..... .... . . .. ... . ... . ... ........ .. . . . ... ... ... . .. .... ... ... ...............................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....... . ... ... . ... ..... ... ...... ... .. . . .............. ..... .. .. .. .. ... .......... ... ... ...... . ...... .. ... .. ......... ... . ... .. ... . ... .. ... ................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . ...................................................................................................... ... . .....................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ....................................................................................................... .. .....................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... .. ... . ... ....... ............ ......... .................. ......... ........... ......... .. ...... . .. ........................... ........... ............. ........... ............ ..... ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... . .. . ... ....... ....... ..... ......... ... ................. ........ . ......... ............. . ... ..... . ....... ........................... ....... ... ............ .......... ............ ..... ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ..... .. . ... ....... ............. ......... ... ................. ....... ... ....... . ............ .. ... .... .. ....... ........................... ........... ........... . ......... . ........... .... ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ..... . . . ... ....... ...... ..... ... ... . ... .. .. . ... ....... ... ......... ............ .. ... .... .. ....... .... .. ... .. .. . .. ...... ... .......... ........... .......... . ... . ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ..... . . . ... ....... ....... ..... ... ... . .. ... . .. . ... ....... ... ......... ........... .... .... ... .... ... ... . ... . ... . .. . ....... ... ... ......... ........... .......... . ... . ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. .. . .. . ... ....... ....... ..... ... ... . ..... ... . ... . ... ....... ... ......... ........... ... ... .. .... ....... ... ... . . . . . ..... ....... ... ... ......... ........... ......... .. .. .. ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... . .. . ... ....... ....... ..... ... .. . ..... ... . ... . ... ....... ... ......... .......... .... ... .. .... ....... ... ... . . . . ..... ..... ....... ... ... ......... ........... ......... . ...........................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... . ... . ... ....... ....... ..... .... . . ..... ... . ... . ... ........ . .... ..... ..... .... .... ... . ..... ....... ... ... . . . . ... . ..... ....... ... ... ......... ..... ..... ..... ...... ..... .... .......................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... .. ... .. ........ .. ... ...... . ...... .. ... .. ......... .... .. .. ... ..... .. ..... ...... ... ... . ... .. ..... .. .. ........ .. .. .. ..... ..... ... ......................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............................................ ... ....................................... ........... ......................................................................................... ........... ................. .......................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............................................. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ......................................................... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ................................ .......... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ...XOO++",
+"XXOO+.............. .. ... ..................... .................................. ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ... ........... .... ............ .......... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ...XOO++",
+"XXOO+.............. .. ... ........................................................ ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ..................... ............ .......... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ....XOO++",
+"XXOO+.............. .. ... .. .. . ... ... ... . ... ..................... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... ... ... . ... ... .......... ... ... .. ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ....XOO++",
+"XXOO+.............. .. ...... . .. . ... ... ... .. . ... .................... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ..... ... .. ... .... ............ ... ... .. ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .....XOO++",
+"XXOO+.............. .. ...... . ...... ..... ... ... . ... .................... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... ...... ... ... ... .... ............ ... ... .. ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ......XOO++",
+"XXOO+.............. .. ..... ... . ........ .... ... ... . ... .................... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... ...... ... ... ... .... ............ ... .. .. ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ......XOO++",
+"XXOO+.............. .. ..... ... . ..... ... ... ... ... .. ... ..... ..... .... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ....... ... ... ... .... .. ... ..... .... . .. .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . .......XOO++",
+"XXOO+.............. .. ...... . ...... ... .. ... ..... .. ... ... ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ...... .. ... .. .... ... ... ...... .. .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . .......XOO++",
+"XXOO+.............. ...................................... ... ... ..... ..... ............................................................................................................................................. ... . ..................................................................................... ......... ... ........................................................................................................................................... ... . ...............................XOO++",
+"XXOO+.............. ....................................... ............................................................................................................................................................... .. ................................................................................................ ............................................................................................................................................. .. ...............................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .............................. ..... .............. .......................................................... .......... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ..... ............................................ .......... ... ...... . ........................... ... .................. ..... .....................XOO++",
+"XXOO+.............. .... ........... .... ........ ..... ............... ...................... ...... ............................. .......... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ..... ........................... ................. ............ ... ........ . ........................... .. .. ................. ..... .....................XOO++",
+"XXOO+.............. ..................... ....... ...... ............... ...................... .................................... .......... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ...... ............................................. ............ ... ....... .. .......................... ... .................... .... ......................XOO++",
+"XXOO+.............. ... ... . ... ... ..... ... .. ... .... .... .. . ... .. ... .... .. . ... .......... ... ... .. ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... ... . ... . . ... .. . ... .... .......... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ....XOO++",
+"XXOO+.............. .... ... .. ... .... ...... ... ... . ... . ... ... ....... . .. ..... .. ...... ... ... . .. . ... ......... ... ... .. ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... . ... . .. ..... . . . ... ... ... ......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ...XOO++",
+"XXOO+.............. .... ... ... ... .... ..... .... ... . . ....... .... . ...... .. ...... ... ... . ... .. ........... ... ... .. ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ... . ... .. . . . ... ... ............. ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... .......XOO++",
+"XXOO+.............. .... ... ... ... .... ..... .... ... . ..... ....... ... ... . ..... ... .. ...... ... ... . ... .... .......... ... .. .. ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . .. . ... . ... . . . ... ... ............. ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. .......XOO++",
+"XXOO+.............. .... ... ... ... .... .. . ..... ... . ... . ... ... ... ... . ..... ... .. .. ... ... ... . ... . ... ... ..... .... . .. .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... ... .. . . ... . ... . . . ... ... ... ... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . .......XOO++",
+"XXOO+.............. ... .. ... .. .... .. ...... .. ... ... ... . ...... ... ... ... .. ... .. ... ... ...... .. .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ...... ..... . ... .. . ... .. ... ... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. .......XOO++",
+"XXOO+.............. .......................................................................................................... ......... ... ........................................................................................................................................... ... . ................................................................. ... ................................. ......... ... ...................................................................................................XOO++",
+"XXOO+.............. ..................................................................................................................... ............................................................................................................................................. .. .................................................................. ............................................. ....................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ...... ....................... .. .......... ............................... ..... ............................. ................. .............. ................... .............. .......... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ............................................ .......... ... ...... . .......XOO++",
+"XXOO+.............. ...... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ................. ............... ................... ............... ............ ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ..................... .......... ............ ............ ... ........ . .......XOO++",
+"XXOO+.............. ..... ....................... .... ........... ............................... .... ..................... ....... .................. ............... ................... ............... ............ ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ................................. ............ ............ ... ....... .. .......XOO++",
+"XXOO+.............. ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. . ... ... .. .. . .... .... .. . ... .. .......... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... ... ... .. . ... ... .. .......... ... ... .... ... ....... .. . ....XOO++",
+"XXOO+.............. .... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... .. . ... . ... . ... . .. ... ....... . .. . ... . ... ......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... . ... . .. ... ... ... .. ............ ... ... .... ... ...... ... .. ...XOO++",
+"XXOO+.............. ... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . . ... . . ....... .... . ... . ... .. ........... ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... ... ..... ....... ... ... .. ............ ... ... .... ... ..... .... ... ...XOO++",
+"XXOO+.............. ... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ..... ... . ..... ....... ... ... . ... . ... .... .......... ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... ....... .. ..... ....... ... ... .. ............ ... .. .... ... ..... .... ... ...XOO++",
+"XXOO+.............. .. ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... ... . ... . ... . ... . ....... ... ... . ... . ... . ... ... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... ... . ... . ....... ... ... .. ... ..... .... . .... ... .... ..... ... ...XOO++",
+"XXOO+.............. .. ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ... .. ... .. .. ...... ... . ... .. .. ... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ...... ... .. ...... .. ....... ... ... ...... .. ... .. ..... ... ...XOO++",
+"XXOO+.............. .................................................. ... . ......................................................................................................................... ......... ... ................................................................................................................................................. ... . ................................................................................... ............. ......... ... ...........................XOO++",
+"XXOO+.............. ................................................... .. .................................................................................................................................... ................................................................................................................................................... .. ................................................................................... ........................ ............................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ........................ ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ................................ .... .......... .......... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ............. ...... ...........XOO++",
+"XXOO+.............. ........................ .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ............................... ... .. . .......... .......... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ .. .......... ....... ...........XOO++",
+"XXOO+.............. ....................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ................................ ... . ... ......... .......... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ... .......... ....... ...........XOO++",
+"XXOO+.............. ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. ... .. . ...... . ... ......... ... ... .. ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. .... .... ....XOO++",
+"XXOO+.............. .. ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... ..... . ... . ... . .. .... .. ... ......... ... ... .. ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... .... ........ . ... ... ... ... ...XOO++",
+"XXOO+.............. .. ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... .. . ... . . ....... ... ... ......... ... ... .. ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... ..... . ... ... ... ...XOO++",
+"XXOO+.............. .. ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ... . ... . ..... ...... .... ... ......... ... .. .. ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... .... ... . ... ... ... .......XOO++",
+"XXOO+.............. .. ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... .. ... . .. ... . ..... ...... . .... ..... .... . .. .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ...... .. . ... . ... ... ... ... ...XOO++",
+"XXOO+.............. ... .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ...... . ...... .. ..... ... .... ... ...... .. .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ....... ... . ... ... ....XOO++",
+"XXOO+.............. .......................................................................................................................... ... . ........................................................... ........... ............................... ......... ... ........................................................................................................................................... ... . ...........................................................................................XOO++",
+"XXOO+.............. ........................................................................................................................... .. ........................................................... ........... .......................................... ............................................................................................................................................. .. ...........................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... .... .......... .......... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ............. ...... ........... ... ........ .......... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ...XOO++",
+"XXOO+.............. .. ... .. . .......... ............ ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ .. .......... ....... .......... ....... ......... ............ ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ...XOO++",
+"XXOO+.............. .. ... . ... ......... ............ ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ... .......... ....... ......... . ...... .......... ............ ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ....XOO++",
+"XXOO+.............. ...... . ... ......... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. .... .... .... ..... ........... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ....XOO++",
+"XXOO+.............. ..... .. ... ......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... .... ........ . ... ... ... ... ... .... .......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .....XOO++",
+"XXOO+.............. .... ... ... ......... ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... ..... . ... ... ... ... ....... ......... ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ......XOO++",
+"XXOO+.............. ... .... ... ......... ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... .... ... . ... ... ... ....... ....... ......... ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ......XOO++",
+"XXOO+.............. .. ...... . .... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ...... .. . ... . ... ... ... ... ... ... ... ... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . .......XOO++",
+"XXOO+.............. .. ... .... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ....... ... . ... ... .. .. ... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . .......XOO++",
+"XXOO+.............. ................ ......... ... ................................................................................................................................................. ... . ....................................................................................................... ......... ... ................................................................................................................................................. ... . ...............................XOO++",
+"XXOO+.............. ........................... ................................................................................................................................................... .. .................................................................................................................. ................................................................................................................................................... .. ...............................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .............................. ............. ...... ........... .... ......... .......... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ............................................ .......... ...... . ........................... ... .................. ..... ....................... ....................... .. .....XOO++",
+"XXOO+.............. .... ........... .... ........ .. .......... ....... .......... ... ... ......... ............ ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ............................................. .......... ........ . ........................... .. .. ................. ..... ....................... ....................... ... .....XOO++",
+"XXOO+.............. ..................... ....... ... .......... ....... ......... . ... ............. ............ ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... .............................................. .......... ....... .. .......................... ... .................... .... ....................... ....................... .... .....XOO++",
+"XXOO+.............. ... ... . ... ... ..... .. ... .. .... .... .... ... ............. ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. . ... .. . ... .......... ... ... .. ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .....XOO++",
+"XXOO+.............. .... ... .. ... .... ...... .... ........ . ... ... ... ... ... ... .......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... ..... . .. ..... . . . . ... ......... ... ... .. ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... .....XOO++",
+"XXOO+.............. .... ... ... ... .... ..... ..... ..... . ... ... ... ... ... ... ......... ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... .. . ...... . . . .. ........... ... ... .. ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... .....XOO++",
+"XXOO+.............. .... ... ... ... .... ..... ..... .... ... . ... ... ... ....... ... ... ......... ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ... . ..... ... . . . .... .......... ... .. .. ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... .....XOO++",
+"XXOO+.............. .... ... ... ... .... .. . ...... .. . ... . ... ... ... ... ... ... ... ... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... .. ... . ..... ... . . . . ... ... ..... .... . .. .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... .....XOO++",
+"XXOO+.............. ... .. ... .. .... .. ....... ... . ... ... .. .. ... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ...... . ...... . ... .. ... ... ...... .. .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ....XOO++",
+"XXOO+.............. ............................................................................ ......... ... ................................................................................................................................................. ... . ........................................................... ..................................... ......... ... .................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................... ................................................................................................................................................... .. ........................................................... ................................................ ..................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ......... ............................... ..... ............................. .......... ......... .......... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ...................................... .......... ... ...... . ........................... ... .................. ..... ....................... ...............XOO++",
+"XXOO+.............. .... ..... ............................... ..... ... ........... .... ........ .......... .......... ............ ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ....................................... ............ ... ........ . ........................... .. .. ................. ..... ....................... ...............XOO++",
+"XXOO+.............. .......... ............................... .... ..................... ....... .......... .......... ............ ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ........................................ ............ ... ....... .. .......................... ... .................... .... ....................... ................XOO++",
+"XXOO+.............. ... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... ... ... . .......... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. ... .. . .......... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ....XOO++",
+"XXOO+.............. .... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ....... .. . .......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... ..... . ... . ... . .. ......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. ...XOO++",
+"XXOO+.............. .... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... . .. .......... ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... .. . ... . . ............. ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... .......XOO++",
+"XXOO+.............. .... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ......... ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ... . ... . ..... ............. ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. .......XOO++",
+"XXOO+.............. .... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... ... .... .... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... .. ... . .. ... . ....... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . .......XOO++",
+"XXOO+.............. ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ...... .... ... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ...... . ...... .. ...... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. .......XOO++",
+"XXOO+.............. .............. ... . ......................................................................... ......... ... ................................................................................................................................................. ... . ........................................................... ........... ................... ......... ... .....................................................................................................................XOO++",
+"XXOO+.............. ............... .. .................................................................................... ................................................................................................................................................... .. ........................................................... ........... .............................. ......................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............ .. .......... ............................... ..... ............................. ........................................................ .......... ... ... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ................. .............. .......... ...... . ........................... ... ..........XOO++",
+"XXOO+.............. ............ ... ..... ..... ............................... ..... ... ........... .... ........ ......................................................... ............ ..... ..... ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ......... ....... ... ........... .......... ........ . ........................... .. .. .........XOO++",
+"XXOO+.............. ........... .... ........... ............................... .... ..................... ....... .......................................................... ............ ..... ..... ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... .................. ............... .......... ....... .. .......................... ... ............XOO++",
+"XXOO+.............. ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... ... .. . ... .. . ... .. ... .. .. . .......... ... ... .... ..... ..... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. . ... .... .. ........... ... ... .. ....... .. . ... .. . ... ..... ... .... . ....XOO++",
+"XXOO+.............. .. ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... . .. . ... . .. ..... . ... . ... . .. ......... ... ... .... ..... ..... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... . . ... ... ... ... ........... ... ... .. ...... ... .. . ... . . . . ... ... ... .. .. ...XOO++",
+"XXOO+.............. .. ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... . ... . ... . ...... . ... . . ............. ... ... .... ..... ..... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... . . ... ... ... ... ........... ... ... .. ..... .... ... . ... . . . . .. ..... .... .......XOO++",
+"XXOO+.............. .. ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ..... ... . ... . ..... ... .. . .. ..... ............. ... .. .... ..... ..... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... . . ... ... ... ... ........... ... .. .. ..... .... ... . ... . . . . ...... ..... .... .......XOO++",
+"XXOO+.............. .. ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... ... . ... .. . ..... ... .. . .. ... . ....... ..... .... . .... ..... ..... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... . . ... ... ... ... ..... ..... .... . .. .... ..... ... . ... . . . . ... . ...... .... .......XOO++",
+"XXOO+.............. ... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ...... .. ... ..... . ...... ... .... .. ...... ... ...... .. ... ... ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ... .. ... .. ... ... ...... .. .. ..... ... .. .. ... .. .. ...... .... .......XOO++",
+"XXOO+.............. ................................ ... . ....................................................................... ... ................................. ......... ... ............................................................................................................................................................. ... . ..................................................................................... ......... ... .........................................................XOO++",
+"XXOO+.............. ................................. .. ........................................................................ ............................................. ............................................................................................................................................................... .. ................................................................................................ ..........................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............ ..... ....................... ....................... .. .......... ............................... ..... ............................. ..................... ....................................... .......... ... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. .............................................XOO++",
+"XXOO+.............. ............ ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ .................... .. ....................................... ............ ..... ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ...................................... ......XOO++",
+"XXOO+.............. ............ .... ....................... ....................... .... ........... ............................... .... ..................... ....... ..................... .......................................... ............ ..... ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ....................................... ......XOO++",
+"XXOO+.............. ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. . ... ..... .. . .. . ... .. . .......... ... ... .... ..... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. .. . ... .. ... .. . .. ....XOO++",
+"XXOO+.............. .. ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... . ... . .. . .. ... . .. . . . . ... . .. ......... ... ... .... ..... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... . .. . ... . ... . ... . .. .. ......XOO++",
+"XXOO+.............. .. . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . . ...... .... ... . ..... . . . . ............. ... ... .... ..... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ..... ... . ... . . ...... ......XOO++",
+"XXOO+.............. .. ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ..... ...... .... ... . ..... . . . ..... ............. ... .. .... ..... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ..... ... . ... . ..... ...... ......XOO++",
+"XXOO+.............. .. ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... .. ... . ...... .... ... . ..... . . . ... . ....... ..... .... . .... ..... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... .. ..... ... . .. ... . ...... .. ...XOO++",
+"XXOO+.............. ... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ...... .. ...... ..... .. ..... ... .. .. ...... ... ...... .. ... ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ..... ...... .. ...... .. ....... ....XOO++",
+"XXOO+.............. ...................................................................................... ... . ........................................................... ....................................................... ......... ... ....................................................................................................................................................... ... . ........................................................... ................. .........................XOO++",
+"XXOO+.............. ....................................................................................... .. ........................................................... .................................................................. ......................................................................................................................................................... .. ........................................................... ................. .........................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............... .......... ... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ................................... ......................... ...... ................ .......... ... ......................................................................................................................................................................XOO++",
+"XXOO+.............. ................ ............ ..... ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ...................... ........ .. ............ ......... ....... ................. ............ ..... ......................................................................................................................................................................XOO++",
+"XXOO+.............. ................ ............ ..... ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ........................... ....... ... ...................... ....... ................. ............ ..... ......................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... ......... ... ... .... ..... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . .. .. ... . ..... .. .. ... .. ... . .. .. .... .... .......... ... ... .... ..... ......................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... ......... ... ... .... ..... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. . ... . ... .. ...... .... .... ... ... ... .. . . ..... ... ... ......... ... ... .... ..... ......................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... ......... ... ... .... ..... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... . ... . ... .. ..... ..... .... . . ... ... ... . ...... ... ......... ... ... .... ..... ......................................................................................................................................................................XOO++",
+"XXOO+.............. .. .. ......... ... .. .... ..... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... . ... . ... .. ..... ..... .... . . ... ... ... . . ..... ... ............. ... .. .... ..... ......................................................................................................................................................................XOO++",
+"XXOO+.............. ... . ... ..... .... . .... ..... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... . .. .. .. .. . ...... .. . . . ... ... ... . .. .... ... ... ... ..... .... . .... ..... ......................................................................................................................................................................XOO++",
+"XXOO+.............. ...... .. ... ...... .. ... ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... . ...... . ... .. ....... ... . ... .. ... . ... .. ... ... ... ...... .. ... ......................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... ... ......... ... ....................................................................................................................................................... ... . ......................................... ................................................................... ......... ... .................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ............... ......................................................................................................................................................... .. ......................................... .............................................................................. ..................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ........................................................................................................................... ... ... ... .... .... ... ... ... ..... ... ... ... .. .. ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... .......... ................................... ...... ......................................... ............................ .... ... .... ... ..... ... ... .... ... .... ... .... ..... ... .... ... . ........ ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... .......... ................................... ............................................................................. .... ... .... ... .... . ... ........ ... .... ... ... ..... ... .... ... . ........ ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... . .. ... .. . .. .. . ... .. ... ... . ... ........ . .. ... .. ... .... ..................... .... ... .... ... ...... ... ........ ... ........ .. . ..... ... ........ . . ..... ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... .. .. .... ... . .. . ... . .. . ... .. ...... ... .. . ... ....... . . . ... . ... ... ... ... .................... ..... ..... ... ...... ... ..... ... ....... ... . ..... ... ....... .. .. .... ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... ... .. .... . ..... ... . ..... .. ...... ... ... . ... ....... . . . ... .. ..... ... ........................ .... ... .... ... ...... ... ... .... ... ...... ... .. ..... ... ...... ....... .... ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... ... .. .... ..... ..... ... . ..... ...... ...... ... ... . ... ....... . . . ... .... .... ... ........................ .... ... .... ... ...... ... ... .... ... ..... .... .... ... ..... ........ .... ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... ... .. .. . ... . ..... .. ..... ... .. .. ... ... ... .. ....... . . . .. . ... ... ... ... ... ..... ..... .... .... ... .... ... ...... ... ... .... ... .... ........ ..... ... .... ..... ... .... ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... .. ... ... ... .. ..... ..... ...... .... ... .. ... ..... ....... ... .. . .. ... ... ... ... ... ... ... ... ... .. .. ... ... .. .... ... ... .. .. ... ............................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ................................ ................................... ... ....................................... ..... ..... .......................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ................................ .................................... ............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ........................................ ......... ... ........................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ............................ ............. .. ........................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ........................ ......... . ............ .. . ........................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... ... . ... ... .......... ........... ..... .......... ... ... ... .. . ... .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ... . . . ... ... ........... .......... .... ......... ... . ... . ... . ... . .. . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ... . . . ............... ............. ... .......... ... . ..... ... . ... . ... .. .........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ... . . . ................... ............. ... ............ .. ..... ..... ... . ... . ... .... ........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... .. ... ... . . . ... ... ........... ..... ... ... ... ......... ... . ... . ... . ... . ... . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... .. ... .. ... ........ .. ... .. ........ ... ... ... .. ... .. .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............................ ................. .....................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ....................................................................................... ................................................................ ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ......... ...... ....................... ... ..................... .... ................. ......... ..............................................XOO++",
+"XXOO+.............. .. ... ......................................................... ............................. ............................ ................................... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ........ .. ..... .............. ........ .. .. ........ .......... ... .. . ............... .. .......... ..............................................XOO++",
+"XXOO+.............. .. ... ....................................................................................... ............................ ................................... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ......... ....... ............... ....... ... ........... .......... ... . ... .............. ............. ..............................................XOO++",
+"XXOO+.............. .. ... . . ... .. .. . ... ... ... ... ... ... ... . ... ......... .... .... .. . ... .. . .. ... ........................... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... .. . ... ....... ... .. ... . ..... ... ..... .. ... ...... . ... ........ ... .... . ..... ..............................................XOO++",
+"XXOO+.............. .. .. .. . ... . ... . .. . ... . ... . ... . ... . ... ... ... .. . ... ....... ... ... ... ... . . . . ... . .. .. .... ... .......................... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ... . . . .... ... ... . ... .. ...... ... .. ... .. ........ .... .. ... ........... . .. . . .... ..............................................XOO++",
+"XXOO+.............. .. ..... ..... . ... . ..... ... . ..... .. .... ..... ... ... . ... ....... ... ... . . . . . ... .. ..... ............................ ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. .... . . .. ..... .... ... . ... .. ..... ..... .... .. ..... ... ... ... ........ .. .... . . .... ..............................................XOO++",
+"XXOO+.............. .. ..... ..... ..... ... . ..... ... . ..... ........ ..... .... ... ... . ... ....... ....... ... ..... . . . ..... ... .. ....... ........................... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. .... . . .. ..... .... ... . ... .. ..... ..... .... ...... .... ... .. .... ... ....... ... .. .... . . .... ..............................................XOO++",
+"XXOO+.............. .. ..... ..... ... . .. ..... ... . ... . ... . ... . ... ... ... ... .. ....... ... ... ... ... . . . . ... . ... .. .. . ... ... ..... ..... .......... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ..... . . .. .... ..... ... . .. .. .. . ...... .... ... .. .. . ... . ...... . .... ... ... .. .... . . .... ..............................................XOO++",
+"XXOO+.............. .. ..... ...... .. ..... ...... ... ... ... ... ... .. ... ..... ........ ... ... .. ... .. .. ... ... ... ... ... ... ......... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ..... ... .. .... ...... ... . ... .. ...... ..... .... ... . ... .... ... .. .... ... .. ..............................................XOO++",
+"XXOO+.............. .................... ..................................................... ... ......................................................... ..... ..... ................................................................................................................................................... ... . ............................................................................................................. .......................................................................XOO++",
+"XXOO+.............. .................... ...................................................... ........................................................................................................................................................................................................................... .. .....................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ......... ................ .................................................... .......................................................................................................... .. .. ... ... ... ... ... ... ... .... .... ... ... .... ... .. ... .... .... ... ... ... .... .... ... ... ..... ... ... ... .. .. ..............................................................................................XOO++",
+"XXOO+.............. .. ... ......... ................. .......... ...... ................................... ............................................... .... ...... .............................................. ........ .... ... .... ... .... ... .... ... .... ... ..... ... ... .... ... ..... ... ........ ... ..... ... ... .... ... .... ... .. ...... ... .... ... .... ..... ... .... ... . ........ ..............................................................................................XOO++",
+"XXOO+.............. .. ............. ................. .......... .......................................... .................................................... ..................................................... ....... ..... ... .... ........ ... .... ... .... ... .... . ... ... .... ... .... . ... ........ ... .... . ... ... .... ... .... ... . . ...... ... .... ... ... ..... ... .... ... . ........ ..............................................................................................XOO++",
+"XXOO+.............. .. ...... .... .... .. ... ... .... .. ... ... . ... ......... ... .... ... ... . . .. . ........ ... ... ... ... ... .... .. . ... ........................... ...... ...... ... .... ........ ... .... ... .... ... ...... ....... .... ... ...... ... . ..... ... ...... ... ... .... ... ........ ... ...... ... ........ .. . ..... ... ........ . . ..... ..............................................................................................XOO++",
+"XXOO+.............. .. ......... ... ... ... . ... ... ....... .. ...... ... .. . ... ....... ... . ... ... ... ... . . . . .. ....... ... . ... . ... ... .... ...... ... ... . .. . ... .......................... ..... ..... ... .... ..... ... ..... .... ... ...... ...... ..... ... ...... ... .. .... ... ...... .... ..... ... ....... .... ...... ... ....... ... . ..... ... ....... .. .. .... ..............................................................................................XOO++",
+"XXOO+.............. .. ...... ... ... ..... ... ... .... .. ...... ... ... . ... ....... ..... ... ... ... ... . . . . ... ....... ... . ... .. ..... .... ...... ... ... . ... .. ............................ ........ .... ... .... ... .... ... ........ .... ... ...... ..... ...... ... ...... ....... .... ... ...... ... ... .... ... ...... ..... ...... ... ...... ... .. ..... ... ...... ....... .... ..............................................................................................XOO++",
+"XXOO+.............. .. ..... ... ... ... ..... ... ... ... ... .. ...... ... ... . ... ....... ..... ... ... ... ... . . . . ... ....... ... . ... .... .... .... ...... ... ... . ... .... ........................... ........ .... ... .... ... .... ... ........ .... ... ...... .... ....... ... ...... ....... .... ... ...... ... ... .... ... ..... ...... ...... ... ..... .... .... ... ..... ........ .... ..............................................................................................XOO++",
+"XXOO+.............. .. ... . ... ... ... ... . .. ... ... ... .. .. ... ... ... .. ....... ... . ... ... ... .. . . . . ... ....... .. ... . ... ... .... .. ... ... ... . ... . ... ... ..... ..... .......... .... ... .... ... .... ... .... ... .... ... .... ... ...... ... ........ ... ...... ... ... .... ... ...... ... ... .... ... .... ....... ...... ... .... ........ ..... ... .... ..... ... .... ..............................................................................................XOO++",
+"XXOO+.............. ... ... .. ... ... . .. ... ... ... .. ... ..... ........ ... ... ... . . ... . ... ....... ...... ... ... .... ... ... .. ... .. ... ... ... ......... ... ... ... ... ... ... ... ... ... .. . .. ... .. .. ... ... .. .. ... ... .. . .. ... .. .... ... ... .. .. ... ..............................................................................................XOO++",
+"XXOO+.............. .............................................................. ... ................................................. ....................................................... ..... ..... ...........................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............................................................... .................................................. ...............................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ........................................................................ .............. .. ... .......... .................................... .................... ..................................................................................... ......... .... ............ ..................... ............................ ................................................................................................................................................XOO++",
+"XXOO+.............. ........................................ ................ .............. ............. ... ..... .. ........... ..... ............................. ........... .... .... .................................................................................... .. ....... ... .. ............ ...................... ............................. ...............................................................................................................................................XOO++",
+"XXOO+.............. ......................................................... .............. ... ......... ... .... .. . ........... ................................... ................ .... .................................................................................... .......... ... . . ........... ...................... ............................. ...............................................................................................................................................XOO++",
+"XXOO+.............. ... .. .. .. . ... .. ... .. ... . ... .. ... ... .. ............ ... ..... ........... .... ... . ... ... ......... .... ... .. ... .. . ......... .. . ......... .. ... .. .. . ... ... ... ......... ... .............. ... .......... . ......... ... .... ... ... . . .. . ... ..... ..............................................................................................................................................XOO++",
+"XXOO+.............. ...... . ... . ... . .. . ... .. . .... ... . . ..... .. .... ... . ... ... ............ ... .... ........... ..... ... .. . ... . ... ........ .... ... ... .... .... .. ........... . .. ........... . ... . ... . .. ..... . ... . ... ....... ... . ........... .... .......... . ........ ... . ... ... ... ... . . . . .. . ... .... ..............................................................................................................................................XOO++",
+"XXOO+.............. ... . ... . ... . ..... ... ... ..... ... . . .. .. .... . ... ............... ....... ... ........... ..... ... ... . .. .......... .... . . ... .... .... ... ........ . ... ........ . ... . . ...... . ... . ....... ... .. ............ ..... ......... .. ........ ..... ... ... ... ... . . . . ... .. ...... ..............................................................................................................................................XOO++",
+"XXOO+.............. .. ... . ... . ... . ..... ... ... ..... ... . . . ... .. .... ..... ... .............. ........ ... ........... ..... ... ... . ........ .......... ... . . ... .... .... ... ....... ... . ... ....... ... .. . .. ..... ..... ... . ... . ........... ... .. ........... ...... ......... ....... ..... ... ... ... ... . . . . ... .... .... ...............................................................................................................................................XOO++",
+"XXOO+.............. .. ... . .. .. ..... ... .. . .... ... . . . ... .. .. . ... . ... ... ......... ..... ... ... ........... ..... ... ... . ... . ... ......... ... . . ... .... .. . ... ....... ... . ... ....... ... .. . .. ... . ..... ... .. . ... ....... ... .. .......... ....... ..... ...... ........ ... . ... ... ... .. . . . . ... . ... ... ...............................................................................................................................................XOO++",
+"XXOO+.............. ... . ..... ..... ...... .. ... .. .. ... .. ... ... ... .. ........ .. .. ........ ... .. ... .. ... ........... ... . ... .... .. ... ........ . ... ........ ... .... .. ...... ..... .. ......... ... .......... . .. ..... ......... ... ... ... . . ... . ... .. ... ................................................................................................................................................XOO++",
+"XXOO+.............. ........ ..... ............................................................. ......................................................................................................................................................... ... ............................................. ...........................................................................................................................................................................................................XOO++",
+"XXOO+.............. ........ ..... ........................................................................................................................................................................................................................ ..........................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............... ................ ......................... ...................................... ...................... ... ......... .................................... .................... ..................................................................................... ......... .. ....... .................... ............................ ..................................................................................................................XOO++",
+"XXOO+.............. ................ ................. .......... .............. ................................ ...... ..................... ... . ... ......... ..... ............................. ........... .... .... .................................................................................... .. ....... ... . ........... ......................... ............................. .................................................................................................................XOO++",
+"XXOO+.............. ................ ................. .......... .............. ................................ ...... ........... ......... ..... ............. ................................... ................ .... .................................................................................... .......... ... . ........... ......................... ............................. .................................................................................................................XOO++",
+"XXOO+.............. ... ... .... .... .. ... ... .... .. ... ... ........ .. ... .. ... .. .... ... ... .. ........ ..... ............. .... ... . ... ... ......... .... ... .. ... .. . ......... .. . ......... .. ... .. .. . ... ... ... ......... ... .............. . . ........ . ......... ... .... ... ... . . .. . ... ..... ................................................................................................................XOO++",
+"XXOO+.............. .. ... ..... ... ... ... . ... ... ....... .. .... ... . ... ....... ... .. . ...... . ... .. ...... ... ... ... ......... .. .......... ..... ... .. . ... . ... ........ .... ... ... .... .... .. ........... . .. ........... . ... . ... . .. ..... . ... . ... ....... ... . ........... .. .. ....... .. ....... ... . ... ... ... ... . . . . .. . ... .... ................................................................................................................XOO++",
+"XXOO+.............. .. ...... ... ... ..... ... ... .... .. .... . ... ....... ... .... . ...... ...... ... ... ............. ... . ... ......... ..... ... ... . .. .......... .... . . ... .... .... ... ........ . ... ........ . ... . . ...... . ... . ....... ... .. ............ ....... ........... ....... ..... ... ... ... ... . . . . ... .. ...... ................................................................................................................XOO++",
+"XXOO+.............. .. ..... ... ... ... ..... ... ... ... ... .. .... ..... ... ....... ....... ... ... . ...... ...... ... .. ............. ... . ... ......... ..... ... ... . ........ .......... ... . . ... .... .... ... ....... ... . ... ....... ... .. . .. ..... ..... ... . ... . ........... ... .. ........... ........ ........... ....... ..... ... ... ... ... . . . . ... .... .... .................................................................................................................XOO++",
+"XXOO+.............. .. ... . ... ... ... ... . .. ... ... ... .. .. . ... . ... ....... ... .. . .. ... . ... .. .. ... .... . ... ......... ... . ... ......... ..... ... ... . ... . ... ......... ... . . ... .... .. . ... ....... ... . ... ....... ... .. . .. ... . ..... ... .. . ... ....... ... .. .......... ..... ... ... ... ... ....... ... . ... ... ... .. . . . . ... . ... ... .................................................................................................................XOO++",
+"XXOO+.............. ... ... .. ... ... . .. ... ... ... ... ........ .. ... .. .. .... ... ...... .. ......... ... ......... ... .. ... .. ... ........... ... . ... .... .. ... ........ . ... ........ ... .... .. ...... ..... .. ......... ... .......... .. ... ... ......... ... ... ... . . ... . ... .. ... ..................................................................................................................XOO++",
+"XXOO+.............. ........................................................................................................ ... ... ................................................................................................................................................... ... ............................................. .............................................................................................................................................................................XOO++",
+"XXOO+.............. ......................................................................................................... ......................................................................................................................................................... ............................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................... .......... .... .......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ........................... ... ........ ... ... ......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ........................ ......... ........... . ... ... ......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... ... . ... ... ........ ............. ....... ........ ... ... ... .. . ... .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ... . . . ... ... ......... .......... ...... ........ ... . ... . ... . ... . .. . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ... . . . ............. ... ......... ..... .......... ... . ..... ... . ... . ... .. .........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ... . . . ................. ... ......... .... ............. .. ..... ..... ... . ... . ... .... ........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... .. ... ... . . . ... ... ......... ... ... ..... ... ........... ... . ... . ... . ... . ... . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... .. ... .. ... ......... ... .. . ........ ... ... ... .. ... .. .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............................ ................. .....................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ............................................................................................. ...............................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... .............. ................................................ ............................. ............................ ..................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... .............. .............................................................................. ............................ ..................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... .. ... .. .. .. . ... ... ... ... ... ... ... . ... ......... .... .... .. . ... .. . .. ... ..........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. .. ... . ... .. .... ... . .. . ... . ... . ... . ... . ... ... ... .. . ... ....... ... ... ... ... . . . . ... . .. .. .... ... .........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ..... ... .. .... .... ... . ..... ... . ..... .. .... ..... ... ... . ... ....... ... ... . . . . . ... .. ..... ...........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ..... ... .... ... .... ... . ..... ... . ..... ........ ..... .... ... ... . ... ....... ....... ... ..... . . . ..... ... .. ....... ..........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ..... ... . ... .. .. . .. ..... ... . ... . ... . ... . ... ... ... ... .. ....... ... ... ... ... . . . . ... . ... .. .. . ... ... ..... ..... .........................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ...... ... .... .. ..... ...... ... ... ... ... ... .. ... ..... ........ ... ... .. ... .. .. ... ... ... ... ... ... ........................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .......................... ..................................................... ... ......................................................... ..... ..... .........................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .......................... ...................................................... ................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ....... ... ........................................................................................... ...... .............................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ......... ... .................... ................. ........... ................. ............ ......... ....... ................ ............................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... .......... . ..................... ................. ........... ................. ...................... ....... ................ ............................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... .... ... . ......... .. ... . .. .. ... . ........ ... ........ .. ... .. ... . .. .. .... .... ........ ... .. ... .............................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... ... ... ......... ... . ... .. .... ... . ... .. ........... .... ... ........ .... ... ... ... .. . . ..... ... ... ........ .... ... .. . ..............................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... .. . ........ ... . ... .. .... ... . ... .. ........... .... ... ........ .... . . ... ... ... . ...... ... ........ .... ... ...............................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... ...... . ........ ... . ... .. .... ... . ... .. ........... .... ... ........ .... . . ... ... ... . . ..... ... ............ .... ....... ...............................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... ... . ... ....... ... . .. .. .. . .. .. .. .. ........ .. . ... ........ .. . . . ... ... ... . .. .... ... ... ... .... .. . ... .. . .... ..... ..... .............................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... .... .. ... ........ ... . ... .. ...... . ... .......... ... .......... ... . ... .. ... . ... .. ... ... .... ... .. ... .. ... ... ............................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............................................ ..................................................................................... ....................... ..... ..... .............................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............................................ .......................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... .......... ................................... ...... ......................................... ...............................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... .......... ................................... ................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... . .. ... .. . .. .. . ... .. ... ... . ... ........ . .. ... .. ... .... ........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... .. .. .... ... . .. . ... . .. . ... .. ...... ... .. . ... ....... . . . ... . ... ... ... ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... ... .. .... . ..... ... . ..... .. ...... ... ... . ... ....... . . . ... .. ..... ... ...........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... ... .. .... ..... ..... ... . ..... ...... ...... ... ... . ... ....... . . . ... .... .... ... ...........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... ... .. .. . ... . ..... .. ..... ... .. .. ... ... ... .. ....... . . . .. . ... ... ... ... ... ..... ..... .......................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... .. ... ... ... .. ..... ..... ...... .... ... .. ... ..... ....... ... .. . .. ... ... ... ... ... ......................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ................................ ................................... ... ....................................... ..... ..... .......................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ................................ .................................... ............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ........................................ .......... ... .......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ............................ . ........ ... . ... ......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ........................ ......... ... ....... ... . ... ......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... ... . ... ... ........ ... ........... ..... ........ ... ... ... .. . ... .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ... . . . ... ... ......... ... .......... ..... ........ ... . ... . ... . ... . .. . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ... . . . ............. ... ......... ..... .......... ... . ..... ... . ... . ... .. .........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... ...... ... . . . ................. ... ........ ..... ............. .. ..... ..... ... . ... . ... .... ........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... .. ... ... . . . ... ... .......... . .... ... ..... ........... ... . ... . ... . ... . ... . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .... ... .. ... .. ... .......... .... .. . ........ ... ... ... .. ... .. .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ............................ ................. .....................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... .. .. ... ............................................................................................ ...... ............................... .......................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... ... .... .. ... ...................... ................. ........... ................. ............ ......... ....... ....................... ....... ... ...................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . ... .... .. ... ...................... ................. ........... ................. ...................... ....... ............................... .......................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . ... .... .. ... .......... .. ... . .. .. ... . ........ ... ........ .. ... .. ... . .. .. .... .... ........ . ... .... .. ...................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . ... .... .. ... ......... ... . ... .. .... ... . ... .. ........... .... ... ........ .... ... ... ... .. . . ..... ... ... ....... . . ... ... ... ... ...................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... ... .... .. ... ......... ... . ... .. .... ... . ... .. ........... .... ... ........ .... . . ... ... ... . ...... ... ....... . . ... ... ... ... ...................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... ... .... .. ... ......... ... . ... .. .... ... . ... .. ........... .... ... ........ .... . . ... ... ... . . ..... ... ........... . . ... ... ... ... ...................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... ... .... .. ... ......... ... . .. .. .. . .. .. .. .. ........ .. . ... ........ .. . . . ... ... ... . .. .... ... ... ... ... . . ... ... ... ... ..... ..... ..... .................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ... .. .. ... ......... ... . ... .. ...... . ... .......... ... .......... ... . ... .. ... . ... .. ... ... .. ... .. ... .. ... ... ... ................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .................................................. ..................................................................................... ............................. ..... ..... .................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .................................................. .................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . ..... . ..... ..... .................. ............ . .... . ......... ................ ......................................................... ...... .....................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. .. . . . . . . .................. ........... .... .. .......... .... ......... ........ ....................... ............ ......... ....... .....................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ... . .. . . . . . . . .................. ........... . .... ... .......... .............. . .......... ....................... ...................... ....... .....................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . . ... . . . ... . .. . ...... . .. ... . ................. ... ... ... ... ... . . ......... ... .. ... ....... .. ... .. ... . .. .. .... .... ..............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . . . ... . . . .. . . ...... . . . ... . ... ............... .... .. .. .. .... .. .. . ......... .... ... .. . ......... .... ... ... ... .. . . ..... ... ... .............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . . . . . . . ...... . . . ... . ... .............. ..... .. .. .... .. .. . ........ .... ... .......... .... . . ... ... ... . ...... ... .............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . ..... . . . . . ...... . . . ... . ... .............. ..... .. ...... .... .. ...... . ........ .... ....... .......... .... . . ... ... ... . . ..... ... .................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. .. . . . . . . . . . . . ...... . . . .. . ... ............. ...... .. .. .. .... .. .. ......... .. . ... .. . ......... .. . . . ... ... ... . .. .... ... ... .............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....... . ... ... . ... ... . ...... ... .. . . .............. ..... .. .. .. .. ... ........... ... .. ... ......... ... . ... .. ... . ... .. ... ..............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. . . ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. . ......................................... ....... ... ............. ... ........................................... ......... ...... .... ... .. ........... ... ......................................................... .......... .... ..............................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ... ....... ................. ................. ......... ... ............. ... ..................... ......................... ........ ...... ... ... ..... ... ......... ... ... ................................. ..................... ... ........ ..... .............................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ... ........................................... .......... . .............. ... .............................................. ........ . ..... .. . ... ..... ... ......... ... ........................................................... ........... . ..... .............................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ... . ... .... ......... .... .......... .... ... . .............. ... .. .. . ... ... .... .. . .......... ........... .... . .... ... . .. ... ........ .... ........... ... .. .. . ... ... .... .. . ........ ............. ...... ............................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ... .. ... ... ... ......... ... ... ......... ... ... ... ................ . .. ... . .. . ... ... ... ... . .. ........ .......... .... . .... ... .. .. ........ .... ........... ... . ... . .. . ... ... ... ... . .. ....... .......... ...... ............................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ... ... ... .... ........... .... ........... ... .. . ............... . .. . ...... ..... ... ... . ... ........... ......... ... .. .... ....... ..... ........ .... ........... ... . . ...... ..... ... ... . ... ....... ... ......... ...... ............................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ... ... ... ...... .......... ...... .......... ... ...... . ............... . .. ..... ........ .... ... ... . ... ........... ......... ... ... ....... ..... ......... ... ............ . .. ..... ........ .... ... ... . ... ....... ... ......... ..... .............................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ... ... ... ... ... ......... ... ... ......... ... ... . ... ... .......... ... ... . ..... ... ... ... ... . ... ....... ... ... ..... ...... .... ... ... . ... ......... ... ... ........ . .. ... . ..... ... ... ... ... . ... ....... ... ... ..... ..... .............................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ... ... .. ... ......... ... .......... .... .. ... ... ........... .... .. ...... ... ... .. ... ........ ... .. .... .. .. ... ........... ... .......... .... .. ...... ... ... .. ... ........ ... .. .. ..............................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ..................................................................... .................................................................. ................................................................................................................. .........................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ..... .......................... ...... ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... .... ............ ......... ....... ................ ..........................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... .... ...................... ....... ................ ..........................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ... .... .. ... .. ... . .. .. .... .... ........ ... .. ... ...........................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ... ..... .... ... ... ... .. . . ..... ... ... ........ .... ... .. . ............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ... ..... .... . . ... ... ... . ...... ... ........ .... ... .............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... .... .... . . ... ... ... . . ..... ... ............ .... ....... .............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... .... .. . . . ... ... ... . .. .... ... ... ... .... .. . ... .. . ............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ..... .... ... . ... .. ... . ... .. ... ... .... ... .. ... ...........................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .................................................... ...............................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. ........ ............ ............. ....... ........ .. ..... ........................... ....... ................. ............................................................................................................. .................................................................................... ................... .................. ................... ........... .......................................................................................XOO++",
+"XXOO+. . . . . . .. ... .. ....... ............. ............ ............ ....... ... . ...... .......................... ....... ................. ........................ ...... .................................. ..... ................................... .. ............................................. ..................................... ........ .......... ................... ................... ........... .......................................................................................XOO++",
+"XXOO+.. . . . . . . ... .. ....... ............. ........... ............ ........ ..... ....... ......................... ....... ................. ........................ ......................................... ..... ................................... ...................................................................................... ........ .......... ................... ................... ........... .......................................................................................XOO++",
+"XXOO+. . . . . . .. ... .. .. .. ... .... .......... .... ... ... ......... ..... . ..... ......... .. . ... ....... . .. ... . .. . ... .. . ... .. ... .... .. . ........ ... .. .. ... .. . .. . ... ......... ..... .. . ......... .. . ... .. . ... .... ... .. . ............... . ... . ... .. . ................ .... ... ... .. ... .......................................................................................XOO++",
+"XXOO+.. . . . . . . ... ...... . ... . ... ... ......... ..... ... .. ........ .. .. ..... ........... . .. . ... ....... .. . ... . ... . .. . ... . .. ..... .. ...... ... ... . .. ....... ... ..... .. ..... .... ... . .. . .. . ... ....... .. ... . .. ........... . . . . ... . .. ... ... ... ..... . .. ............. ... . ... .. .... ... . .. ............... ... ... ..... . ... . ... . ... .......................................................................................XOO++",
+"XXOO+. . . . . . .. ... .. .. . ... . ... .......... .... ... ..... ....... ... . ... .... ......... . ... . ... ....... ... . ... . ... . ... . . ... .. .. ...... ... ... . ... ....... ... .. .. ..... .... . ..... ... .. .......... .... ... . ............ . . . . . ....... ... ...... . ... ............. ... . ... .. .... ..... ... ............... ... ... .. . ... . . ... .......................................................................................XOO++",
+"XXOO+.. . . . . . . ... .. . ... . ... . ....... ........... .... . ...... ....... ... . ... ... ......... ... . ... . ... ....... ... . .. . ... . ... . ..... ... . ... .. ...... ... ... . ... ....... ... . ... .. ..... .... ..... ..... ... .... ......... .... ... . ........... ... . . . . ..... ....... ... ..... ... . ... ............. ... . ... .. .... ..... ... ............... ... ... . ... . ... . ..... ... .......................................................................................XOO++",
+"XXOO+. . . . . . .. ... .. . ... . ... . ... ... ............ ... . .. ... ... ... ... . ... .. .......... ... . ... . ... ....... ... .. . . .. ... . ... . ... . ... .. .. ... ... ... . ... ....... .. ... .. .. .. .. . ... . ..... ... . ... ........ .... ... . ........... ... . . . . ... . ....... ... ... . ... . ... ... ........ ... . .. .. .. . ... . ... ... .......... ... ... . ... . ... . ... . ... ... ...................................................................................XOO++",
+"XXOO+.. . . . . . . .. ... . ... ... ............ ... .... ... ... .. ... . ............ . ... .. ....... ... ..... . ..... ... .. .. ... .. ... ... ... .. ... ....... ...... ... .... ... .. ..... ... .. ......... ..... .. ............ . ... .. .. ...... ... ... . ... ... .......... .. . ... ... .. ... ... .......... ... ... .. .. ... .. ..................................................................................XOO++",
+"XXOO+. . . . . . .. .......................................................... ......................................................... ... . ........................................................... .............................................................................................................................. ......................................... ................................................ ...................................................................................XOO++",
+"XXOO+.. . . . . . . ..................................................................................................................... .. ........................................................... .............................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ..... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ....................... .. .......... ............................... ..... ......... ............................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ....... . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... .. .................... ... ..... ..... ............................... ..... ........ .. .............. ............................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ...... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ... ................... .... ........... ............................... ..... ........ ................. ............................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... .. ... .. ... .... .... .... ..... ... ... . ... .. . ... .. .. ... ..... ........ ... .. ... .............................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .... .... ... .. . .... ..... ..... ..... ... ... . ... . ... . .. . ... . ... . ... . .. ... ........ .... ... .. . ..............................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ..... .... ... .... ...... ..... ..... ... ... . ... . ... . ... . ... . ... . .. ..... .......... .... ... ...............................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... .... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ..... .... ....... .... ...... ..... ..... ... .. . ... . ... . ... . ... . ... . ...... ....... ......... .... ....... ...............................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ...... .. . ... .. . .. ....... ..... ..... .... . . .. ... . ... . ... . ... . ... .. .... ... ... .... .. . ... .. . ..............................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ..... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ....... ... .. ... . ...... ... ... ...... . ...... .. ... .. .. .. ... ..... ... .... ... .. ... .............................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ............................................................................................................................................ ... . ....................................................................... ... . ................................................. .................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ............................................................................................................................................. .. ........................................................................ .. ...................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ..... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ....................... ..... ................. ......... ................................. ........................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ....... . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... .. .................... ..... ................. ........ .. .............. .................. .......................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ...... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ... ................... ...... ................. ........ ................. .................. .......................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... .. ... .. ... .... ... . ... . . ... .. ... ..... ........ ... .. ... .... ......................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .... .... ... .. . .... ... ... . ... . .. . ... . ... . .. ... ........ .... ... .. . ..... ......................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ..... .... ... .... .... ... . ... . ... . ... . .. ..... .......... .... ... ...... ......................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... .... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ..... .... ....... .... .... ... . .. . ... . ... . ...... ....... ......... .... ....... ..... .......................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ...... .. . ... .. . .. ..... ... .. . . ... . ... . ... .. .... ... ... .... .. . ... .. . .... .......................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ..... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ....... ... .. ... . ...... ..... . ... .. .. ... ..... ... .... ... .. ... .. ........................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ............................................................................................................................................ ... . ........................................................... ... ................................. ...............................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ............................................................................................................................................. .. ............................................................ ..................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ..... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ....................... ... .................. ......... ..........................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ....... . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... .. .................... .. .. ........ ........ ........ .. .............. ..........................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ...... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ... ................... ... ........... ........ ........ ................. ..........................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... .. ... .. ... .... ... ..... .. ... .. ... ..... ........ ... .. ... ...........................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .... .... ... .. . .... ... .. ... .. .... ... . ... . .. ... ........ .... ... .. . ............................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ..... .... ... .... ..... .... .. .... ... . .. ..... .......... .... ... .............................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... .... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ..... .... ....... .... ..... .... ...... .... ... . ...... ....... ......... .... ....... .............................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ...... .. . ... .. . .. ...... .... ... .. .. . ... . ... .. .... ... ... .... .. . ... .. . ............................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ..... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ....... ... .. ... . ...... ..... .... ... .. ... ..... ... .... ... .. ... ...........................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ............................................................................................................................................ ... . ................................................................................................. ...............................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ............................................................................................................................................. .. .................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ..... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ....................... .. .......... ..................................... ......... ................................. ..... ..... ........... .... ............. .. ......... ..............................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ....... . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... .. .................... ... ..... ..... ..................................... ........ .. .............. .................. ..... ..... .......... ..... ............. .... .......... .............................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ...... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ... ................... .... ........... ..................................... ........ ................. .................. ..... ..... .......... .... . ............. .... .......... .............................................................................................................................XOO++",
+"XXOO+. . . . . . .. ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... .. ... .. ... .... .... .... ..... ... ... ....... ... ......... .. ... ..... ........ ... .. ... .... ..... ..... ......... ...... ... ... .. .... ........... ............................................................................................................................XOO++",
+"XXOO+.. . . . . . . ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .... .... ... .. . .... ..... ..... ..... ... ... . . ... . ... . . ... . ... . .. ... ........ .... ... .. . ..... ..... ..... ......... ...... .... . .. ... .... ........... ............................................................................................................................XOO++",
+"XXOO+. . . . . . .. ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ..... .... ... .... ...... ..... ..... ... ... ....... ... .. ......... ... . .. ..... .......... .... ... ...... ..... ..... ......... ...... ..... ... ... .... ........... ............................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... .... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ..... .... ....... .... ...... ..... ..... ... .. ....... ... .... ........ ... . ...... ....... ......... .... ....... ..... ..... ..... .......... ...... ..... ... ... .... .......... .............................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ...... .. . ... .. . .. ....... ..... ..... .... . ....... .. ... ....... ... . ... .. .... ... ... .... .. . ... .. . .... ..... ..... .......... ...... .... . .. ... .... .......... .............................................................................................................................XOO++",
+"XXOO+.. . . . . . . ..... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ....... ... .. ... . ...... ... ... ...... ....... ...... ......... .. ... ..... ... .... ... .. ... .. ..... ..... ........... .. . ... .. .. ......... ..............................................................................................................................XOO++",
+"XXOO+. . . . . . .. ............................................................................................................................................ ... . ....................................................................... ... ....... ........................................... .................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ............................................................................................................................................. .. ........................................................................ ........ .............................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ... ................................................................................................................................ ...... ................... ...................... .... .............................................. .... ... .. ... ........ .............................. ....................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. ... ........ ................. ........................ .... ..... ......................................... ............ ......... ....... ................... ......... ........... .... ............................................. ... .. ....... . ... . ... ....... ............ .................. ...................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. ... ........ ................. ............................. ..... ......................................... ...................... ....... ................... ..................... ... . ............................................. ... . . ...... .. ... . ........... ............ .................. ...................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. ... . ... . .. .. ... . ........ ... . . ... ... .. ... .. . ......... .. . ........ .. ... .. ... . .. .. .... .... ......... . ... .. .......... ...... ......... ... ... ... .................. ... ..... ... ... . ........... .. ... . ... ... ..... ..................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. ... . ... .. .... ... . ... .. .......... ... . .. ... .... ..... .... ... . .. ....... ... . .. ........ .... ... ... ... .. . . ..... ... ... ....... ... . ... ... .......... ...... ......... ... ..... . ... . ... ................ .... .... ... . ........ ... . ... .. .... ... . ... .... ..................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. ... . ... .. .... ... . ... .. .......... . . . ....... .... ..... .... . ... ....... ... . ... ........ .... . . ... ... ... . ...... ... ....... ... . ... ... .......... ...... ......... ... .. . ... . ............... ..... ....... ..... . ... ....... ... . ... .. .... .. ...... ..................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. ... . ... .. .... ... . ... .. .......... . . . ....... .... ..... .... ..... ... ....... ... . ... ........ .... . . ... ... ... . . ..... ... ........... ... .. . .... ........... ..... ......... ... . ... . ... . .................. ...... ....... ..... . ... ....... ... . .. .. .... ........ .... ...................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. ... . .. .. .. . .. .. .. .. ....... . . . ....... .... .. .. .. . ... . ... ....... ... . ... ........ .. . . . ... ... ... . .. .... ... ... ... ... ... .. . .... ........... ..... ......... .. ... .. . ... ... ........ ....... ... ... . ... . ... ....... ... .. . .. .. . ... . ... ... ..... .............................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ... ... . ... .. ...... . ... ......... . .. ...... .... .... ... .. ... ........ .. ... ......... ... . ... .. ... . ... .. ... ... ... ... .... ........... .. ....... ...... ..... .. .... ......... . .. ... ... ........ ...... ... ... ... ... ..... ............................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .................... ..................................................................................................................................... ............................................. ........... ... ........ .................................................... ... ........................... .............................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .................... ................................................................................................................................................................................... ............ ............................................................... ..........................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. ....................................................................................................................................................... ...... ................ ...........................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ......................................... .......... ........................ .... ..... ......................................... ............ ......... ....... ................. ...........................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... .................................................... ............................. ..... ......................................... ...................... ....... ................. ...........................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ... . ... .. . ... ... .. . ... ... .. ........ ... . . ... ... .. ... .. . ......... .. . ........ .. ... .. ... . .. .. .... .... .......... .... ... ..............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ... .. ..... . .. . ... . ... . .. ... ... ... .. .......... ... . .. ... .... ..... .... ... . .. ....... ... . .. ........ .... ... ... ... .. . . ..... ... ... ......... ... ... . ... .............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ... ...... . ... .. ... ..... ....... ... ... .. .......... . . . ....... .... ..... .... . ... ....... ... . ... ........ .... . . ... ... ... . ...... ... ......... ... ... . ... .............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ... ..... ... . ... .... .. ..... ....... ... ... .. .......... . . . ....... .... ..... .... ..... ... ....... ... . ... ........ .... . . ... ... ... . . ..... ... ............. ... ... . ... .............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .... ... ..... ... . ... . ... . ... . ....... ... ... .. ....... . . . ....... .... .. .. .. . ... . ... ....... ... . ... ........ .. . . . ... ... ... . .. .... ... ... ... ..... ... ... .. ... .........................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .... ... ...... . ... .. ... .. ...... .. ....... ......... . .. ...... .... .... ... .. ... ........ .. ... ......... ... . ... .. ... . ... .. ... ... ... ... ...... .. ........................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .................................................. ............................................................................................................................... ............... ... ... .........................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .................................................. ................................................................................................................................................ ..............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. . . ..... . . ... .................. ............ . .... . ......... ................ ................... ........................................... ...... ...............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. .. . . .. . . . . .................. ........... .... .. .......... .... ......... ................. ......... .......... ............ ......... ....... ...............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ... . .. . . . . . . . . .................. ........... . .... ... .......... .............. . ................... .................... ...................... ....... ...............................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. . . . ... . . ... . . . ...... . .. ... . ................. ... ... ... ... ... . . ......... ... .. . ... .. ......... .. ... .. ... . .. .. .... .... ........................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. . . . . ... . . . . .... ...... . . . ... . ... ............... .... .. .. .. .... .. .. . ......... . .. ... . ... ... .......... .... ... ... ... .. . . ..... ... ... .......................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. . . . . . . . . . ...... . . . ... . ... .............. ..... .. .. .... .. .. . ......... ... ... . ... ... .......... .... . . ... ... ... . ...... ... .......................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. . ..... . . . . . . ...... . . . ... . ... .............. ..... .. ...... .... .. ...... . ......... ... ... .. . .... .......... .... . . ... ... ... . . ..... ... ...........................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. . . . . . . . . . . . ...... . . . .. . ... ............. ...... .. .. .. .... .. .. ......... . .. ... .. . .... .......... .. . . . ... ... ... . .. .... ... ... .......................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....... . ... ... ..... ... . ... ...... ... .. . . .............. ..... .. .. .. .. ... ......... ... .. ... .... .......... ... . ... .. ... . ... .. ... ........................................................................................................................................................................................................................................................................................XOO++",
+"+++++.. . . . . . . .. . . ..................................................................................................................................................................................................................................................................................................................................................................................................................................................+++++",
+"XXXX+. . . . . . .. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XXXX+",
+"XXOO+.. . . . . . . .. .................................................................................... ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. .................................................................................... ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. . . ..... . . . .................. ............ . .... . ......... ................ ......... ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. .. . . .. .. . . .................. ........... .... .. .......... .... ......... ....... ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ... . .. . . . . . . . . . .................. ........... . .... ... .......... .............. . ......... ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. . . . ... . . ... . . . ...... . .. ... . ................. ... ... ... ... ... . . ......... ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. . . . . ... . . . . . ...... . . . ... . ... ............... .... .. .. .. .... .. .. . ........ ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. . . . . . . . . ...... . . . ... . ... .............. ..... .. .. .... .. .. . ....... ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. . ..... . . . . . ...... . . . ... . ... .............. ..... .. ...... .... .. ...... . ....... ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. . . . . . . . . . . ...... . . . .. . ... ............. ...... .. .. .. .... .. .. ........ ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . ....... . ... ... ..... ... ..... . ...... ... .. . . .............. ..... .. .. .. .. ... ......... ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. .. . . .................................................................................... ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.. . . . . . . .. .................................................................................... ........................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++",
+"XXOO+XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXOO++",
+"XXOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOO++",
+"XXOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOO++",
+"X++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+};
diff --git a/Documentation/relative-octaves.pod b/Documentation/relative-octaves.pod
deleted file mode 100644
index b6b31507af..0000000000
--- a/Documentation/relative-octaves.pod
+++ /dev/null
@@ -1,88 +0,0 @@
-=head1 NAME
-
-Octaves -- how to do pitches
-
-=head1 DESCRIPTION
-
-The LilyPond input language, Mudela (help, silly name), should be easy
-to read and write. In my experience Mudela is already quite convenient
-for entering music. Every time i've entered a substantial piece of music,
-however, i found that i made quite a few mistakes. The MIDI output helps
-a lot with locating and correcting the errors. There's one type of error
-that seems to be frequent, stubborn and hard to catch, and that's the
-octavation error. The relative octave feature is an attempt to make
-Mudela a bit easier to write. In addition, this featuer makes it harder
-to make octavation mistakes, yet if you made one, its a lot simpler to find
-and correct.
-
-Here's how it works.
-
-=over 5
-
-=item *
-forget the old "\octave c';" command
-
-=item *
-forget the old octave boundaries with octaves c .. c'
-
-=back
-
-You start the relative octave mode (for now) with the command
-
- \octave relative;
-
-From then on, the pitch of a note will be the closest to the last one,
-assuming that large intervals are a lot more rare than small ones.
-Thus, you can enter a scale without using octavation quotes:
-
- c d e f g a b c
-
-the last c being an octave higher than the first. If you have to
-enter an interval that is greater than a quart, you must specify
-whether the pitch goes up, using post-quotes:
-
- c c' % octave up
- c g' % quart up
-
-or down, using pre-quotes:
-
- c 'c % octave down
- c 'f % quart down
-
-Although it is not necesary, and thus redundant, information to specify
-the direction of smaller intervals, you are allowed to do so:
-
- c d % second up
- c d' % second up
-
- c a % third down
- c 'a % third down
-
-
-=head1 CONVERTING
-
-To convert a piece of music from the old absolute-octave notation to
-relative octaves, lilypond provides the B<-f, --find-quarters> feature
-to locate all big intervals in your music (sorry, fully automated convert
-is too complex).
-
-You'll do something like this:
-
- lilypond -f los-toros-oboe 2>&1 | tee intervals
- ...
- los-toros-oboe.ly: 59: warning: Interval greater than quart, relative: d':
- [)g8 r d
- '] r |
- los-toros-oboe.ly: 100: warning: Interval bigger than quart, relative: d':
- [d8 d
- '] [es'8.-> c'16] |
- ...
-
-Then you load a copy of the original mudela file in your favourite editor,
-and let it parse the 'error file' F<intervals>. First you remove all
-octavation quotes. Then, jumping from warning to warning, you enter quotes
-as suggested by LilyPond.
-
-=head1 EXAMPLE
-
-See F<mutopia/ltor.ly>.
diff --git a/Documentation/relative-octaves.yo b/Documentation/relative-octaves.yo
new file mode 100644
index 0000000000..a1c21cfadb
--- /dev/null
+++ b/Documentation/relative-octaves.yo
@@ -0,0 +1,89 @@
+nsect(NAME)
+
+Octaves -- how to do pitches
+
+nsect(DESCRIPTION)
+
+The LilyPond input language, Mudela (help, silly name), should be easy
+to read and write. In my experience Mudela is already quite convenient
+for entering music. Every time I've entered a substantial piece of music,
+however, I found that I made quite a few mistakes. The MIDI output helps
+a lot with locating and correcting the errors. There's one type of error
+that seems to be frequent, stubborn and hard to catch, and that's the
+octavation error. The relative octave feature is an attempt to make
+Mudela a bit easier to write. In addition, this feature makes it harder
+to make octavation mistakes, yet if you made one, its a lot simpler to find
+and correct.
+
+Here's how it works.
+
+itemize(
+it()forget the old "\octave c';" command
+it()forget the old octave boundaries with octaves c .. c'
+)
+
+You can enter a piece of music in relative mode, by typing
+
+verb(
+ \melodic \relative c { ... }
+)
+
+From then on, the pitch of a note will be the closest to the last one,
+assuming that large intervals are a lot more rare than small ones.
+Thus, you can enter a scale without using octavation quotes:
+
+verb(
+ c d e f g a b c
+)
+
+the last c being an octave higher than the first. If you have to
+enter an interval that is greater than a fourth, you must specify
+whether the pitch goes up, using post-quotes:
+
+verb(
+ c c' % octave up
+ c g' % fourth up
+)
+
+or down, using pre-quotes:
+
+verb(
+ c c, % octave down
+ c f, % fourth down
+)
+
+nsect(CONVERTING)
+
+To convert a piece of music from the old absolute-octave notation to
+relative octaves, lilypond provides the bf(-Q, --find-fourths) feature
+to locate all big intervals in your music (sorry, fully automated convert
+is too complex).
+
+First, edit the .ly file, add "\relative c" to all melodic chunks:
+
+verb(
+ foo = \melodic \relative c { ... }
+)
+
+and remove all "\octave " commands. See the example file
+file(input/test/find-fourths.ly).
+
+Use lily to find the fourths
+
+verb(
+ lilypond -Q find-fourths.ly 2>&1 | tee fourths
+ ...
+ find-fourths.ly:3:18: warning: Interval greater than fourth, relative: g':
+ c d c f c g
+ c b, c g, c f, c c'' c
+
+ find-fourths.ly:3:20: warning: Interval greater than fourth, relative: c,:
+ c d c f c g c
+ b, c g, c f, c c'' c
+)
+
+Then, load a copy of the original mudela file in your favourite editor,
+and let it parse the 'error file' file(intervals). First you remove all
+octavation quotes. Then, jumping from warning to warning, you enter quotes
+as suggested by LilyPond.
+
diff --git a/Documentation/scherm.in b/Documentation/scherm.in
new file mode 100644
index 0000000000..005b6451c3
--- /dev/null
+++ b/Documentation/scherm.in
@@ -0,0 +1,16 @@
+18:46:03 mub ~/lelie$ lilypond twinkle
+GNU LilyPond 0.1.78/FlowerLib 1.1.44.
+Ontleden...[/home/fred/usr/src/lilypond/init/init.ly[/home/fred/usr/src/lilypond/init/declarations.ly[/home/fred/usr/src/lilypond/init/dynamic.ly][/home/fred/usr/src/lilypond/init/nederlands.ly][/home/fred/usr/src/lilypond/init/script.ly][/home/fred/usr/src/lilypond/init/paper20.ly[/home/fred/usr/src/lilypond/init/table20.ly][/home/fred/usr/src/lilypond/init/table13.ly][/home/fred/usr/src/lilypond/init/table16.ly][/home/fred/usr/src/lilypond/init/params.ly[/home/fred/usr/src/lilypond/init/a4.ly][/home/fred/usr/src/lilypond/init/paper.ly][/home/fred/usr/src/lilypond/init/engraver.ly]]][/home/fred/usr/src/lilypond/init/midi.ly[/home/fred/usr/src/lilypond/init/performer.ly]][/home/fred/usr/src/lilypond/init/property.ly]][/home/fred/usr/src/lilypond/input/twinkle.ly]]
+Vertolken van muziek...[8][16][24][25]
+duur: 1.34 seconden
+Voorbewerken van elementen... [/home/fred/usr/src/lilypond/mf/out/feta20.afm]
+Berekenen van kolomposities... [3][6][9][12][15][18][21][24][25]
+geschat: 231 regels (van gemiddeld 21.4 kolommen)
+exact berekend: 66 regels (van gemiddeld 25.5 kolommen)
+duur: 6.11 seconden
+Nabewerken van elementen...
+TeX uitvoer naar twinkle.tex...
+
+Vertolken van muziek...
+duur: 0.22 seconden
+MIDI uitvoer naar twinkle.midi...
diff --git a/Documentation/schermo.in b/Documentation/schermo.in
new file mode 100644
index 0000000000..b4fb407537
--- /dev/null
+++ b/Documentation/schermo.in
@@ -0,0 +1,16 @@
+18:37:15 mub ~/lelie$ lilypond twinkle
+GNU LilyPond 0.1.78/FlowerLib 1.1.44.
+Analizzare...[/home/fred/usr/src/lilypond/init/init.ly[/home/fred/usr/src/lilypond/init/declarations.ly[/home/fred/usr/src/lilypond/init/dynamic.ly][/home/fred/usr/src/lilypond/init/nederlands.ly][/home/fred/usr/src/lilypond/init/script.ly][/home/fred/usr/src/lilypond/init/paper20.ly[/home/fred/usr/src/lilypond/init/table20.ly][/home/fred/usr/src/lilypond/init/table13.ly][/home/fred/usr/src/lilypond/init/table16.ly][/home/fred/usr/src/lilypond/init/params.ly[/home/fred/usr/src/lilypond/init/a4.ly][/home/fred/usr/src/lilypond/init/paper.ly][/home/fred/usr/src/lilypond/init/engraver.ly]]][/home/fred/usr/src/lilypond/init/midi.ly[/home/fred/usr/src/lilypond/init/performer.ly]][/home/fred/usr/src/lilypond/init/property.ly]][/home/fred/usr/src/lilypond/input/twinkle.ly]]
+Interpretare musica...[8][16][24][25]
+durata: 1.36 secondi
+Preprocessare elementi... [/home/fred/usr/src/lilypond/mf/out/feta20.afm]
+Calcolare posizioni di colonne... [3][6][9][12][15][18][21][24][25]
+approssimato: 231 linee (con una media di 21 colonne):
+calcolato esattamente: 66 linee (con una media di 25 colonne)
+durata: 6.14 secondi
+Postprocessare elementi...
+Prodotto di TeX verso twinkle.tex...
+
+Interpretare musica...
+durata: 0.21 secondi
+Prodotto di MIDI verso twinkle.midi...
diff --git a/Documentation/tex/Makefile b/Documentation/tex/Makefile
index e9f4cb59f2..8cde48019c 100644
--- a/Documentation/tex/Makefile
+++ b/Documentation/tex/Makefile
@@ -1,21 +1,51 @@
+# Documentation/tex/Makefile
depth=../..
-include ./$(depth)/make/Include.make
-include ./$(depth)/make/Docrules.make
-#
-DOCFILES = $(wildcard *.doc)
-OUTDOCFILES = $(addprefix $(outdir)/, $(DOCFILES))
-BIBFILES= $(wildcard *.bib)
-EXTRA_DISTFILES= $(BIBFILES) $(DOCFILES)
+include $(depth)/make/Stepmake.make
+include $(stepdir)/Documentation.vars.make
+include $(depth)/make/Lilypond.make
+include $(stepdir)/Documentation_rules.make
-dvi: $(DVIFILES)
+DATA_FILES = $(wildcard *.data)
+datafiles = $(addprefix $(outdir)/,$(DATA_FILES:.data=.html))
+DOC_FILES = $(wildcard *.doc)
+DVI_FILES = $(addprefix $(outdir)/,$(DOC_FILES:.doc=.dvi) $(YO_FILES:.yo=.dvi))
+OUTDOC_FILES = $(addprefix $(outdir)/, $(DOC_FILES))
+EL_FILES = $(wildcard *.el)
+BIB_FILES= $(wildcard *.bib)
+EXTRA_DIST_FILES= $(BIB_FILES) $(DOC_FILES) $(DATA_FILES) $(EL_FILES)
+HTML_FILES = $(addprefix $(outdir)/, $(YO_FILES:.yo=.html))
+PS_FILES = $(DVI_FILES:.dvi=.ps)
-local-WWW: $(OUTDOCFILES:.doc=.ps.gz) $(addprefix $(outdir)/, $(BIBFILES:.bib=.html))
- ls-latex --title 'LaTeX documents about LilyPond' $(BIBFILES) $(DOCFILES) > $(outdir)/index.html
+
+dvi: $(DVI_FILES)
+
+ps: $(PS_FILES)
+
+# urg
+default:
+
+GENHTMLS = engraving colorado vocabulary computer-notation
+OUTGENHTMLS = $(addprefix $(outdir)/, $(GENHTMLS:%=%.html))
+
+$(outdir)/mudela.dvi: $(outdir)/vocabulary.tex $(outdir)/engraving.bib
+$(outdir)/mudela.html: $(OUTGENHTMLS)
+
+local-WWW: $(HTML_FILES) $(OUTDOC_FILES:.doc=.ps.gz) $(OUTYO_FILES:.yo=.latex) $(OUTYO_FILES:.yo=.ps.gz) $(addprefix $(outdir)/, $(BIB_FILES:.bib=.html)) $(datafiles)
+ $(PYTHON) $(step-bindir)/ls-latex.py --package=$(topdir) --title 'LaTeX documents about LilyPond' \
+ $(YO_FILES) $(OUTYO_FILES:.yo=.latex) $(BIB_FILES) $(DOC_FILES) \
+ | sed "s!$(outdir)/!!g" > $(outdir)/index.html
+ $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) $(outdir)/index.html
$(outdir)/%.bib: %.bib
ln -f $< $@
$(outdir)/%.html: %.bib
bib2html $< $@
+
+# Yeah right:
+# make -k out/mudela.dvi => cp -f out/vocabulary.tex out/mudela.dvi
+
+#out/%: $(outdir)/%
+# cp -f $< $@
diff --git a/Documentation/tex/colorado.bib b/Documentation/tex/colorado.bib
index 890592063e..9aa8871ac4 100644
--- a/Documentation/tex/colorado.bib
+++ b/Documentation/tex/colorado.bib
@@ -12,7 +12,7 @@ year={1947},
title = {Musical handwriting : or, How to put music on paper : A handbook for all musicians, professional and amateur},
address ={London},
publisher ={Oxford University Press},
-note = {Musical notation},
+note = {subject: Musical notation},
}
@Book {15,
@@ -20,6 +20,7 @@ author ={Carl Brandt and Clinton Roemer},
title = {Standardized Chord Symbol Notation},
address={Sherman Oaks, CA},
publisher={Roerick Music Co.},
+note ={subject: musical notation},
}
@Book {22,
@@ -28,25 +29,27 @@ year = {1946},
title = {How to write music manuscript an exercise-method handbook for the music student, copyist, arranger, composer, teacher},
publisher={Carl Fischer, Inc.},
address= {New York},
-note = {Musical notation --Handbooks, manuals},
+note = {subject: Musical notation --Handbooks, manuals},
}
@Book {31,
title = {Music Printing & Publishing},
-editors ={Donald W. Krummel \& Stanley Sadie},
-
-author = {?},
+author ={Donald W. Krummel \& Stanley Sadie},
year = {1990},
-series={The Norton/Grove Handbooks in Music.},
-publisher={W.W. Norton},
+publisher= {Macmillan Press},
+note ={subject: musical notation},
}
+%series={The Norton/Grove Handbooks in Music.},
+% publisher={W.W. Norton},
+
@Book {40,
author={Foss, Hubert},
title = {Music Printing},
series = {Practical Printing and Binding},
address={London},
publisher={Oldhams Press Ltd., Long Acre},
+note ={subject: musical notation},
}
@Book {48,
@@ -54,29 +57,27 @@ author = {Steele, Robert},
year = {1903},
title = {The Earliest English Music Printing},
address={London},
+note= {subject: history of music printing and engraving},
}
+
@Book {54,
author={Austin, Ernest},
title = {The Story of Music Printing},
address={London},
publisher={Lowe and Brydone Printers, Ltd.},
-}
+note= {subject: history of music printing and engraving},
}
+
+
@Book {63,
author={?},
title = {Pictoral History of Music Printing},
-address={E;lhardt, Indiana},
+address={Elhardt, Indiana},
publisher={H. and A. Selmer, Inc.},
-}
+note= {subject: history of music printing and engraving},
-@Book {69,
-author = {Scholderer, Victor},
-year = {1963},
-title = {Johann Gutenberg},
-address={London},
-publisher={British Museum},
}
@Book {77,
@@ -85,36 +86,36 @@ year = {1955},
title = {Musical Autographs from Monteverdi to Hindemith},
address={Princeton},
publisher={Princeton University Press},
-}
+note= {subject: history of music printing and engraving},
-@Book {85,
-author = {Wolf, Johannes},
-year = {1919},
-title = {Handbuch der Notationskunde},
-address={Leipzig},
-publisher={Breitkopf & Hartel}
}
+
@Book {92,
author = {Novello, A},
year = {1847},
title = {Some Account of the Methods of Musick Printing, with Specimens of the Various Sizes of Moveable Types and of Other Matters},
address={London},
+note={ subject: history of music printing and engraving},
}
@Book {100,
author={Chrsander, F.},
year={18??},
title={A Sketch of the HIstory of Music printing, from the 15th to the 16th century},
+note={ subject: history of music printing and engraving},
}
-@Book {105,
+@Article {squire1897,
author = {Squire, W},
year = {1897},
title = {Notes on Early Music Printing},
journal = {Bibliographica},
-volume={ iii, 99},
+volume={iii},
+number={99},
+note={ subject: history of music printing and engraving},
+
}
@Article{113,
@@ -124,6 +125,8 @@ title = {The Printing of Music, 1473-1934},
journal = {The Dolphin},
volume={ ii},
pages={ 171--207},
+note={ subject: history of music printing and engraving},
+
}
%% 4th ver.,
@Article {120,
@@ -131,33 +134,19 @@ author = {Pattison, B},
year = {1939},
title = {Notes on Early Music Printing},
journal = {The Library},
-
+note={subject: history of music printing and engraving},
volume={xix},
pages={389-421},
}
-@Book {128,
-author = {Barksdale, A},
-year = {1957},
-title = {The Printed Note: 500 Years of Music Printing and Engraving},
-address={Toledo, Ohio},
-note={(exhibition catalogue, the Toledo Museum of Art)},
-}
-
@Book {136,
author = {King, H},
year = {1964},
title = {Four Hundred Years of Music Printing},
address={London},
+note={ subject: history of music printing and engraving},
}
-%(Rev. 1971).
-@Book {143,
-author={Gamble, W},
-year={ 1923},
-title = {Music Engraving and Pinting, Historical And Technical Treatise},
-address={London},
-}
%(Rev.1961).
@Book{150,
@@ -165,6 +154,7 @@ author={Deutsch, O.F.},
year ={1946},
title = {Music Publishers' Numbers},
address={London},
+note={ subject: history of music printing and engraving},
}
@Book {151,
@@ -172,6 +162,7 @@ author = {Marco, G.A},
year = {1962},
title = {The Earliest Music Printers of Continental Europe: a Checklist of Facsimiles Illustrating Their Work},
address={Charlottesville, Virginia},
+note={ subject: history of music printing and engraving},
}
@Article {158,
@@ -181,6 +172,7 @@ title = {Music And Music Printing in Incunabula},
journal = {Papers of the Bibliographical Society of America},
volume={ xxvi},
pages={89-118},
+note={ subject: history of music printing and engraving},
}
@Book {166,
@@ -188,6 +180,7 @@ author = {Oldman, C.B},
year = {1934},
title = {Collecting Musical First Editions},
address={London},
+note={ subject: history of music printing and engraving},
}
@Book{170,
@@ -195,6 +188,7 @@ author={Carter, J},
year={1934},
title = {New Paths in Book Collecting},
address={London},
+note={ subject: history of music printing and engraving},
}
@Book {179,
@@ -205,6 +199,7 @@ title = {Graphic Analysis in Application to Early American Engraved Music},
journal = {Notes},
volume={xvi},
pages={213},
+note={ subject: history of music printing and engraving},
}
@Book {189,
@@ -214,6 +209,7 @@ title = {Oblong Format in Early Music Books},
journal = {The Library},
volume={5th ser., xxvi},
pages={312},
+note={ subject: history of music printing and engraving},
}
@Book {198,
@@ -234,11 +230,12 @@ note = {Musical notation},
}
@Book {215,
-author = {Tappelot, Willy},
+author = {Tappolet, Willy},
year = {1947},
title = {La Notation Musicale},
address={Paris},
-publisher={Neuchatel},
+note={subject: general notation},
+publisher={Neuch\^atel},
}
@Book {223,
@@ -247,14 +244,7 @@ year = {1903},
title = {The Story of Notation},
address={New York},
publisher={Charles Scribner's Sons},
-}
-
-@Book {231,
-author = {Rosenthal, Carl A},
-year = {1967},
-title = {A Practical Guide to Music Notation},
-address={New York},
-publisher={MCA Music},
+note={subject: general notation},
}
@Book {239,
@@ -274,6 +264,7 @@ address={Oxford, England},
publisher={Clarendon Press},
scnd_address={New York},
scnd_publisher={Oxford University Press },
+note={subject: early notation},
}
@Book {258,
@@ -293,6 +284,7 @@ year = {1946},
title = {The Notation of Medieval Music},
address={New York},
publisher={Carl Fischer, Inc.},
+note={subject: early notation},
}
@Book {277,
@@ -301,11 +293,12 @@ year = {1949},
title = {Genesis of a Music},
address={Madison},
publisher={University of Wisconsin Press},
+note={subject: early notation},
}
@Book {285,
author={Cage, John},
-year={ 1969},
+year={1969},
title = {Notations},
address={New York},
publisher={Something Else Press},
@@ -331,17 +324,9 @@ title = {New Music Vocabulary},
address={Urbana, Illinois},
publisher={University of Illinois Press},
note = {A Guide to Notational Signs for Contemporary Music},
-
-
}
-@Book {317,
-author = {Boehm, Laszlo},
-year = {1961},
-title={Modern Music Notation},
-address={New York},
-publisher={G. Schirmer, Inc.},
-}
+
@Book {325,
author = {Cowell, Henry},
@@ -349,6 +334,7 @@ year = {1930},
title = {New Musical Resources},
address={New York},
publisher={Alfred A. Knopf, Inc.},
+note={subject: 20th century notation},
}
@Article {333,
@@ -358,6 +344,8 @@ title = {Our Inadequate Notation},
journal = {Modern Music},
volume={4},
number={3},
+note={subject: 20th century notation},
+
}
@Book {342,
@@ -380,6 +368,7 @@ month={July-Dec},
pages={21(26)},
note={Proportional notation in the music of Schutz and his contemporaries in the 17th Century},
}
+
@Book {362,
author = {Monelle, Raymond},
year = {1989},
@@ -489,7 +478,6 @@ Speech extrapolated. (includes notation)
}
@Book {464,
-
author = {Lependorf, Jeffrey},
year = {1989},
journal={Perspectives of New Music},
@@ -515,22 +503,29 @@ Chromatic Notation. Results and Conclusions of the Music Notation
Refor by the Chroma Foundation (book reviews). },
}
-@Book {491,
-author={Francois, Jean-Charles},
-title = {Perspectives of New Music},
-volume={30}, number={1}, month={Winter}, pages={6(15)},
-year={1992},
-}
-%title={Writing without representation, and unreadable notation.},
-%author={Jean-Charles Francois.}
-%note={Modern music has outgrown notation. While the computer is used to write down music with accuracy never before achieved, the range of modern sounds has surpassed the relevance of the computer.},
+@Article {Francois92,
+ author={Francois, Jean-Charles},
+ journal = {Perspectives of New Music},
+ volume={30},
+ number={1}, month={Winter},
+ pages={6(15)},
+ year={1992},
+ note={subject: Modern music has outgrown notation. While the
+ computer is used to write down music with accuracy never
+ before achieved, the range of modern sounds has surpassed
+ the relevance of the computer...},
+title={Writing without representation, and unreadable notation.},
+}
@Book {501,
-author = {Hamel, Keith A},
-year = {1989},
-title = {Perspectives of New Music},
-volume={27}, number={1}, month={Winter}, pages={70(14)},
-note={A design for music editing and printing software based on notational syntax. (computer music) },
+ author = {Hamel, Keith A},
+ year = {1989},
+ journal = {Perspectives of New Music},
+ volume={27},
+ number={1},
+ month={Winter},
+ pages={70(14)},
+ title={A design for music editing and printing software based on notational syntax},
}
diff --git a/Documentation/tex/computer-forms.el b/Documentation/tex/computer-forms.el
new file mode 100644
index 0000000000..bc750e94cb
--- /dev/null
+++ b/Documentation/tex/computer-forms.el
@@ -0,0 +1,21 @@
+; 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 --git a/Documentation/tex/computer-notation.bib b/Documentation/tex/computer-notation.bib
new file mode 100644
index 0000000000..ca314247e2
--- /dev/null
+++ b/Documentation/tex/computer-notation.bib
@@ -0,0 +1,599 @@
+%
+% TITLE=The music notation with computer bibliography
+% AUTHOR=Han-Wen Nienhuys
+%
+
+@String{CitH = {Computing and the Humanities}}
+@String{CMJ = {Computer Music Journal}}
+
+@TechReport{roush88,
+ note = {Rules on formatting music formulated for use in computers. Mainly distilled from [Ross] HWN},
+ year = {1988},
+ title = {Music Formatting Guidelines},
+ author = {D. Roush},
+ number = {OSU-CISRC-3/88-TR10},
+ institution = {Department of Computer and Information Science, The Ohio State University},
+}
+
+
+
+@InProceedings{assayaag86,
+ author = {G. Assayaag and D. Timis},
+ title = {A Toolbox for music notation},
+ booktitle = {Proceedings of the 1986 International Computer Music Conference},
+ year = 1986
+}
+
+@PhdThesis {byrd85,
+ year = {1985},
+ title = {Music Notation by Computer},
+ author = {Donald Byrd},
+ school = {Indiana University},
+}
+
+@Article{byrd94,
+ author = {Donald Byrd},
+ title = {Music Notation Software and Intelligence},
+ journal = {Computer Music Journal},
+year = 1994,
+pages = {17--20},
+ volume = 18,
+ number = 1,
+
+ note = {Byrd (author of Nightinggale) shows four problematic
+fragments of notation, and rants about notation programs that try to
+exhibit intelligent behaviour. HWN}
+
+}
+
+
+
+@Article{erickson75,
+ author = {R. F. Erickson},
+ title = {The DARMS Project: A status report},
+ journal = {Computing in the humanities},
+ year = 1975,
+ volume = 9,
+ number = 6,
+ pages = {291--298}
+}
+
+c
+@Article{field-richards93,
+ author = {H.S. Field-Richards},
+ title = {Cadenza: A Music Description Language},
+ journal = CMJ,
+ year = 1993,
+ volume = 17,
+ number = 4,
+
+ note = {A description through examples of a music entry language.
+Apparently it has no formal semantics. There is also no
+implementation of notation convertor. HWN}
+
+}
+
+
+
+@Article{bielawa93,
+ author = {Herbert Bielawa},
+ title = {Review of Sibelius 7},
+ journal = CMJ,
+ year = {1993?},
+
+ note = {A raving review/tutorial of Sibelius 7 for Acorn. (And did
+they seriously program a RISC chip in ... assembler ?!) HWN}
+
+
+}
+
+@Article{sloan93,
+ author = {Donald Sloan},
+ title = {Aspects of Music Representation in HyTime/SMDL},
+ journal = CMJ,
+ year = 1993,
+ volume = 17,
+ number = 4,
+
+note = {An introduction into HyTime and its score description variant
+SMDL. With a short example that is quite lengthy in SMDL}
+}
+
+@Article{wiggins93,
+ author = {Geraint Wiggins and Eduardo Miranda and Alaaaan Smaill and Mitch Harris},
+ title = {A Framework for the evaluation of music representation systems},
+ journal = CMJ,
+ year = 1993,
+ volume = 17,
+ number = 3,
+
+ note = {A categorisation of music representation systems (languages,
+OO systems etc) splitted into high level and low level expressiveness.
+The discussion of Charm and parallel processing for music
+representation is rather vague. HWN}
+
+}
+
+
+
+@Article{dannenberg93,
+ author = {Roger B. Dannenberg},
+ title = {Music Representation: Issues, Techniques, and Systems},
+ journal = CMJ,
+ year = 1993,
+ volume = 17,
+ number = 3,
+
+ note = {The title says it all. This article does not make any
+statements, it points to some problems and solutions with music
+representation. HWN},
+
+}
+
+@Article{rothstein93,
+ author = {Joseph Rothstein},
+ title = {Review of Passport Designs' Encore Music Notation Software},
+ journal = CMJ,
+ year = {?},
+
+note = {A no-science-here review of Encore. HWN}
+
+}
+
+
+
+@Article{belkin94,
+ author = {Alan Belkin},
+ title = {Macintosh Notatino Software: Present and Future},
+ journal = CMJ,
+ year = 1994,
+ volume = 18,
+ number = 1,
+
+ note = {Some music notation systems are analysed for ease of use, MIDI
+ handling. No rocket science here. The article ends with a plea for a
+ standard notation format. HWN},
+
+}
+
+@Article {byrd74,
+ year = {1974},
+ title = {A System for Music Printing by Computer},
+ author = {Donald Byrd},
+ journal = {Computers and the Humanities},
+ volume ={8},
+ pages ={161-72},
+}
+
+
+@Book {smith73,
+ note = {If I remember correctly, this was concerned more with an input language than with the typography. SP},
+ year = {1973},
+ title = {Editing and Printing Music by Computer},
+ author = {Leland Smith},
+ totalentry = {Journal of Music Theory},
+ volume={17},
+ pages ={292-309},
+}
+
+
+
+
+
+@InProceedings{montel97,
+ author = {Dominique Montel},
+ title = {La gravure de la musique, lisibilit\'e esth\'etique, respect de l'oevre},
+ booktitle = {Musique \& Notations},
+ year = 1997,
+ address={Lyon},
+ editors ={Genevois \& Orlarey}
+}
+
+@PhdThesis {gomber75,
+ year = {1975},
+ title = {A Computer-Oriented System for Music Printing},
+ author = {David A Gomberg},
+ school = {Washington University},
+}
+
+
+@Book {CASR,
+ note = {Annual editions since 1985, many containing surveys of music typesetting technology. SP},
+ title = {Directory of Computer Assisted Research in Musicology},
+ author = {Walter B Hewlett and Eleanor Selfridge-Field},
+ totalentry = {Menlo Park, CA: Center for Computer Assisted Research in the Humanities},
+}
+
+
+@Book {gomberg,
+ title = {A Computer-oriented System for Music Printing},
+ author = {David A. Gomberg},
+ journal = CitH,
+ volume={11},
+ pages = {63-80},
+}
+
+
+
+@Article{blostein94,
+ author = {Dorothea Blostein and Lippold Haken},
+ title = {The Lime Music Editor: A Diagram Editor Involving Complex
+ Translations},
+ journal = {Software Practice and Experience},
+ year = {1994},
+ volume = {24},
+ number = {3},
+ month = {march},
+ pages = {289--306},
+ note = {A description of various conversions, decisions and issues relating to this interactive editor HWN},
+}
+
+@InProceedings{bouzaiene98:_une,
+ author = {Nabil Bouzaiene and Lo\"ic Le Gall and Emmanuel Saint-James},
+ title = {Une biblioth\`eque pour la notation musicale baroque},
+ booktitle = {EP '98},
+ year = 1998,
+ series = {LNCS},
+
+ note = {Describes ATYS, an extension to Berlioz, that can mimick
+ handwritten baroque style beams}
+}
+
+
+
+@MastersThesis{gall97:_creat,
+ author = {Lo\"ic Le Gall},
+ title = {Cr\'eation d'une police adapt\'ee \`a la notation musicale baroque},
+school = {\'Ecole Estienne},
+year = 1997,
+}
+
+@InProceedings{balaban88,
+ author = {M. Balaban},
+ title = {A Music Workstation Based on Multiple Hierarchical Views of Music},
+ booktitle = {Proceedings of the 1988 International Computer Music Conference},
+ year = 1988,
+ address = {San Francisco},
+ organization = {International Computer Music Association}
+}
+
+@TechReport {gourlay87-spacing,
+ note = {Algorithm for generating spacing in one line of (polyphonic) music, tailored for use with MusiCopy. LilyPond uses a variant of it (as of pl 76) HWN},
+ year = {1987},
+ title = {Spacing a Line of Music,},
+ author = {John S. Gourlay},
+ number = {OSU-CISRC-10/87-TR35},
+ institution ={Department of Computer and Information Science, The Ohio State University},
+}
+
+
+@TechReport {parish87,
+ note = {A brief overview of MusiCopy HWN},
+ year = {1987},
+ title = {MusiCopy: An automated Music Formatting System},
+ author = {Allen Parish and Wael A. Hegazy and John S. Gourlay and Dean K. Roush and F. Javier Sola},
+ totalentry = {OSU-CISRC-10/87-TR29},
+ institution ={Department of Computer and Information Science, The Ohio State University},
+}
+
+
+@TechReport {gourlay87-formatting,
+
+note = {This paper discusses the development of algorithms for the
+formatting of musical scores (from abstract). It also appeared at
+PROTEXT III, Ireland 1986},
+
+ year = {1987},
+ title = {Computer Formatting of Music},
+ author = {John S. Gourlay and A. Parrish
+and D. Roush and F. Sola and Y. Tien},
+ number = {OSU-CISRC-2/87-TR3},
+ institution ={Department of Computer and Information Science,
+The Ohio State University},
+}
+
+
+@TechReport {hegazy87,
+ note = {Describes the "parser" which converts MusiCopy MDL to MusiCopy Simultaneities & columns HWN},
+ year = {1987},
+ title = {On the Implementation of the MusiCopy Language Processor,},
+ author = {Wael A. Hegazy},
+ number = {OSU-CISRC-10/87-TR34},
+ institution={Department of Computer and Information Science, The Ohio State University},
+}
+
+
+@TechReport {hegazy87-breaking,
+ note = {This generalizes \TeX's breaking algorithm to music. It also appeared in Document Manipulation and Typography, J.C. van Vliet (ed) 1988. HWN},
+ year = {1987},
+ title = {Optimal line breaking in music},
+ author = {Wael A. Hegazy and John S. Gourlay},
+ number = {OSU-CISRC-8/87-TR33},
+ institution={Department of Computer and Information Science, The Ohio State University,},
+}
+
+
+@TechReport {roush87,
+ note = {User manual of MusiCopy. Includes an impressive example piece. HWN},
+ year = {1987},
+ title = {Using MusiCopy},
+ author = {Dean K. Roush},
+ number = {OSU-CISRC-18/87-TR31},
+ institution={Department of Computer and Information Science, The Ohio State University},
+}
+
+
+@TechReport {parrish87-simultaneities,
+ note = {Placement of balls, stems, dots which occur at the same moment ("Simultaneity") HWN},
+ year = {1987},
+ title = {Computer Formatting of Musical Simultaneities,},
+ author = {A. Parrish and John S. Gourlay},
+ institution={Department of Computer and Information Science, The Ohio State University},
+ number = {OSU-CISRC-10/87-TR28},
+}
+
+
+@TechReport {sola87,
+ note = {Overview of a procedure for generating slurs HWN},
+ year = {1987},
+ title = {Computer Design of Musical Slurs, Ties and Phrase Marks,},
+ author = {F. Sola},
+ institution={Department of Computer and Information Science, The Ohio State University},
+ number = {OSU-CISRC-10/87-TR32},
+}
+
+
+@TechReport {sola87-beams,
+ institution={Department of Computer and Information Science, The Ohio State University},
+ note = {Calculating beam slopes HWN},
+ year = {1987},
+ title = {Design of Musical Beams,},
+ author = {F. Sola and D. Roush},
+ number = {OSU-CISRC-10/87-TR30},
+}
+
+
+@Article {gourlay86,
+ note = {This paper describes the MusiCopy musicsetting system and an input language to go with it. HWN},
+ year = {1986},
+ title = {A language for music printing},
+ author = {John. S. Gourlay},
+ journal = {Communications of the ACM},
+ volume= {29},
+ number ={5},
+ pages = {388--401},
+}
+
+@Article {haken93,
+ note = {A description of Lime internals (which resemble older (before 0.0.68pre) LilyPond data structures somewhat) HWN},
+ year = {1993},
+ title = {The Tilia Music Representation: Extensibility, Abstraction, and Notation Contexts for the Lime Music Editor},
+ author = {Lippold Haken and Dorothea Blostein},
+ journal = {Computer Music Journal},
+ volume= {17},
+ number={3},
+ pages = {43--58},
+}
+
+@InProceedings{haken95,
+ year = {1995},
+ title = {A New Algorithm for Horizontal Spacing of Printed Music},
+ author = {Lippold Haken and Dorothea Blostein},
+ booktitle = {International Computer Music Conference},
+ address={Banff},
+ month={Sept},
+ pages = {118-119},
+ note = {This describes an algorithm which uses springs between adjacent columns. This algorithm is a "subclass" of the LilyPond algorithm. HWN},
+}
+
+@Article {blostein91,
+ note = {This paper provides a shallow overview of the algorithm used in LIME for spacing individual lines. HWN},
+ year = {1991},
+ title = {Justification of Printed Music},
+ author = {Dorothea Blostein and Lippold Haken},
+ journal = {Communications of the ACM},
+ volume= {J34},
+ number= {3},
+ month= {March},
+ pages = {88-99},
+}
+
+
+@Article {rader96,
+ note = {Describes a system called MusicEase, and explains that it uses "constraints" (which go unexplained) to automatically position various elements. HWN},
+ year = {1996},
+ title = {Creating Printed Music Automatically},
+ author = {Gary M. Rader},
+ journal = {Computer},
+ volume={29},
+ number={6},
+ month={June},
+ pages = {61--69},
+}
+
+
+
+
+@PhdThesis {page88,
+ note = {Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, or to the British Library, instead. SP},
+ year = {1988},
+ title = {Computer Tools for Music Information Retrieval},
+ author = {Stephen Dowland Page},
+ school ={Dissertation University of Oxford},
+}
+
+@MastersThesis{roelofs91,
+ note = {This dutch thesis describes a simplistic (monophonic) typesetting system, and focuses on the breaking algorithm, which is taken from Hegazy & Gourlay HWN},
+ year = {1991},
+ title = {Een Geautomatiseerd Systeem voor het Afdrukken van Muziek},
+ author = {Ren\'e Roelofs},
+ school={Erasmus Universiteit Rotterdam},
+ number={45327},
+ translation = {``An automated system for printing music'' Master's Thesis Managerial Computer Science.},
+}
+
+
+@Article {filgueiras93,
+ year = {1993},
+ title = {Representation and manipulation of music documents in SceX},
+ author = {Miguel Filgueiras and Jos\'e Paulo Leal},
+ journal= {Electronic Publishing},
+ volume={6},
+ number={4}, pages = {507--518},
+
+}
+
+
+@Article {foxley87,
+ note = {A paper on a TROFF preprocessor to typeset music. The output shown is not very sophisticated, and contains some typographical atrocities HWN},
+ year = {1987},
+ title = {Music --- A language for typesetting music scores},
+ author = {Eric Foxley},
+ journal = {Software --- Practice and Experience},
+ volume = {17},
+ number = {8},
+ pages = {485-502},
+}
+
+
+@Book {filgueiras96,
+ year = {1996},
+ title = {Implementing a Symbolic Music Processing System},
+ author = {Miguel Filgueiras},
+ totalentry = {LIACC, Universidade do Porto, 1996; submitted},
+}
+
+@Book {filgueiras?,
+ title = {Some Music Typesetting Algorithms},
+ author = {Miguel Filgueiras},
+ totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming},
+}
+
+
+@Article {colorado-web,
+ author ={Alyssa Lamb},
+ note = {Webpages about engraving (designed with finale users in mind) (sic) HWN},
+ institution = {The University of Colorado},
+ title ={The University of Colorado Music Engraving page.},
+ HTML={http://obenamots.cc.colorado.edu/Musicpress/engraving.html},
+ year={1996}
+}
+
+
+
+
+@Book {Langston90,
+ note = {This paper deals with some command-line tools for music editing and playback. It doesn't mention notation issues, but does come with the grand idea (not) of using music to monitor complex systems. Imagine your nuclear plant supervisor to use AC/DC for checking the reactor HWN},
+ year = {1990},
+ title = {Unix music tools at Bellcore},
+ author = {Peter S. Langston},
+ journal={Software --- Practice and Experience},
+ volume={20},
+ number={S1},
+ pages={47--61},
+}
+
+
+
+@Article {tablature-web,
+ note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN},
+ title = {how to read and write tab: a guide to tab notation},
+ author = {Howard Wright},
+ email={Howard.Wright@ed.ac.uk},
+ HTML={http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html},
+}
+
+
+@Article {niff-web,
+ note = {Specs for NIFF, a reasonably comprehensive but binary (yuk) format for notation HWN},
+
+ year = {1995},
+ title = {NIFF6a Notation Interchange File Format},
+ author = {Cindy Grande},
+ publisher={Grande Software Inc.},
+ HTML= {http://www.jtauber.com/music/encoding/niff/},
+ ftp = {ftp://blackbox.cartah.washington.edu}
+}
+
+
+@Article {smdl-web,
+ author={unknown},
+ title = {SMDL, Standard Musical Description Language},
+ pdf= {ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf},
+ note={ISO/IEC DIS 10743
+
+SGML instance for describing music. Very comprehensive in music
+definition, but no support for notation / performance whatsoever (They
+basically say: "You can embed a NIFF or MIDI file") HWN}
+
+},
+}
+
+@TechReport{Ornstein83,
+ author={Ornstein, Severo M. and John Turner Maxwell III},
+ title={Mockingbird: A Composer's Amanuensis},
+ institution={Xerox Palo Alto Research Center},
+ address={3333 Coyote Hill Road, Palo Alto, CA, 94304},
+ number={CSL-83-2},
+ month={January},
+ year={1983}
+}
+
+@PhdThesis{mueller90:_inter_bearb_musik,
+ author = {Giovanni M\"uller},
+ title = {Interaktive Bearbeitung konventioneller Musiknotation},
+ school = {Eidgen\"ossischen Technischen Hochschule Z\"urich},
+ year = 1990,
+
+note = {This is about engraver-quality typesetting with computers. It
+accepts the axiom that notation is too difficult to generate
+automatically. The result is that a notation program should be a
+WYSIWYG editor that allows one to tweak everything.
+
+
+
+The implementation therefore is quite "weak". The introductory
+chapters on engraving and notation are well structured and clear,
+though.}
+}
+
+@TechReport{grover89-symbols,
+ author = {John Gr\/over},
+ title = {A computer-oriented description of Music Notation. Part I. The Symbol Inventory},
+ institution = {Department of informatics, University of Oslo},
+ year = 1989,
+ number = 133,
+
+note = {The goal of this series of reports is a full description of
+music formatting. As these largely depend on parameters of fonts, it
+starts with a verbose description of music symbols.
+
+ The subject is treated backwards: from general rules of typesetting
+the author tries to extract dimensions for characters, whereas the
+rules of typesetting (in a particular font) follow from the dimensions
+of the symbols. His symbols do not match (the stringent) constraints
+formulated by eg. \cite{wanske}} }
+
+@TechReport{grover89-twovoices,
+ author = {John Gr\/over},
+ title = {A computer-oriented description of Music Notation. Part II: Two Voice Sharing a Staff, Leger Line Rules, Dot Positioning},
+
+ institution = {Department of informatics, University of Oslo},
+ year = 1989,
+ number = 134,
+
+ note = {A lot rules for what is in the title are formulated. The
+descriptions are long and verbose. The verbosity shows that
+formulating specific rules is not the proper way to approach the
+problem. In stead, the formulated rules should follow from more
+general rules, similar to\cite{parrish87-simultaneities}},
+}
+
+@TechReport{grover89-accidentals,
+ author = {John Gr\/over},
+ title = {A computer-oriented description of Music Notation. Part III: Accidental Positioning},
+ institution = {Department of informatics, University of Oslo},
+ year = 1989,
+ number = 135,
+ note = {Placement of accidentals crystallised in an enormous set of rules. Same remarks as for \cite{grover89-twovoices} applies}
+}
diff --git a/Documentation/tex/computer.data b/Documentation/tex/computer.data
new file mode 100644
index 0000000000..373209390c
--- /dev/null
+++ b/Documentation/tex/computer.data
@@ -0,0 +1,88 @@
+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 --git a/Documentation/tex/engraving.bib b/Documentation/tex/engraving.bib
index ca83827b1a..a234775e2e 100644
--- a/Documentation/tex/engraving.bib
+++ b/Documentation/tex/engraving.bib
@@ -4,6 +4,8 @@
%
+
+
@Book{rastall,
author = {Richard Rastall},
ALTeditor = {},
@@ -12,68 +14,24 @@
publisher = {J. M. Dent \& Sons London},
year = {1983},
note = {Interesting account of the evolution and origin of common notation starting from neumes, and ending with modern innovations HWN},
-
}
@Book{ross,
author = {Ted Ross},
title = {Teach yourself the art of music engraving and processing},
publisher = {Hansen House},
- year = {1987},
- key = {},
- volume = {},
- number = {},
- series = {},
- address = {},
- edition = {},
- month = {},
+ year = 1987,
note = {This is about engraving, i.e. professional typesetting. It contains
directions on good typesetting, but the sections on reproduction
technicalities, how to use pens and history are interesting.
Especially the section on Music Typewriters is amusing HWN},
- annote = {},
-}
-
-@Article{blostein94,
- author = {Dorothea Blostein and Lippold Haken},
- title = {The Lime Music Editor: A Diagram Editor Involving Complex
- Translations},
- journal = {Software Practice and Experience},
- year = {1994},
- volume = {24},
- number = {3},
- month = {march},
- pages = {289--306},
- note = {A description of various conversions, decisions and issues relating to this interactive editor HWN},
-}
-
-
-
-@Book {wanske,
- note = {I. A very thorough overview of engraving practices of various craftsmen. It includes detailed specs of characters, dimensions etc. II. a thorough overview of a anonymous (by now antiquated) automated system. EDV Means e(lektronischen) D(aten)v(erarbeitung), electronic data processing HWN},
- year = {1988},
- title = {Musiknotation --- Von der Syntax des Notenstichs zum EDV-gesteuerten Notensatz},
- author = {Helene Wanske},
- publisher = {Schott-Verlag},
- address = {Mainz},
- isbn = {ISBN 3-7957-2886-x},
+ address = {Miami, Florida},
}
-@Book {weaner93,
- year = {1993},
- title = {Standard Music Notation Practice},
- author = {Maxwell Weaner and Walter Boelke},
- totalentry = {revised edition by Arnold Broido and Daniel Dorff.},
- publisher = { Music Publisher's Association of the United States Inc},
- address = {New York}
-}
-
-
-
@Book {read78,
note = {Sound (boring) review of the various hairy rhythmic notations used by avant-garde composers HWN},
year = {1978},
@@ -92,6 +50,28 @@
address ={New York},
}
+@Book {weaner93,
+ year = {1993},
+ title = {Standard Music Notation Practice},
+ author = {Maxwell Weaner and Walter Boelke},
+ totalentry = {revised edition by Arnold Broido and Daniel Dorff.},
+ publisher = {Music Publisher's Association of the United States Inc},
+ address = {New York}
+}
+
+
+@Book {wanske,
+ note = {I. A very thorough overview of engraving practices of various craftsmen. It includes detailed specs of characters, dimensions etc. II. a thorough overview of a anonymous (by now antiquated) automated system. EDV Means e(lektronischen) D(aten)v(erarbeitung), electronic data processing HWN},
+ year = {1988},
+ title = {Musiknotation --- Von der Syntax des Notenstichs zum EDV-gesteuerten Notensatz},
+ author = {Helene Wanske},
+ publisher = {Schott-Verlag},
+ address = {Mainz},
+ isbn = {ISBN 3-7957-2886-x},
+}
+
+
+
@Book {hader48,
year = {1948},
title = {Aus der Werkstatt eines Notenstechers},
@@ -100,291 +80,130 @@
address ={Vienna},
note = {Hader was the chief-engraver of the Waldheim-Eberle music
- publishers. This book contains the most important rules on engraving
-(according to [Chlapik])},
-
+ publishers. This beautiful booklet was intended as an introduction
+ for laymen on the art of engraving. It contains a step by step,
+ in-depth explanation of how to cut and stamp music into zinc plates.
+ It also contains some compactly formulated rules on musical
+ orthography. Out of print. }
}
+@Book{gamble23:_music_engrav,
+ author = {William Gamble},
+ title = {Music Engraving and printing. Historical and Technical Treatise},
+ publisher = {Sir Isaac Pitman & Sons, ltd.},
+ year = 1923,
+ note = {This pattriotic book was an attempt to promote and help
+ British music engravers. It is somewhat similar to Hader's
+ book\cite{hader48} in scope and style, but Gamble focuses more on
+ technical details (Which French punch cutters are worth buying from,
+ etc.), and does not treat typographical details, such as optical
+ illusions. It is available as reprint from Da Capo Press, New York
+ (1971).}
+}
@Booklet {mpa96,
note = {Pamphlet explaining some fine points in music font design HWN},
year = {1996},
- title = {Standard music notation specifications for computer programming. },
+ title = {Standard music notation specifications for computer programming.},
month = {December},
author ={mpa},
publisher = {MPA},
}
-@TechReport{roush88,
- note = {Rules on formatting music formulated for use in computers. Mainly distilled from [Ross] HWN},
- year = {1988},
- title = {Music Formatting Guidelines},
- author = {D. Roush},
- number = {OSU-CISRC-3/88-TR10},
- institution = {Department of Computer and Information Science, The Ohio State University},
-}
-
-
-@PhdThesis {byrd85,
- year = {1985},
- title = {Music Notation by Computer},
- author = {Donald Byrd},
- institution = {Dissertation Indiana University},
-}
-
-
-@Article {byrd74,
- year = {1974},
- title = {A System for Music Printing by Computer},
- author = {Donald Byrd},
- journal = {Computers and the Humanities},
- volume ={ 8},
- pages ={161-72},
-}
-
-
-@Book {smith73,
- note = {If I remember correctly, this was concerned more with an input language than with the typography. SP},
- year = {1973},
- title = {Editing and Printing Music by Computer},
- author = {Leland Smith},
- totalentry = {Journal of Music Theory},
- volume={ 17},
- pages ={292-309},
-}
-
-
-@PhdThesis {gomber75,
- year = {1975},
- title = {A Computer-Oriented System for Music Printing},
- author = {David A Gomberg},
- school = {Washington University},
-}
-
-
-@Book {CASR,
- note = {Annual editions since 1985, many containing surveys of music typesetting technology. SP},
- title = {Directory of Computer Assisted Research in Musicology},
- author = {Walter B Hewlett and Eleanor Selfridge-Field},
- totalentry = {Menlo Park, CA: Center for Computer Assisted Research in the Humanities},
-}
-
-
-@Book {gomberg,
- title = {A Computer-oriented System for Music Printing},
- author = {David A. Gomberg},
- journal = {Computers and the Humanities},
- volume={11},
- pages = {63-80},
-}
-
-
-@TechReport {gourlay87-spacing,
- note = {Algorithm for generating spacing in one line of (polyphonic) music, tailored for use with MusiCopy. LilyPond uses a variant of it (as of pl 76) HWN},
- year = {1987},
- title = {Spacing a Line of Music,},
- author = {John S. Gourlay},
- totalentry = {OSU-CISRC-10/87-TR35},
- institution ={ Department of Computer and Information Science, The Ohio State University},
-}
-
-
-@TechReport {parish87,
- note = {A brief overview of MusiCopy HWN},
- year = {1987},
- title = {MusiCopy: An automated Music Formatting System},
- author = {Allen Parish and Wael A. Hegazy and John S. Gourlay and Dean K. Roush and F. Javier Sola},
- totalentry = {OSU-CISRC-10/87-TR29},
- institution ={ Department of Computer and Information Science, The Ohio State University},
-}
-
-
-@TechReport {gourlay87-formatting,
- note = {This paper discusses the development of algorithms for the formatting of musical scores (from abstract). It also appeared at PROTEXT III, Ireland 1986},
- year = {1987},
- title = {Computer Formatting of Music},
- author = {John S. Gourlay and A. Parrish and D. Roush and F. Sola and Y. Tien},
- totalentry = {OSU-CISRC-2/87-TR3},
- institution ={Department of Computer and Information Science, The Ohio State University},
-}
-
-
-@TechReport {hegazy87,
- note = {Describes the "parser" which converts MusiCopy MDL to MusiCopy Simultaneities & columns HWN},
- year = {1987},
- title = {On the Implementation of the MusiCopy Language Processor,},
- author = {Wael A. Hegazy},
- number = { OSU-CISRC-10/87-TR34},
- institution={ Department of Computer and Information Science, The Ohio State University},
-}
-
-
-@TechReport {hegazy87-breaking,
- note = {This generalizes TeX's breaking algorithm to music. It also appeared in Document Manipulation and Typography, J.C. van Vliet (ed) 1988. HWN},
- year = {1987},
- title = {Optimal line breaking in music},
- author = {Wael A. Hegazy and John S. Gourlay},
- totalentry = { OSU-CISRC-8/87-TR33},
- institution={Department of Computer and Information Science, The Ohio State University, },
-}
-
-
-@TechReport {roush87,
- note = {User manual of MusiCopy. Includes an impressive example piece. HWN},
- year = {1987},
- title = {Using MusiCopy},
- author = {Dean K. Roush},
- totalentry = { OSU-CISRC-18/87-TR31},
- institution={ Department of Computer and Information Science, The Ohio State University},
-}
-
-
-@TechReport {parrish87,
- note = {Placement of balls, stems, dots which occur at the same moment ("Simultaneity") HWN},
- year = {1987},
- title = {Computer Formatting of Musical Simultaneities,},
- author = {A. Parrish and John S. Gourlay},
- institution={ Department of Computer and Information Science, The Ohio State University},
-}
- totalentry = { OSU-CISRC-10/87-TR28},
+@Book {donato63,
+ year = {1963},
+ author = {Anthony Donato},
+ title ={Preparing Music Manuscript},
+ address ={Englewood Cliffs, NJ},
+ publisher={Prentice-Hall},
}
-@TechReport {sola87,
- note = {Overview of a procedure for generating slurs HWN},
- year = {1987},
- title = {Computer Design of Musical Slurs, Ties and Phrase Marks,},
- author = {F. Sola},
- institution={ Department of Computer and Information Science, The Ohio State University},
- totalentry = { OSU-CISRC-10/87-TR32},
+@Book {Karkoshka72,
+ year = {1972},
+ title = {Notation in New Music; a critical guide to interpretation and realisation},
+ author = {Erdhard Karkoshka},
+ translator={Ruth Koenig},
+ publisher={Praeger Publishers},
+ address={New York},
+ note ={(Out of print)},
}
-@TechReport {sola87-beams,
- institution={ Department of Computer and Information Science, The Ohio State University},
- note = {Calculating beam slopes HWN},
- year = {1987},
- title = {Design of Musical Beams,},
- author = {F. Sola and D. Roush},
- totalentry = { OSU-CISRC-10/87-TR30},
-}
-
+@Book {Roemer84,
+ year = {1984},
+ title = {The Art of Music Copying},
+ author = {Clinton Roemer},
+ publisher={Roerick music co.},
+ address= {Sherman Oaks (CA)},
-@Article {gourlay86,
- note = {This paper describes the MusiCopy musicsetting system and an input language to go with it. HWN},
- year = {1986},
- title = {A language for music printing},
- author = {John. S. Gourlay},
- journal = { Communications of the ACM},
- volume= { 29 },
- number ={5},
- pages = {388--401},
+ note ={Out of print. Heussenstamm writes: an instructional manual
+ which specializes in methods used in the commercial field. },
+ edition={2nd},
}
-
-
-@Article {haken93,
- note = {A description of Lime internals (which resemble older (before 0.0.68pre) LilyPond data structures somewhat) HWN},
- year = {1993},
- title = {The Tilia Music Representation: Extensibility, Abstraction, and Notation Contexts for the Lime Music Editor},
- author = {Lippold Haken and Dorothea Blostein},
- journal = {Computer Music Journal},
- volume= {17},
- number={ 3},
- pages = {43--58},
-}
-
-@InProceedings{haken95,
- year = {1995},
- title = {A New Algorithm for Horizontal Spacing of Printed Music},
- author = {Lippold Haken and Dorothea Blostein},
- booktitle = { International Computer Music Conference},
- address={Banff},
- month={Sept},
- pages = {118-119},
- note = {This describes an algorithm which uses springs between adjacent columns. This algorithm is a "subclass" of the LilyPond algorithm. HWN},
+@Book {Rosecrans79,
+ year = {1979},
+ title = {Music Notation Primer},
+ author = {Glen Rosecrans},
+ publisher={Passantino},
+ address={New York},
+ note={Heussenstamm writes: Limited in scope, similar to \cite{Roemer84}}
}
-@Article {blostein91,
- note = {This paper provides a shallow overview of the algorithm used in LIME for spacing individual lines. HWN},
- year = {1991},
- title = {Justification of Printed Music},
- author = {Dorothea Blostein and Lippold Haken},
- journal = {Communications of the ACM},
- volume= {J34},
- number= {3},
- month= {March},
- pages = {88-99},
+@Book {donemes1900,
+ year = {1900},
+ title = {Uitgeven van muziek},
+ author = {Donemus},
+ publisher= {Donemus Amsterdam},
}
-@Article {rader96,
- note = {Describes a system called MusicEase, and explains that it uses "constraints" (which go unexplained) to automatically position various elements. HWN},
- year = {1996},
- title = {Creating Printed Music Automatically},
- author = {Gary M. Rader},
- journal = {Computer},
- volume={ 29},
- number={6},
- month={June}, pages = {61--69}},
-
-
-@PhdThesis {page88,
- note = {Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, or to the British Library, instead. SP},
- year = {1988},
- title = {Computer Tools for Music Information Retrieval},
- author = {Stephen Dowland Page},
- school ={ Dissertation University of Oxford},
+@Book{vinci,
+author={Vinci, Albert C.},
+title={Fundamentals of Traditional Music Notation},
+publisher={Kent State University Press},
+year={1989}
}
-@MastersThesis{roelofs91,
- note = {This dutch thesis describes a simplistic (monophonic) typesetting system, and focuses on the breaking algorithm, which is taken from Hegazy & Gourlay HWN},
- year = {1991},
- title = {Een Geautomatiseerd Systeem voor het Afdrukken van Muziek},
- author = {Ren\'e Roelofs},
- school={Erasmus Universiteit Rotterdam},
- number={45327},
- translation = {``An automated system for printing music'' Master's Thesis Managerial Computer Science.},
+@Book{schirmer90,
+ author={G. Schirmer, Inc.},
+ title={The G. Schirmer Manual of Style and Usage},
+ address={New York},
+ publisher={The G. Schirmer Publications Department},
+ year={1990}
}
-@Article {filgueiras93,
- year = {1993},
- title = {Representation and manipulation of music documents in SceX},
- author = {Miguel Filgueiras and Jos\'e Paulo Leal},
- journal= { Electronic Publishing},
- volume={ 6},
- number={4}, pages = {507--518},
+@Book {Stone80,
+ year = {1980},
+ title = {Music Notation in the Twentieth Century},
+ author = {Kurt Stone},
+ publisher= {Norton},
+ address={New York},
+ note ={Out of print. Heussenstamm writes: The most important book on notation in recent years. },
}
-
-
-@Article {foxley87,
- note = {A paper on a TROFF preprocessor to typeset music. The output shown is not very sophisticated, and contains some typographical atrocities HWN},
+@Book {Heussenstamm87,
year = {1987},
- title = {Music --- A language for typesetting music scores},
- author = {Eric Foxley },
- journal={ Software --- Practice and Experience, },
- volume={ 17},
- number={8}, pages = {485-502},
-
+ title = {The Norton Manual of Music Notation},
+ author = {George Heussenstamm},
+ address= {New York},
+ publisher={Norton},
+ note={Hands-on instruction book for copying (ie. handwriting) music. Fairly complete. HWN}
}
-@Book {filgueiras96,
- year = {1996},
- title = {Implementing a Symbolic Music Processing System},
- author = {Miguel Filgueiras},
- totalentry = {LIACC, Universidade do Porto, 1996; submitted},
-}
-@Book {filgueiras?,
- title = {Some Music Typesetting Algorithms},
- author = {Miguel Filgueiras},
- totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming},
+@Book{unknown69:_music_notat,
+ author = {--},
+ title = {Music Notation},
+ publisher = {Crescendo books},
+ year = 1969,
+ note = {Heussenstamm writes: An extremely thorough exploration of musical notation [..]}
}
@@ -395,7 +214,7 @@
author = {Tom Gerou and Linda Lusk},
publisher = {Alfred Publishing},
address ={Van Nuys CA},
- isbn ={ ISBN 0-88284-768-6},
+ isbn ={ISBN 0-88284-768-6},
}
@@ -405,121 +224,64 @@
title = {Die Praxis des Notengraphikers},
author = {Herbert Chlapik},
publisher = {Doblinger},
- isbn ={ ISBN 3-9000 035-96-2},
+ isbn ={ISBN 3-9000 035-96-2},
}
-@Article {colorado-web,
- author ={Alyssa Lamb},
- note = {Webpages about engraving (designed with finale users in mind) (sic) HWN},
- institution = {The University of Colorado},
- title ={The University of Colorado Music Engraving page.},
- HTML={http://obenamots.cc.colorado.edu/Musicpress/engraving.html},
- year={1996}
-}
-
-@Book {donato63,
- year = {1963},
- author = {Anthony Donato},
- title ={ Preparing Music Manuscript},
- address ={ Englewood Cliffs, NJ},
- publisher={Prentice-Hall},
+@Book {barksdale57,
+ author = {Barksdale, A},
+ year = {1957},
+ title = {The Printed Note: 500 Years of Music Printing and Engraving},
+ address={Toledo, Ohio},
+ month = {January},
+ note={`The exhibition "The Printed Note" attempts to show the various processes used since the second of the 15th century for reproducing music mechanically ... '. The illustration mostly feature ancient music},
+ publisher={The Toledo Museum of Art},
}
-@Book {donemes1900,
- year = {1900},
- title = {Uitgeven van muziek},
- author = {Donemus},
- publisher= {Donemus Amsterdam},
+@Book {wolf19,
+ author = {Wolf, Johannes},
+ year = {1919},
+ title = {Handbuch der Notationskunde},
+ address={Leipzig},
+ publisher={Breitkopf & Hartel},
+ note= {Very thorough treatment (in two volumes) of the history musical notation},
}
-
-@Book {Heussenstamm87,
- year = {1987},
- title = {The Norton Manual of Music Notation},
- author = {George Heussenstamm},
- address= { New York},
- publisher={ Norton},
+@Book {rosenthal67,
+ author = {Rosenthal, Carl A},
+ year = {1967},
+ title = {A Practical Guide to Music Notation},
+ address={New York},
+ publisher={MCA Music},
+ note={Heussenstamm writes: Informative in terms of traditional notation. Does not concern score preparation}
}
-@Book {Karkoshka72,
- year = {1972},
- title = {Notation in New Music; a critical guide to interpretation and realisation},
- author = {Erdhard Karkoshka},
- translator={Ruth Koenig},
- publisher={Praeger Publishers},
- address={ New York},
- note ={(Out of print)},
+@Book {Boehm61,
+ author = {Boehm, Laszlo},
+ year = {1961},
+ title={Modern Music Notation},
+ address={New York},
+ publisher={G. Schirmer, Inc.},
+ note ={Heussenstamm writes: A handy compact reference book in basic notation. }
}
-
-
-@Book {Roemer73,
- year = {1973},
- title = {The Art of Music Copying},
- author = {Clinton Roemer},
- publisher={ Roerick music co.},
- address= { Sherman Oaks (CA)},
+@Book{button20:_system_music_notat,
+ author = {Button, H. Elliot},
+ title = {System in Musical Notation},
+ publisher = {Novello and co.},
+ year = 1920,
+ address = {London}
}
-
-@Book {Rosecrans79,
- year = {1979},
- title = {Music Notation Primer},
- author = {Glen Rosecrans},
- publisher={Passantino},
- address={New York},
+@Book{johnson46:_how,
+ author = {Johnson, Harold},
+ title = {How to write music manuscript},
+ publisher = {Carl Fischer, Inc.},
+ year = 1946,
+ address = {New York}
}
-@Book {Stone80,
- year = {1980},
- title = {Music Notation in the Twentieth Century},
- author = {Kurt Stone},
- publisher= {Norton},
- address={New York},
- note ={(Out of print)},
-
-}
-
-@Book {Langston90,
- note = {This paper deals with some command-line tools for music editing and playback. It doesn't mention notation issues, but does come with the grand idea (not) of using music to monitor complex systems. Imagine your nuclear plant supervisor to use AC/DC for checking the reactor HWN},
- year = {1990},
- title = {Unix music tools at Bellcore},
- author = {Peter S. Langston},
- journal={ Software --- Practice and Experience},
- volume={20},
- number={S1},
- pages={47--61},
-}
-
-
-
-@Article {tablature-web,
- note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN},
- title = {how to read and write tab: a guide to tab notation},
- author = {Howard Wright},
- email={Howard.Wright@ed.ac.uk},
- HTML={ http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html},
-}
-
-
-@Article {niff-web,
- note = {Specs for NIFF, a comprehensive but binary (yuk) format for notation HWN},
- year = {1995},
- title = {NIFF6a Notation Interchange File Format},
- author = {Cindy Grande},
- publisher={Grande Software Inc.},
- HTML={http://www.jtauber.com/music/encoding/niff/},
-}
-
-
-@Article {smdl-web,
- author={unknown},
- title = {SMDL, Standard Musical Description Language},
- pdf={ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf},
- note={ISO/IEC DIS 10743},
-}
diff --git a/Documentation/tex/mudela.doc b/Documentation/tex/mudela.doc
deleted file mode 100644
index 321596152b..0000000000
--- a/Documentation/tex/mudela.doc
+++ /dev/null
@@ -1,1267 +0,0 @@
-% -*-tex-*-
-
-% this document should be run through the mudela-book script after lilypond
-% has been installed. The rules have been precooked into the
-% Documentation/Rules.make file; do
-%
-% make out/mudela.dvi
-%
-% or
-%
-% mudela-book --outdir=out/ --outname=mudela.mudtex mudela.doc
-% latex '\nonstopmode \input out/mudela.mudtex'
-
-% Hoi Tim, hier staan wat 'enge' commando's (die dingen met een '\'
-% zoals \documentclass en \def\mudela...).
-% Daar moet je je niets van aantrekken, ga gewoon naar Introduction
-% en begin te tiepen.
-
-\documentclass{report}
-\usepackage{a4wide}
-\title{Mudela}
-\author{Jan Nieuwenhuizen \& Han-Wen Nienhuys}
-
-\def\file#1{\verb+#1+}
-
-% ugh: trick to get examples not generate par
-% these are for 16pt
-\def\mudelapaperlinewidth{-28.452756}%
-\def\mudelapaperindent{28.452756}%
-\def\mudelapaperrulethickness{0.400000}%
-\def\mudelapaperbarsize{16.000000}%
-\def\mudelapaperinterline{4.000000}%
-\def\mudelapapernotewidth{5.930000}%
-\def\mudelapaperwholewidth{8.640000}%
-\def\mudelapaperunitspace{22.000000}%
-\def\mudelapaperbasicspace{4.000000}%
-\def\mudelapapergeometric{0.000000}%
-\def\mudelapaperarithmetic_basicspace{2.000000}%
-\def\mudelapaperarithmetic_multiplier{4.800000}%
-\def\mudelapaperinterbeam{3.140000}%
-\def\mudelapapergourlay_energybound{100000.000000}%
-\def\mudelapapergourlay_maxmeasures{14.000000}%
-% huh?
-% \def\exampleheight{2\mudelapaperbarsize pt}
-\def\exampleheight{2cm}
-
-% ful of pars, needs the above
-\input lilyponddefs
-% generates par
-\musixsixteendefs
-\def\musixsixteendefs{}
-% generates par
-\turnOnPostScript%
-\def\turnOnPostScript{}
-% generates par
-\def\interscoreline{}
-%
-
-\begin{document}
-\maketitle
-
-%\def\interexample{\hskip15mm$\Longrightarrow$\hskip15mm}
-%\def\interexample{\hbox to10mm{\hfill\hbox to0pt{\hss\vbox to\exampleheight{\vss$\Longrightarrow$\vss}\hss}\hfill}}
-\def\interexample{}
-\def\preexample{\par}
-\def\postexample{\par\medskip}
-
-\def\file#1{{\texttt{#1}}}
-\setcounter{secnumdepth}{-1}
-
-\chapter{A tutorial}
-
-\emph{\Large ***Under construction: may 98***}
-
-\section{Introduction}
-
-This chapter is a gentle introduction to using LilyPond to typeset
-simple music.
-
-LilyPond is a so called ``batch'' program. This means, that you use a
-text editor (such as \texttt{emacs} or \texttt{vi}) to create an input
-file. When you are done editing your input file, you save it, and you
-run LilyPond on the file. If Lily finds any errors in your input file
-then she\footnote{ We're sure that if computer programs could have
-gender, LilyPond would be a female computer program. So we will refer
-to the program as a she. This gender-bending is not to tease you, dear
-reader. We do it in real life as well. In the past two years LilyPond
-has become sort of a baby daughter to us, keeping us awake at night,
-but also providing us lots of joy. We hope you do not mind our little
-aberration from computer-manual tradition.
-%
-% The name LilyPond is actually sort of a girl's name. Can you guess which
-% one ?
-%
-} will complain. If everything is well, than she'll generate a file, that
-you can process further to view or print.
-
-Using LilyPond to print or view some music is a procedure with four
-steps. To get you started we'll run down the full procedure for you
-once.
-
-\begin{enumerate}
-\item
-Fire up your favourite editor (if you know none, try \texttt{joe silly.ly}),
-and key in the following text:
-\begin{verbatim}
-\score {
- <
- \type Staff = aStaff \melodic { g'2 e'4 }
- \type Lyrics = yell \lyric { Air2 ball!4 }
- >
- \paper {}
-}
-\end{verbatim}
-
-Save your file as \file{silly.ly}.
-
-%The input files for LilyPond have the default extension \file{.ly}.
-
-\item
-Run LilyPond on your newly created file: enter \verb+lilypond silly+.
-LilyPond will then print all kinds of mumbo jumbo that can safely be
-ignored. You might see something like this:
-\begin{verbatim}
-GNU LilyPond 0.1.55/FlowerLib 1.1.39
-Parsing ... [/home/hanwen/musix/spacer/init/lily-init.ly[/home/hanwen/
-
- ... stuff left out here ...
-
- Documentation/silly.ly]
-Interpreting music ...[1] (time: 0.04 seconds)
-Preprocessing elements...
-Calculating column positions ... [2]
-Approximated: 1 lines, (with an average of 4.0 columns)
-Time: 0.01 seconds
-warning: Can not solve this casting problem exactly; revert to Word_wrap
-[2]Time: 0.00 seconds
-
-Postprocessing elements...
-TeX output to silly.tex ...
-\end{verbatim}
-All has gone well; there were some warning but no errors. The output
-is a TeX file, and it is called \file{silly.tex}. \file{TeX} is
-usually spelled as \TeX. It is batch program for typesetting text,
-developed by the great programmer and scientist Donald Knuth to
-typeset his famous The Art of Computer Programming bookseries. As you
-can see \TeX\ can be adapted to do a lot more. In fact, the document
-that you are reading now was also done with \TeX.
-\item
- To do something useful with the output you have to run \TeX\ on it
- first. Run the command \verb+tex silly+. The output should resemble this:
-\begin{verbatim}
-This is TeX, Version 3.14159 (C version 6.1)
-(silly.tex
-Babel <v3.6h> and hyphenation patterns for american, dutch, loaded.
-(/home/hanwen/lib/texmf/tex/lilypond/lilyponddefs.tex
-(/home/hanwen/lib/texmf/tex/lilypond/dyndefs.tex)
-(/home/hanwen/lib/texmf/tex/lilypond/fetdefs.tex
-(/home/hanwen/lib/texmf/tex/lilypond/feta20.tex)
-(/home/hanwen/lib/texmf/tex/lilypond/lily-ps-defs.tex))) [1] )
-Output written on silly.dvi (1 page, 3084 bytes).
-Transcript written on silly.log.
-\end{verbatim}
- The human translation is ``everything went OK, the result is one
- page long, and I put it in \file{silly.dvi}.''
-
-\item The \file{silly.dvi} file is a description of how a piece of
-text looks when it is printed. You can view it, or print it. If you
-are using a Unix system equipped with X-Windows, then you can issue
-the command \file{xdvi silly} to view the result. If this is not the
-case, consult your local \TeX\ guru on printing and viewing DVI files.
-What is in your window should look like this:
-\begin{mudela}
-\score {
- <
- \type Staff = aStaff \melodic { g'2 e'4 }
- \type Lyrics = yell \lyric { Air2 ball!4 }
- >
-}
-\end{mudela}
-\end{enumerate}
-
-The above is quite a lot of work. Moreover, the result is pretty
-crude: the page does include prettily printed titles, composer. Jan
-Arne Fagertun wrote a tool to take the above tedious steps out of
-your hands. The tool is called ly2dvi, and it should be on your
-system if you run Unix. If you use ly2dvi, then you can do
-\begin{verbatim}
- ly2dvi silly.ly
-\end{verbatim}
-in stead of steps 2 and 3. You feel the real win of ly2dvi when you
-add titling to the music. This is something that we will discuss in [XXX]
-
-
-The remainder of this document is not about \TeX, and mostly not even
-about LilyPond. What you entered into your text editor in step~1. and
-fed to LilyPond is a special kind of file composed of notenames,
-special words and punctation. The remainder of this document explains
-how to combine these elements to express a piece of music in the
-language that LilyPond understands. In other words, we try to explain
-how to use LilyPond, and not how LilyPond works. For want of a better
-name we call the language Mudela (short for Music Description
-Language).
-
-This document does not cover all of Mudela. Due to technical details,
-the precise working of Mudela is coupled to the innards of LilyPond.
-If you really want to know all the details, your best bet would be to
-get the sources to LilyPond and read the parser and scanner source.
-They are in \file{lilypond-x.y.z/lily/parser.y},
-\file{lilypond-x.y.z/lily/lexer.l}\footnote{Of course, it would be even
-better if you would improve LilyPond and send the resulting diffs to
-us. But that would a really different ballpark (And we haven't
-started with the programming guide yet.)}
-
-In the following sections the basic elements of Mudela are presented.
-We don't want to bore you too much with details, so we will leave-out
-some red tape that's needed for a valid piece of Mudela: to be
-precise, we will write \verb+X Y Z+, when we really mean
-\begin{verbatim}
-\score {
- \melodic { X Y Z }
- \paper {}
-}
-\end{verbatim}
-Usually, we will also print the resulting fragment of music on the
-right just as it was produced by LilyPond.
-
-For the remainder we will assume that you can carry out steps 1 to 4
-from the above instruction. We will also assume that you know how
-music notation works. If you are not familiar with the English terms
-for music notation, then you should consult XXXX [FIXME], it contains
-a glossary of musical terms.
-
-\section{Music copying versus music definition versus music entry}
-
-If you have done music copying before, then using LilyPond may seem
-awkward to you in the beginning. The purpose of LilyPond is informally
-explained by the term ``music typesetter.''
-
-This may give the impression that the program is like a drawing tool
-that lets you control precisely how the music is formatted. This is
-not the case: not only does the program print musical symbols,
-LilyPond also tries to make esthetic decisions---to be precise, we
-programmed her to do what we find pretty. You do not have complete
-control over what is happening. On the other hand, good engraving is
-a very complex trade, so it is a Good Thing that you do not have to
-worry about what is happening.
-
-Secondly, LilyPond operates on musical definitions. This really is
-something different from graphical definitions. If you copy music by
-hand from a printed score, you don't have to know what the score
-means; you just copy the symbols. With LilyPond such a thing is not
-possible: we expect you to enter the meaning of the score, not the
-score itself. If put more concretely: you do not enter ``black
-notehead without flag, fourth staff line, with dot'', but ``a dotted
-quarter note, pitch d$^2$''. LilyPond will figure out from the
-musical info what kind of graphic presentation is needed.
-
-This has some drawbacks: most notably, it is difficult to enter sheet
-music that you cannot read. On the other hand, any piece of music
-once entered can be played and transposed automatically.
-
-Finally, in some spots we will cheat a bit when it comes to musical
-definition. Mudela has some entry modes that help you to make typing
-mudela pleasant. For example, the verbose phrase ``a dotted quarter
-note, pitch d$^2$'' translates to the following longhand
-\begin{verbatim}
- \musical_pitch { 1 2 0 } \duration { 2 1}
-\end{verbatim}
-You can be conveniently abbreviate this to \verb+d''4.+, which is
-considerably shorter. There are some features that also make the
-quotes and numbers in \verb+d''4.+ superfluous in some cases.
-
-\section{When you know the notes to print\ldots}
-
-The basic building block of music is the note. You can have LilyPond
-print a note by specifying its pitch and the duration. The pitch of
-the central C, also known as c$^1$, is written as \verb+c'+. A quarter
-note duration is written as \verb+4+. So, to print quarter note with
-central C pitch, you enter the following
-\begin{mudela}[fragment,verbatim,center]
-c'4
-\end{mudela}
-The pitch \verb+c'+ actually consists of two parts: one for the note
-name, and one part for the octave. The number of apostrophes
-specifies the octave to use if you are above central c. If you want
-the octaves below central c, use the comma, eg, \verb+c,,+ (The comma
-is meant to represent a ``sunken'' apostrophe). The letter specifies
-which note name to use. The note names simply are the letters
-\verb+a+ to \verb+g+.
-
-By convention, the \verb+a'+ concert pitch is the tone that is used to
-tune instruments. The exact frequency of this tone has wandered: in
-Baroque time it was 335 Hz, most textbooks will tell you it is 440 Hz,
-and a lot of orchestras nowadays tune at 441.5 Hz.
-
-For example,
-\begin{mudela}[fragment,verbatim]
- c'4 d'4 e'4 c'4 c''4 d''4 e''4 f''4 g''4 a''4 b''4 c'''4
-\end{mudela}
-
-The duration of a note is specified as a number: a whole note is
-denoted by 1, the half note by 2, the quarter by 4, and so on. Here
-are some random notes to show how it works
-\begin{mudela}[fragment,verbatim]
-c,8 c8 c'16 c''32 d''64 b'64 c'''2 c1 c'4 d'4 e'4 f'4 g'4 a'4
-\end{mudela}
-
-This gives us already enough material to make simple songs:
-\begin{mudela}[fragment,verbatim]
- c''4 d''4 e''4 c''4
- e''4 f''4 g''2
- g''8 a''8 g''8 f''8 e''4 c''4
- c''4 g'4 c''2
-\end{mudela}
-
-There is only one part about pitches that we haven't told you:
-chromatically altered pitches. The names ``a'' to ``g'' for typing
-pitches are convenient: they are short, pronounceable and they
-resemble the normal vocabulary for pitches.
-
-Enter flats and sharps. In English there is no standard terse word
-for C sharp or C flat. For this reason, we implemented a different,
-non-english convention for entering altered pitches, see
-table~\ref{notename-tab}: one makes a note sharp by adding the suffix
-``--is'' to the name, one makes the a note flat by adding the suffix
-``--es.'' For a double sharp you simply add another ``--is'' suffix,
-flats ditto.
-
-
-\begin{table}[h]
- \begin{center}
- \caption{Default note names}\label{notename-tab}
-
- \begin{tabular}{ll}
- english &LilyPond\\
- \hline\\
- c double flat &ceses\\
- c flat &ces\\
- c natural &c\\
- c sharp &cis\\
- c double sharp &cisis\\
- \end{tabular}
-
- \end{center}
-\end{table}
-
-Variations on this convention are used in a number of germanic
-languages, notably Dutch, German, Swedish, and Norwegian. To be
-precise, LilyPond actually defaults to dutch notenames, with aes,
-aeses, ees and eeses added for consistency.
-
-If you are not comfortable with these names, you can make your own
-names. Included with the example initialisation files are note names
-for different languages, among others English (C sharp is abbreviated
-to cs), Italian, Swedish, Norwegian
-
-\section{[chords]}
-
-Up till so far we have only considered music that was rather simple.
-All the music had notes going in one direction, from left to right,
-the one following the other. You might be wondering if this is all
-Lily could do, or whether is possible to stack notes as well (creating
-\emph{chords}). Rest assured: we designed LilyPond with the goal mind
-that she must handle any notation construct that can be expressed
-conveniently. Of course, we did not leave out chords.
-
-In mudela you can form a chord of several notes, by enclosing them in
-pointed parentheses, ie, $\langle$ and $\rangle$, for example a
-D-major chord can be described by
-\begin{mudela}[fragment,verbatim]
- <d'8 fis'8 a'8 d''8>
-\end{mudela}
-Recall what was said in the previous section about flats and sharps:
-the \texttt{fis} is an f sharp. Chords can be entered in the music in
-same places that notes can. As an example we give a snippet of
-``twinkle twinkle little star'' in chords. The chords may seem, well,
-unconventional, but they mostly serve to show how chords work
-\begin{mudela}[verbatim, fragment]
- c''4 c''4 <c''4 g''4> <c''4 e''4 g''4>
- <c''4 e''4 a''4> <b'4 d''4 a''4> <b'2 d''2 g''2>
- <a'4 d''4 f''4> <bes'4 d''4 f''4> <bes'4 c''4 e''4> <g'4 c''4 e''4>
- <e'4 a'4 d''4> <a4 g'4 cis''4> <d'2 f'2 d''2>
-\end{mudela}
-
-\section{Shortcuts}
-
-If you have typed the last example in to a mudela file, you will have
-noticed that the input has lots of repetitions. You probably made
-some little errors with the right amount of \texttt{'}'s as well. For
-these reasons, saving keystrokes and preventing errors, mudela has
-some handy shortcuts. You don't have to type the duration, if it the
-same as the last duration entered. This saves a considerable number
-of keystrokes, and thus it reduces the potential for errors. The
-previous example can be reduced to
-\begin{verbatim}
- c''4 c'' <c'' g''> <c'' e'' g''>
- <c'' e'' a''> <b' d'' a''> <b'2 d'' g''>
- <a'4 d'' f''> <bes' d'' f''> <bes' c'' e''> <g' c'' e''>
- <e' a' d''> <a g' cis''> <d'2 f' d''>
-\end{verbatim}
-
-The need for quotes can also be reduced: most of the pitch intervals
-in traditional music are small. Therefore, it makes sense to leave
-out the quotes when the interval is small. This is called the
-relative mode for octaves. You can switch it on by entering
-\verb+\relative+. From then on, the pitch of a note will be the
-closest to the last one. You have to specify the first pitch because
-the first note of a row obviously has no predecessor. Thus, you can
-enter a scale without using octavation quotes, eg,
-
-\begin{mudela}[fragment,verbatim]
- \relative c' { c d e f g a b c }
-\end{mudela}
-
-For chords, the relative mode works slightly differently. In a
-sequence of chords, the first note of a chord gives the starting point
-for the next. We can demonstrate this with our twinkle twinkle example
-\begin{verbatim}
- \relative c' {
- c4 c <c g'> <c e g>
- <c e a> <b d a'> <b2 d g>
- <a4 d f> <bes d f> <bes c e> <g c e>
- <e a d> <a, g' cis'> <d2 f d'>
- }
-\end{verbatim}
-
-
-
-\section{Finishing touch}
-
-
-
-\chapter{Features}
-
-Durations are entered as their reciproce values
-% a1 a2 a4 a a8 a a16 a a32 a a64 a a a a
-\begin{mudela}[fragment,verbatim,center]
-a1 a2 a4 a a8 a a16 a32 a64
-\end{mudela}
-note that you only have to specify
-the duration when it changes:
-Lily assumes a note has the same duration as the previous one.
-
-Now we can already write a little tune
-\begin{mudela}[fragment,verbatim,center]
-c d e c | c d e c | e f g2
-\end{mudela}
-As you'll probably have guessed,
-the vertical bar (pipe) \verb+|+ may be used to mark
-measures.
-
-In the scale shown above
-we left-out the last c note of the next octave.
-Postfixing the pitch with a quote \verb+'+
-produces a note by one octave higher
-\begin{mudela}[fragment,verbatim,center]
-c c' c''
-\end{mudela}
-
-Prefixing the pitch with a quote \verb+'+
-produces a note by one octave lower
-\begin{mudela}[fragment,verbatim,center]
-a a, a,,
-\end{mudela}
-
-\section{Slurs and Ties}
-
-A tie connects two adjacent noteheads
-
-\begin{mudela}[fragment,verbatim,center]
-e' ~ e
-\end{mudela}
-
-Whereas a slur rather connects `chords',
-and tries to avoid crossing stems
-
-\begin{mudela}[fragment,verbatim,center]
-e'( )e
-\end{mudela}
-
-And of course, such a (legato) slur can span several notes
-\begin{mudela}[fragment,verbatim,center]
-c( d e )f
-\end{mudela}
-
-\section{Beams and Plets}
-
-A beam is
-\begin{mudela}[fragment,verbatim,center]
-[a8 a] [a16 a a a]
-\end{mudela}
-
-Here's a beamed triplet
-\begin{mudela}[fragment,verbatim,center]
-[/3 a8 a a]/1
-\end{mudela}
-
-a triplet without a beam
-\begin{mudela}[fragment,verbatim,center]
-\[/3 a4 a8\]
-\end{mudela}
-
-and a combination
-\begin{mudela}[fragment,verbatim,center]
-[/3 a8 a16 a] a8 \]
-\end{mudela}
-
-Abbreviations
-\begin{mudela}[fragment,verbatim,center]
-c1:16 [:16 e1 g]
-\end{mudela}
-
-\begin{mudela}[fragment,verbatim,center]
-c4:32 [:16 c8 d8]
-\end{mudela}
-
-\section{Notenames}
-
-Lily has predefined sets of notenames
-for various languages%
-\footnote{These are Dutch, English, German, Italian and Swedish.
-Simply include the language specific init file \file{<language.ly>}.}.
-The default set are the ones we like best are the Dutch notenames.
-
-A sharp is formed by adding \verb+is+
-\begin{mudela}[fragment,verbatim,center]
-cis dis eis fis gis ais bis
-\end{mudela}
-
-and a flat is formed by adding \verb+es+%
-%\footnote{Exceptions: \verb+es+ and \verb+as+.}
-\footnote{Exceptions: {\tt es} and {\tt as}.}
-\begin{mudela}[fragment,verbatim,center]
-ces des es fes ges as bes
-\end{mudela}
-
-With the obvious names for double sharps
-\begin{mudela}[fragment,verbatim,center]
-cisis disis eisis fisis gisis aisis bisis
-\end{mudela}
-
-and double flats
-\begin{mudela}[fragment,verbatim,center]
-ceses deses eses feses geses ases beses
-\end{mudela}
-See why we like-em?
-
-There are two special `notenames', the rest
-\begin{mudela}[fragment,verbatim,center]
-r16 [a a a]
-\end{mudela}
-
-and the space
-\begin{mudela}[fragment,verbatim,center]
-a2 s-"diminuendo" | a
-\end{mudela}
-
-
-\section{Commands}
-
-\begin{mudela}[fragment,verbatim,center]
-\clef "bass"; c,
-\end{mudela}
-
-and a clef-change
-\begin{mudela}[fragment,verbatim,center]
-\clef "violin"; f' e' \clef "alto"; d' c'
-\end{mudela}
-
-\begin{mudela}[fragment,verbatim,center]
-\meter 3/4; c g g |
-\end{mudela}
-
-\begin{mudela}[fragment,verbatim,center]
-\key fis cis;
-g, a, b, cis d e fis g'
-\end{mudela}
-Note how Mudela allows you to
-convey a musical message
-rather than forces you to produce a list of typesetting commands.
-If the music a \verb+cis+, you type a \verb+cis+.
-Depending on the key and context of the note
-Lily will determine what accidentals to typeset.
-
-A reminder accidental can be forced by
-using an exclamation mark \verb+!+
-on a pitch a reminder accidental
-\begin{mudela}[fragment,verbatim,center]
-cis d e cis | c! d e c |
-\end{mudela}
-
-\begin{mudela}[fragment,verbatim,center]
-\meter 2/4;
-\bar "|:"; c c \bar ":|:"; c c \bar ":|"; c c \bar "|.";
-\end{mudela}
-
-\section{Chords and Voices}
-
-Here's a simple chord
-\begin{mudela}[fragment,verbatim,center]
-<c e g>
-\end{mudela}
-
-here are a few
-\begin{mudela}[fragment,verbatim,center]
-<
- { c()d()c }
- { e()f()e }
- { g()a()g }
->
-\end{mudela}
-
-and similarly voices
-\begin{mudela}[fragment,verbatim,center]
-<
- { \voiceone c g c g }
- { \voicetwo c,2 g,2 }
->
-\end{mudela}
-
-
-\section{A complete example}
-%\label{se:complete}
-
-A Mudela file needs some red tape
-
-\begin{mudela}[verbatim,center]
-\score{
- \melodic {
- \octave c';
- c d e c |
- c d e c |
- e f g2 |
- }
-}
-\end{mudela}
-
-\section{Lyrics}
-
-\begin{mudela}[verbatim,center]
-\score{
- <
- \melodic{
- \octave c';
- c d e c | c d e c |
- e f g2 | e4 f g2
- \bar "|.";
- }
- \type Lyrics \lyric{
- Fr\`e-4 re Ja- que
- Fr\`e- re Ja- que
- Dor- mez vous?2
- Dor-4 mez vous?2
- }
- >
-}
-\end{mudela}
-
-\section{Variables}
-
-
-\section{Ly2dvi}
-Check-out this handy little script
-that not only may save you quite some keystrokes,
-but produces titles and takes care of
-margins and (hopefully) papersizes.
-See \file{ly2dvi (1)}.
-
-\chapter{Input format reference}
-
-October 8, 1997
-
-This document describes the the GNU LilyPond input format, which is an
-effective language for defining music. We call this language (rather
-arrogantly) The Musical Definition Language or Mudela, for
-short.\footnote{If anybody comes up with a better name, we'd gladly
- take this. Gourlay already uses Musical Description Language,
- G-Sharp Score Definition Language. ISO standard 10743 defines a
- Standard Music Description Language. We're not being original here}
-
-The first aim of Mudela is to define a piece of music, being complete
-from both from a musical typesetting, as from a musical performing
-point of view.
-
-The Musical Definition Language (Mudela), has a logical structure,
-making use of identifiers, that allows for flexible input, and
-definition reuse. See \file{MANIFESTO} for reasons and design considerations.
-
-The below included for explanatory purposes only (i.e., for a complete
-and up-to-date definition, see \file{lily/parser.y} and
-\file{lily/lexer.l}):
-
-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.
-
-
-\section{Basic elements}
-
-\subsection{Files}
-
-The de-facto extension of Mudela is \file{.ly}. Files may be included by
-entering \verb+\include+ at the start of a line:
-
-\begin{verbatim}
-\include "a_file.ly"
-\end{verbatim}
-
-
-\subsection{Comments}
-
-Line comments are introduced by a
-\verb+%+.
-Block comments are delimited
-by
-\verb+%{+
-and
-\verb+%}+.
-They do not nest.
-
-\subsection{Versions}
-
-Occasionally, small changes in syntax across different versions of
-Mudela might give syntax errors. To warn you about possible
-incompatibilities, you can specify the Mudela version for which the
-inputfile was written,
-\begin{verbatim}
-\version "0.0.50";
-\end{verbatim}
-
-A perl-script which tries to convert to newer versions
-(\file{convert-mudela}) is included in the LilyPond distribution.
-
-\subsection{Words}
-
-Keywords are preceded by a backslash: \verb+\+. They contain
-alphabetic characters only.
-
-Identifiers in their normal form consist start with a backslash, a
-alpha character, followed by alpha-numerics. Identifiers can contain
-any characters (except whitespace,
- and \verb+%+), if you use this construct:
-
-\begin{verbatim}
-\$i'm_a_weird!!!identifier
-\end{verbatim}
-
-(which is the identifier with the name
-\verb+i'm_a_weird!!!identifier+). \verb+$+ Takes any sequence of
-characters which are not whitespace, \verb+$+ and \verb+%+.
-\verb+$i'm_a_weird!!!string+
-\def\foobar{$} % silly fontlock mode
-
-\subsection{Nesting characters}
-
-Mudela uses the brace (\verb+{+ and \verb+}+) for most hierarchical
-structures. For chords the \verb+<+ and the \verb+>+ are used as
-nesting braces.
-
-\subsection{Constants}
-
-Please note that -.5 is not a Real.
-
-\begin{verbatim}
-"I am a string"
--1.2e3 % a real
-12 % an int
-\end{verbatim}
-
-
-\subsection{Identifiers}
-
-When assigning identifiers you use
-
-\begin{verbatim}
-string = ...
-\end{verbatim}
-
-If you reuse identifiers, then the previous contents will be thrown
-away after the right hand is evaluated, eg
-\begin{verbatim}
-bla = \melodic { \bla }
-\end{verbatim}
-is legal
-
-When using identifiers they have to be escaped:
-
-\begin{verbatim}
-oboe = \melodic { ... }
-\score{ \melodic { \oboe }}
-\end{verbatim}
-
-The left-hand part of the assignment is really a string, so
-\begin{verbatim}
-"Foo bar 4 2 " = \melodic { .. }
-\end{verbatim}
-
-is also a valid assignment (but you would have trouble referencing to it)
-
-
-\subsection{Hierarchical structures}
-
-The general structure consists of declarations:
-\begin{verbatim}
-IDENTIFIER = \TYPE{
- <type specific data>
-}
-\end{verbatim}
-and instantiations:
-
-\begin{verbatim}
-\TYPE{ <type specific data> }
-\end{verbatim}
-
-(Currently, \verb+\score+ is the only type that can be instantiated
-at top level. Currently declarations can only be done at top level)
-
-Most instantiations that use an IDENTIFIER are specified as follows:
-
-\begin{verbatim}
-\TYPE{ IDENTIFIER [...] }
-\end{verbatim}
-
-Some exceptions on this rule have been made to prevent inputting
-Mudela becoming tedious
-
-
-\subsection{Modes:}
-
-To simplify different aspects of music definition (entering the notes
-and manipulating them) Mudela has a number of different input "modes":
-
-\begin{description}
-
-
-\item[Normal mode]
-
-At the start of parsing, Mudela assumes normal mode.
-In Normal mode, a word is looked up in the following order:
-\begin{description}
-\item{\verb+word+} string
-\item{\verb|"string"|} string
-\item{\verb|\word|} keyword, identifier
-\end{description}
-In normal mode, a word is assumed to start with an alphabetic
-character, followed by alpha-numeric characters.
-
-\item[Note mode] Note mode is introduced by the keyword
- \verb+\melodic+. In Note mode, a word is looked up in the following
- order:
-\begin{description}
-\item{\verb+word+} notename, string
-\item{\verb|"string"|} string
-\item{\verb|\word|} keyword, identifier
-\end{description}
-
-In Note mode a word is considered to have alphabetic characters only,
-so the underscore (\_) is illegal. If you accidently mistype a
-notename, the parser will assume that you are entering a string (and
-it will most likely complain that you should be in \verb|\lyrics| mode to
-do lyrics)
-
-
-\item[Lyric mode] Lyrics mode (and thus Simple mudela) is introduced
- by the keyword \verb+\lyrics+. Because of the various control
- characters that can appear in lyrics, eg, ``foreign language''
- accents, the inputting a string containing these has been made very
- easy.
-
-In Lyrics mode, a word is looked up in the following order:
-\begin{description}
-\item{\verb+word+} string (thus a lyric)
-\item{\verb|"string"|} string
-\item{\verb|\word|} keyword, identifier
-\end{description}
-
-In Lyric mode every sequence of non-digit and non-white characters
-starting with an alphabetic character or the \_ is considered a word.
-
-\begin{verbatim}
-a&@&@&TSI|{[ % a word
-1THtrhortho % not a "word"
-Leise Fl\"u\ss{}teren meine Sapfe % 4 words
-_ _ _ _ % 4 words: 4 spaces
-\end{verbatim}
-\end{description}
-
-These modes are of a lexical nature. Normal and Note mode largely
-resemble each other, save the possibility of entering Reals,
-meaning of \verb+_+ and the resolution of words
-
-\subsection{Notes}
-
-You enter a note by giving the name and the reciprocal of the duration:
-
-\begin{mudela}[fragment,verbatim]
-a'4 % Dutch names
-\end{mudela}
-
-is a A-1 pitched crotchet. The ' signifies an octave change. A-1 is 440
-Hz concert-pitch. \verb+c'+ is also known as the central c. More examples:
-
-\begin{mudela}[fragment,verbatim]
- a, % 110
- a % 220
- A % 110, uppercase octavates down
- a' % 440
- a'' % 880
- 'as4.*2/3
-\end{mudela}
-
-The last one is an A flat, (just below 110 Hz concert-pitch). The \verb+*2/3+
-signifies that this note is part of a triplet (3 in stead of 2). The
-duration is one and a half quarter note (\verb+4.+) times 2/3.
-
-Notenames are just a special kind of identifiers, and can be declared
-for any language appropriate (see \file{init/dutch.ly}). The default language
-for notenames is defined to be Dutch. In Dutch, the notenames are
-a,b,c,d,e,f and g. Sharps are formed by adding the extension "is",
-flats by adding ``es''
-
-\begin{verbatim}
-% double sharp
-cisis disis eisis fisis gisis aisis bisis
-% sharps
-cis dis eis fis gis ais bis
-% naturals
-c d e f g a b
-% flats
-ces des es fes ges as bes
-% double flats
-ceses deses eses feses geses ases beses
-\end{verbatim}
-
-Rests are named r or s
-\begin{verbatim}
-r % print a rest
-s % a "space" rest, nothing is printed.
-\end{verbatim}
-
-These notenames along with duration are enough material to construct
-simple melodies:
-
-\begin{mudela}[verbatim,fragment]
-\octave c';
-c4 c4 g4 g4 a4 a4 g2
-f4 f4 e4 e4 d4 d4 c2
-\end{mudela}
-
-Music is able to express more. generally speaking, the other
-'features' are either connected between notes (slurs, beams: spanning
-requests) or attached to notes (eg. accents). The former are
-implemented as START and STOP stop features and then attached to the note.
-
-\begin{description}
-\item{[ and ]} start and stop a beam
-\item{( and )} start and stop a slur
-\end{description}
-
-example:
-\begin{mudela}[verbatim,fragment]
- \octave c';
- [c8 () d8 () e8
- e8(] [)g8 <c'8] e'8> % NO nesting!
- [2/3 c8 c8 c8]1/1 % a triplet
-\end{mudela}
-
-Please note that these two characters do \emph{not} necessarrily nest,
-they should be attached to the note. For this reason, the construct
-\verb+[ <c4 c4>]+ will generate a parse error.
-
-\subsection{Slurs and Ties}
-
-Ties connect the noteheads of adjacent notes. They are entered as follows:
-
-\begin{mudela}[verbatim,fragment]
-a'4 ~ a''4
-\end{mudela}
-
-Slurs connect whole chords, and try to avoid crossing stems. They are
-entered as follows:
-
-\begin{mudela}[verbatim,fragment]
-a'4( )a''4
-\end{mudela}
-
-\subsection{Scripts}
-
-Symbols which can be put at either side (above or below) of a staff
-are entered as follows:
-\begin{mudela}[verbatim,fragment]
- a-^ % marcato, direction: default
- %a^- % portato, direction: above note
- a_. % staccato, direction: below note
- a^\fermata % predefined identifier
- c_"marcato" % add a text
- c^"marcato"
- c-"marcato"
-\end{mudela}
-
-If you want to define your own scripts refer to \file{init/script.ly} for
-details.
-
-
-Dynamics can be put after the notename:
-\begin{verbatim}
-a4 \dynamic { 0 } % 0 = fff, 7 = ppp
-\end{verbatim}
-
-Mudela defines the following dynamic identifiers:
-
-\begin{verbatim}
-ppp pp p mp mf f ff fff sfz fz fp
-\end{verbatim}
-and the following abbreviations:
-\begin{verbatim}
-\< %start crescendo
-\> % start decrescendo
-\! % end crescendo/decrescendo
-\end{verbatim}
-
-\subsection{Defaults}
-
-If omit the duration of a note, a default value is substituted. For
-this default value mudela uses the last duration explicitly entered.
-
-Thus the following inputs are equivalent
-\begin{verbatim}
-c4 c4 c16 c16 c16 s16 c4 c16
-c4 c c16 c c c c4 c16
-\end{verbatim}
-
-If you are typing music which does not lie in the "small" and "large"
-octave, you can prevent having to type \verb+'+ all the time by using the
-\verb+\octave+ command: These two lines have the same pitch.
-\begin{verbatim}
-c'' d'' e'' c d e c d e
-\octave c''; c d e ''c ''d ''e \octave c; c d e
-\end{verbatim}
-
-By default the setting of \verb+\octave+ is 0.
-
-\subsection{Lyrics}
-
-Lyrics in Mudela resemble Simple mudela a lot, with notes substituted
-by text.
-
-All syllables are entered separately, separated by whitespace
-\begin{verbatim}
-Twin-4 kle4 twin-4 kle4 ...
-\end{verbatim}
-
-Two syllables or words that compose a single
-duration entry are bound together using an underscore
-\begin{verbatim}
-He_could4 not4
-\end{verbatim}
-
-\section{Composition: forming bigger structures}
-
-The previous examples tacitly assumed that a sequence of notes is
-printed in a left to right manner. This is not entirely correct, you
-will get the bigger picture in this section.
-
-In mathematics you can form expressions by combining expressions,
-which are ultimately some kind of atom or terminal symbol. The same
-goes for mudela: there are some basic building blocks, and by
-combining those you create complex music.
-
-You can combine music in three ways:
-\begin{itemize}
-\item If you enclose a sequence of music-elements in braces ( \verb+{+
- and \verb+}+ ), then you form another kind of music called (Voice) with those pieces.
- The duration of the Voice is the sum of the durations of its elements
-\begin{verbatim}
-{ c c g g a a g2 } % twinkle twinkle
-{ { c c g g} { a a g2 } }
-\end{verbatim}
-\item You can stack music by enclosing a sequence of music elements
- with \verb+<+ and \verb+>+. This is called a Chord. The duration of a Chord is
- the union of the durations of its elements Example:
-\begin{verbatim}
-<a4 {cis8 cis8} e'4> % a-major chord
-\end{verbatim}
-\item
- You can form music by transposing music:
-\begin{verbatim}
-\transpose
- d % from c to the d that's one octave down
- { e4 f4 } % the horizontal music
-\end{verbatim}
-\end{itemize}
-
-Of course you can also combine these three mechanisms.
-\begin{verbatim}
-{ c <c e> <c e g> <c e g \transpose d' dis > } % 4 increasing chords
-\end{verbatim}
-
-The basic building block in Mudela is called Request. Examples of
-Requests are: Timing (such as Meter), Rhythmic, Melodic, Note (which is a combination of
-Rhythmic and Melodic), Musicscript (put an accent over a note or
-rest), etc. For the actual up to date listing, you should consult the
-LilyPond source code: the Request types form a big class hierarchy.
-
-Normally you don't enter Requests directly, since that would be
-tedious. Mudela has standard abbreviations for the most common
-combination of Requests. If you enter \verb+c4+, this is an
-abbreviation for:
-\begin{verbatim}
-Request_chord{
- Note_req{
- notename: 0 acc: 0 oct: -1
- duration { 4}
- }
- Stem_req{
- duration { 4}
- }
-}
-\end{verbatim}
-
-The \verb+Request_chord+ is a special kind of chord which only allows
-Requests as its elements. The examples of the previous section were
-processed with \verb+{+ and \verb+}+ enclosing the input.
-
-\subsection{Durations}
-
-A duration always starts with the duration type (1,2,4 etc), and then
-any optional multipliers/dots. Old fashioned durations can be entered
-as follows
-\begin{verbatim}
-'c\breve
-gis'\longa
-\end{verbatim}
-
-
-
-\subsection{Meters/groupings}
-
-A meter has this form:
-\begin{verbatim}
-\meter 3/4 ;
-\end{verbatim}
-
-Rhythmic grouping is a concept closely associated with this. For
-example, in a 5/8 meter, the counts are grouped 2+3. In mudela this is
-entered as
-\begin{verbatim}
-\grouping 8*2 8*3 ;
-\end{verbatim}
-You can start the piece with a partial measure, the command takes the
-same syntax as grouping:
-\begin{verbatim}
-\partial 16*3 4;
-\end{verbatim}
-
-Make the piece start with a upstep [english translation?]
-lasting 1 3/4 quarter notes.
-
-These commands are also "voice elements", and constitute ``Music''
-(consisting of stuff with duration 0).
-
-
-\subsection{Voicegroups}
-
-
-[OUTDATED]
-
-If more than one "voice" is in a staff, then you have the option of
-putting the different voices into so called voicegroups: members of
-the same voicegroup share certain characteristics, among others:
-
- - dynamics
- - text
- - beams and stems
- - scripts
-
-For the actual list, see the init file \file{init/register.ly}
-
-Putting different musical lines in to the same voicegroup effectively
-makes LilyPond try to form chords of all those lines. Putting
-different musical lines in to different voicegroups effectively makes
-LilyPond try to set those lines as independently as possible.
-
-[adsolete. Has to be fixed in lily]
-
-You can set the voicegroup of a voice with the command \verb+\group+, e.g.,
-
-\begin{verbatim}
- oboeI = \melodic {
- \group "oboes";
- [e8 f8
- \group "+solo";
- [g16 a16 g16 fis16]
- \group "-";
- g8 f8
- }
- oboeII = \melodic { \group "oboes";
- c8 d8]
- e4
- e8 d8
- }
- /// ...
-
- \staff {
- melodicregs \melodic{ oboeI }
- \melodic { oboeII}
-}
-\end{verbatim}
-
-In this example, the two oboe voices share one staff and are initially
-in the voicegroup called "oboes". They will share beams, dynamics etc.
-After two quarter notes, oboeI "pushes" its group: a new voicegroup is
-created, called "oboes+solo". The \verb+\group "-"+ command makes the
-voice enter "oboes" again.
-
-Please do note that [] are voicegroup wide; the previous input is
-valid: the beam, started in oboeI, voicegroup "oboes" is also ended in
-voicegroup "oboes", albeit not in oboeI but oboeII
-
-This concept may seem contorted, but it allows you to set the separate
-oboe parts without changing the \verb+oboeI+ and \verb+oboeII+ (assuming that
-you edit the [] in the example.)
-
-The construct
-\begin{verbatim}
-< { .... } {......} >
-\end{verbatim}
-makes a chord (all horizontal parts are in the same voicegroup). The construct
-\begin{verbatim}
-\multi 2 < { ....} { .... } >
-\end{verbatim}
-creates horizontal parts which behave independently. You will have to
-set voicegroup features by hand (\verb+\stem+ and \verb+\hshift+. See examples)
-
-The construct
-\begin{verbatim}
-\multi 3 < { ....} { .... } >
-\end{verbatim}
-creates a chord with each part in a different staff
-
-
-\subsection{Examples}
-
-Examples are included with the GNU LilyPond distribution. For the sake of
-maintenance no long examples are included in this document.
-
-
-\section{History}
-
-This language has a number of roots. First and foremost, GNU
-LilyPond's predecessor mpp was the inspiration of the Note-mode input.
-Secondly, the hierarchical structure looks a lot like Rayce's (Rayce
-is a raytracer that I've written as a hobby project. ), which in turn
-owes a lot to POVRay.
-
-Now, we know, musictypesetting and raytracing do not necessarily
-require the same input format, and we know that a lot more ways exist
-to convert music to ASCII, but we did give this language some
-thoughts. As always suggestions are appreciated.
-
-\end{document}
-
-
diff --git a/Documentation/tex/mudela.yo b/Documentation/tex/mudela.yo
new file mode 100644
index 0000000000..87407dfb4b
--- /dev/null
+++ b/Documentation/tex/mudela.yo
@@ -0,0 +1,2676 @@
+COMMENT(-*-text-*-)
+
+DEFINEMACRO(var)(1)(whenlatex(latexcommand({\normalfont\scshape )ARG1+latexcommand(}))\
+ whenhtml(sc(ARG1)))
+
+
+
+COMMENT( This document contains Mudela fragments. You need at least
+Yodl-1.30.18 to convert this to tex or html.
+
+TODO
+
+in stead <-> instead
+)
+
+htmlbodyopt(bgcolor)(white)
+htmlcommand(<font color=black>)
+
+latexpackage()(a4wide)
+latexlayoutcmds(
+%\usepackage[latin1]{inputenc}
+\input mudela-book
+)
+
+whenlatex(notableofcontents())
+whentexinfo(notableofcontents())
+
+report(Mudela, the Music-Definition Language)
+ (Han-Wen Nienhuys and Jan Nieuwenhuizen)
+ (nop()PIPETHROUGH(date "+%B %d, %Y")()()nop())
+
+COMMENT(
+
+* The [ ] look weird
+
+* paragraphs have too much space.
+
+)
+
+
+latexcommand(\def\interexample{})
+latexcommand(\def\preexample{\par})
+latexcommand(\def\postexample{\par\medskip})
+latexcommand(\def\file#1{{code(#1)}})
+COMMENT(
+latexcommand(\def\texttt#1{\tt #1})
+latexcommand(\def\textbf#1{\bf #1})
+)
+
+chapter(Tutorial)
+
+whenhtml(
+nsubsect(Disclaimer)
+This document is written in url(Yodl)(ftp://pcnov095.win.tue.nl/pub/yodl)
+and should foremost produce nice LaTeX() output.
+In other formats, such as html, some things will look a bit different,
+while other things will be simply left out.
+Therefore, the authoritive version of this document is the PostScript version,
+produced via LaTeX().
+)
+
+sect(Introduction)
+label(tutorial:introduction)
+latexcommand(\parindent2pc)
+
+If you are reading this, you probably are interested in printing
+music. LilyPond is a program that can print music from a
+specification that you, the user, supply. Using LilyPond may be a bit
+quaint in the beginning, because you have to give that specification
+using a em(language). That might not be what you expect if you are
+familiar with graphical interfaces. But there are some big
+advantages: first, once you master the language, entering music can be
+done quite efficiently. Secondly, it is possible to explain exactly
+what the meaning of a language is, i.e., the semantics are much
+clearer. Thirdly, since the program is not interactive, no tradeoffs
+have to be made between processing speed and beauty of the output.
+
+This chapter is a gentle introduction to Mudela, the language that
+instructs LilyPond to typeset music. We will explain Mudela by
+presenting a series of examples of Mudela input. The corresponding
+output will be shown on the right or below, just as it was produced by
+LilyPond.
+
+We will assume that you more or less understand the basics of music notation.
+If you are not familiar with the English terms for music notation, you
+should consult bind(Appendix)ref(glossary): it contains a glossary
+of musical terms along with translations in some other languages.
+
+If you want to try the examples given here, you should have look a
+look at bind(Section)ref(sec:running-lilypond) first.
+
+sect(Music copying, music definition and music entry)
+label(tutorial:copying-vs-def-vs-entry)
+
+If you have copied music before, using LilyPond may seem awkward
+to you in the beginning. The purpose of LilyPond informally is
+explained by the term `music typesetter'.
+
+This may give the impression that the program is like a drawing tool
+and that it lets you control precisely how the music is formatted.
+This is not the case: not only does the program print musical symbols,
+LilyPond also tries to make esthetic decisions---to be precise, we
+programmed her to do what we find nop(pretty.)footnote(We formed our
+taste by looking at, and reading all about fine music engraving. Of
+course, our taste is also bound by all the accepted rules of common
+music notation.) You do not have complete control over what is
+happening. Usually that is not a big loss, since good engraving is a
+very complex trade. In other words, you don't have control, so you do
+not have to worry about what is happening precisely.
+
+Secondly, we expect you to enter the meaning of the music, not the
+sheet music itself. The input to LilyPond is a music definition,
+which is something different than notation: notation is a graphical
+system. Put more concretely: your input to LilyPond should contain
+information like ``a dotted quarter note, pitch nop(d)sups(2).''
+LilyPond will figure out from the musical information that a black
+note head with a stem but without flag, fourth staff line, with dot
+should be printed.
+
+When you are copying music by hand from a printed score, you don't have
+to know what the score means; you just copy the symbols. With LilyPond
+such a thing is not possible. You have to enter the meaning of the
+symbols, and this might not always be as easy. On the other hand, once
+entered, any piece of music can be played and transposed automatically.
+
+Finally, in some spots we will cheat a bit when it comes to musical
+definition. Mudela has some entry modes that help to make typing
+Mudela pleasant. For example, the phrase ``a dotted quarter note,
+pitch nop(d)sups(2)'' translates to the following longhand:
+verb(
+\musicalpitch { 1 2 0 } \duration { 2 1 })
+
+This data is what we consider the musical em(definition). Mudela
+has a special entry mode where you can conveniently abbreviate this to
+`code(d''4.)'. There are some features that also make the quotes and
+numbers in `code(d''4.)' superfluous in some cases.
+
+For those who are curious, the numbers in `code(\musicalpitch { 1 2 0
+})' example mean octave, notename, and accidental respectively. The
+numbers in `code(\duration { 2 1 })' are the (negative) logarithm of the
+duration (2 is a quarter note, 3 is an eighth note, etc.) and the number
+of augmention dots respectively.
+
+sect(When you know the notes to nop(print)ellipsis())
+
+The basic building block of music is the note. You can have LilyPond
+print a note by specifying its pitch and duration. The pitch of the
+central C is written as code(c'). This is in line with musicological
+notation; there this pitch is transcribed as nop(c)sups(1) or c'. A
+quarter-note duration is written as code(4). So, to print a quarter
+note whose pitch is central C, you enter the following:
+mudela(fragment,verbatim,center)( c'4 )
+
+
+subsect(Duration)
+
+The duration of a note is specified as a number: a whole note is
+denoted by 1, a half note by 2, a quarter by 4, and so on. If you
+want to augment a duration with a dot, simply affix a period to the
+number. Here are some random notes to show how it works.
+
+mudela(fragment,verbatim)(
+ c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 c'2. c'8. c'16
+)
+
+subsect(Basic pitches)
+
+The pitch code(c') actually consists of two parts: one part for the
+note name, and one for the octave. The letter specifies which note
+name to use: note names simply are the letters code(a) to code(g).
+The number of apostrophes specifies the octave to use: the central C
+is denoted by code(c').footnote(By convention, the A above central C
+at concert pitch is the tone that is used to tune instruments. Its
+frequency is about 440 Hz.) The C which is an eighth higher (the C in
+the ``two-line octave'') is denoted by code(c''): every octave adds a
+quote. A note name without quotes designates the pitch below code(c')
+(the C in the ``small octave''). If you want to go down even further,
+commas should be added, e.g., the C in the ``contra octave'' is
+expressed as code(c,,).footnote(The comma is meant to represent a
+sunken apostrophe.)
+
+
+This example demonstrates octaves:
+mudela(fragment,verbatim,center)(
+ c,,4 c,4 c4 c'4 c''4 c'''4
+)
+
+And this example demonstrates notenames:
+mudela(center,fragment,verbatim)(
+ c'4 d'4 e'4 f'4 g'4 a'4 b'4 c''4
+)
+
+A rest can be entered as a note with the special name code(r), e.g.,
+mudela(fragment,verbatim,center)(r4)
+
+This already gives us enough material to make simple songs. In
+bind(Figure)ref(fig:twinkle1) a portion of the traditional song
+``Twinkle Twinkle Little Star'' is shown.
+
+latexcommand(\begin{figure}[h])
+ center(
+mudela(fragment,verbatim)(
+ c''4 c''4 g''4 g''4
+ a''4 a''4 g''2
+)
+ latexcommand(\caption{Twinkle twinkle little star (version 1)})
+ label(fig:twinkle1)
+ )
+latexcommand(\end{figure})
+
+
+subsect(Alterations)
+
+We have so far ignored chromatically altered pitches. The names `a'
+to `g' for entering pitches are convenient: they are short,
+pronounceable and they resemble the words for pitches in normal
+musical vocabulary.
+
+Enter flats and sharps. In English there is no standard terse word
+for C sharp or C flat. For this reason, we implemented a different,
+non-English convention for entering altered pitches: a note is made
+sharp by adding the suffix `--is' to its name, and flat by adding the
+suffix `--es'. For a double sharp another `--is' suffix is added, for
+flats another `--es' suffix. The names for the alterations of C are
+given in bind(Table)ref(notename-tab).
+
+latexcommand(\begin{table}[h])
+ center(
+ table(2)(ll)(
+ row(cell(english)cell(LilyPond))
+ rowline()
+ row(cell(c double flat)cell(ceses))
+ row(cell(c flat)cell(ces))
+ row(cell(c natural)cell(c))
+ row(cell(c sharp)cell(cis))
+ row(cell(c double sharp)cell(cisis))
+ )
+ )
+ latexcommand(\caption{Default note names})
+ label(notename-tab)
+latexcommand(\end{table})
+
+Variations on this convention are used in a number of germanic
+languages, notably Dutch, German, Swedish, and Norwegian. To be
+precise, LilyPond actually defaults to Dutch notenames, with
+code(aes), code(aeses), code(ees) and code(eeses) added for
+consistency.
+
+Throughout this document we will continue to use the Dutch names. To make
+(Dutch) pronunciation easier, the a-flat and e-flat are contracted to
+code(as) and code(es). Similarly, the a double flat and e double flat are
+contracted to code(ases) and code(eses).
+
+If you are not comfortable with these names, you can make your own.
+Note names for different languages are included with the example
+initialisation files, amongst others English (C sharp is abbreviated
+to code(cs)), Italian, Swedish and Norwegian. If you want to use
+these names, you should look at bind(Section)ref(subsect:include) for
+information on how to use include files.
+
+sect(Running LilyPond)
+label(sec:running-lilypond)
+
+In the previous section some basic elements of Mudela were presented.
+We didn't want to bore you too much with repetitive details, so we
+left out some red tape that's needed for a of Mudela in a form that is accepted
+by LilyPond. To
+be precise, we wrote code(X Y Z), when we really meant
+verb(\score {
+ \melodic { X Y Z }
+ \paper {}
+})
+We will continue to leave out the red tape this, until the time is fit to explain what the
+above it means.
+
+
+Because LilyPond uses a language, it is a so called em(batch)
+program.
+This means, that you use a
+text editor (such as code(emacs) or code(vi)) to create an input
+file. When you are done editing your input file, you save it, and you
+run LilyPond on the file. If Lily finds any errors in your input file
+then nop(she)footnote(We're sure that if computer programs could have
+ gender, LilyPond would be a female computer program. So we will
+ refer to the program as a she. This gender-bending is not to tease
+ you, dear reader. We do it in real life as well. In the past two
+ years LilyPond has become sort of a baby daughter to us, keeping us
+ awake at night, but also providing us with lots of joy. We hope you do
+ not mind our little aberration from the traditions of computer-manual
+ writing.) COMMENT(
+ The name LilyPond is actually sort of a girl's name. Can you guess which
+ one ?)
+will complain. If everything went well, then she'll generate a file, that
+you can process further to view or print.
+
+Using LilyPond to print or view some music is a four-step procedure.
+To get you started we'll run down the full procedure for you once.
+
+enumerate(
+it()
+Fire up your favourite editor (if you don't
+know any editors, try code(joe silly.ly)),
+and key in the example from bind(Figure)ref(fig:twinkle1), with red tape:
+verb(
+\score {
+ \melodic {
+ c''4 c''4 g''4 g''4
+ a''4 a''4 g''2
+ }
+ \paper {}
+}
+)
+
+Save your file as file(twinkle.ly).footnote(The default extension for Mudela
+files is file(.ly).)
+
+it()
+Run LilyPond on your newly created file: enter code(lilypond twinkle).
+LilyPond will then print all kinds of mumbo jumbo that can safely be
+ignored. You might see something like this:
+verb(
+GNU LilyPond 0.1.55/FlowerLib 1.1.39
+Parsing ... [/home/hanwen/musix/spacer/init/lily-init.ly[/home/hanwen/
+
+ ... stuff left out here ...
+
+ ] Documentation/twinkle.ly]
+Interpreting music ...[1] (time: 0.04 seconds)
+Preprocessing elements...
+Calculating column positions ... [2]
+Approximated: 1 lines, (with an average of 4.0 columns)
+Time: 0.01 seconds
+warning: Can not solve this casting problem exactly; revert to Word_wrap
+[2]Time: 0.00 seconds
+
+Postprocessing elements...
+TeX output to twinkle.tex ...
+)
+
+All has gone well; there were some warnings but no errors. The run
+resulted in output, a TeX file called file(twinkle.tex).
+
+file(TeX) is usually spelled TeX(). It is a batch program for
+typesetting text. It was developed by the great programmer and
+scientist Donald Knuth to typeset his famous bookseries em(The Art of
+Computer Programming). As you can see, TeX() can be adapted to do a
+lot more. whenlatex(In fact, the document that you are reading now was also
+produced with TeX().) COMMENT(ugh.)
+
+
+it()
+ To do something useful with the output you have to run TeX() on it
+ first. Run the command code(tex twinkle). The output should resemble this:
+verb(
+This is TeX, Version 3.14159 (C version 6.1)
+(twinkle.tex
+Babel <v3.6h> and hyphenation patterns for american, dutch, loaded.
+(/home/hanwen/lib/texmf/tex/lilypond/lilyponddefs.tex
+(/home/hanwen/lib/texmf/tex/lilypond/dyndefs.tex)
+(/home/hanwen/lib/texmf/tex/lilypond/fetdefs.tex
+(/home/hanwen/lib/texmf/tex/lilypond/feta20.tex)
+(/home/hanwen/lib/texmf/tex/lilypond/lily-ps-defs.tex))) [1] )
+Output written on twinkle.dvi (1 page, 3084 bytes).
+Transcript written on twinkle.log.
+)
+ The human translation is ``everything went OK, the result is one
+ page long, and I put it in file(twinkle.dvi).''
+
+it()The file(twinkle.dvi) file is a description of how a piece of
+text looks when it is printed. You can view it, or print it. If you
+are using a Unix system equipped with X-Windows, then you can issue
+the command file(xdvi twinkle) to view the result. If this is not the
+case, consult your local TeX() guru on printing and viewing DVI files.
+What is in your window should approximately look like this:
+mudela()(
+\score {
+ \melodic {
+ c''4 c''4 g''4 g''4
+ a''4 a''4 g''2
+ }
+ \paper { linewidth = 13.\cm; }
+}
+)
+
+it()
+If you want to print file(twinkle.dvi), you should invoke the command
+code(dvips twinkle). Running this command should generate a
+PostScript file called file(twinkle.ps). This file can be printed on
+any PostScript compatible printer. You should not use any other
+tools: the output from LilyPond contains fragments of PostScript which
+will not print correctly if you don't use PostScript. If your printer
+doesn't understand PostScript, you should check out GhostScript, a
+PostScript emulator.
+)
+
+
+
+The four-pass procedure sketched above is a bit clumsy. Moreover, the
+result is pretty crude: the page does not include prettily printed
+titles and if you are unlucky, the margins don't come out well. Jan
+Arne Fagertun wrote a tool to take the above steps out of your hands,
+make neat margins and print titling. The tool is called file(ly2dvi),
+and it should be on your system if you use Lily on a Unix platform.
+If you use file(ly2dvi), then you can do verb(ly2dvi twinkle.ly ) in
+stead of steps 2 and 3. You will feel the real advantage of using
+file(ly2dvi) when you add titling to the music. This is something
+that we will discuss in bind(Section)ref(tutorial:titling).
+
+
+COMMENT(This document does not cover all of Mudela. Due to technical details,
+the precise working of Mudela is coupled to the innards of LilyPond.
+If you really want to know all the details, your best bet would be to
+get the sources to LilyPond and read the parser and scanner source.
+They are in file(lilypond-x.y.z/lily/parser.yy) and
+file(lilypond-x.y.z/lily/lexer.ll).)
+
+
+
+sect(Chords)
+
+Up till now we have only considered music that was rather simple. All
+the music had notes going in one direction, from left to right, one
+note following the other. You might be wondering if this is all Lily
+can do, or whether it is possible to stack notes as well (creating
+em(chords)). Rest assured: we designed LilyPond while keeping in mind
+that she must be able to handle any notation construct that can be
+expressed conveniently. Of course we did not leave out chords.
+
+In Mudela you can form a chord of several notes by enclosing them in
+pointed parentheses, bind(i.e.)bind(langle())bind(and)rangle(). ASCII
+doesn't really have these delimiters, so Mudela uses the larger-than
+(code(>)) and smaller-than (code(<)) signs instead. For example, a
+D-major nop(chord)footnote(Recall what was said in the previous
+section about flats and sharps: the word code(fis) means an f sharp.)
+can be described by the following fragment:
+mudela(fragment,verbatim,center)(
+ <d'8 fis'8 a'8 d''8>
+)
+
+ Chords can be entered in the music in the same places that notes
+can. As an example we give a snippet of ``Twinkle Twinkle Little
+Star'' in chords. The chords may seem, slightly unconventional, but they
+only serve to show how chords work. We've aligned the chords
+in the input on their starting beat just to help you reading it.
+This layout does not influence the typesetting result in any way.
+
+mudela(verbatim, fragment)(
+ c''4 c''4 <c''4 g''4> <c''4 e''4 g''4>
+ <c''4 e''4 a''4> <b'4 d''4 a''4> <b'2 d''2 g''2>
+ <a'4 d''4 f''4> <bes'4 d''4 f''4> <bes'4 c''4 e''4> <g'4 c''4 e''4>
+ <e'4 a'4 d''4> <a4 g'4 cis''4> <d'2 f'2 d''2>
+)
+
+
+
+sect(Shortcuts for duration)
+
+If you typed the last example into a Mudela file, you will have
+noticed that the input has lots of repetitions. You will probably
+have made some errors with the right durations and number of
+octavation quotes.
+To save keystrokes and prevent errors Mudela
+has some handy shortcuts. The simplest is the shortcut for
+durations. You don't have to type the duration if it
+is the same as the last duration entered. This saves a considerable
+number of keystrokes, and thus reduces the potential for errors. The
+previous example can be reduced to verb(
+ c''4 c'' <c'' g''> <c'' e'' g''>
+ <c'' e'' a''> <b' d'' a''> <b'2 d'' g''>
+ <a'4 d'' f''> <bes' d'' f''> <bes' c'' e''> <g' c'' e''>
+ <e' a' d''> <a g' cis''> <d'2 f' d''>
+)
+
+
+If you entered this, you probably made some little errors with the
+right amount of quotes as well. To remedy this, mudela has another
+feature called `relative octaves', which reduces the amount of quotes
+needed. If you want to enter large pieces of music em(now) we
+recommend you make an excursion to
+bind(Section)ref(sec:relativeoctaves) and learn about relative
+octaves.
+
+
+
+sect(Comments)
+
+If you want to make some private notes about the Mudela code that you
+entered, you can do so by inserting comments into your file. The
+contents of these comments are ignored by LilyPond. Mudela has two comment
+styles: line comments and block comments. The line comment
+is introduced by the percent sign:
+verb(
+ c''4
+ c''4 % shouldn't this be a different pitch?
+)
+
+Block comments are enclosed in code(%{) and code(%}).
+
+verb(
+ c''4
+ %{
+ Ludwig van Bavaria's original manuscript has an fffff dynamic sign.
+ Clearly one can see the onset of paranoid schizophrenia in the
+ composer from these subtle nuances in his writings.
+ %}
+ c''4
+)
+
+
+sect(Adding nuances: articulation and dynamics)
+
+Having just chords and notes does not give you real music. Real music
+has more liveliness to it: music can have articulation, dynamics
+(louder and softer), etc. This liveliness has notation, so LilyPond
+can print it. We'll start out by explaining how to obtain the
+smallest grains of nuance: the articulation of a single note. Articulation
+is entered by writing a dash and the name of the desired articulation
+mark. You have to add a backslash in front of the name to distinguish
+it from the name of a note. mudela(fragment,verbatim)(
+ c''4-\staccato
+ c''4-\tenuto )
+
+Typing a lot of staccato notes in this syntax will get tedious very
+quickly. Therefore, Mudela has some handy abbreviations for
+articulation marks such as staccato and tenuto. They are shown in the
+following example:
+
+mudela()(
+\score{ \melodic {
+ \property Voice.textstyle = typewriter
+ c''4-._"c''4-." s4
+ c''4--_"c''4--" s4
+ c''4-+_"c''4-+" s4
+ c''4-|_"c''4-|" s4
+ c''4->_"c''4->" s4
+ c''4-^_"c''4-\\^{ }" s4 }
+ \paper { linewidth = 12.\cm; }})
+
+
+COMMENT(For a full list of supported articulation instructions, refer to the
+chapter on features, bind(Chapter)ref(features).)
+
+Text and digits for fingering can be entered in the same manner: add a
+dash and the text or digit to be printed:
+mudela(fragment,verbatim)(
+ c''4-1 g''4-5 c''-"Sul tasto" )
+Currently, the meaning of the
+syntax `note-dash-digit/articulation/text' is just ``add a superscript to this
+note.'' This is not in line with our goal to em(define) music with
+Mudela. We hope that this will be fixed in a future version of the
+language. In the meantime you can abuse this: the super- and
+subscripts can be forced into up or down position respectively by entering an
+a caret (code(^)) or an underscore, code(_) instead of the dash:
+mudela(fragment,verbatim,center)(
+ c'4-^ c'4^^ c'''4-^ c'''4_^
+)
+
+Dynamic markings are another way to add a nuance to a note. They are
+entered by adding the name for the dynamic sign after the note. You
+should not enter a dash between the name and the note.footnote(This
+ is inconsistent. We hope that this will be fixed in a later
+ version of the language.)
+mudela(verbatim,fragment)(
+ c4 \ff c4 \fp c4 c4 \ppp c4 c4 \sfz
+)
+COMMENT(UGH)
+
+sect(Bridging the notes: beams, slurs and ties)
+
+Up till now most of the typesetting concerned simple fixed symbols
+only. Now we turn to variable symbols: symbols that run from one note
+to another. In LilyPond terminology, such a symbol is called a
+em(spanner). To print a spanner, you have to attach a marker to the
+note that begins it and to the one that ends it.
+
+
+The first example of such a symbol is the slur. For the slur, the
+start marker is the opening parenthesis. It won't be a surprise that
+the stopping marker is the closing parenthesis.
+For example:
+mudela(fragment,center,verbatim)( c'4( )c'4 )
+
+otice that the parentheses should be between the notes.footnote(The
+location of the parentheses might be changed in a future version of
+the language.)
+
+It is your job to make sure that each slur that you start also ends.
+If it doesn't end, then Bad Things are likely to happen. The slur is
+quite flexible: you can nest nop(slurs,)footnote(This is inconsistent when
+compared to the syntax for articulation hints. This will probably be
+fixed soon.) and you can connect a note with a slur on both the left and the
+right side:
+
+mudela(fragment,verbatim,center)(
+ c'4(( )c''4 )c'4( )g'4
+)
+
+Another spanner is the beam (see bind(Figure)ref(mud:beam)). It
+indicates the duration of the connected notes, and thus it acts like an
+extended version of the flag. Secondly, the pattern of
+left/right-pointing beams hints at the metric structure of the
+measure.
+
+
+latexcommand(\begin{figure}[h])
+ center(
+ mudela(fragment)([c'8 c'8] [c'16 c'16 c'16 c'16] [c'16. c'32 c'32 c'16.] )
+ latexcommand(\caption{Some beams})
+ label(mud:beam)
+ )
+latexcommand(\end{figure})
+
+
+Strictly speaking, a beam is not a musical concept. The pattern of a
+beam can be derived from the structure of the time signature and the durations
+of the notes. It is merely a device that helps you understand the
+rhythms notated. Unfortunately, LilyPond is not smart enough to insert
+beams into your music on her own. You will have to instruct her by
+marking the starting and stopping point of the beam with `code([)' and
+`code(])' respectively, e.g.
+
+mudela(fragment,verbatim,center)(
+ [g'8 g'8]
+)
+
+LilyPond has code that guesses what the pattern should look like, so
+that you don't have to specify the beaming for complicated
+patterns.footnote(Unfortunately the algorithm used is not foolproof yet:
+ code([c8. c32 c32]) will produce incorrect results.)
+
+Again, it is your responsibility to make sure that you end every beam
+that you start.
+
+A third spanner is similar to the slur: the tie. The tie looks like a
+slur, but a slur connects whole chords, whereas the tie connects
+note heads. Tied notes should be played as one long note.
+In analogy with TeX()'s tie (which ties together words with a
+space), LilyPond's tie is entered as a tilde, ~.
+mudela(verbatim,center,fragment)(c''1 ~ c''4)
+
+The input convention for the tilde is somewhat peculiar when used in
+conjunction with chords. Internally, the extra information that is
+represented by the tilde has to be attached to a note (or to a rest,
+for that matter). For this reason, you can't put the tilde between
+two chords (as in code( <c' g'> ~ <c' g'>)). The tilde sign must be
+directly after a note of the chords. It does not matter which
+one. The following example demonstrates this:
+mudela(fragment,verbatim,center)(
+ <c'1 ~ g' es''> <c'4 g' es''>
+)
+
+sect(Commands)
+label(sec:commands)
+
+Up till now, we only printed notes, and correspondingly only entered
+notes. But notation contains many other constructs, constructs that
+help you with reading those notes. Examples of such constructs are
+clefs, time signatures, keys etc.
+
+If you look carefully at the example in
+bind(Figure)ref(fig:twinkle1), you will notice that the output
+includes some bar lines and clefs, and that there are no references to
+those in the input. They were generated automatically.
+
+Not all such hints can be inserted automatically, and you can also
+override some of the settings. This can be done by inserting various
+commands between the music. The general form of these commands is
+center(
+ em(keyword) sc(arguments)
+)
+
+em(keyword)s are words that have a special meaning to the parser of
+Mudela. Because the parser must be able to distinguish the keywords
+from note names, they have to be preceded by a so-called escape
+character, the backslash, `code(\)'. To separate the arguments from
+any notes that might follow the arguments, you have to end your
+command with a semicolon. An added benefit of this construction is
+that the commands stand out between your notes, because of the
+backslashes.
+
+So the general form actually is `code(\keyword argument argument ... ;)'
+Let us review these commands:
+
+description(
+dit(code(\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.
+ mudela(fragment,verbatim)(
+ \clef "bass"; c'4
+ \clef "treble"; c'4
+ \clef "alto"; c'4
+ )
+dit(code(\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 `code(\key es)'.
+
+dit(code(\accidentals) var(pitchlist))
+
+This command changes the current key signature. The signature is
+given in the form of a list of accidentals, which can be useful for
+unconventional keys. The key of C-minor can be specified as
+`code(\accidentals bes es as)'. The command `code(\accidentals fis es
+bis)' provides a more exotic example.
+
+
+dit(code(\time) var(numerator)code(/)var(denominator))
+ This command chages the current time signature. LilyPond uses the
+ time signature to
+ calculate where to place the bars that start a measure. These bars
+ in turn are the places where a system can be broken into lines.
+
+ The default value for this time signature is common time (4/4). You
+ can also tell this from the Twinkle ``Twinkle Little
+Star'' example in bind(Figure)ref(fig:twinkle1). This
+song actually has a 2/4 time signature, so a metrically more correct
+ version would start with as follows:
+ mudela(fragment,center,verbatim)(
+ \time 2/4; c'4 c' g' g'
+ )
+
+
+dit(code(\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
+`code(\cadenza 1)': it turns off the automatically
+generated bar lines.
+
+You switch them on again with `code(\cadenza 0)', and then a bar line
+is printed. LilyPond will act as if you are again at the start of a
+measure.
+
+dit(code(\bar) var(bartype))
+ This command lets you print special bar lines, such as repeats. You
+ can also use it to allow line breaks when entering cadenzas. The
+ argument var(bartype) is a string that describes what kind of bar line to print.
+
+mudela(fragment,verbatim)(
+ \bar "|:"; c'4 \bar ":|:"; c'4 \bar ":|"; c'4 \bar "||";
+ c'4 \bar "empty"; c'4 \bar "|.";
+)
+ The command `code(\bar "empty")' does not create any visible bar
+ line, but it does tells LilyPond to allow a linebreak
+ at that position.
+
+dit(code(\partial) var(duration)) some music starts with a measure that
+isn't fully filled, a so-called upstep. The code(\partial) command
+allows you to make
+upsteps. The argument is a duration similar to the duration of a note.
+Example:
+ mudela(fragment,verbatim)(
+ \time 4/4;
+ \partial 4;
+ [d'8 dis'] e' c''4 e'8 c''4
+ )
+
+ dit(code(\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;
+ \grouping 16*3 16*2;
+ [c'8 c'16 c'8]
+ \grouping 16*2 16*3;
+ [c'8 c'16 c'8]
+ \grouping 16*5 ;
+ [c'8 c'16 c'8]
+ )
+
+In practice, you won't be needing this command very often: the
+grouping is switched automatically when you issue a code(\time)
+command. It is set to a combination of groups
+of 2 and 3 beats, with as many groups of
+3 as possible (in other words: 4/4 is divided in two times two beats
+(2+2), 8/8 in 3+3+2)
+)
+
+The commands that are described above aren't really music, but they
+can be used in the same places as notes. This makes the grammar of the
+language simpler. It is possible to put a command into a chord.
+For example, the following two snippets of Mudela produce identical output.
+verb(
+ <c4 e g \time 2/4;>
+ \time 2/4; <c4 e g>
+)
+
+
+
+sect(Complex music: more than one staff)
+label(tutorial:more-staffs)
+
+
+Now we explain how to typeset music that runs in multiple staffs.
+Consider the following---somewhat unrealistic---example:
+
+mudela(fragment)(
+ \type GrandStaff <e'4 {\clef bass; g4^""} >
+)
+
+ The music consists of two notes. Perhaps this is sheet music for a
+piano player, and one note is meant to be played with the left hand,
+and the other with the right hand. That music would sound the same if
+it were written as a single chord on a single staff, i.e.,
+mudela(fragment)(
+ <g4 e'4>
+)
+
+
+This is another example where we can see that there can be a difference
+between a musical idea, and the way it is expressed in notation.
+
+The Mudela construct for multiple staffs reflects the similarity
+between the two examples: to get multiple staffs in Mudela you enter a
+chord, with an additional instruction to tell LilyPond that the chord
+does not represent notes stacked together, but staffs stacked
+together.
+
+If a piece of music is to be interpreted as a staff, then this can be
+expressed with the code(\type) construct. The following input says
+``the quarter note with pitch e should be put on a staff.''
+
+verb(
+ \type Staff e'4
+)
+
+The same can be done for the other note, i.e.,
+
+verb(
+ \type Staff g4
+)
+
+If you want to stack these staffs, you must create a chord of both:
+
+verb(
+ < \type Staff e'4
+ \type Staff g4
+ >
+)
+
+This looks reasonable, but the effect of this input is not what you
+might expect (try it!). When interpreting this chord LilyPond will
+start with the first entry. She'll look for a (nameless) staff. Such a
+staff is not found, so it is created. On this staff the code(e) note
+is put. When the second code(\type) entry is read, LilyPond will
+start looking for a nameless staff. The staff that contains the
+code(e) is found, and the code(g) is put there as well.
+
+The correct solution is to label both code(\type) constructs with
+different names, for example code(trebleStaff) and code(bassStaff).
+This makes LilyPond distinguish between them, and create two staffs:
+
+mudela(verbatim,fragment)(
+ < \type Staff = trebleStaff e'4
+ \type Staff = bassStaff g4
+ >
+)
+
+The names that you choose do not matter just as long as they are
+different. This is almost right, except for the brace at the left and
+the clef of the second staff. The bass clef will be taken care of in
+the next chapter. If you want a brace, then you have to tell LilyPond
+that the chord you just formed is to be interpreted as a so-called
+grand staff. This is also done with the code(\type) command.
+mudela(verbatim,fragment)(
+ \type GrandStaff <
+ \type Staff = treblestaff e'4
+ \type Staff = bassstaff g4
+ >
+)
+
+sect(Appending instead of stacking: sequential music)
+label(tutorial:voice)
+
+The previous section dealt with a pretty hypothetical situation: sheet
+music with two staffs and each staff containing only one single note.
+In real-life situations staffs contain more than one note. They
+contain music that has to be played in sequence. A staff can contain
+a em(voice). We haven't learned how to make a voice yet: we need a
+new construct to express this notion of `voice'.
+
+The construct is called em(sequential) music. A list of musical
+objects (e.g., notes, chords or commands) can be made into sequential
+music by enclosing the list in braces; for example:
+
+mudela(fragment,verbatim,center)(
+ { c'4 c'4 }
+)
+mudela(fragment,verbatim,center)(
+ { <c'4 e'> <e' g'> }
+)
+
+
+We could have called this construct more colloquially `voice', but
+this would cause confusion later on, when a second kind of voice
+enters the scene. Similar confusion might arise from the word
+`chord', therefore from now on, we will talk about `simultaneous
+music', when we refer to items enclosed in < and >.
+
+
+The notion of a em(new) construct needs some explanation: we have been
+using sequential music all the time, except that it was hidden in the
+red tape in bind(Section)ref(tutorial:introduction).
+
+
+
+If we want to put whole voices onto a staff, then we have to
+substitute sequential music for the single notes in the example from
+the previous section. A code(\clef) command in the second piece of
+sequential
+music will also set the clef in
+the bass staff.
+mudela(fragment,verbatim)(
+ \type GrandStaff <
+ \type Staff = treblestaff { e'4 f'}
+ \type Staff = bassstaff {\clef "bass"; g a }
+ >
+)
+
+COMMENT(You can nest simultaneous music and chords in any way you want. If
+you are interested in the entire story, you should consult
+bind(Chapter)ref(chap:features), which has a grammar in
+bind(Section)ref(sec:grammar).)
+
+sect(Notation context)
+
+This section is about translation contexts, a topic of LilyPond that
+is somewhat advanced. You don't have to understand this to use
+LilyPond to print simple music. If you don't want to typeset fancy
+polyphonic music or tweak the LilyPond notation engine, you can skip
+the next two sections.
+
+In bind(Section)ref(tutorial:more-staffs) it was explained, that there
+are more ways to notate a simple chord: as a single voice on a single
+staff or in multiple staffs (and we'll soon see, that you can typeset
+it as multiple voices on a staff). Obviously the concept of staff is not
+really something musical. But what is it then?
+
+
+The most simplistic explanation is: a staff is a peculiarity of the
+notation system. In other words, a staff is a graphic device, a
+special picture of five lines on which one can print note heads. To
+avoid confusion, we will call this view on the concept of staff
+`staff symbol' from now on.
+
+
+There is more to it than meets the eye and mind. A staff
+contains---besides a staff symbol--- some more components:
+itemize(
+it()A staff can a have a key signature (printed at the left)
+it()A staff has bar lines
+it()A staff has a clef (printed at the left)
+)
+To explain what a staff really is, we'll try to print music without
+these components. If these components aren't printed, it is still
+possible to print music:
+mudela()(\score{
+\melodic \relative c' { \time 2/4; g'4 c,4 a'4 f4 e c d2 }
+\paper {
+ linewidth = -1.;
+ Staff = \translator {
+ \type "Line_group_engraver_group";
+
+ defaultclef = violin;
+
+ \consists "Timing_engraver";
+ \consists "Separating_line_group_engraver";
+
+ \accepts "Voice";
+ }
+ }
+})
+
+As you can see, one can still make out the general form of the melody
+and the rhythm that is to be played, but the notation is difficult to
+read and the musical information is not complete. The stress pattern
+in the notes can't be deduced from this output. For this, we need a
+time signature:
+
+mudela()(
+\score {
+ \melodic \relative c' { \time 2/4; g'4 c,4 a'4 f4 e c d2 }
+ \paper{
+ linewidth = -1.;
+ Staff = \translator {
+ \type "Line_group_engraver_group";
+ defaultclef = violin;
+ \consists "Time_signature_engraver";
+ \consists "Separating_line_group_engraver";
+ \accepts "Voice";
+ }
+ }
+})
+
+Technically speaking you know where the strong and weak beats are, but
+it is difficult to find them quickly. Bar lines help you in finding
+the location within the measure of the notes:
+mudela()(
+\score {
+ \melodic \relative c' { \time 2/4; g'4 c,4 a'4 f4 e c d2 }
+ \paper{
+ linewidth = -1.;
+ Staff = \translator {
+ \type "Line_group_engraver_group";
+ defaultclef = violin;
+ \consists "Bar_engraver";
+ \consists "Time_signature_engraver";
+ \consists "Separating_line_group_engraver";
+ \accepts "Voice";
+ }
+ }
+})
+
+We can remedy part of the difficulties with reading pitches by adding a staff
+symbol:
+
+mudela()(\score{
+ \melodic\relative c' { \time 2/4; g'4 c,4
+a'4 f4 e c d2 } \paper {
+ linewidth = -1.;
+ Staff = \translator {
+ \type "Line_group_engraver_group";
+
+ defaultclef = violin;
+ \consists "Bar_engraver";
+ \consists "Time_signature_engraver";
+ \consists "Staff_sym_engraver";
+ \consists "Separating_line_group_engraver";
+
+ \accepts "Voice";
+ }
+ }
+})
+
+This makes the output decidedly easier to read, but you still don't
+know what the pitches of the notes above are. So this is still not
+enough. But suppose you see the following notation:
+mudela()(\score {
+ \melodic \relative c' {\clef alto; \time 2/4; g'4 c,4 a'4 f4 e c d2 }
+\paper {
+ linewidth = -1.;
+ Staff = \translator {
+ \type "Line_group_engraver_group";
+
+ defaultclef = violin;
+ \consists "Bar_engraver";
+ \consists "Time_signature_engraver";
+ \consists "Clef_engraver";
+ \consists "Staff_sym_engraver";
+ \consists "Timing_engraver";
+ \consists "Separating_line_group_engraver";
+
+ \accepts "Voice";
+ }
+ }
+})
+
+Now you know the pitch of the notes: you look at the start of the line
+and see a clef, with this clef, you can determine the notated pitches.
+You have found the em(context) in which the notation is to be
+interpreted!
+
+So the context determines the relationship between a piece of music
+and its notation: you, the reader, use context to deduce music from
+notation. Because LilyPond is a notation ``writer'' instead of a
+reader, context works the other way around for Lily: with context a
+piece of music can be converted to notation.
+The components of a staff form context, and context is needed to read
+and write notation. This motivates the following definition.
+
+quote(
+A bf(notation context) is a conversion from music to notation.
+)
+
+The example focused mainly on on staffs, but a staff is not the only
+type of notation context. Notation contexts may be nested: you can
+print polyphonic music by putting multiple `Voice' contexts in one
+`Staff' context. The arguments of the code(\type) command (Staff,
+GrandStaff) were in fact all names of different contexts.
+The notions of ``current clef'' and ``current position within the
+measure'' are all properties of notation contexts. Commands like
+code(\clef) and code(\cadenza) change these properties.
+
+
+The following is a list of the contexts that are supported by
+LilyPond:
+description(
+
+dit(Voice) The code(Voice) context is a context that 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(Staff) The code(Staff) context handles clefs, bar lines, keys,
+ accidentals. A code(Staff) context can contain multiple code(Voice)
+ contexts.
+
+dit(RhythmicStaff) The code(RhythmicStaff) context is like the staff,
+ but much simpler: the notes are printed on one line, and pitches are
+ ignored. code(RhythmicStaff) can contain code(Voice) contexts.
+
+dit(GrandStaff) A code(GrandStaff) context contains code(Staff)
+ contexts, and it adds a brace to the output at the
+ nop(left.)footnote(This is a major deficiency in the current
+ implementation. Currently stems,
+ slurs and beams cannot be printed across two staffs.
+In reality, a grand staff is a hybrid of one big staff and two stacked staffs.)
+
+ A code(GrandStaff) context can contain multiple
+ code(Staff)s. Typically, it will contain two code(Staff)s, one
+ treble staff, and one bass staff. The bar lines of the contained
+ staffs are connected vertically.
+
+dit(StaffGroup) A code(StaffGroup) context contains code(Staff) or
+ code(Lyrics) contexts, and prints a bracket at the left. The bar
+ lines in the participating staffs are connected.
+
+dit(Lyrics) As its name suggests, The code(Lyrics) context deals with
+ typesetting lyrics. This topic will be covered in
+ bind(Section)ref(tutorial:lyrics).
+
+dit(Score) The code(Score) context is the toplevel context: no context can
+ contain a code(Score) context. The code(Score) 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.
+
+ The code(Score) can contain code(Staff), code(StaffGroup), code(Lyrics), code(GrandStaff) and
+ code(RhythmicStaff) contexts.
+
+COMMENT(do ChoireStaff)
+)
+
+
+ Later on, in bind(Section)ref(tutorial:engravers) we will
+explain how you can create your own contexts.
+
+If you are familiar with structured documents (like HTML, SGML or
+LaTeX()), you might see the analogy of a context with a stylesheet: a
+stylesheet is neither presentation nor information, but rather a
+recipe em(how) a specific piece of information should be presented.
+Analogously, a notation context is neither music nor notation, but the
+conversion between the two. The big difference with text is that in
+music notation the elements provided by context are essential to
+understanding what is notated.
+
+
+
+sect(Polyphonic music (or: Notation context properties))
+
+In the last section we explained that a notation context can have
+properties that influence the conversion from music to notation. A
+simple example of such a property is the clef: the type of clef partially
+determines the vertical position of note heads in a staff. Some of
+these properties can be modified by commands such as code(\clef) and
+code(\time). But there is more: notation contexts also have
+properties are settable in a generic fashion. We will demonstrate
+this feature by printing multiple voices on a staff.
+
+In polyphonic (keyboard) music and orchestral scores often more than
+one voice is printed on one staff. We'll explain how to achieve this
+effect with LilyPond. The effect is not unlike the two stacked staffs
+from bind(Section)ref(tutorial:more-staffs), except that we don't want
+to stack staffs but voices. Thus, the general template is the following:
+verb(
+ \type Staff <
+ \type Voice = one ...
+ \type Voice = two ...
+ >
+)
+
+On the ellipsis there should be music going from left to right, in
+otherr words, there should be sequential music, notes enclosed in
+braces. Let us try the following simple melodies:
+
+mudela(fragment,verbatim)(
+\type "Staff" <
+ \type "Voice" = "one" { r4 as'4 () as'4 g'4 }
+ \type "Voice" = "two" { g'2 f'4 e'4 }
+>)
+
+As you can see the result is not quite perfect. The notes on the last
+two beats look like plain chords and not like separate voices. What
+really happened was that the stems of the upper and lower voices were
+printed on top of each other. If you have tried running this example, you will probably
+have noticed a complaint about ``too many
+clashing notecolumns'' during the LilyPond run.
+This complaint refers to the overlapping stems.
+
+To remedy this, engravers traditionally make the stems of the upper
+and lower voice point in different directions: the stems of the lower
+voice point down, and the stems of the upper up, as shown in
+bind(Figure)ref(tutorial:multi-voice-fig).
+
+Surely the direction of a single stem is a property of the stem as a
+graphical object. But the fact that all of the stems in a voice point
+in the same direction is not directly graphical. Since this is a
+property shared by all the stems in the voice, it is logical to
+consider this property to be a property of the context code(Voice).
+And this is how it's done in LilyPond: the context code(Voice) has an
+attribute whose value is the direction to use
+for stems. You can change it to `up'
+by issuing the following phrase:footnote(The name code(ydirection) is
+no mistake. The property also controls the up/down directions of
+super-/subscripts, slurs, ties, etc.)
+
+verb(
+ \property "Voice"."ydirection" = "1"
+)
+
+This command should be read as ``change the property called
+code(ydirection) within the current code(Voice) context to the value
+code(-1).'' For the property code(ydirection) the value code(1) means
+`up', and code(-1) means `down'. The proper way to code the
+polyphonic example is given in bind(Figure)ref(tutorial:multi-voice-fig).
+
+latexcommand(\begin{figure}[h])
+mudela(fragment,verbatim,center)(
+ \type "Staff" <
+ \type "Voice" = "one" {
+ \property Voice.ydirection = "1"
+ r4 as'4 () as'4 g'4 }
+ \type "Voice" = "two" {
+ \property Voice.ydirection = "-1"
+ g'2 f'4 e'4 }
+ >
+)
+ latexcommand(\caption{multiple voices})
+ label(tutorial:multi-voice-fig)
+latexcommand(\end{figure})
+
+Other properties can also be set, and they can be within different
+contexts. In general, you can set a property by specifying
+code(\property) var(contexttype)code(.)var(propertyname) code(=)
+var(value). Both var(ContextType), var(PropertyName) and var(Value)
+should be strings.
+
+The effect of a property is pretty much hardwired into the
+implementation (and thus subject to change), so we will not deal with
+all the possible properties in detail. Among other characteristics that
+can be set are the layout of slurs and beams. The initialisation file
+file(property.ly) explains most properties.
+
+We conclude this section with another example of a context property.
+Polyphonic music that has three or four voices can't be printed by
+simply changing the directions of the stems for each voice, obviously.
+Traditionally, some chords are shifted horizontally to print if this many
+voices have to be printed.
+LilyPond can also do this, and the property that controls the
+horizontal shifting is called code(hshift). The notes in a
+code(Voice) context that has code(hshift) set to a true value (i.e.,
+non-zero or non-empty), will be shifted horizontally in the case of a
+collision. The following example demonstrates the effect.
+
+mudela(fragment,verbatim)(
+ \type "Staff" <
+ \type "Voice" = "one" {
+ \property Voice.ydirection = "1"
+ r4 as'4 () as'4 g'4 }
+ \type "Voice" = "two" {
+ \property Voice.ydirection = "1"
+ \property Voice.hshift = 1
+ g'2 f'4 e'4 }
+ \type "Voice" = "three" {
+ \property Voice.ydirection = "-1"
+ [d'8 dis'] [d' cis'] [c' b] c'4
+ }
+ >
+)
+
+sect(Lyrics)
+label(tutorial:lyrics)
+
+Now for something completely different: Lyrics. Lyrics are also
+considered to be music, although a lyric by itself does not have any
+pitch. Producing lyrics has two aspects. First, you have to enter the
+text, i.e., the syllables along with their durations.
+After this, you have to specify how to convert these to graphics.
+
+Lyrics consist of syllables, which are strings together with
+durations. Previously we only entered note names, so for entering
+lyrics we have to instruct LilyPond that what we enter are not note
+names but words---or rather: strings. This instruction is the keyword
+code(\lyric). After entering this keyword you can enter a musical
+construct---sequential music, simultaneous music, code(\type)
+entries, etc.--- but with syllables in stead of pitches. For example:
+verb( \lyric { 'got8 me on my knees4, Le-8 lie! })
+
+The effect of code(\lyric) can be compared with the effect of the
+doublequote character, code("), for it also changes the lexical
+meaning of spaces and characters. This mode is another example of a
+handy input feature of the language.
+
+Next comes the conversion to notation. LilyPond can't (yet) figure
+out that lyrics need different treatment than notes. As a result, the
+default conversion will try to put the text you entered as note heads
+onto a staff, and this will fail. This default must be overriden with
+a code(\type) keyword. Printing syllables of text in a line is done
+by a context called code(Lyrics). You can select this context with
+the code(\type) keyword. Here is a simple example:
+
+mudela(fragment,verbatim)(
+ \type Lyrics \lyric { 'got8 me on my knees,4 Le-8 lie! })
+
+The result is technically more or less correct, but without a melody it
+just doesn't work, so let's add a blob of cream:
+mudela(fragment,verbatim)(
+ <
+ \type Staff { c''8. c''16 bes'8. a'16 g'4 f'8 g'4. }
+ \type Lyrics \lyric { 'got8. me16 on8. my16 knees,4 Le-8 lie!4. }
+ >
+)
+
+The strings that makes up each syllable in the lyrics block are passed
+along to TeX() verbatim, so if you are proficient with TeX() you can
+do various nifty things. Just keep in mind that a syllable either
+starts with a letter (a character in the range `code(a)' to `code(z)'
+or `code(A)' to `code(Z)'), or it is a string enclosed quotes. It ends
+with either a number for the duration, or a space. A last feature
+that should be mentioned is the space-lyric: if you want to enter
+a single ``syllable'' that consists of multiple words, i.e., words
+separated by spaces, you should use an
+underscore instead of a space. All these tricks are demonstrated in
+the following example:
+
+COMMENT( urg
+\type Lyrics \lyric { 'got_m\textbf{e}4 on8. m$\cal_Y$16 knees,4 Le-8 lie!4.}
+\type Lyrics \lyric { 'got_m{\bf e}4 on8. m$\cal_Y$16 knees,4 Le-8 lie!4.}
+)
+
+mudela(fragment,verbatim)(<
+ \type Staff { c''8. c''16 bes'8. a'16 g'4 f'8 g'4. }
+ \type Lyrics \lyric { 'got_me4 on8. m$\cal_Y$16 "3s,"4 Le-8 lie!4.}
+>
+)
+
+The spacing in the above example is a bit skewed because Lily can't
+tell that the long syllables you entered are not ordinary characters,
+but expand to really small symbols.
+
+
+
+
+COMMENT(Rood is de kleur van geluk.)
+COMMENT(Dat geldt ook voor haar.)
+
+
+sect(Toplevel Mudela)
+
+Now the time has come to unravel the red tape that we have hidden from
+you in the introduction. Mudela has a hierarchical structure for we
+have seen that sequential and simultaneous music can be nested.
+Mudela also has other `blocks' that can be nested. The general syntax
+for a block is code(\keyword { ... }).
+
+When you run LilyPond, what happens is that you define music, and
+specify one (or more) conversions to apply to that music, for example
+a conversion to notation. This is done by putting the definition of
+the music and the definition of the conversion together in a
+code(\score) block, e.g.,
+verb(
+\score {
+ % ... music ...
+ \paper {}
+})
+
+This is almost the context that should be around all
+of the previous examples. The precise context reads thus:
+verb(
+\score {
+ \melodic { ... }
+ \paper {}
+})
+On the ellipsis, you entered what shown as the example input.
+You can see that in the
+above example, the code(\melodic { ... }) forms the music, the
+code(\paper {}) is a conversion to paper (notation, that is). The
+code(\paper) definition is copied from a default definition
+(which is in the initialisation file file(paper16.ly)).
+The paper part also contains
+the definition of the contexts.
+
+The keyword code(\melodic) is analogous to the code(\lyric) keyword. It
+will switch the tokenizer into a mode that interprets plain words as
+note names. If it can't recognize the words as a note name, it will
+assume that they are strings. That is the reason why you can write
+code(\clef bass) in stead of code(\clef "bass"); most of the strings
+in code(\melodic) mode can be written without quotes.
+
+The braces that you see after the code(\melodic) keyword are the
+braces that are around sequential music. Because of these braces, the
+sequences of notes in our simple examples were sequential (and not
+simultaneous). As a result the notes were printed from left to right,
+and not stacked.
+
+sect(Identifiers)
+
+
+Now that we are comfortable with the toplevel entries in a mudela
+file, we can investigate some more of the recreations on toplevel, in
+particular em(identifiers). Generally you can define an identifier by
+entering code(identifierName = ... )
+where there can be a variety of things on the ellipsis.
+
+Here is a (partial) list of what you can abbreviate with identifiers
+at top-level.
+itemize(
+it()The code(\score) block
+it()The code(\paper) block
+it()The code(\midi) block (to be explained in
+ bind(Section)ref(tutorial:sound))
+it()Music (sequential music, simultaneous music etc.)
+it()Durations
+it()Strings
+it()Translators (to be explained in bind(Section)ref(tutorial:engravers))
+it()Integers
+it()Reals
+)
+
+When you refer
+to the abbreviated entity, you must precede code(identifierName)
+with a backslash, i.e., code(\identifierName). For example:
+mudela(verbatim)(
+ czerny = \melodic { [c16 g e g] }
+ \score {
+ \melodic \type GrandStaff <
+ { c''2 g''2 }
+ { \clef bass; \czerny \czerny \czerny \czerny}
+ >
+ \paper {
+ linewidth = -1.0;
+ stem_length = 12.0*\internote;
+ }
+ }
+)
+
+
+
+Another interesting feature of this example are the assignments within
+the paper block. Some blocks, such as code(\paper), have a scope of
+their own. In the case of the code(\paper) block, these variables
+influence the characteristics of the output. As is shown, you can
+tune quantities like the stemlength, and enter simple expressions.
+The purpose of the negative linewidth is to prevent the music from
+being justified. The identifiers that are meaningful are for the
+paper block is strongly implementation dependent, so they will not be
+listed here. Moreover, since most of the values are predefined to
+sensible defaults, there usually is no need to tune these values.
+
+Recall the properties of a context, that could be set with
+code(\property). It is a very general mechanism to tune the output of
+the music, that is neatly separated from the real music.
+Unfortunately, it is not convenient to type or read, and the precise
+effect of a setting property isn't always apparent from its
+definition. To remedy this, we can use an identifier to capture the
+meaning of a code(\property).
+
+mudela(verbatim)(
+stemup = \property Voice.ydirection = "1"
+stemdown = \property Voice.ydirection = "-1"
+shift = \property Voice.hshift = "1"
+\score {
+ \type "Staff" \melodic <
+ \type "Voice" = "one" {
+ \stemup
+ r4 as'4 () as'4 g'4 }
+ \type "Voice" = "two" {
+ \stemup
+ \shift
+ g'2 f'4 e'4 }
+ \type "Voice" = "three" {
+ \stemdown
+ [d'8 dis'] [d' cis'] [c' b] c'4
+ }
+ >
+ \paper{ linewidth = -1.0\pt; }
+}
+)
+
+Several abbreviations like code(\stemup) are defined in the
+standard initialisation file file(property.ly). Setting or changing
+context properties can have a similar effect as the commands that were
+discussed in bind(Section)ref(sec:commands). Don't be fooled by the
+similarity in appearance between a declared property-setting entry
+and a real command. Real commands are hardcoded into the language
+and they have to be terminated by semicolons.
+
+You can also use identifiers to break up the heavy nesting that can occur
+in the code(\score) block. Another useful application is
+parametrisation of the music: if you use identifiers in the
+code(\score) block, you can make variations of the music by simply
+redefining those identifiers. One particular application of this is
+part extraction: by using identifiers and redefining them, one can
+print extracted parts and a full orchestral score from the same
+music definition.
+
+
+
+sect(Sound output)
+label(tutorial:sound)
+
+You get output by combining music with definition a conversion to
+output. Up till now we have only focused on the graphic output of
+traditional engraving. But there is no reason why that should be the
+only form of output for music. LilyPond currently supports one other
+conversion: the conversion from abstract music to sound. You can have
+LilyPond play the music that you entered. The format that is used
+for this output is MIDI.
+
+The only information that you need to enter is the
+ nop(tempo)footnote(Unfortunately,
+this the only thing that can be tuned at this
+time. This is a limitation: the tempo of music can vary throughout
+the music.) for the performance. The syntax for the tempo is
+code(\tempo )var(duration) = var(beatsperminute);), for example:
+verb(
+\score {
+ ...music...
+ \midi { \tempo 4 = 76; }
+}
+)
+
+The most useful purpose of this sound output is to prooflisten your
+files: typing errors (especially if they involve accidentals) stand
+out when you listen.
+The output was implemented in a very rudimentary manner, so it is
+probably not worth listening to for any other reason.
+
+
+sect(Contexts revisited: engravers)
+label(tutorial:engravers)
+
+As was promised, we will now take a dive into the more wizardrous parts
+of LilyPond: redefining (notation) contexts. We previously explained
+that a context
+itemize(
+it()is a conversion from music to notation,
+it()can contain other contexts
+it()handles specific notation constructs
+)
+
+This characterization almost automatically explains what the definition of a
+context should look like:
+itemize(
+it()It should be part of the ``notation output definition,'' i.e., the
+ code(\paper) block
+it()
+ It should contain a specification of what other contexts may be contained
+ in the context we're defining.
+it()
+ It should contain a list of the notation constructs to be
+ handled.
+)
+
+In practice, the context definition
+looks like this:
+verb(
+\translator
+{
+ \type "Engraver_group_engraver";
+ \accepts "...";
+ \accepts "...";
+ \accepts "...";
+
+ \consists " ... ";
+ \consists " ... ";
+ \consists " ... ";
+
+ propertyname = "value";
+ propertyname = "value";
+
+} )
+
+ This is encoded by the
+
+The code(\translator) keyword opens the block for translation (or
+context) definition. The code(\type) keyword explains to Lily that
+the context should be formed by taking an (empty) instance of
+code(Engraver_group_engraver). The code(Engraver_group_engraver) is a
+C++ class from the source code to Lily. The code(\accepts) entries
+explain what kind of contexts this context could contain. If we were
+to define a context for a staff, the definition would typically
+contain code(\accepts "Voice";).
+
+The code(\consists) entries specify which notation constructs should
+be handled. This needs a little explanation: LilyPond contains the
+code for quite a large number of basic building blocks for notation
+generation, and each building block handles only one notation
+construct. The name of such a building block is `engraver'. You can
+specify which notation construct a context should handle by specifying
+which engravers should be part of the context. The code(\consists
+"Foobar") entry really means ``add an instance of code(Foobar) to the
+translation group.''
+
+
+For example if this context should print time signatures, the definition
+should include `code(\consists "Time_signature_engraver";)'. Again
+code(Time_signature_engraver) is a class from the source code of LilyPond.
+
+
+
+Finally, one can pre-set some properties in a context definition.
+
+As a practical example, we will show you how to typeset polymetric
+music, i.e., music where the meter can differ for each staff. The
+solution is not very complicated: normally all timing information
+(time signature, rhythmic grouping) is synchronised across each staff. In
+LilyPond this is expressed by having only one registration for timing
+information for all staffs. To be precise, there is only one
+code(Timing_engraver), and it is located in the top level context, the
+code(Score) context.
+
+All staffs use the information in the global code(Timing_engraver)
+for generating bar lines and time signatures. In polymetric music, this timing
+information can be different for every staff, so we should redefine
+the code(Staff) context to include and the code(Score) context to exclude the
+code(Timing_engraver).
+
+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";
+ }
+
+ 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";
+ }
+}
+\score {
+ \melodic <
+ \type Staff = one { \time 2/4; c'4 c'4 c'4 c'4 c'4 c'4 }
+ \type Staff = two { \time 3/4; c'4 c'4 c'4 c'4 c'4 c'4 }
+ >
+ \paper { \polymetricpaper
+ linewidth = -1.;
+ }
+}
+)
+
+As you can see, we used the identifier code(polymetricpaper) to break
+up the large score block. More of these context definitions appear in
+the standard initialisation file file(engraver.ly).
+
+sect(Urtexts and context selection)
+label(tutorial:urtext)
+
+In bind(Section)ref(tutorial:more-staffs), we have shown you how to make
+multiple staffs, and explained that you have to label every staff (or
+more precisely: different contexts), to make sure that new ones are
+created when you need them. In this section, the real power of this
+mechanism will unveiled.
+
+By naming other contexts that you create, you can reference other contexts
+than the current context from within the music. For example, from within the music that you
+enter for staff code(One), one could enter a small piece of music,
+and send it to staff code(Two), e.g.,
+mudela(fragment,verbatim)(
+ <
+ \type Staff = one { c''4 \type Staff = two { c4 c4 } c''4 }
+ \type Staff = two { \clef bass; g,4 g,4 g,4 g,4 }
+ >
+)
+
+
+Another useful application of this feature is making Urtexts.
+em(Urtext) is the German word for `original text'. The Urtext
+edition of a piece of music, is an edition that reflects the original
+writing of the composer. Such editions are useful for musicologists,
+and performers that want to perform authentic interpretations. However,
+for mere mortals, the Urtext can be quite hard to read. It might not
+contain fingering and beaming, and typically it is full of footnotes.
+Moreover, common interpretations may have emerged---after the composer
+died. For this reason, the music that can be had as Urtext usually is also
+available in enhanced and edited editions.
+
+The mechanism of context selection can be used to fabricate an Urtext
+and an edited edition from em(one source). We will use the first few
+bars of bind(J.)bind(S.)Bach's lovely Cello suite bind(no.)I to
+demonstrate this. The example makes heavy use of space rests: a space
+rest is a like a rest that doesn't print anything. It can be used as
+a placeholder, to attach articulation marks to. It is entered as a
+note with the name code(s).
+
+mudela(verbatim)(
+ bach = \melodic { [c16 g e' d'] [e' g e' g] }
+
+ staffStuff = \melodic { \clef bass; \time 4/4; s1 \bar "|."; }
+
+ slursOne = \melodic { s16( s s s s16 s s )s }
+ slursTwo = \melodic { s16-. s s() s s16() s s ()s }
+
+ \score{
+ { < \type Voice = celloVoice { \bach \bach }
+ \type Voice = celloVoice { \slursOne \slursOne }
+ \staffStuff
+ >
+ <
+ \type Voice = celloVoice { \bach \bach }
+ \type Voice = celloVoice { \slursTwo \slursTwo }
+ \staffStuff
+ >
+ }
+ \paper {}
+ }
+)
+
+ The slurs that you define should be put on the music that is defined
+by the code(\bach) identifier. By labeling a code(Voice) context, and
+directing both the articulation and the notes to that same code(Voice)
+context, the articulation is put over the right notes.
+
+
+sect(Transposing)
+label(tutorial:more-grammar)
+
+COMMENT(In this section, we will complete the grammar for Music that was
+sketched earlier. )
+One of the things that you can do with music is
+em(transposing) it. If you want to transpose a piece of music, then
+you should prefix the keyword code(\transpose) along with the pitch
+(relative to the central C) for the transposition.footnote(the
+code(\type Staff) is to make sure that no separate staffs are created
+for the code(\scale) and code(\transpose cis' \scale) part.)
+
+
+mudela(verbatim)(
+scale = \melodic \relative c' { [c8 d e f] }
+\score {
+ \melodic {
+ \type Staff { \scale \transpose cis' \scale }
+ }
+ \paper { linewidth = -1.0; }
+})
+
+
+sect(Staff switching)
+
+We have seen that contexts can be nested. This means that they form a
+tree. It is possible to edit this tree: for example, a code(Voice)
+context can be taken out of a code(Staff) context, and put into
+another. This has the effect of the voice switching staffs (something
+that often happens in keyboard music). The syntax for this operation
+with these particular contexts is code(\translator Staff = newStaffName).
+
+The effect is analogous to the first example in section
+ref(tutorial:urtext), but with the code(\translator) construction it
+is possible to split the real music and the commands that determine in
+which staff the music is printed. For example:
+
+mudela(verbatim)(
+
+% real music
+aVoice = \type Voice = voiceA \melodic { c''4 c4 c4 c''4 }
+bVoice = \type Voice = voiceB \melodic { g,4 g,4 g,4 g,4 }
+
+% staff switching stuff
+switch = \type Voice = voiceA \melodic { s4 \translator Staff = staffB s4
+ s4 \translator Staff = staffA s4 }
+
+\score {
+ <
+ \type Staff = staffA < \aVoice \switch >
+ \type Staff = staffB < \bVoice \clef bass; >
+ >
+ \paper { linewidth = -1.; }
+}
+)
+
+Don't try to switch staffs when you are in the middle of a slur or
+beam, though. It doesn't work yet.
+
+sect(Hairy durations: triplets)
+
+In the previous section we explained an operation that changes the
+pitches of music, transposition. In this section we will explain an
+operation that modifies the duration of the notes that you enter.
+When notes are part of a triplet, then the real of duration of the
+notes are 2/3 part of what their shape indicates:
+mudela(fragment)(
+\[/3 c'4 c'4 c'4 \]/1
+)
+
+To support this notion, Mudela allows you to modify the duration of a
+note by multiplication or division. A code(c'4) note that would be in a
+triplet is written as code(c'4*2/3). If you sequence a few of these
+notes, you get a triplet.footnote(We added a normal staff in the example to
+show the difference.)
+mudela(fragment,verbatim)(
+< \type Staff = staffA { c'8*2/3 c'8*2/3 c'8*2/3 c'4}
+ \type Staff = staffB { c''8 c''8 c''4 } >)
+
+LilyPond knows that these notes are no normal eighth notes, but the
+reader doesn't yet. To help the reader a beam or a bracket with a `3'
+should be printed. The special beam command `code([2/3)' and the
+matching close beam `code(]1/1)' will take care of that, and
+they also abbreviate the code(*2/3) part. If you want brackets in
+stead of beams, you can use `code(\[2/3])' and `code(\]1/1)'.
+mudela(fragment,verbatim)(
+< \type Staff = staffA {
+ [2/3 c'8 c'8 c'8 ]1/1
+ \[2/3 c'8 c'8 c'8 \]1/1
+ }
+ \type Staff = staffB { [c''8 c''8 c''8 c''8] }
+>)
+
+Other tuplets can be entered in the same way.
+mudela(fragment,verbatim)(
+< \type Staff = staffA {
+ \time 7/8;
+ [7/6 c'8 c'8 c'8 c'8 c'8 c'8 ]1/1
+ }
+ \type Staff = staffB {
+ \time 7/8;
+ [c''8 c''8 c''8 c''8 c''8 c''8 c''8] } >
+)
+
+For your convenience, code([2/3) can be further abbreviated to code([/3), and
+you can abbreviate code(]1/1) on the closing beam marker to code(]/1).
+
+mudela(fragment,verbatim)(
+< \type Staff = staffA {
+ [/3 c'8 c'8 c'8 ]/1 c'4
+ }
+ \type Staff = staffB { [c''8 c''8] c''4 } >
+)
+
+
+bf(Important) the construct with code([/3) and
+code([/1) is a hack that sets a mode in the parser. This means that
+verb(id = \melodic { c8 c8 c8 }
+notATriplet =\melodic { [2/3 \id ]1/1 })
+does not produce a triplet. It will hopefully
+soon be replaced by a construction that mixes more elegantly with the
+grammar for Music.
+
+
+sect(Shortcuts for octaves)
+label(sec:relativeoctaves)
+
+Plain Mudela contains a lot of quotes to get the octaves right. This
+need for quotes can be reduced: most of the pitch intervals in
+conventional music are small. Therefore, it makes sense to leave out
+the quotes when the interval is small. We have built a mode that does
+exactly this. It is called the relative mode for octaves. You can
+switch it on by entering code(\relative). Then LilyPond will
+interpret every note as if they mean the note with the same name
+closest to the previous. You have to specify the first pitch because
+the first note of a list obviously has no predecessor. So, you can
+enter a scale without using octavation quotes, e.g.,
+
+mudela(fragment,verbatim)(
+ \relative c' { c d e f g a b c }
+)
+
+For chords, the relative mode works slightly differently. In a
+sequence of chords, the first note of a chord gives the starting point
+for the next chord. We can demonstrate this with our twinkle twinkle example
+verb(
+ \relative c' {
+ c4 c <c g'> <c e g>
+ <c e a> <b d a'> <b2 d g>
+ <a4 d f> <bes d f> <bes c e> <g c e>
+ <e a d> <a, g' cis'> <d2 f d'>
+ }
+)
+
+LilyPond converts any music with code(\relative) prepended to absolute
+music immediately when it is read. Internally it is stored it in
+absolute pitches. Since the tutorial mainly deals with how to specify
+musical information, and not how to enter it conveniently, the
+tutorial doesn't use it.
+
+
+sect(Large pieces)
+label(tutorial:large-pieces)
+
+In our quest for a clean and powerfull music language, we took the effort
+of entering some larger pieces of music as well. From this we learned
+certain things that lead to direct improvements of Mudela, such as the
+relative mode. We also gained some practial experience, that resulted in a
+compilation of tips that may be of use to you.
+
+Entering a large piece of music will often imply the need to produce a
+conductor's score, as well as individual parts for all instruments. This
+can most easily be achieved making use of identifiers and including mudela
+files.
+
+subsect(Identifiers)
+
+Briefly introduced before, identifiers are your biggest help in structurising
+a large piece of music. As an example, we'll consider a string quartet.
+In short, it will look like this: verb(
+ global = \melodic{ }
+ violinoOne = \melodic \relative c { .. }
+ violinoTwo = \melodic \relative c { .. }
+ viola = \melodic \relative c { .. }
+ violoncello = \melodic \relative c { .. }
+)
+
+The code(\global) part contains everything that is global, i.e., the
+same, for each instrument. This may include time signature, key, repeat
+signs, different bar types, time signature- and key changes, rehearsal
+marks, etc.
+
+For each instrument, you'll have something vaguely resembling verb(
+ violinoOneStaff = \type Staff = violinoOne <
+ \property Staff.midi_instrument = "violin"
+ \property Staff.instrument = "Violino I"
+ \property Staff.instr = "Vl. I"
+ \global
+ \violinoOne
+ >
+)
+
+
+[Versions, relative mode,
+ barchecks, splitting of files]
+
+subsect(Including Mudela files)
+ref(subsect:include)
+
+You can include other Mudela files with the command code(\include):
+verb(
+\include "paper13.ly"
+\score {
+ ...
+ \paper { \paper_thirteen }
+})
+
+The file is looked for in the standard search path.
+
+
+subsect(Grouping of staffs)
+
+subsect(Versioning)
+
+sect(Titling)
+label(tutorial:titling)
+
+A piece of sheet music isn't complete without proper opening and
+closing titles. LilyPond does not have any real support for setting
+text: that is a job best left to TeX(). But you can pass messages to
+TeX() from the input file. You can write TeX() macros to handle
+these messages.
+To do this, you add a code(\header) block
+to your input file. The format is quite simple,
+
+verb(
+\header{
+ "key" = "value";
+ "key" = "value";
+ "key" = "value";
+ % etc.
+})
+
+When the results of the music typesetting are output, the contents of
+code(\header) are also up into the TeX() file. Tools like
+code(ly2dvi) can use this information to generate pretty titling for
+your input file. Consult the manual page of code(ly2dvi) for more
+details.
+
+
+The code(\header) block should be at toplevel in mudela, and
+preferably at the top of the file. If you have an input file with
+multiple code(\score) blocks, you should add a header to every score,
+describing the different sub parts of the music piece, eg.
+
+
+verb(\header {
+ "composer" = "Ludwig Van Bavaria";
+ "title" = "Symphonie Megalomane";
+ }
+ \score{
+ ... % some music
+ \header { movement = "Mit roher Kraft wild herausfahrend!"; }
+ \paper { }
+ }
+ \score{
+ ... % some more music
+ \header { movement = "Saut\'e comme un oeuf."; }
+ \paper { }
+ }
+)
+
+If you want you can also put the code(\header) block at the top of the
+input file; it will then be put into every output file automatically.
+This will make it clear what the file contains as soon as you open it.
+
+
+
+chapter(Features)
+label(features)
+
+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.
+
+
+This document describes the the GNU LilyPond input format, which is an
+effective language for defining music. We call this language (rather
+arrogantly) The Musical Definition Language or Mudela, for
+short.footnote(If anybody comes up with a better name, we'd gladly
+ take this. Gourlay already uses Musical Description Language,
+ G-Sharp Score Definition Language. ISO standard 10743 defines a
+ Standard Music Description Language. We're not being original here.)
+
+The first aim of Mudela is to define a piece of music, being complete
+from both from a musical typesetting, as from a musical performing
+point of view.
+
+The Musical Definition Language (Mudela), has a logical structure,
+making use of identifiers, that allows for flexible input, and
+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(Files)
+
+The de-facto extension of Mudela is file(.ly). Files may be included by
+entering code(\include) at the start of a line:
+
+verb(
+\include "a_file.ly"
+)
+
+
+sect(Comments)
+
+Line comments are introduced by a
+code(%).
+Block comments are delimited
+by
+code(%{)
+and
+code(%}).
+They do not nest.
+
+
+sect(Versions)
+
+Occasionally, small changes in syntax across different versions of
+Mudela might give syntax errors. To warn you about possible
+incompatibilities, you can specify the Mudela version for which the
+inputfile was written,
+verb(
+\version "0.0.50";
+)
+
+A Python-script which tries to convert to newer versions
+(file(convert-mudela)) is included in the LilyPond distribution.
+
+sect(Keywords)
+
+Keywords are preceded by a backslash: code(\). They contain
+alphabetic characters only.
+
+
+sect(Nesting characters)
+
+Mudela uses the brace, `code({)' and `code(})' for most hierarchical
+structures. For chords the code(<) and the code(>) are used as
+nesting braces.
+
+sect(Constants)
+
+verb(
+"I am a string"
+-1.2e3 % a real
+12 % an int
+)
+
+
+sect(Identifiers)
+
+When assigning identifiers you use
+
+verb(
+string = ...
+)
+
+If you reuse identifiers, then the previous contents will be thrown
+away after the right hand is evaluated, e.g.
+verb(
+bla = \melodic { \bla }
+)
+is legal
+
+When using identifiers they have to be escaped:
+
+verb(
+oboe = \melodic { ... }
+\score{ \melodic { \oboe }}
+)
+
+The left-hand part of the assignment is really a string, so
+verb(
+"Foo bar 4 2 " = \melodic { .. }
+)
+
+is also a valid assignment (but you would have trouble referencing to it)
+
+
+sect(Hierarchical structures)
+
+The general structure consists of declarations:
+verb(
+IDENTIFIER = \TYPE{
+ <type specific data>
+}
+)
+and instantiations:
+
+verb(
+\TYPE{ <type specific data> }
+)
+
+(Currently, code(\score) is the only type that can be instantiated
+at top level.)
+
+Most instantiations that use an IDENTIFIER are specified as follows:
+
+verb(
+\TYPE{ \IDENTIFIER [...] }
+)
+
+Some exceptions on this rule have been made to prevent inputting
+Mudela becoming tedious
+
+sect(Modes:)
+
+To simplify different aspects of music definition (entering the notes
+and manipulating them) Mudela has a number of different input "modes":
+
+description(
+
+
+dit(Normal mode)
+
+At the start of parsing, Mudela assumes normal mode.
+In Normal mode, a word is looked up in the following order:
+description(
+dit(code(word)) string
+dit(code("string")) string
+dit(code(\word)) keyword, identifier
+)
+In normal mode, a word is assumed to start with an alphabetic
+character, followed by alpha-numeric characters.
+
+dit(Note mode) Note mode is introduced by the keyword
+ code(\melodic). In Note mode, a word is looked up in the following
+ order:
+description(
+dit(code(word)) notename, string
+dit(code("string")) string
+dit(code(\word)) keyword, identifier
+)
+
+In Note mode a word is considered to have alphabetic characters only,
+so the underscore (_) is invalid. If you accidently mistype a
+notename, the parser will assume that you are entering a string (and
+it will most 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.
+
+In Lyrics mode, a word is looked up in the following order:
+description(
+dit(code(word)) string (thus a lyric)
+dit(code("string")) string
+dit(code(\word)) keyword, identifier
+)
+
+In Lyric mode every sequence of non-digit and non-white characters
+starting with an alphabetic character or the _ is considered a word.
+
+verb(
+a&@&@&TSI|{[ % a word
+1THtrhortho % not a "word"
+Leise DOEXPAND(Fl\)DOEXPAND("u\)ss{}teren meine Sapfe % 4 words
+_ _ _ _ % 4 words: 4 spaces
+)
+)
+
+These modes are of a lexical nature. Normal and Note mode largely
+resemble each other, save the possibility of entering Reals,
+meaning of code(_) and the resolution of words
+
+
+
+
+
+Durations are entered as their reciprocal values
+mudela(fragment,verbatim,center)(
+a'1 a'2 a'4 a a'8 a a'16 a'32 a'64
+)
+Notice that you only have to specify the duration when it changes: Lily
+assumes a note has the same duration as the previous one.
+
+Now we can already write a little tune
+mudela(fragment,verbatim,center)(
+c' d' e' c' | c' d' e' c' | e' f' g'2
+)
+As you'll probably have guessed,
+the vertical bar code(|) may be used to mark
+measures.
+
+In the scale shown above
+we left-out the last c note of the next octave.
+Postfixing the pitch with a quote code(')
+produces a note by one octave higher
+mudela(fragment,verbatim,center)(
+c c' c''
+)
+
+Postfixing the pitch with a comma, code(,)
+produces a note by one octave lower
+mudela(fragment,verbatim,center)(
+a a, a,,
+)
+
+sect(Slurs and Ties)
+
+A tie connects two adjacent note heads
+
+mudela(fragment,verbatim,center)(
+e' ~ e'
+)
+
+Whereas a slur rather connects `chords',
+and tries to avoid crossing stems
+
+mudela(fragment,verbatim,center)(
+e'( )e'
+)
+
+And of course, such a (legato) slur can span several notes
+mudela(fragment,verbatim,center)(
+c'( d' e' )f'
+)
+
+sect(Beams and Tuplets)
+
+A beam is
+mudela(fragment,verbatim,center)(
+[a'8 a'] [a'16 a' a' a']
+)
+
+Here's a beamed triplet
+mudela(fragment,verbatim,center)(
+[/3 a'8 a' a']/1
+)
+
+a triplet without a beam
+mudela(fragment,verbatim,center)(
+\[/3 a'4 a'8\]
+)
+
+and 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]
+)
+
+sect(Notenames)
+
+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).).
+The default set are the ones we like best are the Dutch notenames.
+
+A sharp is formed by adding code(is)
+mudela(fragment,verbatim,center)(
+cis' dis' eis' fis' gis' ais' bis'
+)
+
+and a flat is formed by adding code(es)
+mudela(fragment,verbatim,center)(
+ces' des' es' fes' ges' as' bes'
+)
+
+With the obvious names for double sharps
+mudela(fragment,verbatim)(
+cisis' disis' eisis' fisis' gisis' aisis' bisis'
+)
+
+and double flats
+mudela(fragment,verbatim)(
+ceses' deses' eses' feses' geses' ases' beses'
+)
+
+
+There are two special `notenames', the rest
+mudela(fragment,verbatim,center)(
+r16 [a' a' a']
+)
+
+and the space
+mudela(fragment,verbatim,center)(
+a'2 s-"diminuendo" | a'
+)
+
+
+sect(Commands)
+
+mudela(fragment,verbatim,center)(
+\clef "bass"; c
+)
+
+and a clef-change
+mudela(fragment,verbatim,center)(
+\clef "treble"; f' e' \clef "alto"; d' c'
+)
+
+mudela(fragment,verbatim,center)(
+\time 3/4; c' g' g' |
+)
+
+mudela(fragment,verbatim,center)(
+\key d;
+g a b cis' d' e' fis' g'
+)
+Note how Mudela allows you to
+convey a musical message and doesn't force you to produce a list of typesetting commands.
+If the music has a code(cis), you type a code(cis).
+Depending on the key and context of the note
+Lily will determine what accidentals to typeset.
+
+A reminder accidental can be forced by
+using an exclamation mark code(!)
+on a pitch a reminder accidental
+mudela(fragment,verbatim,center)(
+cis' d' e' cis' | c'! d' e' c' |
+)
+
+mudela(fragment,verbatim)(
+\time 2/4;
+\bar "|:"; c' c' \bar ":|:"; c' c' \bar ":|"; c' c' \bar "|.";
+)
+
+sect(Chords and Voices)
+
+Here's a simple chord
+mudela(fragment,verbatim,center)(
+<c e g>
+)
+
+here are a few
+mudela(fragment,verbatim,center)(
+<
+ { c'()d'()c' }
+ { e'()f'()e' }
+ { g'()a'()g' }
+>
+)
+
+and similarly voices
+mudela(fragment,verbatim)(
+<
+ { \voiceone c'4 g' c' g' }
+ { \voicetwo c2 g2 }
+>
+)
+
+
+sect(A complete example)
+COMMENT(%label(se:complete))
+
+A Mudela file needs some red tape
+
+mudela(verbatim)(
+\score{
+ \melodic {
+ c' d' e' c' |
+ c' d' e' c' |
+ e' f' g'2 |
+ }
+}
+)
+
+sect(Lyrics)
+
+Lyrics are entered like notes, with pitches substituted
+by text.
+
+All syllables are entered separately, separated by whitespace
+verb(
+Twin-4 kle4 twin-4 kle4 ...
+)
+
+Two syllables or words that compose a single
+duration entry are bound together using an underscore
+verb(
+He_could4 not4
+)
+
+
+COMMENT(
+URG
+ Fr\`e-4 re Ja- que
+ Fr\`e- re Ja- que
+)
+
+mudela(verbatim,center)(
+\score{
+ <
+ \melodic \transpose c'' {
+ c d e c | c d e c |
+ e f g'2 | e'4 f g'2
+ \bar "|.";
+ }
+ \type Lyrics \lyric{
+ DOEXPAND(Fr\)`e-4 re Ja- que
+ DOEXPAND(Fr\)`e- re Ja- que
+ Dor- mez vous?2
+ Dor-4 mez vous?2
+ }
+ >
+}
+)
+
+sect(Composition: forming bigger structures)
+label(sec:grammar)
+
+The computer savy user may be interested in a more formal
+specification. We can capture what have learned about forming
+sentences in Mudela in a context-free grammar.
+
+latexcommand(\smallskip)
+
+table(2)(lll)(
+ row(cell(em(Music))cell(: em(Note)))
+ row(cell()cell(code(|) em(Rest)))
+ row(cell()cell(code(|) code({) em(MusicList) code(})))
+ row(cell()cell(code(|) code(<) em(MusicList) code(>)))
+ row(cell()cell(code(|) em(Command)))
+ row(cell()cell(code(|) code(\type) em(string) code(=) em(string) em(Music)))
+ row(cell()cell(;))
+ row(cell(em(MusicList))cell(: em(empty)))
+ row(cell()cell(code(|) em(MusicList) em(Music)))
+ row(cell()cell(;))
+)
+
+latexcommand(\smallskip)
+
+
+
+
+
+In mathematics you can form expressions by combining expressions,
+which are ultimately some kind of atom or terminal symbol. The same
+goes for Mudela: there are some basic building blocks, and by
+combining those you create complex music.
+
+You can combine music in three ways:
+itemize(
+it()If you enclose a sequence of music-elements in braces ( code({)
+ and code(}) ), then you form another kind of music called
+sequential music
+ with those pieces.
+ The duration of sequential composition is the sum of the durations of its elements
+ verb(
+ { c c g g a a g2 } % twinkle twinkle
+ { { c c g g} { a a g2 } }
+ )
+it()You can stack music by enclosing a sequence of music elements
+ with code(<) and code(>). This is called simultaneous music.
+ The duration of a simultaneous composition is the union of the durations
+ of its elements Example:
+ verb(
+ <a4 {cis8 cis8} e'4> % a-major chord
+ )
+it()You can form music by transposing music:
+ verb(
+ \transpose
+ d % from c to the d that's almost one octave down
+ { e4 f4 } % the horizontal music
+)
+it()verb(\type)
+it()verb(\property)
+it()verb(\translator)
+it()verb(\relative)
+)
+
+Of course you can also combine these three mechanisms.
+verb(
+{ c <c e> <c e g> <c e g \transpose d' dis > } % 4 increasing chords
+)
+
+
+sect(Durations)
+
+A duration always starts with the duration type (1,2,4 etc), and then
+any optional multipliers/dots. `Gregrorian' durations can be entered
+as follows
+verb(
+c'\breve
+gis'\longa
+)
+
+
+
+sect(Time signatures/groupings)
+
+A time signature specification has this form:
+verb(
+\time 3/4 ;
+)
+
+Rhythmic grouping is a concept closely associated with this. For
+example, in a 5/8 time signature, the counts are grouped 2+3. In Mudela this is
+entered as
+verb(
+\grouping 8*2 8*3 ;
+)
+
+You can start the piece with a partial measure, the command takes a
+duration as an argument
+verb(
+\partial 16*3;
+)
+
+Make the piece start with a upstep
+lasting 1 3/4 quarter notes.
+
+These commands constitute `Music', and have a duration of 0.
+
+
+sect(Properties)
+
+By default the same accidentals are valid for all octaves, but
+ this can be changed with the property code(specialaccidentals).
+
+
+The identifier code(\specialkey) sets the property for the Staff. A
+key with two flats in one octave and three
+ sharps in the next can be declared with verb(\specialkey
+\accidentals bes es fis' cis' gis';)
+
+sect(Music fragments)
+label(tutorial:music-fragments)
+
+Sometimes you only need to print a small fragment of music, perhaps
+something much like one of the examples in this document. Back in
+section ref(sec:running-lilypond) we told you that the music you
+enter should be encapsulated in something like:
+verb(
+\score<
+ \melodic\relative c{
+ d
+ }
+ \paper{ }
+ \midi{ }
+>
+)
+where the only interesting information is this particular example is verb(
+ d
+)
+The rest of the above example was already nicknamed `red tape'.
+You may easily get bored if you have to provide this same red tape
+for every fragmenty you nop(try)footnote(Of course, in most cases your
+favourite text editor (TM)
+will help you out.).
+
+Luckily there's a trick around this, and it's called file(.fly) files.
+If you use the extension file(.fly) for Mudela file file(foo),
+LilyPond will embed your file(foo.fly) nop(in)footnote(Or something very
+similar. If you want to know exactly, see file(init/init.fly)):
+verb(
+\score<
+ \melodic\relative c{
+ <<foo.ly>>
+ }
+ \paper{ }
+ \midi{ }
+)
+
+Here's how it works. If you run LilyPond on your file file(bar.ly), you
+may notice that she starts-off by reading quite a number of files before
+she actually reaches your file(bar.ly). There's no magic going on, Lily
+by default reads an initialisation file (file(init/init.ly)). In the
+initialisation process a lot of things are defined that you'll need for
+normal operation, such as notenames and various other mudela shortcuts,
+engraver and perforer definitions, font sizes, musical dimensions and
+paper sizes. When you use the extension file(.fly), Lily just starts
+reading another initialisation file (file(init/init.fly)), that includes the
+red tape for you too.
+
+
+appendix()
+
+chapter(Glossary)
+label(glossary)
+
+This glossary is far from complete. Additions are welcome.
+
+whenlatex(latexcommand(
+ {\parindent -1pc
+ \parskip 0pc\parsep 0pc
+ % COMMENT( from the texbook)
+ \def\length#1{\count0=0 \getlength#1\end}
+ \def\getlength#1{\ifx#1\end \let\next=\relax
+ \else\advance\count0 by1 \let\next=\getlength\fi \next}
+ \def\inlanguage#1#2{{\length{#2}%
+ \ifnum\count0=0
+ \else
+ \emph{#1}: #2.
+ \fi}}
+ \small
+
+ % COMMENT(\def\tableentry#1#2#3#4#5#6#7{\par\textbf{#1}: #7)
+ \def\tableentry#1#2#3#4#5#6#7{\par{\bf #1}: #7
+ \inlanguage{Fran\c cais}{#2}
+ \inlanguage{British}{#4} \inlanguage{Deutsch}{#3}
+ \inlanguage{Nederlands}{#5}\inlanguage{Italiano}{#6}}
+ \input{vocabulary}
+ }
+))
+
+whenhtml(
+ includeverbatim(DOEXPAND(outdir)/vocabulary.html)
+)
+
+whenlatex(latexcommand(
+ \bibliographystyle{plain}
+ \bibliography{engraving}
+))
+
+
+COMMENT(The bib stuff is somewhere else on the WWW site)
+COMMENT(
+setchapterstring{}
+
+whenhtml{
+ nchapter{Bibliography}
+ includeverbatim{out-www/engraving.html}
+})
+
diff --git a/Documentation/tex/other-packages.bib b/Documentation/tex/other-packages.bib
new file mode 100644
index 0000000000..07ab38a4d0
--- /dev/null
+++ b/Documentation/tex/other-packages.bib
@@ -0,0 +1,334 @@
+%
+% TITLE=Software for printing music
+% AUTHOR=HWN
+%
+
+@string(HWN = {Han-Wen Nienhuys})
+@string(JCN = {Jan Nieuwenhuizen})
+
+@misc{Rosegarden,
+ title = {Rosegarden},
+ HTML={http://www.bath.ac.uk/\~masjpf/rose.html},
+ author={Chris Cannam},
+ note={A Notation editor/Sequencer for X. Also outputs musictex.},
+}
+
+
+
+@Misc{graph_music_press,
+ title = {Graphire Music Press},
+publisher={Graphire Corporation} ,
+html={http://www.sover.net/\~graphire/},
+}
+
+@Misc{igor,
+ title = {Igor},
+ note = {Vaporware from Sweden.},
+html={http://www.igortech.pi.se/igor/},
+}
+
+
+@Misc{songw,
+html={www.ars-nova.com},
+title={Songworks},
+publisher={Ars Nova},
+address={Box 637,Kirkland, Washington 98083},
+}
+
+@Manual{byrd:_night,
+html= {http://www.musicwareinc.com/},
+ title = {Nightingale},
+ author = {Donald Byrd},
+}
+
+@Misc{musys,
+ note = {proprietary w32 package in dutch},
+ html ={http://home.wxs.nl/\~musys},
+}
+
+@Misc{bladmuziek,
+ title = {Bladmuziek},
+ note = {proprietary W32 package in dutch},
+ html={http://www.barsukoff.demon.nl},
+}
+
+@misc{CommonNotation,
+ title = {Common Notation},
+ HTML={http://www-ccrma.stanford.edu/CCRMA/Software/cmn/cmn.html},
+ note={A versatile lisp package. Part of the Common Music system. Input is in
+ Lisp.},
+ author={Bill Schottstaedt},
+}
+
+@misc{Vivace,
+ title = {Vivace},
+ author={Garrick Meeker},
+ HTML={http://www.calband.berkeley.edu/\~gmeeker/vivace},
+ note={A amateurish notation program for TclTk and X.},
+}
+
+@misc{MPP,
+ title={mpp},
+ author=JCN # " and " # HWN,
+ note={A preprocessor to MusixTeX.
+ It is outdated by its successor,
+ LilyPond. MPP is still available via the CTAN archive.},
+}
+
+@misc{LilyPond,
+ title = {LilyPond},
+ HTML={http://www.cs.ruu.nl/people/hanwen/lilypond/index.html},
+ author=HWN # " and " # JCN,
+ note={The GNU Project music typesetter. Designed as a batch program,
+ outputs to plain \TeX.
+ Added for completeness. You are currently reading her documentation.},
+}
+
+@misc{Music,
+ title = {Music},
+ HTML={http://www.cs.nott.ac.uk/Department/Staff/ef/printing.html},
+ note={A TROFF preprocessor},
+ author={Eric Foxley},
+}
+
+@misc{PMX,
+ title = {PMX},
+ HTML={http://www.gmd.de/Misc/Music/},
+ author={Don Simons},
+ note={A Preprocessor for MusiXTeX. Developed for DOS, written in FORTRAN.
+ UNIX/C translation available.},
+}
+
+@misc{M-Tx,
+ title = {M-Tx},
+ HTML={http://www.gmd.de/Misc/Music/},
+ author={Dirk Laurie},
+ note={A Predecessor of PMX.},
+}
+
+@misc{Musictex,
+ title = {Musictex},
+ HTML={http://www.gmd.de/Misc/Music/},
+ author={ Daniel Taupin},
+ note={MusicTeX is a macro package for TeX to typeset polyphonic or
+ instrumental music. It was originally written by Daniel Taupin.
+ It includes a full-featured (but slightly unsightly) set of fonts.},
+}
+
+@misc{musixtex1,
+ title = {MusiXTeX},
+ HTML={http://www.gmd.de/Misc/Music/},
+ author={Ross Mitchell and Andreas Egler},
+ note={A rewrite of MusicTeX. After licensing quarrels, MusiXTeX has
+ been split into two (both still non-GNU GPL licensed) branches.},
+}
+
+@misc{musixtex2,
+ title = {MusiXTeX},
+ HTML={http://www.gmd.de/Misc/Music/},
+ author={Daniel Taupin},
+ note={Daniel Taupin now maintains the branch that still carries
+ the name MusiXTeX.},
+}
+
+@misc{OpusTeX,
+ title = {OpusTeX},
+ author={Andreas Egler},
+ HTML={http://www.inf.ethz.ch/personal/acherman/misc.html},
+ note={Andreas Egler's branch of MusiXTeX is now called OpusTeX.},
+}
+
+@misc{ABC2MTeX,
+ title = {ABC2MTeX},
+ HTML={http://www.gre.ac.uk/\~c.walshaw/abc},
+ author={Chris Walshaw},
+ note={A preprocessor to MusixTeX for transcribing folk and
+ traditional music.},
+}
+
+
+@misc{MuTeX,
+ author={Angelika Schofer and Andrea Steinbach.},
+ note={A TeX macro package for typesetting single-staff music. With some
+ fonts. Juicy detail: It comes without license statement and both authors
+ and copyright holders have vanished from the face of the electronic earth,
+ yet it is the predecessor to MusicTeX.},
+ HTML={http://www.gmd.de/Misc/Music/mutex},
+}
+
+@misc{scex,
+ title = {SceX},
+ HTML={http://www.ncc.up.pt/\~mig/SceX.html},
+ author={Miguel Filgueiras},
+ note={A preprocessor to MusixTeX. Source in prolog
+ available on request. (?)},
+}
+
+@misc{calliope,
+ title = {Calliope},
+ author={William F. Clocksin},
+ HTML={http://www.cl.cam.ac.uk/users/wfc/},
+ note={A NeXT package. Requires the Adobe Sonata font},
+}
+
+@misc{Scribe,
+ title = {Scribe},
+ HTML={http://adu1.adu.lattrobe.edu.au/Music/Scribe.html},
+ note={A formatter for medieval scores.},
+}
+
+@misc{Mup,
+ title = {Mup},
+ HTML={http://www.arkkra.com/},
+ note={A program which creates PS from a script input. Although it
+ comes with C source code, it is shareware.},
+ address = {P. O. Box 315 Warrenville, IL 60555 },
+}
+
+@misc{MusicEase,
+ title = {MusicEase},
+ author = {Gary M. Rader},
+ HTML={http://mesa.colorado.edu/\~grader/musicez.html },
+ note={Described in Computer vol 29(6). Shareware},
+}
+
+@misc{LIME,
+ title = {LIME},
+ HTML={http://datura.cerl.uiuc.edu/},
+ author={Lippold Haken and Dorothea Blostein},
+ note={Notation editor for W95 and Mac},
+}
+
+@misc{Sibelius,
+ title = {Sibelius},
+ HTML={http://www.acorn.co.uk/developers/sibelius/Home},
+ note={Notation editor on Acorn machines. Their developers call it ``best
+ notation program available''. In any case,
+ they are good at bragging.},
+}
+
+@misc{schott-urw,
+ title={``EDV-Notensatz''},
+ note={URW's music-engraving system described by [Wanske]. (Although URW
+ used \~DM 1.000.000 while developing this, it didn't buy them a cute name),
+}
+}
+
+@misc{Finale,
+ title={Finale},
+ publisher={Coda music technology},
+}
+
+
+@misc{score,
+ publisher={San Andreas Press},
+ title={Score},
+ author={Leland Smith},
+ HTML={http://www.ymusic.com/Score},
+
+ note={Werner Lemberg (sx0005@sx2.hrz.uni-dortmund.de) writes: I
+ consider SCORE as the best program for typesetting classical
+ music. [..] the price is quite high (about US\$ 1000) [..] It has
+ a graphical interface but to get all out of the program you have to
+ learn a 400 page manual almost by heart because you'll change most
+ features by inputting parameters (up to 20 for some items) on a
+ command line. Expect three months to master SCORE :-)},
+
+}
+
+@misc{mozart,
+ title={Mozart},
+ HTML={http://www.mozart.co.uk/},
+ note={A shareware windows package },
+ author={David Webber},
+}
+
+@misc{Noteworthy,
+ title={Noteworthy},
+ HTML={http://www.ntworthy.com},
+ note={Shareware},
+ publisher={Noteworthy Artware inc.},
+}
+
+@misc{WolfGang,
+ title = {WolfGang},
+ author ={Etienne Darbellay},
+ HTML={http://www.unige.ch/lettres/armus/music/wolfgang.html},
+}
+
+@misc{Amadeus,
+ title = {Amadeus},
+ note={Jerker Elsgard (Jerker.Elsgard@abc.se) writes: professional and
+ expensive (DM 4000, --) engraving. Designed as a batch program (like
+ LilyPond). It is aimed at publishers. Its history is more than
+ fifteen years and Amadeus has been running under different Unix
+ clones. It uses MIDI-keyboard input},
+}
+
+@misc{muse,
+ title={A-R Music Engraving},
+author ={Thomas Hall},
+ publisher={A-R Editions, inc.},
+ note={Professional engraving on
+ Sun boxen.},
+}
+
+@misc{MusiCopy,
+ title = {MusiCopy},
+ author={John S. Gourlay and others},
+ note={A project at Ohio State university, which was discontinued in
+ 1987. The technical reports that have resulted from MusiCopy can
+ still be obtained by writing to OSU department of Computer Science.},
+}
+
+@misc{Berlioz,
+ title = {Berlioz},
+ HTML={http://www.berlioz.tm.fr/},
+author={Dominique Montel},
+ note={ Dominique Montel (a professional engraver) is now working
+ together with computer scientists on his own software for music
+ publishing called "Berlioz". It is proprietary and runs on W95/NT and Mac},
+}
+
+@misc{Sonata,
+ title = {Sonata},
+ HTML={http://www.adobe.com/type/browser/F/F_SONA.html},
+ publisher={Adobe inc.},
+ author={Cleo Huggins},
+ note={The music font by Adobe},
+}
+
+
+@misc{Haskore,
+ title = {Haskore},
+ HTML={http://haskell.systemsz.cs.yale.edu/haskore/onlinetutorial/index.html},
+ author={Paul Hudak},
+ note={A programming system for music, based on Haskell, a functional
+ programming language. It outputs MIDI, CSound, NeXTStep and MusicKit},
+}
+
+% html={http://www.passportdesigns.com},
+@misc{encore,
+ title = {Encore},
+ publisher= {Passport designs},
+}
+
+
+
+@Misc{hoos:_salier,
+ author = {Holger H. Hoos and Thomas Helbich},
+ title = {The Salieri project},
+
+note = {`The SALIERI System is an interactive software environment
+for structure oriented composition, manipulation and analysis of
+music.'},
+ html = {http://www.informatik.tu-darmstadt.de/AFS/CM/SALIERI/},
+}
+
+@Misc{emagic,
+ title = {emagic notator},
+ publisher={emagic, www.emagic.de},
+ html={http://www.mcc.ac.uk/\~emagic/SL/NOTATOR.HTM},
+ note = {A notation product from a company that now focuses on sequencing},
+}
+
diff --git a/Documentation/tex/out/dummy.dep b/Documentation/tex/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/Documentation/tex/out/dummy.dep
+++ /dev/null
diff --git a/Documentation/vocabulary-forms.el b/Documentation/tex/vocabulary-forms.el
index 98a964793a..e948938327 100644
--- a/Documentation/vocabulary-forms.el
+++ b/Documentation/tex/vocabulary-forms.el
@@ -1,9 +1,9 @@
-; Musical vocabularies are Copyright (C) 1993 Free Software Foundation, Inc.
+; Music vocabularies are Copyright (C) 1993 Free Software Foundation, Inc.
; Francois Pinard <pinard@iro.umontreal.ca>,
; Neil Jerram <nj104@cus.cam.ac.uk>.
; Forms by Han-Wen Nienhuys
-(setq forms-file "vocabulary-data")
+(setq forms-file "vocabulary.data")
(setq forms-number-of-fields 7)
(setq forms-read-only nil) ; to make sure
(setq forms-field-sep ":")
@@ -13,8 +13,8 @@
(list
"*** Musical vocabulary ***\n"
"\nItaliano: " 6
- "\nFrancais: " 1
- "\nUS English: " 2
+ "\nFrancais: " 2
+ "\nUS English: " 1
"\nDeutsch: " 3
"\nBritish English: " 4
"\nNederlands: " 5
diff --git a/Documentation/tex/vocabulary.data b/Documentation/tex/vocabulary.data
new file mode 100644
index 0000000000..d62f72b912
--- /dev/null
+++ b/Documentation/tex/vocabulary.data
@@ -0,0 +1,252 @@
+(arbitrary number of bars' rest):bâton de pause:::::
+:comma enharmonique:::::
+:comma pythagoricien:::komma van Pythagoras::
+:comma syntonique:::komma van Didymos, syntonische komma::
+:doigté de pédale:::::
+:doigté:::::
+:fioriture:::cadens:cadenza:
+:indication de pédale:::::
+:mode ecclésiastique:::::
+:pointillés:::::
+A:la:::::
+B:si:::::
+C:do:::C::
+C:ut:::::
+D:ré:::::
+E:mi:::::
+F:fa:::::
+G:sol:::::
+accent:accent:Akzent::accent:accento:
+accident; accidental alteration:altération accidentelle:Vorzeichen::toevallig teken:accidento:
+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:
+arpeggio:arpège, arpègement:Brechungen::gebroken akoord:arpeggio:
+artificial measure:mesure artificielle:::::
+artificial rest:respiration:::::
+ascending interval:intervalle ascendant:::::
+augmented (interval):augmenté (intervalle):::overmatig interval::
+backfall, forefall:accent, chute, port de voix:Vorschlag::korte voorslag:appogiature:
+bar; measure:mesure:::maat, maatstreep::
+baritone:bariton:::bariton::
+barline:barre (de mesure):Taktstrich::maatstreep:stanghetta:
+bass clef:clé de fa:F Schl\"ussel::F sleutel, bas sleutel:chiave di basso:
+bass:basse:::bas::
+beam:barre:Balken::waardestreep/balk:barra:
+beat:temps:::tel::
+binary beat:temps binaire:::tweedelige maatsoort::
+brace:accolade:Klammer:::accolada:Symbol at the start of a system that connects staffs.
+brass::::koper (blazers)::
+cadence:cadence:::cadens::
+chain of trills:chaîne de trilles:::triller::
+character:caractère:::::
+chevron:chevron:::::
+chord of the dominant ninth:accord de neuvième dominante:::dominant noon akkoord::
+chord of the dominant seventh:accord de septième dominante:::septiem akkoord::
+chord:accord:::akkoord::
+chromatic scale:gamme chromatique:::chromatische toonladder::
+chromatic semitone:demi-ton chromatique:::chromatische halve toon::
+chromatic transposition:transposition chromatique:::::
+chromatic type:genre chromatique:::::
+clef:clef:Schl\"ussel::Sleutel:la chiave (pl. le chiavi):
+clef:clé:::sleutel::
+closing angular bracket:::::decrescendo:
+comma:comma:::::
+compound interval:intervalle composé:::::
+compound measure:mesure composée:::::
+conjunct movement:mouvement conjoint:::::
+consonant interval; consonance:consonance:::consonant::
+contralto:contralto:::::
+contro-time:contre-temps:::::
+cue-notes::Stichnoten::stichnoten::
+dash over/below:pizzicato:::::
+degree [of the scale]:degré [de la gamme]:::trap [van de toonladder]::
+descending interval:intervalle descendant:::dalend interval::
+diatonic major scale:gamme diatonique majeure:::diatonische majeur toonladder::
+diatonic minor scale:gamme diatonique mineure:::::
+diatonic semitone:demi-ton diatonique:::diatonische halve toon::
+diatonic type:genre diatonique:::::
+diatonic:diatonique:::diatonisch::A diatonic scale is a scale consisting of whole and half tones.
+diminished (interval):diminué (intervalle):::verminderd (interval)::
+disjunct movement:mouvement disjoint:::::
+dissonant interval; dissonance:dissonance:::dissonant interval; dissonant::
+dominant:dominante:::dominant::A tone that creates tension; usually the fifth degree of the scale.
+dot (augmentation dot) :point:Punkt::punt:punto:
+dot and curved line combined:point et liaison combinés:::::
+dot over/below::::staccato:staccato:
+dot:point:::punt::
+dotted note:note pointée:::::
+double appoggiatura:appogiature double:::::
+double bar line:double barre:Doppeltaktstrich::dubbele streep:doppia barra:
+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 triplet:double triolet:::dubbele triool::
+double whole note:::breve:brevis:breve:
+duplet:duolet:::duool::
+duration:durée:::duur, lengte::
+eighth note:croche::quaver:achtste noot::
+eighth rest:demi-soupir::quaver rest:achtste rust::
+engraving::notenstechen::steken::
+enharmonic intervals:intervalles enharmoniques:::::
+enharmonic notes:notes enharmoniques:::enharmonische noot::
+enharmonic scales:gammes enharmoniques:::::
+enharmonic transposition:transposition enharmonique:::::
+enharmonic type:genre enharmonique:::::
+enharmony:enharmonie:::::
+essential alteration:altération essentielle:::::
+expression mark:signe d'expressoin:Vortragszeichen::voordrachtsteken:segno d'espressione:
+extension of interval:extension d'intervalle:::::
+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:
+four-bar rest:bâton de pause:::::
+fourth:quarte:::kwart::
+glissando:glissement:Glissando::glissando:glissando:
+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 form (diatonic minor scale):forme harmonique:::::
+harmonic interval:intervalle harmonique:::::
+incomplete measure:mesure incomplète:::::
+interval:intervalle:::interval::
+inversion of interval:renversement d'intervalle:::inversie::
+irregular contro-time:contre-temps irrégulier:::::
+irregular group:groupe irrégulier:::::
+irregular measure:mesure irrégulière:::::
+irregular syncopation:syncope irrégulière:::onregelmatige syncope::
+key signature:armure, armature [de la clé], signes des accidentals:Vorzeichen::toonsoort (voortekens):segni di chiave:
+kind of note:figure de note:::::
+kind of rest:figure de silence:::::
+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:
+line:ligne:::lijn::
+long appoggiatura:appogiature longue:::::
+lower number:chiffre inférieur:::::
+major (interval):majeur (intervalle):::groot (interval)::
+major mode:mode majeur:::::
+meantone tuning:tempérament mésotonique:::::
+mediant:médiante:::mediant::The sixth degree of a scale
+melodic cadence:cadence mélodique:::cadens::
+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:::::
+mezzo-soprano:mezzo-soprano:::::
+middle C clef:clé d'ut:::C sleutel, alt sleutel:chiave di tenore:
+middle C:do central:::centrale C::
+minor (interval):mineur (intervalle):::::
+minor mode:mode mineur:::::
+modal note:note modale:::::
+mode:mode:::::
+modulation:modulation:::modulatie::
+mordent:mordant, pinc\'e:Pralltriller, Mordent::mordent:mordente:
+motive:incise:::motief::
+musical ladder:échelle musicale:::::
+natural sign:bécarre:Aufl\"osungszeichen::herstellingsteken:bequadro:
+ninth::::noon::
+note head::Notenkopf::noot balletje::
+note:note:Note::noot:nota:
+octave line:clé d'octave:::::
+octave line:échelle d'octave:::::
+octave sign:octave:Oktave:::ottava:
+octave:octave:::octaaf::
+opening angular bracket:::::crescendo:
+ornament, embellishment; accessory:agr\'ement, ornement:Verzierungen:::fiorette, fioriture, abbellimenti:
+part::::partij::
+pause:pause:Luftpause::::
+pause:point d'orgue:::::
+perfect (interval):juste (intervalle):::rein (interval)::
+perfect major chord:accord parfait majeur:::::
+perfect minor chord:accord parfait mineur:::::
+phrase member:membre de phrase:::::
+phrase:phrase:::::
+phrasing:phrasé:::::
+pitch pipe; tuning fork:diapason:::stemfluitje; stemvork::
+pitch:hauteur:::toonhoogte::
+quadruplet:quartolet:::kwartool::
+quarter note:noire::crotchet:kwartnoot::
+quarter rest:soupir::crotchet rest:kwart rust::
+register:registre:::register::
+regular contro-time:contre-temps régulier:::::
+regular syncopation:syncope régulière:::::
+relative scales:gammes relatives, tons relatifs:::::
+repeat:barre de reprise:::herhaling::
+rest:silence:::::
+rest:soupir:Pause::rust:pausa:
+return sign:renvoi:::herstellingsteken::
+rhythm:rythme:Rhythmus::ritme::
+rhythmic curve:courbe rythmique:::::
+scale:gamme:::toonladder::
+score:partition:::partituur::
+second:seconde::::secunde:
+semitone:demi-ton:::halve toon::
+seventh:septième:::septiem:septime:
+sextuplet:sextolet:::sextool::
+sextuplet:sixain:::sextool::
+shading signs:signes indicateurs de nuance:::::
+shading:nuance:::::
+sharp:dièse:::kruis::
+short appoggiatura:appogiature brève:::::
+simple appoggiatura:appogiature simple:::::
+simple interval:intervalle simple:::::
+simple measure:mesure simple:::::
+sixteenth note:double croche::semiquaver:zestiende noot::
+sixteenth rest:quart de soupir::semiquaver rest:zestiende rust::
+sixth:sixte:::sext::
+sixty-fourth note:quadruple croche::hemidemisemiquaver:vierenzestigste noot::
+sixty-fourth rest:seizième de soupir::hemidemisemiquaver rest:::
+slur:liason, coulé:Bindungzeichen, Bindebogen::binding, bindingsboog:legatura:
+soprano:soprano:::sopraan::
+space:espace:::::
+staff:portée:::(noten)balk; partij::pl staves or staffs
+stem:queue:Stiel, Hals::stok:asta, gamba:
+strings::::strijkers::
+strong beat:temps fort:::thesis::
+subdominant:sous-dominante:::::
+subtonic:sous-tonique:::::
+superdominant:sus-dominante:::::
+supertonic:sus-tonique:::::
+syncopation; upbeat:syncope:::syncope::
+system:syst\`eme:System::systeem:sitema:
+tempered tuning:tempérament égal:::getempereerde stemming::
+tempo indication:signes de temps:Zeitmasse, Tempobezeichnung::tempo aanduiding:segno di tempo:
+tempo; movement:mouvement:::::
+tenor:ténor:::::
+tenth::::deciem:decime:
+ternary beat:temps ternaire:::driedelige maatsoort::
+tetrachord:tétracorde:::::
+third:tierce:::terts::
+thirty-second note:triple croche::demisemiquaver:32e noot::
+thirty-second rest:huitième de soupir::demisemiquaver rest:32e rust::
+tie:liaison:Bindung::overbinding:legatura:A curve that shows the prolongation (as opposed to the repetition fo a note)
+time signature:chiffrage (chiffres indicateurs), signe de valeur:Taktvorzeichnung, Taktvorzeichen::maatsoort:segni di tempo:
+tonal note:note tonale:::::
+tonality:tonalité:::tonaliteit::
+tone:ton:::toon::
+tonic:tonique:::tonica::
+transposition:transposition:::transpositie::
+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:
+triplet:triolet:::::
+tritone:triton:::::
+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:
+unit of beat:unité de temps:::::
+unit of measure:unité de mesure:::::
+upper number:chiffre supérieur:::::
+voice:voix:::stem::
+weak beat:temps faible:::arsis::
+whole note:ronde::semibreve:hele noot::
+whole rest:pause::semibreve rest:::
+woodwind::::houtblazers::
diff --git a/Documentation/topdocs/AUTHORS.yo b/Documentation/topdocs/AUTHORS.yo
new file mode 100644
index 0000000000..b1c6ec64bd
--- /dev/null
+++ b/Documentation/topdocs/AUTHORS.yo
@@ -0,0 +1,51 @@
+article(AUTHORS - who did what on GNU LilyPond?)()()
+
+This file lists authors of GNU LilyPond, and what they wrote.
+This list is alphabetically ordered.
+
+itemize(
+it()nemail(Mats Bengtsson)(matsb@s3.kth.se),
+ lurl(http://www.s3.kth.se/~matsb)
+ clef stuff, key stuff, swedish notenames, testing, general
+ comments.
+it()nemail(Eric Bullinger)(eric@aut.ee.ethz.ch),
+ accidental transposition.
+it()nemail(Jan Arne Fagertun)(Jan.A.Fagertun@energy.sintef.no),
+ TeX titling and lytodvi.sh
+it()nemail(Anthony Fok)(foka@debian.org),
+ debian package: debian/*
+it()nemail(Neil Jerram)(nj104@cus.cam.ac.uk).
+ parts of Documentation/Vocab*
+it()Donald Ervin Knuth, lurl(http://www.cs-staff.stanford.edu/~knuth)
+ mf/ital-*.mf (these were taken from the CM fonts)
+it()nemail(Werner Lemberg)(xlwy01@uxp1.hrz.uni-dortmund.de),
+ misc bugfixes, some Beam and Stem code.
+it()nemail(David R. Linn)(drl@vuse.vanderbilt.edu),
+ Mailing list maintenance.
+it()nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl),
+ lurl(http://www.cs.uu.nl/~hanwen)
+ nl()
+ Main author.
+it()nemail(Jan Nieuwenhuizen)(janneke@gnu.org),
+ lurl(http://www.digicash.com/~jan)
+ nl()
+ Main author
+it()nemail(Alexandre Oliva)(oliva@dcc.unicamp.br),
+ lurl(http://sunsite.unicamp.br/~oliva)
+ testing
+it()nemail(Franc,ois Pinard)(pinard@iro.umontreal.ca),
+ parts of Documentation/Vocab*, started internationalization stuff
+it()nemail(Jeffrey B. Reed)(daboys@bga.com),
+ Windows-NT support.
+it()Shay Rojanski
+ Some mudela source.
+)
+
+
+Your name could be here! If you want to help, then take a look at the
+SMALLISH PROJECTS section of in the file file(TODO). Some do not involve
+coding C++
+
+[And of course we sincerely thank J.S.Bach, F.Schubert, T. Merula and
+W.A.Mozart for their beautiful music]
+
diff --git a/Documentation/topdocs/INSTALL.yo b/Documentation/topdocs/INSTALL.yo
new file mode 100644
index 0000000000..19716b51d6
--- /dev/null
+++ b/Documentation/topdocs/INSTALL.yo
@@ -0,0 +1,298 @@
+article(INSTALL - compiling and installing GNU LilyPond)(HWN & JCN)()
+
+sect(ABSTRACT)
+
+You do something which looks remotely like
+verb(
+ configure # Check out the buildscripts/set-lily.sh script
+ make
+ make install
+)
+
+The detailed instructions follow here. The
+file(buildscripts/set-lily.sh) script sets some environment variables
+and symlinks, which comes in handly when you have to compile LilyPond
+very often. It is aimed at people who run (or debug) LilyPond without
+installing.
+
+sect(PREREQUISITES)
+
+For compilation you need:
+
+itemize(
+it()A GNU system: GNU LilyPond is known to run on these GNU systems: Linux
+ (PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and
+Solaris.
+
+Although we recommend to use Unix, LilyPond is known to run on Windows
+NT/95/98 as well. See Section ref(w32).
+
+it() GNU C++ version 2.7 or newer (2.8 and egcs are also fine).
+it() Python 1.5
+)
+
+sect(RUNNING)
+
+GNU LilyPond does use a lot of resources. For operation you need the following:
+
+itemize(
+it()TeX
+it()A PostScript printer and/or viewer (such as Ghostscript) is strongly
+ recommended. Xdvi will show all embedded PostScript too if you have
+ Ghostscript installed.
+)
+
+sect(RECOMMENDED)
+
+Although not strictly necessary, these are recommended to have.
+
+itemize(
+it()GNU make.
+it()Flex (version 2.5.4 or newer).
+it()Bison (version 1.25 or newer).
+it()Python (version 1.5 or newer).
+it()Yodl. All documentation will be in Yodl. (1.30.17)
+lurl(ftp://pcnov095.win.tue.nl/pub/yodl)
+ lurl(http://www.cs.uu.nl/~hanwen/yodl)
+it()Texinfo. (version 3.12 or newer)
+
+it()GNU find
+it() A fast computer (a full page of music typically takes 1 minute on my
+ 486/133, using the bf(--enable-checking) compile. It's lot slower than
+ most MusiXTeX preprocessors)
+)
+
+sect(WEBSITE)
+
+If you want to auto-generate Lily's website, you'll need some additional
+conversion tools.
+
+itemize(
+it()xpmtoppm (from the Portable Bitmap Utilities) (For RedHat Linux
+ users: it is included within the package libgr-progs).
+it()Bib2html lurl(http://pertsserver.cs.uiuc.edu/~hull/bib2html.)
+ Which, in turn depends on man2html for proper installation.
+man2html can be had from lurl(http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05).
+
+ TeTeX users should not forget to rerun texhash.
+)
+
+sect(CONFIGURING and COMPILING)
+
+to install GNU LilyPond, simply type:
+verb(
+ configure --enable-tex-dir=XXXX --enable-mf-dir=YYYY
+ make
+ make install
+)
+
+This will install a number of files, something close to:
+verb(
+ /usr/local/man/man1/mi2mu.1
+ /usr/local/man/man1/convert-mudela.1
+ /usr/local/man/man1/mudela-book.1
+ /usr/local/man/man1/lilypond.1
+ /usr/local/bin/lilypond
+ /usr/local/bin/mi2mu
+ /usr/local/share/lilypond/*
+ /usr/local/share/locale/{it,nl}/LC_MESSAGES/lilypond.mo
+ /usr/lib/texmf/texmf/tex/lilypond/*
+)
+
+
+You should specify directories that are in TeX()'s and MetaFont's
+include path with the options (--enable-tex-dir) and
+bf(--enable-mf-dir). If you don't specify any directories, the TeX()
+include directory is detected dynamically, which is unreliable. The
+above assumes that you are root and have the GNU development tools,
+and your make is GNU make. If this is not the case, you can adjust
+your environment variables to your taste:
+
+verb(
+ export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR"
+ configure
+)
+
+code(CPPFLAGS) are the preprocessor flags.
+
+The configure script is Cygnus configure, and it will accept
+bf(--help). If you are not root, you will probably have to make it
+with a different bf(--prefix) option. Our favourite location is
+
+verb(
+ configure --prefix=$HOME/usr
+)
+
+In this case, you will have to set up MFINPUTS, and TEXINPUTS accordingly.
+
+If you want to install GNU LilyPond in file(/usr/local), and your TeX has
+no default hooks for local stuff, you can do:
+
+verb(
+ configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf
+)
+
+Since GNU LilyPond currently is beta, you are advised to also use
+
+verb(
+ --enable-debugging
+ --enable-checking
+)
+
+Other options include:
+
+description(
+dit(bf(--enable-shared))
+ Make a shared library (gnu/linux, solaris (?) only ) (TEMPORARILY
+OUT OF ORDER)
+
+dit(bf(--enable-printing))
+ Enable debugging print routines (lilypond bf(-D) option)
+dit(bf(--enable-optimise))
+ Set maximum optimisation: compile with bf(-O2)
+dit(bf(--enable-profiling))
+ Compile with support for profiling.
+dit(bf(--enable-tex-prefix))
+ Set the directory where TeX and Metafont live.
+dit(bf(--enable-tex-dir))
+ Set then directory TeX input is in (detected as a subdir of
+ tex-prefix). This should be a directory that is reachable both for
+ tex and latex. On my system the best choice would be
+ file(/usr/lib/texmf/texmf/tex/generic//).
+dit(bf(--enable-mf-dir))
+ Set the directory metafont input is in (idem). On my system the best
+ choice would be file(/usr/lib/texmf/texmf/fonts/source/public/).
+dit(bf(--enable-config))
+ Output to a different configuration file. Needed for multi-platform
+ builds
+)
+
+All options are documented in the file(configure) help
+The option bf(--enable-optimise) is recommended for Real Life usage.
+
+If you do
+
+verb(
+ make all
+)
+
+everything will be compiled, but nothing will be installed. The
+resulting binaries can be found in the subdirectories file(out/) (which
+contain all files generated during compilation).
+
+sect(CONFIGURING FOR MULTIPLE PLATFORMS)
+
+If you want to compile LilyPond with different configuration settings,
+then, you can use the bf(--enable-config) option. Example: suppose I
+want to build with and without profiling. Then I'd use the
+following for the normal build,
+
+verb(
+ configure --prefix=~ --disable-optimise --enable-checking
+ make
+ make install
+ )
+
+and for the profiling version, I specify a different configuration.
+
+verb(
+ configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking
+ make configuration=optprof
+ make configuration=optprof install
+)
+
+
+sect(INSTALLING)
+
+If you have done a successful code(make), then a simple
+
+verb(
+ make install
+)
+
+should do the trick.
+
+If you are doing an upgrade, please remember to remove obsolete
+file(.pk) and file(.tfm) files of the fonts. A script has been
+provided to do the work for you, see file(bin/clean-fonts.sh).
+
+nsect(CAVEATS)
+
+itemize(
+it()The -O2 option to gcc triggers a gcc bug on DEC Alpha in dstream.cc. You
+ should turn off this flag for this file.
+)
+
+nsect(EXAMPLE)
+
+This is what I type in my xterm:
+
+verb(
+ lilypond someinput.ly
+ tex someinput.tex
+ xdvi someinput&
+)
+
+This is what the output looks like over here:
+
+verb(
+ GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0
+ Parsing ... [/home/hw/share/lilypond/init//
+ <..etc..>
+ init//performer.ly]]][input/kortjakje.ly]
+ Creating elements ...[8][16][24][25]
+ Preprocessing elements...
+ Calculating column positions ... [14][25]
+ Postprocessing elements...
+ TeX output to someinput.tex ...
+ Creating MIDI elements ...MIDI output to someinput.midi ...
+
+
+ hw:~/musix/spacer$ xdvi someinput&
+ [1] 855
+)
+
+Check out the input files, some of them have comments
+Please refer to the man page for more information.
+
+sect(REDHAT LINUX)
+
+RedHat Linux users can compile an RPM. A spec file is in
+file(make/out/lilypond.spec). You should install a gif file called
+file(lelie_icon.gif) along with the sources. You can generate this
+gif file by typing
+
+verb(
+ make gifs
+)
+
+in the directory file(Documentation).
+
+You can make the rpm by issuing
+
+verb(
+ make rpm
+)
+
+
+sect(DEBIAN GNU/LINUX)
+
+A Debian package is also available; contact Anthony Fok
+email(foka@debian.org). The build scripts are in the subdirectory file(debian/)
+
+
+sect(WINDOWS NT/95)
+label(w32)
+
+
+Separate instructions on building for W32 are avaible
+url(in the file README-W32.yo)(../../DOEXPAND(outdir)/README-W32.html).
+
+sect(AUTHORS)
+
+nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl)
+
+nemail(Jan Nieuwenhuizen)(janneke@gnu.org)
+
+
+Have fun!
diff --git a/Documentation/topdocs/Makefile b/Documentation/topdocs/Makefile
new file mode 100644
index 0000000000..c8c180d1d2
--- /dev/null
+++ b/Documentation/topdocs/Makefile
@@ -0,0 +1,31 @@
+# Documentation/topdocs/Makefile
+
+depth = ../..
+
+SUBDIRS=
+
+include $(depth)/make/Stepmake.make
+include $(depth)/make/Lilypond.make
+
+default: do-doc
+
+BLURBS=BLURB COPERTINA FLAPTEKST
+# INFO_FILES = $(outdir)/$(package).info
+
+include $(stepdir)/Documentation.shared.make
+
+# urg
+$(outdir)/%.html: %.yo
+ $(YODL2HTML) -doutdir=$(outdir) --live-data=3 -o $@.in $<
+ $(sed-version) < $@.in > $@
+ rm -f $@.in
+ $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=index.html --news=$(depth)/NEWS $@
+
+local-WWW:
+ -cp $(outdir)/*gif $(outdir)/index.html $(depth) # don't fail if not making website
+
+
+TO_TOP_FILES=$(addprefix $(outdir)/, $(README_TOP_FILES))
+copy-to-top:
+ $(foreach i, $(TO_TOP_FILES), \
+ cp $(i) $(depth)/ && ) true
diff --git a/Documentation/topdocs/PATCHES.yo b/Documentation/topdocs/PATCHES.yo
new file mode 100644
index 0000000000..87a328b11f
--- /dev/null
+++ b/Documentation/topdocs/PATCHES.yo
@@ -0,0 +1,130 @@
+nsect(NAME)
+
+PATCHES - track and distribute your code changes
+
+nsect(DESCRIPTION)
+
+This page documents how to distribute your changes to GNU lilypond
+(or in fact any other StepMake package).
+
+nsect(ABSTRACT)
+
+Distributing a change normally goes like this:
+
+itemize(
+it()make your fix/add your code
+it()Add changes to NEWS, and add yourself to Documentation/AUTHORS.yo
+it()generate a patch,
+it()e-mail your patch to one of the mailing lists
+ gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org
+)
+
+nsect(GENERATING A PATCH)
+
+In file(VERSION), set MY_PATCH_LEVEL:
+
+verb(
+ VERSION:
+ ...
+ MY_PATCH_LEVEL=jcn1
+)
+
+In file(NEWS), enter a summary of changes:
+
+verb(
+ NEWS:
+ pl 0.1.73.jcn1
+ - added PATCHES.yo
+)
+
+Then, from the top of Lily's source tree, type
+
+verb(
+ make diff
+)
+
+which leaves your patch as file(./lilypond-0.1.73.jcn1.diff).
+
+If you didn't configure Lily using --srcdir, you can do:
+
+verb(
+ make release
+
+ tar-ball: ../patches/lilypond-0.1.73.jcn1.gz
+ patch: ../patches/lilypond-0.1.73.jcn1.gz
+ updeet: ../test/updeet
+)
+
+nsect(PREREQUISITES)
+
+For creating a patch you need
+
+itemize(
+it()All items mentioned in file(INSTALL). You're not going to send a patch
+ that you haven't even built, right?
+it()GNU diff
+it()Python (version 1.5 or newer).
+ You can of course make a patch by hand, which would go something like:
+
+verb(
+ make distclean
+ cd ..
+ diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1
+)
+
+but there are handy python scripts available. If you're doing development,
+you'll need Python for other LilyPond scripts anyway.
+
+it()The Lily directory structure, which looks like:
+
+includefile(../../stepmake/Documentation/layout.yo)
+)
+
+nsect(APPLYING PATCHES)
+
+If you're following LilyPond development regularly, you probably want to
+download just the patch for each subsequent release.
+After downloading the patch (into the patches directory, of course), simply
+apply it:
+
+verb(
+ gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E
+)
+
+and don't forget to make automatically generated files:
+
+verb(
+ autoconf footnote(patches don't include automatically generated files,
+ i.e. file(configure) and files generated by file(configure).)
+
+ configure
+)
+
+nsect(SYNCHRONISE)
+
+If you're not very quick with sending your patch, there's a good chance
+that an new release of LilyPond comes available. In such a case (and
+sometimes for other unkown reasons :-), the maintainer will probably ask
+you to make a new patch against the latest release.
+Your best bet is to download the latest release, and apply your patch
+against this new source tree:
+
+verb(
+ cd lilypond-0.1.74
+ gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E
+ autoconf
+ configure
+)
+
+Then, make a patch as shown above.
+
+nsect(SEE ALSO)
+
+file(stepmake/INSTALL.txt)
+
+nsect(MAINTAINER)
+
+nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl)
+
+Just keep on sending those patches!
+
diff --git a/Documentation/topdocs/README.yo b/Documentation/topdocs/README.yo
new file mode 100644
index 0000000000..9b6b21dd9b
--- /dev/null
+++ b/Documentation/topdocs/README.yo
@@ -0,0 +1,93 @@
+COMMENT(-*-Text-*-)
+DEFINEMACRO(Package)(0)(LilyPond) DEFINEMACRO(package)(0)(lilypond)
+COMMENT( ^^^^ Slaat dit ergens op?)
+
+
+redef(XXsetchapternum)(0)()
+
+This is the toplevel README to Package()
+
+includefile(../BLURB.in)
+
+sect(VERSIONING)
+
+if you have downloaded a
+
+ *.pre*
+
+version, then this is version is *not* meant for producing nice output
+(but to keep your patchsets up to date). It might not even compile.
+
+
+sect(REQUIREMENTS)
+
+For the compilation and running of Package() you need some additional
+packages. Please refer to the installation instructions.
+
+NOTE: If you downloaded a binary (.rpm or a W95/NT .zip file), then
+you don't have to compile Package().
+
+
+sect(INSTALLATION)
+
+For your convenience, a formatted copy of the INSTALL instructions are
+in the toplevel directory, as INSTALL.txt
+
+The process is fairly straightforward, but chances are that you have
+to specify directories for TeX() to code(configure): this is done with
+the options code(--enable-tex-dir) and code(--enable-mf-dir)
+
+
+sect(DOCUMENTATION)
+
+The real documentation is the directory Documentation/
+
+To generate the pretty-printed docs, you have to run code(configure) first,
+and then do this:
+
+ make doc
+
+You can also simply read the .yo sources. They are ASCII text.
+The complete documentation is accessible in formatted form at the
+website lurl(http://www.cs.uu.nl/people/hanwen/lilypond/index.html)
+
+
+sect(COMMENTS)
+
+Package() is a long way from finished and polished. We do appreciate
+criticism, comments, bugreports, patches, etc.
+
+ Please send your e-mail to one of the MAILING LISTS
+
+and not to us personally. See file(Documentation/links.yo) for more info.
+
+
+sect(DOZE)
+
+If you have received this file as part of a DOS/Window32 distribution
+(package()-*.zip), then it is advisable to also download the source
+package, since it might contain more documentation
+lurl(ftp://pcnov095.win.tue.nl/pub/package()/)
+
+If you decide to build Package() from source, please read the INSTALL.txt
+document first, especially the Windows NT/95 section.
+
+
+sect(CAVEATS)
+
+* Please read the file BUGS for some ugly bugs. This especially applies
+Linux-Intel unix users.
+
+* If you have installed a previous version, be sure to remove old font
+files, eg
+verb(rm `find /var/lib/texmf/fonts -name 'feta*'`)
+
+a script to do this for you is in file(bin/cleanfonts.sh)
+
+
+sect(CDROM DISTRIBUTIONS)
+
+If you have received Package() on a cdrom, chances are that development
+has moved a some patchlevels up. If possible, please check the latest
+version of Package() before reporting bugs.
+
diff --git a/Documentation/topdocs/index.yo b/Documentation/topdocs/index.yo
new file mode 100644
index 0000000000..04eef033ca
--- /dev/null
+++ b/Documentation/topdocs/index.yo
@@ -0,0 +1,78 @@
+DEFINEMACRO(depth)(0)(.)
+DEFINEMACRO(docdir)(0)(Documentation)
+DEFINEMACRO(pic)(1)(url(ARG1)(DOEXPAND(docdir)/pictures/DOEXPAND(outdir)/ARG1.gif
+))
+
+
+nsect(LilyPond -- The GNU Project Music Typesetter)
+
+includefile(../BLURB.in)(url(italiano)(DOEXPAND(docdir)/DOEXPAND(outdir)/COPERTINA.html))(url(nederlands)(DOEXPAND(docdir)/DOEXPAND(outdir)/FLAPTEKST.html))
+nl()
+pic(screenshot)
+
+center(mudela(fragment)(
+ \relative c'' { \key es; r8 [c16 b] [c8 g] [as c16 b] [c8 d] | g,4 }
+))
+
+nsubsect()
+
+Hmm, this is what it said yesterday too. I just want to know
+url(What's new)(DOEXPAND(docdir)/DOEXPAND(outdir)/NEWS.html) today and then COMMENT(
+url(Download)(ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz) LilyPond.
+perhaps lily/VERSION, i.e. without my-patch-level would be best...
+)url(Download)(ftp://pcnov095.win.tue.nl/pub/lilypond/development/) LilyPond.
+
+nsubsect(Introduction)
+
+This is not a Fanmail/Hype page. These pages were entirely created from
+the LilyPond package-sources.
+
+A document on LilyPond's music description language Mudela is
+url(in the making)(DOEXPAND(docdir)/tex/DOEXPAND(outdir)/mudela.html).
+
+Note: These pages are created from the latest bf(development snapshots)
+of LilyPond, specifically, this page was made from LilyPond
+@TOPLEVEL_VERSION@.tar.gz
+
+nsect(Sites)
+
+description(
+dit(lurl(http://www.cs.uu.nl/people/hanwen/lilypond/))Han-Wen's site.
+dit(lurl(http://www.digicash.com/~jan/lilypond/))Jan's site.
+)
+
+nsubsubsect(Mirrors)
+description(
+dit(lurl(http://sca.uwaterloo.ca/lilypond/))
+ Eric Praetzel was kind enough to provide a mirror of both the website
+ and the ftp site.
+)
+
+nsubsect(Examples)
+
+itemize(
+it()url(short examples of what LilyPond can do: MIDI, PS, .gif and input.)
+(DOEXPAND(depth)/input/DOEXPAND(outdir)/index.html)
+it()url(examples of what LilyPond can do with real music: MIDI, PS, .gif and input)(DOEXPAND(depth)/mutopia/DOEXPAND(outdir)/index.html)
+)
+
+nsubsect(NEWS)
+
+This is what the latest version brings:
+verb(
+top_of_NEWS
+)
+
+COMMENT(
+Go get it at lurl(ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz)
+)
+Go get it at lurl(ftp://pcnov095.win.tue.nl/pub/lilypond/development/)
+
+nsubsect(Documentation)
+
+itemize(
+it()url(All of the LilyPond documentation.)(DOEXPAND(docdir)/DOEXPAND(outdir)/index.html)
+it()url(The DOC++ documentation of the C++ sources.)(DOEXPAND(depth)/docxx/index.html)
+)
+
+@COUNTER_REF@
diff --git a/Documentation/topdocs/scherm.in b/Documentation/topdocs/scherm.in
new file mode 100644
index 0000000000..005b6451c3
--- /dev/null
+++ b/Documentation/topdocs/scherm.in
@@ -0,0 +1,16 @@
+18:46:03 mub ~/lelie$ lilypond twinkle
+GNU LilyPond 0.1.78/FlowerLib 1.1.44.
+Ontleden...[/home/fred/usr/src/lilypond/init/init.ly[/home/fred/usr/src/lilypond/init/declarations.ly[/home/fred/usr/src/lilypond/init/dynamic.ly][/home/fred/usr/src/lilypond/init/nederlands.ly][/home/fred/usr/src/lilypond/init/script.ly][/home/fred/usr/src/lilypond/init/paper20.ly[/home/fred/usr/src/lilypond/init/table20.ly][/home/fred/usr/src/lilypond/init/table13.ly][/home/fred/usr/src/lilypond/init/table16.ly][/home/fred/usr/src/lilypond/init/params.ly[/home/fred/usr/src/lilypond/init/a4.ly][/home/fred/usr/src/lilypond/init/paper.ly][/home/fred/usr/src/lilypond/init/engraver.ly]]][/home/fred/usr/src/lilypond/init/midi.ly[/home/fred/usr/src/lilypond/init/performer.ly]][/home/fred/usr/src/lilypond/init/property.ly]][/home/fred/usr/src/lilypond/input/twinkle.ly]]
+Vertolken van muziek...[8][16][24][25]
+duur: 1.34 seconden
+Voorbewerken van elementen... [/home/fred/usr/src/lilypond/mf/out/feta20.afm]
+Berekenen van kolomposities... [3][6][9][12][15][18][21][24][25]
+geschat: 231 regels (van gemiddeld 21.4 kolommen)
+exact berekend: 66 regels (van gemiddeld 25.5 kolommen)
+duur: 6.11 seconden
+Nabewerken van elementen...
+TeX uitvoer naar twinkle.tex...
+
+Vertolken van muziek...
+duur: 0.22 seconden
+MIDI uitvoer naar twinkle.midi...
diff --git a/Documentation/topdocs/schermo.in b/Documentation/topdocs/schermo.in
new file mode 100644
index 0000000000..b4fb407537
--- /dev/null
+++ b/Documentation/topdocs/schermo.in
@@ -0,0 +1,16 @@
+18:37:15 mub ~/lelie$ lilypond twinkle
+GNU LilyPond 0.1.78/FlowerLib 1.1.44.
+Analizzare...[/home/fred/usr/src/lilypond/init/init.ly[/home/fred/usr/src/lilypond/init/declarations.ly[/home/fred/usr/src/lilypond/init/dynamic.ly][/home/fred/usr/src/lilypond/init/nederlands.ly][/home/fred/usr/src/lilypond/init/script.ly][/home/fred/usr/src/lilypond/init/paper20.ly[/home/fred/usr/src/lilypond/init/table20.ly][/home/fred/usr/src/lilypond/init/table13.ly][/home/fred/usr/src/lilypond/init/table16.ly][/home/fred/usr/src/lilypond/init/params.ly[/home/fred/usr/src/lilypond/init/a4.ly][/home/fred/usr/src/lilypond/init/paper.ly][/home/fred/usr/src/lilypond/init/engraver.ly]]][/home/fred/usr/src/lilypond/init/midi.ly[/home/fred/usr/src/lilypond/init/performer.ly]][/home/fred/usr/src/lilypond/init/property.ly]][/home/fred/usr/src/lilypond/input/twinkle.ly]]
+Interpretare musica...[8][16][24][25]
+durata: 1.36 secondi
+Preprocessare elementi... [/home/fred/usr/src/lilypond/mf/out/feta20.afm]
+Calcolare posizioni di colonne... [3][6][9][12][15][18][21][24][25]
+approssimato: 231 linee (con una media di 21 colonne):
+calcolato esattamente: 66 linee (con una media di 25 colonne)
+durata: 6.14 secondi
+Postprocessare elementi...
+Prodotto di TeX verso twinkle.tex...
+
+Interpretare musica...
+durata: 0.21 secondi
+Prodotto di MIDI verso twinkle.midi...
diff --git a/Documentation/topdocs/topweb.yo b/Documentation/topdocs/topweb.yo
new file mode 100644
index 0000000000..64bd836383
--- /dev/null
+++ b/Documentation/topdocs/topweb.yo
@@ -0,0 +1 @@
+whenhtml(htmlcommand(<meta http-equiv=refresh content="0; url=Documentation/topdocs/out-www/index.html">))
diff --git a/Documentation/topinfo.yo b/Documentation/topinfo.yo
new file mode 100644
index 0000000000..017486895f
--- /dev/null
+++ b/Documentation/topinfo.yo
@@ -0,0 +1,37 @@
+
+node()(Top)(Copying)((dir))
+
+menu(
+mit(Copying)( Your rights.)
+mit(Programs)( Your softs.)
+mit(Mutopia)( Your music.)
+mit(Concept Index)( Your index.)
+)
+
+node(Top)(Copying)(Programs)(Top)
+chapter(COPYING)
+LilyPond is Free Software. See file(COPYING) for details.
+
+node(Copying)(Programs)(convert-mudela)(Top)
+menu(
+mit(convert-mudela)( Convert Mudela)
+mit(LilyPond)( The GNU Music Typsetter herself)
+mit(Ly2dvi)( Lilypond Frontend)
+mit(Mi2mu)( MIDI input)
+mit(mudela-book)( Integrate LaTeX and mudela)
+)
+
+whentexinfo(texinfocommand(@include man/DOEXPAND(outdir)/convert-mudela.texinfo))
+whentexinfo(texinfocommand(@include man/DOEXPAND(outdir)/lilypond.texinfo))
+whentexinfo(texinfocommand(@include man/DOEXPAND(outdir)/ly2dvi.texinfo))
+whentexinfo(texinfocommand(@include man/DOEXPAND(outdir)/mi2mu.texinfo))
+whentexinfo(texinfocommand(@include man/DOEXPAND(outdir)/mudela-book.texinfo))
+whentexinfo(texinfocommand(@include DOEXPAND(outdir)/mutopia.texinfo))
+
+nchapter(Concept Index)
+node(Mutopia)(Concept Index)()(Top)
+COMMENT( urg makeindex())
+printndex()
+
+whentexinfo(texinfocommand(@bye))
+
diff --git a/Documentation/topweb.pod b/Documentation/topweb.pod
deleted file mode 100644
index def6a75970..0000000000
--- a/Documentation/topweb.pod
+++ /dev/null
@@ -1,82 +0,0 @@
-=head1 NAME
-
-The Homepage of LilyPond -- the GNU Project music typesetter
-
-=head1 DESCRIPTION
-
-LilyPond is the GNU Project music typesetter. This program can print
-beautiful sheet music from a music definition file. It can also play
-a play (mechanical) performances to a MIDI file. Features include
-multiple staffs, meters, clefs, keys, lyrics, versatile
-input-language, cadenzas, beams, slurs, triplets. It includes a nice
-font of musical symbols.
-
-This is not a Fanmail/Hype page. These pages were entirely created from
-the LilyPond package-sources.
-
-Note: These pages are created from the latest B<development snapshots>
-of LilyPond, specifically, this page was made from LilyPond
-@TOPLEVEL_VERSION@.
-
-=head2 Mirrors
-
-=over 4
-
-=item http://sca.uwaterloo.ca/lilypond/
-
-Eric Praetzel was kind enough to provide a mirror of both the website
-and the ftp site.
-
-=back
-
-=head2 Examples
-
-=over 4
-
-=item *
-<a href=input/out-www/index.html
->
-short examples of what LilyPond can do: MIDI, PS, .gif and input.
-</a
->
-
-=item *
-<a href=mutopia/out-www/index.html
->
-examples of what LilyPond can do
-with real music: MIDI, PS, .gif and input
-</a
->
-
-=back
-
-=head2 NEWS!
-
-This is what the latest version brings:
-
-top_of_NEWS
-
-Go get it at ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz
-
-=head2 Documentation: Introduction
-
-=over 4
-
-=item *
-<a href=Documentation/out-www/index.html
->
-All of the LilyPond documentation.
-</a
->
-
-=item *
-<a href=docxx/index.html
->
-The DOC++ documentation of the C++ sources.
-</a
->
-
-
-
-
-=back
diff --git a/Documentation/vocabulary.data b/Documentation/vocabulary.data
deleted file mode 100644
index e9e616a284..0000000000
--- a/Documentation/vocabulary.data
+++ /dev/null
@@ -1,252 +0,0 @@
-Francais:US English:Deutsch:UK English:Nederlands:Italiaans:
-:engraving:notenstechen::steken::
-:Grand staff:::Piano systeem::A combination of two staffs with a brace. Usually used for piano music.
-:system:::systeem::
-accentuation:accentuation:::accent::
-accolade:brace:::::
-accord:chord:::akkoord::
-accord de neuvième dominante:chord of the dominant ninth:::dominant akkoord::
-accord de septième dominante:chord of the dominant seventh:::septiem akkoord::
-accord parfait majeur:perfect major chord:::::
-accord parfait mineur:perfect minor chord:::::
-alto:alto:::alt::
-altération accidentelle:accident; accidental alteration:::toevallig teken::
-altération essentielle:essential alteration:::::
-appogiature:appoggiatura:::::
-appogiature brève:short appoggiatura:::::
-appogiature double:double appoggiatura:::::
-appogiature longue:long appoggiatura:::::
-appogiature simple:simple appoggiatura:::::
-armature [de la clé]:key signature:::toonsoort (voortekens)::
-armure [de la clé]:key signature:::toonsoort::
-arpège:arpeggio:::gebroken akoord::
-augmenté (intervalle):augmented (interval):::overmatig interval::
-bariton:baritone:::bariton::
-barre de mesure:bar line:::maatstreep::
-:beam:Balk::waardestreep/balk::
-barre de reprise:repeat:::herhaling::
-basse:bass:::bas::
-blanche:half note:::halve noot::
-bâton de pause:(arbitrary number of bars' rest):::::
-bâton de pause:four-bar rest:::::
-bâton de pause:two-bar rest:::::
-bécarre:natural sign:::herstellingsteken::
-bémol:flat:::mol::
-cadence:cadence:::cadens::
-cadence harmonique:harmonic cadence:::cadens::
-cadence mélodique:melodic cadence:::cadens::
-:cue-notes:Stichnoten::stichnoten::
-caractère:character:::::
-chaîne de trilles:chain of trills:::triller::
-chevron:chevron:::::
-chiffrage (chiffres indicateurs):time signature:::maatsoort::
-chiffre inférieur:lower number:::::
-chiffre supérieur:upper number:::::
-clé:clef:::sleutel::
-clé d'octave:octave line:::::
-clé d'ut:middle C clef:::C sleutel, alt sleutel::
-clé de fa:bass clef:::F sleutel::
-clé de sol:treble clef:::G sleutel, viool sleutel::
-comma:comma:::::
-comma enharmonique:::::
-comma pythagoricien:::::
-comma syntonique: : : : : :
-consonance:consonant interval; consonance:::consonant::
-contralto:contralto:::::
-contre-temps:contro-time:::::
-contre-temps irrégulier:irregular contro-time:::::
-contre-temps régulier:regular contro-time:::::
-coulé:slur:::binding, bindingsboog::
-courbe rythmique:rythmic curve:::::
-:opening angular bracket::::crescendo:
-croche:eighth note:::achtste noot::
-:closing angular bracket::::decrescendo:
-degré [de la gamme]:degree [of the scale]:::trap [van de toonladder]::
-demi-pause:half rest:::halve rust::
-demi-soupir:eighth rest:::achtste rust::
-demi-ton:semitone:::halve toon::
-demi-ton chromatique:chromatic semitone:::chromatische halve toon::
-demi-ton diatonique:diatonic semitone:::diatonische halve toon::
-diapason:pitch pipe; tuning fork:::stemfluitje; stemvork::
-diminué (intervalle):diminished (interval):::verminderd (interval)::
-dissonance:dissonant interval; dissonance:::dissonant interval; dissonant::
-dièse:sharp:::kruis::
-do:C:::C::
-do central:middle C:::centrale C:::
-doigté::::::
-doigté de pédale::::::
-dominante:dominant:::dominant::
-double barre:double bar line:::dubbele streep::
-double bémol:double flat:::dubbelmol::
-double croche:sixteenth note:::zestiende noot::
-double dièse:double sharp:::dubbelkruis::
-double triolet:double triplet:::dubbele triool::
-duolet:duplet:::duool::
-durée:duration:::duur, lengte::
-échelle d'octave:octave line:::::
-échelle musicale:Musical Ladder:::::
-enharmonie:enharmony:::::
-espace:space:::::
-extension d'intervalle:extension of interval:::::
-fa:F:::::
-figure de note:kind of note:::::
-figure de silence:kind of rest:::::
-fioriture::::cadens:cadenza:
-forme du mode mineur ancien:ancient form (diatonic minor scale):::::
-forme harmonique:harmonic form (diatonic minor scale):::::
-forme mélodique:melodic form (diatonic minor scale):::::
-gamme:scale:::toonladder::
-gamme chromatique:chromatic scale:::chromatische toonladder::
-gamme diatonique majeure:diatonic major scale:::diatonische majeur toonladder::
-gamme diatonique mineure:diatonic minor scale:::::
-gammes enharmoniques:enharmonic scales:::::
-gammes relatives:relative scales:::::
-genre chromatique:chromatic type:::::
-genre diatonique:diatonic type:::::
-genre enharmonique:enharmonic type:::::
-groupe irrégulier:irregular group:::::
-grupetto:turn; gruppetto:::dubbelslag::
-hauteur:pitch:::toonhoogte::
-huitième de soupir:thirty-second rest:::32e rust::
-incise:motive:::motief::
-indication de pédale:::::
-indication métronomique:metronomic indication:::::
-intervalle:interval:::interval::
-intervalle ascendant:ascending interval:::::
-intervalle composé:compound interval:::::
-intervalle descendant:descending interval:::dalend interval::
-intervalle harmonique:harmonic interval:::::
-intervalle simple:simple interval:::::
-intervalles enharmoniques:enharmonic intervals:::::
-juste (intervalle):perfect (interval):::rein (interval)::
-la:A:::::
-liaison:tie:::overbinding::
-liaison rythmique:legato curve:::::
-ligne:line:::::
-ligne supplémentaire:ledger line:::hulplijntje::
-étang de lis:lilypond:lilyteich:lily pond:lelievijver:stagno del giglio:
-majeur (intervalle):major (interval):::groot (interval)::
-membre de phrase:phrase member:::::
-mesure:bar; measure:::maat, maatstreep::
-mesure artificielle:artificial measure:::::
-mesure composée:compound measure:::::
-mesure incomplète:incomplete measure:::::
-mesure irrégulière:irregular measure:::::
-mesure simple:simple measure:::::
-mezzo-soprano:mezzo-soprano:::::
-mi:E:::::
-mineur (intervalle):minor (interval):::::
-mode:mode:::::
-mode ecclésiastique:::::
-mode majeur:major mode:::::
-mode mineur:minor mode:::::
-modulation:modulation:::modulatie::
-mordant:mordent:::mordent::
-::::::
-mouvement:tempo; movement:::deel::
-mouvement conjoint:conjunct movement:::::
-mouvement disjoint:disjunct movement:::::
-mouvement lent:slow tempo:::::
-mouvement modéré:moderate tempo:::::
-mouvement rapide:fast tempo:::::
-médiante:mediant:::::
-métronome:metronome:::metronoom::
-noire:quarter note:::kwartnoot::
-note:note:::noot::
-note doublement pointée:double dotted note:::::
-note modale:modal note:::::
-note pointée:dotted note:::::
-note tonale:tonal note:::::
-notes enharmoniques:enharmonic notes:::enharmonische noot::
-nuance:shading:::::
-octave:octave:::octaaf::
-ornement:embellishment; accessory:::::
-:part:::partij::
-partition:score:::partituur::
-pause:whole rest:::::
-phrase:phrase:::::
-phrasé:phrasing:::::
-pizzicato:dash over/below:::::
-point:dot:::punt::
-point d'orgue:pause:::::
-point et liaison combinés:dot and curved line combined:::::
-pointillés:::::
-portamento:underline over/below:::::
-portée:staff:::(noten)balk; partij::
-portées:staves:::::
-quadruple croche:sixty-fourth note:::::
-quart de soupir:sixteenth rest:::::
-quarte:fourth:::kwart::
-quartolet:quadruplet:::kwartool::
-quinte:fifth:::kwint::
-registre:register:::register::
-renversement d'intervalle:inversion of interval:::inversie::
-renvoi:return sign:::herstellingsteken::
-respiration:artificial rest:::::
-:double whole note::breve:brevis:breve:
-ronde:whole note:::hele noot::
-rythme:rythm:::ritme::
-ré:D:::::
-seconde:second::::secunde:
-seizième de soupir:sixty-fourth rest:::::
-sensible:leading note:::::
-septième:seventh:::septiem:septime:
-sextolet:sextuplet:::::
-si:B:::::
-signes indicateurs de nuance:shading signs:::::
-silence:rest:::::
-sixain:sextuplet:::sextool::
-sixte:sixth:::::
-sol:G:::::
-soprano:soprano:::sopraan::
-soupir:quarter rest:::::
-sous-dominante:subdominant:::::
-sous-tonique:subtonic:::::
-:dot over/below:::staccato:staccato:
-sus-dominante:superdominant:::::
-sus-tonique:supertonic:::::
-syncope:syncopation; upbeat:::syncope::
-syncope irrégulière:irregular syncopation:::onregelmatige syncope::
-syncope régulière:regular syncopation:::::
-temps:beat:::tel::
-temps binaire:binary beat:::::
-temps faible:weak beat:::::
-temps fort:strong beat:::::
-temps ternaire:ternary beat:::::
-tempérament mésotonique:meantone tuning:::::
-tempérament égal:tempered tuning:::getempereerde stemming::
-tierce:third:::terts::
-ton:tone:::toon::
-tonalité:tonality:::tonaliteit::
-tonique:tonic:::::
-tons relatifs:relative scales:::::
-tons voisins:adjacent keys:::::
-transposition:transposition:::::
-transposition chromatique:chromatic transposition:::::
-transposition enharmonique:enharmonic transposition:::::
-trille:trill; shake:::::
-trille double:double trill:::::
-triolet:triplet:::::
-triple croche:thirty-second note:::::
-triton:tritone:::::
-ténor:tenor:::::
-tétracorde:tetrachord:::::
-unisson:unison:::::
-unité de mesure:unit of measure:::::
-unité de temps:unit of beat:::::
-ut:C:::::
-voix:voice:::stem::
-:quarter note::crotchet:::
-:quarter rest::crotchet rest:::
-:thirty-second note::demisemiquaver:::
-:thirty-second rest::demisemiquaver rest:::
-:sixty-fourth note::hemidemisemiquaver:::
-:sixty-fourth rest::hemidemisemiquaver rest:::
-:half note::minim:::
-:half rest::minim rest:::
-:eighth note::quaver:::
-:eighth rest::quaver rest:::
-:whole note::semibreve:::
-:whole rest::semibreve rest:::
-:sixteenth note::semiquaver:::
-:sixteenth rest::semiquaver rest:: :
diff --git a/INSTALL.txt b/INSTALL.txt
index 12c297b46c..11572c9d44 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -1,396 +1,268 @@
+TITLE INFORMATION: INSTALL - compiling and installing GNU LilyPond
+AUTHOR INFORMATION: HWN & JCN
+Contents
-INSTALL(1) LilyPond documentation INSTALL(1)
+1: ABSTRACT
+2: PREREQUISITES
+3: RUNNING
+4: RECOMMENDED
+5: WEBSITE
+6: CONFIGURING and COMPILING
+7: CONFIGURING FOR MULTIPLE PLATFORMS
+8: INSTALLING
+9: REDHAT LINUX
+10: DEBIAN GNU/LINUX
+11: WINDOWS NT/95
+12: AUTHORS
+1: ABSTRACT
-NAME
- INSTALL - installing GNU LilyPond
+You do something which looks remotely like
-DESCRIPTION
- This page documents installation and compilation of GNU
- LilyPond
+ configure # Check out the buildscripts/set-lily.sh script
+ make
+ make install
-ABSTRACT
- You do something which looks remotely like
+The detailed instructions follow here. The
+buildscripts/set-lily.sh script sets some environment variables
+and symlinks, which comes in handly when you have to compile LilyPond
+very often. It is aimed at people who run (or debug) LilyPond without
+installing.
- configure
- make
- make install
+2: PREREQUISITES
- The detailed instructions follow here.
+For compilation you need:
-PREREQUISITES
- For compilation you need.
+o A GNU system: GNU LilyPond is known to run on these GNU systems: Linux
+ (PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and
+Solaris.
- o A GNU system: GNU LilyPond is known to run on these
- GNU systems: Linux (PPC, intel), FreeBSD, AIX,
- NeXTStep, IRIX, Digital Unix and Solaris.
+Although we recommend to use Unix, LilyPond is known to run on Windows
+NT/95/98 as well. See Section [w32].
- If you have the Cygnus WINDOWS32 port of the GNU
- utils, it will even work in Windows NT/95, but we
- don't promise to support it.
+o GNU C++ version 2.7 or newer (2.8 and egcs are also fine).
+o Python 1.5
- o GNU C++ version 2.7 or newer (yes, 2.8 is fine).
+3: RUNNING
- o Python
+GNU LilyPond does use a lot of resources. For operation you need the following:
-RUNNING
- GNU LilyPond does use a lot of resources. For operation
- you need the following:
+o TeX
+o A PostScript printer and/or viewer (such as Ghostscript) is strongly
+ recommended. Xdvi will show all embedded PostScript too if you have
+ Ghostscript installed.
- o TeX
+4: RECOMMENDED
- o A PostScript printer and/or viewer (such as
- Ghostscript) is strongly recommended. Xdvi will show
- all embedded PostScript too if you have Ghostscript
- installed.
+Although not strictly necessary, these are recommended to have.
-RECOMMENDED
- Although not strictly necessary, these are recommended to
- have.
+o GNU make.
+o Flex (version 2.5.4 or newer).
+o Bison (version 1.25 or newer).
+o Python (version 1.5 or newer).
+o Yodl. All documentation will be in Yodl. (1.30.17)
+ftp://pcnov095.win.tue.nl/pub/yodl
+ http://www.cs.uu.nl/~hanwen/yodl
+o Texinfo. (version 3.12 or newer)
- o GNU make.
+o GNU find
+o A fast computer (a full page of music typically takes 1 minute on my
+ 486/133, using the --enable-checking compile. It's lot slower than
+ most MusiXTeX preprocessors)
- o Flex (version 2.5.4 or newer).
+5: WEBSITE
- o Bison (version 1.25 or newer).
+If you want to auto-generate Lily's website, you'll need some additional
+conversion tools.
- o Perl-5. Most documentation was created with the
- perl's Plain Old Documentation. (I use 5.003)
+o xpmtoppm (from the Portable Bitmap Utilities) (For RedHat Linux
+ users: it is included within the package libgr-progs).
+o Bib2html http://pertsserver.cs.uiuc.edu/~hull/bib2html.
+ Which, in turn depends on man2html for proper installation.
+man2html can be had from http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05.
+ TeTeX users should not forget to rerun texhash.
+6: CONFIGURING and COMPILING
-15/May/98 LilyPond 0.1.65 1
+to install GNU LilyPond, simply type:
+ configure --enable-tex-dir=XXXX --enable-mf-dir=YYYY
+ make
+ make install
+This will install a number of files, something close to:
+ /usr/local/man/man1/mi2mu.1
+ /usr/local/man/man1/convert-mudela.1
+ /usr/local/man/man1/mudela-book.1
+ /usr/local/man/man1/lilypond.1
+ /usr/local/bin/lilypond
+ /usr/local/bin/mi2mu
+ /usr/local/share/lilypond/*
+ /usr/local/share/locale/{it,nl}/LC_MESSAGES/lilypond.mo
+ /usr/lib/texmf/texmf/tex/lilypond/*
+You should specify directories that are in TeX's and MetaFont's
+include path with the options (--enable-tex-dir) and
+--enable-mf-dir. If you don't specify any directories, the TeX
+include directory is detected dynamically, which is unreliable. The
+above assumes that you are root and have the GNU development tools,
+and your make is GNU make. If this is not the case, you can adjust
+your environment variables to your taste:
-INSTALL(1) LilyPond documentation INSTALL(1)
+ export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR"
+ configure
+CPPFLAGS are the preprocessor flags.
- o Python. Although perl is nice, python is better. We
- will shift towards python for build scripts
+The configure script is Cygnus configure, and it will accept
+--help. If you are not root, you will probably have to make it
+with a different --prefix option. Our favourite location is
- o GNU find
+ configure --prefix=$HOME/usr
- o A fast computer (a full page of music typically takes
- 1 minute on my 486/133, using the --enable-checking
- compile. It's lot slower than most MusiXTeX
- preprocessors)
+In this case, you will have to set up MFINPUTS, and TEXINPUTS accordingly.
-WEBSITE
- If you want to auto-generate Lily's website, you'll need
- some additional conversion tools.
+If you want to install GNU LilyPond in /usr/local, and your TeX has
+no default hooks for local stuff, you can do:
- o xpmtoppm (from the Portable Bitmap Utilities)
- (included within the RedHat package libgr-progs).
+ configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf
- o Bib2html
- (http://pertsserver.cs.uiuc.edu/~hull/bib2html.)
- Which, in turn depends on Man2htlm
- (http://askdonald.ask.uni-karlsruhe.de/
- hppd/hpux/Networking/WWW/Man2html-1.05) for proper
- installation (ugh). TeTeX users, don't forget to
- rerun texhash.
+Since GNU LilyPond currently is beta, you are advised to also use
-CONFIGURING and COMPILING
- to install GNU LilyPond, simply type:
+ --enable-debugging
+ --enable-checking
- configure
- make
- make install
+Other options include:
- This will install the following files:
+o --enable-shared
+ Make a shared library (gnu/linux, solaris (?) only ) (TEMPORARILY
+OUT OF ORDER)
- /usr/local/man/man1/mi2mu.1
- /usr/local/man/man1/convert-mudela.1
- /usr/local/man/man1/mudela-book.1
- /usr/local/man/man1/lilypond.1
- /usr/local/lib/libflower.{so,a}
- /usr/local/bin/lilypond
- /usr/local/bin/mi2mu
- /usr/local/share/lilypond/*
- /usr/lib/texmf/texmf/tex/lilypond/*
+o --enable-printing
+ Enable debugging print routines (lilypond -D option)
+o --enable-optimise
+ Set maximum optimisation: compile with -O2
+o --enable-profiling
+ Compile with support for profiling.
+o --enable-tex-prefix
+ Set the directory where TeX and Metafont live.
+o --enable-tex-dir
+ Set then directory TeX input is in (detected as a subdir of
+ tex-prefix). This should be a directory that is reachable both for
+ tex and latex. On my system the best choice would be
+ /usr/lib/texmf/texmf/tex/generic//.
+o --enable-mf-dir
+ Set the directory metafont input is in (idem). On my system the best
+ choice would be /usr/lib/texmf/texmf/fonts/source/public/.
+o --enable-config
+ Output to a different configuration file. Needed for multi-platform
+ builds
- The TeX include directory is detected dynamically, but it
- can be adjusted with --enable-tex-prefix and --enable-tex-
- dir. The above assumes that you are root and have the GNU
- development tools, and your make is GNU make. If this is
- not the case, you can adjust your environment variables to
- your taste:
+All options are documented in the configure help
+The option --enable-optimise is recommended for Real Life usage.
- export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR"
- configure
+If you do
+ make all
+everything will be compiled, but nothing will be installed. The
+resulting binaries can be found in the subdirectories out/ (which
+contain all files generated during compilation).
+7: CONFIGURING FOR MULTIPLE PLATFORMS
-15/May/98 LilyPond 0.1.65 2
+If you want to compile LilyPond with different configuration settings,
+then, you can use the --enable-config option. Example: suppose I
+want to build with and without profiling. Then I'd use the
+following for the normal build,
+ configure --prefix=~ --disable-optimise --enable-checking
+ make
+ make install
+and for the profiling version, I specify a different configuration.
+ configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking
+ make configuration=optprof
+ make configuration=optprof install
+8: INSTALLING
-INSTALL(1) LilyPond documentation INSTALL(1)
+If you have done a successful make, then a simple
+ make install
- CPPFLAGS are the preprocessor flags.
+should do the trick.
- the configure script is Cygnus configure, and it will
- accept --help. If you are not root, you will probably have
- to make it with
-
- configure --prefix=/home/me_myself_and_I/
-
- In this case, you will have to set MFINPUTS, and TEXINPUTS
- accordingly.
-
- If you want to install GNU LilyPond in /usr/local, and
- your TeX has no default hooks for local stuff (mine is
- broken too), you can do:
-
- configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf
-
- Since GNU LilyPond currently is beta, you are advised to
- also use
-
- --enable-debugging
- --enable-checking
-
- other options include:
-
- --enable-shared
- Make a shared library (gnu/linux, solaris (?) only )
-
- --enable-printing
- Enable debugging print routines (lilypond -d option)
-
- --enable-optimise
- Set maximum optimisation: compile with -O2
-
- --enable-profiling
- Compile with support for profiling
-
- --enable-tex-prefix
- Set the directory where TeX and Metafont live
-
- --enable-tex-dir
- Set then directory TeX input is in (detected as a
- subdir of tex-prefix). This should be a directory
- that is reachable both for tex and latex. On my
- system the best choice would be
- /usr/lib/texmf/texmf/tex/generic//.
-
- --enable-mf-dir
- Set the directory mf input is in (idem). On my
- system the best choice would be
- /usr/lib/texmf/texmf/fonts/source/public/.
-
- --enable-config
- Output to different configuration files. Needed for
-
-
-
-15/May/98 LilyPond 0.1.65 3
-
-
-
-
-
-INSTALL(1) LilyPond documentation INSTALL(1)
-
-
- multi-platform builds
-
- All options are documented in the configure help The
- option --enable-optimise is recommended for Real Life
- usage.
-
- If you do
-
- make all
-
- everything will be compiled, but nothing will be
- installed. The resulting binaries can be found in the
- subdirectories out/ (which contain all files generated
- during compilation).
-
-CONFIGURING FOR MULTIPLE PLATFORMS
- If you want to compile LilyPond with different
- configuration settings, then, you can use the --enable-
- config option. Example: suppose I want to build with and
- without profiling. Then I'd use the following for the
- normal build,
-
- configure --prefix=~ --disable-optimise --enable-checking
- make
- make install
-
- and for the profiling version, I specify a different
- configuration.
-
- configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking
- make configuration=optprof
- make configuration=optprof install
-
-
-INSTALLING
- If you have done a successful make, then a simple
-
- make install
-
- should do the trick.
-
- If you are doing an upgrade, please remember to remove
- obsolete .pk and .tfm files of the fonts. A script has
- been provided to do the work, see bin/clean-fonts.sh.
+If you are doing an upgrade, please remember to remove obsolete
+.pk and .tfm files of the fonts. A script has been
+provided to do the work for you, see bin/clean-fonts.sh.
CAVEATS
- o The -O2 option to gcc triggers a gcc bug on DEC Alpha
- in dstream.cc. You should turn off this flag for this
- file.
-
- o Perl5.003 and Perl5.004 use different syntax for
- pod2html.
-
-
-
-
-
-15/May/98 LilyPond 0.1.65 4
-
-
-
-
-
-INSTALL(1) LilyPond documentation INSTALL(1)
+o The -O2 option to gcc triggers a gcc bug on DEC Alpha in dstream.cc. You
+ should turn off this flag for this file.
EXAMPLE
- This is what I type in my xterm:
-
- lilypond someinput.ly
- tex someinput.tex
- xdvi someinput&
-
- This is what the output looks like over here:
-
- GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0
- Parsing ... [/home/hw/share/lilypond/init//
- <..etc..>
- init//performer.ly]]][input/kortjakje.ly]
- Creating elements ...[8][16][24][25]
- Preprocessing elements...
- Calculating column positions ... [14][25]
- Postprocessing elements...
- TeX output to someinput.tex ...
- Creating MIDI elements ...MIDI output to someinput.midi ...
-
- hw:~/musix/spacer$ xdvi someinput&
- [1] 855
-
- Check out the input files, some of them have comments
- Please refer to the man page for more information.
-
-REDHAT LINUX
- RedHat Linux users can compile an RPM. A spec file is in
- make/out/lilypond.spec. You should install a gif file
- called lelie_icon.gif along with the sources. You can
- generate this gif file by typing
-
- make gifs
-
- in the directory Documentation.
-
-DEBIAN GNU/LINUX
- A Debian package is also available; contact Anthony Fok
- <foka@debian.org>. The build scripts are in the
- subdirectory debian/
-
-WINDOWS NT/95
- So, you're stuck with Windows, eh? Well, don't worry, you
- just need (to get) Cygnus' windows32 port of gnu
- development stuff; have a look at
- http://www.cygnus.com/gnu-win32.
-
- To make GNU LilyPond under, brr, aargh, shudder...
- windows32, well, simply type:
-
- bash configure
- make
-
- Note If you rely on broken DOS/Windows tools such as
-
-
-
-15/May/98 LilyPond 0.1.65 5
-
-
-
-
-
-INSTALL(1) LilyPond documentation INSTALL(1)
-
-
- pkzip/WinZIP to unpack the distribution, make sure the
- entire source tree is unpacked correctly, in particular
- the empty out directories (flower/out, lib/out et. al.)
-
-AUTHORS
- Han-Wen Nienhuys <hanwen@cs.ruu.nl>
-
- Jan Nieuwenhuizen <jan@digicash.com>
-
- Have fun!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+This is what I type in my xterm:
+ lilypond someinput.ly
+ tex someinput.tex
+ xdvi someinput&
+This is what the output looks like over here:
+ GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0
+ Parsing ... [/home/hw/share/lilypond/init//
+ <..etc..>
+ init//performer.ly]]][input/kortjakje.ly]
+ Creating elements ...[8][16][24][25]
+ Preprocessing elements...
+ Calculating column positions ... [14][25]
+ Postprocessing elements...
+ TeX output to someinput.tex ...
+ Creating MIDI elements ...MIDI output to someinput.midi ...
+ hw:~/musix/spacer$ xdvi someinput&
+ [1] 855
+Check out the input files, some of them have comments
+Please refer to the man page for more information.
+9: REDHAT LINUX
+RedHat Linux users can compile an RPM. A spec file is in
+make/out/lilypond.spec. You should install a gif file called
+lelie_icon.gif along with the sources. You can generate this
+gif file by typing
+ make gifs
+in the directory Documentation.
+You can make the rpm by issuing
+ make rpm
+10: DEBIAN GNU/LINUX
+A Debian package is also available; contact Anthony Fok
+<foka@debian.org>. The build scripts are in the subdirectory debian/
+11: WINDOWS NT/95
+Separate instructions on building for W32 are avaible
+in the file README-W32.yo.
+12: AUTHORS
-15/May/98 LilyPond 0.1.65 6
+Han-Wen Nienhuys <hanwen@cs.uu.nl>
+Jan Nieuwenhuizen <janneke@gnu.org>
+Have fun!
diff --git a/NEWS b/NEWS
index 97fce166d1..9decb57907 100644
--- a/NEWS
+++ b/NEWS
@@ -1,1362 +1,11 @@
-pl 65
- - fixes for template instantiation (AO)
- - junked standchen-easy,
- - mudela 0.1.15: deprecate \duration, junked \octave relative
- - small doco fixes
- - moved data from Melodic_req into Musical_pitch (analogous to
- Duration and Rhythmic_req)
- - implemented \relative c' { .. } and associated Relative_octave_music
- - junked \octave relative;
-
-pl 64.jcn2
- - simple compile fixes
- - bf: beam:stemlens:knee
- - hara-kiri-*
- - bf: ctags
- - preludes-3.lym4
-
-**********
-pl 64 (may 13)
-
-pl 63.jcn3
- - beam stemlength stuff runtime
- - dropped lq for beam-stemlengths, fixes [d d d] [d g d]
- - ugly sed fix for commas in .ly.m4
- - beam damp corrent fix
- - scsii: small fixes
- - preludes.ly; dropped silly preludes.tex
-
-pl 63.jcn2
- - vocabulary on website
- - data-to-html.py
- - bf: beam damped-slope correct
- - bf: make website
- - some preludes-* fixes
-
-pl 63.jcn1
- - "relative" sizes for titledefs
- - bib2html/man2html urls in INSTALL.pod
- - auto-generated feta stuff in doosdist
- - bf's: make dist, docdeps
- - bf's scsii
-
-************
-pl 63 (may 11)
-
- - non_fatal_error () (should use!)
- - Mozart Horn concerto 3, horn part
- - bf: plet-spanner
-
-pl 62.jcn11
- - bf: beam::set-stemlen:iterations
- - knee-bug.ly
- - use knee in menuetto-ii
- - bit on slope damping
- - some bf's and doco
- - bf's scsii
- - scsii: bf' new: sarabande
- - bf's allemande, courante
- - bf: knee: stem through beams
- - bf: too high beams
-
-pl 62.hwn1
- - bf jcn8: deep copy Scope (ughugh. I want GC!)
- - cleaned Identifier
- - mudela 0.1.14 'a -> a,
- - class Scope
- - .bib updates
- - key robustifiction for extreme octaves
- - ly2dvi 0.11
- - energy "normalisation" removed.
-
-pl 62.jcn8
- - beam: knee input/test/knee.ly
- - vimrc init for lily
- - errors display column number too
- - scsii: bf's, new: allemande, courante
- - looked at lyric lengthen "mir________." (eerste weigering)
- - beam: knee [c \stemdown c' \stemup 'c]
- - expressions parsed at identifier_init
- - bf: slur/stem/whole x-adjust:
- * use note-col width iso mean note-witdth
- * note-column:width ()
- - now string variables in paper too -> mudelapapersize
- - paper_def: real dict -> identifier dict
- - My_lily_lexer: identifier dict stack
- - init paper and a4 stuff
- - \include \string
- - all rvalues from parser var pool -> access rvalue as \rvalue
- - string variables
- - ly2dvi 0.10.jcn1
- * mudelapiece, mudelaopus (ugh, fix)
- * textheight
- - more titledefs
- - bf: table 20 typeface widths
- - bf: toplevel/*.txt
- - bf: ugly Documentation/mutopia fix (should rename dir to Mutopia/ ?)
- - bf: make examples
- - www.digicash.com/~jan/lilypond
- - make website fixes
- - ambiguity fixes in .ly's
- - bf: relative-octave warning
- - relative-octave: guess if ambiguous
- - ambiguity warning for relative mode
- - scsii: prelude
- - bf: slur gap
- - bf's: scsii: menuetto
- - .txt -> $(DOTTEXT)
- - make website fixes
- - .txt fixes
- - bf: typo make-patch
- - bf: *dist.sh cleanup
- - bf: release.py
- - bf: make/Targets doc (removed .txt extension)
- - rpm-dist.sh
- - make doos dist fixes
- - doos-dist.sh windoze dist script
- -- removed useless spacing hack at spring-spacer.cc:692
- - bf: los-toros: do multi-bar rests (setting SkipBars = 1)
- - scsii-menuetto.ly -> menuetto-urtext.ly, -cello.ly and -alto.ly
- - bf: \octave c'; for relative-octaves
- - bf: Documentation make
-
-*********
-pl 62
- - no-touch hak.
- - bfs: multi measure rests
- - fixed the website.
- - add extra space after breakable columns.
-
-
-pl 61.jcn8
- - mudela relative octave feature:
- * Documentation/relative-octaves.pod
- * \octave relative;
- * lilypond -f for automatically finding new relative quote positions
- (sorry, fully automated convert is too complex)
- * mutopia/ltor.ly: octave quotes reduced from 511 to 59
- - better conflily
- - bf: abbreviation-beam-engraver: set beam::multiple_i_
- - bf: open_abbrev_parens
- - dotted/dashed slurs/ties
- - fixed-up scsii-menuetto; use dotted-slurs
- - slur_thickness runtime
- - bf: typo lilyponddefs: elevendefs
- - moved hard-coded slur parameters to runtime
- - make-patch -r: diff against latest release
- - allow semicolons after paper_identifier and \include
- - params.ly: parameterised some paper vars
- - bf: beam quantise for slope = 0
- - interbeam (mult>3) open-up to paper-def to paper!
- - "implemented" Paper-def::staffheight
- - simplification + bf bezier clipping
- - vandale fix
- - moved doco from paper*ly to fonts.doc
- - papers with expressions
- - paper20.ly: rewrote precalculated values as expressions
- - simple expressions in mudela (paper-body only)
- - beam_thickness centralised and run-time...
- - \nobreak
- - bf: beamquantise: never sit if mult > 1
- - bf: broken slur y-offset (not!)
- - pagelength hack in tex/headers
- - alignment of bracket (in span-score-bar.cc)
- - boolean *break_b to continue break_penalty_i; maar nu...
- - removed paper20 includes, \paper_twenty from examples
- - dropped latex files
- - renamed standje, standchen.
- - parser accepts range of mudela-versions
- - Mudela_version
- - String_convert::split
- - bf's: los-toros-oboe
- - braindead Break_req with penalty; junked Disallow_break_req and
- Break_force_req
-
-pl 61.ag1
- - implemented octave-shifted clefs.
-
-********
-
-pl 61
- - bf: mudela-book error msgs
- - don't dist feta-tables.
- - bf: mf-to-table, deps[0] catch
- - reworked initialisation parsing logic; Got a no-redtape mode
- for free
- - 20 pt staffsize now default
- - dependencies for LilyPond (-d, --dependencies). --debug moved to -D
- - (c) 1998
- - ly2dvi 0.10 (JAF)
- - changed \begin[options]{mudela} to \begin{mudela}[options]
- - more WWW hacks.
-
-pl 60.jcn2
- - minor adjust for asymmetricity of beam symbol
- - added TEST beam quantisation; see input/test/beam-pos.ly
- - removed some empty .cc .hh
- - Grandstaff -> Grand_staff (After [Gerou] and Harvard Dictionary of
- Music)
- - bf's: slur and tie post-processing
- - cleaned-up bow: get encompass
- - cleaned-up beam-yspan and beam-leftpos quantisation
- - misc.cc: some funcs to get lower and upper bounds from array of values
- - interval.*: Slice (Interval of int)
- - added some doco to beam.cc
- - removed some x,y by-ref passing in Lookup
- - cleaned-up beam-yspan quantisation
- - cleaned-up slur get encompass
- - configure: --disable-optimise for compile without -O
-
-pl 59.jcn4
- - bf: beam quantise
- - bf: sticky plet bug
- - bf: chords in beam
- - bf: typo beamquantisaton
- - bf: don't blow_fit infeasible bows (x_i < x_0 || x_i > x_n)
- - bf's: beam/stemlengths, beam-bug [c8 c16 c16]
- - bf: placement broken tie
- - yet another try to raise bar-number
- - bf's: bow tangent clipping, allow higher bows
-
-************
-pl 60
- - mats patches: use Latex font stuff.
- - fixes to the .59 patch release (jcn)
- - make website|examples target
-
-pl 59.jcn3
- - bf: preludes-5
- - no inline compiler warnings by default
- - bf: gcc 2.8 compile bow.cc
- - moved functions with loops from varray.hh to varray.cc
- - bf: minimum length for tie
- - slur clipping standard
- - bf: second broken slur minimum length
-
-pl 59.jcn2
- - added some to .dstream
- - bf: second part of broken slur
- - slur encompassing noteheads adjust
- - bwv'd preludes
- - bf: make-patch -d
- - doc'd rerunning of autoconf
- - rest of real standje (rename and move simplified standchen to
- input/test?)
- - bf: clipping
- - bit better bar number placement
-
-pl 59.jcn1
- - more INLINE
- - bf: multi-measure rest
-
-pl 58.jcn7
- - los-toros: do multi-bar rest
-
-
-
-***************
-pl 59
- - ly2dvi 0.9.hwn1, -K switch,
- - doc: moved manpages in separate directory.
- - do WWW stuff via make
- - mutopia-index.py
- - ly2dvi 0.9 (JAF)
- - multi platform build fixes
- - junked embedded switches, embedded MF, obsolete TeX stuff
- - junked virtual matrix storage: inlined most matrix computation,
- speed increase of 30%
- - junked taupindefs, eglerdefs
- - rm'd taupin/egler from INSTALL
- - doc: engraving.bib, colorado.bib
- - input hierarchy.
-
-
-pl 58.jcn6
- - multi-measure rests: moved acknowledge from timing-translator
- to -grav
- - slur clipping experimental...
- - bo to b
- - always announce multi-measure
-
-pl 58.jcn5
- - bf: reset plet after reading mmrest
- - try at not generating moments...
- - Multi_measure_rest 'symbol'
-
-pl 58.jcn4
- - try at multi-measure rests: part.ly
- - bf's: slur get_encompass
- - bf: slur clipping
-
-pl 58.jcn3
- - experimental (--test) clipping of too high or tilted slurs
- - nicer slur control output and ps code
- - bit thicker and round-capped tuplet bracket
- - bf: slur.cc: RESIZE_ICE
-
-pl 58.jcn1
- - varray.hh bezier.cc, slur.cc patches to avoid gcc 2.8.1 ice
- - some inlining fixes
- - configure: use -O to enable inlining
- - included and fixed new make-patch.py
- - bf: Mutopia.make
- - bf: offset: operator - ()
- - ugly hack bezier: do blow_fit twice
- - bf's: bezier: rotate,translate
-
-***************
-pl 58
- - more *.make hacking
- - bracket fix (AG)
- - clef fix (PC)
-
-pl 57.jcn1
- - reincluded test/bow.cc
- - promoted Bezier bows to standard
- * bf's: broken slurs
- * some bf's: verneukeratificering van JCN code
- * some bezier slur doco
- * calculate Ties with Bezier bow
- * junked tex-slur.cc
- * junked ps-slur code
- * junked height-only slur-correction
- * lots of bezier/slur fixes
- * bezier:blow_fit
-
-**************
-pl 57
- - verneukeratificering van JCN code.
- - lots of updates on our own makefile system.
- - junked automake & documented it
- - put rods into Spring_spacer too. Much cleaner
- - bf: weird spacings (enge floats)
- - bf: too many constraints added.
- - smarter constraint check
- - bf: table16 fontsize.
-
- - 56.jcn1's empiric computer science.
- - debian patches (AF)
- - solaris/irix patches (AO)
-
-
- pl 56.jcn5
- - bezier and slur: cleaning and fixes
- - bf: removed silly experimental beam feature
-
-pl 56.jcn4
- - reintruduced slope in bug [c8 c16 c16] in favour of stemlen bug...
- - staff-side: accent half line higher
- - reincluded silly los-toros latex file
- - bf's: bezier.cc,bow.cc, mat.hh: rotate
- - bf: bezier slur: handle broken slurs
- - bf: beam
- - dehairifications of bezier.cc
-
-pl 56.jcn3
- - bf's: offset multiply, matrix rotate
- - dropped los-toros latex file
-
-pl 56.jcn2
- - even nicer excentric slurs;
- - input/slur-bug.ly
- - los-toros with barnumbers ;-)
- - nice version of height-ajust bezier slurs (see sleur.ly --test)
- - bf's beam:
- * slope in[c8 c16 c16];
- * allow no INTER position for normal quantising
-
-pl 56.jcn1
- - bezier curves with raaklijnen
-
-pl 56.ag1
- - `Makefile.am.wild's now should work correctly with VPATH (AG)
-
-************
-
-pl 56
- - more dutch vocabulary
- - Barnumber FAQ added
- - bf: abbrev over whole note.
- - feta: reverse turn.
- - bf: rod distance
- - bf: local key clashing
-
-***********
-pl 55
- - bezier check and ajust for slur height
- - better slur height ajust
- - DO chmod 755 *test/*sh
- - bf: discretionary of ||
- - bf: scripts within staff
- - NOT Grandstaff -> Grand_staff (yet?)
- - bf: cresc. decresc. height lookup.cc,init/table*
- - bf: staff-symbol (script placements)
- - staff-group-bracket
- - bf's preludes, los-toros
- - nicer trills
- - adjustment slur extend
-
-**********
-pl 54
- - bf dynamic_grav
- - bf accidentals with key change
- - bfs with command-items in non-breakable columns.
- - typos (thanks LM)
-
-pl 53.jcn1
- - two new BUGs
- - preludes-* with trills
- - nicer trills
- - fixed ugly slur extend bug
- - first try at symphonic work: (start of) Coriolan
- - fixes: los-toros
- - test/ with some stupid tests
- - bf, again midi-output
- - --no-timestamps options for lily/mi2mu (to enable make check targets)
- - removed doubles in lilypython
- - smarter prev_version for make-patch
-
-***********
-
-pl 53
- - bf: c4 \< c4 \<
- - bfs of spacing stuff
-
-
-pl 52.jcn6
- - make check target
- - moved flower/test to flowertest
- - dist fixes
- - flower no longer independent package
- - bf: GNUmakefile
- - bf's: configure: debugging (default) /profiling
- - bf: Rational iface (fixes MIDI output)
- - bf: non --srcdir configure + build with GNU make (ugh)
- - ugh: autowildflower
- - bf's: invoking wild-perl
- - bf: ugh: staff-side.cc: placement height
- - bf's: gnu 2.7.2 link (huh?, everyone using 2.8?)
- - make-patch: default diff against (copy of) srcdir
- - bin/conflily configures in ../build
- - GNUmakefiles that do:
- * auto-update of Makefile.am.wild
- * auto-switch to builddir
- - bf's: configure --srcdir
- - fixes for los-toros/twinkle/test-lyrics
- - latex file for los-toros (ugh)
- - staff-side: symbols closer...
- - half fix of midi output? duh.
- - oboe1 los-toros
-
-************
-pl 52
- - split up elem-group stuff.
- - per line widths
- - miscellaneous fixes by WL.
-
-
-pl 51.jcn1
- - bf's: dutch->nederlands
- - Cygnus b19 compile/link fixes
-
-************
-march 27
-pl 51
- - changed dutch -> nederlands, german -> deutsch etc.
- - norwegian (AG)
-
-pl 50.jcn4
- - fixes for cygnus' gnu-windows32 beta19
- be sure to compile with -fno-rtti
- - proof of concept for automated updating of Makefile.am
- see mi2mu/GNUmakefile (still somewhat clumsy)
- - mv'd both config.hh.in to acconfig.h
- - copied printing/debugging/optimising options to flower conf
- - (some modified) fixes from AO
- - beginnetje los-toros-oboe
- - bf: DIR_DATADIR
- - bf: trills
-
-************
-pl 50
- - deprecate autowild
- - --srcdir fixes
- - ly2dvi 0.8
-
-pl 49.jcn2
- - static (default) and/or shared libs flower and lily
- - patch from AO 'libtool 1.1.1'
- - mf: trill-symbols: feta-slag.mf
- - shared libs (ugh: hardcoded switch in configure set to static)
- - some fixes: denneboom.ly, standje.ly/standchen.ly
-
-********
-march 19
-
-pl 49
- - parser assert changed to warning
- - fix stdin reading
- - small jcn fix
- - changed unbound Spanner from assert to warning
- - forced breakpoints
- - add a nowildcard: stmt to wild-perl
-
-pl 48.jcn5
- - ugh: double parser/lexer:
- be sure to rm lily/parser.cc lily/lexer.cc or bin/clien
- before re-running autowild!
- - V.RSION
- - bin/clien bin/meek
- - bf's: flower/VERSION, flower/config.hh, lily/lexer/VURSION
- lib/config.hh bin/convent-mudela
- - lost of automake fixes
- - automake
-
-******
-march 12
-pl 48
- - Pitch_squash_engraver makes Rhythmic_staff possible.
- - some fixes to buildscripts for sgi irix
- - misc. patches (WL)
- - move away from libg++: rolled own Rational class..
- - don't make gif files Documentation/ by default
- - ly2dvi manpage (JAF)
- - ly2dvi 0.7 (JAF)
- - more clefs. (MB)
-
-pl 47.jcn2
- - bf: interbeams and beam-stemlengths for size != 16
- - bf's: preludes
- - more introduction
-
-pl 47.jcn1
- - voice{one,two,three} defines
- - preludes-*: fixes, junked multi, broke-down score-block
- - mudela-book: added center option
-
-******
-march 6
-pl 47
- - Abbreviation now a separate item.
- - bf'd some gcc 2.8 warnings.
- - bf'd spurious space in autodep.
- - more clefs (MB)
-
-pl 46.jcn1
- - start mudela introduction
-
-
-pl 46.jcn2
- - bf's: preludes-*
-
-*******
-feb 27
-
-pl 46
- - span-bar at upstep.
- - bf: \score { \score_identifier }
- - tenor clef (MB)
-
-pl 45.jcn2
- - preludes-4,5,6
- - bf's denneboom (oeps, see loop)
-
-pl 44.jcn7
- - text-item.cc: try to get fingers just above note...
- - set minimum space between columns
- - bff: mf/Makefile out/*log required: new .ly .tex's with make-dist :-(
- - bf's midi ascii-debug output
- - bf: property instrument
-
-*******
-feb 12
-pl 45
- - bf: translator switching
- - SunOS and IRIX patches (AO)
- - preludes bugfixes; preludes.tex ugh (JCN)
- - shared lib numbering (AF)
- - various fixes for debian (AF)
- - ly2dvi .6.jaf (JAF)
-pl 44.jcn6
- - bf: crescendo.cc: bigger and use bar_size
- - slur: guess extra height for height limit for extending notes/stems
- - ps: adjustable slur height limit, bf crescendo
-
-
-******
-feb 6
-pl 44
- - ly2dvi 0.6.hwn1
- - ly2dvi 0.6 (JAF)
- - use ly2dvi for website
-
-pl 44.jcn2
- - fingers default to above note
- - preludes-2.ly
- - parser: fingerings
- - preludes-1.ly
- - bf: denneboom.ly
- - preludes-3.ly.m4, standje.ly, preludes-4.ly
- - make rule for macro ly-files
- - pletvisibility (init/property.ly):
- * default no bracket with beams
- * invisible plet bracket feature
- - finger dir in text-def
-
-*******
-feb 2
-
-pl 43
- - bf: broken Plet_spanners
- - more GNITting
- - avoid some more global ctors, for NeXTstep
- - some NeXTStep patches from tiggr
- - don't do overstrike/bold chars in textfiles
-
-
-pl 42.jcn2
- - bit hesitating start of mutopia
- - bf: don't try to typeset unterminated plet
- - separately sticky plet durations: "c4 c4*2/3 c8 c4*1/1", ok Mats?
- - denneboom.ly (half-baked version)
- - indent and shape, see ^
-
-pl 42.jcn1
- - bf: memmem revisited
- - bf: ps: draw_plet vertical endings
- - renamed stem_start to stem_begin
- - bf: plet bracket placing on differently orientated stems
- - more standje.ly and fixes
-******
-jan 28
-
-pl 42
- - ly2dvi 0.5 (JAF)
- - italian.ly (thanks, Paolo)
- - bf: first \mudelapaper output (BS)
- - bf: cathedral + bazaar URL (thanks, Barrie)
- - bf: libc-extension.hh (AO)
-
-pl 41.jcn4
- - plet brackets (always) in ps (only)
- - Plet_spanner derives from bow
- - bf: mf/Makefile: let %.tex %.ly depend on %.mf,
- iso non-distributed %.log
- - mi2mu mudela 0.1.8
- - bit better plet number placement
- - handier plet syntax: [2/3 c8 c c ]1/1 and \[2/3 c2 c c \]
- - Plet_swallow_engraver for lyrics
- - bit better plet number placement (NOT)
- - new plet syntax: combined beam and plet open
- - more standje.ly
- - new plet syntax: start: \plet2/3 stop: \telp1/1
- - Plet_req, Plet_engraver; removed plet stuff from beam
-
-******
-jan 20
-pl 41
- - warn for score with multiple Music blocks
- - bf: \plet (MB)
- - \textsharp in 16pt
- - malloc frobnifying
- - more fontsizes: 26pt, 11pt, 13pt
- - \textstyle "bold"
- - .rpm: remove old fonts
-
-pl 40.jcn2
- - bf: typo scores.cc
- - bfs: non-default base constructor calls
- - bfs: virtual destructors
- - standje.ly: the real standchen (first bit)
- - gcc 2.8 compile
- - nicer scsii-menuetto
-
-pl 40.jcn1
- - bf: breaking of :| bar
- - bf: lyric substitution of _ -> ' ' flower/libc-ext:memmem
- - no slope=0 beams between stafflines
- - bf: tex without lily-ps-defs
- - bf: embedded mf shift: added '%' to \embeddedps
- - doos compile
-
-******
-jan 12
-pl 40
- - some doco fixes
- - debian diffs (AF)
-
-pl 39.jcn2
- - bf: bit smarter atan() for feta-sleur (thanks wendy)
- - bf: y quantise of multiple down beams (typo)
- - minor doc fixes
- - bf: distribute mfdeps and moved from mf/out/mfdeps to mf/mf.dep
- - some changes to ANNOUNCE
- - fixes for simple slur/tie placement
- - embedded MF fonts identified by parameters -> reusable runtime fonts
- - clean-embeds.sh
- - runtime MF beams: feta-beum.mf
- - bf: enable switching PS off
- - updated runtime MF feta-sleur.mf with new PS slur algorithm
-
-******
-jan 5 1998
-pl 39
- - 0.2 ANNOUNCE sketch
- - unix style paths for LILYINCLUDE env
- - show all output pages on website
- - ps-to-gifs.sh
- - bf: wtk1-fugue2
- - python make-website
- - higher brace resolution
- - phased out musixtex stuff
- - bf: rhythm.ly
- - PS slurs
- - PS beams
- - Bow units
- - turn on PS by default
- - turn off barnumbers by default.
- - bf: halfbeam size.
- - bf: -M bug
- - stafflinethick in PS (crescendi)
- - continued (de)crescendi (in PS)
- - bf: spurious beam reqs
- - handle unfeasible spacing cleanly.
- - ML-address change
- - output naming: default to basename[-serialnumber].{midi,tex}
- - bf: clef width
-
-pl 39.jcn2
- - make-examples.sh
- - leftright repeat sign + repeatbar dims
- - smaller minimum sized rod at end of bar
- - bf: spacing.ly
- - less space at begin of bar
- - experimental whitespace fixes at begin and end of bar
- - added to beams.ly
- - open-up beam spacing for mult > 3
- - fixed hang/sit to overlap iso aligne with staffline
- - fixed inter beam spacing, paper*.ly
- - scsii-menuetto.ly fixes
- - init/property.ly
- - property settings for beam quantiseing and damping
- - provisionary multiple-beam fix
-
-******
-pl 38
- - bf: \> \! \ff (crescendo overlap)
- - misc feta-fixes, flageolet sign.
- - midi tempo fixes.
-pl 37.jcn3
- - max beam slope "compile time parameterised" and set to 0.6
- (oh, how we need runtime generated beams!)
- - beam's left y-pos quantisation
- - beam slopes' y-span quantisation
- - stem.ly
-
-pl 37.jcn2
- - feta: fixed sizes small numerals + flageolet
-
-
-*******
-dec 12
-pl 37
- - --postscript
- - don't crash non-fitting grouping (thx, John)
- - attach unended spanners to a column (thanks John)
- - bf: unended tie
- - bf: tie direction
- - bf: unended slur
-
-pl 36.jcn2
- - feta: small numerals
-
-********
-dec 9
-
-pl 36
- - bf: notehead collisions
- - bf: dot y-position
- - use Item::break_priority_i_ for horizontal alignment of breakables.
- (it still sucks)
- - junk some derivation checks, junk Normal_*_bar
- - FlowerLib fixes.
- - twinkle fixes.
- - feta: flag/clefspacing
-
-
-*******
-dec 5
-pl 35
- - naming: lily-init iso symbol.ly
- - mf braces
- - center textscripts.
-
-pl 34.jcn1
- - mf: nicening of dyn, klef, rest
- - fingerfont
- - bf: 12/8
-
-
-********
-dec 2
-pl 34
- - bf: mf: numbers and alto clef
- - bf: scsi-menuet
- - PS crescendos
- - ly2dvi diffs (JAF)
- - debian diffs (AF)
- - w32 doco fix (JCN)
-
-
-********
-nov 24
-
-pl 33
- - added abbrev.ly to font.ly; rm'd abbrev.ly
- - don't process scores on parse errors.
- - bf: kortjakje.ly
- - bf: invisible stems in beams (abbrev.ly)
- - lytodvi script (JAF)
- - output Paper_def settings to TeX file. (eg: linewidth)
-
-********
-nov 19
-pl 32
- - change type checks (ughugh) to derivation checks (ugh)
- - this fixes clef bug.
- - bf: order of breakables: meter comes after bar.
- - bf: do error iso coredump on unknown symbol-table
- - bf: release.py, copy patch too.
- - bf: add makefile dep for disting MF logs.
- - bf: don't read font-en-tja*.ly, but feta*.ly
-
-pl 31.jcn2
- - first version of (non-ugh) c-klef
- - bf: mi2mu: notes of zero duration as comments
- - feta: ugh c clef
-
-
-********
-nov 17
-
-pl 31
- - bf: replaced Score_column assert by a warning (thanks Scott)
- - bf: mi2mu version output (thanks Scott)
- - faq updates
- - always output lily header with Lily version
- - bar mucking: make scorebars/braces different from repeat bars.
- - feta: repeatcolon, clef bf's
- - debian/ updates. (AF)
- - moved debian stuff into toplevel dir
-
-********
-nov 11
-
-pl 30
- - feta: G clef.
- - scripts now do relative coords (fixes lyrics + barnumber bug)
- - bf: Lyrics lexer mode
- - bf: bass clef
-
-********
-nov 6
-pl 29
- - feta: bass clef, bf: dynamics, bf: 64th flag
-
-
-********
-oct 30
-pl 28
- - revised Staff_symbol::brew_molecule_p ()
- - naming: \makelilytitle
- - fixes for TeX titledefs (JAF)
- - junked some obsolete pedal stuff.
-
-pl 27.om-je-te-helpen-met-je-ps-spul.jcn1
- - embedded slurs:
- * bf: placements
- * added \embeddedtex
- * postscript is default
- * fixed \embeddedps
- * fixed mf: draw_slur
- * postscript macro: draw_slur
-
-********
-oct 29
-pl 27
- - -t/--test switch for experimental stuff.
- - bf: debian optimize is not with 'z'
- - mf: naming feta fonts are now called feta16, feta-beams16, etc.
- - feta: ledgerline
- - lily adjustments for new and elegant ledger line
- - bf: mf-source path.
-
-pl 26.jcn1
- - bf: numerals
- - sleur.ly
- - embedded slur testing
- - bf + patch: make-patch release.py / VERSION
-
-
-********
-oct 26
-pl 26
- - bf: \transpose
- - feta: numerals 0 - 9, rewrote flags.
-
-
-
-********
-oct 22
-
-pl 25
- - variable stemlength
- - feta: 32nd, 64th flags
- - font.ly
- - dist & tarball made in out/
- - rewrote release.sh in python
- - notehead/stem attachment better.
- - more Stem cleanage
- - related Beam cleanage
- - started numeral font (JCN)
- - bf: whole rest outside staff.
-
-*********
-oct 20
-pl 24
- - internationalization preps (FP)
- - rewrote make-patch in python
- - BUGS: added another flex/libio crash explanation
- - feta: flags
-
-
-********
-pl 23
- - feta changes: 1/4 rest, flat, bf 8-128 rest
- - bf: cadenza
- - bf: scripts
- - bf: rest-collision
- - bf: meter placement
- - junked cpgento.sh
-
-*********
-
-pl 22
- - bf: lyric 's- Zondags
- - bf: colliding accidentals: renamed translate(Real,Axis) to translate_axis()
- - renaming of scripts
- - strings with escaped characters.
- - bf "string_with_\"_embedded"
- - bf: mf/Makefile
- - feta changes (trill, organ pedals)
- - updated mf-to-table for new feta conventions
- - changed header format to something sensible.
- - moved staff to centerline == 0;
-
-********
-
-pl 21
- - shrinking uses more energy than stretching
- - check IO error on writing (disk full?)
-
-
-*********
-
-oct 8
-pl 20
- - don't swallow non lyric-stuff in lyrics
- - x-position of Stem
- - more feta changes
- - move scripts to right
- - genheader.py replaces genheader.perl
-
-pl 19.jcn2
- - bf's mi2mu:
- * Midi_track_parser::note_end_all
- * staff output uses key, meter, tempo read
- * command line read minor key
- * minor key notenames
-
-pl 19.jcn1
- - small changes to sharp, fermata
- - small changes to lilypond.lsm+doc, lelievijver.lsm
- - mi2mu updeet + bf
-
-pl 19
- - bf: keyword.cc rm'd struct defs
- - dots: support for feta dots.
- - lots of font (feta) tjanges
- - mf-to-table rewrite in python
-
-*********
-pl 18.jcn1
- - check for python, mf-deps fix
-
-pl 18
- - bf: Box[X_AXIS] = b
- - bin/mf-deps.py script
- - moved beams out of font-en-tja into vette-beams.
- - Made corresponding .cc changes.
-
-
-jcn patches
- - egcs compile (no link yet)
- - nicer 4rest
- - beam font (je kunt wel tegen een grapje, eva?)
- - mf-to-table:
- * "breapth" (x-depth) feature
- * handle generic stuff such as beams
- - polished noteheads
- - fixed 8-128 rests
- - 4rest
- - mf-to-table generates tex defs
- - bf:mf-to-table and conflily outname check
- - 8-128 rests
-
-******
-sep 24
-
-pl 17
- - bf: ledgerline width
- - bf: toccata-fuga-E
- - took out some hardwiring of tex-beam
-
-pl 16.jcn1
- - mf-to-table.in: generate mozarella metric info tables
- - autometric.mf: write metric info to mf logfile
- - ital-r.mf, smaller ital-m.mf
- - variable streepjes length (top/bottomlines); fixed (for 20pt?)
- - streepjes twice as thick as staffrules
- - even more pronounced bolletjes -- how 'bout this wendy?
- - quarter and half note after drawings (a/b less distinct)
-
-*****
-sep 19
-pl 16
- - revised mudela-man a bit
- - ; optional after \musicidentifier
- - bf: doco about {Mus*,Opus}TeX
- - bf: configure: MFDIR
- - bf: String::operator bool () removed
- - bf: String::operator char const * () removed
- - bf: Line_spacer::~Line_spacer () added: plugged memleak
- - bf: Line_of_score::do_unlink () call Spanner::do_unlink
- - bf: rests in beams
- - bf: textnatural
- - bf: 20 pt flags
- - bf: longarest
-
-pl 15.jcn1
- - bf: typos whole and half notehead
- - de-uglyfied bolletjes.mf
- - ascii output of font metrics in mf logfile
-
-******
-sep 17
-
-
-pl 15
- - put top of NEWS file in the webpage
- - breadth first search for engravers.
- - bf: coriolan-alto.ly
- - Stem / Notehead width now properly calced
- - Atom and Symbol merged
-
-pl 14.jcn1
- - lily's own noteheads (balls/globes :) (font-en-tja*.mf)
- - {table,paper}* and taupindefs adaptations (when are we moving?)
- - fp, sf, sfz dynamics
- - font.ly
- - bf: dist mudela-mode
-
-*******
-sep 15
-
-pl 14
- - Simple but nifty mudela-mode.el for Emacs
- - slightly better syntax for single-note-repeat, now default kept in
-Stem_engraver
- - bf: Abbrev_beams are not the only beams (see: jcn4, stem-info, thanks, Jan)
- - a CPU timer for Interpreting and Breaking
- - Separate Score_elem:
- * invoke-once stuff in Super_elem (using function pointers; much cleaner now)
- * geometrical stuff into Graphical_element
- * Axis_group_* accept Graphical_elements iso. Score_elems
- * A dimension cache, hopefully this makes lily a bit faster
- * TeX output moved out of Score_elem, separate interface Outputter
-
- - < \multi 2; bla > -> \multi 2 < bla > (mudela 0.1.6)
- - bf: don't do \multi if \type specified
- - Translator switching: Change_translator, Change_iterator
-
-
-pl 12.jcn4
- - fixed dynamic f, magstep bug
- - gaps on abbrev-beams
- - bf: stem-info
- - bf: last abbrev
- - bf: stem: do_width
- - bf: removed rest-column.hh
-
-*******
-sep 11
-
-pl 13
- - big Rest/notehead rewrite:
- * separated Rest, Note_head and Dots
- * Dot_column: dots are now chord-wise aligned
- * Rhythmic_head is base for Rest, Note_head
- * Merged Note_column and Rest_column
- * Rest_engraver
- - grand Engraver/Translator/Performer rewrite.
- * properties: \property voice.dir = -1 (mudela 0.1.3)
- * Input_translator junked, now Translators are generated
-by the parser (mudela 0.1.4)
- * Translator changing: \translator Staff=oboesolo
- * Translator preselect: \type Staff=bla < c4 >. (mudela 0.1.5)
- * Engraver/Performer now derived of Translator.
- * Engraver_group_engraver/ Performer_group_performer derived of
- Translator_group
- * renamed: Voice -> Thread, Voice_group -> Voice
- - renamed Audio_score to Performance
- - junked mididef statics
- - Audio debug output
- - bf: excess [] in scsi
- - bf: swallow \skips
- - bf: don't crash on infinite dims
- - renamed wohltemperirt to wtk1-fugue2
- - bf: address in GPL
- - bf: errors in stdin
- - bf: stop if errors in init files
- - bf: move stem too when doing collisions
- - Molecule::add_XXXX -> Molecule::add_at_edge ()
- - doco updeet: why no midi FAQ, index, CodingStyle hungarian
-
-
-pl 12.jcn3
- - try at better dynamic font, copied from cmbxti10: mf/*
- - typesetting abbreviation beams; abbreviation-*
- - some simple abbrev fixes + code cleanup (dank je, lieverd)
- - typesetting simple abbreviations: c4:16 === [c16 c c c]
-
-pl 11mb
- - Support also for \longa in duration-convert.cc, init/ and tex/
- files. (MB)
-
-********
-sep 3
-
-
-pl 12
- - bf: don't redefine tex primitives like \textfont and \mathfont
- - nicer broken slurs (?)
- - bf: error status upon parse error
- - robustness in Lookup::*slur
- - bf: mi2mu: warn if 0-length string in midi-file
- - output id-footer
-
-********
-sep 1
-
-pl 11
- - forms for Musical vocabulary
- - ignore \r for windows
- - Now paper{score,def} & midi{def,score} derived of class
-Music_output[_def]. Score is almost empty.
- - Engraver hacking:
- * junk Text_engraver
- * Timing_engraver
- * barnumber now really counts the number of bars
- * Separated Stem_engraver and Beam_engraver
- * junk Stem_beam_engraver
- * no need for Stem_reqs
- - use Direction = {LEFT, RIGHT, UP, DOWN} iso. -1, 1 throughout source
- - ties and slurs with Drul_array
- - junked Spanner_elem_group
- - bf: w32 fixes
- - Spanner now spans items.
- - more GNITting ( bla ) -> (bla), indentation
- - Drul_array
- - Paper_column now is derived of Horizontal_group_item. Items
-are no longer hardwired into a Paper_column
- - bf: stdin input
- - PCol -> Paper_column
- - Wtk-i, fugue1, prelude1 (SR)
-
-*******
-aug 21
-pl 10
- - bf: init pending_indent_i_
- - output header to TeX file. Who wants to write TeX to make it work?
-
- - mi2mu: bf's, --key option
- - removed Duration(int,int)
- - bf: Duration_convert::dur2_str
-
-pl 9.jcn2
- - redo of mi2mu frontend (midi-parser)
- - bf: String_convert::bin2_i; added bin2_u
- - bf's: Binary_source_file
- - bf: constr. Tempo/Timing_req
-pl 0.1.8.jcn3
- - table20, standchen-{16,20}*
-*******
-aug 18
-
-pl 9
- - declare rhythic_request
- - preliminary support for real \mudelaheaders
- - context-sensitive arithmetic spacing. Looks alot better
- - silly GNU braces.
- - JCN fixes for pl 8
- - bf: midi instrument
- - Vocabs from GMP-I
-
-pl 8.mb:
- - use log of duration-name
-
-*******
-aug 15
-pl 8
-
- - gif -> xpm
- - bf: Whoops! Open eyes now, when finding shortest note in
-spring-spacer. Fixes spacing problems.
- - GNU coding: parentheses (here you are, Franc,ois :-)
- - all macros now UPPERCASE
- - Identifier blondification: don't use void*
- - Identifier doesn't store its name. Much cleaner now.
- - bf: Rest_collision_engraver now always announces
- - bf: announce Staff_sym only once
-pl 0.1.7.jcn1
- - complete redo mid/back-end of mi2mu
- - bf: do not create/play empty Audio-{text,instrument} events
-
-
-********
-aug 14
-
-pl 7
- - Audio_element as base for Audio_item and Audio_staff. fixes
-midi-lyric segfault
- - added "Gallina a due violini" (MB)
- - make MIDI files on website.
- - Collision now also is an Element_group.
- - bf: announce Collision when created
-
-********
-aug 13
-pl 6
- - bf: 13 shift/reduce in parser fixed
- - bf: plets in parser
- - bf: main.o (again)
- - german notenames (RM)
- - Score_elem::offset_ now relative to its X/Y groups. Slight
-speed increase?
-
-********
-aug 12
-pl 5
-
- - Wordwrap revert
- - added LilyPond in WWW titles
- - oops. A quaver is a 8th note, not a 4th
- - bf: main.o remaking in lily/Makefile
- - unhair Voice_iterator
- - bf: error if no music in score
- - bf: don't create translators if Chord element is empty
- - bf: ctor of Tempo_req
- - use virtual do_equal_b() for request comparison
- - bf: turned off default plets: c4*2/3 c4*2/3 -> c4*2/3 c4*4/9
- - bf: time_int() of an empty chord/voice
- - more corrections to GMP Manifesto
- - debian updates (AF)
- - bf: g++ ICE in Performer_group_performer
- - use fread() for reading in Simple_file_storage
-
-pl 0.1.3.jcn1
- - mi2mu: simplification +bf lily_stream: indentation and wordwrap
- - mi2mu: bf: blunt: non-alpha(num) chars from identifiers
-
-*********
-aug 11
-
-pl 4
- - correction of GNU Music Manifesto
- - moved lowlevel stuff of Source_file to Mapped_file_storage.
-Interface via File_storage. (Now using Simple_file_storage)
- - bf: c4-"A"-"B"
- - bf: exit status
- - declarable keys
- - Engraver_group_engraver::find_simple_engraver()
- - bf: lily/Makefile
- - bf: Midi_note_event ctor
- - bf: tempo request
- - popular twinkle twinkle (JV)
- - mudela: parse tempo requests, \midi{ \tempo 4= 60;}
-
-******
-aug 8
-pl 3
- - don't crash if no Clef_engraver.
- - PScore -> Paper_score
- - bf: Score_elem::extent() init of interval
- - bfs: {Horizontal,Vertical}_group related
- - bf: don't change original Item while doing making
- multiple copies
- - bf: configure DATADIR
- - bf: type of spanbar.
-
-pl 0.1.2.jcn1
- - minor doco fixes
- - revived Midi_walker
- - moved midi out of performer-* to audio-*
- - Audio_staff
- - removed all <ugh> members from performers
-
-*******
-aug 7
-pl 2
- - junked Line_of_staff
- - bf: --output
- - bf: . in lexer
- - bf: mi2mu version number.
- - bf: in mudela-book
- - bf: don't forget to make mi2mu
- - Bar_number_grav: measure numbers (experimental)
- - Bar_column_engraver, Bar_column: scripts on bars
- - rewrite of {Horizontal,Vertical}_group. Yes, again.
-Now neatly integrated into class hierarchy
- - Axis, Axis_group
- - Debian rules (AF)
-
-pl 0.1.1.jcn1
- - Audio{column,score,item,...}, more generic audio
- - bf: Makefiles
- - bf: mi2mu mudela version
-*********
-aug 5
-
-pl 0.1.1
- - {Horizontal, Vertical}_group. A score_element may be in at most one.
- - This means Horizontal_group_item and Vertical_group_spanner need special support.
- - This also means a big speed increase
- - configure cleanup
- - bf: Choleski solve.
- - doc updates: lilygut, INSTALL
-
-pl 0.1.1.hwn
- - recode of Break/Colhpos interfaces
- - Gourlay_breaking: dynamic-programming optimal solution for
- casting off. Word_wrap is still optional
- - some printing short cuts if no -d specced.
- - band_matrices for column calcs
- - more Diagonal_storage fixes
- - retake: INFTY fixes ( now infinity_mom, infinity_f )
-
-pl 78.jcn3
- - configure: ln and zip
- - target doosdist -> lilypond-x.x.x.exe.zip: + executables - sources
-
+pl 1
+ - mi2mu fix: \key "D"
+ - \hoffset
+ - started new NEWS file
+ - lots of stepmake hacking
+ - aclocal.m4 copied from stepmake
+ - ly2dvi 0.12
+ - build the doco from the source tree.
+ - include website in RPM
diff --git a/ONEWS b/NEWS-0.0
index f936254a1f..f936254a1f 100644
--- a/ONEWS
+++ b/NEWS-0.0
diff --git a/NEWS-0.1 b/NEWS-0.1
new file mode 100644
index 0000000000..f5e3562839
--- /dev/null
+++ b/NEWS-0.1
@@ -0,0 +1,2141 @@
+August 1
+
+VERSION 1.0.0
+
+ - scsii-paper: no wordwrap
+ - bf's: texinfo
+
+pl 85.jcn2
+ - ONEWS -> NEWS-0.1
+ - bf: zip: list of docfiles
+ - bf: install info
+ - bf's: rpm spec
+ - website ok
+ - mudela version bump -> 1.0.0
+ - bf's: '[a-g] -> ,
+ - bf: broken.ly
+ - ly2dvi fixes, (PC)
+
+pl 85.hwn1
+ - search & replace: jan@digicash.com -> janneke@gnu.org
+
+pl 85.jcn1
+ - website fixes
+ - debian fixes (thanks, Bastian Kleineidam)
+ - some (yet unfinished) doco
+
+*********
+pl 85
+july 30
+
+pl 84.hwn4
+ - revamped install directions.
+pl 84.eb1
+ - key undo
+
+pl 84.hwn3
+ - misc scsii fixes.
+ - doco fixes
+
+pl 84.jcn3
+ - bf: titledefs without poet
+ - scsii fixes
+
+pl 84.hwn2
+ - don't make key items if no accs present.
+ - Oops. Lyric spacing should go to the right (and not left) (thanks, PC)
+ - barnumbering break priority.
+ - bf: tied chords
+ - 16pt init for yodl-mudela
+ - split span-score-bar.{cc,hh}
+ - junked most experimental_features_global_b stuff
+ - revised AUTHORS.yo
+ - dot stuff. Added a Dot_column_engraver (thanks, Mats)
+
+pl 84.jcn2
+ - ly2dvi fixes
+ - w32/install doco fixes
+ - mutopia fixes
+
+pl 84.hwn1
+ - fixes for ly2dvi + titledefs (Peter Chubb)
+ - merge Span_dynamic_reqs too
+
+pl 84.mb1
+ - MF: Added breve and longa rests.
+
+pl 84 jcn1
+ - top website
+ - ps-to-gifs: TRANSPARENT_IS_BROKEN (ppc hack)
+
+pl 84.uu1
+ - doco fixes
+
+*************
+pl 84
+
+pl 83.jcn5
+ - bf: typo mudela-doc
+ - long getopt all the way
+
+pl 83.hwn5
+ - doco fixes
+ - bf: initialise axis_ filed of script
+ - separate versioning for mi2mu and flowerlib dropped.
+ - split bin/ in buildscripts/ and scripts/
+
+pl 83.jcn3
+ - egcs ICE stuff.
+
+pl 83.jbr2
+ - lily/midi-stream.cc: added appropriate MODE options to open
+ midi output as a binary file. This should be pretty harmless.
+ - lily/lexer.ll: added \r as white and black space to enable
+ W32 native editors. This also should be harmless.
+
+pl 83.jbr1
+ - flower/lgetopt.cc: report method fix. (String + char needs to be
+ fixed)
+
+
+pl 83.hwn4
+ - stepmake := stuff
+
+
+pl 83.hwn3
+ - \property maxVerticalAlign, minVerticalAlign tunes vertical
+ staff distances. See input/test/vertical-align.ly
+ - bf: scripts over chords. (thanks, PC)
+ - revamped aligning stuff: Align_element is baseclass
+ for Horizontal_align_item and Vertical_align_spanner
+ - bf: Clef_item with _8 does new/del correctly.
+ - more file renaming -elem -> -element
+
+pl 83.hwn2
+ - doco fixes (thanks, Lambert)
+ - tieydirection,slurydirection overrides ydirection (thanks, PC)
+
+pl 83.jcn1
+ - bf: stepmake
+
+pl 83.hwn1
+ - rm'd clean-embeds.sh
+ - rm'd \octave from all examples.
+
+pl 83.uu1
+ - mi2mu output mudela 0.1.21
+ - meter -> time_signature
+ - bugfixes for mi2mu, divide by zero error. (thx, JBR)
+
+
+********
+july 23
+
+pl 83
+pl 82.hwn2
+ - \musical_pitch -> \musicalpitch (mudela 0.1.21)
+ - meter -> time_signature,
+ - \meter -> \time (mudela 0.1.21)
+ - moving around files : -grav -> -engraver
+ - doco fixes
+
+pl 82.jcn5
+ - doc make fixes; stepmake 34
+
+pl 82.jcn4
+ - lots of doco build/install/website fixes
+ - junked some doubles from doco
+
+ - mi2mu syntax to 0.1.20
+ - bf: mi2mu col creation
+ - bf: stream << '\t', int
+ - bf: mi2mu version
+ - bf: font-body.ly
+
+pl 82.jcn3
+ - bf's: diff/stepmake
+
+pl 82.jcn2
+ - bf: slur blow
+ - tie/slur ydirection
+ - makeflags / diff fixes
+
+pl 82.jcn1
+ - rejects: verbatim copy of Coriolan from 81.jcn2
+
+pl 81.jbr2
+ - Documentation/README-W32.yo: Additions to section 2
+
+*******
+
+pl 82
+
+pl 81.jbr1
+ - NT fixes for release target
+ * stepmake/stepmake: %=--% => %=% in diff target
+ Cygnus make with MAKE_MODE=unix forces a MAKEFLAG of --unix.
+ This results in a ----unix switch being passed to package-diff.
+ This may break normal operation of this target.
+ * stepmake/bin/package-diff.py: added a do nothing option --unix
+pl 81.jcn2
+ - bf: abbrev
+ - found ugly slur bug
+ - egcs workaround
+ - more Coriolan fixes
+ - half-beam fix
+
+pl 81.hwn2
+ - lots of vocabulary
+ - break_priority_i_ fixes: barnumbering, marginstuff, marks now work more or less
+ - wrote lilypond-docs RPM spec
+ - major brainsurgery: class Graphical_axis_group:
+ * derive Axis_group_element from Graphical_axis_group,
+ * derive Graphical_axis_group from Graphical_element
+ - junked input/minimal.ly
+
+
+pl 81.hwn1
+ - cleaned up parser.yy (removed \textstyle from parser, other stuff)
+ - Slurs have height too.
+ - typewrite textstyle
+ - added error rule to music.
+ - Documentation/pictures/ subdir
+ - Documentation/topdocs/ subdir
+
+
+pl 81.jcn1
+ - coriolan fixes.
+
+******
+july 16
+
+pl 81
+
+pl 80.jcn1
+ - Coriolan: bulk remainder of strings
+
+pl 80.hwn1
+ - junked coriolan-alto.ly
+ - the great Search & Replace
+ * Score_elem -> Score_element
+ * hanwen@stack.nl -> hanwen@cs.uu.nl
+ * Colinfo -> Column_info
+ * add () -> add_xxxx ()
+ * Col_hpositions -> Column_x_positionso
+ - lily-proto.hh cleanup
+ - moved Dot_column creation. Dot bug fixed
+ - typos README-W32
+ - ADD_THIS_TRANSLATOR uses templates now.
+
+pl 80.eb1
+ - accidental transposition
+
+
+*******
+
+pl 80
+ - some make vs $(MAKE) bugs
+
+pl 79.hwn1
+ - bf lily/VERSION depends on toplevel VERSION
+ - bf postbreak_only scripts
+ - Staff_side now is horizontal too
+ - rm'd \octave in scales.ly
+
+pl 79.jcn2
+ - w32 support doco (JBR)
+ - bf: install info
+ - truncated some very long filenames (not bo length)
+
+pl 79.jcn1
+ - bf: ps-to-gifs
+ - html fixes
+ - more italian (TDM)
+ - more coriolan
+
+
+*********
+pl 79
+
+pl 78.hwn2
+ - reversed some of the beyond-too-ugly hacks for script/staffside.
+ - bf: Axis_group_element::access_Axis_group_element () (2nd fix for Hara_kiri)
+ - more .bib stuff.
+ - more doco, lots of small fixes for .yo stuff.
+
+
+pl 78.jcn2
+ - bf: make docxx
+ - some doco/website fixes
+i - screenshots for website
+ - fixed locale
+ - v78
+ - w32 doco
+
+pl 78.hwn1
+ - more bib fixes
+ - uniformised virtual accessors for Score_elem children.
+ - bf Hara_kiri seg fault
+ - changed left == right spanpoint assert into warning
+ - changed Lyrics.textstyle to Voice.textstyle where appropriate
+
+pl 78.jcn1
+ - counter fix
+
+************
+
+pl 78
+
+pl 77.hwn1
+ - Key transposition (MB)
+ - move .dstreamrc to dstreamrc
+ - make website fixes. junked z.yo, language.yo
+ - split off computer stuff from engraving.bib
+ - articles from CMJ added to computer-notation.bib
+ - doco fixes
+ - syntax of \skip and \partial changed; take only single durations
+
+
+
+pl 77.jcn2
+ - mark placement
+ - w32 doco
+ - html-footer: (PACKAGE)_COUNTERPATH
+
+pl 77.jcn1
+ - doco, bib fixes
+ - fixed \mark A; \mark 12;
+
+pl 77.hwjc
+ - dropped perl
+ - py fixes
+
+
+pl 77.uu1
+ - \textstyle obsoletized, use \property Voice.textstyle now.
+
+*******
+pl 77
+ - bf: install info
+ - bf: key-grav.cc: ambiguous conversion
+ - bf: mudela.yo glossary em() -> \emph{}
+
+pl 76.jcn1
+ - irix compile install fixes, .bib stuff (HWN)
+ - bracket bit lighter
+ - brace/bracket placement
+ - minor fixes in key code
+ - small website fixes
+ - invocation mudela-book
+ - try at bracket/brace placement
+
+pl 75.mb1
+ - Introduced real key names, \key e; gives E major!
+ - Previous use of the \key command now called \accidentals,
+ \accidentals fis cis gis dis; gives E major.
+ - Support for special keys with different accidentals on
+ different octaves, \specialkey \accidentals Fis Bes gis aiss';
+
+**********
+pl 76
+ - website examples:
+ * Thread -> Voice
+ * 18 -> 19
+ * type /consists Engraver vs Line_engraver stuff
+ - bf: mutopia-index
+ - to relative: twinke-pop
+ - bf: clef-grav: null pointer assignment
+ - ran convert-mudela
+
+pl 75.jcn3
+ - minieme fixes (HWN)
+ - bf's: node() names have changed: Mudela Book/ Convert Mudela
+ - bf: lilyponddefs.tex: removed \fi, added braces
+
+pl 75.hwn2
+ - bf lilyponddefs.tex: added \fi to \ifs
+ - convert-mudela in python
+ - mudela-book in python.
+ - bf memleak Score_elem::do_brew_molecule ()
+ - bf array bound read String_convert::split_arr
+ - bf free mem read Item::Item (Item const &)
+ - bf memleak Midi_walker::do_{stop,start}_note ()
+ - bf memleak Spanner::do_brew_molecule ()
+ - bf plet-engraver memleak
+ - checked input/bugs dir.
+
+pl 75.hwn1
+ - junked octave (mudela 0.1.19)
+ - more .bib stuff
+ - doco fixes.
+
+pl 75.jcn2
+ - binary releases:
+ * make deb
+ * dpkg 1.4.0.23.2
+ * debhelper 0.96
+ * /usr/bin/db_*: remove -p from install options (urg)
+ * make rpm
+ * make zip
+ - path to nice lilypond.info (must have a go at auto-nodes):
+ * mv'd Documentation/man/lilypond-info.yo -> Documentation/topinfo.yo
+ * included mutopia as example
+ - bf: gifs: $(wildcard)
+ - leave tarball in out/ too, after 'make release'
+ - mf-to-table: --package
+ - typo configure.in
+ - nt make fixes (JBR)
+
+pl 75.hwn1
+ - clef 8 fix (AG)
+ - junked octave (mudela 0.1.19)
+ - more .bib stuff
+ - doco fixes.
+
+pl 75.jcn1
+ - dropped mf/Rules.make
+ - dropped target doosdist
+ - dropped lilypython/pythonblurb
+ - --package rest of python exes
+ - packagepython/package-diff fixes
+
+
+**********
+pl 75
+
+pl 74.jcn5
+ - lost of (step)make fixes
+ - 'make release'
+ - --package
+
+pl 74.mb1
+ - Fix ":|:" that spans several staffs
+ - bf: bar.cc, table of breaks
+ - bf: engraver.ly, Complete the addition of ChoireStaff
+ - bf: lilyponddefs.tex, placement of ":|".
+ - Cleanup clef-item and clef-grav, prepare for dictionary
+ of clef names.
+
+pl 74.jcn4
+ - cygnus fixes: doco, compile, install
+
+pl 74.jcn3
+ - packagepythonified genheader
+ - stepmake 21
+
+pl 74.jcn2
+ - renamed: ../redhat to ../RedHat
+ - renamed (or huh, was this a typo?):
+ ../sourcetree -> lilypond-x.y.z to ../lilypond -> lilypond-x.y.z
+ - what about ~/rpms; see stepmake/Variables.make?
+ - README.txt
+ - debashify: zet-lily (HWN)
+ - www, yodl, stepmake fixes
+ - ls-latex fixes
+ - mudela.yo fixes
+
+pl 74.jcn1
+ - mudela.yo fixes
+ - bf: add-html-footer: duplicate <body>
+
+*********
+pl 74
+ - bf: ps-to-gifs fix
+
+pl 73.jcn2
+ - irix configure/link fixes (HWN)
+ - untested fix for "^\f" (HWN)
+ - add-html-footer: bgcolor=white
+ - m.yo: successful 2tex and 2html
+ - ps-to-gifs additions and fixes
+ - bf: --output
+ - (step)make targets:
+ * diff
+ * help
+ * rpm
+ * zip
+ - yodl-1.30.pre4: handle mudela(options)(mudela)
+ - small m.yo example for mudela.yo
+ - crude tex2yodl in stepmake
+ - mudela from stdin: default to filter behaviour
+ - allow lelie to act as a pseudo-filter --output=-
+ - fixed faq.yo
+ - atvariables
+ - bf's: module-deps
+ - bf's table-to-html and invocation
+ - small doco fixes
+
+pl 73.hwn1
+ - more doco
+ - got rid of weird <> semantics
+ * Ties_engraver, Note_heads_engraver
+ * depracated \multi
+ * depracated Thread context
+
+ - wtk1-fugue{1,2} now in relative mode.
+ - don't create Rest_collision, Collision if no more than one
+ collider (interpreting should be faster, less mem usage)
+ - depracate Line_group_engraver, must use Line_group_engraver_group
+
+
+pl 73.jcn1
+ - tiny topweb.yo fixes (added 'Documentation/out-www/' to some urls)
+
+*********
+pl 73
+ Yodl developent:
+ ftp://pcnov095.win.tue.nl/pub/yodl/
+ http://www.digicash.com/~jan/yodl/
+ - removed BLURBS from makefile
+ - stepmake pl 16
+ - To Yodl:
+ * *.pod -> *.yo (should fixup pod 'manpage' legacy)
+ * dropped pod2* config stuff
+
+pl 72.hwn1
+ - count "constraint off" as degeneracy
+ - zet-lily stuff.
+ - bf: add Meter_engraver
+ - bfs: tutorial
+
+pl 72.jcn3
+ - Documentation/man texinfo-> YODL!
+
+pl 72.jcn2
+ - more texinfo:
+ * texi2html workarounds: junked man/*.pod
+ * Documentation/man: pod -> texinfo
+ - Coriolan: viola part
+
+pl 72.jcn1
+ - doco/mutopia/website fixes
+
+*********
+pl 72
+
+pl 71.jcn4
+ - try at texinfo:
+ * lilypond.texinfo
+ * stepmake pl 13: texi2man
+ * lilypond.1 now generated from texinfo
+ * lilypond.info
+
+pl 71.hwn2
+ - changed QLP asserts to warnings; now you can see the
+shabbyness of the QLP code
+ - ChoireStaff context
+ - more tutorial doco
+ - mudela-book: name output files to per section and chapter.
+
+pl 71.jcn3
+ - bf: convert-mudela: added StaffGroup
+ - bf: various .ly: (WhyIsThis; we'll drop a_"bla" and use '_', no?)
+ - stepmake pl 12
+ - bf: abbrev + beam (urg: internote y dim bug)
+ - debian conffiles (AF)
+
+pl 71.hwn1
+ - vocab fixes
+ - more tutorial stuff
+ - quart -> fourth
+ - depracated contexts with _ in name (mudela 0.1.17)
+ - bf: don't crash if default context can't be found
+ - distinction between global and local \header block.
+
+pl 71.jcn2
+ - msgfmt check
+ - rpm: crude fix for input dir (urg: should get doc on rpm spec;
+ why is that so hard to get hold of in plain text?)
+ - found (bit undocumented) sticky abbrev mode in stem-grav:
+ c8:16 c: c:
+ * bf: enable disabling
+ * disabled sticky abbrev req
+ - urg: transposing for midi (should fix audio-items)
+ - sticky abbrev req: a8:16 a a a8:
+ - bit more coriolan
+
+pl 71.jcn1
+ - added PATCHES to web page
+ - rpm-dist, doos-dist, show-latest to step
+
+********
+pl 71
+ - bf: po install
+ - fixed somewhere: space between bar line and first note [HWN]
+ - bf: DOTTEXT
+ - bf: (don't) install libintl
+ - configure fix for irix tr
+ - bf release.py
+ - stepmake-0.1.9: fixes make install, rmp-dist
+ - bf: mf-to-table
+ - make-patch: lily-diff
+
+pl 70.jcn6
+ - make htmldoc defaults to out-www
+ - moved some python stuff to stepmake-0.1.8
+ - aux config scripts from stepmake
+ - stepmake-0.1.7 as ./stepmake: drop versioning on sub-package dirnames
+ - po fixes
+ - computer-forms.el
+
+pl 70.jcn5
+ - bf: Documentation/make html
+ - bf: coriolan ... almost there
+ - bf's: lilyponddefs: (fixes make website)
+ * moved errordefs (mmm, perhaps \input's should have been moved...)
+ * moved def of interscoreline
+ * moved def of setdynamic
+ - stepmake 0.1.6
+ - include fixes
+
+pl 70.jcn4
+ - configure stepmake too
+ - make dist recurses into stepmake
+ - stepmake-0.1.5
+
+pl 70.jcn3
+ - make; make dist work (without packaging) stepmake-*
+ - mv'd outputter* tex-outputter*
+ its not so handy to have files with the same prefix as our out dir :-)
+ - verbatim included stepmake-0.1.4
+ - DOTTEXT->.txt
+ - verbatim included stepmake-0.1.3
+
+pl 70.jcn2
+ - changed 'current' to 'lilypond' in scripts that only i ever use...
+ - tenuto shorter, thicker and follow into staff
+ - computer{.data,-forms.el}
+ - mark
+ - by default don't make libintl
+ - make install for libintl
+
+pl 70.jcn1
+ - generic make fixes
+
+********
+pl 70
+
+pl 69.jcn4
+ - included libintl from gettext-0.10
+ - fix: staff-bracket on one staff too
+ - bf: lilymake/Rules
+ - generic lily-make-0.1.0 package; shared as example with lilyx-0.1.0
+ - junked automake stuff from aclocal.m4
+ - bf: BASH scripts
+
+pl 69.hwn1
+ - standardised virtual accessor naming for Requests
+ - doco updates.
+ - bf: tied accidentals.
+
+pl 69.jcn2
+ - now DATADIR = datadir = /usr/local/share/lilypond ...
+ - bf's: DATADIR/datadir: by default: /usr/local/share; '/lilypond'
+ must be added whenever necessary
+ - bf: begin/end html for BLURBS; junked html-accents...
+ - html-accents
+
+********
+pl 69 (june 2)
+ - bf: table-to-html: convert_html
+ - bf: added fingerfont in fetdefs.tex
+ - crude fix: fetdef repeatcolon
+ - gallina.ly to relative octave mode (MB)
+
+pl 68.jcn3
+ - bf: libintl.h include
+ - readded: DATAFILES =.*data (too late, computer vocab missing...)
+ - span-score-bar:
+ * don't set piano braces that span less than two staffs
+ * don't set staff brackets that span less than one staff
+ - bf: abbrev (internote dim)
+ - more coriolan, hara-kiri
+ - add arcs to bracket height to avoid colliding of brackets
+ - HAVE_GETTEXT
+ - computer.data: modest start of computer-related vocabulary
+ - configure (localdir/datadir) fixes
+
+pl 68.nenn1
+ - fix for postbreaks past line_group
+ - bf: harakiri: set empty
+
+pl 68.hwn1
+ - use AFM iso autogenerated table.
+ - more bits of tutorial
+
+*********
+pl 68.jcn2 (may 29)
+ - bf: configure.in localedir/datadir (urg)
+ - libc-extension.cc: vsnprintf + check
+ - bf: blurbs
+ - @BASH@ for scripts that are actually (still...) bash iso sh
+ - check for bash
+
+pl 68.jcn1
+ - gettext/intl checks; (AO)
+ - bf: meter-switch
+ - COPERTINA
+
+pl 68
+ - AFM file stuff: afm.cc, afm-reader.cc, mf-to-table.py
+ - removed c0 position from get_staff_info ()
+
+pl 67.jcn2
+ - grace example
+ - bf: sticky plets
+ - bf: s0
+ - bf: twinkle.ly
+ - junked implicit to-string conversions
+ * now used Scalar for all explicit implicit conversions
+ * moved implicit-conversion String constructors to to_str (...)
+ - _f with Strings
+ - bf: BLUB: re-added empty line
+ - bf's: reincluded: tar-docxx.sh, topweb.pod.in (<aol>me too!</aol>)
+ - po: unification/breaking-up of (some) messages
+ - crude get-lily/build-lily scripts
+ - make targets "po-update" "show-po-update LANGUAGE=xxx"
+ - handier internationalisation funcs _(), _f () iso macro
+ - String_convert::form_str (fmt, ...)
+
+
+*******
+pl 67 (may 27)
+ - multiple font sizes. See input/test/sizes.ly
+ - w32 blurb by Dominique Cretel
+ - bfs faqs
+ - cleaned Identifier further; canonical accessors
+
+pl 66.jcn7
+ - bf: hara-kiri clefs: (the "u" is "\unknown"; how to fix this?)
+ - bf's: make website
+ - better configure language message
+ - bf: lilpond.spec
+ - bf: configure/localedir
+ - internationalisation: po/*
+ - distribute mutopia/ in binary rpm too
+ - FLAPTEKST
+ - "generate" all debian conffiles in out/
+ - BLOEP; and BLURB substituted by configure throughout doco
+
+pl 66.jcn4
+ - bf's standchen
+ - website fixes for .fly
+ - target doc++; tar-docxx fixes
+ - topweb fixes
+ - configure check for pod2html 5004/5003
+ - switch init file on extension (some new ones):
+ * init.ly: normal structured Mudela
+ * init.fly: simple Mudela (for on-the-* without tape ly's)
+ * init.sly for simple init (no properties,scripts,midi)
+
+ - bf: stem with flags (forgot internote dimension)
+ - bf's mutopia (urg, properties)
+ - String_storage: parse string identifiers (i didn't do it, nobody saw me do it, you can't prove anything)
+ - scsii-prelude: urtext and suggested slurs separated
+ - converted twinkle, kortjakje, standchen, preludes to relative
+ - conflily -> zet-lily
+ - -Q --find-quarts option
+ - bf: add-html-header: mailaddress () iso mailaddress
+ - bf: show-latest looks at MY_PATCHLEVEL too
+ - fixes scsii
+
+
+
+***********
+pl 66 (may 18)
+ - junked literature.pod (we now have the .bib file)
+ - bits of mudela.doc
+ - other-packages.pod -> other-packages.bib
+
+pl 65.jcn3
+ - print_dimen: don't print "NaNpt"
+ - fixed Coriolan, added "instrument" and "instr"
+ - MIDI favours property "midi_instrument" over "instrument"
+ - Bar::do_height iso brew_molecule hack: not quite yet...
+ - stem/beam: more stuff runtime
+ * beam-dir-algorithms
+ * beam-stemlengths: take unnatural dir into account
+ * natural stemlength
+ * forced stemlength shortening
+ - bf: Bar: don't make molecule if invisible; fixes hara-kiri
+ - robustification of MIDI: never return "", always return sane
+ string and print warning
+ - bf: typo Key_change_req::sharps(); fixes MIDI
+ - scsii: new relative octave fixes, gigue
+
+pl 65.jcn2
+ - included some auto-generated mf files for MikTeX (doos).
+ - hara-kir: nicer set-transparent
+ - relative.pod: doco'd blonder relativeness
+
+
+pl 65.jcn1
+ - staff-margin-engraver
+ - blind scsii fixes for new relative mode
+ - bf's: hara-kiri-*
+ - jumps in topweb.pod
+
+*********
+
+pl 65 (may 15)
+ - fixes for template instantiation (AO)
+ - junked standchen-easy,
+ - mudela 0.1.15: deprecate \duration, junked \octave relative
+ - small doco fixes
+ - moved data from Melodic_req into Musical_pitch (analogous to
+ Duration and Rhythmic_req)
+ - implemented \relative c' { .. } and associated Relative_octave_music
+ - junked \octave relative;
+
+pl 64.jcn2
+ - simple compile fixes
+ - bf: beam:stemlens:knee
+ - hara-kiri-*
+ - bf: ctags
+ - preludes-3.lym4
+
+*********
+pl 64 (may 13)
+
+pl 63.jcn3
+ - beam stemlength stuff runtime
+ - dropped lq for beam-stemlengths, fixes [d d d] [d g d]
+ - ugly sed fix for commas in .ly.m4
+ - beam damp corrent fix
+ - scsii: small fixes
+ - preludes.ly; dropped silly preludes.tex
+
+pl 63.jcn2
+ - vocabulary on website
+ - data-to-html.py
+ - bf: beam damped-slope correct
+ - bf: make website
+ - some preludes-* fixes
+
+pl 63.jcn1
+ - "relative" sizes for titledefs
+ - bib2html/man2html urls in INSTALL.pod
+ - auto-generated feta stuff in doosdist
+ - bf's: make dist, docdeps
+ - bf's scsii
+
+************
+pl 63 (may 11)
+
+ - non_fatal_error () (should use!)
+ - Mozart Horn concerto 3, horn part
+ - bf: plet-spanner
+
+pl 62.jcn11
+ - bf: beam::set-stemlen:iterations
+ - knee-bug.ly
+ - use knee in menuetto-ii
+ - bit on slope damping
+ - some bf's and doco
+ - bf's scsii
+ - scsii: bf' new: sarabande
+ - bf's allemande, courante
+ - bf: knee: stem through beams
+ - bf: too high beams
+
+pl 62.hwn1
+ - bf jcn8: deep copy Scope (ughugh. I want GC!)
+ - cleaned Identifier
+ - mudela 0.1.14 'a -> a,
+ - class Scope
+ - .bib updates
+ - key robustifiction for extreme octaves
+ - ly2dvi 0.11
+ - energy "normalisation" removed.
+
+pl 62.jcn8
+ - beam: knee input/test/knee.ly
+ - vimrc init for lily
+ - errors display column number too
+ - scsii: bf's, new: allemande, courante
+ - looked at lyric lengthen "mir________." (eerste weigering)
+ - beam: knee [c \stemdown c' \stemup 'c]
+ - expressions parsed at identifier_init
+ - bf: slur/stem/whole x-adjust:
+ * use note-col width iso mean note-witdth
+ * note-column:width ()
+ - now string variables in paper too -> mudelapapersize
+ - paper_def: real dict -> identifier dict
+ - My_lily_lexer: identifier dict stack
+ - init paper and a4 stuff
+ - \include \string
+ - all rvalues from parser var pool -> access rvalue as \rvalue
+ - string variables
+ - ly2dvi 0.10.jcn1
+ * mudelapiece, mudelaopus (ugh, fix)
+ * textheight
+ - more titledefs
+ - bf: table 20 typeface widths
+ - bf: toplevel/*.txt
+ - bf: ugly Documentation/mutopia fix (should rename dir to Mutopia/ ?)
+ - bf: make examples
+ - www.digicash.com/~jan/lilypond
+ - make website fixes
+ - ambiguity fixes in .ly's
+ - bf: relative-octave warning
+ - relative-octave: guess if ambiguous
+ - ambiguity warning for relative mode
+ - scsii: prelude
+ - bf: slur gap
+ - bf's: scsii: menuetto
+ - .txt -> $(DOTTEXT)
+ - make website fixes
+ - .txt fixes
+ - bf: typo make-patch
+ - bf: *dist.sh cleanup
+ - bf: release.py
+ - bf: make/Targets doc (removed .txt extension)
+ - rpm-dist.sh
+ - make doos dist fixes
+ - doos-dist.sh windoze dist script
+ -- removed useless spacing hack at spring-spacer.cc:692
+ - bf: los-toros: do multi-bar rests (setting SkipBars = 1)
+ - scsii-menuetto.ly -> menuetto-urtext.ly, -cello.ly and -alto.ly
+ - bf: \octave c'; for relative-octaves
+ - bf: Documentation make
+
+*********
+pl 62
+ - no-touch hak.
+ - bfs: multi measure rests
+ - fixed the website.
+ - add extra space after breakable columns.
+
+
+pl 61.jcn8
+ - mudela relative octave feature:
+ * Documentation/relative-octaves.pod
+ * \octave relative;
+ * lilypond -f for automatically finding new relative quote positions
+ (sorry, fully automated convert is too complex)
+ * mutopia/ltor.ly: octave quotes reduced from 511 to 59
+ - better conflily
+ - bf: abbreviation-beam-engraver: set beam::multiple_i_
+ - bf: open_abbrev_parens
+ - dotted/dashed slurs/ties
+ - fixed-up scsii-menuetto; use dotted-slurs
+ - slur_thickness runtime
+ - bf: typo lilyponddefs: elevendefs
+ - moved hard-coded slur parameters to runtime
+ - make-patch -r: diff against latest release
+ - allow semicolons after paper_identifier and \include
+ - params.ly: parameterised some paper vars
+ - bf: beam quantise for slope = 0
+ - interbeam (mult>3) open-up to paper-def to paper!
+ - "implemented" Paper-def::staffheight
+ - simplification + bf bezier clipping
+ - vandale fix
+ - moved doco from paper*ly to fonts.doc
+ - papers with expressions
+ - paper20.ly: rewrote precalculated values as expressions
+ - simple expressions in mudela (paper-body only)
+ - beam_thickness centralised and run-time...
+ - \nobreak
+ - bf: beamquantise: never sit if mult > 1
+ - bf: broken slur y-offset (not!)
+ - pagelength hack in tex/headers
+ - alignment of bracket (in span-score-bar.cc)
+ - boolean *break_b to continue break_penalty_i; maar nu...
+ - removed paper20 includes, \paper_twenty from examples
+ - dropped latex files
+ - renamed standje, standchen.
+ - parser accepts range of mudela-versions
+ - Mudela_version
+ - String_convert::split
+ - bf's: los-toros-oboe
+ - braindead Break_req with penalty; junked Disallow_break_req and
+ Break_force_req
+
+pl 61.ag1
+ - implemented octave-shifted clefs.
+
+********
+
+pl 61
+ - bf: mudela-book error msgs
+ - don't dist feta-tables.
+ - bf: mf-to-table, deps[0] catch
+ - reworked initialisation parsing logic; Got a no-redtape mode
+ for free
+ - 20 pt staffsize now default
+ - dependencies for LilyPond (-d, --dependencies). --debug moved to -D
+ - (c) 1998
+ - ly2dvi 0.10 (JAF)
+ - changed \begin[options]{mudela} to \begin{mudela}[options]
+ - more WWW hacks.
+
+pl 60.jcn2
+ - minor adjust for asymmetricity of beam symbol
+ - added TEST beam quantisation; see input/test/beam-pos.ly
+ - removed some empty .cc .hh
+ - Grandstaff -> Grand_staff (After [Gerou] and Harvard Dictionary of
+ Music)
+ - bf's: slur and tie post-processing
+ - cleaned-up bow: get encompass
+ - cleaned-up beam-yspan and beam-leftpos quantisation
+ - misc.cc: some funcs to get lower and upper bounds from array of values
+ - interval.*: Slice (Interval of int)
+ - added some doco to beam.cc
+ - removed some x,y by-ref passing in Lookup
+ - cleaned-up beam-yspan quantisation
+ - cleaned-up slur get encompass
+ - configure: --disable-optimise for compile without -O
+
+pl 59.jcn4
+ - bf: beam quantise
+ - bf: sticky plet bug
+ - bf: chords in beam
+ - bf: typo beamquantisaton
+ - bf: don't blow_fit infeasible bows (x_i < x_0 || x_i > x_n)
+ - bf's: beam/stemlengths, beam-bug [c8 c16 c16]
+ - bf: placement broken tie
+ - yet another try to raise bar-number
+ - bf's: bow tangent clipping, allow higher bows
+
+************
+pl 60
+ - mats patches: use Latex font stuff.
+ - fixes to the .59 patch release (jcn)
+ - make website|examples target
+
+pl 59.jcn3
+ - bf: preludes-5
+ - no inline compiler warnings by default
+ - bf: gcc 2.8 compile bow.cc
+ - moved functions with loops from varray.hh to varray.cc
+ - bf: minimum length for tie
+ - slur clipping standard
+ - bf: second broken slur minimum length
+
+pl 59.jcn2
+ - added some to .dstream
+ - bf: second part of broken slur
+ - slur encompassing noteheads adjust
+ - bwv'd preludes
+ - bf: make-patch -d
+ - doc'd rerunning of autoconf
+ - rest of real standje (rename and move simplified standchen to
+ input/test?)
+ - bf: clipping
+ - bit better bar number placement
+
+pl 59.jcn1
+ - more INLINE
+ - bf: multi-measure rest
+
+pl 58.jcn7
+ - los-toros: do multi-bar rest
+
+
+
+***************
+pl 59
+ - ly2dvi 0.9.hwn1, -K switch,
+ - doc: moved manpages in separate directory.
+ - do WWW stuff via make
+ - mutopia-index.py
+ - ly2dvi 0.9 (JAF)
+ - multi platform build fixes
+ - junked embedded switches, embedded MF, obsolete TeX stuff
+ - junked virtual matrix storage: inlined most matrix computation,
+ speed increase of 30%
+ - junked taupindefs, eglerdefs
+ - rm'd taupin/egler from INSTALL
+ - doc: engraving.bib, colorado.bib
+ - input hierarchy.
+
+
+pl 58.jcn6
+ - multi-measure rests: moved acknowledge from timing-translator
+ to -grav
+ - slur clipping experimental...
+ - bo to b
+ - always announce multi-measure
+
+pl 58.jcn5
+ - bf: reset plet after reading mmrest
+ - try at not generating moments...
+ - Multi_measure_rest 'symbol'
+
+pl 58.jcn4
+ - try at multi-measure rests: part.ly
+ - bf's: slur get_encompass
+ - bf: slur clipping
+
+pl 58.jcn3
+ - experimental (--test) clipping of too high or tilted slurs
+ - nicer slur control output and ps code
+ - bit thicker and round-capped tuplet bracket
+ - bf: slur.cc: RESIZE_ICE
+
+pl 58.jcn1
+ - varray.hh bezier.cc, slur.cc patches to avoid gcc 2.8.1 ice
+ - some inlining fixes
+ - configure: use -O to enable inlining
+ - included and fixed new make-patch.py
+ - bf: Mutopia.make
+ - bf: offset: operator - ()
+ - ugly hack bezier: do blow_fit twice
+ - bf's: bezier: rotate,translate
+
+***************
+pl 58
+ - more *.make hacking
+ - bracket fix (AG)
+ - clef fix (PC)
+
+pl 57.jcn1
+ - reincluded test/bow.cc
+ - promoted Bezier bows to standard
+ * bf's: broken slurs
+ * some bf's: verneukeratificering van JCN code
+ * some bezier slur doco
+ * calculate Ties with Bezier bow
+ * junked tex-slur.cc
+ * junked ps-slur code
+ * junked height-only slur-correction
+ * lots of bezier/slur fixes
+ * bezier:blow_fit
+
+**************
+pl 57
+ - verneukeratificering van JCN code.
+ - lots of updates on our own makefile system.
+ - junked automake & documented it
+ - put rods into Spring_spacer too. Much cleaner
+ - bf: weird spacings (enge floats)
+ - bf: too many constraints added.
+ - smarter constraint check
+ - bf: table16 fontsize.
+
+ - 56.jcn1's empiric computer science.
+ - debian patches (AF)
+ - solaris/irix patches (AO)
+
+
+ pl 56.jcn5
+ - bezier and slur: cleaning and fixes
+ - bf: removed silly experimental beam feature
+
+pl 56.jcn4
+ - reintruduced slope in bug [c8 c16 c16] in favour of stemlen bug...
+ - staff-side: accent half line higher
+ - reincluded silly los-toros latex file
+ - bf's: bezier.cc,bow.cc, mat.hh: rotate
+ - bf: bezier slur: handle broken slurs
+ - bf: beam
+ - dehairifications of bezier.cc
+
+pl 56.jcn3
+ - bf's: offset multiply, matrix rotate
+ - dropped los-toros latex file
+
+pl 56.jcn2
+ - even nicer excentric slurs;
+ - input/slur-bug.ly
+ - los-toros with barnumbers ;-)
+ - nice version of height-ajust bezier slurs (see sleur.ly --test)
+ - bf's beam:
+ * slope in[c8 c16 c16];
+ * allow no INTER position for normal quantising
+
+pl 56.jcn1
+ - bezier curves with raaklijnen
+
+pl 56.ag1
+ - `Makefile.am.wild's now should work correctly with VPATH (AG)
+
+************
+
+pl 56
+ - more dutch vocabulary
+ - Barnumber FAQ added
+ - bf: abbrev over whole note.
+ - feta: reverse turn.
+ - bf: rod distance
+ - bf: local key clashing
+
+***********
+pl 55
+ - bezier check and ajust for slur height
+ - better slur height ajust
+ - DO chmod 755 *test/*sh
+ - bf: discretionary of ||
+ - bf: scripts within staff
+ - NOT Grandstaff -> Grand_staff (yet?)
+ - bf: cresc. decresc. height lookup.cc,init/table*
+ - bf: staff-symbol (script placements)
+ - staff-group-bracket
+ - bf's preludes, los-toros
+ - nicer trills
+ - adjustment slur extend
+
+**********
+pl 54
+ - bf dynamic_grav
+ - bf accidentals with key change
+ - bfs with command-items in non-breakable columns.
+ - typos (thanks LM)
+
+pl 53.jcn1
+ - two new BUGs
+ - preludes-* with trills
+ - nicer trills
+ - fixed ugly slur extend bug
+ - first try at symphonic work: (start of) Coriolan
+ - fixes: los-toros
+ - test/ with some stupid tests
+ - bf, again midi-output
+ - --no-timestamps options for lily/mi2mu (to enable make check targets)
+ - removed doubles in lilypython
+ - smarter prev_version for make-patch
+
+***********
+
+pl 53
+ - bf: c4 \< c4 \<
+ - bfs of spacing stuff
+
+
+pl 52.jcn6
+ - make check target
+ - moved flower/test to flowertest
+ - dist fixes
+ - flower no longer independent package
+ - bf: GNUmakefile
+ - bf's: configure: debugging (default) /profiling
+ - bf: Rational iface (fixes MIDI output)
+ - bf: non --srcdir configure + build with GNU make (ugh)
+ - ugh: autowildflower
+ - bf's: invoking wild-perl
+ - bf: ugh: staff-side.cc: placement height
+ - bf's: gnu 2.7.2 link (huh?, everyone using 2.8?)
+ - make-patch: default diff against (copy of) srcdir
+ - bin/conflily configures in ../build
+ - GNUmakefiles that do:
+ * auto-update of Makefile.am.wild
+ * auto-switch to builddir
+ - bf's: configure --srcdir
+ - fixes for los-toros/twinkle/test-lyrics
+ - latex file for los-toros (ugh)
+ - staff-side: symbols closer...
+ - half fix of midi output? duh.
+ - oboe1 los-toros
+
+************
+pl 52
+ - split up elem-group stuff.
+ - per line widths
+ - miscellaneous fixes by WL.
+
+
+pl 51.jcn1
+ - bf's: dutch->nederlands
+ - Cygnus b19 compile/link fixes
+
+************
+march 27
+pl 51
+ - changed dutch -> nederlands, german -> deutsch etc.
+ - norwegian (AG)
+
+pl 50.jcn4
+ - fixes for cygnus' gnu-windows32 beta19
+ be sure to compile with -fno-rtti
+ - proof of concept for automated updating of Makefile.am
+ see mi2mu/GNUmakefile (still somewhat clumsy)
+ - mv'd both config.hh.in to acconfig.h
+ - copied printing/debugging/optimising options to flower conf
+ - (some modified) fixes from AO
+ - beginnetje los-toros-oboe
+ - bf: DIR_DATADIR
+ - bf: trills
+
+************
+pl 50
+ - deprecate autowild
+ - --srcdir fixes
+ - ly2dvi 0.8
+
+pl 49.jcn2
+ - static (default) and/or shared libs flower and lily
+ - patch from AO 'libtool 1.1.1'
+ - mf: trill-symbols: feta-slag.mf
+ - shared libs (ugh: hardcoded switch in configure set to static)
+ - some fixes: denneboom.ly, standje.ly/standchen.ly
+
+********
+march 19
+
+pl 49
+ - parser assert changed to warning
+ - fix stdin reading
+ - small jcn fix
+ - changed unbound Spanner from assert to warning
+ - forced breakpoints
+ - add a nowildcard: stmt to wild-perl
+
+pl 48.jcn5
+ - ugh: double parser/lexer:
+ be sure to rm lily/parser.cc lily/lexer.cc or bin/clien
+ before re-running autowild!
+ - V.RSION
+ - bin/clien bin/meek
+ - bf's: flower/VERSION, flower/config.hh, lily/lexer/VURSION
+ lib/config.hh bin/convent-mudela
+ - lost of automake fixes
+ - automake
+
+******
+march 12
+pl 48
+ - Pitch_squash_engraver makes Rhythmic_staff possible.
+ - some fixes to buildscripts for sgi irix
+ - misc. patches (WL)
+ - move away from libg++: rolled own Rational class..
+ - don't make gif files Documentation/ by default
+ - ly2dvi manpage (JAF)
+ - ly2dvi 0.7 (JAF)
+ - more clefs. (MB)
+
+pl 47.jcn2
+ - bf: interbeams and beam-stemlengths for size != 16
+ - bf's: preludes
+ - more introduction
+
+pl 47.jcn1
+ - voice{one,two,three} defines
+ - preludes-*: fixes, junked multi, broke-down score-block
+ - mudela-book: added center option
+
+******
+march 6
+pl 47
+ - Abbreviation now a separate item.
+ - bf'd some gcc 2.8 warnings.
+ - bf'd spurious space in autodep.
+ - more clefs (MB)
+
+pl 46.jcn1
+ - start mudela introduction
+
+
+pl 46.jcn2
+ - bf's: preludes-*
+
+*******
+feb 27
+
+pl 46
+ - span-bar at upstep.
+ - bf: \score { \score_identifier }
+ - tenor clef (MB)
+
+pl 45.jcn2
+ - preludes-4,5,6
+ - bf's denneboom (oeps, see loop)
+
+pl 44.jcn7
+ - text-item.cc: try to get fingers just above note...
+ - set minimum space between columns
+ - bff: mf/Makefile out/*log required: new .ly .tex's with make-dist :-(
+ - bf's midi ascii-debug output
+ - bf: property instrument
+
+*******
+feb 12
+pl 45
+ - bf: translator switching
+ - SunOS and IRIX patches (AO)
+ - preludes bugfixes; preludes.tex ugh (JCN)
+ - shared lib numbering (AF)
+ - various fixes for debian (AF)
+ - ly2dvi .6.jaf (JAF)
+pl 44.jcn6
+ - bf: crescendo.cc: bigger and use bar_size
+ - slur: guess extra height for height limit for extending notes/stems
+ - ps: adjustable slur height limit, bf crescendo
+
+
+******
+feb 6
+pl 44
+ - ly2dvi 0.6.hwn1
+ - ly2dvi 0.6 (JAF)
+ - use ly2dvi for website
+
+pl 44.jcn2
+ - fingers default to above note
+ - preludes-2.ly
+ - parser: fingerings
+ - preludes-1.ly
+ - bf: denneboom.ly
+ - preludes-3.ly.m4, standje.ly, preludes-4.ly
+ - make rule for macro ly-files
+ - pletvisibility (init/property.ly):
+ * default no bracket with beams
+ * invisible plet bracket feature
+ - finger dir in text-def
+
+*******
+feb 2
+
+pl 43
+ - bf: broken Plet_spanners
+ - more GNITting
+ - avoid some more global ctors, for NeXTstep
+ - some NeXTStep patches from tiggr
+ - don't do overstrike/bold chars in textfiles
+
+
+pl 42.jcn2
+ - bit hesitating start of mutopia
+ - bf: don't try to typeset unterminated plet
+ - separately sticky plet durations: "c4 c4*2/3 c8 c4*1/1", ok Mats?
+ - denneboom.ly (half-baked version)
+ - indent and shape, see ^
+
+pl 42.jcn1
+ - bf: memmem revisited
+ - bf: ps: draw_plet vertical endings
+ - renamed stem_start to stem_begin
+ - bf: plet bracket placing on differently orientated stems
+ - more standje.ly and fixes
+******
+jan 28
+
+pl 42
+ - ly2dvi 0.5 (JAF)
+ - italian.ly (thanks, Paolo)
+ - bf: first \mudelapaper output (BS)
+ - bf: cathedral + bazaar URL (thanks, Barrie)
+ - bf: libc-extension.hh (AO)
+
+pl 41.jcn4
+ - plet brackets (always) in ps (only)
+ - Plet_spanner derives from bow
+ - bf: mf/Makefile: let %.tex %.ly depend on %.mf,
+ iso non-distributed %.log
+ - mi2mu mudela 0.1.8
+ - bit better plet number placement
+ - handier plet syntax: [2/3 c8 c c ]1/1 and \[2/3 c2 c c \]
+ - Plet_swallow_engraver for lyrics
+ - bit better plet number placement (NOT)
+ - new plet syntax: combined beam and plet open
+ - more standje.ly
+ - new plet syntax: start: \plet2/3 stop: \telp1/1
+ - Plet_req, Plet_engraver; removed plet stuff from beam
+
+******
+jan 20
+pl 41
+ - warn for score with multiple Music blocks
+ - bf: \plet (MB)
+ - \textsharp in 16pt
+ - malloc frobnifying
+ - more fontsizes: 26pt, 11pt, 13pt
+ - \textstyle "bold"
+ - .rpm: remove old fonts
+
+pl 40.jcn2
+ - bf: typo scores.cc
+ - bfs: non-default base constructor calls
+ - bfs: virtual destructors
+ - standje.ly: the real standchen (first bit)
+ - gcc 2.8 compile
+ - nicer scsii-menuetto
+
+pl 40.jcn1
+ - bf: breaking of :| bar
+ - bf: lyric substitution of _ -> ' ' flower/libc-ext:memmem
+ - no slope=0 beams between stafflines
+ - bf: tex without lily-ps-defs
+ - bf: embedded mf shift: added '%' to \embeddedps
+ - doos compile
+
+******
+jan 12
+pl 40
+ - some doco fixes
+ - debian diffs (AF)
+
+pl 39.jcn2
+ - bf: bit smarter atan() for feta-sleur (thanks wendy)
+ - bf: y quantise of multiple down beams (typo)
+ - minor doc fixes
+ - bf: distribute mfdeps and moved from mf/out/mfdeps to mf/mf.dep
+ - some changes to ANNOUNCE
+ - fixes for simple slur/tie placement
+ - embedded MF fonts identified by parameters -> reusable runtime fonts
+ - clean-embeds.sh
+ - runtime MF beams: feta-beum.mf
+ - bf: enable switching PS off
+ - updated runtime MF feta-sleur.mf with new PS slur algorithm
+
+******
+jan 5 1998
+pl 39
+ - 0.2 ANNOUNCE sketch
+ - unix style paths for LILYINCLUDE env
+ - show all output pages on website
+ - ps-to-gifs.sh
+ - bf: wtk1-fugue2
+ - python make-website
+ - higher brace resolution
+ - phased out musixtex stuff
+ - bf: rhythm.ly
+ - PS slurs
+ - PS beams
+ - Bow units
+ - turn on PS by default
+ - turn off barnumbers by default.
+ - bf: halfbeam size.
+ - bf: -M bug
+ - stafflinethick in PS (crescendi)
+ - continued (de)crescendi (in PS)
+ - bf: spurious beam reqs
+ - handle unfeasible spacing cleanly.
+ - ML-address change
+ - output naming: default to basename[-serialnumber].{midi,tex}
+ - bf: clef width
+
+pl 39.jcn2
+ - make-examples.sh
+ - leftright repeat sign + repeatbar dims
+ - smaller minimum sized rod at end of bar
+ - bf: spacing.ly
+ - less space at begin of bar
+ - experimental whitespace fixes at begin and end of bar
+ - added to beams.ly
+ - open-up beam spacing for mult > 3
+ - fixed hang/sit to overlap iso aligne with staffline
+ - fixed inter beam spacing, paper*.ly
+ - scsii-menuetto.ly fixes
+ - init/property.ly
+ - property settings for beam quantiseing and damping
+ - provisionary multiple-beam fix
+
+******
+pl 38
+ - bf: \> \! \ff (crescendo overlap)
+ - misc feta-fixes, flageolet sign.
+ - midi tempo fixes.
+pl 37.jcn3
+ - max beam slope "compile time parameterised" and set to 0.6
+ (oh, how we need runtime generated beams!)
+ - beam's left y-pos quantisation
+ - beam slopes' y-span quantisation
+ - stem.ly
+
+pl 37.jcn2
+ - feta: fixed sizes small numerals + flageolet
+
+
+*******
+dec 12
+pl 37
+ - --postscript
+ - don't crash non-fitting grouping (thx, John)
+ - attach unended spanners to a column (thanks John)
+ - bf: unended tie
+ - bf: tie direction
+ - bf: unended slur
+
+pl 36.jcn2
+ - feta: small numerals
+
+********
+dec 9
+
+pl 36
+ - bf: notehead collisions
+ - bf: dot y-position
+ - use Item::break_priority_i_ for horizontal alignment of breakables.
+ (it still sucks)
+ - junk some derivation checks, junk Normal_*_bar
+ - FlowerLib fixes.
+ - twinkle fixes.
+ - feta: flag/clefspacing
+
+
+*******
+dec 5
+pl 35
+ - naming: lily-init iso symbol.ly
+ - mf braces
+ - center textscripts.
+
+pl 34.jcn1
+ - mf: nicening of dyn, klef, rest
+ - fingerfont
+ - bf: 12/8
+
+
+********
+dec 2
+pl 34
+ - bf: mf: numbers and alto clef
+ - bf: scsi-menuet
+ - PS crescendos
+ - ly2dvi diffs (JAF)
+ - debian diffs (AF)
+ - w32 doco fix (JCN)
+
+
+********
+nov 24
+
+pl 33
+ - added abbrev.ly to font.ly; rm'd abbrev.ly
+ - don't process scores on parse errors.
+ - bf: kortjakje.ly
+ - bf: invisible stems in beams (abbrev.ly)
+ - lytodvi script (JAF)
+ - output Paper_def settings to TeX file. (eg: linewidth)
+
+********
+nov 19
+pl 32
+ - change type checks (ughugh) to derivation checks (ugh)
+ - this fixes clef bug.
+ - bf: order of breakables: meter comes after bar.
+ - bf: do error iso coredump on unknown symbol-table
+ - bf: release.py, copy patch too.
+ - bf: add makefile dep for disting MF logs.
+ - bf: don't read font-en-tja*.ly, but feta*.ly
+
+pl 31.jcn2
+ - first version of (non-ugh) c-klef
+ - bf: mi2mu: notes of zero duration as comments
+ - feta: ugh c clef
+
+
+********
+nov 17
+
+pl 31
+ - bf: replaced Score_column assert by a warning (thanks Scott)
+ - bf: mi2mu version output (thanks Scott)
+ - faq updates
+ - always output lily header with Lily version
+ - bar mucking: make scorebars/braces different from repeat bars.
+ - feta: repeatcolon, clef bf's
+ - debian/ updates. (AF)
+ - moved debian stuff into toplevel dir
+
+********
+nov 11
+
+pl 30
+ - feta: G clef.
+ - scripts now do relative coords (fixes lyrics + barnumber bug)
+ - bf: Lyrics lexer mode
+ - bf: bass clef
+
+********
+nov 6
+pl 29
+ - feta: bass clef, bf: dynamics, bf: 64th flag
+
+
+********
+oct 30
+pl 28
+ - revised Staff_symbol::brew_molecule_p ()
+ - naming: \makelilytitle
+ - fixes for TeX titledefs (JAF)
+ - junked some obsolete pedal stuff.
+
+pl 27.om-je-te-helpen-met-je-ps-spul.jcn1
+ - embedded slurs:
+ * bf: placements
+ * added \embeddedtex
+ * postscript is default
+ * fixed \embeddedps
+ * fixed mf: draw_slur
+ * postscript macro: draw_slur
+
+********
+oct 29
+pl 27
+ - -t/--test switch for experimental stuff.
+ - bf: debian optimize is not with 'z'
+ - mf: naming feta fonts are now called feta16, feta-beams16, etc.
+ - feta: ledgerline
+ - lily adjustments for new and elegant ledger line
+ - bf: mf-source path.
+
+pl 26.jcn1
+ - bf: numerals
+ - sleur.ly
+ - embedded slur testing
+ - bf + patch: make-patch release.py / VERSION
+
+
+********
+oct 26
+pl 26
+ - bf: \transpose
+ - feta: numerals 0 - 9, rewrote flags.
+
+
+
+********
+oct 22
+
+pl 25
+ - variable stemlength
+ - feta: 32nd, 64th flags
+ - font.ly
+ - dist & tarball made in out/
+ - rewrote release.sh in python
+ - notehead/stem attachment better.
+ - more Stem cleanage
+ - related Beam cleanage
+ - started numeral font (JCN)
+ - bf: whole rest outside staff.
+
+*********
+oct 20
+pl 24
+ - internationalization preps (FP)
+ - rewrote make-patch in python
+ - BUGS: added another flex/libio crash explanation
+ - feta: flags
+
+
+********
+pl 23
+ - feta changes: 1/4 rest, flat, bf 8-128 rest
+ - bf: cadenza
+ - bf: scripts
+ - bf: rest-collision
+ - bf: meter placement
+ - junked cpgento.sh
+
+*********
+
+pl 22
+ - bf: lyric 's- Zondags
+ - bf: colliding accidentals: renamed translate(Real,Axis) to translate_axis()
+ - renaming of scripts
+ - strings with escaped characters.
+ - bf "string_with_\"_embedded"
+ - bf: mf/Makefile
+ - feta changes (trill, organ pedals)
+ - updated mf-to-table for new feta conventions
+ - changed header format to something sensible.
+ - moved staff to centerline == 0;
+
+********
+
+pl 21
+ - shrinking uses more energy than stretching
+ - check IO error on writing (disk full?)
+
+
+*********
+
+oct 8
+pl 20
+ - don't swallow non lyric-stuff in lyrics
+ - x-position of Stem
+ - more feta changes
+ - move scripts to right
+ - genheader.py replaces genheader.perl
+
+pl 19.jcn2
+ - bf's mi2mu:
+ * Midi_track_parser::note_end_all
+ * staff output uses key, meter, tempo read
+ * command line read minor key
+ * minor key notenames
+
+pl 19.jcn1
+ - small changes to sharp, fermata
+ - small changes to lilypond.lsm+doc, lelievijver.lsm
+ - mi2mu updeet + bf
+
+pl 19
+ - bf: keyword.cc rm'd struct defs
+ - dots: support for feta dots.
+ - lots of font (feta) tjanges
+ - mf-to-table rewrite in python
+
+*********
+pl 18.jcn1
+ - check for python, mf-deps fix
+
+pl 18
+ - bf: Box[X_AXIS] = b
+ - bin/mf-deps.py script
+ - moved beams out of font-en-tja into vette-beams.
+ - Made corresponding .cc changes.
+
+
+jcn patches
+ - egcs compile (no link yet)
+ - nicer 4rest
+ - beam font (je kunt wel tegen een grapje, eva?)
+ - mf-to-table:
+ * "breapth" (x-depth) feature
+ * handle generic stuff such as beams
+ - polished noteheads
+ - fixed 8-128 rests
+ - 4rest
+ - mf-to-table generates tex defs
+ - bf:mf-to-table and conflily outname check
+ - 8-128 rests
+
+******
+sep 24
+
+pl 17
+ - bf: ledgerline width
+ - bf: toccata-fuga-E
+ - took out some hardwiring of tex-beam
+
+pl 16.jcn1
+ - mf-to-table.in: generate mozarella metric info tables
+ - autometric.mf: write metric info to mf logfile
+ - ital-r.mf, smaller ital-m.mf
+ - variable streepjes length (top/bottomlines); fixed (for 20pt?)
+ - streepjes twice as thick as staffrules
+ - even more pronounced bolletjes -- how 'bout this wendy?
+ - quarter and half note after drawings (a/b less distinct)
+
+*****
+sep 19
+pl 16
+ - revised mudela-man a bit
+ - ; optional after \musicidentifier
+ - bf: doco about {Mus*,Opus}TeX
+ - bf: configure: MFDIR
+ - bf: String::operator bool () removed
+ - bf: String::operator char const * () removed
+ - bf: Line_spacer::~Line_spacer () added: plugged memleak
+ - bf: Line_of_score::do_unlink () call Spanner::do_unlink
+ - bf: rests in beams
+ - bf: textnatural
+ - bf: 20 pt flags
+ - bf: longarest
+
+pl 15.jcn1
+ - bf: typos whole and half notehead
+ - de-uglyfied bolletjes.mf
+ - ascii output of font metrics in mf logfile
+
+******
+sep 17
+
+
+pl 15
+ - put top of NEWS file in the webpage
+ - breadth first search for engravers.
+ - bf: coriolan-alto.ly
+ - Stem / Notehead width now properly calced
+ - Atom and Symbol merged
+
+pl 14.jcn1
+ - lily's own noteheads (balls/globes :) (font-en-tja*.mf)
+ - {table,paper}* and taupindefs adaptations (when are we moving?)
+ - fp, sf, sfz dynamics
+ - font.ly
+ - bf: dist mudela-mode
+
+*******
+sep 15
+
+pl 14
+ - Simple but nifty mudela-mode.el for Emacs
+ - slightly better syntax for single-note-repeat, now default kept in
+Stem_engraver
+ - bf: Abbrev_beams are not the only beams (see: jcn4, stem-info, thanks, Jan)
+ - a CPU timer for Interpreting and Breaking
+ - Separate Score_elem:
+ * invoke-once stuff in Super_elem (using function pointers; much cleaner now)
+ * geometrical stuff into Graphical_element
+ * Axis_group_* accept Graphical_elements iso. Score_elems
+ * A dimension cache, hopefully this makes lily a bit faster
+ * TeX output moved out of Score_elem, separate interface Outputter
+
+ - < \multi 2; bla > -> \multi 2 < bla > (mudela 0.1.6)
+ - bf: don't do \multi if \type specified
+ - Translator switching: Change_translator, Change_iterator
+
+
+pl 12.jcn4
+ - fixed dynamic f, magstep bug
+ - gaps on abbrev-beams
+ - bf: stem-info
+ - bf: last abbrev
+ - bf: stem: do_width
+ - bf: removed rest-column.hh
+
+*******
+sep 11
+
+pl 13
+ - big Rest/notehead rewrite:
+ * separated Rest, Note_head and Dots
+ * Dot_column: dots are now chord-wise aligned
+ * Rhythmic_head is base for Rest, Note_head
+ * Merged Note_column and Rest_column
+ * Rest_engraver
+ - grand Engraver/Translator/Performer rewrite.
+ * properties: \property voice.dir = -1 (mudela 0.1.3)
+ * Input_translator junked, now Translators are generated
+by the parser (mudela 0.1.4)
+ * Translator changing: \translator Staff=oboesolo
+ * Translator preselect: \type Staff=bla < c4 >. (mudela 0.1.5)
+ * Engraver/Performer now derived of Translator.
+ * Engraver_group_engraver/ Performer_group_performer derived of
+ Translator_group
+ * renamed: Voice -> Thread, Voice_group -> Voice
+ - renamed Audio_score to Performance
+ - junked mididef statics
+ - Audio debug output
+ - bf: excess [] in scsi
+ - bf: swallow \skips
+ - bf: don't crash on infinite dims
+ - renamed wohltemperirt to wtk1-fugue2
+ - bf: address in GPL
+ - bf: errors in stdin
+ - bf: stop if errors in init files
+ - bf: move stem too when doing collisions
+ - Molecule::add_XXXX -> Molecule::add_at_edge ()
+ - doco updeet: why no midi FAQ, index, CodingStyle hungarian
+
+
+pl 12.jcn3
+ - try at better dynamic font, copied from cmbxti10: mf/*
+ - typesetting abbreviation beams; abbreviation-*
+ - some simple abbrev fixes + code cleanup (dank je, lieverd)
+ - typesetting simple abbreviations: c4:16 === [c16 c c c]
+
+pl 11mb
+ - Support also for \longa in duration-convert.cc, init/ and tex/
+ files. (MB)
+
+********
+sep 3
+
+
+pl 12
+ - bf: don't redefine tex primitives like \textfont and \mathfont
+ - nicer broken slurs (?)
+ - bf: error status upon parse error
+ - robustness in Lookup::*slur
+ - bf: mi2mu: warn if 0-length string in midi-file
+ - output id-footer
+
+********
+sep 1
+
+pl 11
+ - forms for Musical vocabulary
+ - ignore \r for windows
+ - Now paper{score,def} & midi{def,score} derived of class
+Music_output[_def]. Score is almost empty.
+ - Engraver hacking:
+ * junk Text_engraver
+ * Timing_engraver
+ * barnumber now really counts the number of bars
+ * Separated Stem_engraver and Beam_engraver
+ * junk Stem_beam_engraver
+ * no need for Stem_reqs
+ - use Direction = {LEFT, RIGHT, UP, DOWN} iso. -1, 1 throughout source
+ - ties and slurs with Drul_array
+ - junked Spanner_elem_group
+ - bf: w32 fixes
+ - Spanner now spans items.
+ - more GNITting ( bla ) -> (bla), indentation
+ - Drul_array
+ - Paper_column now is derived of Horizontal_group_item. Items
+are no longer hardwired into a Paper_column
+ - bf: stdin input
+ - PCol -> Paper_column
+ - Wtk-i, fugue1, prelude1 (SR)
+
+*******
+aug 21
+pl 10
+ - bf: init pending_indent_i_
+ - output header to TeX file. Who wants to write TeX to make it work?
+
+ - mi2mu: bf's, --key option
+ - removed Duration(int,int)
+ - bf: Duration_convert::dur2_str
+
+pl 9.jcn2
+ - redo of mi2mu frontend (midi-parser)
+ - bf: String_convert::bin2_i; added bin2_u
+ - bf's: Binary_source_file
+ - bf: constr. Tempo/Timing_req
+pl 0.1.8.jcn3
+ - table20, standchen-{16,20}*
+*******
+aug 18
+
+pl 9
+ - declare rhythic_request
+ - preliminary support for real \mudelaheaders
+ - context-sensitive arithmetic spacing. Looks alot better
+ - silly GNU braces.
+ - JCN fixes for pl 8
+ - bf: midi instrument
+ - Vocabs from GMP-I
+
+pl 8.mb:
+ - use log of duration-name
+
+*******
+aug 15
+pl 8
+
+ - gif -> xpm
+ - bf: Whoops! Open eyes now, when finding shortest note in
+spring-spacer. Fixes spacing problems.
+ - GNU coding: parentheses (here you are, Franc,ois :-)
+ - all macros now UPPERCASE
+ - Identifier blondification: don't use void*
+ - Identifier doesn't store its name. Much cleaner now.
+ - bf: Rest_collision_engraver now always announces
+ - bf: announce Staff_sym only once
+pl 0.1.7.jcn1
+ - complete redo mid/back-end of mi2mu
+ - bf: do not create/play empty Audio-{text,instrument} events
+
+
+********
+aug 14
+
+pl 7
+ - Audio_element as base for Audio_item and Audio_staff. fixes
+midi-lyric segfault
+ - added "Gallina a due violini" (MB)
+ - make MIDI files on website.
+ - Collision now also is an Element_group.
+ - bf: announce Collision when created
+
+********
+aug 13
+pl 6
+ - bf: 13 shift/reduce in parser fixed
+ - bf: plets in parser
+ - bf: main.o (again)
+ - german notenames (RM)
+ - Score_elem::offset_ now relative to its X/Y groups. Slight
+speed increase?
+
+********
+aug 12
+pl 5
+
+ - Wordwrap revert
+ - added LilyPond in WWW titles
+ - oops. A quaver is a 8th note, not a 4th
+ - bf: main.o remaking in lily/Makefile
+ - unhair Voice_iterator
+ - bf: error if no music in score
+ - bf: don't create translators if Chord element is empty
+ - bf: ctor of Tempo_req
+ - use virtual do_equal_b() for request comparison
+ - bf: turned off default plets: c4*2/3 c4*2/3 -> c4*2/3 c4*4/9
+ - bf: time_int() of an empty chord/voice
+ - more corrections to GMP Manifesto
+ - debian updates (AF)
+ - bf: g++ ICE in Performer_group_performer
+ - use fread() for reading in Simple_file_storage
+
+pl 0.1.3.jcn1
+ - mi2mu: simplification +bf lily_stream: indentation and wordwrap
+ - mi2mu: bf: blunt: non-alpha(num) chars from identifiers
+
+*********
+aug 11
+
+pl 4
+ - correction of GNU Music Manifesto
+ - moved lowlevel stuff of Source_file to Mapped_file_storage.
+Interface via File_storage. (Now using Simple_file_storage)
+ - bf: c4-"A"-"B"
+ - bf: exit status
+ - declarable keys
+ - Engraver_group_engraver::find_simple_engraver()
+ - bf: lily/Makefile
+ - bf: Midi_note_event ctor
+ - bf: tempo request
+ - popular twinkle twinkle (JV)
+ - mudela: parse tempo requests, \midi{ \tempo 4= 60;}
+
+******
+aug 8
+pl 3
+ - don't crash if no Clef_engraver.
+ - PScore -> Paper_score
+ - bf: Score_elem::extent() init of interval
+ - bfs: {Horizontal,Vertical}_group related
+ - bf: don't change original Item while doing making
+ multiple copies
+ - bf: configure DATADIR
+ - bf: type of spanbar.
+
+pl 0.1.2.jcn1
+ - minor doco fixes
+ - revived Midi_walker
+ - moved midi out of performer-* to audio-*
+ - Audio_staff
+ - removed all <ugh> members from performers
+
+*******
+aug 7
+pl 2
+ - junked Line_of_staff
+ - bf: --output
+ - bf: . in lexer
+ - bf: mi2mu version number.
+ - bf: in mudela-book
+ - bf: don't forget to make mi2mu
+ - Bar_number_grav: measure numbers (experimental)
+ - Bar_column_engraver, Bar_column: scripts on bars
+ - rewrite of {Horizontal,Vertical}_group. Yes, again.
+Now neatly integrated into class hierarchy
+ - Axis, Axis_group
+ - Debian rules (AF)
+
+pl 0.1.1.jcn1
+ - Audio{column,score,item,...}, more generic audio
+ - bf: Makefiles
+ - bf: mi2mu mudela version
+*********
+aug 5
+
+pl 0.1.1
+ - {Horizontal, Vertical}_group. A score_element may be in at most one.
+ - This means Horizontal_group_item and Vertical_group_spanner need special support.
+ - This also means a big speed increase
+ - configure cleanup
+ - bf: Choleski solve.
+ - doc updates: lilygut, INSTALL
+
+pl 0.1.1.hwn
+ - recode of Break/Colhpos interfaces
+ - Gourlay_breaking: dynamic-programming optimal solution for
+ casting off. Word_wrap is still optional
+ - some printing short cuts if no -d specced.
+ - band_matrices for column calcs
+ - more Diagonal_storage fixes
+ - retake: INFTY fixes ( now infinity_mom, infinity_f )
+
+pl 78.jcn3
+ - configure: ln and zip
+ - target doosdist -> lilypond-x.x.x.exe.zip: + executables - sources
+
+
+
diff --git a/PATCHES.txt b/PATCHES.txt
index 5618b58820..76bceea841 100644
--- a/PATCHES.txt
+++ b/PATCHES.txt
@@ -1,198 +1,127 @@
-
-
-PATCHES(1) LilyPond documentation PATCHES(1)
-
-
NAME
- PATCHES - track and distribute your code changes
-DESCRIPTION
- This page documents how to distribute your changes to GNU
- LilyPond
+PATCHES - track and distribute your code changes
-ABSTRACT
- Distributing a change normally goes like this:
+DESCRIPTION
- o make your fix/add your code
+This page documents how to distribute your changes to GNU lilypond
+(or in fact any other StepMake package).
- o Add changes to NEWS, and add yourself to
- Documentation/AUTHORS.pod
+ABSTRACT
- o generate a patch,
+Distributing a change normally goes like this:
- o e-mail your patch to one of the mailing lists gnu-
- music-discuss@gnu.org or bug-gnu-music@gnu.org
+o make your fix/add your code
+o Add changes to NEWS, and add yourself to Documentation/AUTHORS.yo
+o generate a patch,
+o e-mail your patch to one of the mailing lists
+ gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org
GENERATING A PATCH
- In VERSION, set TOPLEVEL_MY_PATCH_LEVEL:
- VERSION:
- ...
- TOPLEVEL_MY_PATCH_LEVEL = jcn1
+In VERSION, set MY_PATCH_LEVEL:
- In NEWS, enter a summary of changes:
+ VERSION:
+ ...
+ MY_PATCH_LEVEL=jcn1
- NEWS:
- pl 0.1.48.jcn1
- - added PATCHES.pod
+In NEWS, enter a summary of changes:
- Then, from the top of Lily's source tree, type
+ NEWS:
+ pl 0.1.73.jcn1
+ - added PATCHES.yo
- make-patch
+Then, from the top of Lily's source tree, type
- which leaves your patch as ./patch-0.1.48.jcn1.
+ make diff
- If you didn't configure Lily using --srcdir, you can do:
+which leaves your patch as ./lilypond-0.1.73.jcn1.diff.
- release
+If you didn't configure Lily using --srcdir, you can do:
- tar-ball: ../patches/patch-0.1.48.jcn1.gz
- patch: ../patches/patch-0.1.48.jcn1.gz
- updeet: ../test/updeet
+ make release
+ tar-ball: ../patches/lilypond-0.1.73.jcn1.gz
+ patch: ../patches/lilypond-0.1.73.jcn1.gz
+ updeet: ../test/updeet
PREREQUISITES
- For creating a patch you need
-
- o All items mentioned in INSTALL. You're not going to
- send a patch that you haven't even built, right?
-
+For creating a patch you need
+o All items mentioned in INSTALL. You're not going to send a patch
+ that you haven't even built, right?
+o GNU diff
+o Python (version 1.5 or newer).
+ You can of course make a patch by hand, which would go something like:
-12/May/98 LilyPond 0.1.65 1
+ make distclean
+ cd ..
+ diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1
+but there are handy python scripts available. If you're doing development,
+you'll need Python for other LilyPond scripts anyway.
+o The Lily directory structure, which looks like:
+ doos/ # gnu/windows32 build and binary releases
+ harmonia -> harmonia-x.y.z
+ harmonia-x.y.z/
+ lilypond -> lilypond-x.y.z # symlink to development directory
+ lilypond-x.y.z/ # current development
+ patches/ # patches between different releases
+ RedHat/BUILD # RedHat build and binary releases
+ RedHat/RPMS
+ RedHat/SPECS
+ releases/ # .tar.gz releases
+ test/ # tarballs and diffs from current version
+ yodl -> yodl-1.30.17
+ yodl-1.30.17
+with prefix $HOME/usr/src
+and (for building rpms only) in $HOME/.rpmrc:
-PATCHES(1) LilyPond documentation PATCHES(1)
+ topdir: /home/fred/usr/src/RedHat
+APPLYING PATCHES
- o GNU Diff
+If you're following LilyPond development regularly, you probably want to
+download just the patch for each subsequent release.
+After downloading the patch (into the patches directory, of course), simply
+apply it:
- o Python (version 1.4 or newer). You can of course
- make a patch by hand, which would go something like:
+ gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E
- make distclean
- cd ..
- diff -urN lilypond-0.1.48 lilypond-0.1.48.jcn1 > patch-0.1.48.jcn1
+and don't forget to make automatically generated files:
- but there are handy python scripts available. If
- you're doing development, you'll need Python for
- other LilyPond scripts anyway.
-
- o The Lily directory structure, which looks like:
-
- lilypond-0.1.48/
- patches/
- releases/
- test/
-
-
- If you're following LilyPond development regularly, you
- probably want to download just the patch for each
- subsequent release. After downloading the patch (into the
- patches directory, of course), simply apply it:
-
- gzip -dc ../patches/patch-0.1.49.gz | patch -p1 -E
-
- and don't forget to make automatically generated files:
-
- autoconf 1)
- configure
+ autoconf footnote(patches don't include automatically generated files,
+ i.e. file(configure) and files generated by file(configure).)
+ configure
SYNCHRONISE
- If you're not very quick with sending your patch, there's
- a good chance that an new release of LilyPond comes
- available. In such a case (and sometimes for other unkown
- reasons :-), the maintainer will probably ask you to make
- a new patch against the latest release. Your best bet is
- to download the latest release, and apply your patch
- against this new source tree:
-
- cd lilypond-0.1.49
- gzip -dc ../patches/patch-0.1.48.jcn1.gz | patch -p1 -E
- autoconf 1)
- configure
-
- Then, make a patch as shown above.
-
- 1) patches don't include automatically generated files,
- i.e. configure
- and files generated by configure.
+If you're not very quick with sending your patch, there's a good chance
+that an new release of LilyPond comes available. In such a case (and
+sometimes for other unkown reasons :-), the maintainer will probably ask
+you to make a new patch against the latest release.
+Your best bet is to download the latest release, and apply your patch
+against this new source tree:
+ cd lilypond-0.1.74
+ gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E
+ autoconf
+ configure
+Then, make a patch as shown above.
-12/May/98 LilyPond 0.1.65 2
-
-
-
-
-
-PATCHES(1) LilyPond documentation PATCHES(1)
+SEE ALSO
+stepmake/INSTALL.txt
MAINTAINER
- Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- Just keep on sending those patches!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-12/May/98 LilyPond 0.1.65 3
+Han-Wen Nienhuys <hanwen@cs.uu.nl>
+Just keep on sending those patches!
diff --git a/README b/README.txt
index a172ebc034..2008fc4f8c 100644
--- a/README
+++ b/README.txt
@@ -1,43 +1,40 @@
-This is the toplevel README to LilyPond -*-Text-*-
+This is the toplevel README to LilyPond
-LilyPond is the GNU Project music typesetter. The program generates
-visual or auditive output from a music definition file: it can typeset
-formatted sheet music to a TeX file and play (mechanical) performances
-to a MIDI file. Features include multiple staffs, meters, clefs,
-keys, lyrics, versatile input-language, cadenzas, beams, slurs,
-triplets.
+ LilyPond is the GNU Project music typesetter. This program can print
+beautiful sheet music from a music definition file. It can also play
+mechanical performances to a MIDI file. Features include multiple
+staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,
+beams, slurs, triplets, formatting scores, part extraction. It includes
+a nice font of musical symbols.
-
-1. VERSIONING
+1: VERSIONING
if you have downloaded a
*.pre*
version, then this is version is *not* meant for producing nice output
-(but to keep your patchsets up to date). It might not even compile.
-
+(but to keep your patchsets up to date). It might not even compile.
-2. REQUIREMENTS
+2: REQUIREMENTS
For the compilation and running of LilyPond you need some additional
-packages. Please refer to the installation instructions.
+packages. Please refer to the installation instructions.
NOTE: If you downloaded a binary (.rpm or a W95/NT .zip file), then
you don't have to compile LilyPond.
-
-3. INSTALLATION
+3: INSTALLATION
For your convenience, a formatted copy of the INSTALL instructions are
-in the toplevel directory, as INSTALL.text
+in the toplevel directory, as INSTALL.txt
The process is fairly straightforward, but chances are that you have
to specify directories for TeX to configure (--enable-tex-dir,
--enable-mf-dir)
-4. DOCUMENTATION
+4: DOCUMENTATION
The real documentation is the directory Documentation/
@@ -46,21 +43,22 @@ and then do this:
make doc
-You can also simply read the .pod sources. They are ASCII text.
-.pod is the documentation format of perl (see perlpod(1))
+You can also simply read the .yo sources. They are ASCII text.
+The complete documentation is accessible in formatted form at the
+website
+ http://www.cs.uu.nl/people/hanwen/lilypond/index.html
-5. COMMENTS
+5: COMMENTS
LilyPond is a long way from finished and polished. We do appreciate
criticism, comments, bugreports, patches, etc.
Please send your e-mail to one of the MAILING LISTS
-(and not to us personally). See Documentation/links.pod for more info
+and not to us personally. See Documentation/links.yo for more info.
-
-6. DOZE
+6: DOZE
If you have received this file as part of a DOS/Window32 distribution
(lilypond-*.zip), then it is advisable to also download the source
@@ -68,15 +66,10 @@ package, since it might contain more documentation
ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe)
-The website also contains the complete documentation
-
- http://www.cs.uu.nl/~hanwen/lilypond/index.html
-
-If you decide to build LilyPond from source, please read the INSTALL
+If you decide to build LilyPond from source, please read the INSTALL.txt
document first, especially the Windows NT/95 section.
-
-7. CAVEATS
+7: CAVEATS
* Please read the file BUGS for some ugly bugs. This especially applies
Linux-Intel unix users.
@@ -84,6 +77,12 @@ Linux-Intel unix users.
* If you have installed a previous version, be sure to remove old font
files, eg
- rm `find /var/lib/texmf/fonts -name 'feta*'`
+ rm `find /var/lib/texmf/fonts -name 'feta*'`
a script to do this for you is in bin/cleanfonts.sh
+
+8: CDROM DISTRIBUTIONS
+
+If you have received LilyPond on a cdrom, chances are that development
+has moved a some patchlevels up. If possible, please check the latest
+version of LilyPond before reporting bugs.
diff --git a/TODO b/TODO
index 7f9b738c65..893aa58eac 100644
--- a/TODO
+++ b/TODO
@@ -1,21 +1,114 @@
Features you cannot find in the doco as working, should be mentioned here.
+
This is an assorted collection of stuff that will be done, might be
done, or is an idea that I want to think about
Most of the items are marked in the code as well, with full explanation.
grep for TODO and ugh/ugr/urg
+ * fix plain tex footer line.
-0.2:
- * junk My_lily_parser::abbrev_beam_type_i_
+ * portable libs for flowerlib/lilylib
- * w32 blurb
+ * install TeX stuff into tex/generic directory.
- * make sure all ex's have a mudela-version
- * notes almost touch barline: whitespace at the begin of the bar
- should be at fixed at at least (about) one interline.
- hack at spring-spacer.cc:662 doesn't work anymore
+ * make GNU style webpages.
+
+ * There seems to be an install error in lilypond-1.0.0. Most of the
+ files in the "init" directory don't get installed in the
+ /usr/local/share/lilypond directory. The files installed are of
+ the form feta*.ly. In particular init.ly doesn't get installed.
+ I installed the files by hand and then the system seems to work.
+
+ * I things it's more than appropriate for an GNU project to ship Info
+ files (and manpages) with the source package. The "Standard" tells to
+ do so (ftp://ftp.gnu.org/pub/gnu/standards/standards.text):
+
+
+ * a `make check' target (without installing stuff!)
+
+ * midi_instrument -> midiInstrument
+
+ * horizontal centering of dynamics
+
+ * \font\fontA=feta20.afm (.afm?)
+
+ * gzip RH manpage
+
+ * stable make/config stuff
+
+ * stemup/stemdown; see test/updown.fly
+ - check examples; add \type Staff hither and thether
+
+ * $DEPENDENCIES_OUTPUT support
+
+ * use a fake-yodl.sh to mimick yodl when yodl is not installed
+
+ * fix BUGs
+
+ * fix weird behaviour when .AFMs not found.
+
+ * Xdvi zooming ?!
+ gs: Error: /undefined in draw_beam
+ gs: Operand stack:
+
+ * run texhash after installing .tex
+
+ * fix vertical alignment and stafflines
+
+ *GrandStaff needs more work -- I want a single word `harpsichord' to the
+ left of the grandstaff, not one on each stave.
+ (Organ staff -- with separate pedal -- but common properties may be
+ something to think about. Of course for organ you want to be able
+ to give stop indications on the way through, so the \property
+ Voice.Instrument would be a stop, and \property
+ GrandStaff.instrument would be PipeOrgan...)
+
+
+ * make Tie_req a "command" { <c g> ~ <c g> }
+
+ * bib ep1988
+
+ * mix engraver hacking with music ?
+
+ * revise the Score_priority_align_engraver concept. It sucks.
+
+ * ly2xdvi
+
+ * make new VoiceOne, VoiceTwo, VoiceThree contexts with
+ydirection and hshift preset
+
+ * StepMake install
+ - /usr/bin/make-patch?
+
+ * *.yo: fix pod manpage layout legacy
+
+ * text-items clash with stems/beams
+
+ * --include, -I option for ly2dvi (pass on to lily)
+
+ * fix placement of beam-less abbrev
+
+ * \meter 3/4;
+ <{\voiceone cis4. cis8 cis4 | cis4 cis cis | r1 }
+ {\voicetwo cis,4 r r | r2. | r1 }> |
+ }
+
+ * try to use template<Type> iso MACRO(Type)
+
+ - NEWS: ... Musical_pitch (analogous to Duration and Rhythmic_req)
+ think about, analogous to pitch:
+ * { a4 a16 } c <-- duration of c?
+ * <a4 b8> c <-- duration of c?
+
+ * \tempo 4. = 90;
+
+ * fix audio-items (don't use (input) requests, but copy data)
+
+ * junk My_lily_parser::abbrev_beam_type_i_
+
+ * make sure all ex's have a mudela-version
* do rest-collisions for Multi_measure_rests as well.
@@ -26,10 +119,6 @@ grep for TODO and ugh/ugr/urg
* deps for ly2dvi
- * fix .txt rules / make dist from freshly configured tar-ball
-
- * document use of ly2dvi more prominently
-
* clean up abbrev/plet/beam/abbrevbeam/duration mess in parser.
* minimum length second part broken tie
@@ -43,35 +132,41 @@ grep for TODO and ugh/ugr/urg
* fix variable define/lookup parser global<->paper
- * fix position of bar number
-
- * fix position of brace in conjunction with bracket
-
* fix title/instrument placements; see input/test/title.ly
* <\voiceone c4. \voicetwo c4>
* add full cello suites to web site (kom op, Maarten!)
+ * Rethink Time_description
+ * \cadenza , \meter, \grouping should all be \properties
+
* rename
- plet -> tuplet
- - grav -> engraver
- measure -> bar
- abbreviation-beam -> (measured/unmeasured) tremolo
* libtoolize flowerlib
+
* shared lib
* robustify Beam (in case of no stems, 32nd notes)
+ * decentralised spring factory
+
+ * move paper vars into engraver properties
+
* check for groff / troff/ nroff et
+ * more intelligent file searching
+ - use kpsepath
+ - make LilyPond fully relocatable
+
* use kpsepath to find all TeX dirs
- configure.in
- clean-fonts.sh
* nicen examples:
- - remove all \multi
- break-up heavily-nested score blocks
* disable spaces in TeX stuff
@@ -80,16 +175,12 @@ grep for TODO and ugh/ugr/urg
* dots & rest collisions.
- * add a screenshot to the website. :)
-
* documentation
- introduction?
- info?
- LaTeX?
- more manpages?
- * naming Mozarella, Madeira, Muella?
-
* versioning for Feta
* the warning about the negative slur/tie length appears twice
@@ -98,32 +189,16 @@ grep for TODO and ugh/ugr/urg
* The `3' in the meter key is a one or two pixels too thin (at 600dpi)
in the middle:
- * the tenuto script is too long and too thin
-
* the bracket is ugly (wings are too parabolic, should be more circular)
- * better hshift (dots, distance, head dependent)
-
- * stem len adjustable
-STUFF
- * convert-mudela:
- - automatically add a \version if not present.
- - better parsing
- - make smarter
- - fix convert-mudela -e *.ly ;
- - convert-mudela -e empty.ly
- - redo in python.
+ * better hshift (dots, distance, head dependent)
* clefs (AG): The "8" should appear closer to the actual clef,
touching it.
* give Items/Spanners access to unbroken originals
- * generalised scopes for Parser/identifiers.
-
- * speed up PS code.
-
- * scoping for properties
+ * scoping for properties?
{ c4
\multi 2 < { \stemup .. } { \stemdown .. } >
@@ -132,41 +207,52 @@ STUFF
this modifies \stem for the c2
- * emacs mudela-mode
- - should handle block comments too.
- - handle lexer modes (\header, \melodic, \lyric) etc.
- - indentation
- - notenames?
- - fontlock: \melodic \melodic
-
+ * put errorlevel in Input class
- * use properties for:
- - Text_style
- - default_octave
- - plet?
- - default_duration?
- - default abbreviation
- - Staff_sym size
- - default tempo.
- - font size
- - bartypes (get rid of derived Span_bar_engravers)
- - cadenza mode?
- - MIDI instrument
- - staff title
+ * junk nesting slurs
- * page handling:
- - PS output
- - optimal pagebreaking.
+ * integrate midi-elts from mi2mu and lily?
- * put errorlevel in Input class
+ * cautionary accidental
- * AFM for font input?
+ * score-bar-scripts
+ FMR: Free memory read:
+ * This is occurring while in:
+ Bar_column::do_substitute_dependency(Score_element*,Score_element*) [bar
+ -column.cc:29]
+ Score_element::unlink() [score-elem.cc:383]
+ Paper_score::set_breaking(const Array<Column_x_positions>&) [p-score.cc:
+ 150]
+ Paper_score::calc_breaking() [p-score.cc:189]
+ Paper_score::process() [p-score.cc:203]
+ Score::run_translator(Music_output_def*) [score.cc:117]
+ * Reading 4 bytes from 0x65d3a0 in the heap.
+ * Address 0x65d3a0 is 160 bytes into a freed block at 0x65d300 of 208 bytes.
+ * This block was allocated from:
+ malloc [rtlib.o]
+ __builtin_new [libgcc.a]
+ Span_score_bar::clone()const [span-score-bar.hh:20]
+ Item::copy_breakable_items() [item.cc:69]
+ Item::do_breakable_col_processing() [item.cc:89]
+ Score_element::calcalute_dependencies(int,int,void(Score_element::*)()*)
+ [score-elem.cc:171]
+ * There have been 22 frees since this block was freed from:
+ free [rtlib.o]
+ __builtin_delete [libgcc.a]
+ Span_score_bar::~Span_score_bar() [span-score-bar.hh:18]
+ Paper_score::set_breaking(const Array<Column_x_positions>&) [p-score.cc:
+ 156]
+ Paper_score::calc_breaking() [p-score.cc:189]
+ Paper_score::process() [p-score.cc:203]
+ Postprocessing elements...
+ TeX output to score-bar-scripts.tex...
3RD PARTY BUGS:
- * tried egcs 1.0.2: failed on lily/stem.cc -> flower/include/interval.hh
- should narrow down and send bug report
+ * redhat (v?) graphical install bomb-out?
+
+ * egcs-1.03 ice: stem.cc:327; should localize bug (mine's still 10K)
* gcc 2.8.1: see ice and RESIZE_ICE
@@ -181,9 +267,65 @@ STUFF
without a trace of failure (create .rej file, print error or
dump core) and just ignore any further diffs.
+ * glibc 2.0:
+
+ f = fopen ("/dev/null", "r")
+ assert (feof (f))
+
+3RD PARTY PROJECTS:
+
+ * GNU indent: handle C++
+
+ * GNU make: move hardcoded builtin rules to runtime ?
+
+ * GNU patch
+ - rewrite ? -> check out GNU patch 2.5
+ - 'double-fix' mode: ignore identical fix, rather than suggest
+ to revert patch direction when (more or less? exactly) the same
+ thing is fixed
+
PROJECTS
- * Unicode support?
+ * Scripts:
+ - fix position of bar number
+ - stack scripts in chords:
+ % fingering: footing:
+ < a-4 c-2 g-1 > < c-\ltoe e-\lheel >
+ - script-spacing
+ - slur parts as a script
+ - stack parameterised scripts for fingering and footing:
+
+ * convert-mudela:
+ - automatically add a \version if not present.
+ - better parsing
+ - make smarter
+ - convert-mudela -e empty.ly
+
+ * emacs mudela-mode
+ - should handle block comments too.
+ - handle lexer modes (\header, \melodic, \lyric) etc.
+ - indentation
+ - notenames?
+ - fontlock: \melodic \melodic
+
+
+ * use properties for:
+ - Text_style
+ - default_octave
+ - plet?
+ - Staff_sym size
+ - default tempo.
+ - font size
+ - bartypes (get rid of derived Span_bar_engravers)
+ - cadenza mode?
+ - MIDI instrument
+ - staff title
+
+ * page handling:
+ - PS output
+ - optimal pagebreaking.
+
+ * Unicode support? -> man 7 unicode
- 16 bit Strings
- -u switch
- detect of 16/8 bit files
@@ -198,10 +340,10 @@ PROJECTS
* \header
- output header info to MIDI too.
- * Add mudela-output to Rosegarden.
+ * Add mudela-output to Rosegarden. (contact Derek Wyatt)
* a musical dictionary. See Documentation/vocabulary-*, other
-languages:
+ languages:
- explanation
- italian
- german
@@ -217,8 +359,6 @@ languages:
- MIDI output?
- typesetting
- * integrate midi-elts from mi2mu and lily?
-
* Debug logs:
- derive lily_stream, Dstream, texstream from ostream?
- indentable stream as baseclass for TeX stream, lily stream, Dstream.
@@ -262,7 +402,11 @@ languages:
- text
- slur start/end
- * cautionary accidental
+ * PS
+ - speed up PS code.
+ - PS lines to .eps files
+ - write custom prolog
+
* Output an output format independent (ofi) typeset file; and
make ofi2 TeX, MusiXTex, Display PostScript, PostScript,
@@ -272,13 +416,15 @@ languages:
- Common Music Notation
- PostScript output (esp. Beams, Slurs, etc)
- Move all Score_elems, into libmutype.a
+ - SGML
+
* Documentation
- Doc (C) stuff of sheet music
- a better format? SGML? TeX? Info?
- a tutorial
- * TeX spanners , use texbeam.cc as an example (smallish)
+ * more spanners (smallish)
- Glissando
- trill
@@ -289,9 +435,10 @@ languages:
- use plet grouping
- separate visual from rhythmic info even more
- beams over bars
+ - endbeam req should be *after* the duration, so you can do
+ < { [c4] }
+ { c8. c16 } >
- * Redo fonts
- - adapt for multiple font sizes.
* lines:
- Ledger lines, should be separate item: Ledger_lines, Ledger_lines
@@ -304,11 +451,7 @@ languages:
* Keys:
- merge key{item} & localkey{item}?
- - do conventional keys (C G A, F B E, a e fis, d as des, etc ),
- besides lists of flats/sharps, possibly via declaration
- - key transposition.
- - key undo: \key bes; .. . \key; should print natural
- - special key: \key bes 'b bis';
+ - Major/Minor
- spacing, national styles?
* Support for TAB
@@ -320,11 +463,8 @@ languages:
* breaking:
- caching breakpoints
- saving them
- - penalties
- specify number of lines
- * Rhythmic staff.
-
* markers
INPUTLANGUAGE
@@ -348,22 +488,26 @@ INPUTLANGUAGE
* relative mode for pitch entering
- * bracket (bracketplets)
+ * bracket: volta 1,2
* configure pitch_byte
* rest name configurable
- * Raw request syntax
-
SMALLISH PROJECTS
+ * limit memory usage; the full coriolan takes up too much resources.
+
+ * fix confusing naming in Engraver vs Engraver_group_engraver (context)
+
* progress when creating MIDI elts.
* A range for context errors (eg. mark both { and }. )
* lyric in staff (sharpsharp in staff, text below)
+ * half sharps/flats
+
* write Dynamic_line (to group dynamics horizontally)
* use Real for all y positions.
@@ -374,8 +518,6 @@ SMALLISH PROJECTS
* adaptive accidental spacing.
* handle EOF graciously in error messages.
-oo
- * caching Item/spanner dimensions.
* centered whole rest
@@ -395,10 +537,6 @@ oo
* stafftypes: voice names/ instrument names.
- * TeX stuff:
- - Decent TeX titledefs (\tempo, \metron, etc. )
- - decent TeX page layout
-
* lily \tempo
* C meter iso 4/4, idem for alla breve, etc.
@@ -407,13 +545,6 @@ oo
* Brackets
- * Scripts:
- - stack scripts in chords:
- % fingering: footing:
- < a-4 c-2 g-1 > < c-\ltoe e-\lheel >
- - script-spacing
- - slur parts as a script
- - stack parameterised scripts for fingering and footing:
% toe to bheel four to five
% ^_u 4_5
@@ -435,6 +566,7 @@ oo
IDEAS
+
* Output data structures of Mudela in XML/SGML.
* create libmudela, or liblily_frontend
@@ -444,9 +576,7 @@ IDEAS
* use an embedded language: Python, Scheme
for:
- Score_elems
- - Engraver
- Translators
- - Complex mudela?
* y -dims in internote? Staff-space? X-dimensions?
@@ -454,8 +584,6 @@ IDEAS
* caching breakpoints
- * #c <-> cis
-
* breath marks
* used fixedpoint arithmetic for min. energy.
@@ -466,17 +594,9 @@ IDEAS
- design meta-language like TeX and Metafont
- programming/macros input
- * Global type registration.
-
- My_class * p = create_object( My_class )
- Type t = get_type ( *p );
- if ( t <= get_type( q ))
- ..
-
* versioning stuff (cvt mudela, mudela, etc.)
-
- * dots into separate item.
+ * padded vertical alignment (rods for vertical placement)
* use String iso Text_def for lyrics.
@@ -484,6 +604,4 @@ IDEAS
* lyrics in chords still fuck up.
- * pushgroup/popgroup
-
* Use hooks/dependency graphs for properties
diff --git a/VERSION b/VERSION
index ed7ea2f305..522667c82e 100644
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,7 @@
-MAJOR_VERSION=0
-MINOR_VERSION=1
-PATCH_LEVEL=65
+PACKAGE_NAME=LilyPond
+MAJOR_VERSION=1
+MINOR_VERSION=0
+PATCH_LEVEL=1
MY_PATCH_LEVEL=
# use the above to send patches, always empty for released version:
diff --git a/aclocal.m4 b/aclocal.m4
index d1ec16c75e..0f54b68df8 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,30 +1,431 @@
-dnl aclocal.m4 generated automatically by aclocal 1.3
+dnl aclocal.m4 -*-shell-script-*-
+dnl StepMake subroutines for configure.in
+
+AC_DEFUN(AC_STEPMAKE_COMPILE, [
+ # -O is necessary to get inlining
+ OPTIMIZE="-O"
+ checking_b=yes
+ optimise_b=tja
+ profile_b=no
+ debug_b=yes
+
+ AC_ARG_ENABLE(checking,
+ [ enable-checking set runtime checks (assert calls). Default: on],
+ [checking_b=$enableval] )
+
+ # actually, the default is: tja='-O' to get inlining...
+ # off=''
+ AC_ARG_ENABLE(optimise,
+ [ enable-optimise use maximal speed optimisations. Default: off],
+ [optimise_b=$enableval])
+
+ AC_ARG_ENABLE(profiling,
+ [ enable-profiling compile with gprof support. Default: off],
+ [profile_b=$enableval])
+
+ AC_ARG_ENABLE(debugging,
+ [ enable-debugging set debug info. Default: on],
+ [debug_b=$enableval])
+
+ AC_ARG_ENABLE(mingw-prefix,
+ [ enable-mingw-prefix=DIR set the mingw32 directory (standalone windows32 exes)],
+ [MINGWPREFIX=$enableval],
+ [MINGWPREFIX=no])
+
+ if test "$printing_b" = no; then
+ # ugh
+ AC_DEFINE(NPRINT)
+ DEFINES="$DEFINES -DNPRINT"
+ fi
+
+ if test "$checking_b" = no; then
+ # ugh
+ AC_DEFINE(NDEBUG)
+ DEFINES="$DEFINES -DNDEBUG"
+ fi
+
+ if test "$optimise_b" = yes; then
+ DEFINES="$DEFINES -finline-functions"
+ OPTIMIZE="-O2"
+ fi
+
+ if test "$optimise_b" = no; then
+ OPTIMIZE=""
+ fi
+
+ if test $profile_b = yes; then
+ EXTRA_LIBES="-pg"
+ DEFINES="$DEFINES -pg"
+ fi
+
+ if test $debug_b = yes; then
+ DEFINES="$DEFINES -g"
+ fi
+
+ # however, C++ support in mingw32 v 0.1.4 is still flaky
+ if test x$MINGWPREFIX != xno; then
+ ICFLAGS="-I$MINGWPREFIX/include"
+ ILDFLAGS="-$MINGWPREFIX/lib"
+ fi
-dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-dnl This Makefile.in is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
+ AC_PROG_CC
+ LD='$(CC)'
+ AC_SUBST(LD)
+
+ CPPFLAGS=${CPPFLAGS:-""}
+ AC_SUBST(CPPFLAGS)
+ AC_SUBST(LDFLAGS)
+ AC_SUBST(ICFLAGS)
+ AC_SUBST(ILDFLAGS)
+ AC_SUBST(DEFINES)
+ AC_SUBST(EXTRA_LIBES)
+])
+
+AC_DEFUN(AC_STEPMAKE_CXX, [
+ AC_LANG_CPLUSPLUS
+ AC_PROG_CXX
+
+ AC_CHECK_HEADER(FlexLexer.h, true,
+ AC_STEPMAKE_WARN(can"\'"t find flex header. Please install Flex headers correctly))
+
+ CXXFLAGS="$DEFINES $OPTIMIZE"
+ LDFLAGS=$EXTRA_LIBES
+
+ AC_SUBST(CXXFLAGS)
+ AC_SUBST(CXX)
+ LD='$(CXX)'
+ AC_SUBST(LD)
+])
+
+AC_DEFUN(AC_STEPMAKE_CXXTEMPLATE, [
+ AC_CACHE_CHECK([whether explicit instantiation is needed],
+ lily_cv_need_explicit_instantiation,
+ AC_TRY_LINK([
+ template <class T> struct foo { static int baz; };
+ template <class T> int foo<T>::baz = 1;
+ ], [ return foo<int>::baz; ],
+ lily_cv_need_explicit_instantiation=no,
+ lily_cv_need_explicit_instantiation=yes))
+ if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then
+ AC_DEFINE(NEED_EXPLICIT_INSTANTIATION)
+ fi
+])
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-dnl PARTICULAR PURPOSE.
+AC_DEFUN(AC_STEPMAKE_DATADIR, [
+ if test "$datadir" = "\${prefix}/share"; then
+ datadir='${prefix}/share/'$package
+ fi
+ DIR_DATADIR=${datadir}
+ presome=${prefix}
+ if test "$prefix" = "NONE"; then
+ presome=${ac_default_prefix}
+ fi
+ DIR_DATADIR=`echo ${DIR_DATADIR} | sed "s!\\\${prefix}!$presome!"`
+ AC_SUBST(datadir)
+ AC_SUBST(DIR_DATADIR)
+ AC_DEFINE_UNQUOTED(DIR_DATADIR, "${DIR_DATADIR}")
+])
+
+AC_DEFUN(AC_STEPMAKE_END, [
+ AC_OUTPUT($CONFIGFILE.make:config.make.in)
+ rm -f Makefile
+ cp make/Toplevel.make.in ./Makefile
+ chmod 444 Makefile
+])
+
+AC_DEFUN(AC_STEPMAKE_GXX, [
+ # ugh autoconf
+ changequote(<<, >>)dnl
+ if $CXX --version | grep '2\.[78]' > /dev/null ||
+ $CXX --version | grep 'egcs' > /dev/null
+ changequote([, ])dnl
+ then
+ true
+ else
+ AC_STEPMAKE_WARN(can't find g++ 2.7, 2.8 or egcs)
+ fi
+])
+
+AC_DEFUN(AC_STEPMAKE_INIT, [
+
+ . $srcdir/VERSION
+ FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+ if test x$MY_PATCH_LEVEL != x; then
+ FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL
+ fi
+
+ # urg: don't "fix" this: irix doesn't know about [:lower:] and [:upper:]
+ changequote(<<, >>)dnl
+ PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'`
+ package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
+ changequote([, ])dnl
+
+ if test "x$PACKAGE" = "xSTEPMAKE"; then
+ echo Stepmake package!
+ (cd stepmake; rm -f stepmake; ln -s ../stepmake .)
+ (cd stepmake; rm -f bin; ln -s ../bin .)
+ AC_CONFIG_AUX_DIR(bin)
+ else
+ echo Package: $PACKAGE
+ AC_CONFIG_AUX_DIR(stepmake/bin)
+ fi
+
+ AC_SUBST(package)
+ AC_SUBST(PACKAGE)
+ AC_SUBST(PACKAGE_NAME)
+ AC_DEFINE_UNQUOTED(PACKAGE, "${PACKAGE_NAME}")
+ AC_DEFINE_UNQUOTED(TOPLEVEL_VERSION, "${FULL_VERSION}")
+
+ package_depth=`dirname $cache_file`
+ AC_SUBST(package_depth)
+
+ AUTOGENERATE="This file was automatically generated by configure"
+ AC_SUBST(AUTOGENERATE)
+ absolute_builddir="`pwd`"
+ AC_SUBST(absolute_builddir)
+
+ # No versioning on directory names of sub-packages
+ stepmake=stepmake
+ AC_SUBST(stepmake)
+
+ CONFIGSUFFIX=
+ AC_ARG_ENABLE(config,
+ [ enable-config=FILE put configure settings in config-FILE.make],
+ [CONFIGSUFFIX=$enableval])
+
+ if test "$CONFIGSUFFIX" != "" ; then
+ CONFIGFILE=config-$CONFIGSUFFIX
+ else
+ CONFIGFILE=config
+ fi
+ AC_SUBST(CONFIGSUFFIX)
+
+ AC_CANONICAL_HOST
+ AC_CHECK_PROGS(MAKE, make, error)
+ AC_CHECK_PROGS(FIND, find, error)
+
+
+dnl system supplied INSTALL is unsafe; use our own install.
+dnl AC_PROG_INSTALL
+dnl if test "$INSTALL" = "bin/install-sh"; then
+dnl export INSTALL="\$\(depth\)/bin/install-sh"
+dnl fi
+
+ AC_CHECK_PROGS(TAR, tar, error)
+ AC_CHECK_PROGS(BASH, bash, /bin/sh)
+
+ AC_PATH_PROG(PYTHON, python, -echo no python)
+ AC_SUBST(PYTHON)
+
+
+ AC_CHECK_SEARCH_RESULT($MAKE, GNU make, You should install GNU make)
+ if test $MAKE != "error" ; then
+ $MAKE -v| grep GNU > /dev/null
+ if test "$?" = 1
+ then
+ AC_STEPMAKE_WARN(Please install *GNU* make)
+ fi
+ fi
+
+ AC_CHECK_SEARCH_RESULT($PYTHON, python, You should install Python)
+
+ if test "x$OSTYPE" = "xcygwin32" || test "x$OSTYPE" = "xWindows_NT"; then
+ LN=cp # hard link does not work under cygnus-nt (yet?)
+ ZIP="zip -r -9" #
+ DOTEXE=.exe
+ else
+ LN=ln
+ ZIP="zip -r -9"
+ fi
+ AC_SUBST(DOTEXE)
+ AC_SUBST(ZIP)
+ AC_SUBST(LN)
+
+ AC_STEPMAKE_DATADIR
+])
+
+AC_DEFUN(AC_STEPMAKE_LEXYACC, [
+ # ugh, automake: we want (and check for) bison
+ AC_PROG_YACC
+ # ugh, automake: we want (and check for) flex
+ # AC_PROG_LEX
+ # urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack...
+
+ # AC_DECL_YYTEXT
+ # ugh, ugh
+ ac_cv_prog_lex_root=lex.yy
+
+ AC_CHECK_PROGS(BISON, bison, error)
+ AC_CHECK_PROGS(FLEX, flex, error)
+ AC_CHECK_SEARCH_RESULT($BISON, bison, Please install Bison, 1.25 or better)
+ AC_CHECK_SEARCH_RESULT($FLEX, flex, Please install Flex, 2.5 or better)
+
+ if test $BISON != "error"; then
+ bison_version=`$BISON --version| sed 's/^.*version 1.//g' `
+ if test $bison_version -lt 25; then
+ AC_STEPMAKE_WARN(Your bison is a bit old (1.$bison_version). You might have to install 1.25)
+ fi
+ fi
+
+ AC_SUBST(BISON)
+ AC_SUBST(FLEX)
+])
+
+AC_DEFUN(AC_STEPMAKE_LIB, [
+ AC_CHECK_PROGS(AR, ar, error)
+ AC_PROG_RANLIB
+
+ AC_SUBST(AR)
+ AC_SUBST(RANLIB)
+])
-AC_DEFUN(AC_JUNK_ARGS, [
+AC_DEFUN(AC_STEPMAKE_LIBTOOL, [
+ # libtool.info ...
+ # **Never** try to set library version numbers so that they correspond
+ # to the release number of your package. This is an abuse that only
+ # fosters misunderstanding of the purpose of library versions.
+
+ REVISION=$PATCH_LEVEL
+ # CURRENT=$MINOR_VERSION
+ CURRENT=`expr $MINOR_VERSION + 1`
+ # AGE=$(expr $MAJOR_VERSION + 1)
+ AGE=$MAJOR_VERSION
+ AC_SUBST(CURRENT)
+ AC_SUBST(REVISION)
+ AC_SUBST(AGE)
])
-AC_DEFUN(AC_LILY_WARN, [
+AC_DEFUN(AC_STEPMAKE_LOCALE, [
+ lang=English
+ ALL_LINGUAS="en nl"
+
+ # with/enable ??
+ AC_ARG_WITH(localedir,
+ [ with-localedir=LOCALE use LOCALE as locale dir. Default: PREFIX/share/locale ],
+ localedir=$with_localedir,
+ localedir='${prefix}/share/locale')
+
+ AC_ARG_WITH(lang,
+ [ with-lang=LANG use LANG as language to emit messages],
+ language=$with_lang,
+ language=English)
+
+ AC_MSG_CHECKING(language)
+ case "$language" in
+ En* | en* | Am* | am* | US* | us*)
+ lang=English;;
+ NL | nl | Du* | du* | Ned* | ned*)
+ lang=Dutch;;
+ "")
+ lang=English;;
+ *)
+ lang=unknown;;
+ esac
+ AC_MSG_RESULT($lang)
+
+ if test "$lang" = "unknown" ; then
+ AC_STEPMAKE_WARN($language not supported; available are: $ALL_LINGUAS)
+ fi
+
+])
+
+AC_DEFUN(AC_STEPMAKE_GETTEXT, [
+ DIR_LOCALEDIR=${localedir}
+ presome=${prefix}
+ if test "$prefix" = "NONE"; then
+ presome=${ac_default_prefix}
+ fi
+ DIR_LOCALEDIR=`echo ${DIR_LOCALEDIR} | sed "s!\\\${prefix}!$presome!"`
+ AC_SUBST(localedir)
+ AC_SUBST(DIR_LOCALEDIR)
+ AC_DEFINE_UNQUOTED(DIR_LOCALEDIR, "${DIR_LOCALEDIR}")
+
+ AC_CHECK_LIB(intl, gettext)
+ AC_CHECK_FUNCS(gettext)
+])
+
+AC_DEFUN(AC_STEPMAKE_MAN, [
+ AC_CHECK_PROGS(TROFF, troff, -echo no troff)
+])
+
+AC_DEFUN(AC_STEPMAKE_MSGFMT, [
+ AC_CHECK_PROGS(MSGFMT, msgfmt, -echo no msgfmt)
+ AC_MSG_CHECKING(whether msgfmt accepts -o)
+ msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`"
+ if test "$msgfmt_output" = ""; then
+ AC_MSG_RESULT(yes)
+ else
+ # urg
+ MSGFMT="touch $@; echo "
+ AC_MSG_RESULT(no)
+ AC_STEPMAKE_WARN(please install msgfmt from GNU gettext)
+ fi
+])
+
+AC_DEFUN(AC_STEPMAKE_TEXMF, [
+ AC_ARG_ENABLE(tex-prefix,
+ [ enable-tex-prefix=DIR set the tex-directory to find TeX subdirectories. (default: PREFIX)],
+ [TEXPREFIX=$enableval],
+ [TEXPREFIX=auto] )
+
+ AC_ARG_ENABLE(tex-dir,
+ [ enable-tex-dir=DIR set the directory to put $PACKAGE_NAME TeX files in. ],
+ [TEXDIR=$enableval],
+ [TEXDIR=auto] )
+
+ AC_ARG_ENABLE(mf-dir,
+ [ enable-mf-dir=DIR set the directory to put $PACKAGE_NAME MetaFont files in. ],
+ [MFDIR=$enableval],
+ [MFDIR=auto])
+
+ if test "x$TEXPREFIX" = xauto ; then
+ AC_TEX_PREFIX(TEXPREFIX)
+ else
+ find_texprefix=$TEXPREFIX
+ fi
+
+ if test "x$MFDIR" = xauto; then
+ AC_MF_SUBDIR(MFDIR)
+ fi
+
+ if test "x$TEXDIR" = xauto ; then
+ AC_TEX_SUBDIR(TEXDIR)
+ fi
+
+ AC_SUBST(TEXPREFIX)
+ AC_SUBST(TEXDIR)
+ AC_SUBST(MFDIR)
+])
+
+AC_DEFUN(AC_STEPMAKE_WARN, [
AC_MSG_WARN($1)
warn_b=yes
])
+AC_DEFUN(AC_STEPMAKE_YODL, [
+ if test "x$YODL" = "x"; then
+ AC_CHECK_PROGS(YODL, yodl, -echo no yodl)
+ AC_CHECK_PROGS(YODL2HTML, yodl2html, -echo no yodl)
+ AC_CHECK_PROGS(YODL2LATEX, yodl2latex, )
+ AC_CHECK_PROGS(YODL2MAN, yodl2man, -echo no yodl)
+ AC_CHECK_PROGS(YODL2TEXINFO, yodl2texinfo, -echo no yodl)
+ AC_CHECK_PROGS(YODL2TXT, yodl2txt, -echo no yodl)
+ else
+ AC_SUBST(YODL)
+ AC_SUBST(YODL2HTML)
+ AC_SUBST(YODL2LATEX)
+ AC_SUBST(YODL2MAN)
+ AC_SUBST(YODL2TEXINFO)
+ AC_SUBST(YODL2TXT)
+ export YODL YODL2HTML YODL2LATEX YODL2MAN YODL2TEXINFO YODL2TXT
+ fi
+])
+
dnl should cache result.
dnl should look in $prefix first.
dnl should probably assume TDS
-
-
AC_DEFUN(AC_TEX_PREFIX, [
@@ -45,7 +446,7 @@ AC_DEFUN(AC_TEX_PREFIX, [
if test "x$find_texpostfix" = x; then
find_texpostfix='/lib/texmf/tex'
- AC_LILY_WARN(Cannot determine the TeX-directory. Please use --enable-tex-prefix)
+ AC_STEPMAKE_WARN(Cannot determine the TeX-directory. Please use --enable-tex-prefix)
fi
find_texprefix="$find_root_prefix/$find_texpostfix"
@@ -73,7 +474,7 @@ AC_DEFUN(AC_FIND_DIR_IN_PREFIX, [
if test "x$find_dirdir" = x; then
find_dirdir="/$3";
- AC_LILY_WARN(Cannot determine $4 subdirectory. Please set from command-line)
+ AC_STEPMAKE_WARN(Cannot determine $4 subdirectory. Please set from command-line)
true
fi
$2=$find_dirdir
@@ -117,380 +518,136 @@ dnl AC_REQUIRE([AC_TEX_PREFIX])
])
AC_DEFUN(AC_CHECK_SEARCH_RESULT, [
- if test $1 = "error"
- then
- AC_LILY_WARN(can't find $2. $3)
+ result="`echo \"$1\" | grep echo`"
+ if test "x$1" = "xerror" -o "x$result" != "x"; then
+ AC_STEPMAKE_WARN(can\'t find $2. $3)
fi
])
-# Do all the work for Automake. This macro actually does too much --
-# some checks are only needed if your package does certain things.
-# But this isn't really a big deal.
-
-# serial 1
-
-dnl Usage:
-dnl AM_INIT_AUTOMAKE(package,version, [no-define])
-
-AC_DEFUN(AM_INIT_AUTOMAKE,
-[AC_REQUIRE([AM_PROG_INSTALL])
-PACKAGE=[$1]
-AC_SUBST(PACKAGE)
-VERSION=[$2]
-AC_SUBST(VERSION)
-dnl test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-fi
-ifelse([$3],,
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
-AC_DEFINE_UNQUOTED(VERSION, "$VERSION"))
-AC_REQUIRE([AM_SANITY_CHECK])
-AC_REQUIRE([AC_ARG_PROGRAM])
-dnl FIXME This is truly gross.
-missing_dir=`cd $ac_aux_dir && pwd`
-AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
-AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
-AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
-AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
-AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
-AC_REQUIRE([AC_PROG_MAKE_SET])])
-
-
-# serial 1
-
-AC_DEFUN(AM_PROG_INSTALL,
-[AC_REQUIRE([AC_PROG_INSTALL])
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-AC_SUBST(INSTALL_SCRIPT)dnl
-])
+# Configure paths for GTK+
+# Owen Taylor 97-11-3
-#
-# Check to make sure that the build environment is sane.
-#
-
-AC_DEFUN(AM_SANITY_CHECK,
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftestfile
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
- if test "[$]*" = "X"; then
- # -L didn't work.
- set X `ls -t $srcdir/configure conftestfile`
- fi
- if test "[$]*" != "X $srcdir/configure conftestfile" \
- && test "[$]*" != "X conftestfile $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
-
- test "[$]2" = conftestfile
- )
-then
- # Ok.
- :
-else
- AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-rm -f conftest*
-AC_MSG_RESULT(yes)])
-
-dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
-dnl The program must properly implement --version.
-AC_DEFUN(AM_MISSING_PROG,
-[AC_MSG_CHECKING(for working $2)
-# Run test in a subshell; some versions of sh will print an error if
-# an executable is not found, even if stderr is redirected.
-# Redirect stdin to placate older versions of autoconf. Sigh.
-if ($2 --version) < /dev/null > /dev/null 2>&1; then
- $1=$2
- AC_MSG_RESULT(found)
-else
- $1="$3/missing $2"
- AC_MSG_RESULT(missing)
-fi
-AC_SUBST($1)])
-
-
-# serial 24 AM_PROG_LIBTOOL
-AC_DEFUN(AM_PROG_LIBTOOL,
-[AC_REQUIRE([AM_ENABLE_SHARED])dnl
-AC_REQUIRE([AM_ENABLE_STATIC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_RANLIB])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AM_PROG_LD])dnl
-AC_REQUIRE([AM_PROG_NM])dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
+dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
dnl
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-# Check for any special flags to pass to ltconfig.
-libtool_flags=
-test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
-test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
-test "$silent" = yes && libtool_flags="$libtool_flags --silent"
-test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
-test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case "$host" in
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case "`/usr/bin/file conftest.o`" in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -64"
- ;;
- esac
+AC_DEFUN(AM_PATH_GTK,
+[dnl
+dnl Get the cflags and libraries from the gtk-config script
+dnl
+ AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
+ min_gtk_version=ifelse([$1], ,0.99.7,$1)
+ AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
+ no_gtk=""
+ if test "$GTK_CONFIG" != "no" ; then
+ GTK_CFLAGS=`$GTK_CONFIG --cflags`
+ GTK_LIBS=`$GTK_CONFIG --libs`
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CFLAGS="$CFLAGS $GTK_CFLAGS"
+ CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
+ LIBS="$LIBS $GTK_LIBS"
+dnl
+dnl Now check if the installed GTK is sufficiently new. (Also sanity
+dnl checks the results of gtk-config to some extent
+dnl
+ AC_TRY_RUN([
+#include <gtk/gtk.h>
+#include <stdio.h>
+
+int
+main ()
+{
+ int major, minor, micro;
+
+ if (sscanf("$min_gtk_version", "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_gtk_version");
+ exit(1);
+ }
+
+ return !((gtk_major_version > major) ||
+ ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+ ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)));
+}
+],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ LIBS="$ac_save_LIBS"
+ else
+ no_gtk=yes
fi
- rm -rf conftest*
- ;;
-
-*-*-sco3.2v5*)
- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
- CFLAGS="$CFLAGS -belf"
- ;;
-esac
-
-# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
-|| AC_MSG_ERROR([libtool configure failed])
+ if test "x$no_gtk" = x ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ GTK_CFLAGS=""
+ GTK_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
+ AC_SUBST(CXXFLAGS)
+ AC_SUBST(GTK_CFLAGS)
+ AC_SUBST(GTK_LIBS)
])
-# AM_ENABLE_SHARED - implement the --enable-shared flag
-# Usage: AM_ENABLE_SHARED[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AM_ENABLE_SHARED,
-[define([AM_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(shared,
-changequote(<<, >>)dnl
-<< --enable-shared build shared libraries [default=>>AM_ENABLE_SHARED_DEFAULT]
-changequote([, ])dnl
-[ --enable-shared=PKGS only build shared libraries if the current package
- appears as an element in the PKGS list],
-[p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_shared=yes ;;
-no) enable_shared=no ;;
-*)
- enable_shared=no
- # Look at the argument we got. We use all the common list separators.
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
- for pkg in $enableval; do
- if test "X$pkg" = "X$p"; then
- enable_shared=yes
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac],
-enable_shared=AM_ENABLE_SHARED_DEFAULT)dnl
-])
-
-# AM_DISABLE_SHARED - set the default shared flag to --disable-shared
-AC_DEFUN(AM_DISABLE_SHARED,
-[AM_ENABLE_SHARED(no)])
-
-# AM_DISABLE_STATIC - set the default static flag to --disable-static
-AC_DEFUN(AM_DISABLE_STATIC,
-[AM_ENABLE_STATIC(no)])
-
-# AM_ENABLE_STATIC - implement the --enable-static flag
-# Usage: AM_ENABLE_STATIC[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AM_ENABLE_STATIC,
-[define([AM_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(static,
-changequote(<<, >>)dnl
-<< --enable-static build static libraries [default=>>AM_ENABLE_STATIC_DEFAULT]
-changequote([, ])dnl
-[ --enable-static=PKGS only build shared libraries if the current package
- appears as an element in the PKGS list],
-[p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_static=yes ;;
-no) enable_static=no ;;
-*)
- enable_static=no
- # Look at the argument we got. We use all the common list separators.
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
- for pkg in $enableval; do
- if test "X$pkg" = "X$p"; then
- enable_static=yes
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac],
-enable_static=AM_ENABLE_STATIC_DEFAULT)dnl
-])
+# Configure paths for GTK--
+# Jan Nieuwenhuizen 98-06-3
-# AM_PROG_LD - find the path to the GNU or non-GNU linker
-AC_DEFUN(AM_PROG_LD,
-[AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])
-ac_prog=ld
-if test "$ac_cv_prog_gcc" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
- case "$ac_prog" in
- # Accept absolute paths.
- /* | [A-Za-z]:\\*)
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(ac_cv_path_LD,
-[if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog"; then
- ac_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
- else
- test "$with_gnu_ld" != yes && break
- fi
- fi
- done
- IFS="$ac_save_ifs"
-else
- ac_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$ac_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_SUBST(LD)
-AM_PROG_LD_GNU
-])
-
-AC_DEFUN(AM_PROG_LD_GNU,
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- ac_cv_prog_gnu_ld=yes
-else
- ac_cv_prog_gnu_ld=no
-fi])
-])
-
-# AM_PROG_NM - find the path to a BSD-compatible name lister
-AC_DEFUN(AM_PROG_NM,
-[AC_MSG_CHECKING([for BSD-compatible nm])
-AC_CACHE_VAL(ac_cv_path_NM,
-[case "$NM" in
-/* | [A-Za-z]:\\*)
- ac_cv_path_NM="$NM" # Let the user override the test with a path.
- ;;
-*)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/nm; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
- else
- ac_cv_path_NM="$ac_dir/nm"
- fi
- break
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
- ;;
-esac])
-NM="$ac_cv_path_NM"
-AC_MSG_RESULT([$NM])
-AC_SUBST(NM)
+dnl AM_PATH_GTK__([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for GTK--, and define GTK___CFLAGS and GTK___LIBS
+dnl
+AC_DEFUN(AM_PATH_GTK__,
+[dnl
+dnl Get the cflags and libraries from the gtk__-config script
+dnl
+ min_gtk___version=ifelse([$1], ,0.9.4,$1)
+ AC_MSG_CHECKING(for GTK-- - version >= $min_gtk___version)
+ no_gtk__=""
+ if test "$GTK_CONFIG" != "no" ; then
+ GTK___CFLAGS=`$GTK_CONFIG --cflags`
+ GTK_LIBS=`$GTK_CONFIG --libs`
+ GTK___LIBS="$GTK_LIBS -lgtkmm"
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CFLAGS="$CFLAGS $GTK___CFLAGS"
+ CXXFLAGS="$CXXFLAGS $GTK___CFLAGS"
+ LIBS="$LIBS $GTK___LIBS"
+dnl
+dnl Now check if the installed GTK__ is sufficiently new. (Also sanity
+dnl checks the results of gtk__-config to some extent
+dnl
+ AC_TRY_RUN([
+#include <gtk--.h>
+#include <stdio.h>
+
+int
+main ()
+{
+ // urg
+ return 0;
+}
+],, no_gtk__=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ LIBS="$ac_save_LIBS"
+ else
+ no_gtk__=yes
+ fi
+ if test "x$no_gtk__" = x ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ GTK___CFLAGS=""
+ GTK___LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ CXXFLAGS="$CXXFLAGS $GTK___CFLAGS"
+ AC_SUBST(CXXFLAGS)
+ AC_SUBST(GTK___CFLAGS)
+ AC_SUBST(GTK___LIBS)
])
-
-dnl AM_PROG_LEX
-dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT
-AC_DEFUN(AM_PROG_LEX,
-[missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1)
-AC_CHECK_PROGS(LEX, flex lex, "$missing_dir/missing flex")
-AC_PROG_LEX
-AC_DECL_YYTEXT])
-
-# Like AC_CONFIG_HEADER, but automatically create stamp file.
-
-AC_DEFUN(AM_CONFIG_HEADER,
-[AC_PREREQ([2.12])
-AC_CONFIG_HEADER([$1])
-dnl When config.status generates a header, we must update the stamp-h file.
-dnl This file resides in the same directory as the config header
-dnl that is generated. We must strip everything past the first ":",
-dnl and everything past the last "/".
-AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
-ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
-<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
-<<am_indx=1
-for am_file in <<$1>>; do
- case " <<$>>CONFIG_HEADERS " in
- *" <<$>>am_file "*<<)>>
- echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
- ;;
- esac
- am_indx=`expr "<<$>>am_indx" + 1`
-done<<>>dnl>>)
-changequote([,]))])
-
diff --git a/bin/Makefile b/bin/Makefile
deleted file mode 100644
index b7a8c3a60d..0000000000
--- a/bin/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# bin/Makefile
-
-depth = ..
-include $(depth)/make/Include.make
-
-# list of distribution files:
-EXTRA_DISTFILES = install-sh config.sub config.guess ltconfig
-
-include $(depth)/make/Scripts.make
-
-EXECUTABLES=convert-mudela mudela-book ly2dvi
-
-include $(depth)/make/Executable.make
diff --git a/bin/add-URLs.sh b/bin/add-URLs.sh
deleted file mode 100755
index a32e6f964b..0000000000
--- a/bin/add-URLs.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# add URLs for broken perl 5.004
-
-perl -i~ -pe 's! ([a-z]+://[^ \t]+)! <a href=$1>$1</a>!g' $*
diff --git a/bin/add-html-footer.py b/bin/add-html-footer.py
deleted file mode 100644
index e18d5d244a..0000000000
--- a/bin/add-html-footer.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!@PYTHON@
-
-"""
-Print a nice footer. add the top of the NEWS file (up to the ********)
-"""
-
-
-import os
-import sys
-import getopt
-import __main__
-
-lilypath =''
-try:
- lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except KeyError:
- print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
- sys.exit(1)
-
-lilypath = lilypath + '/bin/'
-sys.path.append(lilypath)
-
-from lilypython import *
-
-lilyversion= ''
-fullname = "unknown"
-news_file = ''
-
-def set_vars():
- __main__.lilyversion = version_tuple_to_str(lilydirs.version_tuple())
- os.environ["CONFIGSUFFIX"] = 'www';
- pw = pwd.getpwuid (os.getuid());
-
- __main__.fullname= pw[4];
-
-
-backstr = '\n<hr>Please take me <a href=%s>back to the index</a>\n\
-of LilyPond -- The GNU Project Music typesetter\n\
-<hr><font size=-1>\n\
-This page was built from lilypond-%s by <p>\n\
-<address><br>%s <a href=mailto:%s>&lt<!bla>%s</a>&gt</address>\n\
-<p></font>'
-
-set_vars ()
-banner_file = ''
-news_file=''
-news =''
-(options, files) = getopt.getopt(sys.argv[1:], '', ['news='])
-
-for opt in options:
- o = opt[0]
- a = opt[1]
- if o == '--news':
- news_file = a
-
-def footstr(index):
- return backstr % (index, lilyversion, fullname, mailaddress (), mailaddress)
-
-index_file='../../out-www/index.html'
-banner = footstr (index_file)
-banner_id = '<! banner_id >'
-
-
-if news_file:
- news = gulp_file (news_file)
- i = regex.search ('^\*\*', news)
- news = news[:i]
-
-
-for f in files:
- s = gulp_file (f)
- if news_file:
- s = regsub.sub ('top_of_NEWS', '<XMP>\n'+ news + '\n</XMP>\n', s)
-
- if regex.search (banner_id, s) == -1:
- s = regsub.sub ('</body>', '</BODY>', s)
- s = regsub.sub ('</BODY>', banner_id + banner + '</BODY>', s)
-
- dump_file (f, s)
diff --git a/bin/clean-embeds.sh b/bin/clean-embeds.sh
deleted file mode 100755
index 1b53f85ecb..0000000000
--- a/bin/clean-embeds.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-rm -f feta-sleur-[0-9x\-]*.mf
-rm -f feta-sleur-[0-9x\-]*.log
-rm -f feta-beum-[0-9x\-]*.mf
-rm -f feta-beum-[0-9x\-]*.log
-rm -f feta-embed.aux
-rm -f missfont.log
-clean-fonts sleur
-clean-fonts beum
diff --git a/bin/conflily.sh b/bin/conflily.sh
deleted file mode 100755
index 0f4fda05d8..0000000000
--- a/bin/conflily.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-# conflily --- configure LilyPond sourcetree
-#
-# You should set LILYPOND_SOURCEDIR to the latest uppacked source dir,
-# it will default to:
-#
-export LILYPOND_SOURCEDIR=$HOME/lelie/current
-#
-# and create links to here, if necessary
-#
-if [ ! -e $HOME/lelie ]; then
- (cd ..; ln -s `pwd` $HOME/lelie)
-fi
-#
-#
-current=`basename \`pwd\``
-# (cd ..; rm -f current)
-(cd ..; rm -f current 2>&1 > /dev/null)
-(cd ..; ln -s $current current)
-#
-# The LilyPond root dir looks like this:
-#
-# current -> ./lilypond-x.x.x symlink to current source
-# lilypond-x.x.x/ the unpacked LilyPond source
-# patches/ gzipped patches
-# releases/ tar gzipped releases
-# test/ latest output of 'release'
-#
-#
-if [ "x$LILYINCLUDE" = "x" ]; then
- # we can try...
- echo you should add the following to your login script
- if [ "x$MAILADDRESS" = "x" ]; then
- export MAILADDRESS=$USER@`hostname`
- echo " export MAILADDRESS=\$USER@`hostname`"
- fi
- export LILYINCLUDE=$LILYPOND_SOURCEDIR/init:$LILYPOND_SOURCEDIR/mf/out
- export PATH=$PATH$LILYPOND_SOURCEDIR/bin:
- export MFINPUTS=$MFINPUTS:$LILYPOND_SOURCEDIR/mf
- export TEXINPUTS=$TEXINPUTS:$LILYPOND_SOURCEDIR/mf/out
- cat <<EOF
- export LILYINCLUDE=\$LILYPOND_SOURCEDIR/init:\$LILYPOND_SOURCEDIR/mf/out
- export PATH=\$PATH:$LILYPOND_SOURCEDIR/bin
- export MFINPUTS=\$MFINPUTS:\$LILYPOND_SOURCEDIR/mf
- export TEXINPUTS=\$TEXINPUTS:\$LILYPOND_SOURCEDIR/mf/out
-EOF
-fi
-
-ln -sf $LILYPOND_SOURCEDIR/lily/out/lilypond bin/out/lilypond
-ln -sf $LILPPOND_SOURCEDIR/out/mi2mu bin/out/mi2mu
-
-configure --prefix=/usr --enable-debugging --enable-printing --enable-checking --disable-optimise
diff --git a/bin/convert-mudela.pl b/bin/convert-mudela.pl
deleted file mode 100755
index 3787efcde3..0000000000
--- a/bin/convert-mudela.pl
+++ /dev/null
@@ -1,386 +0,0 @@
-#!@PERL@ -w
-# -*-perl-*-
-
-=head1 TODO
-
- detect \lyrics and \melodic, and do substitution accordingly.
- count <> and {} ?
-
-Ugh . Perl sux. Anybody for Python?
-
-=cut
-
-
-
-#
-# version of "supporting" engine, not mudela conversions.
-#
-
-
-
-
-$convert_mudela_version = "0.1.2";
-
-use Getopt::Long;
-
-
-sub version_compare
-{
- local ($a,$b)=@_;
- return &cmpver;
-}
-
-
-sub cmpver
-{
- my(@a)= split /\./,$a;
- my(@b)= split /\./,$b;
-
- for $i (0,1,2) {
- return $a[$i] <=> $b[$i] if ($a[$i] != $b[$i]);
- }
- return $a cmp $b;
-}
-
-sub version_string_conv
-{
- my ($from_version, $to_version) = @_;
- s/\version \"$from_version\"/\version \"$to_version\"/g;
-}
-
-################################################################
-
-sub no_conv
-{
-}
-
-sub convert_0_0_52_to_0_0_53
-{
-
- s/include \"/$1\\include \"/g;
-}
-
-
-sub convert_0_0_54_to_0_0_55
-{
- s/%{/% {/g;
-}
-
-
-sub convert_0_0_53_to_0_0_54
-{
- print STDERR "Not smart enough to convert \\transpose\n" if (/\\transpose/) ;
-}
-
-# we-re not at 58 yet, but this is at least one of the rules
-sub convert_0_0_55_to_0_0_56
-{
- s/\"\|\|\"/\"|.\"/g;
-}
-
-sub convert_0_0_56_to_0_0_57
-{
- s/\(([ \]\[|\t-\.>]|\\[<!>a-z]+)*\)/\~ $1/g;
-}
-
-sub convert_0_0_57_to_0_0_58
-{
- s/\[ *([^\[\]]*)\] *([1-9]*) *\/ *([1-9]*)/[$2\/$3 $1]1\/1/g;
-}
-
-sub convert_0_0_58_to_0_0_59
-{
- die "Not smart enough to convert 0.0.58 to 0.0.59\n";
-}
-
-sub convert_0_0_59_to_0_0_60
-{
- s/(\\unitspace [0-9.mcptin\\ ]+|\\geometric [0-9.]+|\\width [0-9.mcp\\tin]+)/$1;/g;
- s/(\\output \"[^\"]+\")/$1;/;
- s/(\\tempo [0-9: ]+)/$1;/;
-}
-
-sub convert_0_0_60_to_0_0_61
-{
- s/(\\unitspace|\\geometric|\\width)/$1=/g;
-
-}
-
-sub convert_0_1_0_to_0_1_1
-{
- s/\\tempo (.*):(.*);/\\tempo $1 = $2;/g
-}
-
-sub convert_0_1_2_to_0_1_3
-{
- s/\\stem *(\\up|1) *;/\\stemup/g;
- s/\\stem *(\\down|-1) *;/\\stemdown/g;
- s/\\stem *0 *;/\\stemboth/g;
- s/\\hshift ([^;]+) *;/\\property Voice.hshift = $1/g;
-}
-
-my $header_b = 0;
-
-sub generic_conversion_scan
-{
- if (/\\header *\{/)
- {
- $header_b = 1;
- }
- if ($header_b && /^ *\}/)
- {
- $header_b = 0;
- }
-}
-sub convert_0_1_4_to_0_1_5
-{
- s/([<{]) *\\id "Piano" (.+);/\\type Grandstaff = $3 $1/;
- s/([<{]) *\\id (.+) (.+);/\\type $2 = $3 $1/;
-}
-
-
-sub convert_0_1_5_to_0_1_6
-{
- s/< *\\multi (.*);/\\multi $1 </;
-}
-
-sub convert_0_1_6_to_0_1_7
-{
- if ($header_b)
- {
- s/^([a-zA-z]+)[ \t]+(.*)$/$1 =\t \"$2\";/;
- s/^([ \t])+(.*)$/$1 \"$2\";/;
- }
-}
-
-sub convert_0_1_7_to_0_1_8
-{
- s/\\plet *1 *\/ *1 *;/\\]/;
- s/\\plet *([1-9][0-9]*) *\/ *([2-9][0-9]*) *;/\\[$1\/$2/;
-}
-
-sub convert_0_1_8_to_0_1_9
-{
-# sticky plet shorthand...
-# print "introduced plet and finger shorthands...\n";
-}
-
-sub convert_0_1_9_to_0_1_10
-{
- s/Grandstaff/Grand_staff/;
-}
-
-sub convert_0_1_10_to_0_1_14
-{
- while ( /([ \n\t\]\[<>()])\'+[a-zA-Z]/ )
- {
- s/([ \n\t\[<>()\]])\'(\'*[a-zA-Z]+)/$1$2,/g;
- }
-}
-sub convert_0_1_14_to_0_1_15
-{
-# junked \duration last and \duration 4, 8, 16 etc.
-# junked \octave relative
- print STDERR "Not smart enough to convert \\duration\n" if (/\\duration/) ;
- print STDERR "Not smart enough to convert \\octave relative\n" if (/\\octave relative/) ;
-}
-
-###############################################################
-
-sub last_conversion
-{
- my @v = &versions;
- return pop @v;
-}
-sub identify
-{
-
- print STDERR "This is convert-mudela " . $convert_mudela_version .
- " (up to mudela version ", last_conversion, ")\n";
-}
-
-
- sub usage
- {
- print STDERR "Usage: convert-mudela [options] [mudela-file]...\n"
- . "Convert old mudela source from mudela-file or stdin\n\n"
- . "Options:\n"
- . " -e, --edit perform in-place conversion\n"
- . " -f, --from=PATHLEVEL use source version 0.0.PATCHLEVEL\n"
- . " -h, --help print this help\n"
- . " -o, --output=FILE name output file\n"
- . " -s, --show-rules print all known conversion rules\n"
- . " -t, --to=VERSION convert to version VERSION\n"
- }
-
-
-my %minor_conversions = ("0.0.50" => \&no_conv,
- "0.0.52" => \&convert_0_0_50_to_0_0_52,
- "0.0.53" => \&convert_0_0_52_to_0_0_53,
- "0.0.54" => \&convert_0_0_53_to_0_0_54,
- "0.0.55" => \&convert_0_0_54_to_0_0_55,
- "0.0.56" => \&convert_0_0_55_to_0_0_56,
- "0.0.57" => \&convert_0_0_56_to_0_0_57,
- "0.0.58" => \&convert_0_0_57_to_0_0_58,
- "0.0.59" => \&convert_0_0_58_to_0_0_59,
- "0.0.60" => \&convert_0_0_59_to_0_0_60,
- "0.0.61" => \&convert_0_0_60_to_0_0_61,
- "0.1.1" => \&convert_0_1_0_to_0_1_1,
- "0.1.2" => \&no_conv,
- "0.1.3" => \&convert_0_1_2_to_0_1_3,
- "0.1.4" => \&no_conv,
- "0.1.5" => \&convert_0_1_4_to_0_1_5,
- "0.1.6" => \&convert_0_1_5_to_0_1_6
- ,"0.1.7" => \&convert_0_1_6_to_0_1_7
- ,"0.1.8" => \&convert_0_1_7_to_0_1_8
- ,"0.1.9" => \&convert_0_1_8_to_0_1_9
- ,"0.1.10" => \&convert_0_1_9_to_0_1_10
- , "0.1.14" => \&convert_0_1_10_to_0_1_14
- , "0.1.15" => \&convert_0_1_14_to_0_1_15
- );
-
-
-
-sub versions
-{
- return (sort { cmpver; } (keys %minor_conversions));
-}
-
-
-sub show_rules
-{
- my (@v) = versions;
-
- print "Rules: ", join(", ", @v), "\n";
-
-}
-
-sub do_conversion
-{
- my ($from,$to) = @_;
-
- my @applicable_conversion;
- my @mudela_levels;
-
- my @v = versions;
- foreach $ver (@v) {
- if (version_compare($ver, $from) > 0 && version_compare($ver,$to) <= 0 ){
- push @applicable_conversion, $minor_conversions{$ver};
- push @mudela_levels, $ver;
- }
- }
-
- print STDERR "Applying following rules: ", join(", ", @mudela_levels) , "\n";
-
- while (<INLY>) {
- generic_conversion_scan;
- foreach $subroutine (@applicable_conversion) {
-
- &$subroutine;
-
- }
- version_string_conv $from, $to;
- print OUTLY;
- }
-}
-
-sub get_auto_from
-{
- my ($fn)=@_;
- my ($ver);
- open INLY, $fn || die "Can't open";
-
- while (<INLY>) {
- s/^.*\\version \"([^\"]*)\".*$//;
- if (defined ($1)) {
- print STDERR "Guessing version: ", $1, ".. ";
- $ver = $1;
- last;
- }
- }
- if (!defined($ver)){
- print STDERR "can't determine mudela version in $fn.\n";
- my $u;
- return $u;
- }
- close INLY;
- return $ver;
-}
-
-sub set_files
-{
- $infile = "-";
- $outfile = "-";
- $outfile = $opt_output if (defined($opt_output));
-
- if ($ARGV [0]) {
- $infile = $ARGV[0];
- }
- if (!(-f $infile) && !($infile =~ /\.ly$/s)) {
- $infile .= ".ly";
- }
- if ($opt_edit && $infile ne "-") {
- $opt_edit = 1;
- $outfile = "$infile.NEW";
- $infile = "$infile";
- }
- print STDERR "Input ", (($infile eq "-") ?"STDIN" : $infile), " .. ";
-
-}
-
-sub do_one_arg
-{
- set_files;
-
- local ($from_version, $to_version);
- $from_version = $opt_from;
- $to_version = $opt_to;
-
- ($from_version = get_auto_from $infile) unless defined($opt_from);
- return if (!defined($from_version));
-
- ($to_version = last_conversion) unless (defined($opt_to));
-
- die "can't open \`$infile\'" unless open INLY,$infile ;
- die "can't open \`$outfile\'" unless open OUTLY, ">$outfile";
-
- do_conversion $from_version, $to_version;
- close INLY;
- close OUTLY;
-
- if ($opt_edit) {
- rename $infile, "$infile~";
- rename $outfile, "$infile";
- }
-}
-
-## "main"
-
-identify;
-
-
-GetOptions ("help", "output=s", "from=s", "to=s", "minor=i", "edit", "show-rules");
-
-if ($opt_help) {
- usage();
- $opt_help = 0; # to extinguish typo check.
- exit 0;
-}
-
-if ($opt_show_rules) {
- show_rules ;
- $opt_show_rules = 0; # to extinguish typo check.
- exit 0;
-}
-
-local ( $infile,$outfile);
-my $processed_one=0;
-
-while (defined($ARGV[0])) {
- do_one_arg;
- shift @ARGV;
- $processed_one = 1;
-}
-do_one_arg unless ($processed_one);
-
-
diff --git a/bin/doos-dist.sh b/bin/doos-dist.sh
deleted file mode 100644
index baef3fc923..0000000000
--- a/bin/doos-dist.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-# doos-dist.sh --- make a windoze distribution
-
-latest=lilypond-`show-latest -p`
-{ cd $LILYPOND_SOURCEDIR; cd ..;
-export LILYPOND_ROOTDIR=`pwd` }
-
-if [ ! -e $LILYPOND_ROOTDIR/doos/zip ]; then
- doo mkdir -p $LILYPOND_ROOTDIR/doos/zip
-fi
-
-set -x
-
-cd $LILYPOND_ROOTDIR/doos || exit 1
-
-rm -rf lilypond-*
-
-tar xzf $LILYPOND_ROOTDIR/releases/$latest.tar.gz || exit 1
-cd $latest
-
-export PATH=/usr/doos/bin:$PATH
-configure --host=i386-pc-linux --target=i386-pc-cygwin32 --prefix=/usr --enable-debugging --enable-printing --enable-checking
-
-make
-make doosdist
-
-ln out/$latest.exe.zip $LILYPOND_ROOTDIR/doos/zip
-
diff --git a/bin/lilypython.py b/bin/lilypython.py
deleted file mode 100755
index 210865bacb..0000000000
--- a/bin/lilypython.py
+++ /dev/null
@@ -1,201 +0,0 @@
-#!/usr/bin/python
-
-#
-# lily-python.py -- implement general LilyPond-wide python stuff
-#
-# source file of the GNU LilyPond music typesetter
-#
-# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-#
-
-import posix
-import pwd
-import regex
-import regsub
-from string import *
-from flower import *
-import sys
-import os
-import getopt
-
-
-version_re = regex.compile('\\version *\"\(.*\)\"')
-# now used as shell script in configure too!
-# make_assign_re = regex.compile('^\([A-Z_]*\) *= *\(.*\)$')
-make_assign_re = regex.compile('^\([A-Z_]*\)=\(.*\)$')
-
-def mailaddress():
- try:
- return os.environ['MAILADDRESS']
- except KeyError:
- return '(address unknown)'
-
-def version_tuple(file):
- lines = file.readlines()
-
- mi = pa = mj = 0
- mp = ''
-
- for l in lines:
- if make_assign_re.search(l) <> -1:
- nm = make_assign_re.group(1)
- val = make_assign_re.group(2)
-# if nm == 'TOPLEVEL_MAJOR_VERSION':
- if nm == 'MAJOR_VERSION':
- mj = atoi(val)
-# elif nm == 'TOPLEVEL_MINOR_VERSION':
- elif nm == 'MINOR_VERSION':
- mi = atoi(val)
-# elif nm == 'TOPLEVEL_PATCH_LEVEL':
- elif nm == 'PATCH_LEVEL':
- pa = atoi(val)
-# elif nm == 'TOPLEVEL_MY_PATCH_LEVEL':
- elif nm == 'MY_PATCH_LEVEL':
- mp = val
- return (mj,mi,pa,mp)
-
-def next_version(tup):
- return (tup[0], tup[1], tup[2] + 1, tup[3]);
-
-def prev_version(tup):
- t = tup
- if t[3]:
- t3name = regsub.sub('[0-9]*$', '', t[3])
- t3level = atoi(regsub.sub('[^0-9]*', '', t[3]))
- if t3level and t3level - 1 > 0:
- return (tup[0], tup[1], tup[2], t3name + `t3level - 1`);
- else:
- return (tup[0], tup[1], tup[2], '');
- elif t[2] == 0 :
- return (tup[0], tup[1] -1, tup[2], '');
- else:
- return (tup[0], tup[1], tup[2] - 1, '');
-
-def dirname(v):
- return 'lilypond-' + version_tuple_to_str(v)
-
-def tarball(v):
- return dirname(v) + '.tar.gz'
-
-def released_tarball(v):
- return lilydirs.release_dir + tarball(v)
-
-def tuple_to_list(tup):
- l=[]
- for x in tup:
- l.append[x]
- return l
-
-def version_str_to_tuple(str):
- t = split(str, '.')
- try:
- mypatch = t[3]
- except IndexError:
- mypatch = ''
-
- return (atoi(t[0]), atoi(t[1]), atoi(t[2]), mypatch)
-
-def guess_mudela_version(filename):
- f = open (filename)
- lines = f.readlines()
- f.close()
- for l in lines:
- if version_re.search(l) <> -1:
- return version_re.group(1)
-
- return ''
-
-def version_tuple_to_str(tup):
- mypatch =''
- if tup[3]:
- mypatch = '.' + tup[3]
-
- return ('%d.%d.%d' % tup[0:3]) + mypatch
-
-class Lilydirs:
- def __init__(self):
- try:
- self.topdir = os.environ['LILYPOND_SOURCEDIR'] + '/'
-
- except KeyError:
- print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
- sys.exit(1)
-
- try:
- self.groupdir = os.environ['LILYPOND_GROUPDIR'] + '/'
- except KeyError:
- self.groupdir = self.topdir + '../'
-
- self.release_dir = self.groupdir + '/releases/'
- self.patch_dir = self.groupdir + '/patches/'
-
- def version_tuple(self):
- f = open (self.topdir + 'VERSION')
- v = version_tuple(f)
- f.close ()
- return v
-
-
-
-lilydirs = Lilydirs()
-
-if __name__ == '__main__':
- v= lilydirs.version_tuple()
- print v, prev_version(v), next_version(v)
- mv = guess_mudela_version(lilydirs.topdir + 'init/symbol.ly')
- pv=(0,1,1,'jcn4')
- print version_tuple_to_str(pv), prev_version(pv), next_version(pv)
- print version_tuple_to_str((0,1,1,''))
- print mv, version_str_to_tuple(mv)
-
-
-
-def dump_file(f, s):
- i = open(f, 'w')
- i.write(s)
- i.close ()
-
-def gulp_file(f):
- i = open(f)
- i.seek (0, 2)
- len = i.tell ()
- i.seek (0,0)
- return i.read (len)
-
-
-header_regex = regex.compile('\\header[ \t\n]*{\([^}]*\)}')
-header_entry_regex = regex.compile('[\n\t ]*\([^\n\t ]+\)[\n\t ]*=[\n \t]*\([^;]+\)[\n \t]*;')
-
-#
-# FIXME breaks on multiple strings.
-#
-def read_mudela_header (fn):
- s = gulp_file(fn)
- s = regsub.gsub('%.*$', '', s)
- s = regsub.gsub('\n', ' ', s)
-
- dict = {}
- if header_regex.search(s) <> -1:
- h = header_regex.group(1)
- else:
- return dict
-
- while regex.search('=', h) <> -1:
-
- if header_entry_regex.search (h) == -1:
-
- raise 'format error'
-
- h = regsub.sub(header_entry_regex, '', h)
- left = header_entry_regex.group(1)
- right = header_entry_regex.group(2)
-
- right = regsub.gsub('\([^\\]\)\"', '\\1', right)
- right = regsub.gsub('^"', '', right)
- left = regsub.gsub('\([^\\]\)\"', '', left)
- left = regsub.gsub('^"', '', left)
-
- dict[left] = right
-
- return dict
-
diff --git a/bin/ls-latex.py b/bin/ls-latex.py
deleted file mode 100644
index ef9977a207..0000000000
--- a/bin/ls-latex.py
+++ /dev/null
@@ -1,128 +0,0 @@
-#!@PYTHON@
-
-import sys
-import os
-
-lilypath =''
-try:
- lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except KeyError:
- print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
- sys.exit(1)
-
-lilypath = lilypath + '/bin/'
-sys.path.append(lilypath)
-
-from lilypython import *
-import __main__
-import glob
-
-
-
-latex_author_re = regex.compile('\\author{\([^}]+\)}')
-latex_title_re = regex.compile('\\title{\([^}]+\)}')
-
-class Latex_head:
- def __init__ (self):
- self.author = ''
- self.title = ''
- self.date = ''
- self.site = ''
-
-
-def read_latex_header (fn):
- s = gulp_file (fn)
- i = regex.search( '\\\\begin{document}', s)
- if i < 0:
- raise 'huh?'
- s = s[:i]
- s = regsub.gsub('%.*$', '', s)
- s = regsub.gsub('\n', ' ', s)
- if latex_author_re.search (s) == -1 :
- raise 'huh?'
-
- header = Latex_head()
- header.filename= fn;
- header.author = latex_author_re.group (1)
- if latex_title_re.search (s) == -1:
- raise 'huh?'
- header.title = latex_title_re.group (1)
- header.outfile = regsub.gsub ('\.doc+$', '.ps.gz', fn)
- return header
-
-
-bib_author_re = regex.compile('% *AUTHOR *= *\(.*\)$')
-bib_title_re = regex.compile('% *TITLE *= *\(.*\)$')
-
-def bib_header (fn):
- s = gulp_file (fn)
- if bib_author_re.search (s) == -1 :
- raise 'huh?'
-
- header = Latex_head()
- header.filename= fn;
- header.author = bib_author_re.group (1)
- if bib_title_re.search (s) == -1:
- raise 'huh?'
- header.title = bib_title_re.group (1)
- header.outfile = regsub.gsub ( '\.bib$', '.html' , fn)
- return header
-
-
-def read_pod_header (fn):
- header = Latex_head ()
- s = gulp_file (fn)
- i = regex.search( '[^\n \t]', s)
- s = s[i:]
- i = regex.search( '\n\n', s)
- s = s[i+2:]
- if i < 0:
- raise 'huh?'
- i = regex.search( '\n\n', s)
- header.title = s[:i]
- header.filename = fn
- header.outfile = regsub.gsub ('\.pod$', '.html', fn)
- return header
-
-
-def print_html_head (l,o,h):
- pre =o
-
- l.write ('<li><a href=%s>%s</a>' % (pre + h.outfile, h.title ))
- if h.author:
- l.write ('<p>by %s</p>' % h.author)
- l.write ('</li>\n')
-
-
-import getopt
-
-(cl_options, files) = getopt.getopt(sys.argv[1:],
- 'e:h', ['help', 'prefix='
- , 'title='])
-
-tex = ''
-output =''
-pre = ''
-title = ''
-for opt in cl_options:
- o = opt[0]
- a = opt[1]
- if o == '--prefix' or o == '-p':
- pre = a
- if o == '--title' or o == '-t':
- title = a
-
-l = sys.stdout
-
-l.write ('<html><title>%s</title><h1> %s</h1><ul>\n' % (title, title))
-
-
-for x in files:
- if regex.search ('\\.bib$', x) <> -1:
- head = bib_header (x)
- elif regex.search ('\\.pod$', x) <> -1:
- head = read_pod_header (x)
- else:
- head = read_latex_header (x)
- print_html_head (l, pre, head)
-l.write ('</ul></html>')
diff --git a/bin/make-patch.py b/bin/make-patch.py
deleted file mode 100755
index 9909bf9b73..0000000000
--- a/bin/make-patch.py
+++ /dev/null
@@ -1,186 +0,0 @@
-#!@PYTHON@
-
-import sys
-import os
-
-lilypath =''
-try:
- lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except KeyError:
- print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
- sys.exit(1)
-
-lilypath = lilypath + '/bin/'
-sys.path.append(lilypath)
-
-
-from lilypython import *
-import getopt
-import pipes
-
-
-mp_version = '0.51'
-
-class Options:
- def __init__(self):
- self.to_version = lilydirs.version_tuple()
- self.from_version = prev_version(self.to_version)
-
-options = Options()
-
-
-def help():
- sys.stdout.write(
- 'Generate a patch to go to this version.\n'
- ' -f, --from=FROM old is FROM\n'
- ' -d, --dir=DIR diff to (or from) directory DIR\n'
- ' -r, --release diff against latest release\n'
- ' -t, --to=TO to version TO\n'
- )
-
-def untar(fn):
- # os.system('pwd');
- sys.stderr.write('untarring ' + fn + '\n')
- os.system ('gzip --quiet -dc ' + fn + '| tar xf - ')
- sys.stderr.flush()
-
-
-header = 'Generated by make-patch, old = %s, new = %s\n\
-\n\
-usage \n\
-\n\
- cd lilypond-source-dir; patch -E -p1 < %s\n\
-\n\
-Patches do not contain automatically generated files, \n\
-i.e. you should rerun autoconf and configure\n\n'
-
-# ugh, how to get rid of .tex files generated by lily?
-# pats = ['*.lsm', 'configure', '*.txt', '.dstreamrc', 'lilypond.spec']
-pats = ['*.lsm', 'configure', '*.txt', '.dstreamrc', 'lilypond.spec',
- 'AUTHORS', 'INSTALL', 'PATCHES']
-
-def remove_automatic(dirnames):
- files = []
- files = files + multiple_find(pats, dirnames)
-
- for f in files:
- os.remove(f)
-
-def makepatch(fromdir, todir, patfile_nm):
-
- remove_automatic([fromdir, todir])
-
- os.chdir(todir)
-
- f = open(patfile_nm, 'w')
- f.write(header %\
- (fromdir, todir, \
- os.path.basename(patfile_nm)))
- f.close()
-
- sys.stderr.write('diffing to %s... ' % patfile_nm)
- os.system('pwd')
- print ('diff -urN ../%s . >> %s' % (fromdir, patfile_nm))
- os.system('diff -urN ../%s . >> %s' % (fromdir, patfile_nm))
- os.system('gzip --quiet -9f %s' % patfile_nm)
-
-def main():
- os.environ['GZIP'] = '-q'
- sys.stderr.write('This is make-patch version %s\n' % mp_version)
- (cl_options, files) = getopt.getopt(sys.argv[1:],
- 'd:hf:o:rt:', ['output=', 'help', 'from=', 'to='])
- outfn = ''
- srcdir = ''
-
- # on default, we want to diff tar balls, again :-)
- from_b=1
- to_b=1
- for opt in cl_options:
- o = opt[0]
- a = opt[1]
- if o == '--from' or o == '-f':
- options.from_version = version_str_to_tuple(a)
- from_b=1
- elif o == '--to' or o == '-t':
- options.to_version = version_str_to_tuple(a)
- to_b=1
- elif o == '--dir' or o == '-d':
- srcdir = a;
- to_b=0
- elif o == '--help' or o == '-h':
- help()
- return 0;
- elif o == '--output' or o == '-o':
- outfn = os.path.join(os.getcwd(), a)
- elif o == '--release' or o == '-r':
-# huh?
-# if options.from_version[3]:
-# options.from_version[3] = '';
- options.from_version = (options.from_version[0],
- options.from_version[1], options.from_version[2], '');
- else:
- raise getopt.error
-
- if not outfn:
- pn = 'patch-%s' % version_tuple_to_str(options.to_version)
- outfn = os.path.join(os.getcwd(), pn)
-
- import tempfile
- prev_cwd = os.getcwd();
-
- os.system('rm -rf /tmp/make-patch')
- try:
- os.mkdir ('/tmp/make-patch')
- except:
- pass
-
- fromdir = dirname(options.from_version)
- todir = dirname(options.to_version)
-
- diffdir = ''
- if srcdir != '':
- diffdir = '/tmp/make-patch/' + 'lilypond-%s'\
- % version_tuple_to_str(options.to_version)
-
- if from_b != 0 or (from_b == 0 and to_b == 0):
- os.chdir ('/tmp/make-patch')
- untar(released_tarball(options.from_version))
- os.chdir(prev_cwd)
- else:
- fromdir = diffdir
- sys.stderr.write('copying ' + srcdir + ' to ' + diffdir + '\n')
- # os.system('cp -pr %s %s' % (srcdir, diffdir))
- os.system('mkdir -p %s '% (diffdir))
- os.chdir (srcdir)
- os.system('tar cf - --exclude out . | tar -xf - -C %s'
- % diffdir)
-
- if to_b != 0:
- os.chdir ('/tmp/make-patch')
- untar(released_tarball(options.to_version))
- os.chdir(prev_cwd)
- else:
- todir = diffdir
- sys.stderr.write('copying ' + srcdir + ' to ' + diffdir + '\n')
- os.system('mkdir -p %s '% (diffdir))
- # os.system('cp -pr %s %s' (srcdir, diffdir))%
- os.chdir (srcdir)
- os.system('tar -cf - --exclude out . | tar -xf - -C %s '
- % diffdir)
-
- os.chdir('/tmp/make-patch')
- os.chdir(todir)
- # os.system('rm -f *.aux *.dvi *.midi *.log *.ps *.tex *.ly')
- os.chdir ('/tmp/make-patch')
-
- makepatch(fromdir, todir, outfn)
-
- os.chdir('/tmp/make-patch')
- sys.stderr.write('cleaning ... ')
- os.system('rm -fr %s %s' % (fromdir, todir))
- sys.stderr.write('\n')
- os.chdir(prev_cwd)
-
-if __name__ == '__main__':
- main()
-
diff --git a/bin/mudela-book.pl b/bin/mudela-book.pl
deleted file mode 100755
index 09e52f2f0a..0000000000
--- a/bin/mudela-book.pl
+++ /dev/null
@@ -1,212 +0,0 @@
-#!@PERL@ -w
-# -*-Perl-*-
-my $mudcount = 0;
-my $mudela_b = 0;
-my $outname = "-";
-my $outdir;
-use Getopt::Long;
-
-
-# do something, check return status
-sub my_system
-{
- my (@cmds) = @_;
- foreach $cmd (@cmds) {
- my ($ignoreret)=0;
- if ( $cmd =~ /^-/ ) {
- $ignoreret = 1;
- $cmd = substr ($cmd, 1);
- }
-
- my $ret = ( system ($cmd));
- if ($ret) {
- if ($ignoreret) {
- print STDERR "ignoring failed command \`$cmd\' (status $ret)\n";
- }else {
- print STDERR "\nmudela-book: failed on command \`$cmd\' (status $ret)\n";
- exit 2;
- }
- }
- }
-}
-sub gen_mufile
-{
- return "$outdir/$outname$mudcount.ly";
-}
-
-sub gen_texbase
-{
- return "$outname$mudcount.tex";
-}
-sub gen_texfile
-{
- return "$outdir/" . gen_texbase;
-}
-
-sub close_mudela
-{
- $mudela_b = 0;
- if ($fragment_b) {
- print MUDELA "}\n \\paper { linewidth = -1.0\\cm;";
- print MUDELA "castingalgorithm = \\Wordwrap; } }\n";
- $fragment_b =0;
- }
- if ($verbatim_b) {
- print BOOK "\\end{verbatim}";
- }
- if ($center_b) {
- print BOOK "\\end{minipage}";
- }
- if ($verbatim_b) {
- print BOOK "\\interexample";
- $verbatim_b = 0;
- }
- close MUDELA;
- my $status =0;
- if ( -f gen_mufile ) {
- $status = system "diff -q $outdir/book-mudela.ly " . gen_mufile;
- } else {
- $status = 1;
- }
- if ( $status ) {
- rename "$outdir/book-mudela.ly", gen_mufile;
- unlink gen_texfile;
- }
-
- if ( ! -f gen_texfile) {
- my_system "lilypond ". gen_mufile;
- rename gen_texbase, gen_texfile;
- }
-
- if ($center_b) {
- print BOOK "\\begin{minipage}[c]{.5\\textwidth}\n";
- }
- print BOOK "\\input " . gen_texfile . "\n";
- if ($center_b) {
- print BOOK "\\end{minipage}";
- $center_b = 0;
- }
- print BOOK "\\postexample%\n";
-}
-
-sub open_mudela
-{
- $mudcount++;
- $mudela_b = 1 ;
- open MUDELA, ">$outdir/book-mudela.ly";
- print BOOK "\\preexample%\n";
- print MUDELA "\\include \"paper16.ly\"\n";
- if ($center_b) {
- print BOOK "\\begin{minipage}[c]{.5\\textwidth}\n";
- print MUDELA "default_paper = \\paper { \\paper_sixteen ";
- print MUDELA "linewidth = 7.\\cm;}";
- }
- if ($verbatim_b) {
- print BOOK "\\begin{verbatim}\n";
- }
- if ($fragment_b) {
- print MUDELA "\\score { \\melodic { ";
- } else {
- print MUDELA "default_paper = \\paper { \\paper_sixteen ";
- print MUDELA "linewidth = 15.\\cm;}";
-
- }
-
-}
-
-sub begin_b
-{
- my ($s) = @_;
- return (/^\\begin{$s}/) ;
-}
-
-sub end_b
-{
- my ($s) = @_;
- return (/^\\end{$s}/) ;
-}
-sub parse_mudela_opts
-{
- my ($s) = @_;
- $s =~ s/[\[\]]//g;
-
- $verbatim_b =1 if ($s =~ /verbatim/ );
- $fragment_b = 1 if ($s =~ /fragment/ );
- $center_b = 1 if ($s =~ /center/ );
-}
-
-sub help
-{
- print "usage: convert-mudela [options] [file]
-options:
---help
---outdir=DIRECTORY write all files in directory DIRECTORY
---outname=NAME use NAME as base for the output
-";
- exit;
-}
-
-sub main
-{
- GetOptions( 'outdir=s', 'outname=s', 'help');
- if ( $opt_help ) {
- help();
- $opt_help = 0; # to extinguish typo check. brr, what a language
- }
-
- if (defined ($opt_outdir)) {
- $outdir = $opt_outdir . "/";
- } else {
- $outdir = ".";
- }
-
- if (defined ($ARGV[0])) {
- $infile = $ARGV[0] ;
- } else {
- $infile = "-";
- }
- if (defined ($opt_outname)) {
- $outname = $opt_outname ;
- } else {
- die "Need to have an output name, use --outname" if ( $infile eq "-");
- $outname = "$infile.tex";
- }
-
- my $openout ="$outdir$outname";
- if ( $infile eq $openout ) {
- die "The input can't be the output\n";
- }
-
- open INFILE, "<$infile" or die "Can't open $infile\n";
- open BOOK, ">$openout" or die "Can't open $openout\n";;
- while (<INFILE>) {
- if ($mudela_b) {
- if (end_b "mudela") {
- close_mudela;
- next;
- }
- print MUDELA;
- if ( $verbatim_b ) {
- my $s = $_;
- $s =~ s/\t/ /g; #shit
- print BOOK $s;
- }
-
- } else {
- if (/^\\begin{mudela}(\[.*\])?/ ) {
- my $opts ="";
- $opts = $1 if ( defined ($1));
-
- parse_mudela_opts($opts);
- open_mudela;
- next;
- }
- print BOOK;
- }
- }
- close INFILE;
- close BOOK;
-}
-
-
-main;
diff --git a/bin/out/dummy.dep b/bin/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/bin/out/dummy.dep
+++ /dev/null
diff --git a/bin/ps-to-gifs.sh b/bin/ps-to-gifs.sh
deleted file mode 100755
index c276406a2b..0000000000
--- a/bin/ps-to-gifs.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-
-usage()
-{
- echo 'ps-to-gifs.sh FILE.ps'
- exit 2;
-}
-
-case $# in
-1)
- FILE=`basename $1 .ps`
- ;;
-*)
- usage
- ;;
-esac
-
-# generate the pixmap at twice the size, then rescale (for antialiasing)
-cat $1 | gs -q -sDEVICE=ppmraw \
- -sOutputFile="|pnmscale 0.3333|ppmtogif > $FILE-page%d.gif" \
- -r200 -dNOPAUSE - -c quit
-
diff --git a/bin/release.py b/bin/release.py
deleted file mode 100755
index 731a2ee2ea..0000000000
--- a/bin/release.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#!@PYTHON@
-
-import sys
-import os
-
-lilypath =''
-try:
- lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except KeyError:
- print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
- sys.exit(1)
-
-lilypath = lilypath + '/bin/'
-sys.path.append(lilypath)
-
-from lilypython import *
-
-os.chdir(lilydirs.topdir)
-os.system('make dist')
-cur_ver = lilydirs.version_tuple()
-print tarball(cur_ver)
-os.rename('out/' + tarball(cur_ver), released_tarball(cur_ver))
-os.chdir('../test')
-os.system('pwd')
-os.system('rm ../test/*gz')
-os.link(released_tarball(cur_ver), tarball(cur_ver))
-
-
-# not a module, but a script (JCN)
-# makepatch.main()
-
-# Module wherefore aren't thou Script
-# A Rose by any other name would be as blonde. --HWN
-
-os.system('python ' + lilydirs.topdir + '/bin/make-patch.py');
-
-pn = 'patch-%s' % version_tuple_to_str(cur_ver)
-# os.system('gzip -9 ' + pn)
-pn = pn + '.gz'
-rel_pn = lilydirs.release_dir + '../patches/' + pn;
-
-os.rename(pn, rel_pn);
-os.link(rel_pn, pn);
-
-os.system('tar cf updeet *gz')
diff --git a/bin/rpm-dist.sh b/bin/rpm-dist.sh
deleted file mode 100644
index a10b49f13a..0000000000
--- a/bin/rpm-dist.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-# rpm-dist.sh --- make an rpm distribution
-
-latest=lilypond-`show-latest -p`
-{ cd $LILYPOND_SOURCEDIR; cd ..;
-export LILYPOND_ROOTDIR=`pwd` }
-
-icon=lelie_icon.gif
-rpmrc=$LILYPOND_SOURCEDIR/make/out/rpmrc
-spec=$LILYPOND_SOURCEDIR/make/out/lilypond.spec
-
-if [ ! -e $LILYPOND_ROOTDIR/releases/$icon ]; then
- make -C $LILYPOND_ROOTDIR/current/Documentation gifs
- ln $LILYPOND_ROOTDIR/current/Documentation/out/$icon $LILYPOND_ROOTDIR/releases
-fi
-
-# urg
-user=`whoami`
-if [ "x$user" != "xroot" ]; then
- echo only root wants to build RPMs
- exit 2
-fi
-
-if [ ! -e $LILYPOND_ROOTDIR/redhat/BUILD ]; then
- mkdir -p $LILYPOND_ROOTDIR/redhat/BUILD
- mkdir -p $LILYPOND_ROOTDIR/redhat/RPMS/i386
- mkdir -p $LILYPOND_ROOTDIR/redhat/SRPMS
-fi
-
-set -x
-cd $LILYPOND_ROOTDIR/redhat || exit 1
-rm -rf lilypond-*
-
-rpm -ba --rcfile $rpmrc $spec
-
diff --git a/bin/show-latest.pl b/bin/show-latest.pl
deleted file mode 100755
index 2b2c994d00..0000000000
--- a/bin/show-latest.pl
+++ /dev/null
@@ -1,55 +0,0 @@
-#!@PERL@
-# -*-Perl-*-
-
-$LILYPOND_SOURCEDIR="$ENV{LILYPOND_SOURCEDIR}";
-$LILYPOND_ROOTDIR=`cd $LILYPOND_SOURCEDIR/..; pwd`;
-chop ($LILYPOND_ROOTDIR);
-$reldir="$LILYPOND_ROOTDIR/releases";
-
-use FileHandle;
-use Getopt::Long;
-
-sub cmpver
-{
- my(@a)= split( /\./, $a);
- my(@b)= split( /\./, $b);
-
- for $i (0,1,2) {
- return $a[$i] <=> $b[$i] if ($a[$i] != $b[$i]);
- }
- return $a cmp $b;
-}
-
-my @versions;
-open LS, "ls -1 $reldir|";
-
-GetOptions( 'print', 'news', 'latest');
-
-
-while (<LS>) {
- $_ =~ /lilypond-([^.]+\.[^.]+\.[^.]+).tar.gz/;
- push @versions, $1;
-}
-
-
-@versions = sort cmpver @versions;
-my $last= (pop @versions);
-
-
-if ( $opt_print ) {
- print $last . "\n";
-}
-
-if ( $opt_latest) {
- system "rm $reldir/zZ*";
- system "> $reldir/zZ_LATEST_IS_$last";
-}
-if ( $opt_news ) {
- open NEWS, "tar --to-stdout -zxf $reldir/lilypond-$last.tar.gz lilypond-$last/NEWS |";
- input_record_separator NEWS "****";
- $desc = <NEWS>;
- chop ($desc);
- close NEWS;
-
- print $desc;
-}
diff --git a/bin/table-to-html.py b/bin/table-to-html.py
deleted file mode 100755
index bc4bc7152a..0000000000
--- a/bin/table-to-html.py
+++ /dev/null
@@ -1,92 +0,0 @@
-#!@PYTHON@
-
-#
-# table-to-html.py -- convert char-separated table to html table
-#
-# source file of the GNU LilyPond music typesetter
-#
-# (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
-#
-
-import getopt
-from string import *
-import regex
-import regsub
-import os
-import sys
-import time
-
-version = '0.1'
-
-lilypath =''
-try:
- lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except KeyError:
- try:
- lilypath = os.environ['top_srcdir'] + '/'
- except KeyError:
- print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
-
-lilypath = lilypath + '/bin/'
-sys.path.append (lilypath)
-
-from flower import *
-
-def program_id ():
- return 'table-to-html.py version ' + version;
-
-def identify ():
- sys.stdout.write (program_id () + '\n')
-
-def help ():
- sys.stdout.write ("Usage: table-to-html [options] TABLE_FILE HTML_FILE\n"
- + "Generate mozarella metrics table from preparated feta log\n\n"
- + "Options:\n"
- + " -h, --help print this help\n"
- + " -s, --separator=SEP specify separator [:]\n")
- sys.exit (0)
-
-
-def header (html):
- html.write ('<body><table cellspacing=10>')
-
-def footer (html):
- html.write ('</table></body>')
-
-def convert (inname, outname, separator):
- table = File (inname)
- # ugh
- html = File (outname, 'w')
-
- header (html)
- while not table.eof ():
- line = table.readline ()
- columns = split (line, separator)
- html_line = '<tr><td>' + join (columns, '</td><td>') + '</td></tr>'
- html.write (html_line)
- table.close ()
- footer (html)
- html.close ()
-
-
-def main ():
- identify ()
- (options, files) = getopt.getopt (
- sys.argv[1:], 'hs:', ['help','separator='])
-
- separator = ':'
- for opt in options:
- o = opt[0]
- a = opt[1]
- if o == '--separator' or o == '-s':
- separator = a
- elif o== '--help' or o == '-h':
- help ()
- else:
- print o
- raise getopt.error
-
- convert (files[0], files[1], separator)
-
-main ()
-
diff --git a/bin/tar-docxx.sh b/bin/tar-docxx.sh
deleted file mode 100644
index c6d33a9605..0000000000
--- a/bin/tar-docxx.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-if [ "$1" = "" ];
-then
- echo tar-docxx tarball.tar.gz
-fi
-
-cwd=`pwd`
-TARBALL=`basename $1`
-TAROUTDIR=/tmp/tar-docxx
-mkdir $TAROUTDIR
-
-echo untarring ...
-tar -C $TAROUTDIR -zxf $1 '*cc' '*.c' '*.hh' '*.h'
-
-cd $TAROUTDIR
-DATE=`date`
-
-cat << EOF > banner.html
- This program documentation comes from $TARBALL. It was generated by
- $USERNAME ($MAILADDRESS) on $DATE
-EOF
-
-
-
-mkdir docxx;
-echo doc++ ...
-doc++ -pSf -B banner.html -d docxx `find -type f`
-tar -czf $cwd/progdocs.tar.gz docxx/
-# rm -rf $TAROUTDIR
diff --git a/buildscripts/Makefile b/buildscripts/Makefile
new file mode 100644
index 0000000000..7832495f3c
--- /dev/null
+++ b/buildscripts/Makefile
@@ -0,0 +1,13 @@
+# bin/Makefile
+
+depth = ..
+
+include $(depth)/make/Stepmake.make
+
+default:
+
+EXTRA_DIST_FILES = ltconfig
+
+include $(stepdir)/Script_files.make
+
+
diff --git a/bin/clean-diaper.sh b/buildscripts/clean-diaper.sh
index 47c2a069db..47c2a069db 100755
--- a/bin/clean-diaper.sh
+++ b/buildscripts/clean-diaper.sh
diff --git a/bin/clean-fonts.sh b/buildscripts/clean-fonts.sh
index 202a873584..a57dc7fc74 100755
--- a/bin/clean-fonts.sh
+++ b/buildscripts/clean-fonts.sh
@@ -22,4 +22,4 @@ echo> /tmp/cleaning-font-dummy
FILES=`find $TEXDIR -name "feta*$WHAT*tfm" -or -name "feta*$WHAT*pk"`
echo removing $FILES
-rm $FILES /tmp/cleaning-font-dummy
+rm -f $FILES /tmp/cleaning-font-dummy
diff --git a/buildscripts/docxx-lily.sh b/buildscripts/docxx-lily.sh
new file mode 100644
index 0000000000..82407ed1ff
--- /dev/null
+++ b/buildscripts/docxx-lily.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+cwd=`pwd`
+
+{ cd $LILYPOND_SOURCEDIR; cd ..;
+export LILYPOND_ROOTDIR=`pwd` }
+
+if [ "$1" = "" ]; then
+ VERSION=`show-current`
+ TARBALL=$LILYPOND_ROOTDIR/releases/lilypond-$VERSION.tar.gz
+ cwd=`pwd`
+else
+ TARBALL=$1
+fi
+
+
+tar-docxx $TARBALL
diff --git a/bin/find-typenames.pl b/buildscripts/find-typenames.pl
index 890f9cabd0..890f9cabd0 100755..100644
--- a/bin/find-typenames.pl
+++ b/buildscripts/find-typenames.pl
diff --git a/buildscripts/gen-sitemap.sh b/buildscripts/gen-sitemap.sh
new file mode 100644
index 0000000000..7f9bcbc95e
--- /dev/null
+++ b/buildscripts/gen-sitemap.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+TMPDIR=/tmp/gen-sitemap
+for tarball in $*; do
+ tar -C $TMPDIR -xfz $tarball '*.html'
+done
diff --git a/bin/genheader.py b/buildscripts/genheader.py
index ca45f0736e..8e6f396037 100755..100644
--- a/bin/genheader.py
+++ b/buildscripts/genheader.py
@@ -1,35 +1,19 @@
#!@PYTHON@
-#
# genheader.py -- do headers (like these)
#
# source file of the GNU LilyPond music typesetter
#
# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-#
-
-
-import posix
+import os
+import sys
import pwd
import regex
import regsub
import string
-import sys
-import os
import getopt
import time
-lilypath =''
-try:
- lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except KeyError:
- print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
- sys.exit(1)
-
-lilypath = lilypath + '/bin/'
-sys.path.append(lilypath)
-
-from lilypython import *
class My_options:
def __init__(self):
@@ -41,7 +25,7 @@ my_options = My_options()
def name():
- return pwd.getpwuid(posix.getuid())[4]
+ return pwd.getpwuid(os.getuid())[4]
def c_commentify(str):
return '/* ' + regsub.gsub('^',' ', str) + '\n */';
@@ -53,7 +37,7 @@ def tex_commentify(str):
return regsub.gsub('^', '% ', str)
def project_str():
- cwd = posix.getcwd()
+ cwd = os.getcwd()
if regex.search('flower', cwd) <> -1:
PROJECT = "the Flower Library"
elif regex.search('mf$', cwd) <> -1:
@@ -68,9 +52,15 @@ def head_str(filename):
else:
what=" implement "
-
- headstr = '\n%s -- %s\n\nsource file of %s\n\n(c) %d %s <%s>\n' \
- %(filename, what, project_str(), time.localtime (time.time ())[0], name(), mailaddress())
+
+ mailaddres = ''
+ try:
+ mailaddres = '<%s>' % os.environ['MAILADDRESS']
+ except KeyError:
+ pass
+ headstr = '\n%s -- %s\n\nsource file of %s\n\n(c) %d %s %s\n' \
+ %(filename, what, project_str(),
+ time.localtime (time.time ())[0], name(), mailaddres)
return headstr
@@ -86,10 +76,19 @@ def c_include(filename):
return headstr+ '\n\n'+ terminatestr;
+def help ():
+ sys.stdout.write ("Usage: genheader [options] FILENAME\n"
+ + "Generate file with header FILENAME\n\n"
+ + "Options:\n"
+ + " -h, --header generate header\n"
+ + " --help print this help\n"
+ + " -p, --package=DIR specify package\n"
+ )
+
+ sys.exit (0)
-
-(options, files) = getopt.getopt(sys.argv[1:], 'tcsh', ['class'])
+(options, files) = getopt.getopt(sys.argv[1:], 'tcshp:', ['class', 'package=', 'help'])
for opt in options:
o = opt[0]
@@ -100,14 +99,13 @@ for opt in options:
my_options.commentify = tex_commentify
elif o == '-s':
my_options.commentify = sh_commentify
- elif o == '-h':
+ elif o == '-h' or o == '--header':
my_options.add_hdr_def = 1
elif o == '--class':
my_options.classname = a
+ elif o == '--help':
+ help ()
-
-
-#
# FIXME: should create xxx.cc and include/xxx.hh, with implement/declare Xxx
# in one run
if my_options.classname:
@@ -127,6 +125,7 @@ def extension(ext,nm):
def c_extension(nm):
return extension('hh',nm) or extension('cc',nm) \
or extension('icc', nm) or extension('tcc',nm)
+
def select_commentification(nm):
if c_extension (nm):
return c_commentify
@@ -134,7 +133,8 @@ def select_commentification(nm):
return sh_commentify
elif extension('mf',nm) or extension('tex',nm) or extension('ly',nm):
return tex_commentify
- else:
+ else:
+ sys.stderr.write ('unknown extension for file %s\n' % nm)
raise 'help'
for nm in files:
@@ -143,3 +143,4 @@ for nm in files:
if my_options.commentify == None:
my_options.commentify = select_commentification(nm)
print do_file(nm)
+
diff --git a/buildscripts/html-accents.py b/buildscripts/html-accents.py
new file mode 100644
index 0000000000..228ed7485f
--- /dev/null
+++ b/buildscripts/html-accents.py
@@ -0,0 +1,115 @@
+#!@PYTHON@
+
+# html-accents.py -- convert (some) latin1 chars to html
+# pod2html is so broken...
+#
+# source file of the GNU LilyPond music typesetter
+#
+# (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+
+name = 'html-accents'
+version = '0.1'
+
+import os
+import sys
+sys.path.append ('@abs-step-bindir@')
+sys.path.append (os.environ['HOME'] + '/usr/src/lilypond/stepmake/bin')
+
+import getopt
+from string import *
+import regex
+import regsub
+import time
+
+def program_id ():
+ return name + ' version ' + version;
+
+def identify ():
+ sys.stdout.write (program_id () + '\n')
+
+def help ():
+ sys.stdout.write ("Usage: " + name + " [options] INFILE OUTFILE\n"
+ + "Convert (some) latin1 chars to html &xxx;\n\n"
+ + "Options:\n"
+ + " -h, --help print this help\n"
+ + " -p, --package=DIR specify package\n"
+ )
+ sys.exit (0)
+
+# chars = {'è':'&egrave;', }
+chars = {
+'á':'&aacute;',
+'â':'&acirc;',
+'æ':'&aelig;',
+'à':'&agrave;',
+'å':'&aring;',
+'ã':'&atilde;',
+'ä':'&auml;',
+
+'ç':'&ccedil;',
+
+'é':'&eacute;',
+'ê':'&ecirc;',
+'è':'&egrave;',
+'ë':'&euml;',
+
+'í':'&iacute;',
+'î':'&icirc;',
+'ì':'&igrave;',
+'ï':'&iuml;',
+
+'ñ':'&ntilde;',
+
+'ó':'&oacute;',
+'ô':'&ocirc;',
+'ò':'&ograve;',
+'ø':'&oslash;',
+'õ':'&otilde;',
+'ö':'&ouml;',
+
+'ú':'&uacute;',
+'û':'&ucirc;',
+'ù':'&ugrave;',
+'ü':'&uuml;'
+}
+
+def convert_accents (inname, outname):
+ from flower import *
+ text = File (inname)
+ # ugh
+ html = File (outname, 'w')
+
+ while not text.eof ():
+ line = text.readline ()
+ for i in chars.keys ():
+ line = regsub.gsub (i, chars[i], line)
+ html.write (line)
+ text.close ()
+ html.close ()
+
+def main ():
+ identify ()
+ (options, files) = getopt.getopt (
+ sys.argv[1:], 'hp:', ['help', 'package='])
+ for opt in options:
+ o = opt[0]
+ a = opt[1]
+ if o== '--help' or o == '-h':
+ help ()
+ elif o == '-p' or o == '--package':
+ topdir = a
+ else:
+ print o
+ raise getopt.error
+
+ sys.path.append (topdir + '/stepmake/bin')
+ from packagepython import *
+ package = Package (topdir)
+ packager = Packager ()
+
+ from flower import *
+
+ convert_accents (files[0], files[1])
+
+main ()
+
diff --git a/buildscripts/localpackage.py b/buildscripts/localpackage.py
new file mode 100644
index 0000000000..f37fc8267b
--- /dev/null
+++ b/buildscripts/localpackage.py
@@ -0,0 +1,16 @@
+# localpackage.py
+# must be included in package's python bin dir
+
+def localpackage (n):
+ p=lower (n)
+ P=upper (n)
+ if topdir == '':
+ try:
+ topdir = os.environ[P + '_SOURCEDIR']
+ except:
+ topdir = os.environ['HOME'] + '/usr/src/' + p
+ sys.path.append (topdir + '/stepmake/bin')
+ from packagepython import *
+ package = Package (topdir)
+ packager = Packager ()
+
diff --git a/bin/ltconfig b/buildscripts/ltconfig
index 2347e69439..2347e69439 100644
--- a/bin/ltconfig
+++ b/buildscripts/ltconfig
diff --git a/bin/ltmain.sh b/buildscripts/ltmain.sh
index e9350b3fab..e9350b3fab 100644
--- a/bin/ltmain.sh
+++ b/buildscripts/ltmain.sh
diff --git a/bin/mail-address.sh b/buildscripts/mail-address.sh
index 37e1141751..37e1141751 100644
--- a/bin/mail-address.sh
+++ b/buildscripts/mail-address.sh
diff --git a/bin/mf-to-table.py b/buildscripts/mf-to-table.py
index 0db3593dcd..3f4d99006d 100755..100644
--- a/bin/mf-to-table.py
+++ b/buildscripts/mf-to-table.py
@@ -1,42 +1,44 @@
#!@PYTHON@
-#
# mf-to-table.py -- convert spacing info in MF logs .ly and .tex
#
# source file of the GNU LilyPond music typesetter
#
# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-#
+import os
+import sys
import getopt
from string import *
import regex
import regsub
-import os
-import sys
import time
+sys.path.append ('@abs-step-bindir@')
+
+(options, files) = getopt.getopt(
+ sys.argv[1:], 'a:d:hl:o:p:t:',
+ ['afm=', 'outdir=', 'dep=', 'ly=', 'tex=', 'debug', 'help', 'package='])
+for opt in options:
+ o = opt[0]
+ a = opt[1]
+ if o == '-p' or o == '--package':
+ topdir = a
-lilypath =''
-try:
- lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except KeyError:
- try:
- lilypath = os.environ['top_srcdir'] + '/'
- except KeyError:
- print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
+sys.path.append (topdir + '/stepmake/bin')
+from packagepython import *
+package = Package (topdir)
+packager = Packager ()
-lilypath = lilypath + '/bin/'
-sys.path.append(lilypath)
-
+from packagepython import *
from flower import *
begin_autometric_re = regex.compile('@{')
end_autometric_re = regex.compile('@}')
include_re = regex.compile ('(\([a-zA-Z_0-9-]+\.mf\)')
autometric_re = regex.compile('@{\(.*\)@}')
-version = '0.6'
+version = '0.7'
postfixes = ['log', 'dvi', '2602gf', 'tfm']
class Feta_file(File):
@@ -108,6 +110,36 @@ class Indentable_file(File):
self.writeeol()
self.writeline (lines[-1])
+class Afm_file (File):
+ def print_f_dimen(self, f):
+ f = f * 1000
+
+ dimstr = '%.2f' % f
+
+ # try to mask rounding errors
+ if (dimstr == '-0.00'):
+ dimstr = '0.00'
+ self.write( dimstr +' ');
+
+ def neg_print_dimen(self, str):
+ self.print_f_dimen(-atof(str))
+ def print_dimen(self, str):
+ self.print_f_dimen(atof(str))
+ def def_symbol (self, code, lily_id, tex_id, xdim, ydim):
+ self.write ('C %s; N %s-%s; B ' % (code, self.groupname, lily_id))
+
+ self.neg_print_dimen(xdim [0])
+ self.neg_print_dimen(ydim [0])
+ self.print_dimen(xdim [1])
+ self.print_dimen(ydim [1])
+
+ self.write (';\n');
+
+ def start (self,nm):
+ self.write ('Start%s\n' % nm)
+ def end (self,nm):
+ self.write ('End%s\n' % nm)
+
class Ly_file(Indentable_file):
"""extra provisions for mozarella quirks"""
def print_lit(self, str):
@@ -127,14 +159,14 @@ class Ly_file(Indentable_file):
def neg_print_dimen(self, str):
self.print_f_dimen(-atof(str));
- def def_symbol(self, lily_id, tex_id, dims):
+ def def_symbol(self, code, lily_id, tex_id, xdim, ydim):
self.print_lit(lily_id)
self.print_lit('\\\\' + tex_id)
- self.neg_print_dimen(dims [0])
- self.print_dimen(dims [1])
- self.neg_print_dimen(dims [2])
- self.print_dimen(dims [3])
+ self.neg_print_dimen(xdim [0])
+ self.print_dimen(xdim [1])
+ self.neg_print_dimen(ydim [0])
+ self.print_dimen(ydim [1])
self.write('\n')
@@ -147,16 +179,23 @@ class Log_reader:
tags = split(line, '@:')
label = tags[0]
name = tags[1]
- ly = self.lyfile
+ ly = self.lyfile
+ afm = self.afmfile
if tags[0] == 'font':
ly.indent()
ly.write("% name=\\symboltables {\n")
self.texfile.write("% name\n")
+
+ afm.write ('FontName %s\n' % name)
+ afm.start ('FontMetrics')
+ afm.start ('CharMetrics')
+
elif label == "group":
ly.indent()
ly.print_lit(name)
ly.write(' = \\table {\n')
self.texfile.write("% " + name + "\n")
+ afm.groupname = name
elif label == "puorg":
ly.dedent()
ly.write("}\n")
@@ -164,14 +203,18 @@ class Log_reader:
elif label == "tnof":
ly.dedent()
ly.write("% } % $name\n")
+ afm.end ('CharMetrics')
+ afm.end('FontMetrics');
elif label == "char":
code = tags[2]
id = tags [7]
texstr = tags [8]
-
- ly.def_symbol(id, texstr, tags[3:7])
+ xdim = tags[3:5]
+ ydim = tags[5:7]
+ ly.def_symbol(code, id, texstr, xdim, ydim)
self.texfile.write("\\fetdef\\%s{%s}\n" % (texstr, code))
+ afm.def_symbol (code, id, texstr, xdim, ydim)
else:
raise 'unknown label: ' + label
@@ -200,11 +243,11 @@ class Log_reader:
self.writedeps (feta.dependencies)
- def __init__(self, lyfile_nm, texfile_nm, depfile_nm):
+ def __init__(self, lyfile_nm, texfile_nm, depfile_nm, afmfile_nm):
self.lyfile = Ly_file(lyfile_nm, 'w')
self.texfile = Indentable_file(texfile_nm, 'w')
self.depfile = File (depfile_nm, 'w')
-
+ self.afmfile = Afm_file (afmfile_nm, 'w')
headerstr = '%% Creator: %s\n%% Automatically generated on\n%% Do not edit' % \
(program_id() )
@@ -233,21 +276,23 @@ def help():
sys.stdout.write("Usage: mf-to-table [options] LOGFILEs\n"
+ "Generate mozarella metrics table from preparated feta log\n\n"
+ "Options:\n"
+ + " -a, --afm=FILE .afm file\n"
+ + " -d, --dep=FILE print dependency info to FILE\n"
+ " -h, --help print this help\n"
+ " -l, --ly=FILE name output table\n"
- + " -d, --dep=FILE print dependency info to FILE\n"
+ " -o, --outdir=DIR prefix for dependency info\n"
- + " -t, --tex=FILE name output tex chardefs\n")
+ + " -p, --package=DIR specify package\n"
+ + " -t, --tex=FILE name output tex chardefs\n"
+ )
sys.exit (0)
def main():
identify()
- (options, files) = getopt.getopt(
- sys.argv[1:], 'ho:l:t:d:', ['outdir=', 'dep=', 'ly=', 'tex=', 'debug', 'help'])
lyfile_nm = texfile_nm = '';
depfile_nm = ''
+ afmfile_nm = ''
outdir_prefix = '.'
for opt in options:
o = opt[0]
@@ -262,13 +307,17 @@ def main():
texfile_nm = a
elif o== '--help' or o == '-h':
help()
+ elif o=='--afm' or o == '-a':
+ afmfile_nm = a
elif o == '--debug':
debug_b = 1
+ elif o == '-p' or o == '--package':
+ topdir = a
else:
print o
raise getopt.error
- log_reader = Log_reader(lyfile_nm, texfile_nm, depfile_nm)
+ log_reader = Log_reader(lyfile_nm, texfile_nm, depfile_nm, afmfile_nm)
log_reader.outdir = outdir_prefix
for filenm in files:
log_reader.do_file(filenm)
diff --git a/bin/mutopia-index.py b/buildscripts/mutopia-index.py
index 485578f0dc..bf7ed7a628 100644
--- a/bin/mutopia-index.py
+++ b/buildscripts/mutopia-index.py
@@ -1,27 +1,72 @@
+#!@PYTHON@
+# mutopia-index.py
-import sys
+name = 'mutopia-index'
+
+import regex
import os
+import sys
+sys.path.append ('@abs-step-bindir@')
+
+
+
+header_regex = regex.compile('\\header[ \t\n]*{\([^}]*\)}')
+header_entry_regex = regex.compile('[\n\t ]*\([^\n\t ]+\)[\n\t ]*=[\n \t]*\([^;]+\)[\n \t]*;')
+
+#
+# FIXME breaks on multiple strings.
+#
+def read_mudela_header (fn):
+ s = gulp_file(fn)
+ s = regsub.gsub('%.*$', '', s)
+ s = regsub.gsub('\n', ' ', s)
+
+ dict = {}
+ if header_regex.search(s) <> -1:
+ h = header_regex.group(1)
+ else:
+ return dict
+
+ while regex.search('=', h) <> -1:
+
+ if header_entry_regex.search (h) == -1:
-lilypath =''
-try:
- lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except KeyError:
- print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
- sys.exit(1)
+ raise 'format error'
-lilypath = lilypath + '/bin/'
-sys.path.append(lilypath)
-
-from lilypython import *
+ h = regsub.sub(header_entry_regex, '', h)
+ left = header_entry_regex.group(1)
+ right = header_entry_regex.group(2)
+ right = regsub.gsub('\([^\\]\)\"', '\\1', right)
+ right = regsub.gsub('^"', '', right)
+ left = regsub.gsub('\([^\\]\)\"', '', left)
+ left = regsub.gsub('^"', '', left)
+ dict[left] = right
+
+ return dict
+
+
+
+
+def help ():
+ sys.stdout.write ("Usage: " + name + " [options] INFILE OUTFILE\n"
+ + "Generate index for mutopia\n\n"
+ + "Options:\n"
+ + " -h, --help print this help\n"
+ + " -p, --package=DIR specify package\n"
+ + " --prefix=PRE specify prefix\n"
+ + " -s, --subdirs=DIR add subdir\n"
+ + " --suffix=SUF specify suffix\n"
+ )
+ sys.exit (0)
def gen_list(inputs, subdir, filename):
(pre, subdirs, post)=subdir
print "generating HTML list %s\n" % filename
list = open(filename, 'w')
list.write ('<html><TITLE>Rendered Examples</TITLE>\n')
- list.write ('<body>')
+ list.write ('<body bgcolor=white>')
if len(subdirs):
list.write ('<h2>subdirectories</h2>')
list.write ('<ul>')
@@ -40,8 +85,13 @@ def gen_list(inputs, subdir, filename):
for ex in inputs:
+ ex_ext = '.ly'
print '%s, ' % ex
- header = read_mudela_header(ex + '.ly.txt')
+ try:
+ header = read_mudela_header(ex + ex_ext + '.txt')
+ except:
+ ex_ext = '.fly'
+ header = read_mudela_header(ex + ex_ext + '.txt')
def read_dict(s, default, h =header):
try:
@@ -63,8 +113,8 @@ def gen_list(inputs, subdir, filename):
if file_exist_b(filename):
l.write ('<li><a href=%s>%s</a>\n' % (filename, desc))
- list_item(ex + '.ly.txt', 'The input')
- for pageno in range(1,10):
+ list_item(ex + ex_ext + '.txt', 'The input')
+ for pageno in range(1,100):
f = ex + '-page%d.gif' % pageno
if not file_exist_b (f):
break
@@ -76,24 +126,36 @@ def gen_list(inputs, subdir, filename):
list.write( "</BODY></HTML>");
list.close()
-allfiles = multiple_find (['*.ly.txt'], '.')
-
import getopt
-(cl_options, files) = getopt.getopt(sys.argv[1:],
- 'hs:', ['help', 'subdirs=', 'suffix=', 'prefix='])
+(options, files) = getopt.getopt(sys.argv[1:],
+ 'hp:s:', ['help', 'subdirs=', 'suffix=', 'package=', 'prefix='])
subdir_pre=''
subdir_suf =''
subdirs =[]
-for opt in cl_options:
+for opt in options:
o = opt[0]
a = opt[1]
if o == '--subdirs' or o == '-s':
subdirs.append (a)
elif o == '--prefix':
subdir_pre = a
+ elif o == '-p' or o == '--package':
+ topdir = a
elif o == '--suffix':
subdir_suf = a
+
+ sys.path.append (topdir + '/stepmake/bin')
+ from packagepython import *
+ package = Package (topdir)
+ packager = Packager ()
+
+ from flower import *
+
+# huh?
+allfiles = multiple_find (['*.*ly.txt'], '.')
+
gen_list (files, (subdir_pre, subdirs, subdir_suf), 'index.html')
+
diff --git a/bin/profile-conf.sh b/buildscripts/profile-conf.sh
index 79dbd73463..79dbd73463 100644
--- a/bin/profile-conf.sh
+++ b/buildscripts/profile-conf.sh
diff --git a/buildscripts/ps-to-gifs.sh b/buildscripts/ps-to-gifs.sh
new file mode 100755
index 0000000000..a2e9e26be9
--- /dev/null
+++ b/buildscripts/ps-to-gifs.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+# ps-to-gifs, convert PS to multiple gifs
+
+usage()
+{
+ cat <<EOF
+Usage: ps-to-gifs.sh [OPTION]... [FILE]
+Options:
+ -h, --help this help
+ -c, --crop crop output
+ -o, --output=NAME set output base
+ -t, --transparent change white to transparent
+EOF
+}
+
+if [ $# -lt 1 ]; then
+ usage;
+ exit 2;
+fi
+CROP=cat
+
+while [ $# -gt 0 ]; do
+opt=$1
+shift
+ case $opt in
+ -t|--t*)
+ color='-transparent white'
+ ;;
+ -h|--h*)
+ usage;
+ exit 0
+ ;;
+ -c|--c*)
+ CROP=" pnmcrop "
+ ;;
+ -o) OUTFILE=$2; shift
+ ;;
+ --o*=*) OUTFILE=`echo $opt | sed -e s/"^.*="//`
+ ;;
+ -*)
+ echo "ps-to-gifs: unknown option: \`$opt'"
+ exit 1
+ ;;
+ *)
+ FILE=$opt
+ ;;
+ esac
+done
+
+if [ "x$TRANSPARENT_IS_BROKEN" != "x" ]; then
+ color=
+fi
+
+if [ "x$OUTFILE" = "x" ]; then
+ BASE=`dirname $FILE`/`basename $FILE .ps`
+else
+ BASE=`dirname $OUTFILE`/`basename $OUTFILE .gif`
+fi
+
+# urg, pipe breaks
+rm -f $BASE{.ppm,.gif} $BASE-page*{.ppm,.gif}
+
+# generate the pixmap at twice the size, then rescale (for antialiasing)
+cat $FILE | gs -sDEVICE=ppmraw -sOutputFile="$BASE-page%d.ppm" -r200 -dNOPAUSE - -c quit $FILE
+# quant is soo slow
+# cat $PPMFILE | ppmquant 2 | pnmscale 0.3333 | pnmcrop | ppmtogif $color > $OUTFILE
+PPMS=`ls $BASE*ppm`
+for i in $PPMS; do
+ o=`dirname $i`/`basename $i .ppm`.gif
+ cat $i | pnmscale 0.5 | $CROP | ppmtogif $color > $o
+ rm $i
+done
+
+if [ "x$OUTFILE" != "x" ]; then
+ mv $BASE-page1.gif $BASE.gif
+fi
+
diff --git a/buildscripts/run-lilypond.sh b/buildscripts/run-lilypond.sh
new file mode 100644
index 0000000000..2a69e5a3e2
--- /dev/null
+++ b/buildscripts/run-lilypond.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+LILYTOPDIR=$1
+shift
+export LILYINCLUDE="$LILYTOPDIR/init:$LILYTOPDIR/mf/out:$LILYINCLUDE"
+export TEXINPUTS="$LILYTOPDIR/tex:$TEXINPUTS"
+export MFINPUTS="$LILYTOPDIR/mf:$TEXINPUTS"
+
+$LILYTOPDIR/lily/out/lilypond $*
diff --git a/buildscripts/set-lily.sh b/buildscripts/set-lily.sh
new file mode 100755
index 0000000000..087ad63182
--- /dev/null
+++ b/buildscripts/set-lily.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+# zet-lily.sh --- configure LilyPond sourcetree
+# nice in first character unique name
+#
+PACKAGE_NAME=LilyPond
+export PACKAGE_NAME
+prefix=$HOME/usr
+sources=$prefix/src
+#
+#
+. ./stepmake/bin/package-zet.sh
+#
+# The $sources dir looks like this:
+#
+# <SEE PATCHES.txt>
+#
+if [ "x$LILYINCLUDE" = "x" ]; then
+ # we can try...
+ echo you should add the following to your profile script
+ if [ "x$MAILADDRESS" = "x" ]; then
+ MAILADDRESS=$USER@`hostname`
+ export MAILADDRESS
+ echo " MAILADDRESS=\$USER@`hostname`"
+ echo " export MAILADDRESS"
+ fi
+ LILYINCLUDE=$LILYPOND_SOURCEDIR/init:$LILYPOND_SOURCEDIR/input:$LILYPOND_SOURCEDIR/mf/out
+ MFINPUTS=$MFINPUTS:$LILYPOND_SOURCEDIR/mf
+ TEXINPUTS=$TEXINPUTS:$LILYPOND_SOURCEDIR/mf/out
+ export LILYINCLUDE MFINPUTS TEXINPUTS
+ cat <<EOF
+ LILYINCLUDE=$LILYPOND_SOURCEDIR/init:$LILYPOND_SOURCEDIR/mf/out
+ MFINPUTS=\$MFINPUTS:\$LILYPOND_SOURCEDIR/mf
+ TEXINPUTS=\$TEXINPUTS:\$LILYPOND_SOURCEDIR/mf/out
+ export LILYINCLUDE MFINPUTS TEXINPUTS
+EOF
+
+fi
+
+ln -sf $LILYPOND_SOURCEDIR/lily/out/lilypond $prefix/bin/lilypond
+ln -sf $LILYPOND_SOURCEDIR/mi2mu/out/mi2mu $prefix/bin/mi2mu
+ln -sf $LILYPOND_SOURCEDIR/scripts/ly2dvi.sh $prefix/bin/ly2dvi
+chmod 755 $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh
+ln -sf $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh $prefix/bin/ps-to-gifs
+
+if [ -f ../.gdbinit ];
+then
+ ln ../.gdbinit .
+fi
+
+if [ -f ../.dstreamrc ]
+then
+ ln ../.dstreamrc .
+fi
+
+./configure --prefix=$prefix --enable-debugging --enable-printing --enable-checking --disable-optimise
+
diff --git a/buildscripts/show-current.sh b/buildscripts/show-current.sh
new file mode 100644
index 0000000000..7ae9c3fb03
--- /dev/null
+++ b/buildscripts/show-current.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+# show-current.sh
+
+. $LILYPOND_SOURCEDIR/VERSION
+VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+if [ "$MY_PATCH_LEVEL" != "" ]; then
+ VERSION=$VERSION.$MY_PATCH_LEVEL
+fi
+echo $VERSION
diff --git a/buildscripts/template.py b/buildscripts/template.py
new file mode 100644
index 0000000000..f1a45e0509
--- /dev/null
+++ b/buildscripts/template.py
@@ -0,0 +1,59 @@
+#!@PYTHON@
+
+# template.py --
+#
+# source file of the GNU LilyPond music typesetter
+#
+# (c) 1998
+
+program_name = 'template'
+version = '0.1'
+
+import os
+import sys
+
+sys.path.append ('@abs-step-bindir@')
+sys.path.append (os.environ['HOME'] + '/usr/src/lilypond/stepmake/bin')
+
+import getopt
+from string import *
+import regex
+import regsub
+import time
+
+def program_id ():
+ return name + ' version ' + version;
+
+def identify ():
+ sys.stdout.write (program_id () + '\n')
+
+def help ():
+ sys.stdout.write ("Usage: %s [options] [files]\n"
+ "I'm not a program, use me as a template to create one\n\n"
+ + "Options:\n"
+ + " -h, --help print this help\n"
+ % (program_name)
+ )
+ sys.exit (0)
+
+identify ()
+(options, files) = getopt.getopt (
+ sys.argv[1:], 'hp:', ['help', 'package'])
+for opt in options:
+ o = opt[0]
+ a = opt[1]
+ if o== '--help' or o == '-h':
+ help ()
+ elif o == '-p' or o == '--package':
+ topdir = a
+ else:
+ print o
+ raise getopt.error
+
+sys.path.append (topdir + '/stepmake/bin')
+from packagepython import *
+package = Package (topdir)
+packager = Packager ()
+
+from flower import *
+
diff --git a/config.hh.in b/config.hh.in
index c086270328..69939cf55a 100644
--- a/config.hh.in
+++ b/config.hh.in
@@ -1,14 +1,26 @@
/* @configure_input@ */
+/* Hmm */
+#define PACKAGE "@package@"
/* default lilypond init and input dir */
#define DIR_DATADIR "@DIR_DATADIR@"
+/* default lilypond locale dir */
+#define DIR_LOCALEDIR "@DIR_LOCALEDIR@"
+
/* define if you have memmem */
#define HAVE_MEMMEM 0
/* define if you have snprintf */
#define HAVE_SNPRINTF 0
+/* define if you have vsnprintf */
+#define HAVE_VSNPRINTF 0
+
+/* define if you have gettext */
+#define HAVE_GETTEXT 0
+
/* define if explicit instantiation is needed */
#undef NEED_EXPLICIT_INSTANTIATION
+
diff --git a/config.make.in b/config.make.in
index 08f8af8523..9aecaf66f2 100644
--- a/config.make.in
+++ b/config.make.in
@@ -2,38 +2,57 @@
# @configure_input@
-INSTALL = @INSTALL@
+package-depth = @package_depth@
+
USER_CXXFLAGS = @CXXFLAGS@ @CPPFLAGS@
-USER_LDFLAGS =
+USER_LDFLAGS =
+CC = @CC@
CXX = @CXX@
-POD2HTML= @POD2HTML@
-POD2MAN = @POD2MAN@
+GCC = @GCC@
+LD = @LD@
+PACKAGE = @PACKAGE@
+package = @package@
+PACKAGE_NAME = @PACKAGE_NAME@
+stepmake = @stepmake@
+CONFIGSUFFIX = @CONFIGSUFFIX@
+MAKEINFO = @MAKEINFO@
ICFLAGS = @ICFLAGS@
ILDFLAGS = @ILDFLAGS@
libdir = @libdir@
prefix = @prefix@
TEXPREFIX = @TEXPREFIX@
TEXDIR = @TEXDIR@
-TAR= @TAR@
MFDIR = @MFDIR@
-mandir = @mandir@
+mandir = @mandir@
+infodir = @infodir@
exec_prefix = @exec_prefix@
bindir = @bindir@
includedir = @includedir@
datadir = @datadir@
-EXTRA_LIBES = @EXTRA_LIBES@
+localedir = @localedir@
+EXTRA_LIBES = @EXTRA_LIBES@ @LIBS@
RANLIB = @RANLIB@
DEFS = @DEFS@
#SET_MAKE = @SET_MAKE@
DEFINES = @DEFS@ @DEFINES@
-FIND = @FIND@
COMPILEINFO = @COMPILEINFO@
+DOTEXE = @DOTEXE@
+BASH = @BASH@
BISON = @BISON@
+FIND = @FIND@
FLEX = @FLEX@
LN = @LN@
-ZIP = @ZIP@
+MSGFMT = @MSGFMT@
PERL = @PERL@
PYTHON = @PYTHON@
-CONFIGSUFFIX = @CONFIGSUFFIX@
+TAR= @TAR@
+TROFF = @TROFF@
+YODL= @YODL@
+YODL2HTML= @YODL2HTML@
+YODL2LATEX= @YODL2LATEX@
+YODL2MAN= @YODL2MAN@
+YODL2TEXINFO= @YODL2TEXINFO@
+YODL2TXT= @YODL2TXT@
+ZIP = @ZIP@
diff --git a/configure b/configure
index c501bd403e..2dd916582d 100755
--- a/configure
+++ b/configure
@@ -12,7 +12,7 @@ ac_help=
ac_default_prefix=/usr/local
# Any additions from configure.in:
ac_help="$ac_help
- enable-printing turn on debug printing. Default: off"
+ enable-config=FILE put configure settings in config-FILE.make"
ac_help="$ac_help
enable-checking set runtime checks (assert calls). Default: on"
ac_help="$ac_help
@@ -22,15 +22,19 @@ ac_help="$ac_help
ac_help="$ac_help
enable-debugging set debug info. Default: on"
ac_help="$ac_help
- enable-mingw-prefix=DIR set the mingw32 directory (standalone windows32 exes)"
+ enable-mingw-prefix=DIR set the mingw32 directory (standalone windows32 exes)"
+ac_help="$ac_help
+ enable-printing turn on debug printing. Default: off"
+ac_help="$ac_help
+ with-localedir=LOCALE use LOCALE as locale dir. Default: PREFIX/share/locale "
ac_help="$ac_help
- enable-tex-prefix=DIR set the tex-directory to find TeX subdirectories. (default: PREFIX)"
+ with-lang=LANG use LANG as language to emit messages"
ac_help="$ac_help
- enable-tex-dir=DIR set the directory to put LilyPond TeX files in. "
+ enable-tex-prefix=DIR set the tex-directory to find TeX subdirectories. (default: PREFIX)"
ac_help="$ac_help
- enable-mf-dir=DIR set the directory to put LilyPond MetaFont files in. "
+ enable-tex-dir=DIR set the directory to put $PACKAGE_NAME TeX files in. "
ac_help="$ac_help
- enable-config=FILE put configure settings in config-FILE.make"
+ enable-mf-dir=DIR set the directory to put $PACKAGE_NAME MetaFont files in. "
# Initialize some variables set by options.
# The variables have the same names as the options, with
@@ -470,7 +474,7 @@ echo > confdefs.h
# A filename unique to this package, relative to the directory that
# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=flower/choleski.cc
+ac_unique_file=make/lilypond.lsm.in
# Find the source files, if location was not specified.
if test -z "$srcdir"; then
@@ -538,8 +542,26 @@ else
fi
- #ugh flower/out/
-ac_aux_dir=
+
+
+# Bootstrap StepMake configure
+
+
+ . $srcdir/VERSION
+ FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+ if test x$MY_PATCH_LEVEL != x; then
+ FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL
+ fi
+
+ # urg: don't "fix" this: irix doesn't know about [:lower:] and [:upper:]
+ PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'`
+ package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
+
+ if test "x$PACKAGE" = "xSTEPMAKE"; then
+ echo Stepmake package!
+ (cd stepmake; rm -f stepmake; ln -s ../stepmake .)
+ (cd stepmake; rm -f bin; ln -s ../bin .)
+ ac_aux_dir=
for ac_dir in bin $srcdir/bin; do
if test -f $ac_dir/install-sh; then
ac_aux_dir=$ac_dir
@@ -558,14 +580,76 @@ ac_config_guess=$ac_aux_dir/config.guess
ac_config_sub=$ac_aux_dir/config.sub
ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+ else
+ echo Package: $PACKAGE
+ ac_aux_dir=
+for ac_dir in stepmake/bin $srcdir/stepmake/bin; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { echo "configure: error: can not find install-sh or install.sh in stepmake/bin $srcdir/stepmake/bin" 1>&2; exit 1; }
+fi
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+ fi
+
+
+
+
+ cat >> confdefs.h <<EOF
+#define PACKAGE "${PACKAGE_NAME}"
+EOF
+
+ cat >> confdefs.h <<EOF
+#define TOPLEVEL_VERSION "${FULL_VERSION}"
+EOF
+
+
+ package_depth=`dirname $cache_file`
+
+
+ AUTOGENERATE="This file was automatically generated by configure"
+
+ absolute_builddir="`pwd`"
+
+
+ # No versioning on directory names of sub-packages
+ stepmake=stepmake
+
+
+ CONFIGSUFFIX=
+ # Check whether --enable-config or --disable-config was given.
+if test "${enable_config+set}" = set; then
+ enableval="$enable_config"
+ CONFIGSUFFIX=$enableval
+fi
+
+
+ if test "$CONFIGSUFFIX" != "" ; then
+ CONFIGFILE=config-$CONFIGSUFFIX
+ else
+ CONFIGFILE=config
+ fi
+
+
+
# Make sure we can run config.sub.
if $ac_config_sub sun4 >/dev/null 2>&1; then :
else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:569: checking host system type" >&5
+echo "configure:653: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -585,171 +669,286 @@ host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
-
-
-. $srcdir/VERSION
-FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
-if test x$MY_PATCH_LEVEL != x; then
- FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL
+ for ac_prog in make
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:678: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$MAKE"; then
+ ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_MAKE="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+MAKE="$ac_cv_prog_MAKE"
+if test -n "$MAKE"; then
+ echo "$ac_t""$MAKE" 1>&6
+else
+ echo "$ac_t""no" 1>&6
fi
+test -n "$MAKE" && break
+done
+test -n "$MAKE" || MAKE="error"
-. $srcdir/flower/VERSION
-FULL_FLOWER_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+ for ac_prog in find
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:712: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$FIND"; then
+ ac_cv_prog_FIND="$FIND" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_FIND="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+FIND="$ac_cv_prog_FIND"
+if test -n "$FIND"; then
+ echo "$ac_t""$FIND" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
-# libtool.info ...
-# **Never** try to set library version numbers so that they correspond
-# to the release number of your package. This is an abuse that only
-# fosters misunderstanding of the purpose of library versions.
+test -n "$FIND" && break
+done
+test -n "$FIND" || FIND="error"
-REVISION=$PATCH_LEVEL
-# CURRENT=$MINOR_VERSION
-CURRENT=`expr $MINOR_VERSION + 1`
-# AGE=$(expr $MAJOR_VERSION + 1)
-AGE=$MAJOR_VERSION
+ for ac_prog in tar
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:749: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$TAR"; then
+ ac_cv_prog_TAR="$TAR" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_TAR="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+TAR="$ac_cv_prog_TAR"
+if test -n "$TAR"; then
+ echo "$ac_t""$TAR" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
-# turn off shared libraries by default (may be enabled using --enable-shared)
-#AM_DISABLE_SHARED
-#AM_PROG_LIBTOOL
+test -n "$TAR" && break
+done
+test -n "$TAR" || TAR="error"
-# ugh, automake: we want (and check for) bison
-for ac_prog in 'bison -y' byacc
+ for ac_prog in bash
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:625: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
+echo "configure:783: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_BASH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- if test -n "$YACC"; then
- ac_cv_prog_YACC="$YACC" # Let the user override the test.
+ if test -n "$BASH"; then
+ ac_cv_prog_BASH="$BASH" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- ac_cv_prog_YACC="$ac_prog"
+ ac_cv_prog_BASH="$ac_prog"
break
fi
done
IFS="$ac_save_ifs"
fi
fi
-YACC="$ac_cv_prog_YACC"
-if test -n "$YACC"; then
- echo "$ac_t""$YACC" 1>&6
+BASH="$ac_cv_prog_BASH"
+if test -n "$BASH"; then
+ echo "$ac_t""$BASH" 1>&6
else
echo "$ac_t""no" 1>&6
fi
-test -n "$YACC" && break
+test -n "$BASH" && break
done
-test -n "$YACC" || YACC="yacc"
+test -n "$BASH" || BASH="/bin/sh"
-# ugh, automake: we want (and check for) flex
-# AC_PROG_LEX
-# urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack...
+ # Extract the first word of "python", so it can be a program name with args.
+set dummy python; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:816: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ case "$PYTHON" in
+ /*)
+ ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_path_PYTHON="$ac_dir/$ac_word"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON="-echo no python"
+ ;;
+esac
+fi
+PYTHON="$ac_cv_path_PYTHON"
+if test -n "$PYTHON"; then
+ echo "$ac_t""$PYTHON" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
-# AC_DECL_YYTEXT
-# ugh, ugh
-ac_cv_prog_lex_root=lex.yy
+
-# -O is necessary to get inlining
-OPTIMIZE="-O"
-printing_b=no
-checking_b=yes
-optimise_b=tja
-profile_b=no
-CONFIGSUFFIX=
-debug_b=yes
-
+
+ result="`echo \"$MAKE\" | grep echo`"
+ if test "x$MAKE" = "xerror" -o "x$result" != "x"; then
+
+ echo "configure: warning: can\'t find GNU make. You should install GNU make" 1>&2
+ warn_b=yes
-ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
+ fi
+ if test $MAKE != "error" ; then
+ $MAKE -v| grep GNU > /dev/null
+ if test "$?" = 1
+ then
+
+ echo "configure: warning: Please install *GNU* make" 1>&2
+ warn_b=yes
+
+ fi
+ fi
-echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6
-echo "configure:683: checking whether explicit instantiation is needed" >&5
-if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 688 "configure"
-#include "confdefs.h"
+
+ result="`echo \"$PYTHON\" | grep echo`"
+ if test "x$PYTHON" = "xerror" -o "x$result" != "x"; then
+
+ echo "configure: warning: can\'t find python. You should install Python" 1>&2
+ warn_b=yes
-template <class T> struct foo { static int baz; };
-template <class T> int foo<T>::baz = 1;
+ fi
-int main() {
- return foo<int>::baz;
-; return 0; }
-EOF
-if { (eval echo configure:698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- rm -rf conftest*
- lily_cv_need_explicit_instantiation=no
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- lily_cv_need_explicit_instantiation=yes
-fi
-rm -f conftest*
-fi
-echo "$ac_t""$lily_cv_need_explicit_instantiation" 1>&6
-if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then
- cat >> confdefs.h <<\EOF
-#define NEED_EXPLICIT_INSTANTIATION 1
+ if test "x$OSTYPE" = "xcygwin32" || test "x$OSTYPE" = "xWindows_NT"; then
+ LN=cp # hard link does not work under cygnus-nt (yet?)
+ ZIP="zip -r -9" #
+ DOTEXE=.exe
+ else
+ LN=ln
+ ZIP="zip -r -9"
+ fi
+
+
+
+
+
+ if test "$datadir" = "\${prefix}/share"; then
+ datadir='${prefix}/share/'$package
+ fi
+ DIR_DATADIR=${datadir}
+ presome=${prefix}
+ if test "$prefix" = "NONE"; then
+ presome=${ac_default_prefix}
+ fi
+ DIR_DATADIR=`echo ${DIR_DATADIR} | sed "s!\\\${prefix}!$presome!"`
+
+
+ cat >> confdefs.h <<EOF
+#define DIR_DATADIR "${DIR_DATADIR}"
EOF
-fi
-# Check whether --enable-printing or --disable-printing was given.
-if test "${enable_printing+set}" = set; then
- enableval="$enable_printing"
- printing_b=$enableval
-fi
-# Check whether --enable-checking or --disable-checking was given.
+# For all packages except the StepMake package itself
+subdirs="stepmake"
+
+
+# Uncomment the configuration options your package needs.
+
+ # -O is necessary to get inlining
+ OPTIMIZE="-O"
+ checking_b=yes
+ optimise_b=tja
+ profile_b=no
+ debug_b=yes
+
+ # Check whether --enable-checking or --disable-checking was given.
if test "${enable_checking+set}" = set; then
enableval="$enable_checking"
checking_b=$enableval
fi
-# Check whether --enable-optimise or --disable-optimise was given.
+ # actually, the default is: tja='-O' to get inlining...
+ # off=''
+ # Check whether --enable-optimise or --disable-optimise was given.
if test "${enable_optimise+set}" = set; then
enableval="$enable_optimise"
optimise_b=$enableval
fi
-# Check whether --enable-profiling or --disable-profiling was given.
+ # Check whether --enable-profiling or --disable-profiling was given.
if test "${enable_profiling+set}" = set; then
enableval="$enable_profiling"
profile_b=$enableval
fi
-# Check whether --enable-debugging or --disable-debugging was given.
+ # Check whether --enable-debugging or --disable-debugging was given.
if test "${enable_debugging+set}" = set; then
enableval="$enable_debugging"
debug_b=$enableval
fi
-# Check whether --enable-mingw-prefix or --disable-mingw-prefix was given.
+ # Check whether --enable-mingw-prefix or --disable-mingw-prefix was given.
if test "${enable_mingw_prefix+set}" = set; then
enableval="$enable_mingw_prefix"
MINGWPREFIX=$enableval
@@ -757,116 +956,299 @@ else
MINGWPREFIX=no
fi
-
-# Check whether --enable-tex-prefix or --disable-tex-prefix was given.
-if test "${enable_tex_prefix+set}" = set; then
- enableval="$enable_tex_prefix"
- TEXPREFIX=$enableval
+
+ if test "$printing_b" = no; then
+ # ugh
+ cat >> confdefs.h <<\EOF
+#define NPRINT 1
+EOF
+
+ DEFINES="$DEFINES -DNPRINT"
+ fi
+
+ if test "$checking_b" = no; then
+ # ugh
+ cat >> confdefs.h <<\EOF
+#define NDEBUG 1
+EOF
+
+ DEFINES="$DEFINES -DNDEBUG"
+ fi
+
+ if test "$optimise_b" = yes; then
+ DEFINES="$DEFINES -finline-functions"
+ OPTIMIZE="-O2"
+ fi
+
+ if test "$optimise_b" = no; then
+ OPTIMIZE=""
+ fi
+
+ if test $profile_b = yes; then
+ EXTRA_LIBES="-pg"
+ DEFINES="$DEFINES -pg"
+ fi
+
+ if test $debug_b = yes; then
+ DEFINES="$DEFINES -g"
+ fi
+
+ # however, C++ support in mingw32 v 0.1.4 is still flaky
+ if test x$MINGWPREFIX != xno; then
+ ICFLAGS="-I$MINGWPREFIX/include"
+ ILDFLAGS="-$MINGWPREFIX/lib"
+ fi
+
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1006: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- TEXPREFIX=auto
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_CC="gcc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
fi
-
-
-# Check whether --enable-tex-dir or --disable-tex-dir was given.
-if test "${enable_tex_dir+set}" = set; then
- enableval="$enable_tex_dir"
- TEXDIR=$enableval
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
else
- TEXDIR=auto
+ echo "$ac_t""no" 1>&6
fi
-
-# Check whether --enable-mf-dir or --disable-mf-dir was given.
-if test "${enable_mf_dir+set}" = set; then
- enableval="$enable_mf_dir"
- MFDIR=$enableval
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1035: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- MFDIR=auto
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ ac_prog_rejected=no
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# -gt 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ set dummy "$ac_dir/$ac_word" "$@"
+ shift
+ ac_cv_prog_CC="$@"
+ fi
+fi
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+ echo "$ac_t""$CC" 1>&6
+else
+ echo "$ac_t""no" 1>&6
fi
-
-# Check whether --enable-config or --disable-config was given.
-if test "${enable_config+set}" = set; then
- enableval="$enable_config"
- CONFIGSUFFIX=$enableval
+ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
fi
-
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:1083: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-if test "$printing_b" = no; then
- # ugh
- cat >> confdefs.h <<\EOF
-#define NPRINT 1
-EOF
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
- DEFINES="$DEFINES -DNPRINT"
-fi
-
-if test "$checking_b" = no; then
- # ugh
- cat >> confdefs.h <<\EOF
-#define NDEBUG 1
+cat > conftest.$ac_ext <<EOF
+#line 1093 "configure"
+#include "confdefs.h"
+main(){return(0);}
EOF
+if { (eval echo configure:1097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ ac_cv_prog_cc_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+ ac_cv_prog_cc_cross=no
+ else
+ ac_cv_prog_cc_cross=yes
+ fi
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_prog_cc_works=no
+fi
+rm -fr conftest*
- DEFINES="$DEFINES -DNDEBUG"
+echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
+if test $ac_cv_prog_cc_works = no; then
+ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:1117: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+cross_compiling=$ac_cv_prog_cc_cross
-if test "$optimise_b" = yes; then
- DEFINES="$DEFINES -finline-functions -DSTRING_UTILS_INLINED"
- OPTIMIZE="-O2"
- cat >> confdefs.h <<\EOF
-#define STRINGS_UTILS_INLINED 1
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+echo "configure:1122: checking whether we are using GNU C" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.c <<EOF
+#ifdef __GNUC__
+ yes;
+#endif
EOF
-
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1131: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_gcc=yes
+else
+ ac_cv_prog_gcc=no
+fi
fi
-if test "$optimise_b" = no; then
- OPTIMIZE=""
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+
+if test $ac_cv_prog_gcc = yes; then
+ GCC=yes
+ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS=
+ echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+echo "configure:1146: checking whether ${CC-cc} accepts -g" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ echo 'void f(){}' > conftest.c
+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+ ac_cv_prog_cc_g=yes
+else
+ ac_cv_prog_cc_g=no
fi
+rm -f conftest*
-if test $profile_b = yes; then
- EXTRA_LIBES="-pg"
- DEFINES="$DEFINES -pg"
fi
-if test $debug_b = yes; then
- DEFINES="$DEFINES -g"
+echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+ elif test $ac_cv_prog_cc_g = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-O2"
+ fi
+else
+ GCC=
+ test "${CFLAGS+set}" = set || CFLAGS="-g"
fi
-# however, C++ support in mingw32 v 0.1.4 is still flaky
-if test x$MINGWPREFIX != xno; then
- ICFLAGS="-I$MINGWPREFIX/include"
- ILDFLAGS="-$MINGWPREFIX/lib"
+ LD='$(CC)'
+
+
+ CPPFLAGS=${CPPFLAGS:-""}
+
+
+
+
+
+
+
+# AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h)
+
+printing_b=no
+# Check whether --enable-printing or --disable-printing was given.
+if test "${enable_printing+set}" = set; then
+ enableval="$enable_printing"
+ printing_b=$enableval
fi
-if test "x$OSTYPE" = "xWindows_NT"; then
- LN=cp # hard link does not work under cygnus-nt (yet?)
- ZIP="zip -r -9" #
-else
- LN=ln
- ZIP="zip -r -9"
+
+if test "$optimise_b" = yes; then
+ DEFINES="$DEFINES -DSTRING_UTILS_INLINED"
+ cat >> confdefs.h <<\EOF
+#define STRINGS_UTILS_INLINED 1
+EOF
+
fi
-if test "$CONFIGSUFFIX" != "" ; then
- CONFIGFILE=config-$CONFIGSUFFIX
+echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
+echo "configure:1203: checking how to run the C++ preprocessor" >&5
+if test -z "$CXXCPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
+ CXXCPP="${CXX-g++} -E"
+ cat > conftest.$ac_ext <<EOF
+#line 1216 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1221: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+ :
else
- CONFIGFILE=config
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CXXCPP=/lib/cpp
fi
-
+rm -f conftest*
+ ac_cv_prog_CXXCPP="$CXXCPP"
+fi
+fi
+CXXCPP="$ac_cv_prog_CXXCPP"
+echo "$ac_t""$CXXCPP" 1>&6
-AUTOGENERATE="This file was automatically generated by configure"
-CPPFLAGS=${CPPFLAGS:-""} # we don't want -g -O junk
-# CXXFLAGS=${CXXFLAGS:-""} # we don't want -g -O junk
-CXXFLAGS="$DEFINES $OPTIMIZE"
-LDFLAGS=$EXTRA_LIBES
+ ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
-for ac_prog in $CCC c++ g++ gcc CC cxx cc++
+ for ac_prog in $CCC c++ g++ gcc CC cxx cc++
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:870: checking for $ac_word" >&5
+echo "configure:1252: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -897,7 +1279,7 @@ test -n "$CXX" || CXX="gcc"
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:901: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1283: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -907,11 +1289,11 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 911 "configure"
+#line 1293 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cxx_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -931,12 +1313,12 @@ if test $ac_cv_prog_cxx_works = no; then
{ echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:935: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1317: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:940: checking whether we are using GNU C++" >&5
+echo "configure:1322: checking whether we are using GNU C++" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -945,7 +1327,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:949: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1331: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gxx=yes
else
ac_cv_prog_gxx=no
@@ -960,7 +1342,7 @@ if test $ac_cv_prog_gxx = yes; then
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:964: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1346: checking whether ${CXX-g++} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -987,333 +1369,434 @@ else
test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
fi
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
+
+ ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
+echo "configure:1376: checking for FlexLexer.h" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1381 "configure"
+#include "confdefs.h"
+#include <FlexLexer.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1386: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ true
+else
+ echo "$ac_t""no" 1>&6
+
+ echo "configure: warning: can"\'"t find flex header. Please install Flex headers correctly" 1>&2
+ warn_b=yes
+
+fi
+
+
+ CXXFLAGS="$DEFINES $OPTIMIZE"
+ LDFLAGS=$EXTRA_LIBES
+
+
+
+ LD='$(CXX)'
+
+
+
+ # ugh autoconf
+ if $CXX --version | grep '2\.[78]' > /dev/null ||
+ $CXX --version | grep 'egcs' > /dev/null
+ then
+ true
+ else
+
+ echo "configure: warning: can't find g++ 2.7" 1>&2
+ warn_b=yes
+
+ fi
+
+
+ echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6
+echo "configure:1435: checking whether explicit instantiation is needed" >&5
+if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1440 "configure"
+#include "confdefs.h"
+
+ template <class T> struct foo { static int baz; };
+ template <class T> int foo<T>::baz = 1;
+
+int main() {
+ return foo<int>::baz;
+; return 0; }
+EOF
+if { (eval echo configure:1450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ rm -rf conftest*
+ lily_cv_need_explicit_instantiation=no
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ lily_cv_need_explicit_instantiation=yes
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$lily_cv_need_explicit_instantiation" 1>&6
+ if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then
+ cat >> confdefs.h <<\EOF
+#define NEED_EXPLICIT_INSTANTIATION 1
+EOF
+
+ fi
+
+
+ # ugh, automake: we want (and check for) bison
+ for ac_prog in 'bison -y' byacc
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:994: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+echo "configure:1477: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+ if test -n "$YACC"; then
+ ac_cv_prog_YACC="$YACC" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- ac_cv_prog_RANLIB="ranlib"
+ ac_cv_prog_YACC="$ac_prog"
break
fi
done
IFS="$ac_save_ifs"
- test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
fi
fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
- echo "$ac_t""$RANLIB" 1>&6
+YACC="$ac_cv_prog_YACC"
+if test -n "$YACC"; then
+ echo "$ac_t""$YACC" 1>&6
else
echo "$ac_t""no" 1>&6
fi
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1031: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- # Account for people who put trailing slashes in PATH elements.
- case "$ac_dir/" in
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- for ac_prog in ginstall installbsd scoinst install; do
- if test -f $ac_dir/$ac_prog; then
- if test $ac_prog = install &&
- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- # OSF/1 installbsd also uses dspmsg, but is usable.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
- IFS="$ac_save_IFS"
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL="$ac_cv_path_install"
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL="$ac_install_sh"
- fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
+test -n "$YACC" && break
+done
+test -n "$YACC" || YACC="yacc"
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+ # ugh, automake: we want (and check for) flex
+ # AC_PROG_LEX
+ # urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack...
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+ # AC_DECL_YYTEXT
+ # ugh, ugh
+ ac_cv_prog_lex_root=lex.yy
-for ac_prog in tar
+ for ac_prog in bison
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1085: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
+echo "configure:1519: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- if test -n "$TAR"; then
- ac_cv_prog_TAR="$TAR" # Let the user override the test.
+ if test -n "$BISON"; then
+ ac_cv_prog_BISON="$BISON" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- ac_cv_prog_TAR="$ac_prog"
+ ac_cv_prog_BISON="$ac_prog"
break
fi
done
IFS="$ac_save_ifs"
fi
fi
-TAR="$ac_cv_prog_TAR"
-if test -n "$TAR"; then
- echo "$ac_t""$TAR" 1>&6
+BISON="$ac_cv_prog_BISON"
+if test -n "$BISON"; then
+ echo "$ac_t""$BISON" 1>&6
else
echo "$ac_t""no" 1>&6
fi
-test -n "$TAR" && break
+test -n "$BISON" && break
done
-test -n "$TAR" || TAR="error"
+test -n "$BISON" || BISON="error"
-for ac_prog in find
+ for ac_prog in flex
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1119: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
+echo "configure:1553: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- if test -n "$FIND"; then
- ac_cv_prog_FIND="$FIND" # Let the user override the test.
+ if test -n "$FLEX"; then
+ ac_cv_prog_FLEX="$FLEX" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- ac_cv_prog_FIND="$ac_prog"
+ ac_cv_prog_FLEX="$ac_prog"
break
fi
done
IFS="$ac_save_ifs"
fi
fi
-FIND="$ac_cv_prog_FIND"
-if test -n "$FIND"; then
- echo "$ac_t""$FIND" 1>&6
+FLEX="$ac_cv_prog_FLEX"
+if test -n "$FLEX"; then
+ echo "$ac_t""$FLEX" 1>&6
else
echo "$ac_t""no" 1>&6
fi
-test -n "$FIND" && break
+test -n "$FLEX" && break
done
-test -n "$FIND" || FIND="error"
+test -n "$FLEX" || FLEX="error"
+
+ result="`echo \"$BISON\" | grep echo`"
+ if test "x$BISON" = "xerror" -o "x$result" != "x"; then
+
+ echo "configure: warning: can\'t find bison. Please install Bison" 1>&2
+ warn_b=yes
+ fi
- if test $FIND = "error"
- then
+
+ result="`echo \"$FLEX\" | grep echo`"
+ if test "x$FLEX" = "xerror" -o "x$result" != "x"; then
- echo "configure: warning: can't find \`find\'. Please use --enable-tex-dir. " 1>&2
+ echo "configure: warning: can\'t find flex. Please install Flex" 1>&2
warn_b=yes
fi
-echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:1160: checking for 8-bit clean memcmp" >&5
-if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
+ if test $BISON != "error"; then
+ bison_version=`$BISON --version| sed 's/^.*version 1.//g' `
+ if test $bison_version -lt 25; then
+
+ echo "configure: warning: Your bison is a bit old (1.$bison_version). You might have to install 1.25" 1>&2
+ warn_b=yes
+
+ fi
+ fi
+
+
+
+
+
+ for ac_prog in ar
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1620: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- if test "$cross_compiling" = yes; then
- ac_cv_func_memcmp_clean=no
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
else
- cat > conftest.$ac_ext <<EOF
-#line 1168 "configure"
-#include "confdefs.h"
-#ifdef __cplusplus
-extern "C" void exit(int);
-#endif
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_AR="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+AR="$ac_cv_prog_AR"
+if test -n "$AR"; then
+ echo "$ac_t""$AR" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
-main()
-{
- char c0 = 0x40, c1 = 0x80, c2 = 0x81;
- exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1);
-}
+test -n "$AR" && break
+done
+test -n "$AR" || AR="error"
-EOF
-if { (eval echo configure:1181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
-then
- ac_cv_func_memcmp_clean=yes
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1652: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_func_memcmp_clean=no
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_RANLIB="ranlib"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
fi
-rm -fr conftest*
fi
-
+RANLIB="$ac_cv_prog_RANLIB"
+if test -n "$RANLIB"; then
+ echo "$ac_t""$RANLIB" 1>&6
+else
+ echo "$ac_t""no" 1>&6
fi
-echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
-test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
-echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:1199: checking for vprintf" >&5
-if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1204 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char vprintf(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char vprintf();
+
+
-int main() {
+# AC_STEPMAKE_LIBTOOL
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_vprintf) || defined (__stub___vprintf)
-choke me
-#else
-vprintf();
-#endif
+ lang=English
+ ALL_LINGUAS="en nl"
-; return 0; }
-EOF
-if { (eval echo configure:1230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- rm -rf conftest*
- eval "ac_cv_func_vprintf=yes"
+ # with/enable ??
+ # Check whether --with-localedir or --without-localedir was given.
+if test "${with_localedir+set}" = set; then
+ withval="$with_localedir"
+ localedir=$with_localedir
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_vprintf=no"
-fi
-rm -f conftest*
+ localedir='${prefix}/share/locale'
fi
-if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define HAVE_VPRINTF 1
-EOF
+ # Check whether --with-lang or --without-lang was given.
+if test "${with_lang+set}" = set; then
+ withval="$with_lang"
+ language=$with_lang
else
- echo "$ac_t""no" 1>&6
+ language=English
fi
-if test "$ac_cv_func_vprintf" != yes; then
-echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:1254: checking for _doprnt" >&5
-if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
+
+ echo $ac_n "checking language""... $ac_c" 1>&6
+echo "configure:1707: checking language" >&5
+ case "$language" in
+ En* | en* | Am* | am* | US* | us*)
+ lang=English;;
+ NL | nl | Du* | du* | Ned* | ned*)
+ lang=Dutch;;
+ "")
+ lang=English;;
+ *)
+ lang=unknown;;
+ esac
+ echo "$ac_t""$lang" 1>&6
+
+ if test "$lang" = "unknown" ; then
+
+ echo "configure: warning: $language not supported; available are: $ALL_LINGUAS" 1>&2
+ warn_b=yes
+
+ fi
+
+
+
+ DIR_LOCALEDIR=${localedir}
+ presome=${prefix}
+ if test "$prefix" = "NONE"; then
+ presome=${ac_default_prefix}
+ fi
+ DIR_LOCALEDIR=`echo ${DIR_LOCALEDIR} | sed "s!\\\${prefix}!$presome!"`
+
+
+ cat >> confdefs.h <<EOF
+#define DIR_LOCALEDIR "${DIR_LOCALEDIR}"
+EOF
+
+
+ echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
+echo "configure:1743: checking for gettext in -lintl" >&5
+ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- cat > conftest.$ac_ext <<EOF
-#line 1259 "configure"
+ ac_save_LIBS="$LIBS"
+LIBS="-lintl $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1751 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char _doprnt(); below. */
-#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char _doprnt();
+char gettext();
int main() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub__doprnt) || defined (__stub____doprnt)
-choke me
-#else
-_doprnt();
-#endif
-
+gettext()
; return 0; }
EOF
-if { (eval echo configure:1285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
- eval "ac_cv_func__doprnt=yes"
+ eval "ac_cv_lib_$ac_lib_var=yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
- eval "ac_cv_func__doprnt=no"
+ eval "ac_cv_lib_$ac_lib_var=no"
fi
rm -f conftest*
-fi
+LIBS="$ac_save_LIBS"
-if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define HAVE_DOPRNT 1
+ ac_tr_lib=HAVE_LIB`echo intl | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
EOF
+ LIBS="-lintl $LIBS"
+
else
echo "$ac_t""no" 1>&6
fi
-fi
-
-for ac_func in memmem snprintf
+ for ac_func in gettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1312: checking for $ac_func" >&5
+echo "configure:1795: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1317 "configure"
+#line 1800 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1339,7 +1822,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1364,560 +1847,670 @@ fi
done
-cat >> confdefs.h <<EOF
-#define TOPLEVEL_VERSION "${FULL_VERSION}"
-EOF
-cat >> confdefs.h <<EOF
-#define FLOWER_VERSION "${FULL_FLOWER_VERSION}"
-EOF
+ for ac_prog in msgfmt
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1857: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$MSGFMT"; then
+ ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_MSGFMT="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+MSGFMT="$ac_cv_prog_MSGFMT"
+if test -n "$MSGFMT"; then
+ echo "$ac_t""$MSGFMT" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
-# ugh: produces "${prefix}/share/lilypond"
-# DIR_DATADIR=$datadir/lilypond
-# ugh: produces "NONE/share/lilypond"
-# DIR_DATADIR=$prefix/share/lilypond
+test -n "$MSGFMT" && break
+done
+test -n "$MSGFMT" || MSGFMT="-echo no msgfmt"
-DIR_DATADIR=$prefix/share/lilypond
-if test x$prefix = xNONE; then
- DIR_DATADIR=/usr/local/share/lilypond
-fi
-cat >> confdefs.h <<EOF
-#define DIR_DATADIR "${DIR_DATADIR}"
-EOF
+ echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6
+echo "configure:1887: checking whether msgfmt accepts -o" >&5
+ msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`"
+ if test "$msgfmt_output" = ""; then
+ echo "$ac_t""yes" 1>&6
+ else
+ # urg
+ MSGFMT="touch ; echo "
+ echo "$ac_t""no" 1>&6
+
+ echo "configure: warning: please install msgfmt from GNU gettext" 1>&2
+ warn_b=yes
+
+ fi
-absolute_builddir="`pwd`"
+ # Check whether --enable-tex-prefix or --disable-tex-prefix was given.
+if test "${enable_tex_prefix+set}" = set; then
+ enableval="$enable_tex_prefix"
+ TEXPREFIX=$enableval
+else
+ TEXPREFIX=auto
+fi
+
+ # Check whether --enable-tex-dir or --disable-tex-dir was given.
+if test "${enable_tex_dir+set}" = set; then
+ enableval="$enable_tex_dir"
+ TEXDIR=$enableval
+else
+ TEXDIR=auto
+fi
+ # Check whether --enable-mf-dir or --disable-mf-dir was given.
+if test "${enable_mf_dir+set}" = set; then
+ enableval="$enable_mf_dir"
+ MFDIR=$enableval
+else
+ MFDIR=auto
+fi
+ if test "x$TEXPREFIX" = xauto ; then
+
+
+ echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6
+echo "configure:1934: checking TeX/MF root dir directory" >&5
+ find_root_prefix="$prefix"
+
+ test "x$find_root_prefix" = xNONE && find_root_prefix="$ac_default_prefix"
+ find_texpostfix="";
+ for postfix in "/lib/tex/" "/lib/texmf" "/lib" "/tex" "/texmf"; do
+ find_texprefix="$find_root_prefix$postfix"
+ if test -d $find_texprefix; then
+ find_texpostfix=$postfix
+ break;
+ fi
+ done
+
+ if test "x$find_texpostfix" = x; then
+ find_texpostfix='/lib/texmf/tex'
+
+ echo "configure: warning: Cannot determine the TeX-directory. Please use --enable-tex-prefix" 1>&2
+ warn_b=yes
+ fi
+ find_texprefix="$find_root_prefix/$find_texpostfix"
+ # only assign if variablename not empty
+ if test x != "x$TEXPREFIX"; then
+ TEXPREFIX='${prefix}'/"$find_texpostfix"
+ fi
+ echo "$ac_t""$find_texprefix" 1>&6
+ else
+ find_texprefix=$TEXPREFIX
+ fi
+ if test "x$MFDIR" = xauto; then
+
+
+
+ echo $ac_n "checking MF input directory""... $ac_c" 1>&6
+echo "configure:1975: checking MF input directory" >&5
+ find_dirdir=`(cd $find_texprefix;
+ $FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')`
+
+ if test "x$find_dirdir" = x; then
+ find_dirdir="/source";
+
+ echo "configure: warning: Cannot determine MF input subdirectory. Please set from command-line" 1>&2
+ warn_b=yes
+ true
+ fi
+ MFDIR=$find_dirdir
+ echo "$ac_t""$find_texprefix/$find_dirdir" 1>&6
+ MFDIR="$TEXPREFIX/$MFDIR"
+ fi
+
+ if test "x$TEXDIR" = xauto ; then
+
+
+
+ echo $ac_n "checking TeX input directory""... $ac_c" 1>&6
+echo "configure:2000: checking TeX input directory" >&5
+ find_dirdir=`(cd $find_texprefix;
+ $FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')`
+
+
+ if test "x$find_dirdir" = x; then
+ find_dirdir="/tex";
+
+ echo "configure: warning: Cannot determine TeX input subdirectory. Please set from command-line" 1>&2
+ warn_b=yes
+ true
+ fi
+ TEXDIR=$find_dirdir
+ echo "$ac_t""$find_texprefix/$find_dirdir" 1>&6
+ TEXDIR="$TEXPREFIX/$TEXDIR"
+ fi
+
+
+
-for ac_prog in bison
+ if test "x$YODL" = "x"; then
+ for ac_prog in yodl
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1420: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
+echo "configure:2031: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- if test -n "$BISON"; then
- ac_cv_prog_BISON="$BISON" # Let the user override the test.
+ if test -n "$YODL"; then
+ ac_cv_prog_YODL="$YODL" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- ac_cv_prog_BISON="$ac_prog"
+ ac_cv_prog_YODL="$ac_prog"
break
fi
done
IFS="$ac_save_ifs"
fi
fi
-BISON="$ac_cv_prog_BISON"
-if test -n "$BISON"; then
- echo "$ac_t""$BISON" 1>&6
+YODL="$ac_cv_prog_YODL"
+if test -n "$YODL"; then
+ echo "$ac_t""$YODL" 1>&6
else
echo "$ac_t""no" 1>&6
fi
-test -n "$BISON" && break
+test -n "$YODL" && break
done
-test -n "$BISON" || BISON="error"
+test -n "$YODL" || YODL="-echo no yodl"
-for ac_prog in flex
+ for ac_prog in yodl2html
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1454: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
+echo "configure:2065: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL2HTML'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- if test -n "$FLEX"; then
- ac_cv_prog_FLEX="$FLEX" # Let the user override the test.
+ if test -n "$YODL2HTML"; then
+ ac_cv_prog_YODL2HTML="$YODL2HTML" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- ac_cv_prog_FLEX="$ac_prog"
+ ac_cv_prog_YODL2HTML="$ac_prog"
break
fi
done
IFS="$ac_save_ifs"
fi
fi
-FLEX="$ac_cv_prog_FLEX"
-if test -n "$FLEX"; then
- echo "$ac_t""$FLEX" 1>&6
+YODL2HTML="$ac_cv_prog_YODL2HTML"
+if test -n "$YODL2HTML"; then
+ echo "$ac_t""$YODL2HTML" 1>&6
else
echo "$ac_t""no" 1>&6
fi
-test -n "$FLEX" && break
+test -n "$YODL2HTML" && break
done
-test -n "$FLEX" || FLEX="error"
+test -n "$YODL2HTML" || YODL2HTML="-echo no yodl"
-for ac_prog in make
+ for ac_prog in yodl2latex
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1488: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
+echo "configure:2099: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL2LATEX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- if test -n "$MAKE"; then
- ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
+ if test -n "$YODL2LATEX"; then
+ ac_cv_prog_YODL2LATEX="$YODL2LATEX" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- ac_cv_prog_MAKE="$ac_prog"
+ ac_cv_prog_YODL2LATEX="$ac_prog"
break
fi
done
IFS="$ac_save_ifs"
fi
fi
-MAKE="$ac_cv_prog_MAKE"
-if test -n "$MAKE"; then
- echo "$ac_t""$MAKE" 1>&6
+YODL2LATEX="$ac_cv_prog_YODL2LATEX"
+if test -n "$YODL2LATEX"; then
+ echo "$ac_t""$YODL2LATEX" 1>&6
else
echo "$ac_t""no" 1>&6
fi
-test -n "$MAKE" && break
+test -n "$YODL2LATEX" && break
done
-test -n "$MAKE" || MAKE="error"
-# Extract the first word of "perl", so it can be a program name with args.
-set dummy perl; ac_word=$2
+ for ac_prog in yodl2man
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1520: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
+echo "configure:2132: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL2MAN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- case "$PERL" in
- /*)
- ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_path_PERL="$ac_dir/$ac_word"
- break
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="error"
- ;;
-esac
-fi
-PERL="$ac_cv_path_PERL"
-if test -n "$PERL"; then
- echo "$ac_t""$PERL" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "python", so it can be a program name with args.
-set dummy python; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1552: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ if test -n "$YODL2MAN"; then
+ ac_cv_prog_YODL2MAN="$YODL2MAN" # Let the user override the test.
else
- case "$PYTHON" in
- /*)
- ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
- ;;
- *)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- ac_cv_path_PYTHON="$ac_dir/$ac_word"
+ ac_cv_prog_YODL2MAN="$ac_prog"
break
fi
done
IFS="$ac_save_ifs"
- test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON="error"
- ;;
-esac
fi
-PYTHON="$ac_cv_path_PYTHON"
-if test -n "$PYTHON"; then
- echo "$ac_t""$PYTHON" 1>&6
+fi
+YODL2MAN="$ac_cv_prog_YODL2MAN"
+if test -n "$YODL2MAN"; then
+ echo "$ac_t""$YODL2MAN" 1>&6
else
echo "$ac_t""no" 1>&6
fi
-for ac_prog in pod2html
+test -n "$YODL2MAN" && break
+done
+test -n "$YODL2MAN" || YODL2MAN="-echo no yodl"
+
+ for ac_prog in yodl2texinfo
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1586: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_POD2HTML'+set}'`\" = set"; then
+echo "configure:2166: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL2TEXINFO'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- if test -n "$POD2HTML"; then
- ac_cv_prog_POD2HTML="$POD2HTML" # Let the user override the test.
+ if test -n "$YODL2TEXINFO"; then
+ ac_cv_prog_YODL2TEXINFO="$YODL2TEXINFO" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- ac_cv_prog_POD2HTML="$ac_prog"
+ ac_cv_prog_YODL2TEXINFO="$ac_prog"
break
fi
done
IFS="$ac_save_ifs"
fi
fi
-POD2HTML="$ac_cv_prog_POD2HTML"
-if test -n "$POD2HTML"; then
- echo "$ac_t""$POD2HTML" 1>&6
+YODL2TEXINFO="$ac_cv_prog_YODL2TEXINFO"
+if test -n "$YODL2TEXINFO"; then
+ echo "$ac_t""$YODL2TEXINFO" 1>&6
else
echo "$ac_t""no" 1>&6
fi
-test -n "$POD2HTML" && break
+test -n "$YODL2TEXINFO" && break
done
-test -n "$POD2HTML" || POD2HTML="error"
+test -n "$YODL2TEXINFO" || YODL2TEXINFO="-echo no yodl"
-for ac_prog in pod2man
+ for ac_prog in yodl2txt
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1620: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_POD2MAN'+set}'`\" = set"; then
+echo "configure:2200: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL2TXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- if test -n "$POD2MAN"; then
- ac_cv_prog_POD2MAN="$POD2MAN" # Let the user override the test.
+ if test -n "$YODL2TXT"; then
+ ac_cv_prog_YODL2TXT="$YODL2TXT" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- ac_cv_prog_POD2MAN="$ac_prog"
+ ac_cv_prog_YODL2TXT="$ac_prog"
break
fi
done
IFS="$ac_save_ifs"
fi
fi
-POD2MAN="$ac_cv_prog_POD2MAN"
-if test -n "$POD2MAN"; then
- echo "$ac_t""$POD2MAN" 1>&6
+YODL2TXT="$ac_cv_prog_YODL2TXT"
+if test -n "$YODL2TXT"; then
+ echo "$ac_t""$YODL2TXT" 1>&6
else
echo "$ac_t""no" 1>&6
fi
-test -n "$POD2MAN" && break
+test -n "$YODL2TXT" && break
done
-test -n "$POD2MAN" || POD2MAN="error"
-
-
-
-if test "x$TEXPREFIX" = xauto ; then
-
-
-
- echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6
-echo "configure:1656: checking TeX/MF root dir directory" >&5
-
- find_root_prefix="$prefix"
-
+test -n "$YODL2TXT" || YODL2TXT="-echo no yodl"
- test "x$find_root_prefix" = xNONE && find_root_prefix="$ac_default_prefix"
- find_texpostfix="";
- for postfix in "/lib/tex/" "/lib/texmf" "/lib" "/tex" "/texmf"; do
- find_texprefix="$find_root_prefix$postfix"
- if test -d $find_texprefix; then
- find_texpostfix=$postfix
- break;
- fi
- done
-
- if test "x$find_texpostfix" = x; then
- find_texpostfix='/lib/texmf/tex'
+ else
- echo "configure: warning: Cannot determine the TeX-directory. Please use --enable-tex-prefix" 1>&2
- warn_b=yes
-
- fi
-
- find_texprefix="$find_root_prefix/$find_texpostfix"
-
- # only assign if variablename not empty
- if test x != "x$TEXPREFIX"; then
- TEXPREFIX='${prefix}'/"$find_texpostfix"
- fi
- echo "$ac_t""$find_texprefix" 1>&6
-
-
-else
- find_texprefix=$TEXPREFIX
-fi
-
-if test "x$MFDIR" = xauto; then
-
-
-
- echo $ac_n "checking MF input directory""... $ac_c" 1>&6
-echo "configure:1697: checking MF input directory" >&5
- find_dirdir=`(cd $find_texprefix;
- $FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')`
-
-
- if test "x$find_dirdir" = x; then
- find_dirdir="/source";
-
- echo "configure: warning: Cannot determine MF input subdirectory. Please set from command-line" 1>&2
- warn_b=yes
-
- true
- fi
- MFDIR=$find_dirdir
- echo "$ac_t""$find_texprefix/$find_dirdir" 1>&6
-
- MFDIR="$TEXPREFIX/$MFDIR"
-
-fi
-
-if test "x$TEXDIR" = xauto ; then
-
-
-
- echo $ac_n "checking TeX input directory""... $ac_c" 1>&6
-echo "configure:1722: checking TeX input directory" >&5
- find_dirdir=`(cd $find_texprefix;
- $FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')`
-
-
- if test "x$find_dirdir" = x; then
- find_dirdir="/tex";
-
- echo "configure: warning: Cannot determine TeX input subdirectory. Please set from command-line" 1>&2
- warn_b=yes
-
- true
+
+
+
+
+
+ export YODL YODL2HTML YODL2LATEX YODL2MAN YODL2TEXINFO YODL2TXT
fi
- TEXDIR=$find_dirdir
- echo "$ac_t""$find_texprefix/$find_dirdir" 1>&6
-
- TEXDIR="$TEXPREFIX/$TEXDIR"
-
-fi
-# AC_JUNK_ARGS( [if test "x$MFDIR" = xauto; then
-# AC_MF_SUBDIR(MFDIR)
-# fi]
-# )
- if test $MAKE = "error"
- then
+ result="`echo \"$FIND\" | grep echo`"
+ if test "x$FIND" = "xerror" -o "x$result" != "x"; then
- echo "configure: warning: can't find GNU make. You should install GNU make" 1>&2
+ echo "configure: warning: can\'t find find. Please use --enable-tex-dir" 1>&2
warn_b=yes
fi
- if test $BISON = "error"
- then
-
- echo "configure: warning: can't find bison. Please install Bison" 1>&2
- warn_b=yes
-
- fi
-
-
- if test $PERL = "error"
- then
-
- echo "configure: warning: can't find perl. You should install Perl" 1>&2
- warn_b=yes
-
- fi
-
-
- if test $PYTHON = "error"
- then
-
- echo "configure: warning: can't find python. You should install Python" 1>&2
- warn_b=yes
-
- fi
-
-
- if test $FLEX = "error"
- then
-
- echo "configure: warning: can't find flex. Please install Flex" 1>&2
- warn_b=yes
+echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
+echo "configure:2252: checking for 8-bit clean memcmp" >&5
+if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_memcmp_clean=no
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2260 "configure"
+#include "confdefs.h"
+#ifdef __cplusplus
+extern "C" void exit(int);
+#endif
- fi
+main()
+{
+ char c0 = 0x40, c1 = 0x80, c2 = 0x81;
+ exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1);
+}
+EOF
+if { (eval echo configure:2273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_func_memcmp_clean=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ac_cv_func_memcmp_clean=no
+fi
+rm -fr conftest*
+fi
- if test $POD2MAN = "error"
- then
-
- echo "configure: warning: can't find pod. You should install Perl" 1>&2
- warn_b=yes
+fi
- fi
+echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
+test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
+echo $ac_n "checking for vprintf""... $ac_c" 1>&6
+echo "configure:2291: checking for vprintf" >&5
+if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2296 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char vprintf(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char vprintf();
+int main() {
-if test $MAKE != "error" ; then
- $MAKE -v| grep GNU > /dev/null
- if test "$?" = 1
- then
-
- echo "configure: warning: Please install *GNU* make" 1>&2
- warn_b=yes
-
- fi
-fi
-
-if test $BISON != "error"; then
- bison_version=`$BISON --version| sed 's/^.*version 1.//g' `
- if test $bison_version -lt 25; then
-
- echo "configure: warning: Your bison is too old (1.$bison_version). Please install 1.25" 1>&2
- warn_b=yes
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_vprintf) || defined (__stub___vprintf)
+choke me
+#else
+vprintf();
+#endif
- fi
+; return 0; }
+EOF
+if { (eval echo configure:2322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ rm -rf conftest*
+ eval "ac_cv_func_vprintf=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_vprintf=no"
fi
-
-if test "$INSTALL" = "bin/install-sh"; then
- export INSTALL="\$\(depth\)/bin/install-sh"
+rm -f conftest*
fi
-# ugh autoconf
-if $CXX --version | grep '2\.[78]' > /dev/null ||
- $CXX --version | grep 'egcs' > /dev/null
-then
- true
-else
-
- echo "configure: warning: can't find g++ 2.7" 1>&2
- warn_b=yes
+if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_VPRINTF 1
+EOF
+else
+ echo "$ac_t""no" 1>&6
fi
-echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:1842: checking how to run the C++ preprocessor" >&5
-if test -z "$CXXCPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
+if test "$ac_cv_func_vprintf" != yes; then
+echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
+echo "configure:2346: checking for _doprnt" >&5
+if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
- CXXCPP="${CXX-g++} -E"
cat > conftest.$ac_ext <<EOF
-#line 1855 "configure"
+#line 2351 "configure"
#include "confdefs.h"
-#include <stdlib.h>
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char _doprnt(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char _doprnt();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub__doprnt) || defined (__stub____doprnt)
+choke me
+#else
+_doprnt();
+#endif
+
+; return 0; }
EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- :
+if { (eval echo configure:2377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ rm -rf conftest*
+ eval "ac_cv_func__doprnt=yes"
else
- echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
- CXXCPP=/lib/cpp
+ eval "ac_cv_func__doprnt=no"
fi
rm -f conftest*
- ac_cv_prog_CXXCPP="$CXXCPP"
fi
+
+if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_DOPRNT 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
fi
-CXXCPP="$ac_cv_prog_CXXCPP"
-echo "$ac_t""$CXXCPP" 1>&6
-ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:1880: checking for FlexLexer.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+for ac_func in memmem snprintf vsnprintf gettext
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:2404: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1885 "configure"
+#line 2409 "configure"
#include "confdefs.h"
-#include <FlexLexer.h>
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1890: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
+if { (eval echo configure:2435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
+ eval "ac_cv_func_$ac_func=yes"
else
- echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
+ eval "ac_cv_func_$ac_func=no"
fi
rm -f conftest*
fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
echo "$ac_t""yes" 1>&6
- true
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
else
echo "$ac_t""no" 1>&6
+fi
+done
+
+
+cat >> confdefs.h <<EOF
+#define TOPLEVEL_VERSION "${FULL_VERSION}"
+EOF
+
+cat >> confdefs.h <<EOF
+#define FLOWER_VERSION "${FULL_FLOWER_VERSION}"
+EOF
- echo "configure: warning: can't find flex header. Please install Flex headers correctly" 1>&2
- warn_b=yes
+for ac_prog in makeinfo
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:2474: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$MAKEINFO"; then
+ ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_MAKEINFO="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
fi
+MAKEINFO="$ac_cv_prog_MAKEINFO"
+if test -n "$MAKEINFO"; then
+ echo "$ac_t""$MAKEINFO" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$MAKEINFO" && break
+done
+test -n "$MAKEINFO" || MAKEINFO="error"
-touch stamp-h.in
+ result="`echo \"$YODL2TEXINFO\" | grep echo`"
+ if test "x$YODL2TEXINFO" = "xerror" -o "x$result" != "x"; then
+
+ echo "configure: warning: can\'t find yodl. You should install Yodl 1.30.pre4 or better" 1>&2
+ warn_b=yes
+
+ fi
-# first do Foobar/Makefile then Foobar/include/Makefile
-trap '' 1 2 15
+ trap '' 1 2 15
cat > confcache <<\EOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
@@ -2016,7 +2609,6 @@ do
done
ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
trap 'rm -fr `echo "$CONFIGFILE.make:config.make.in $CONFIGFILE.hh:config.hh.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
@@ -2048,44 +2640,56 @@ s%@includedir@%$includedir%g
s%@oldincludedir@%$oldincludedir%g
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
+s%@package@%$package%g
+s%@PACKAGE@%$PACKAGE%g
+s%@PACKAGE_NAME@%$PACKAGE_NAME%g
+s%@package_depth@%$package_depth%g
+s%@AUTOGENERATE@%$AUTOGENERATE%g
+s%@absolute_builddir@%$absolute_builddir%g
+s%@stepmake@%$stepmake%g
+s%@CONFIGSUFFIX@%$CONFIGSUFFIX%g
s%@host@%$host%g
s%@host_alias@%$host_alias%g
s%@host_cpu@%$host_cpu%g
s%@host_vendor@%$host_vendor%g
s%@host_os@%$host_os%g
-s%@CURRENT@%$CURRENT%g
-s%@REVISION@%$REVISION%g
-s%@AGE@%$AGE%g
-s%@YACC@%$YACC%g
-s%@CXX@%$CXX%g
-s%@RANLIB@%$RANLIB%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@TAR@%$TAR%g
+s%@MAKE@%$MAKE%g
s%@FIND@%$FIND%g
-s%@LIBOBJS@%$LIBOBJS%g
+s%@TAR@%$TAR%g
+s%@BASH@%$BASH%g
+s%@PYTHON@%$PYTHON%g
+s%@DOTEXE@%$DOTEXE%g
+s%@ZIP@%$ZIP%g
+s%@LN@%$LN%g
+s%@DIR_DATADIR@%$DIR_DATADIR%g
+s%@subdirs@%$subdirs%g
+s%@CC@%$CC%g
+s%@LD@%$LD%g
s%@ICFLAGS@%$ICFLAGS%g
s%@ILDFLAGS@%$ILDFLAGS%g
s%@DEFINES@%$DEFINES%g
-s%@COMPILEINFO@%$COMPILEINFO%g
-s%@AUTOGENERATE@%$AUTOGENERATE%g
+s%@EXTRA_LIBES@%$EXTRA_LIBES%g
+s%@CXX@%$CXX%g
+s%@CXXCPP@%$CXXCPP%g
+s%@YACC@%$YACC%g
s%@BISON@%$BISON%g
s%@FLEX@%$FLEX%g
-s%@LN@%$LN%g
-s%@PERL@%$PERL%g
-s%@PYTHON@%$PYTHON%g
-s%@ZIP@%$ZIP%g
+s%@AR@%$AR%g
+s%@RANLIB@%$RANLIB%g
+s%@localedir@%$localedir%g
+s%@DIR_LOCALEDIR@%$DIR_LOCALEDIR%g
+s%@MSGFMT@%$MSGFMT%g
s%@TEXPREFIX@%$TEXPREFIX%g
s%@TEXDIR@%$TEXDIR%g
s%@MFDIR@%$MFDIR%g
-s%@DIR_DATADIR@%$DIR_DATADIR%g
-s%@absolute_builddir@%$absolute_builddir%g
-s%@EXTRA_LIBES@%$EXTRA_LIBES%g
-s%@CONFIGSUFFIX@%$CONFIGSUFFIX%g
-s%@MAKE@%$MAKE%g
-s%@POD2HTML@%$POD2HTML%g
-s%@POD2MAN@%$POD2MAN%g
-s%@CXXCPP@%$CXXCPP%g
+s%@YODL@%$YODL%g
+s%@YODL2HTML@%$YODL2HTML%g
+s%@YODL2LATEX@%$YODL2LATEX%g
+s%@YODL2MAN@%$YODL2MAN%g
+s%@YODL2TEXINFO@%$YODL2TEXINFO%g
+s%@YODL2TXT@%$YODL2TXT%g
+s%@LIBOBJS@%$LIBOBJS%g
+s%@MAKEINFO@%$MAKEINFO%g
CEOF
EOF
@@ -2162,10 +2766,6 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
top_srcdir="$ac_dots$ac_given_srcdir" ;;
esac
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
echo creating "$ac_file"
rm -f "$ac_file"
@@ -2181,7 +2781,6 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
s%@configure_input@%$configure_input%g
s%@srcdir@%$srcdir%g
s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
fi; done
rm -f conftest.s*
@@ -2305,8 +2904,102 @@ chmod +x $CONFIG_STATUS
rm -fr confdefs* $ac_clean_files
test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+if test "$no_recursion" != yes; then
+
+ # Remove --cache-file and --srcdir arguments so they do not pile up.
+ ac_sub_configure_args=
+ ac_prev=
+ for ac_arg in $ac_configure_args; do
+ if test -n "$ac_prev"; then
+ ac_prev=
+ continue
+ fi
+ case "$ac_arg" in
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ ;;
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ ;;
+ *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
+ esac
+ done
+
+ for ac_config_dir in stepmake; do
+
+ # Do not complain, so a configure script can configure whichever
+ # parts of a large source tree are present.
+ if test ! -d $srcdir/$ac_config_dir; then
+ continue
+ fi
+
+ echo configuring in $ac_config_dir
+
+ case "$srcdir" in
+ .) ;;
+ *)
+ if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :;
+ else
+ { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; }
+ fi
+ ;;
+ esac
+
+ ac_popdir=`pwd`
+ cd $ac_config_dir
+
+ # A "../" for each directory in /$ac_config_dir.
+ ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
+
+ case "$srcdir" in
+ .) # No --srcdir option. We are building in place.
+ ac_sub_srcdir=$srcdir ;;
+ /*) # Absolute path.
+ ac_sub_srcdir=$srcdir/$ac_config_dir ;;
+ *) # Relative path.
+ ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;;
+ esac
+
+ # Check for guested configure; otherwise get Cygnus style configure.
+ if test -f $ac_sub_srcdir/configure; then
+ ac_sub_configure=$ac_sub_srcdir/configure
+ elif test -f $ac_sub_srcdir/configure.in; then
+ ac_sub_configure=$ac_configure
+ else
+ echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2
+ ac_sub_configure=
+ fi
+
+ # The recursion is here.
+ if test -n "$ac_sub_configure"; then
+
+ # Make the cache file name correct relative to the subdirectory.
+ case "$cache_file" in
+ /*) ac_sub_cache_file=$cache_file ;;
+ *) # Relative path.
+ ac_sub_cache_file="$ac_dots$cache_file" ;;
+ esac
+
+ echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir"
+ # The eval makes quoting arguments work.
+ if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir
+ then :
+ else
+ { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; }
+ fi
+ fi
+
+ cd $ac_popdir
+ done
+fi
+
+
+ rm -f Makefile
+ cp make/Toplevel.make.in ./Makefile
+ chmod 444 Makefile
-rm -f Makefile
-cp make/Toplevel.make.in ./Makefile
-chmod 444 Makefile
diff --git a/configure.in b/configure.in
index de0b59611d..c77794dc88 100644
--- a/configure.in
+++ b/configure.in
@@ -1,311 +1,57 @@
-dnl -*-shell-script-*-
-dnl Process this file with autoconf to produce a configure script.
+dnl configure.in -*-shell-script-*-
+dnl Process this file with autoconf to produce a configure script.
+# Bootstrap the init proces. List a file identifies your package.
+AC_INIT(make/lilypond.lsm.in)
+AC_CONFIG_HEADER($CONFIGFILE.hh:config.hh.in)
-AC_INIT(flower/choleski.cc)
-AC_CONFIG_HEADER($CONFIGFILE.hh:config.hh.in) #ugh flower/out/
-AC_CONFIG_AUX_DIR(bin)
-AC_CANONICAL_HOST
+# Bootstrap StepMake configure
+AC_STEPMAKE_INIT
+# For all packages except the StepMake package itself
+AC_CONFIG_SUBDIRS(stepmake)
-. $srcdir/VERSION
-FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
-if test x$MY_PATCH_LEVEL != x; then
- FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL
-fi
-
-
-. $srcdir/flower/VERSION
-FULL_FLOWER_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
-
-# libtool.info ...
-# **Never** try to set library version numbers so that they correspond
-# to the release number of your package. This is an abuse that only
-# fosters misunderstanding of the purpose of library versions.
-
-REVISION=$PATCH_LEVEL
-# CURRENT=$MINOR_VERSION
-CURRENT=`expr $MINOR_VERSION + 1`
-# AGE=$(expr $MAJOR_VERSION + 1)
-AGE=$MAJOR_VERSION
-AC_SUBST(CURRENT)
-AC_SUBST(REVISION)
-AC_SUBST(AGE)
-
-# turn off shared libraries by default (may be enabled using --enable-shared)
-#AM_DISABLE_SHARED
-#AM_PROG_LIBTOOL
-
-# ugh, automake: we want (and check for) bison
-AC_PROG_YACC
-
-# ugh, automake: we want (and check for) flex
-# AC_PROG_LEX
-# urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack...
+# Uncomment the configuration options your package needs.
+AC_STEPMAKE_COMPILE
+# AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h)
-# AC_DECL_YYTEXT
-# ugh, ugh
-ac_cv_prog_lex_root=lex.yy
-
-# -O is necessary to get inlining
-OPTIMIZE="-O"
printing_b=no
-checking_b=yes
-optimise_b=tja
-profile_b=no
-CONFIGSUFFIX=
-debug_b=yes
-
-
-
-AC_LANG_CPLUSPLUS
-
-AC_CACHE_CHECK([whether explicit instantiation is needed],
- lily_cv_need_explicit_instantiation,
- AC_TRY_LINK([
-template <class T> struct foo { static int baz; };
-template <class T> int foo<T>::baz = 1;
-], [ return foo<int>::baz; ],
- lily_cv_need_explicit_instantiation=no,
- lily_cv_need_explicit_instantiation=yes))
-if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then
- AC_DEFINE(NEED_EXPLICIT_INSTANTIATION)
-fi
-
AC_ARG_ENABLE(printing,
[ enable-printing turn on debug printing. Default: off],
[printing_b=$enableval])
-AC_ARG_ENABLE(checking,
- [ enable-checking set runtime checks (assert calls). Default: on],
- [checking_b=$enableval] )
-
-AC_ARG_ENABLE(optimise,
- [ enable-optimise use maximal speed optimisations. Default: off],
- [optimise_b=$enableval])
-
-AC_ARG_ENABLE(profiling,
- [ enable-profiling compile with gprof support. Default: off],
- [profile_b=$enableval])
-
-AC_ARG_ENABLE(debugging,
- [ enable-debugging set debug info. Default: on],
- [debug_b=$enableval])
-
-AC_ARG_ENABLE(mingw-prefix,
- [ enable-mingw-prefix=DIR set the mingw32 directory (standalone windows32 exes)],
- [MINGWPREFIX=$enableval],
- [MINGWPREFIX=no])
-
-AC_ARG_ENABLE(tex-prefix,
- [ enable-tex-prefix=DIR set the tex-directory to find TeX subdirectories. (default: PREFIX)],
- [TEXPREFIX=$enableval],
- [TEXPREFIX=auto] )
-
-AC_ARG_ENABLE(tex-dir,
- [ enable-tex-dir=DIR set the directory to put LilyPond TeX files in. ],
- [TEXDIR=$enableval],
- [TEXDIR=auto] )
-
-AC_ARG_ENABLE(mf-dir,
- [ enable-mf-dir=DIR set the directory to put LilyPond MetaFont files in. ],
- [MFDIR=$enableval],
- [MFDIR=auto])
-
-AC_ARG_ENABLE(config,
- [ enable-config=FILE put configure settings in config-FILE.make],
- [CONFIGSUFFIX=$enableval])
-
-
-if test "$printing_b" = no; then
- # ugh
- AC_DEFINE(NPRINT)
- DEFINES="$DEFINES -DNPRINT"
-fi
-
-if test "$checking_b" = no; then
- # ugh
- AC_DEFINE(NDEBUG)
- DEFINES="$DEFINES -DNDEBUG"
-fi
-
if test "$optimise_b" = yes; then
- DEFINES="$DEFINES -finline-functions -DSTRING_UTILS_INLINED"
- OPTIMIZE="-O2"
+ DEFINES="$DEFINES -DSTRING_UTILS_INLINED"
AC_DEFINE(STRINGS_UTILS_INLINED)
fi
-if test "$optimise_b" = no; then
- OPTIMIZE=""
-fi
-
-if test $profile_b = yes; then
- EXTRA_LIBES="-pg"
- DEFINES="$DEFINES -pg"
-fi
-
-if test $debug_b = yes; then
- DEFINES="$DEFINES -g"
-fi
-
-# however, C++ support in mingw32 v 0.1.4 is still flaky
-if test x$MINGWPREFIX != xno; then
- ICFLAGS="-I$MINGWPREFIX/include"
- ILDFLAGS="-$MINGWPREFIX/lib"
-fi
-
-if test "x$OSTYPE" = "xWindows_NT"; then
- LN=cp # hard link does not work under cygnus-nt (yet?)
- ZIP="zip -r -9" #
-else
- LN=ln
- ZIP="zip -r -9"
-fi
-
-if test "$CONFIGSUFFIX" != "" ; then
- CONFIGFILE=config-$CONFIGSUFFIX
-else
- CONFIGFILE=config
-fi
-
-
-
-dnl COMPILEINFO="$HOST $host $TARGET $target"
-AUTOGENERATE="This file was automatically generated by configure"
-CPPFLAGS=${CPPFLAGS:-""} # we don't want -g -O junk
-# CXXFLAGS=${CXXFLAGS:-""} # we don't want -g -O junk
-CXXFLAGS="$DEFINES $OPTIMIZE"
-LDFLAGS=$EXTRA_LIBES
+AC_STEPMAKE_CXX
+AC_STEPMAKE_GXX
+AC_STEPMAKE_CXXTEMPLATE
+AC_STEPMAKE_LEXYACC
+AC_STEPMAKE_LIB
+# AC_STEPMAKE_LIBTOOL
+AC_STEPMAKE_LOCALE
+AC_STEPMAKE_GETTEXT
+AC_STEPMAKE_MSGFMT
+AC_STEPMAKE_TEXMF
+AC_STEPMAKE_YODL
-AC_PROG_CXX
-AC_PROG_RANLIB
-AC_PROG_INSTALL
-AC_CHECK_PROGS(TAR, tar, error)
-AC_CHECK_PROGS(FIND, find, error)
dnl should check out -print
-AC_CHECK_SEARCH_RESULT($FIND, \`find\'. Please use --enable-tex-dir)
+dnl huh?
+AC_CHECK_SEARCH_RESULT($FIND, find, Please use --enable-tex-dir)
AC_FUNC_MEMCMP
AC_FUNC_VPRINTF
-AC_CHECK_FUNCS(memmem snprintf )
+AC_CHECK_FUNCS(memmem snprintf vsnprintf gettext)
AC_DEFINE_UNQUOTED(TOPLEVEL_VERSION, "${FULL_VERSION}")
AC_DEFINE_UNQUOTED(FLOWER_VERSION, "${FULL_FLOWER_VERSION}")
-# ugh: produces "${prefix}/share/lilypond"
-# DIR_DATADIR=$datadir/lilypond
-# ugh: produces "NONE/share/lilypond"
-# DIR_DATADIR=$prefix/share/lilypond
-
-DIR_DATADIR=$prefix/share/lilypond
-if test x$prefix = xNONE; then
- DIR_DATADIR=/usr/local/share/lilypond
-fi
-AC_DEFINE_UNQUOTED(DIR_DATADIR, "${DIR_DATADIR}")
-
-absolute_builddir="`pwd`"
-
-AC_SUBST(CXXFLAGS)
-AC_SUBST(CPPFLAGS)
-AC_SUBST(LDFLAGS)
-AC_SUBST(CXX)
-AC_SUBST(ICFLAGS)
-AC_SUBST(ILDFLAGS)
-AC_SUBST(DEFINES)
-AC_SUBST(RANLIB)
-AC_SUBST(COMPILEINFO)
-AC_SUBST(AUTOGENERATE)
-AC_SUBST(BISON)
-AC_SUBST(FLEX)
-AC_SUBST(LN)
-AC_SUBST(PERL)
-AC_SUBST(PYTHON)
-AC_SUBST(ZIP)
-AC_SUBST(TEXPREFIX)
-AC_SUBST(TEXDIR)
-AC_SUBST(MFDIR)
-AC_SUBST(DIR_DATADIR)
-AC_SUBST(absolute_builddir)
-AC_SUBST(EXTRA_LIBES)
-AC_SUBST(CONFIGSUFFIX)
-AC_CHECK_PROGS(BISON, bison, error)
-AC_CHECK_PROGS(FLEX, flex, error)
-AC_CHECK_PROGS(MAKE, make, error)
-AC_PATH_PROG(PERL, perl, error)
-AC_PATH_PROG(PYTHON, python, error)
-AC_CHECK_PROGS(POD2HTML, pod2html, error)
-AC_CHECK_PROGS(POD2MAN, pod2man, error)
-
-
-if test "x$TEXPREFIX" = xauto ; then
- AC_TEX_PREFIX(TEXPREFIX)
-else
- find_texprefix=$TEXPREFIX
-fi
-
-if test "x$MFDIR" = xauto; then
- AC_MF_SUBDIR(MFDIR)
-fi
-
-if test "x$TEXDIR" = xauto ; then
- AC_TEX_SUBDIR(TEXDIR)
-fi
-
-
-# AC_JUNK_ARGS( [if test "x$MFDIR" = xauto; then
-# AC_MF_SUBDIR(MFDIR)
-# fi]
-# )
-
-AC_CHECK_SEARCH_RESULT($MAKE, GNU make, You should install GNU make)
-AC_CHECK_SEARCH_RESULT($BISON, bison, Please install Bison, 1.25 or better)
-AC_CHECK_SEARCH_RESULT($PERL, perl, You should install Perl, version 5 or better)
-AC_CHECK_SEARCH_RESULT($PYTHON, python, You should install Python)
-AC_CHECK_SEARCH_RESULT($FLEX, flex, Please install Flex, 2.5 or better)
-AC_CHECK_SEARCH_RESULT($POD2MAN, pod, You should install Perl, version 5 or better)
-
-
-if test $MAKE != "error" ; then
- $MAKE -v| grep GNU > /dev/null
- if test "$?" = 1
- then
- AC_LILY_WARN(Please install *GNU* make)
- fi
-fi
-
-if test $BISON != "error"; then
- bison_version=`$BISON --version| sed 's/^.*version 1.//g' `
- if test $bison_version -lt 25; then
- AC_LILY_WARN(Your bison is too old (1.$bison_version). Please install 1.25)
- fi
-fi
-
-if test "$INSTALL" = "bin/install-sh"; then
- export INSTALL="\$\(depth\)/bin/install-sh"
-fi
-
-# ugh autoconf
-changequote(<<, >>)dnl
-if $CXX --version | grep '2\.[78]' > /dev/null ||
- $CXX --version | grep 'egcs' > /dev/null
-changequote([, ])dnl
-then
- true
-else
- AC_LILY_WARN(can't find g++ 2.7, 2.8 or egcs)
-fi
-
-AC_CHECK_HEADER(FlexLexer.h, true,
- AC_LILY_WARN(can't find flex header. Please install Flex headers correctly))
-
-touch stamp-h.in
-
-
-# first do Foobar/Makefile then Foobar/include/Makefile
-AC_OUTPUT($CONFIGFILE.make:config.make.in)
+AC_CHECK_PROGS(MAKEINFO, makeinfo, error)
+AC_CHECK_SEARCH_RESULT($YODL2TEXINFO, yodl,
+ You should install Yodl 1.30.pre4 or better)
-rm -f Makefile
-cp make/Toplevel.make.in ./Makefile
-chmod 444 Makefile
+AC_STEPMAKE_END
diff --git a/debian/Makefile b/debian/Makefile
index 531f1330c4..4c736d9bb6 100644
--- a/debian/Makefile
+++ b/debian/Makefile
@@ -1,19 +1,32 @@
+# debian/Makefile
+
depth = ..
NAME= debian
-# generic variables:
-#
-include ./$(depth)/make/Variables.make
-include ./$(depth)/make/Files.make
-#
+include $(depth)/make/Stepmake.make
+
+CONF_FILES=changelog copyright postinst postrm rules watch
+OUTCONF_FILES=$(addprefix $(outdir)/, $(basename $(CONF_FILES))) $(OUTIN_FILES)
+OUT_DIST_FILES = $(OUTIN_FILES)
+
+default: $(OUTCONF_FILES)
+
+BLURBS=BLURB
+AT_FILES = $(BLURBS) #
+at-dir = $(outdir)/
+at-ext =
+
+EXTRA_DIST_FILES = README.Debian TODO $(CONF_FILES) $(OUT_DIST_FILES) control.foka
+
+$(outdir)/%: %
+ rm -f $@
+ ln $< $@
-# generic targets and rules:
-#
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-#
+$(outdir)/control: $(addprefix $(outdir)/, $(BLURBS))
+$(outdir)/%: $(doc-dir)/%.in
+ rm -f $@
+ cat $< | sed 's%^% %' > $@
-EXTRA_DISTFILES = README.Debian TODO changelog control copyright \
- postinst postinst.old.sh postrm preinst rules watch
+localdist: default
diff --git a/debian/README.Debian b/debian/README.Debian
index ba5d98e908..320703b028 100644
--- a/debian/README.Debian
+++ b/debian/README.Debian
@@ -1,22 +1,40 @@
-lilypond for DEBIAN
+lilypond for Debian
-------------------
-Starting with version 0.1.12, LilyPond comes with some new MF fonts.
-These fonts are not currently listed in /usr/lib/texmf/fontname/special.map
-(from the teTeX package), therefore the fonts will be created in a
-non-standard directory somewhere under /var/spool/texmf. The problem is
-usually only aesthetic. TeTeX can create and find the *.tfm and *.pk files
-without any problems.
-
-However, if you experience any font problems (such as the note heads
-not showing up, characters in the wrong places, error messages from
-TeX), especially after upgrading to a new version of LilyPond, you may
-need to delete the relevant *.tfm and *.pk files under the directory
-/var/spool/texmf. You may also file a bug report about this if you
-like.
-
-LilyPond is still in active development, and many things may still change.
-When it is stablized in the future, these new fonts will probably be
-added into the standard special.map file.
-
-Anthony Fok <foka@debian.org>, Thu, 23 Oct 1997 16:59:32 -0600
+Dear music lover:
+
+ Welcome to the wonderful world of music typesetting! ^_^
+ This is the Debian package of GNU LilyPond.
+ Hope you enjoy producing beautiful music scores with GNU LilyPond
+ and other related packages! ^_^
+
+
+Old LilyPond Fonts Issue:
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ If you installed the lilypond_0.1.48-1 or previous versions of the
+ Debian GNU LilyPond package, please note the following:
+
+ LilyPond comes with its own MF fonts starting with version 0.1.12.
+
+ The old lilypond fonts were not listed in
+ /usr/lib/texmf/fontname/special.map (from the teTeX 0.4 package),
+ therefore the fonts were created in a non-standard directory
+ somewhere under /var/spool/texmf. The problem was usually only
+ aesthetic. TeTeX could create and find the *.tfm and *.pk files
+ without any problems.
+
+ However, if you experience any font problems (such as the note
+ heads not showing up, characters in the wrong places, error
+ messages from TeX), especially after upgrading to a new version of
+ LilyPond, you may need to delete the relevant *.tfm and *.pk files
+ under the directory /var/spool/texmf. You may also file a bug
+ report about this if you like.
+
+ Nonetheless, GNU LilyPond now comes with the standard "feta" fonts,
+ and they are already listed in the latest teTeX 0.9 / Web2C 7.2
+ /usr/lib/texmf/fontname/special.map file, so there shouldn't be any
+ more problems! Enjoy! :-)
+
+
+Anthony Fok <foka@debian.org>, Wed, 22 Apr 1998 03:37:00 -0600
diff --git a/debian/TODO b/debian/TODO
index 8a5f21bd28..25818fbb82 100644
--- a/debian/TODO
+++ b/debian/TODO
@@ -2,3 +2,6 @@ Fri, 6 Feb 1998 17:24:49 -0700:
* Compile mudela-mode.el into mudela-mode.elc
* Install /etc/emacs/site-start.d/50lilypond.el
* Figure out how to make mudela-mode work on my computer. :-)
+
+Sun, 26 Apr 1998 21:11:32 -0600:
+ * Remove preinst from upstream source
diff --git a/debian/changelog b/debian/changelog
index 0f86127f06..c56fe5d3d1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,51 @@
+lilypond (0.1.76-1) unstable; urgency=low
+
+ * support for 'make deb' target
+
+ -- Jan Nieuwenhuizen <janneke@gnu.org> Fri, 3 Jul 1998 17:53:37 +0200
+
+lilypond (0.1.71-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Anthony Fok <foka@debian.org> Sat, 6 Jun 1998 00:00:00 -0600
+
+lilypond (0.1.66-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Anthony Fok <foka@debian.org> Wed, 20 May 1998 06:50:12 -0600
+
+lilypond (0.1.61-1) frozen unstable; urgency=low
+
+ * New upstream release with tons of bug fixes.
+ Please put this in Hamm.
+ * Revised debian/rules w.r.t. make/lilypond.spec.in.
+
+ -- Anthony Fok <foka@debian.org> Mon, 4 May 1998 03:36:06 -0600
+
+lilypond (0.1.60-1) frozen unstable; urgency=medium
+
+ * New upstream release with lots of bug fixes, including the MIDI
+ generation bug in 0.1.48. Please put this in Hamm.
+ * debian/rules:
+ - Upgraded to standards version 2.4.1.0 (no changes).
+ - lilypond now also depends on tetex-base (>= 0.9-5)
+ and conflicts with tetex-base (<< 0.9).
+ * Modified postinst and postrm to work with teTeX 0.9 / Web2C 7.2:
+ - Removed all the *ugly* kludges and functions that were supposed to
+ deal with non-Debian teTeX installations. Those kludges were
+ specifically made for teTeX 0.4, but they failed to work as intended
+ due to the changes in teTeX 0.9.
+ - No longer messes with special.map because the standard
+ Web2C 7.2 special.map already lists the feta fonts.
+ - Since postinst is so much simpler, it is now a sh script! :-)
+ * Removed preinst which contained yet another obsolete kludge to clean
+ obsolete/ancient lilypond fonts.
+ * Updated the GNU LilyPond Home Page URIs.
+
+ -- Anthony Fok <foka@debian.org> Fri, 1 May 1998 01:14:49 -0600
+
lilypond (0.1.48-1) unstable; urgency=low
* New upstream release.
diff --git a/debian/control b/debian/control
index a99665244f..08a7805a9e 100644
--- a/debian/control
+++ b/debian/control
@@ -2,21 +2,21 @@ Source: lilypond
Section: tex
Priority: optional
Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 2.4.0.0
+Standards-Version: 2.4.1.0
Package: lilypond
Architecture: any
-Depends: ${shlibs:Depends}
-Recommends: tetex-base
-Conflicts: musixtex-fonts
-Description: The GNU Project music typesetter.
- LilyPond is the GNU Project music typesetter. The program generates
- visual or auditive output from a music definition file: it can typeset
- formatted sheet music to a TeX file and play (mechanical) performances
- to a MIDI file. Features include multiple staffs, meters, clefs,
- keys, lyrics, versatile input-language, cadenzas, beams, slurs,
- triplets. It includes a nice font of musical symbols.
+Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5)
+Conflicts: musixtex-fonts, tetex-base (<< 0.9)
+Description: The GNU Project music typesetter.
+ LilyPond is the GNU Project music typesetter. This program can print
+ beautiful sheet music from a music definition file. It can also play
+ mechanical performances to a MIDI file. Features include multiple
+ staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,
+ beams, slurs, triplets, formatting scores, part extraction. It includes
+ a nice font of musical symbols.
.
- URL: http://www.stack.nl/~hanwen/lilypond/
- Authors: Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ URL: http://www.cs.ruu.nl/people/hanwen/lilypond
+ http://sca.uwaterloo.ca/~praetzel/lilypond/
+ Authors: Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
diff --git a/debian/control.foka b/debian/control.foka
new file mode 100644
index 0000000000..2f98fdf549
--- /dev/null
+++ b/debian/control.foka
@@ -0,0 +1,30 @@
+Source: lilypond
+Section: tex
+Priority: optional
+Maintainer: Anthony Fok <foka@debian.org>
+Standards-Version: 2.4.1.0
+
+Package: lilypond
+Architecture: any
+Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5)
+Conflicts: musixtex-fonts, tetex-base (<< 0.9)
+Description: The GNU Project music typesetter.
+ LilyPond is the GNU Project music typesetter. This program can print
+ beautiful sheet music from a music definition file. It can also play
+ mechanical performances to a MIDI file. Features include multiple
+ staffs, meters, clefs, keys, lyrics, versatile input language,
+ cadenzas, beams, slurs, triplets, formatting scores, part extraction.
+ It includes a nice font of musical symbols.
+ .
+ LilyPond is de muziek typesetter van het GNU Project.
+ Het programma genereert prachtige bladmuziek uit een muziek definitie
+ bestand. Ook kan het (mechanische) uitvoeringen afspelen naar MIDI
+ bestanden. Bijzondere mogelijkheden omvatten verscheidene notenbalken,
+ maatsoorten, sleutels, toonsoorten, zangteksten, krachtige invoer taal,
+ cadensa, balken, boogjes, triolen, partituren, en losse partijen. Een
+ fraai font met muzikeksymbolen wordt meegeleverd.
+ .
+ URL: http://www.cs.ruu.nl/people/hanwen/lilypond/
+ http://sca.uwaterloo.ca/~praetzel/lilypond/
+ Authors: Han-Wen Nienhuys <hanwen@stack.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
diff --git a/debian/control.in b/debian/control.in
new file mode 100644
index 0000000000..c78565b29b
--- /dev/null
+++ b/debian/control.in
@@ -0,0 +1,16 @@
+Source: lilypond
+Section: tex
+Priority: optional
+Maintainer: Anthony Fok <foka@debian.org>
+Standards-Version: 2.4.1.0
+
+Package: lilypond
+Architecture: any
+Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5)
+Conflicts: musixtex-fonts, tetex-base (<< 0.9)
+Description: The GNU Project music typesetter. @BLURB@
+ .
+ URL: http://www.cs.ruu.nl/people/hanwen/lilypond
+ http://sca.uwaterloo.ca/~praetzel/lilypond/
+ Authors: Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
diff --git a/debian/copyright b/debian/copyright
index 9223c27f8c..cf496990ff 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -2,18 +2,19 @@ This package was debianized by Anthony Fok <foka@debian.org> on
Wed, 6 Aug 1997 04:30:28 -0600
It was downloaded from
- ftp://pcnov095.win.tue.nl/pub/lilypond/development/
- lilypond-0.1.48.tar.gz
+ ftp://pcnov095.win.tue.nl/pub/lilypond/development/
+ lilypond-0.1.71.tar.gz
It is also available from:
- ftp://alpha.gnu.org/gnu/
+ ftp://sca.uwaterloo.ca/pub/lilypond/development/
For more information about GNU LilyPond, please visit:
- http://www.stack.nl/~hanwen/lilypond/ for more information.
+ http://www.cs.ruu.nl/people/hanwen/lilypond/
+ or http://sca.uwaterloo.ca/~praetzel/lilypond/
Authors:
- Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ Han-Wen Nienhuys <hanwen@stack.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
Copyright:
@@ -34,6 +35,13 @@ Copyright:
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *** NOTE
+
+ This license applies to all files except the included example
+ input files (which are in the subdirectory input/ and mutopia/ )
+
+ *** END NOTE
+
All the other scripts and control files for building and installing
GNU LilyPond under Debian GNU/Linux are also under the GNU General
diff --git a/debian/out/control b/debian/out/control
new file mode 100644
index 0000000000..08a7805a9e
--- /dev/null
+++ b/debian/out/control
@@ -0,0 +1,22 @@
+Source: lilypond
+Section: tex
+Priority: optional
+Maintainer: Anthony Fok <foka@debian.org>
+Standards-Version: 2.4.1.0
+
+Package: lilypond
+Architecture: any
+Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5)
+Conflicts: musixtex-fonts, tetex-base (<< 0.9)
+Description: The GNU Project music typesetter.
+ LilyPond is the GNU Project music typesetter. This program can print
+ beautiful sheet music from a music definition file. It can also play
+ mechanical performances to a MIDI file. Features include multiple
+ staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,
+ beams, slurs, triplets, formatting scores, part extraction. It includes
+ a nice font of musical symbols.
+ .
+ URL: http://www.cs.ruu.nl/people/hanwen/lilypond
+ http://sca.uwaterloo.ca/~praetzel/lilypond/
+ Authors: Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
diff --git a/debian/out/dummy.dep b/debian/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/debian/out/dummy.dep
+++ /dev/null
diff --git a/debian/postinst b/debian/postinst
index ddcc40e520..e7f9906b71 100644..100755
--- a/debian/postinst
+++ b/debian/postinst
@@ -1,244 +1,26 @@
-#!/usr/bin/perl -w
+#!/bin/sh
#
# postinst script for the Debian GNU/Linux lilypond package
#
# by Anthony Fok <foka@debian.org>
# Initial release: Sun, 26 Oct 1997 03:23:00 -0700
-# Last modified: Mon, 5 Jan 1998 18:36:51 -0700
+# Last modified: Wed, 22 Apr 1998 03:14:10 -0600
-use strict;
-use File::Copy;
+set -e
-my ($package, $pkg_name, $font_supplier, $font_typeface, $std_TEXMF, $TEXMF,
- $TEXINPUTS, $MFINPUTS, $TFMFONTS, @fonts);
+package=lilypond # This is used for filenames! Don't change it!
+pkg_name="GNU LilyPond"
-sub correct_opus_fonts ($$);
-sub check_texmfcnf ();
-sub run_texhash ();
-sub add_fonts ($$$$@);
-sub check_specialmap ();
+std_TEXMFMAIN=/usr/lib/texmf # Debian's standard $TEXMFMAIN
-$| = 1;
+TEXMFMAIN=`/usr/bin/kpsewhich -expand-var '$TEXMFMAIN'`
+: ${TEXMFMAIN:=$std_TEXMFMAIN}
+echo " Running /usr/bin/mktexlsr ..."
+/usr/bin/mktexlsr
-#######################
-# Variables
-#######################
-
-$package = "lilypond"; # This is used for filenames! Don't change it!
-$pkg_name = "GNU LilyPond";
-
-$font_supplier = "public";
-$font_typeface = "lilypond";
-@fonts = qw( feta );
-
-$std_TEXMF = "/usr/lib/texmf"; # Debian's standard $TEXMF
-$TEXINPUTS = "$std_TEXMF/tex/$package//";
-$MFINPUTS = "$std_TEXMF/fonts/source/$font_supplier/$font_typeface//";
-$TFMFONTS = "$std_TEXMF/fonts/tfm/$font_supplier/$font_typeface//";
-
-
-#######################
-# Subroutine
-#######################
-
-#----- Fix Opus font entries in special.map (called by check_specialmap()) ---
-# I goofed up the Opus font entries in special.map, hence this fix.
-# Note: This is a temporary fix. Consider removing this in 1998. ^_^
-
-sub correct_opus_fonts ($$) {
- my $specialmap = $_[1];
- my $supplier = "opustex";
- my $typeface = "opus";
- my @opusfonts = qw( opus opusline opusnum opussps osl );
- my $font = "";
- my $entries = "";
-
- if ($_[0] =~ /(^\w+\s+public\s+$typeface\n)+/m) {
- print " Correcting old font entries ...";
- foreach $font (@opusfonts) {
- if (length($font) < 8) { $font .= "\t"; }
- $entries .= "$font\t$supplier\t\t$typeface\n";
- }
-
- ($_[0] =~ s/(^\w+\s+public\s+$typeface\n)+/$entries/m)
- or die " Can't correct font entries in $specialmap: $!";
-
- system(": \${MAKETEXDIR=$TEXMF/maketex}; " .
- "test -r \$MAKETEXDIR/maketex.site && . \$MAKETEXDIR/maketex.site; " .
- ": \${MT_DESTROOT=$TEXMF/fonts}; " .
- "rm -rf \$MT_DESTROOT/pk/*/public/$typeface");
-
- print "\n";
- return 1;
- } else {
- return 0;
- }
-}
-
-#-------------------- Check/Modify texmf.cnf for custom teTeX installation ---
-# Edit texmf.cnf to add search path /usr/lib/texmf
-# for non-Debian teTeX installation
-
-sub check_texmfcnf () {
- my $texmfcnf;
-
- print "\n You have a custom teTeX installation in $TEXMF.\n";
-
- chop($texmfcnf = `kpsewhich cnf texmf.cnf`);
-
- if ($? == 0 and $texmfcnf ne "") {
- my($filebuf, $line);
- my $new = "$texmfcnf.new";
- my $bak = "$texmfcnf.bak";
-
- open(OLD, "< $texmfcnf") or die " Can't open $texmfcnf for reading: $!";
-
- undef $/;
- if ($filebuf = <OLD>) {
- if ($filebuf =~ /^(TEXMFL.*)$/m) {
- $line = $1;
- if ($line =~ /TEXMFL\s*=.*$std_TEXMF/) {
- print " Found $std_TEXMF in \$TEXMFL. Leaving $texmfcnf untouched.\n";
- } else {
- print " Adding $std_TEXMF to \$TEXMFL, updating $texmfcnf ...";
-
- $filebuf =~ s/^(TEXMFL\s*=\s*\S*)/$1,$std_TEXMF/m;
- open(NEW, "> $new") or die "\n Can't open $new for writing: $!";
- (print NEW $filebuf) or die "\n Can't write to $new: $!";
- close(NEW);
- copy($texmfcnf, $bak) or die "\n Can't backup $texmfcnf: $!";
- rename($new, $texmfcnf)
- or ( copy($new, $texmfcnf), unlink($new) )
- or die "\n Can't update $texmfcnf: $!";
- print " done.\n";
- }
- }
- } else {
- warn " **\n";
- warn " ** Can't read from $texmfcnf: $!\n";
- warn " ** Please verify the content of $texmfcnf!\n";
- warn " **\n";
- }
- $/ = "\n";
- close(OLD);
- } else {
- warn " **\n";
- warn " ** Can't find texmf.cnf!\n";
- warn " ** Please add $std_TEXMF to \$TEXMFL in your texmf.cnf.\n";
- warn " **\n";
- }
-}
-
-#------------------------------------------------------------- Run texhash ---
-
-sub run_texhash () {
- print " Running texhash to update $TEXMF/ls-R ...\n";
-
- if ( `which texhash` and -e "$TEXMF/ls-R" ) {
- system("texhash");
- } else {
- warn " Error: texhash or $TEXMF/ls-R not found!\n";
- }
- print "\n";
-}
-
-#---------- Add font entries to special.map (called by check_specialmap()) ---
-
-sub add_fonts ($$$$@) {
- my ($specialmap, $supplier, $typeface, $fonts) = @_[1..4];
- my $font = "";
- my $entries = "";
- foreach $font (@fonts) {
- if (length($font) < 8) { $font .= "\t"; }
- $entries .= "$font\t$supplier\t\t$typeface\n";
- }
-
- $_[0] =~ /((^\w+\s+$supplier\s+$typeface\n)+)/m;
-
- if ($1 ne $entries) {
- ($_[0] =~ s/(^\w+\s+$supplier\s+$typeface\n)+/$entries/m)
- or ($_[0] =~ s/(?=^beam\s+public\s+music\n)/$entries/m)
- or die " Can't add font entries to $specialmap: $!";
- return 1;
- } else {
- return 0;
- }
-}
-
-#---------------------------------- Check special.map and add font entries ---
-
-sub check_specialmap () {
- my $fontmap;
- my $specialmap = "$TEXMF/fontname/special.map";
- my $new = "$specialmap.new";
- my $bak = "$specialmap.bak";
-
- print " Checking font entries in $specialmap ...\n";
-
- open(OLD, "< $specialmap") or die " Can't open $specialmap for reading: $!";
- undef $/;
- if ($fontmap = <OLD>) {
- if (correct_opus_fonts($fontmap, $specialmap) |
- add_fonts($fontmap, $specialmap, $font_supplier, $font_typeface, @fonts))
- {
- print " Adding $pkg_name font entries to $specialmap ...\n";
- open(NEW, "> $new") or die " Can't open $new for writing: $!";
- (print NEW $fontmap) or die " Can't write to $new: $!";
- close(NEW);
- copy($specialmap, $bak) or die " Can't backup $specialmap: $!";
- rename($new, $specialmap)
- or ( copy($new, $specialmap), unlink($new) )
- or die " Can't update $specialmap: $!";
- } else {
- print " Entries okay. Leaving $specialmap untouched.\n";
- }
- undef $fontmap;
- } else {
- warn " **\n";
- warn " ** Can't read from $specialmap: $!\n";
- warn " ** Please verify the content of $specialmap!\n";
- warn " **\n";
- }
- $/ = "\n";
- close(OLD);
- print "\n";
-}
-
-
-
-#######################
-# Main program
-#######################
-
-print " Checking teTeX directory \$TEXMF ...";
-
-chop($TEXMF = `kpsetool -v '\$TEXMF'`);
-
-if ($? == 0 and $TEXMF ne "") {
- print " okay.";
-} else {
- warn "\n Error: kpsetool not found or \$TEXMF not set!\n";
- warn " Assuming \$TEXMF=$std_TEXMF\n";
- $TEXMF = $std_TEXMF;
- if (not -d $TEXMF) {
- warn " ... but directory '$TEXMF' does not exist either!\n";
- die " Please check your teTeX configuration.\n"
- }
-}
-
-if ($TEXMF ne $std_TEXMF) {
- check_texmfcnf();
-}
-
-print "\n";
-
-run_texhash();
-check_specialmap();
-
-print " $pkg_name configuration completed.\n";
-print " Please read /usr/doc/$package/README.Debian to get started.\n";
-
-print << `EOF`
#DEBHELPER#
-EOF
+
+echo
+echo " $pkg_name configuration completed."
+echo " Please read /usr/doc/$package/README.Debian to get started."
diff --git a/debian/postinst.old.sh b/debian/postinst.old.sh
deleted file mode 100644
index 55188f11a9..0000000000
--- a/debian/postinst.old.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -e
-#
-# postinst script for the Debian GNU/Linux lilypond package
-# by Anthony Fok <foka@debian.org>
-# This is free software; see the GNU General Public Licence
-# version 2 or later for copying conditions. There is NO warranty.
-# Last modified: Wed, 6 Aug 1997 13:42:45 -0600
-
-std_TEXMF=/usr/lib/texmf
-
-if [ "`which kpsetool`" ]; then
- TEXMF=`kpsetool -v '$TEXMF'`
-fi
-: ${TEXMF:=$std_TEXMF}
-
-if [ "$TEXMF" = "$std_TEXMF" -a "`which texhash`" -a -e $TEXMF/ls-R ]; then
- texhash
-fi
diff --git a/debian/postrm b/debian/postrm
index e3d606b1e6..e0dd95cfbc 100644..100755
--- a/debian/postrm
+++ b/debian/postrm
@@ -4,52 +4,46 @@
# by Anthony Fok <foka@debian.org>
# This is free software; see the GNU General Public Licence
# version 2 or later for copying conditions. There is NO warranty.
-# Last modified: Mon, 5 Jan 1998 18:38:11 -0700
+# Last modified: Wed, 22 Apr 1998 05:55:58 -0600
set -e
package=lilypond
font_supplier=public
font_typeface=lilypond
-std_TEXMF=/usr/lib/texmf
+std_TEXMFMAIN=/usr/lib/texmf
+std_VARTEXFONTS=/var/spool/texmf
#DEBHELPER#
-if [ "`which kpsetool`" ]; then
- TEXMF=`kpsetool -v '$TEXMF'`
-fi
-: ${TEXMF:=$std_TEXMF}
-
+TEXMFMAIN=`/usr/bin/kpsewhich -expand-var '$TEXMFMAIN'`
+: ${TEXMFMAIN:=$std_TEXMFMAIN}
+VARTEXFONTS=`/usr/bin/kpsewhich -expand-var '$VARTEXFONTS'`
+: ${VARTEXFONTS=$std_VARTEXFONTS}
case "$1" in
remove)
- if [ "`kpsetool -w tex lilyponddefs.tex 2>/dev/null`" -a "`which texhash`" ]; then
- texhash
- fi
+ /usr/bin/mktexlsr
;;
upgrade)
# Clear out the old TFM and PK files in case the fonts were modified
- : ${MAKETEXDIR=$TEXMF/maketex}
- test -r $MAKETEXDIR/maketex.site && . $MAKETEXDIR/maketex.site
- : ${MT_DESTROOT=$TEXMF/fonts}
- rm -rf $MT_DESTROOT/tfm/$font_supplier/$font_typeface
- rm -rf $MT_DESTROOT/pk/*/$font_supplier/$font_typeface
+ rm -rf $VARTEXFONTS/tfm/$font_supplier/$font_typeface
+ rm -rf $VARTEXFONTS/pk/*/$font_supplier/$font_typeface
;;
purge)
- : ${MAKETEXDIR=$TEXMF/maketex}
- test -r $MAKETEXDIR/maketex.site && . $MAKETEXDIR/maketex.site
- : ${MT_DESTROOT=$TEXMF/fonts}
- rm -rf $MT_DESTROOT/tfm/$font_supplier/$font_typeface
- rm -rf $MT_DESTROOT/pk/*/$font_supplier/$font_typeface
+ # Clear out the old TFM and PK files in case the fonts were modified
+ rm -rf $VARTEXFONTS/tfm/$font_supplier/$font_typeface
+ rm -rf $VARTEXFONTS/pk/*/$font_supplier/$font_typeface
+ /usr/bin/mktexlsr
;;
failed-upgrade|abort-install|abort-upgrade|disappear)
;;
*)
- echo "postrm called with unknown argument \`$1'" >&2
- exit 0
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 0
;;
esac
diff --git a/debian/preinst b/debian/preinst
deleted file mode 100644
index fff81f284c..0000000000
--- a/debian/preinst
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/sh
-#
-# preinst script for the Debian GNU/Linux lilypond package
-# by Anthony Fok <foka@debian.org>
-# This is free software; see the GNU General Public Licence
-# version 2 or later for copying conditions. There is NO warranty.
-# Last modified: Mon, 5 Jan 1998 18:39:30 -0700
-
-set -e
-
-package=lilypond
-font_supplier=public
-font_typeface=lilypond
-std_TEXMF=/usr/lib/texmf
-
-#DEBHELPER#
-
-if [ "`which kpsetool`" ]; then
- TEXMF=`kpsetool -v '$TEXMF'`
-fi
-: ${TEXMF:=$std_TEXMF}
-
-
-case "$1" in
-
- install | upgrade)
-
- # Prior to the Debian release of the lilypond_0.1.29-1 package,
- # LilyPond's fonts were not added to teTeX's special.map,
- # and so the automatically generated TFM and PK files were placed
- # in the wrong directory under /var/spool/texmf (or $MT_DESTROOT).
- # So, now I have to clean up after my mess to make sure those fonts
- # do not interfere with the new fonts! :)
-
- : ${MAKETEXDIR=$TEXMF/maketex}
- test -r $MAKETEXDIR/maketex.site && . $MAKETEXDIR/maketex.site
- : ${MT_DESTROOT=$TEXMF/fonts}
-
- # Remove the "stray" old LilyPond TFM and PK files.
- for i in tfm pk
- do
- find $MT_DESTROOT/$i \( -name 'dyn10.*'$i -o -name 'font-en-tja*.*'$i \
- -o -name 'vette-beams*.*'$i \) -print0 |
- xargs --null --no-run-if-empty rm -f
- done
-
- # Remove empty directories.
- # A note to myself or the future maintainer:
- # Why the "for i in 1 2" loop? Well, it seems that either
- # "find some_path -depth" isn't working properly, or I
- # (Anthony) don't know its proper behaviour. Please look
- # into it and see if this ugly hack could be removed.
- for i in 1 2
- do
- find $MT_DESTROOT/tfm -depth -mindepth 1 -type d -empty -print0 2> /dev/null |
- xargs -0r --null --no-run-if-empty rmdir
- find $MT_DESTROOT/pk -depth -mindepth 2 -type d -empty -print0 2> /dev/null |
- xargs -0r --null --no-run-if-empty rmdir
- done
- ;;
-
- abort-upgrade)
- ;;
-
- *)
- echo "$0 called with unknown argument \`$1'" >&2
- exit 0
- ;;
-
-esac
diff --git a/debian/rules b/debian/rules
index c0a20793c3..fb123fcfa9 100644..100755
--- a/debian/rules
+++ b/debian/rules
@@ -18,10 +18,12 @@ SHELL = /bin/bash
build: build-stamp
build-stamp:
dh_testdir
+
./configure --disable-checking --disable-debugging \
--enable-printing --prefix=/usr --enable-optimise \
--enable-shared
$(MAKE) all
+
touch build-stamp
clean:
@@ -29,6 +31,12 @@ clean:
dh_testroot
rm -f build-stamp
-$(MAKE) distclean
+ -$(MAKE) local-distclean
+
+ # Remove the following line once the *.make files are fixed
+ rm -f bin/*.pyc
+ rm -f debian/preinst
+
dh_clean
# Build architecture-independent files here.
@@ -38,23 +46,29 @@ binary-indep: build
binary-arch: build
dh_testdir
dh_testroot
- dh_installdirs usr/lib/texmf/doc usr/lib/emacs/site-lisp
+ dh_clean -k
+
+ dh_installdirs usr/lib/texmf/doc \
+ usr/lib/emacs/site-lisp \
+ usr/doc/$(package)/examples
ln -fs ../../../doc/lilypond debian/tmp/usr/lib/texmf/doc/lilypond
$(MAKE) prefix=`pwd`/debian/tmp/usr install
cp -av mudela-mode.el debian/tmp/usr/lib/emacs/site-lisp
- dh_installdocs ANNOUNCE ANNOUNCE-0.1 README NEWS ONEWS DEDICATION \
+ dh_installdocs ANNOUNCEMENT ANNOUNCE-0.1 README.txt NEWS ONEWS DEDICATION \
BUGS TODO \
- Documentation/*.{doc,xpm} Documentation/out/*.txt
-# Documentation/*.doc Documentation/out/*.{txt,gif}
- dh_installexamples input/{*.ly,TODO}
- cp -aPv `find mutopia \( -name '*.ly' -o -name '*.tex' -o -name 'TODO' \)` \
+ Documentation/pictures/*.xpm \
+ Documentation/out/*.txt \
+ Documentation/tex/*.doc \
+ Documentation/tex/*.bib
+# dh_installexamples input
+ cp -aP `find input mutopia \( -name '*.ly' -o -name '*.tex' -o -name 'TODO' \)` \
debian/tmp/usr/doc/lilypond/examples
# dh_installmenu
# dh_installcron
# dh_installmanpages
# dh_undocumented
dh_installchangelogs
- dh_strip
+# dh_strip
dh_compress
dh_fixperms
dh_suidregister
@@ -62,7 +76,6 @@ binary-arch: build
dh_shlibdeps
dh_gencontrol
# dh_makeshlibs
- dh_du
dh_md5sums
dh_builddeb
diff --git a/.dstreamrc b/dstreamrc
index 253955b01d..d8e7b6a65b 100644
--- a/.dstreamrc
+++ b/dstreamrc
@@ -1,7 +1,9 @@
-#This file controls which classes produce debugging output
+# This file controls which classes produce debugging output
+# rename to .dstreamrc and place in the directory where you're doing
+# the debugging.
# class name silence?
-Dstream 0
+Dstream 1
# yydebug
InitParser 1
@@ -25,8 +27,9 @@ Vector 1
# lily
Absolute_dynamic_req 1
Atom 1
-Axis_group_administration 1
+Axis_group_administration 0
Bar 1
+Bar_req 1
Beam 0
Bow 1
Bezier_bow 1
@@ -34,6 +37,7 @@ Change_iterator 1
Chord 1
Chord_iterator 1
Clef_item 1
+Clef_change_req 1
Col_configuration 1
Col_hpositions 1
Colinfo 1
@@ -41,34 +45,35 @@ Colinfo 1
Collision 1
Column_rod 1
Duration_identifier 1
-Engraver 1
-Engraver_group_engraver 1
+Engraver 0
+Engraver_group_engraver 0
General_script_def 1
Graphical_element 1
Group_change_req 1
-Head_column 1
+Head_column 0
Horizontal_align_item 1
Idealspacing 1
Identifier 1
Ineq_constrained_qp 1
Input_translator 1
int_identifier 1
-Item 1
+Item 0
Key_item 1
Lookup 1
Line_spacer 1
Melodic_req 1
Midi_def 1
-Midistrings 1
+Midistrings 0
Mixed_qp 1
Music 1
+Musical_pitch 1
Music_iterator 1
Music_output_def 1
-Note_column 1
+Note_column 0
Note_head 1
Note_performer 1
Note_req 1
-Paper_column 1
+Paper_column 0
Paper_score 1
Paper_def 1
Performer 1
@@ -77,15 +82,15 @@ Real_identifier 1
Request 1
Request_iterator 1
Rest_collision 1
-Rest_collision_engraver 1
+Rest_collision_engraver 0
Rest_req 1
-Rhythmic_head 1
+Rhythmic_head 0
Rhythmic_req 1
Scope 1
-Score 1
-Score_column 1
-Score_elem 1
-Score_engraver 1
+Score 0
+Score_column 0
+Score_elem 0
+Score_engraver 0
Score_performer 1
Script_column 1
Script_def 1
@@ -99,7 +104,6 @@ Span_dynamic_req 1
Spanner 1
Spring_spacer 1
Skip_req 1
-Staff 1
Staff_commands 1
Staff_symbol 1
Stem 1
@@ -111,9 +115,9 @@ Symtables 1
Text_def 1
Text_req 1
Time_description 1
-Translation_property 1
-Translator 1
-Translator_group 1
+Translation_property 0
+Translator 0
+Translator_group 0
Voice 1
Voice_iterator 1
Word_wrap 1
diff --git a/flower/Makefile b/flower/Makefile
index c970266bd6..e6ef878895 100644
--- a/flower/Makefile
+++ b/flower/Makefile
@@ -1,65 +1,20 @@
-#
-# project FlowerSoft C++ library
# title top level makefile for FlowerLib
# file flower/Makefile
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-# ...your sort order here, or how to comment-out a comment
-# subdir level:
-#
+# should reinstate versioning if shared libs are enabled.
+
depth = ..
-#
-# identify module:
-#
NAME = flower
MODULE_NAME = flower
SUBDIRS = include
-#
-# list of distribution files:
-#
SCRIPTS =
-README_FILES = ONEWS NEWS README TODO
-EXTRA_DISTFILES= VERSION $(README_FILES) $(SCRIPTS)
-
-include ./$(depth)/VERSION
-include ./$(depth)/flower/VERSION
-
-include ./$(depth)/make/Variables.make
-include ./$(depth)/make/Files.make
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-
-default: the-lib
-
-THE_LIB=$(outdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX)
-the-lib: $(THE_LIB)
-
-# version:
-#
-
-localdist:
-
--include /dev/null $(DEPFILES)
-#
-
-localdistclean:
- rm -f config.cache config.status config.log
-
-localinstall: $(LIBFLOWER)
-ifeq ($(LIB_SUFFIX),.so)
- $(INSTALL) -d $(libdir)
- $(INSTALL) $(LIBFLOWER).$(VERSION) $(libdir)
- ln -s $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX).$(MAJOR_VERSION)
- ln -s $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX)
-endif
+README_FILES = NEWS-1.0 NEWS-1.1.46 README TODO
+EXTRA_DIST_FILES= VERSION $(README_FILES) $(SCRIPTS)
-localuninstall:
- rm -f $(libdir)/libflower.{so*,a}
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C++.make
+include $(stepdir)/Library.make
-$(outdir)/flower-version.o: $(outdir)/version.hh
diff --git a/flower/ONEWS b/flower/NEWS-1.0
index 9f4df5bb07..9f4df5bb07 100644
--- a/flower/ONEWS
+++ b/flower/NEWS-1.0
diff --git a/flower/NEWS b/flower/NEWS-1.1.46
index e9a2005613..176bced2fe 100644
--- a/flower/NEWS
+++ b/flower/NEWS-1.1.46
@@ -1,5 +1,21 @@
-pl 42.jcn1
+As of 1.1.46, FlowerLib does not have its own versioning scheme.
+
+May be some later time we might reinstate it. ..
+
+
+pl 46
+ - simpler double -> Rational conversion
+
+pl 45
+ - virtual method class_size ()
+
+pl 44
+ - Data_file::gulp ()
+
+pl 43
- String_convert::split_arr
+ - varray.hh -> array.hh
+
pl 42
- interval.*: Slice (Interval of int)
diff --git a/flower/README b/flower/README
index 46a01d28e5..75bc0679e7 100644
--- a/flower/README
+++ b/flower/README
@@ -7,6 +7,6 @@ It was written by:
and
- Jan Nieuwenhuizen <jan@digicash.com>
+ Jan Nieuwenhuizen <janneke@gnu.org>
-It is licensed under the GNU GPL.
+It is licensed under the GNU LGPL.
diff --git a/flower/VERSION b/flower/VERSION
index cf5e1da91b..90f2855e7f 100644
--- a/flower/VERSION
+++ b/flower/VERSION
@@ -1,7 +1,9 @@
-MAJOR_VERSION=1
+PACKAGE_NAME=LilyPond
+MAJOR_VERSION=0
MINOR_VERSION=1
-PATCH_LEVEL=42
+PATCH_LEVEL=83
+MY_PATCH_LEVEL=hwn5
-# use to send patches, always empty for released version:
-#
-MY_PATCH_LEVEL=
+# use the above to send patches, always empty for released version:
+# please don't move these comments up; the patch should fail if
+# the previous version was wrong.
diff --git a/flower/axis.cc b/flower/axis.cc
index 92a1dea001..73b8a8ec1a 100644
--- a/flower/axis.cc
+++ b/flower/axis.cc
@@ -3,18 +3,16 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <assert.h>
-
#include "axes.hh"
-#include "string.hh"
String
axis_name_str (Axis a)
{
- return String (char(a + 'x'));
+ return to_str (char(a + 'x'));
}
/*
diff --git a/flower/choleski.cc b/flower/choleski.cc
index 5793fceae4..8fa18c67f5 100644
--- a/flower/choleski.cc
+++ b/flower/choleski.cc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "choleski.hh"
diff --git a/flower/cpu-timer.cc b/flower/cpu-timer.cc
index a4d79a3776..f0b49b5c72 100644
--- a/flower/cpu-timer.cc
+++ b/flower/cpu-timer.cc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "cpu-timer.hh"
diff --git a/flower/data-file.cc b/flower/data-file.cc
index 5a273c5dbb..996752cfce 100644
--- a/flower/data-file.cc
+++ b/flower/data-file.cc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) '95, '96, '97 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) '95, '96, '97 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <fstream.h>
@@ -18,8 +18,8 @@ Data_file::gobble_white()
char c;
while ((c=data_get()) == ' ' ||c == '\t')
- if (eof())
- break;
+ if (eof_b())
+ return;
data_unget (c);
}
@@ -32,8 +32,11 @@ Data_file::get_word()
while (1)
{
char c = data_get();
+
+ if (eof_b ())
+ break;
- if (isspace (c) || eof())
+ if (isspace (c))
{
data_unget (c);
break;
@@ -45,16 +48,16 @@ Data_file::get_word()
rawmode= true;
while ((c = data_get()) != '\"')
- if (eof())
- error (_("EOF in a string"));
+ if (eof_b ())
+ error (_ ("EOF in a string"));
else
- s += c;
+ s += to_str (c);
rawmode= false;
}
else
- s += c;
+ s += to_str (c);
}
return s;
@@ -64,11 +67,12 @@ Data_file::get_word()
Only class member who uses text_file::get
*/
char
-Data_file::data_get() {
+Data_file::data_get()
+{
char c = get();
if (!rawmode && c == '#') // gobble comment
{
- while ((c = get()) != '\n' && !eof ())
+ while (!eof_b () && (c = get()) != '\n')
;
return '\n';
}
@@ -77,13 +81,14 @@ Data_file::data_get() {
}
/// read line, gobble '\n'
-String Data_file::get_line()
+String
+Data_file::get_line()
{
char c;
String s;
- while ((c = data_get()) != '\n' && !eof ())
- s += c;
+ while (!eof_b () && (c = data_get()) != '\n')
+ s += to_str (c);
return s;
}
@@ -92,7 +97,7 @@ void
Data_file::gobble_leading_white()
{
// eat blank lines.
- while (!eof())
+ while (!eof_b ())
{
char c = data_get();
if (!isspace (c))
@@ -102,3 +107,40 @@ Data_file::gobble_leading_white()
}
}
}
+
+Data_file::Data_file (String s)
+ : Text_stream (s)
+{
+ //*mlog << "(" << s << flush;
+ rawmode= false;
+}
+
+void
+Data_file::warning (String s)
+{
+ message (_ ("warning: ") + s);
+}
+
+void
+Data_file::error (String s)
+{
+ message (s);
+ exit (1);
+}
+
+String
+Data_file::gulp ()
+{
+ String s;
+
+ while (!eof_b ())
+ {
+ s += to_str (data_get ());
+ }
+ return s;
+}
+
+
+Data_file::~Data_file ()
+{
+}
diff --git a/flower/dictionary.cc b/flower/dictionary.cc
index d8e50282cb..3f46028fa8 100644
--- a/flower/dictionary.cc
+++ b/flower/dictionary.cc
@@ -3,7 +3,9 @@
/**
- neuk. hsearch_* is te dom.
+ Dictionary implementation. Please fix me.
+
+ (neuk. hsearch_* is te dom.)
*/
template<class T>
class Dictionary<T>
diff --git a/flower/directed-graph.cc b/flower/directed-graph.cc
index 5c61a41963..b3525e7156 100644
--- a/flower/directed-graph.cc
+++ b/flower/directed-graph.cc
@@ -3,7 +3,7 @@
source file FlowerLib
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "directed-graph.hh"
@@ -38,7 +38,7 @@ void
Directed_graph_node::copy_edges_out (Directed_graph_node const &s)
{
for (int i=0; i < s.edge_out_l_arr_.size(); i++)
- add (s.edge_out_l_arr_[i]);
+ add_edge (s.edge_out_l_arr_[i]);
}
void
@@ -132,12 +132,12 @@ Directed_graph_node::unlink()
Directed_graph_node::~Directed_graph_node()
{
- assert (!linked_b());
+ // assert (!linked_b()); // hampered by memfrobbing
}
void
-Directed_graph_node::add (Directed_graph_node* dep_l)
+Directed_graph_node::add_edge (Directed_graph_node* dep_l)
{
PARANOID_OK();
if (!dep_l)
diff --git a/flower/dstream.cc b/flower/dstream.cc
index 7857d33338..fc15680d92 100644
--- a/flower/dstream.cc
+++ b/flower/dstream.cc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <fstream.h>
@@ -13,6 +13,7 @@
#include "text-db.hh"
#include "string-convert.hh"
#include "assoc-iter.hh"
+#include "rational.hh"
/// indent of each level
const INDTAB = 2;
@@ -79,23 +80,23 @@ Dstream::silent_b (String s) const
}
Dstream &
-Dstream::operator<<(String s)
+Dstream::operator<<(void const *v_l)
{
- output (s);
+ output (String_convert::pointer_str (v_l));
return *this;
}
Dstream &
-Dstream::operator<<(void const *v_l)
+Dstream::operator <<(Scalar s)
{
- output (String_convert::pointer_str (v_l));
+ output (s);
return *this;
}
Dstream &
-Dstream::operator<<(char const *ch_l)
+Dstream::operator <<(const char * s)
{
- output (ch_l);
+ output (String (s));
return *this;
}
@@ -124,7 +125,7 @@ Dstream::output (String s)
break;
case '\n':
- *os_l_ << '\n' << String (' ', indent_level_i_) << flush;
+ *os_l_ << '\n' << to_str (' ', indent_level_i_) << flush;
break;
default:
*os_l_ << *cp;
@@ -145,17 +146,17 @@ Dstream::Dstream (ostream *r, char const * cfg_nm)
char const * fn =cfg_nm ? cfg_nm : ".dstreamrc";
{
- ifstream ifs (fn); // can't open
+ ifstream ifs (fn); // can 't open
if (!ifs)
return;
}
Text_db cfg (fn);
- while (! cfg.eof()){
+ while (!cfg.eof_b ()){
Text_record r (cfg++);
if (r.size() != 2)
{
- r.message (_("not enough fields in Dstream init."));
+ r.message (_ ("Not enough fields in Dstream init."));
continue;
}
(*silent_assoc_p_)[r[0]] = (bool)(int)(Scalar (r[1]));
@@ -180,3 +181,4 @@ Dstream::clear_silence()
i.val() = false;
}
}
+
diff --git a/flower/file-path.cc b/flower/file-path.cc
index e6f9c4cff7..3b76d4b1dd 100644
--- a/flower/file-path.cc
+++ b/flower/file-path.cc
@@ -74,20 +74,23 @@ File_path::parse_path (String p)
/** find a file.
It will search in the current dir, in the construction-arg, and
in any other added path, in this order.
+
+ @return
+ The full path if found, or empty string if not found
*/
String
File_path::find (String nm) const
{
- fdebug << _("looking for ") << nm << ": ";
+ fdebug << "looking for" << nm << ": ";
if (!nm.length_i() || (nm == "-") )
return nm;
for (int i=0; i < size(); i++)
{
String path = elem(i);
- String sep (DIRSEP);
+ String sep = to_str (DIRSEP);
String right(path.right_str (1));
if (path.length_i () && right != sep)
- path += DIRSEP;
+ path += to_str (DIRSEP);
path += nm;
@@ -95,12 +98,12 @@ File_path::find (String nm) const
FILE *f = fopen (path.ch_C(), "r"); // ugh!
if (f)
{
- fdebug << _("found\n");
+ fdebug << "found\n";
fclose (f);
return path;
}
}
- fdebug << "\n";
+ fdebug << '\n';
return "";
}
diff --git a/flower/flower-debug.cc b/flower/flower-debug.cc
index f3131c8254..bb001511c2 100644
--- a/flower/flower-debug.cc
+++ b/flower/flower-debug.cc
@@ -14,7 +14,7 @@ void set_flower_debug (Dstream&ds, bool b)
{
#ifdef NPRINT
if (b)
- cout << _("Debug printout disabled. Compiled with NPRINT.") << endl;
+ cout << _ ("Debug output disabled. Compiled with NPRINT.") << endl;
#endif
flower_check_debug = b;
diff --git a/flower/flower-version.cc b/flower/flower-version.cc
deleted file mode 100644
index 746deacb93..0000000000
--- a/flower/flower-version.cc
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <stdio.h>
-
-#include "version.hh"
-
-static char *s = "FlowerLib " MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL "." MY_PATCH_LEVEL;
-//static char *s = "FlowerLib " FLOWER_VERSION ;
-
-
-char const *
-flower_version_sz()
-{
- return s;
-}
diff --git a/flower/full-storage.cc b/flower/full-storage.cc
index 4fc5605cfb..987a98ec04 100644
--- a/flower/full-storage.cc
+++ b/flower/full-storage.cc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "full-storage.hh"
diff --git a/flower/lgetopt.cc b/flower/getopt-long.cc
index 5aabe5f682..e3a3176b27 100644
--- a/flower/lgetopt.cc
+++ b/flower/getopt-long.cc
@@ -1,13 +1,13 @@
/*
process command line, GNU style.
- this is (Copyleft) 1996, Han-Wen Nienhuys, <hanwen@stack.nl>
+ this is (Copyleft) 1996, Han-Wen Nienhuys, <hanwen@cs.uu.nl>
*/
#include <stdio.h>
#include <iostream.h>
#include <assert.h>
-#include "lgetopt.hh"
+#include "getopt-long.hh"
#include "international.hh"
long
@@ -74,16 +74,17 @@ Getopt_long::parselong()
return found_option_l_;
}
-
-void
-Long_option_init::printon (ostream &errorout) const
+String
+Long_option_init::str () const
{
+ String str;
if (shortname)
- errorout <<"-" << shortname;
+ str += "-" + shortname;
if (shortname && longname)
- errorout << ", ";
+ str += ", ";
if (longname)
- errorout << "`--" << longname << "'";
+ str += String ("`--") + longname + "'";
+ return str;
}
// report an error, GNU style.
@@ -94,34 +95,31 @@ Getopt_long::report (Errorcod c)
if (!error_ostream_l_)
return;
- *error_ostream_l_ << arg_value_ch_a_a_[0] << ": ";
+ String str = arg_value_ch_a_a_[0];
+ str += ": ";
switch (c)
{
case E_ARGEXPECT:
- *error_ostream_l_<< _("option ");
- found_option_l_->printon (*error_ostream_l_);
- *error_ostream_l_ << _("requires an argument")<<endl;
+ str += _f ("option `%s\' requires an argument",
+ found_option_l_->str ());
break;
case E_NOARGEXPECT:
- *error_ostream_l_ << _("option `--") <<
- found_option_l_->longname << _("' does not allow an argument")<<endl;
+ str += _f ("option `%s\' doesn't allow an argument",
+ found_option_l_->str ());
break;
-
case E_UNKNOWNOPTION:
- *error_ostream_l_ << _("unrecognized option ");
- if (argument_index_i_)
- *error_ostream_l_ << "-" << arg_value_ch_a_a_[array_index_i_][argument_index_i_] << endl;
- else
- *error_ostream_l_ << arg_value_ch_a_a_[array_index_i_] << endl;
-
+ str += _f ("unrecognized option: `%s\'",
+ String (argument_index_i_
+ ? String ("-" + _f("%c",arg_value_ch_a_a_[array_index_i_][argument_index_i_]))
+ : String (arg_value_ch_a_a_[array_index_i_])));
break;
case E_ILLEGALARG:
- *error_ostream_l_ << _("illegal argument `") << optional_argument_ch_C_ << _("\'to option ");
- found_option_l_->printon (*error_ostream_l_);
- *error_ostream_l_ << '\n';
+ str += _f ("invalid argument `%s\' to option `%s'",
+ optional_argument_ch_C_, found_option_l_->str ());
default:
assert (false);
}
+ *error_ostream_l_ << str << endl;
exit (2);
}
diff --git a/flower/include/Makefile b/flower/include/Makefile
index b7716f2676..283e1fadcd 100644
--- a/flower/include/Makefile
+++ b/flower/include/Makefile
@@ -1,19 +1,8 @@
# flower/lib/include/Makefile
-# subdir level:
-#
depth = ../..
-#
-# generic stuff/Makefile
-#
-include ./$(depth)/make/Include.make
-include ./$(depth)/flower/VERSION
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C++.make
-# identify module:
-#
-MODULE_NAME = flower
-
-
-#
diff --git a/flower/include/acursor.hh b/flower/include/acursor.hh
index d49dbd6b4e..5bb488d4db 100644
--- a/flower/include/acursor.hh
+++ b/flower/include/acursor.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/arithmetic-operator.hh b/flower/include/arithmetic-operator.hh
index 4a472819e3..17e67a47d4 100644
--- a/flower/include/arithmetic-operator.hh
+++ b/flower/include/arithmetic-operator.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/varray.hh b/flower/include/array.hh
index ce9c2217e7..c40e639817 100644
--- a/flower/include/varray.hh
+++ b/flower/include/array.hh
@@ -230,6 +230,6 @@ public:
void reverse();
};
-#include "varray.icc"
+#include "array.icc"
#endif
diff --git a/flower/include/array.icc b/flower/include/array.icc
new file mode 100644
index 0000000000..0077a01d08
--- /dev/null
+++ b/flower/include/array.icc
@@ -0,0 +1,66 @@
+/*
+ (c) Han-Wen Nienhuys 1995,96,97,98
+
+ Distributed under GNU GPL
+*/
+
+
+#if 0
+#include "array.hh"
+#ifdef INLINE
+#undef INLINE
+#endif
+
+#define INLINE
+#endif
+
+/*
+ functions with loops don't inline
+ */
+
+template<class T> INLINE void
+arrcpy (T*dest, T*src, int count)
+{
+ for (int i_shadows_local=0; i_shadows_local < count ; i_shadows_local++)
+ *dest++ = *src++;
+}
+
+template<class T> INLINE void
+Array<T>::insert (T k, int j)
+{
+ assert (j >=0 && j<= size_);
+ set_size (size_+1);
+ for (int i=size_-1; i > j; i--)
+ array_p_[i] = array_p_[i-1];
+ array_p_[j] = k;
+}
+
+template<class T> INLINE void
+Array<T>::sort (int (*compare)(T const&,T const&),
+ int lower = -1, int upper = -1)
+{
+ if (lower < 0)
+ {
+ lower = 0 ;
+ upper = size () - 1;
+ }
+ if (lower >= upper)
+ return;
+ swap (lower, (lower+upper)/2);
+ int last = lower;
+ for (int i= lower +1; i <= upper; i++)
+ if (compare (array_p_[i], array_p_[lower]) < 0)
+ swap (++last,i);
+ swap (lower, last);
+ sort (compare, lower, last-1);
+ sort (compare, last+1, upper);
+}
+
+template<class T> INLINE void
+Array<T>::reverse ()
+{
+ int h = size_/2;
+ for (int i =0,j = size_-1; i < h; i++,j--)
+ swap (i,j);
+}
+
diff --git a/flower/include/assoc.hh b/flower/include/assoc.hh
index f4558545a1..3840b4bd5a 100644
--- a/flower/include/assoc.hh
+++ b/flower/include/assoc.hh
@@ -1,7 +1,7 @@
#ifndef ASSOC_HH
#define ASSOC_HH
-#include "varray.hh"
+#include "array.hh"
#include <assert.h>
/**
diff --git a/flower/include/axes.hh b/flower/include/axes.hh
index 786e5157b7..1b54089c17 100644
--- a/flower/include/axes.hh
+++ b/flower/include/axes.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/cpu-timer.hh b/flower/include/cpu-timer.hh
index 65def573e5..f9d020dc46 100644
--- a/flower/include/cpu-timer.hh
+++ b/flower/include/cpu-timer.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/cursor.icc b/flower/include/cursor.icc
index a000736b1e..416faa52e8 100644
--- a/flower/include/cursor.icc
+++ b/flower/include/cursor.icc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/data-file.hh b/flower/include/data-file.hh
index f371c39092..56894ab50b 100644
--- a/flower/include/data-file.hh
+++ b/flower/include/data-file.hh
@@ -3,7 +3,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -20,7 +20,7 @@ public:
bool rawmode;
Text_stream::line;
- Text_stream::eof;
+ Text_stream::eof_b;
Text_stream::get_name;
char data_get();
@@ -39,21 +39,15 @@ public:
/// gobble empty stuff before first field.
void gobble_leading_white();
- Data_file (String s) : Text_stream (s) {
- //*mlog << "(" << s << flush;
- rawmode= false;
- }
-
- ~Data_file() {
- // *mlog << ")"<<flush;
- }
-
- warning (String s) {
- message ("warning: " + s);
- }
- error (String s){
- message (s);
- exit (1);
- }
+ Data_file (String);
+ ~Data_file();
+ /**
+ eat complete file
+ @post
+ eof () is true
+ */
+ String gulp ();
+ void warning (String s);
+ void error (String s);
};
#endif // DATAFILE_HH
diff --git a/flower/include/diagonal-storage.hh b/flower/include/diagonal-storage.hh
deleted file mode 100644
index ae9572d5b7..0000000000
--- a/flower/include/diagonal-storage.hh
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- diagonal-storage.hh -- declare Diagonal_storage
-
- source file of the Flower Library
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef DIAGONAL_STORAGE_HH
-#define DIAGONAL_STORAGE_HH
-#include "full-storage.hh"
-
-/**
- Store a matrix with a single-band.
-
- @invariant
-
- Diagonal_storage (i,j) == band_(i, j-i + band_size_i())
-
- band_.cols() == 2 * band_size_i () + 1
-
- */
-class Diagonal_storage : public Matrix_storage {
- Full_storage band_;
-
-public:
- void set_band_size (int b);
- int band_size_i() const;
-
- void assert_valid (int i, int j) const;
- bool band_elt_b (int,int) const;
- void resize_dim (int);
-
- virtual void resize_rows (int d) { resize_dim (d); }
- virtual void resize_cols (int d) { resize_dim (d); }
- virtual int dim() const;
-
- virtual int rows() const ;
- virtual int cols() const ;
-
-
- virtual void resize (int i, int j);
- virtual void resize (int i);
-
- virtual Real& elem (int i,int j);
- virtual Real elem (int i, int j) const;
- Diagonal_storage (Matrix_storage* , int band_i);
- Diagonal_storage();
- void OK() const;
-
- virtual void insert_row (int k);
- virtual void delete_row (int k);
- virtual void delete_column (int k);
-
- ~Diagonal_storage();
- virtual bool mult_ok (int i, int j) const;
- virtual void mult_next (int &i, int &j) const ;
- virtual bool trans_ok (int i, int j) const;
- virtual void trans_next (int &i, int &j) const;
- DECLARE_VIRTUAL_COPY_CONS(Diagonal_storage, Matrix_storage);
- DECLARE_MY_RUNTIME_TYPEINFO;
- virtual bool try_right_multiply (Matrix_storage * dest, Matrix_storage const *) const;
-};
-#endif // DIAGONAL_STORAGE_HH
diff --git a/flower/include/dictionary-iter.hh b/flower/include/dictionary-iter.hh
index 414d62b77f..9183c5d585 100644
--- a/flower/include/dictionary-iter.hh
+++ b/flower/include/dictionary-iter.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/dictionary.hh b/flower/include/dictionary.hh
index 2e16bed201..b25fc84b49 100644
--- a/flower/include/dictionary.hh
+++ b/flower/include/dictionary.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/directed-graph.hh b/flower/include/directed-graph.hh
index 33c9e4ee23..af898a4028 100644
--- a/flower/include/directed-graph.hh
+++ b/flower/include/directed-graph.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -29,7 +29,7 @@ public:
bool linked_b() const;
void unlink();
void junk_links();
- void add (Directed_graph_node*);
+ void add_edge (Directed_graph_node*);
void remove_edge_in (Directed_graph_node *);
void remove_edge_out (Directed_graph_node*);
bool contains_b (Directed_graph_node const*) const;
diff --git a/flower/include/dstream.hh b/flower/include/dstream.hh
index c1c04f3921..a7379268eb 100644
--- a/flower/include/dstream.hh
+++ b/flower/include/dstream.hh
@@ -3,13 +3,14 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef DSTREAM_HH
#define DSTREAM_HH
#include "string.hh"
+#include "scalar.hh"
const char eol= '\n';
@@ -41,6 +42,7 @@ class Dstream
String current_classname_str_;
void output (String s);
Assoc<String, bool> *silent_assoc_p_;
+
public:
void clear_silence();
bool silent_b (String) const;
@@ -52,9 +54,12 @@ public:
virtual ~Dstream();
Dstream &identify_as (String s);
- /** Output a string via the Dstream. This is the only output
- interface. It delegates all conversion to String class. */
- Dstream &operator << (String s);
+ /**
+ Output a Scalar via the Dstream. This is the only output
+ interface. It explicitely delegates all implicit conversion
+ to Scalar class.
+ */
+ Dstream &operator << (Scalar);
/**
Output memory locations.
*/
diff --git a/flower/include/file-path.hh b/flower/include/file-path.hh
index 67d3129f10..d5fed491ff 100644
--- a/flower/include/file-path.hh
+++ b/flower/include/file-path.hh
@@ -3,13 +3,13 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef PATH_HH
#define PATH_HH
#include "string.hh"
-#include "varray.hh"
+#include "array.hh"
/**
diff --git a/flower/include/flower-debug.hh b/flower/include/flower-debug.hh
index 5c8138e946..16bc73a007 100644
--- a/flower/include/flower-debug.hh
+++ b/flower/include/flower-debug.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/full-storage.hh b/flower/include/full-storage.hh
index 4d68e12828..f9de76979c 100644
--- a/flower/include/full-storage.hh
+++ b/flower/include/full-storage.hh
@@ -3,14 +3,14 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef FULL_STORAGE_HH
#define FULL_STORAGE_HH
-#include "varray.hh"
+#include "array.hh"
#include "real.hh"
#ifndef INLINE
diff --git a/flower/include/full-storage.icc b/flower/include/full-storage.icc
index 008f4169f5..55cba88472 100644
--- a/flower/include/full-storage.icc
+++ b/flower/include/full-storage.icc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/lgetopt.hh b/flower/include/getopt-long.hh
index fe779c39fc..a069e28422 100644
--- a/flower/include/lgetopt.hh
+++ b/flower/include/getopt-long.hh
@@ -1,8 +1,7 @@
-#ifndef LGETOPT_HH
-#define LGETOPT_HH
-
-#include <string.h>
+#ifndef GETOPT_LONG_HH
+#define GETOPT_LONG_HH
+#include "string.hh"
class ostream;
@@ -14,7 +13,7 @@ struct Long_option_init {
char const * longname;
char shortname;
- void printon (ostream &errorout) const ;
+ String str () const;
};
@@ -99,4 +98,5 @@ public:
char const *current_arg();
char const * get_next_arg();
};
-#endif
+
+#endif // GETOPT_LONG_HH
diff --git a/flower/include/international.hh b/flower/include/international.hh
index 730b9924e6..3da5a26a27 100644
--- a/flower/include/international.hh
+++ b/flower/include/international.hh
@@ -3,14 +3,27 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef INTERNATIONAL_HH
#define INTERNATIONAL_HH
-#define _(str) str
+#include "string.hh"
-#endif /* INTERNATIONAL_HH */
+// don't inline: get warnings only once
+/**
+ Internationalisation: _ ("to be translated") gets "translated" by GNU gettext
+*/
+String _ (char const *ch);
+
+/**
+ Internationalisation: _f ("Usage: %s [FILE]", "lilypond") gets "translated" by
+ GNU gettext
+*/
+String _f (char const* format, ...);
+String _f (char const* format, String s, String s2 = "", String s3 = "");
+
+#endif // INTERNATIONAL_HH
diff --git a/flower/include/interval.hh b/flower/include/interval.hh
index f33bcb5aa0..9468fae487 100644
--- a/flower/include/interval.hh
+++ b/flower/include/interval.hh
@@ -30,9 +30,12 @@ struct Interval_t {
// T center() { return (left + right) / T(2);}
// and can't handle this either
// anyone want to make a bug report?
+ // better make one soon, egcs in rh5.1 barfs on this!
T center() {
T two (2);
- return (left + right) / two;
+// return (left + right) / two;
+ T result ((left + right) / two);
+ return result;
}
void translate (T t) {
left += t;
@@ -75,6 +78,11 @@ struct Interval_t {
left =m;
right = M;
}
+ Interval_t<T> &operator -= (T r) {
+ *this += -r;
+ return *this;
+ }
+
Interval_t<T> &operator += (T r) {
left += r;
right +=r;
diff --git a/flower/include/interval.tcc b/flower/include/interval.tcc
index d6c93b48f2..382ec67523 100644
--- a/flower/include/interval.tcc
+++ b/flower/include/interval.tcc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/iterate.hh b/flower/include/iterate.hh
index d68226777f..c8b179e68c 100644
--- a/flower/include/iterate.hh
+++ b/flower/include/iterate.hh
@@ -3,7 +3,7 @@
source file of the flowerlib
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/libc-extension.hh b/flower/include/libc-extension.hh
index 051077b6e7..a9f04e1e71 100644
--- a/flower/include/libc-extension.hh
+++ b/flower/include/libc-extension.hh
@@ -3,17 +3,17 @@
source file of the flowerlib
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef LIBC_EXTENSION_HH
#define LIBC_EXTENSION_HH
-#include "fproto.hh"
+#include "fproto.hh"
#include "config.hh"
-
#include <cstddef>
+#include <stdarg.h>
char* strnlwr (char* start_l ,int n);
char* strnupr (char* start_l, int n);
@@ -24,8 +24,11 @@ Byte *memmem (Byte const * haystack, int haystack_len,
#endif HAVE_MEMMEM
#if !HAVE_SNPRINTF // GNU extension.
-int snprintf (char *str, size_t n,
- char const *format, ...);
+int snprintf (char *str, size_t n, char const *format, ...);
+#endif
+
+#if !HAVE_VSNPRINTF // GNU extension.
+int vsnprintf (char *str, size_t, char const *format, va_list args);
#endif
diff --git a/flower/include/list.icc b/flower/include/list.icc
index 7192c4d9f6..eb1179a300 100644
--- a/flower/include/list.icc
+++ b/flower/include/list.icc
@@ -4,8 +4,8 @@
source file of the Flower Library
(c) 1996, 1997--1998
- Jan Nieuwenhuizen <jan@digicash.com>
- Han-Wen Nienhuys <hanwen@stack.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
+ Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/list.tcc b/flower/include/list.tcc
index 6cba533848..90c150d2c9 100644
--- a/flower/include/list.tcc
+++ b/flower/include/list.tcc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef LIST_CC
#define LIST_CC
diff --git a/flower/include/matrix-storage.hh b/flower/include/matrix-storage.hh
index 581e6ee937..2dd51ba9bb 100644
--- a/flower/include/matrix-storage.hh
+++ b/flower/include/matrix-storage.hh
@@ -3,14 +3,14 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef MATRIX_STORAGE_HH
#define MATRIX_STORAGE_HH
-#include "varray.hh"
+#include "array.hh"
#include "real.hh"
/**
diff --git a/flower/include/matrix.hh b/flower/include/matrix.hh
index 64ba718215..d94601a5ce 100644
--- a/flower/include/matrix.hh
+++ b/flower/include/matrix.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -137,7 +137,7 @@ public:
Vector row (int) const;
Vector col (int) const;
- operator String() const;
+ String str () const;
void print() const;
~Matrix ();
};
diff --git a/flower/include/nscalar.hh b/flower/include/nscalar.hh
index 774f2e7dc1..b2aa4d6283 100644
--- a/flower/include/nscalar.hh
+++ b/flower/include/nscalar.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/out/dummy.dep b/flower/include/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/flower/include/out/dummy.dep
+++ /dev/null
diff --git a/flower/include/parray.hh b/flower/include/parray.hh
index c6caad2c2f..b737d7bb47 100644
--- a/flower/include/parray.hh
+++ b/flower/include/parray.hh
@@ -3,14 +3,14 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef PARRAY_HH
#define PARRAY_HH
-#include "varray.hh"
+#include "array.hh"
/**
an array of pointers.
diff --git a/flower/include/plist.tcc b/flower/include/plist.tcc
index 794e0b0fc1..0c2e3888f7 100644
--- a/flower/include/plist.tcc
+++ b/flower/include/plist.tcc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/pointer.hh b/flower/include/pointer.hh
index 803af25ab9..48a86e118a 100644
--- a/flower/include/pointer.hh
+++ b/flower/include/pointer.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/pointer.tcc b/flower/include/pointer.tcc
index 4c82e7d27e..9829d5399c 100644
--- a/flower/include/pointer.tcc
+++ b/flower/include/pointer.tcc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/pqueue.hh b/flower/include/pqueue.hh
index 67726d47f1..ba48993ccb 100644
--- a/flower/include/pqueue.hh
+++ b/flower/include/pqueue.hh
@@ -3,13 +3,13 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef PQUEUE_HH
#define PQUEUE_HH
-#include "varray.hh"
+#include "array.hh"
template<class K, class T>
diff --git a/flower/include/priorities.hh b/flower/include/priorities.hh
index 4b804ba275..7a8240b9fc 100644
--- a/flower/include/priorities.hh
+++ b/flower/include/priorities.hh
@@ -3,14 +3,14 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef PRIORITIES_HH
#define PRIORITIES_HH
-#include "varray.hh"
+#include "array.hh"
/**
A sorted (uni)set. Should connect with PQueue
diff --git a/flower/include/rational.hh b/flower/include/rational.hh
index 3c15f76c4f..115d5f85c7 100644
--- a/flower/include/rational.hh
+++ b/flower/include/rational.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -25,6 +25,7 @@ class Rational {
unsigned int num_, den_;
void normalise ();
void copy (Rational const &);
+
public:
void set_infinite (int sign);
bool infty_b () const;
@@ -36,7 +37,6 @@ public:
operator bool () const;
operator int () const;
operator double () const;
- operator String () const;
Rational operator - () const;
Rational ();
Rational (int, int =1);
diff --git a/flower/include/real.hh b/flower/include/real.hh
index 05e214ac16..50459fb57f 100644
--- a/flower/include/real.hh
+++ b/flower/include/real.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/scalar.hh b/flower/include/scalar.hh
index e8c58e684e..a963a2fb2a 100644
--- a/flower/include/scalar.hh
+++ b/flower/include/scalar.hh
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -12,15 +12,16 @@
#include "string.hh"
#include "real.hh"
+#include "matrix.hh"
/// Perl -like scalar type.
-struct Scalar : public String {
-
- Scalar (Real r) : String (r) {}
- Scalar (int i) : String (i) {}
- Scalar (char c) : String (c) {}
+struct Scalar : public String
+{
+ Scalar (Real r) { *this = to_str (r); }
+ Scalar (int i) { *this = to_str (i); }
+ Scalar (char c) { *this = to_str (c); }
Scalar (char const *c) : String (c) {}
- Scalar (String s):String (s) {}
+ Scalar (String s) : String (s) {}
Scalar (Rational);
operator Rational();
Scalar() {}
@@ -29,6 +30,13 @@ struct Scalar : public String {
operator int();
bool to_bool () const;
+ /*
+ urg, these are bit silly; perhaps should make "Print_string" class
+ (derive from Scalar?)
+ */
+ Scalar (Vector v) { *this = v.str (); }
+ Scalar (Matrix m) { *this = m.str (); }
+
/** perl -like string to bool conversion.
*/
operator bool() const;
diff --git a/flower/include/string-convert.hh b/flower/include/string-convert.hh
index 4842eac2d7..3feba87bf2 100644
--- a/flower/include/string-convert.hh
+++ b/flower/include/string-convert.hh
@@ -7,6 +7,7 @@
#ifndef STRING_CONVERT_HH
#define STRING_CONVERT_HH
+#include <stdarg.h>
#include "fproto.hh"
#include "string.hh"
@@ -18,6 +19,7 @@ class String_convert {
static int hex2nibble_i (Byte byte);
static Byte nibble2hex_byte (Byte byte);
public:
+ static String bool_str (bool b);
static String bin2dec_str (String bin_str);
static String bin2hex_str (String bin_str);
static String dec2bin_str (String str);
@@ -27,6 +29,8 @@ public:
static int dec2_i (String dec_str);
static double dec2_f (String dec_str);
static String double_str (double f, char const* fmt=0);
+ static String form_str (char const* format, ...);
+ static String vform_str (char const* format, va_list args);
static int hex2_i (String str);
static unsigned hex2_u (String str);
static String hex2bin_str (String str);
diff --git a/flower/include/string-data.hh b/flower/include/string-data.hh
index 7695bedde6..01de40cab7 100644
--- a/flower/include/string-data.hh
+++ b/flower/include/string-data.hh
@@ -3,7 +3,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/string-data.icc b/flower/include/string-data.icc
index 599b9d82a6..0626601a35 100644
--- a/flower/include/string-data.icc
+++ b/flower/include/string-data.icc
@@ -3,7 +3,7 @@
source file of Flower lib
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef STRINGDATA_INL
diff --git a/flower/include/string-handle.hh b/flower/include/string-handle.hh
index 08b957c51f..3e39e6afbe 100644
--- a/flower/include/string-handle.hh
+++ b/flower/include/string-handle.hh
@@ -3,7 +3,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/string-handle.icc b/flower/include/string-handle.icc
index 6f9d908f57..74b755b22c 100644
--- a/flower/include/string-handle.icc
+++ b/flower/include/string-handle.icc
@@ -4,7 +4,7 @@
source file of Flower lib
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef STRINGHANDLE_INL
diff --git a/flower/include/string.hh b/flower/include/string.hh
index 3b6f2266fa..fb8dec55e6 100644
--- a/flower/include/string.hh
+++ b/flower/include/string.hh
@@ -17,13 +17,6 @@
#include "fproto.hh"
#include "string-handle.hh"
-/*
- technically incorrect, but lets keep it here: this is a
- catch all place for this stuff.
- */
-
-#include "international.hh"
-
/* Libg++ also has a String class. Programming errors can lead to
confusion about which String is in use. Uncomment the following if you have
unexplained crashes after mucking with String
@@ -81,16 +74,9 @@ public:
String (char const* source);
String (Byte const* byte_C, int length_i);
- /// "ccccc"
- String (char c, int n = 1);
-
- String (int i , char const *fmt=0);
- String (double f , char const* fmt =0);
- /// 'true' or 'false'
- String (bool);
-
- /// return a "new"-ed copy of contents
- Byte* copy_byte_p () const; // return a "new"-ed copy of contents
+ /// return "new"-ed copy of contents
+ Byte* copy_byte_p () const;
+ char* copy_ch_p() const;
char const* ch_C () const;
Byte const* byte_C () const;
@@ -138,9 +124,8 @@ public:
/// return the "esrever" of *this
String reversed_str () const;
-
/// return a piece starting at index_i (first char = index_i 0), length n
- String cut (int index_i, int n) const;
+ String cut_str (int index_i, int n) const;
/// cut out a middle piece, return remainder
String nomid_str (int index_i, int n) const;
@@ -157,13 +142,15 @@ public:
/// index of leftmost #c#
int index_i (char c) const;
-
/// index of leftmost occurance of STRING
int index_i (String) const;
+
+
int index_any_i (String) const;
void to_upper ();
void to_lower ();
+
/// provide Stream output
void print_on (ostream& os) const;
@@ -177,6 +164,34 @@ public:
double value_f () const;
};
+/*
+ better to clutter global namespace, than suffer *ugh, ugh, ugh*
+ implicit conversions.
+
+ it might be cool to have no type-checking at all in a language,
+ but once there is, having this silently circumvented is a nightmare.
+
+ whenever implicit conversions seem necessary (e.g. operator << ()),
+ use Scalar as the generic type iso String.
+ */
+
+/// for completeness (=handy)
+inline String to_str (String s) { return s; }
+/// "cccc"
+String to_str (char c, int n = 1);
+String to_str (int i, char const* format = 0);
+String to_str (double f , char const* format = 0);
+String to_str (bool b);
+String to_str (char const* format, ... );
+
+/*
+ technically incorrect, but lets keep it here: this is a
+ catch all place for this stuff.
+ */
+
+#include "international.hh"
+
+
#include "compare.hh"
INSTANTIATE_COMPARE(String const &, String::compare_i);
diff --git a/flower/include/string.icc b/flower/include/string.icc
index 3bdbb0336e..7b4985b8c3 100644
--- a/flower/include/string.icc
+++ b/flower/include/string.icc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/include/text-db.hh b/flower/include/text-db.hh
index ab3e9c82b5..6e90e38c47 100644
--- a/flower/include/text-db.hh
+++ b/flower/include/text-db.hh
@@ -40,7 +40,7 @@ public:
Text_db (String fn):Data_file (fn) { }
Data_file::error;
- bool eof();
+ bool eof_b ();
/// get next line.
Text_record operator++(int) {
@@ -48,7 +48,7 @@ public:
}
/// are we done yet?
operator bool() {
- return !eof();
+ return !eof_b ();
}
};
diff --git a/flower/include/text-stream.hh b/flower/include/text-stream.hh
index 4d369fdbbb..3bebb08505 100644
--- a/flower/include/text-stream.hh
+++ b/flower/include/text-stream.hh
@@ -5,7 +5,7 @@
#include <stdio.h>
#include <ctype.h>
#include "string.hh"
-#include "varray.hh"
+#include "array.hh"
/**
line counting input stream.
@@ -28,10 +28,8 @@ class Text_stream
public:
Text_stream (String fn);
String get_name() { return name; }
- bool eof() {
- return feof (f);
- }
- char get() {
+ bool eof_b();
+ char get() {
char c;
if (pushback.empty())
@@ -49,6 +47,8 @@ public:
pushback.push (c);
}
char peek() {
+ if (eof_b ())
+ return -1;
char c = get();
unget (c);
return c;
@@ -61,7 +61,7 @@ public:
}
~Text_stream(){
- if (!eof())
+ if (!eof_b())
cerr <<__FUNCTION__<< ": closing unended file";
fclose (f);
diff --git a/flower/include/unionfind.hh b/flower/include/unionfind.hh
index 94a3e9f667..4f98d8801d 100644
--- a/flower/include/unionfind.hh
+++ b/flower/include/unionfind.hh
@@ -1,6 +1,6 @@
#ifndef UNIONFIND_HH
#define UNIONFIND_HH
-#include "varray.hh"
+#include "array.hh"
/*
which points of a graph are connected?.
diff --git a/flower/include/varray.icc b/flower/include/varray.icc
index 4d8ccb9387..ae6b315fc8 100644
--- a/flower/include/varray.icc
+++ b/flower/include/varray.icc
@@ -1,3 +1,4 @@
+#error
/*
(c) Han-Wen Nienhuys 1995,96,97,98
@@ -6,7 +7,7 @@
#if 0
-#include "varray.hh"
+#include "array.hh"
#ifdef INLINE
#undef INLINE
#endif
diff --git a/flower/include/vector.hh b/flower/include/vector.hh
index 1d986c53b7..8b4d280cf5 100644
--- a/flower/include/vector.hh
+++ b/flower/include/vector.hh
@@ -3,7 +3,7 @@
#include <math.h>
#include "real.hh"
-#include "varray.hh"
+#include "array.hh"
class Dstream;
class String;
@@ -41,7 +41,8 @@ public:
dat.insert (v,i);
}
void del (int i) { dat.del (i); }
- operator String() const;
+
+ String str () const;
void operator +=(Vector v) {
assert (v.dim() == dim ());
diff --git a/flower/include/virtual-methods.hh b/flower/include/virtual-methods.hh
index 2ce3d40569..27557117e3 100644
--- a/flower/include/virtual-methods.hh
+++ b/flower/include/virtual-methods.hh
@@ -1,28 +1,32 @@
/*
- virtual-methods.hh -- declare
+ virtual-methods.hh -- declare macros for our do-it-yourself RTTI
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef VIRTUAL_METHODS_HH
#define VIRTUAL_METHODS_HH
-/** a macro to declare the classes name as a static and virtual function.
+#include "stdlib.h" // size_t
+
+/** Declare the classes name as a static and virtual function.
The static_name() can *not* be inlined (this might have the effect that
s->name() != S::static_name (). Overlapping strings need not be merged in C++
*/
#define DECLARE_MY_RUNTIME_TYPEINFO \
-static char const *static_name();\
static bool static_is_type_b (const char*s);\
virtual bool is_type_b (const char *s) const { return static_is_type_b (s); } \
virtual char const *name() const{ return static_name (); } \
-int a_stupid_nonexistent_function_to_allow_the_semicolon_come_out()
+virtual size_t class_size () const { return static_class_size (); }\
+static size_t static_class_size (); \
+static char const *static_name()
#define IMPLEMENT_STATIC_NAME(c)\
- char const *c::static_name() { return #c; }
+ char const *c::static_name() { return #c; } \
+ size_t c::static_class_size () { return sizeof (c); }
diff --git a/flower/interval.cc b/flower/interval.cc
index 2a71fea232..571d23f530 100644
--- a/flower/interval.cc
+++ b/flower/interval.cc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -22,7 +22,7 @@ Interval_t<Real>::infinity ()
String
Interval_t<Real>::T_to_str (Real r)
{
- return String (r);
+ return to_str (r);
}
template INTERVAL__INSTANTIATE (int);
@@ -36,6 +36,6 @@ Interval_t<int>::infinity ()
String
Interval_t<int>::T_to_str (int i)
{
- return String (i);
+ return to_str (i);
}
diff --git a/flower/libc-extension.cc b/flower/libc-extension.cc
index c7f1b4bd08..9752c04694 100644
--- a/flower/libc-extension.cc
+++ b/flower/libc-extension.cc
@@ -4,15 +4,18 @@
source file of the flowerlib
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
-#include <stdarg.h>
+
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include "libc-extension.hh"
-
+/*
+ urg: why soo wierd?
+ */
char*
strnlwr (char* start_l ,int n)
{
@@ -109,8 +112,8 @@ strrev (Byte* byte_l, int length_i)
}
#if ! HAVE_SNPRINTF
-int snprintf (char *str, size_t,
- char const *format, ...)
+int
+snprintf (char *str, size_t, char const *format, ...)
{
va_list ap;
va_start (ap, format);
@@ -119,3 +122,13 @@ int snprintf (char *str, size_t,
return i;
}
#endif
+
+#if ! HAVE_VSNPRINTF
+int
+vsnprintf (char *str, size_t, char const *format, va_list args)
+{
+ int i = vsprintf (str, format, args);
+ return i;
+}
+#endif
+
diff --git a/flower/matrix-debug.cc b/flower/matrix-debug.cc
index 82080f2a6d..d47d019367 100644
--- a/flower/matrix-debug.cc
+++ b/flower/matrix-debug.cc
@@ -3,24 +3,25 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "flower-debug.hh"
#include "matrix.hh"
-Matrix::operator String() const
+String
+Matrix::str () const
{
String s;
#ifndef NPRINT
Full_storage const * stor_c_l = dat_;
- s=String ("matrix {");
+ s = String ("matrix {");
for (int i=0; i< rows(); i++)
{
for (int j = 0; j < cols(); j++)
{
- s+= String (stor_c_l->elem (i,j), "%6f ");
+ s+= to_str (stor_c_l->elem (i,j), "%6f ");
}
s+="\n";
}
@@ -31,23 +32,24 @@ Matrix::operator String() const
void
-Matrix::print() const
+Matrix::print () const
{
#ifndef NPRINT
fdebug << *this;
#endif
}
-Vector::operator String() const
+String
+Vector::str () const
{
String s;
#ifndef NPRINT
- s=String ("vector (") + dim () + ") [";
+ s = String ("vector (") + to_str (dim ()) + ") [";
for (int i=0; i < dim(); i++)
{
- s += String (dat[i], "%6f") + String (' ');
+ s += to_str (dat[i], "%6f") + to_str (' ');
}
- s+="]\n";
+ s += "]\n";
#endif
return s;
}
@@ -57,6 +59,6 @@ void
Vector::print() const
{
#ifndef NDEBUG
- fdebug << *this<<'\n';
+ fdebug << *this << '\n';
#endif
}
diff --git a/flower/matrix.cc b/flower/matrix.cc
index 314447220a..cdf3eccf77 100644
--- a/flower/matrix.cc
+++ b/flower/matrix.cc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "matrix.hh"
diff --git a/flower/nscalar.cc b/flower/nscalar.cc
index 75bbe6bad4..2015e3ff23 100644
--- a/flower/nscalar.cc
+++ b/flower/nscalar.cc
@@ -3,6 +3,6 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/flower/offset.cc b/flower/offset.cc
index d92c3af31a..7f0a6949e3 100644
--- a/flower/offset.cc
+++ b/flower/offset.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <math.h>
@@ -18,7 +18,8 @@ String
Offset::str () const
{
String s;
- s = String("(") + coordinate_a_[X_AXIS] + ", " + coordinate_a_[Y_AXIS] + ")";
+ s = String("(") + to_str (coordinate_a_[X_AXIS]) + ", "
+ + to_str (coordinate_a_[Y_AXIS]) + ")";
return s;
}
#endif
diff --git a/flower/out/dummy.dep b/flower/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/flower/out/dummy.dep
+++ /dev/null
diff --git a/flower/rational.cc b/flower/rational.cc
index a7b7d696c8..10b3bc9c2c 100644
--- a/flower/rational.cc
+++ b/flower/rational.cc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <stdlib.h>
#include "rational.hh"
@@ -33,8 +33,6 @@ operator << (ostream &o, Rational r)
return o;
}
-
-
Rational
Rational::truncated () const
{
@@ -166,38 +164,35 @@ Rational::operator += (Rational r)
*/
Rational::Rational(double x)
{
- num_ = 0;
- den_ = 1;
if (x != 0.0)
{
sign_ = ::sign (x);
x *= sign_;
- const long shift = 15; // a safe shift per step
- const double width = 32768.0; // = 2^shift
- const int maxiter = 20; // ought not be necessary, but just in case,
- // max 300 bits of precision
int expt;
double mantissa = frexp(x, &expt);
- long exponent = expt;
- double intpart;
- int k = 0;
- while (mantissa != 0.0 && k++ < maxiter)
- {
- mantissa *= width;
- mantissa = modf(mantissa, &intpart);
- num_ <<= shift;
- num_ += (long)intpart;
- exponent -= shift;
- }
- if (exponent > 0)
- num_ <<= exponent;
- else if (exponent < 0)
- den_ <<= -exponent;
- } else {
- sign_ = 0;
+
+ const int FACT = 1 << 20;
+
+ /*
+ FIXME
+
+ SHOULD TEST THIS
+
+ suck me gently with a vacuum cleaner. Thanks to Afie for this wierd idea.
+ */
+ num_ = (unsigned int) (mantissa * FACT);
+ den_ = (unsigned int) FACT;
+ normalise ();
+ num_ <<= expt;
+ }
+ else
+ {
+ num_ = 0;
+ den_ = 1;
+ sign_ =0;
+ normalise ();
}
- normalise();
}
@@ -262,11 +257,6 @@ Rational::Rational (Rational const &r)
copy (r);
}
-Rational::operator String () const
-{
- return str ();
-}
-
String
Rational::str () const
{
@@ -275,9 +265,9 @@ Rational::str () const
String s (sign_ > 0 ? "" : "-" );
return String (s + "infinity");
}
- String s (num ());
+ String s = to_str (num ());
if (den () != 1 && num ())
- s += "/" + String (den ());
+ s += "/" + to_str (den ());
return s;
}
diff --git a/flower/scalar.cc b/flower/scalar.cc
index bdd2452ad7..c1f69eda60 100644
--- a/flower/scalar.cc
+++ b/flower/scalar.cc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <assert.h>
diff --git a/flower/string-convert.cc b/flower/string-convert.cc
index dd89038d09..bb293f062d 100644
--- a/flower/string-convert.cc
+++ b/flower/string-convert.cc
@@ -11,10 +11,10 @@
#include "string.hh"
#include "string-convert.hh"
#include "rational.hh"
-#include "varray.hh"
+#include "array.hh"
/**
- a safe length for stringconversion buffers
+ A safe length for stringconversion buffers.
worst case would be %f printing HUGE (or 1/HUGE), which is approx
2e318, this number would have approx 318 zero's in its string.
@@ -24,17 +24,25 @@
@see
man 3 snprintf
*/
+
+// hmm, this is shorter even than PATH_MAX
static const int STRING_BUFFER_LEN=1024;
String
+String_convert::bool_str (bool b)
+{
+ return String (b ? "true" : "false");
+}
+
+String
String_convert::bin2hex_str (String bin_str)
{
String str;
Byte const* byte_C = bin_str.byte_C();
for (int i = 0; i < bin_str.length_i(); i++)
{
- str += (char)nibble2hex_byte (*byte_C >> 4);
- str += (char)nibble2hex_byte (*byte_C++);
+ str += to_str ((char)nibble2hex_byte (*byte_C >> 4));
+ str += to_str ((char)nibble2hex_byte (*byte_C++));
}
return str;
}
@@ -109,7 +117,7 @@ String_convert::hex2bin_i (String hex_str, String& bin_str_r)
int low_i = hex2nibble_i (*byte_C++);
if (high_i < 0 || low_i < 0)
return 1; // illegal char
- bin_str_r += String ((char)(high_i << 4 | low_i), 1 );
+ bin_str_r += to_str ((char)(high_i << 4 | low_i), 1 );
i += 2;
}
return 0;
@@ -147,10 +155,10 @@ String_convert::i2dec_str (int i, int length_i, char ch)
fill_ch = '0';
// ugh
- String dec_str (i);
+ String dec_str = to_str (i);
// ugh
- return String (fill_ch, length_i - dec_str.length_i()) + dec_str;
+ return to_str (fill_ch, length_i - dec_str.length_i()) + dec_str;
}
@@ -165,16 +173,16 @@ String_convert::u2hex_str (unsigned u, int length_i, char fill_ch)
#if 1 // both go...
while (u)
{
- str = String ((char)((u % 16)["0123456789abcdef"] ) ) + str;
+ str = to_str ((char)((u % 16)["0123456789abcdef"] ) ) + str;
u /= 16;
}
#else
str += int_str (u, "%x"); // hmm. %lx vs. %x -> portability?
#endif
- str = String (fill_ch, length_i - str.length_i()) + str;
+ str = to_str (fill_ch, length_i - str.length_i()) + str;
while ((str.length_i() > length_i) && (str[ 0 ] == 'f' ) )
- str = str.cut (2, INT_MAX);
+ str = str.cut_str (2, INT_MAX);
return str;
}
@@ -208,6 +216,25 @@ String_convert::int_str (int i, char const* fmt)
return String (buffer);
}
+String
+String_convert::form_str (char const* format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ char buffer[STRING_BUFFER_LEN];
+ vsnprintf (buffer, STRING_BUFFER_LEN, format, args);
+ va_end (args);
+ return String (buffer);
+}
+
+String
+String_convert::vform_str (char const* format, va_list args)
+{
+ char buffer[STRING_BUFFER_LEN];
+ vsnprintf (buffer, STRING_BUFFER_LEN, format, args);
+ return String (buffer);
+}
+
/**
Convert a double to a string.
@@ -262,7 +289,7 @@ String_convert::pointer_str (void const *l)
String
String_convert::precision_str (double x, int n)
{
- String format = "%." + String (0 >? n - 1) + "e";
+ String format = "%." + to_str (0 >? n - 1) + "e";
String str = double_str (abs (x), format.ch_C ());
int exp = str.right_str (3).value_i ();
@@ -276,14 +303,14 @@ String_convert::precision_str (double x, int n)
if (exp == 0)
return (sign (x) > 0 ? str : "-" + str);
- str = str.left_str (1) + str.cut (2, INT_MAX);
+ str = str.left_str (1) + str.cut_str (2, INT_MAX);
int dot = 1 + exp;
if (dot <= 0)
- str = "0." + String ('0', -dot) + str;
+ str = "0." + to_str ('0', -dot) + str;
else if (dot >= str.length_i ())
- str += String ('0', dot - str.length_i ());
+ str += to_str ('0', dot - str.length_i ());
else if (( dot > 0) && (dot < str.length_i ()))
- str = str.left_str (dot) + '.' + str.cut (dot, INT_MAX);
+ str = str.left_str (dot) + "." + str.cut_str (dot, INT_MAX);
else
assert (0);
@@ -299,7 +326,9 @@ String_convert::split_arr (String str, char c)
{
String s = str.left_str (i);
a.push (s);
- str = str.cut (i + 1, INT_MAX);
+ while (str[++i] == c)
+ ;
+ str = str.cut_str (i, INT_MAX);
i = str.index_i (c);
}
if (str.length_i ())
diff --git a/flower/string.cc b/flower/string.cc
index 366abcd6bf..70278756b4 100644
--- a/flower/string.cc
+++ b/flower/string.cc
@@ -15,6 +15,7 @@
#include <assert.h>
#include <string.h>
+#include <stdarg.h>
#include "string.hh"
#include "libc-extension.hh"
@@ -27,21 +28,28 @@ void* mymemmove (void* dest, void const* src, size_t n);
// return array, alloced with new.
Byte*
-String::copy_byte_p() const
+String::copy_byte_p () const
{
- Byte const* src = strh_.byte_C();
- Byte* dest = new Byte[strh_.length_i() + 1];
- memcpy (dest, src, strh_.length_i() + 1);
+ Byte const* src = strh_.byte_C ();
+ Byte* dest = new Byte[strh_.length_i () + 1];
+ memcpy (dest, src, strh_.length_i () + 1);
return dest;
}
+
+char*
+String::copy_ch_p () const
+{
+ return (char*)copy_byte_p ();
+}
+
void
String::print_on (ostream& os) const
{
- if (!strh_.is_binary_bo())
- os << ch_C();
+ if (!strh_.is_binary_bo ())
+ os << ch_C ();
else
- for (int i = 0; i < length_i(); i++)
- os << (Byte)(*this)[ i ];
+ for (int i = 0; i < length_i (); i++)
+ os << (Byte) (*this)[ i ];
}
/*
@@ -54,48 +62,63 @@ String::operator = (String const&source)
return *this;
}
-String::String (double f, char const* fmt)
-{
- *this= String_convert::double_str (f,fmt);
+String::String (char const* source)
+{
+ assert (source);
+ strh_ = source;
}
-String::String (char c, int n)
-{
- *this = String_convert::char_str (c,n);
+String::String (Byte const* byte_l, int length_i)
+{
+ strh_.set (byte_l, length_i);
}
/**
@see
- String_convert::int_str
+ String_convert::
*/
-String::String (int i, char const * format)
+String
+to_str (char c, int n)
{
- *this = String_convert::int_str (i,format);
+ return String_convert::char_str (c, n);
}
-String::String (bool b)
+String
+to_str (double f, char const* format)
{
- *this = (char const*) (b ? "true" : "false");
+ return String_convert::double_str (f, format);
}
-String::String (char const* source)
-{
- assert (source);
- strh_ = source;
+String
+to_str (int i, char const * format)
+{
+ return String_convert::int_str (i, format);
}
-String::String (Byte const* byte_l, int length_i)
-{
- strh_.set (byte_l, length_i);
+String
+to_str (bool b)
+{
+ return String_convert::bool_str (b);
+}
+
+String
+to_str (char const* format, ... )
+{
+ va_list args;
+ va_start (args, format);
+ String str = String_convert::vform_str (format, args);
+ va_end (args);
+ return str;
}
+
void
String::append (String s)
{
- strh_.append (s.byte_C(), s.length_i());
+ strh_.append (s.byte_C (), s.length_i ());
}
void
-String::operator +=(String s)
+String::operator += (String s)
{
append (s);
}
@@ -108,33 +131,33 @@ String::prepend (String s)
}
int
-String::length_i() const
+String::length_i () const
{
- return strh_.length_i();
+ return strh_.length_i ();
}
Byte const*
-String::byte_C() const
+String::byte_C () const
{
- return strh_.byte_C();
+ return strh_.byte_C ();
}
char const*
-String::ch_C() const
+String::ch_C () const
{
- return strh_.ch_C();
+ return strh_.ch_C ();
}
Byte*
-String::byte_l()
+String::byte_l ()
{
- return strh_.byte_l();
+ return strh_.byte_l ();
}
char*
-String::ch_l()
+String::ch_l ()
{
- return strh_.ch_l();
+ return strh_.ch_l ();
}
bool
@@ -148,28 +171,29 @@ String::empty_b () const
int
String::compare_i (String const& s1, String const& s2)
{
- Byte const* p1 = s1.byte_C();
- Byte const* p2 = s2.byte_C();
+ Byte const* p1 = s1.byte_C ();
+ Byte const* p2 = s2.byte_C ();
if (p1 == p2)
return 0;
/*
don't forget the terminating '\0'
*/
- int f = (s1.length_i() <? s2.length_i());
+ int f = (s1.length_i () <? s2.length_i ());
int cmp_length = 1+ f;
- return memcmp (p1, p2, cmp_length);
+ int i = memcmp (p1, p2, cmp_length);
+ return i;
}
int
String::index_last_i (char const c) const
{
- if (!length_i())
+ if (!length_i ())
return -1;
- char const* me = strh_.ch_C();
- char const* p = memrchr ((Byte*)me, length_i(), c);
+ char const* me = strh_.ch_C ();
+ char const* p = (char const*)memrchr ( (Byte*)me, length_i (), c);
if (p)
return p - me;
return -1;
@@ -180,7 +204,7 @@ String::index_last_i (char const* string) const // UGK!
{
assert (false); // broken
int length = strlen (string); // ugrh
- if (!length_i() || !length)
+ if (!length_i () || !length)
return -1;
int next_i = index_i (string);
@@ -191,7 +215,7 @@ String::index_last_i (char const* string) const // UGK!
while (next_i >= 0)
{
index_i += next_i;
- next_i = right_str (length_i() - index_i - length).index_i (string );
+ next_i = right_str (length_i () - index_i - length).index_i (string );
}
return index_i;
}
@@ -199,16 +223,16 @@ String::index_last_i (char const* string) const // UGK!
/** find a character.
@return
- the index of the leftmost character #c# (0 <= return < length_i()),
+ the index of the leftmost character #c# (0 <= return < length_i ()),
or -1 if not found.
- ? should return length_i()?, as in string.left_str (index_i (delimiter))
+ ? should return length_i ()?, as in string.left_str (index_i (delimiter))
*/
int
String::index_i (char c) const
{
- char const* me = strh_.ch_C();
- char const* p = (char const *) memchr (me,c, length_i());
+ char const* me = strh_.ch_C ();
+ char const* p = (char const *) memchr (me,c, length_i ());
if (p)
return p - me;
return -1;
@@ -223,10 +247,10 @@ String::index_i (char c) const
int
String::index_i (String searchfor) const
{
- char const* me = strh_.ch_C();
+ char const* me = strh_.ch_C ();
char const* p = (char const *)
- memmem (me, length_i(), searchfor.ch_C(), searchfor.length_i ());
+ memmem (me, length_i (), searchfor.ch_C (), searchfor.length_i ());
if (p)
return p - me;
@@ -237,19 +261,23 @@ String::index_i (String searchfor) const
/** find chars of a set.
@return
- the index of the leftmost occurance of an element of #set#
- */
+
+ the index of the leftmost occurance of an element of #set#. -1 if
+ nothing is found.
+
+
+*/
int
String::index_any_i (String set) const
{
- int n = length_i();
+ int n = length_i ();
if (!n)
return -1;
- void const * me_l = (void const *) strh_.ch_C();
- for (int i=0; i < set.length_i(); i++)
+ void const * me_l = (void const *) strh_.ch_C ();
+ for (int i=0; i < set.length_i (); i++)
{
- char * found=(char*) memchr (me_l, set[i], n );
+ char * found= (char*) memchr (me_l, set[i], n );
if (found)
{
return found - me_l;
@@ -261,7 +289,7 @@ String::index_any_i (String set) const
String
String::left_str (int n) const
{
- if (n >= length_i())
+ if (n >= length_i ())
return *this;
String retval;
@@ -276,13 +304,13 @@ String::left_str (int n) const
String
String::right_str (int n) const
{
- if (n > length_i())
+ if (n > length_i ())
return *this;
if (n < 1)
return "";
- return String (strh_.byte_C() + length_i() - n, n);
+ return String (strh_.byte_C () + length_i () - n, n);
}
@@ -299,11 +327,11 @@ String::nomid_str (int index_i, int n) const
return
left_str (index_i) +
- right_str (length_i() - index_i - n) ;
+ right_str (length_i () - index_i - n) ;
}
String
-String::cut (int index_i, int n) const
+String::cut_str (int index_i, int n) const
{
if (index_i <0)
{
@@ -311,60 +339,60 @@ String::cut (int index_i, int n) const
index_i=0;
}
- if (!length_i() || (index_i < 0) || (index_i >= length_i () ) || (n < 1 ) )
- return String();
+ if (!length_i () || (index_i < 0) || (index_i >= length_i () ) || (n < 1 ) )
+ return String ();
- if ((n > length_i()) || (index_i + n > length_i () ) )
- n = length_i() - index_i;
+ if ( (n > length_i ()) || (index_i + n > length_i () ) )
+ n = length_i () - index_i;
- return String (byte_C() + index_i, n);
+ return String (byte_C () + index_i, n);
}
String
-String::upper_str() const
+String::upper_str () const
{
String str = *this;
- str.to_upper();
+ str.to_upper ();
return str;
}
void
-String::to_upper()
+String::to_upper ()
{
- char *s = (char*)strh_.byte_l();
- strnupr (s ,length_i());
+ char *s = (char*)strh_.byte_l ();
+ strnupr (s ,length_i ());
}
void
-String::to_lower()
+String::to_lower ()
{
- char* s = strh_.ch_l();
- strnlwr (s,length_i());
+ char* s = strh_.ch_l ();
+ strnlwr (s,length_i ());
}
String
-String::lower_str() const
+String::lower_str () const
{
String str = *this;
- str.to_lower();
+ str.to_lower ();
return str;
}
String
-String::reversed_str() const
+String::reversed_str () const
{
String str = *this;
- strrev (str.byte_l(), str.length_i ());
+ strrev (str.byte_l (), str.length_i ());
return str;
}
int
-String::value_i() const
+String::value_i () const
{
return String_convert::dec2_i (*this);
}
double
-String::value_f() const
+String::value_f () const
{
return String_convert::dec2_f (*this);
}
diff --git a/flower/stringutil.cc b/flower/stringutil.cc
index f10adcb623..f3c2906c27 100644
--- a/flower/stringutil.cc
+++ b/flower/stringutil.cc
@@ -6,7 +6,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> */
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */
#ifdef STRING_DEBUG
#define memmove mymemmove
diff --git a/flower/text-db.cc b/flower/text-db.cc
index fef860eb31..e59748f665 100644
--- a/flower/text-db.cc
+++ b/flower/text-db.cc
@@ -1,9 +1,9 @@
#include "text-db.hh"
bool
-Text_db::eof()
+Text_db::eof_b ()
{
Data_file::gobble_leading_white();
- return Data_file::eof();
+ return Data_file::eof_b();
}
void
@@ -11,41 +11,41 @@ Text_db::gobble_leading_white()
{
while (1)
{
- Data_file::gobble_leading_white();
- if (eof())
- return ;
- char c;
- if ((c = data_get()) !='\n')
- {
- data_unget (c);
- return ;
+ Data_file::gobble_leading_white();
+ if (eof_b ())
+ return ;
+ char c;
+ if ((c = data_get()) !='\n')
+ {
+ data_unget (c);
+ return ;
}
- }
+ }
}
Text_record
Text_db::get_record()
{
- while (1)
- {
- String s;
- Array<String> fields;
- assert (!eof());
+ while (1)
+ {
+ String s;
+ Array<String> fields;
+ assert (!eof_b ());
- while ((s = get_word()) != "")
- {
- fields.push (s);
- gobble_white();
- }
+ while ((s = get_word()) != "")
+ {
+ fields.push (s);
+ gobble_white();
+ }
- if (get_line() != "")
- assert (false);
+ if (get_line() != "")
+ assert (false);
- assert (fields.size());
- return Text_record (fields, get_name(), line ());
- }
+ assert (fields.size());
+ return Text_record (fields, get_name(), line ());
+ }
}
diff --git a/flower/text-stream.cc b/flower/text-stream.cc
index 01d2e8ef5c..9c87211c25 100644
--- a/flower/text-stream.cc
+++ b/flower/text-stream.cc
@@ -4,28 +4,38 @@ Text_stream::Text_stream (String fn)
{
ios::sync_with_stdio();
if (fn == "")
- {
- name = _("<STDIN>");
- f = stdin;
- }
-
- else
- {
- name = fn;
- f = fopen (fn.ch_C (), "r");
- }
+ {
+ name = _ ("<stdin>");
+ f = stdin;
+ }
- if (!f)
- {
- cerr <<__FUNCTION__<< _(": can't open `") << fn << "'\n";
- exit (1);
- }
+ else
+ {
+ name = fn;
+ f = fopen (fn.ch_C (), "r");
+ }
- line_no = 1;
+ if (!f)
+ {
+ cerr << __FUNCTION__
+ << ": " << _f ("can't open file: `%s'", fn) << '\n';
+ exit (1);
}
+ line_no = 1;
+}
+
void
Text_stream::message (String s)
{
- cerr << "\n"<<get_name() << ": " << line ()<<": "<<s<<endl;
+ cerr << '\n'<<get_name() << ": " << line ()<<": "<<s<<endl;
+}
+
+bool
+Text_stream::eof_b ()
+{
+ /* UGH UGH ugh*/
+ return
+ // !pushback.size () &&
+ feof (f);
}
diff --git a/flower/vector.cc b/flower/vector.cc
index fafa47a97e..e4eb654d69 100644
--- a/flower/vector.cc
+++ b/flower/vector.cc
@@ -3,7 +3,7 @@
source file of the Flower Library
- (c) 1996-98 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1996-98 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/init/Makefile b/init/Makefile
index 25c1bd56a9..8a72a4fd0e 100644
--- a/init/Makefile
+++ b/init/Makefile
@@ -2,15 +2,14 @@
depth = ..
-# generic stuff/Makefile
-#
-include ./$(depth)/make/Include.make
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
-INIFILES = $(wildcard *.ly)
-DISTFILES = Makefile $(INIFILES)
+INI_FILES = $(FLY_FILES) $(LY_FILES)
+# DIST_FILES = Makefile $(INI_FILES)
-INSTALLATION_DIR=$(datadir)/lilypond/
-INSTALLATION_FILES=$(INIFILES)
+INSTALLATION_DIR=$(datadir)
+INSTALLATION_FILES=$(INI_FILES)
-include $(depth)/make/Installfiles.make
+include $(stepdir)/Installfiles.make
diff --git a/init/bar-numbering.ly b/init/bar-numbering.ly
index e642545548..f7831b439c 100644
--- a/init/bar-numbering.ly
+++ b/init/bar-numbering.ly
@@ -1,13 +1,15 @@
% bar-numbering.ly
%
Staff = \translator {
- \type "Engraver_group_engraver";
+ \type "Line_group_engraver_group";
defaultclef = violin;
+ barColumnPriority = "0";
+ marginBreakPriority = "-4";
\consists "Bar_engraver";
\consists "Clef_engraver";
\consists "Key_engraver";
- \consists "Meter_engraver";
+ \consists "Time_signature_engraver";
\consists "Local_key_engraver";
\consists "Staff_sym_engraver";
\consists "Collision_engraver";
@@ -15,7 +17,6 @@ Staff = \translator {
\consists "Bar_column_engraver";
\consists "Bar_number_engraver";
\consists "Separating_line_group_engraver";
- \consists "Line_group_engraver";
\accepts "Voice";
}
diff --git a/init/book-fragment.ly b/init/book-fragment.ly
index 4491fdbd1a..08a4a3c97a 100644
--- a/init/book-fragment.ly
+++ b/init/book-fragment.ly
@@ -1,6 +1,6 @@
% Toplevel initialisation file.
-\version "0.1.15";
+\version "1.0.0";
\include "declarations.ly"
diff --git a/init/book-init.ly b/init/book-init.ly
new file mode 100644
index 0000000000..8ad5ef7a65
--- /dev/null
+++ b/init/book-init.ly
@@ -0,0 +1,14 @@
+% Toplevel initialisation file.
+
+\version "1.0.0";
+
+
+\include "declarations.ly";
+\include "paper16.ly"
+
+default_paper = \paper{
+ \paper_sixteen
+}
+
+
+\maininput
diff --git a/init/center-fragment.ly b/init/center-fragment.ly
new file mode 100644
index 0000000000..1b4c419c10
--- /dev/null
+++ b/init/center-fragment.ly
@@ -0,0 +1,24 @@
+% Toplevel initialisation file.
+
+\version "1.0.0";
+
+
+\include "declarations.ly"
+
+\include "paper16.ly";
+
+default_paper = \paper {
+ \paper_sixteen
+ linewidth = 7.\cm;
+}
+
+\score {
+% \melodic\relative c {
+ \melodic {
+ \maininput
+ }
+ \paper {
+ linewidth = -1.0\cm;
+ castingalgorithm = \Wordwrap;
+ }
+}
diff --git a/init/center.ly b/init/center.ly
new file mode 100644
index 0000000000..89b32b236c
--- /dev/null
+++ b/init/center.ly
@@ -0,0 +1,15 @@
+% Toplevel initialisation file.
+
+\version "1.0.0";
+
+
+\include "declarations.ly"
+\include "paper16.ly"
+
+default_paper = \paper {
+ \paper_sixteen;
+% linewidth = 7.\cm;
+ linewidth = 11.\cm;
+}
+
+\maininput
diff --git a/init/declarations.ly b/init/declarations.ly
index e54f56738d..73ec21f886 100644
--- a/init/declarations.ly
+++ b/init/declarations.ly
@@ -32,3 +32,6 @@ break = { \penalty = 10000; }
nobreak = { \penalty = -10000; }
\include "property.ly"
+
+% music = "\melodic\relative c"
+
diff --git a/init/deutsch.ly b/init/deutsch.ly
index 4de5bbf295..ef247f87f3 100644
--- a/init/deutsch.ly
+++ b/init/deutsch.ly
@@ -11,41 +11,41 @@
% have a rhythmic part too. This is the reason that we don't write 'note { .. }'
%
\notenames {
- ceses = \musical_pitch { -1 0 -2 }
- ces = \musical_pitch { -1 0 -1 }
- c = \musical_pitch { -1 0 0 }
- cis = \musical_pitch { -1 0 1 }
- cisis = \musical_pitch { -1 0 2 }
- deses = \musical_pitch { -1 1 -2 }
- des = \musical_pitch { -1 1 -1 }
- d = \musical_pitch { -1 1 0 }
- dis = \musical_pitch { -1 1 1 }
- disis = \musical_pitch { -1 1 2 }
- eses = \musical_pitch { -1 2 -2 }
- es = \musical_pitch { -1 2 -1 }
- e = \musical_pitch { -1 2 0 }
- eis = \musical_pitch { -1 2 1 }
- eisis = \musical_pitch { -1 2 2 }
- feses = \musical_pitch { -1 3 -2 }
- fes = \musical_pitch { -1 3 -1 }
- f = \musical_pitch { -1 3 0 }
- fis = \musical_pitch { -1 3 1 }
- fisis = \musical_pitch { -1 3 2 }
- geses = \musical_pitch { -1 4 -2 }
- ges = \musical_pitch { -1 4 -1 }
- g = \musical_pitch { -1 4 0 }
- gis = \musical_pitch { -1 4 1 }
- gisis = \musical_pitch { -1 4 2 }
- ases = \musical_pitch { -1 5 -2 }
- as = \musical_pitch { -1 5 -1 }
- a = \musical_pitch { -1 5 0 }
- ais = \musical_pitch { -1 5 1 }
- aisis = \musical_pitch { -1 5 2 }
- heses = \musical_pitch { -1 6 -2 }
- b = \musical_pitch { -1 6 -1 }
- h = \musical_pitch { -1 6 0 }
- his = \musical_pitch { -1 6 1 }
- hisis = \musical_pitch { -1 6 2 }
+ ceses = \musicalpitch { -1 0 -2 }
+ ces = \musicalpitch { -1 0 -1 }
+ c = \musicalpitch { -1 0 0 }
+ cis = \musicalpitch { -1 0 1 }
+ cisis = \musicalpitch { -1 0 2 }
+ deses = \musicalpitch { -1 1 -2 }
+ des = \musicalpitch { -1 1 -1 }
+ d = \musicalpitch { -1 1 0 }
+ dis = \musicalpitch { -1 1 1 }
+ disis = \musicalpitch { -1 1 2 }
+ eses = \musicalpitch { -1 2 -2 }
+ es = \musicalpitch { -1 2 -1 }
+ e = \musicalpitch { -1 2 0 }
+ eis = \musicalpitch { -1 2 1 }
+ eisis = \musicalpitch { -1 2 2 }
+ feses = \musicalpitch { -1 3 -2 }
+ fes = \musicalpitch { -1 3 -1 }
+ f = \musicalpitch { -1 3 0 }
+ fis = \musicalpitch { -1 3 1 }
+ fisis = \musicalpitch { -1 3 2 }
+ geses = \musicalpitch { -1 4 -2 }
+ ges = \musicalpitch { -1 4 -1 }
+ g = \musicalpitch { -1 4 0 }
+ gis = \musicalpitch { -1 4 1 }
+ gisis = \musicalpitch { -1 4 2 }
+ ases = \musicalpitch { -1 5 -2 }
+ as = \musicalpitch { -1 5 -1 }
+ a = \musicalpitch { -1 5 0 }
+ ais = \musicalpitch { -1 5 1 }
+ aisis = \musicalpitch { -1 5 2 }
+ heses = \musicalpitch { -1 6 -2 }
+ b = \musicalpitch { -1 6 -1 }
+ h = \musicalpitch { -1 6 0 }
+ his = \musicalpitch { -1 6 1 }
+ hisis = \musicalpitch { -1 6 2 }
%
@@ -53,41 +53,41 @@
%
- Ceses = \musical_pitch { -2 0 -2 }
- Ces = \musical_pitch { -2 0 -1 }
- C = \musical_pitch { -2 0 0 }
- Cis = \musical_pitch { -2 0 1 }
- Cisis = \musical_pitch { -2 0 2 }
- Deses = \musical_pitch { -2 1 -2 }
- Des = \musical_pitch { -2 1 -1 }
- D = \musical_pitch { -2 1 0 }
- Dis = \musical_pitch { -2 1 1 }
- Disis = \musical_pitch { -2 1 2 }
- Eses = \musical_pitch { -2 2 -2 }
- Es = \musical_pitch { -2 2 -1 }
- E = \musical_pitch { -2 2 0 }
- Eis = \musical_pitch { -2 2 1 }
- Eisis = \musical_pitch { -2 2 2 }
- Feses = \musical_pitch { -2 3 -2 }
- Fes = \musical_pitch { -2 3 -1 }
- F = \musical_pitch { -2 3 0 }
- Fis = \musical_pitch { -2 3 1 }
- Fisis = \musical_pitch { -2 3 2 }
- Geses = \musical_pitch { -2 4 -2 }
- Ges = \musical_pitch { -2 4 -1 }
- G = \musical_pitch { -2 4 0 }
- Gis = \musical_pitch { -2 4 1 }
- Gisis = \musical_pitch { -2 4 2 }
- Ases = \musical_pitch { -2 5 -2 }
- As = \musical_pitch { -2 5 -1 }
- A = \musical_pitch { -2 5 0 }
- Ais = \musical_pitch { -2 5 1 }
- Aisis = \musical_pitch { -2 5 2 }
- Heses = \musical_pitch { -2 6 -2 }
- B = \musical_pitch { -2 6 -1 }
- H = \musical_pitch { -2 6 0 }
- His = \musical_pitch { -2 6 1 }
- Hisis = \musical_pitch { -2 6 2 }
+ Ceses = \musicalpitch { -2 0 -2 }
+ Ces = \musicalpitch { -2 0 -1 }
+ C = \musicalpitch { -2 0 0 }
+ Cis = \musicalpitch { -2 0 1 }
+ Cisis = \musicalpitch { -2 0 2 }
+ Deses = \musicalpitch { -2 1 -2 }
+ Des = \musicalpitch { -2 1 -1 }
+ D = \musicalpitch { -2 1 0 }
+ Dis = \musicalpitch { -2 1 1 }
+ Disis = \musicalpitch { -2 1 2 }
+ Eses = \musicalpitch { -2 2 -2 }
+ Es = \musicalpitch { -2 2 -1 }
+ E = \musicalpitch { -2 2 0 }
+ Eis = \musicalpitch { -2 2 1 }
+ Eisis = \musicalpitch { -2 2 2 }
+ Feses = \musicalpitch { -2 3 -2 }
+ Fes = \musicalpitch { -2 3 -1 }
+ F = \musicalpitch { -2 3 0 }
+ Fis = \musicalpitch { -2 3 1 }
+ Fisis = \musicalpitch { -2 3 2 }
+ Geses = \musicalpitch { -2 4 -2 }
+ Ges = \musicalpitch { -2 4 -1 }
+ G = \musicalpitch { -2 4 0 }
+ Gis = \musicalpitch { -2 4 1 }
+ Gisis = \musicalpitch { -2 4 2 }
+ Ases = \musicalpitch { -2 5 -2 }
+ As = \musicalpitch { -2 5 -1 }
+ A = \musicalpitch { -2 5 0 }
+ Ais = \musicalpitch { -2 5 1 }
+ Aisis = \musicalpitch { -2 5 2 }
+ Heses = \musicalpitch { -2 6 -2 }
+ B = \musicalpitch { -2 6 -1 }
+ H = \musicalpitch { -2 6 0 }
+ His = \musicalpitch { -2 6 1 }
+ Hisis = \musicalpitch { -2 6 2 }
}
diff --git a/init/engraver.ly b/init/engraver.ly
index 8e6c1a1a00..d2f6c24d2d 100644
--- a/init/engraver.ly
+++ b/init/engraver.ly
@@ -3,14 +3,22 @@
%
Staff = \translator {
- \type "Engraver_group_engraver";
+ \type "Line_group_engraver_group";
+%{
+ The Hara_kiri_line_group_engraver is a Line_group_engraver
+ that will not typeset an empty line of staff, i.e., a line
+ of staff with only rests in it. This is needed for orchestral
+ scores. Comment-out Line_group_engraver_group, and uncomment
+ Hara_kiri_line_group_engraver.
+%}
+% \type "Hara_kiri_line_group_engraver";
defaultclef = violin;
\consists "Bar_engraver";
\consists "Clef_engraver";
\consists "Key_engraver";
- \consists "Meter_engraver";
\consists "Local_key_engraver";
+ \consists "Time_signature_engraver";
\consists "Staff_sym_engraver";
\consists "Collision_engraver";
\consists "Rest_collision_engraver";
@@ -30,23 +38,38 @@ Staff = \translator {
\consists "Bar_column_engraver";
\consists "Bar_number_engraver";
%}
+%{
+ The Staff_margin_engraver puts the name of the instrument
+ (\property Staff.instrument; Staff.instr for subsequent lines)
+ to the left of a staff.
+%}
+%{
+ \consists "Staff_margin_engraver";
+%}
\consists "Separating_line_group_engraver";
- \consists "Line_group_engraver";
-% \consists "Hara_kiri_line_group_engraver";
\accepts "Voice";
}
+ChoireStaff = \translator {
+ \type "Line_group_engraver_group";
+ \consists "Vertical_align_engraver";
+ \consists "Staff_group_bar_engraver";
+ \accepts "Staff";
+ \accepts "RhythmicStaff";
+ \accepts "GrandStaff";
+ \accepts "Lyrics";
+}
+
-Rhythmic_staff = \translator
+RhythmicStaff = \translator
{
- \type "Engraver_group_engraver";
+ \type "Line_group_engraver_group";
nolines = "1";
\consists "Pitch_squash_engraver";
\consists "Bar_engraver";
- \consists "Meter_engraver";
+ \consists "Time_signature_engraver";
\consists "Staff_sym_engraver";
- \consists "Line_group_engraver";
\accepts "Voice";
}
@@ -54,6 +77,7 @@ Voice = \translator {
\type "Engraver_group_engraver";
\consists "Dynamic_engraver";
\consists "Rest_engraver";
+ \consists "Dot_column_engraver";
\consists "Stem_engraver";
\consists "Plet_engraver";
\consists "Beam_engraver";
@@ -61,58 +85,58 @@ Voice = \translator {
\consists "Multi_measure_rest_engraver";
\consists "Script_engraver";
\consists "Rhythmic_column_engraver";
+ \consists "Font_size_engraver";
\consists "Slur_engraver";
- \accepts "Thread";
+ \consists "Ties_engraver";
+ \consists "Note_heads_engraver" ;
+ \consists "Skip_req_swallow_translator";
+ %\accepts "Thread";
}
Thread = \translator {
\type "Engraver_group_engraver";
- \consists "Skip_req_swallow_translator";
- \consists "Note_head_engraver" ;
- \consists "Tie_engraver";
+% \consists "Note_head_engraver" ;
+% \consists "Tie_engraver";
}
-Grand_staff = \translator {
- \type "Engraver_group_engraver";
+GrandStaff = \translator {
+ \type "Line_group_engraver_group";
\consists "Span_bar_engraver";
\consists "Vertical_align_engraver";
\consists "Piano_bar_engraver";
% This should come last
- \consists "Line_group_engraver";
\accepts "Staff";
}
-Staff_group = \translator {
- \type "Engraver_group_engraver";
+StaffGroup = \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";
- \consists "Line_group_engraver";
-% \consists "Hara_kiri_line_group_engraver";
+
\accepts "Staff";
- \accepts "Rhythmic_staff";
- \accepts "Grand_staff";
+ \accepts "RhythmicStaff";
+ \accepts "GrandStaff";
\accepts "Lyrics";
}
-Lyric_voice =
+LyricVoice =
\translator{
- \type "Engraver_group_engraver";
+ \type "Line_group_engraver_group";
\consists "Separating_line_group_engraver";
\consists "Lyric_engraver";
- \consists "Line_group_engraver";
\consists "Beam_req_swallow_translator";
\consists "Plet_swallow_engraver";
}
Lyrics = \translator {
- \type "Engraver_group_engraver";
+ \type "Line_group_engraver_group";
\consists "Vertical_align_engraver";
- \consists "Line_group_engraver";
- \accepts "Lyric_voice";
+ \accepts "LyricVoice";
}
Score = \translator {
@@ -124,20 +148,22 @@ Score = \translator {
\consists "Bar_column_engraver";
\consists "Bar_number_engraver";
%}
+ \consists "Bar_column_engraver";
\consists "Span_score_bar_engraver";
\consists "Score_priority_engraver";
\consists "Priority_horizontal_align_engraver";
\consists "Vertical_align_engraver";
- \accepts "Staff_group";
+ \accepts "StaffGroup";
\accepts "Staff";
- \accepts "Rhythmic_staff";
+ \accepts "RhythmicStaff";
\accepts "Lyrics";
- \accepts "Grand_staff";
+ \accepts "GrandStaff";
+ \accepts "ChoireStaff";
}
-Stupid_score = \translator {
+StupidScore = \translator {
\type Score_engraver;
\consists "Staff_sym_engraver";
}
diff --git a/init/fragment.ly b/init/fragment.ly
new file mode 100644
index 0000000000..1b4c419c10
--- /dev/null
+++ b/init/fragment.ly
@@ -0,0 +1,24 @@
+% Toplevel initialisation file.
+
+\version "1.0.0";
+
+
+\include "declarations.ly"
+
+\include "paper16.ly";
+
+default_paper = \paper {
+ \paper_sixteen
+ linewidth = 7.\cm;
+}
+
+\score {
+% \melodic\relative c {
+ \melodic {
+ \maininput
+ }
+ \paper {
+ linewidth = -1.0\cm;
+ castingalgorithm = \Wordwrap;
+ }
+}
diff --git a/init/no-tape.ly b/init/init.fly
index a955fd9258..3d94ef25ed 100644
--- a/init/no-tape.ly
+++ b/init/init.fly
@@ -1,13 +1,14 @@
% Toplevel initialisation file.
-\version "0.1.15";
+\version "1.0.0";
\include "declarations.ly"
\score {
- \melodic {
+ \melodic\relative c {
\maininput
}
\paper { }
+ \midi{ }
}
diff --git a/init/lily-init.ly b/init/init.ly
index 237dcbf423..91fa45796d 100644
--- a/init/lily-init.ly
+++ b/init/init.ly
@@ -1,6 +1,6 @@
% Toplevel initialisation file.
-\version "0.1.15";
+\version "1.0.0";
\include "declarations.ly";
diff --git a/init/italiano.ly b/init/italiano.ly
index 0626937cef..dd600a4396 100644
--- a/init/italiano.ly
+++ b/init/italiano.ly
@@ -11,39 +11,39 @@
% contributed by Paolo Zuliani <zuliap@easynet.it>
\notenames {
- dobb = \musical_pitch { -1 0 -2 }
- dob = \musical_pitch { -1 0 -1 }
- do = \musical_pitch { -1 0 0 }
- dod = \musical_pitch { -1 0 1 }
- dodd = \musical_pitch { -1 0 2 }
- rebb = \musical_pitch { -1 1 -2 }
- reb = \musical_pitch { -1 1 -1 }
- re = \musical_pitch { -1 1 0 }
- red = \musical_pitch { -1 1 1 }
- redd = \musical_pitch { -1 1 2 }
- mibb = \musical_pitch { -1 2 -2 }
- mib = \musical_pitch { -1 2 -1 }
- mi = \musical_pitch { -1 2 0 }
- mid = \musical_pitch { -1 2 1 }
- midd = \musical_pitch { -1 2 2 }
- fabb = \musical_pitch { -1 3 -2 }
- fab = \musical_pitch { -1 3 -1 }
- fa = \musical_pitch { -1 3 0 }
- fad = \musical_pitch { -1 3 1 }
- fadd = \musical_pitch { -1 3 2 }
- solbb = \musical_pitch { -1 4 -2 }
- solb = \musical_pitch { -1 4 -1 }
- sol = \musical_pitch { -1 4 0 }
- sold = \musical_pitch { -1 4 1 }
- soldd = \musical_pitch { -1 4 2 }
- labb = \musical_pitch { -1 5 -2 }
- lab = \musical_pitch { -1 5 -1 }
- la = \musical_pitch { -1 5 0 }
- lad = \musical_pitch { -1 5 1 }
- ladd = \musical_pitch { -1 5 2 }
- sibb = \musical_pitch { -1 6 -2 }
- sib = \musical_pitch { -1 6 -1 }
- si = \musical_pitch { -1 6 0 }
- sid = \musical_pitch { -1 6 1 }
- sidd = \musical_pitch { -1 6 2 }
+ dobb = \musicalpitch { -1 0 -2 }
+ dob = \musicalpitch { -1 0 -1 }
+ do = \musicalpitch { -1 0 0 }
+ dod = \musicalpitch { -1 0 1 }
+ dodd = \musicalpitch { -1 0 2 }
+ rebb = \musicalpitch { -1 1 -2 }
+ reb = \musicalpitch { -1 1 -1 }
+ re = \musicalpitch { -1 1 0 }
+ red = \musicalpitch { -1 1 1 }
+ redd = \musicalpitch { -1 1 2 }
+ mibb = \musicalpitch { -1 2 -2 }
+ mib = \musicalpitch { -1 2 -1 }
+ mi = \musicalpitch { -1 2 0 }
+ mid = \musicalpitch { -1 2 1 }
+ midd = \musicalpitch { -1 2 2 }
+ fabb = \musicalpitch { -1 3 -2 }
+ fab = \musicalpitch { -1 3 -1 }
+ fa = \musicalpitch { -1 3 0 }
+ fad = \musicalpitch { -1 3 1 }
+ fadd = \musicalpitch { -1 3 2 }
+ solbb = \musicalpitch { -1 4 -2 }
+ solb = \musicalpitch { -1 4 -1 }
+ sol = \musicalpitch { -1 4 0 }
+ sold = \musicalpitch { -1 4 1 }
+ soldd = \musicalpitch { -1 4 2 }
+ labb = \musicalpitch { -1 5 -2 }
+ lab = \musicalpitch { -1 5 -1 }
+ la = \musicalpitch { -1 5 0 }
+ lad = \musicalpitch { -1 5 1 }
+ ladd = \musicalpitch { -1 5 2 }
+ sibb = \musicalpitch { -1 6 -2 }
+ sib = \musicalpitch { -1 6 -1 }
+ si = \musicalpitch { -1 6 0 }
+ sid = \musicalpitch { -1 6 1 }
+ sidd = \musicalpitch { -1 6 2 }
}
diff --git a/init/nederlands.ly b/init/nederlands.ly
index bec7306600..35b568d30e 100644
--- a/init/nederlands.ly
+++ b/init/nederlands.ly
@@ -11,45 +11,45 @@
%}
\notenames {
- ceses = \musical_pitch { -1 0 -2 }
- ces = \musical_pitch { -1 0 -1 }
- c = \musical_pitch { -1 0 0 }
- cis = \musical_pitch { -1 0 1 }
- cisis = \musical_pitch { -1 0 2 }
- deses = \musical_pitch { -1 1 -2 }
- des = \musical_pitch { -1 1 -1 }
- d = \musical_pitch { -1 1 0 }
- dis = \musical_pitch { -1 1 1 }
- disis = \musical_pitch { -1 1 2 }
- eeses = \musical_pitch { -1 2 -2 }
- eses = \musical_pitch { -1 2 -2 }
- ees = \musical_pitch { -1 2 -1 }
- es = \musical_pitch { -1 2 -1 }
- e = \musical_pitch { -1 2 0 }
- eis = \musical_pitch { -1 2 1 }
- eisis = \musical_pitch { -1 2 2 }
- feses = \musical_pitch { -1 3 -2 }
- fes = \musical_pitch { -1 3 -1 }
- f = \musical_pitch { -1 3 0 }
- fis = \musical_pitch { -1 3 1 }
- fisis = \musical_pitch { -1 3 2 }
- geses = \musical_pitch { -1 4 -2 }
- ges = \musical_pitch { -1 4 -1 }
- g = \musical_pitch { -1 4 0 }
- gis = \musical_pitch { -1 4 1 }
- gisis = \musical_pitch { -1 4 2 }
- aeses = \musical_pitch { -1 5 -2 }
- ases = \musical_pitch { -1 5 -2 }
- aes = \musical_pitch { -1 5 -1 }
- as = \musical_pitch { -1 5 -1 }
- a = \musical_pitch { -1 5 0 }
- ais = \musical_pitch { -1 5 1 }
- aisis = \musical_pitch { -1 5 2 }
- beses = \musical_pitch { -1 6 -2 }
- bes = \musical_pitch { -1 6 -1 }
- b = \musical_pitch { -1 6 0 }
- bis = \musical_pitch { -1 6 1 }
- bisis = \musical_pitch { -1 6 2 }
+ ceses = \musicalpitch { -1 0 -2 }
+ ces = \musicalpitch { -1 0 -1 }
+ c = \musicalpitch { -1 0 0 }
+ cis = \musicalpitch { -1 0 1 }
+ cisis = \musicalpitch { -1 0 2 }
+ deses = \musicalpitch { -1 1 -2 }
+ des = \musicalpitch { -1 1 -1 }
+ d = \musicalpitch { -1 1 0 }
+ dis = \musicalpitch { -1 1 1 }
+ disis = \musicalpitch { -1 1 2 }
+ eeses = \musicalpitch { -1 2 -2 }
+ eses = \musicalpitch { -1 2 -2 }
+ ees = \musicalpitch { -1 2 -1 }
+ es = \musicalpitch { -1 2 -1 }
+ e = \musicalpitch { -1 2 0 }
+ eis = \musicalpitch { -1 2 1 }
+ eisis = \musicalpitch { -1 2 2 }
+ feses = \musicalpitch { -1 3 -2 }
+ fes = \musicalpitch { -1 3 -1 }
+ f = \musicalpitch { -1 3 0 }
+ fis = \musicalpitch { -1 3 1 }
+ fisis = \musicalpitch { -1 3 2 }
+ geses = \musicalpitch { -1 4 -2 }
+ ges = \musicalpitch { -1 4 -1 }
+ g = \musicalpitch { -1 4 0 }
+ gis = \musicalpitch { -1 4 1 }
+ gisis = \musicalpitch { -1 4 2 }
+ aeses = \musicalpitch { -1 5 -2 }
+ ases = \musicalpitch { -1 5 -2 }
+ aes = \musicalpitch { -1 5 -1 }
+ as = \musicalpitch { -1 5 -1 }
+ a = \musicalpitch { -1 5 0 }
+ ais = \musicalpitch { -1 5 1 }
+ aisis = \musicalpitch { -1 5 2 }
+ beses = \musicalpitch { -1 6 -2 }
+ bes = \musicalpitch { -1 6 -1 }
+ b = \musicalpitch { -1 6 0 }
+ bis = \musicalpitch { -1 6 1 }
+ bisis = \musicalpitch { -1 6 2 }
%
@@ -57,43 +57,43 @@
%
- Ceses = \musical_pitch { -2 0 -2 }
- Ces = \musical_pitch { -2 0 -1 }
- C = \musical_pitch { -2 0 0 }
- Cis = \musical_pitch { -2 0 1 }
- Cisis = \musical_pitch { -2 0 2 }
- Deses = \musical_pitch { -2 1 -2 }
- Des = \musical_pitch { -2 1 -1 }
- D = \musical_pitch { -2 1 0 }
- Dis = \musical_pitch { -2 1 1 }
- Disis = \musical_pitch { -2 1 2 }
- Eses = \musical_pitch { -2 2 -2 }
- Es = \musical_pitch { -2 2 -1 }
- E = \musical_pitch { -2 2 0 }
- Eis = \musical_pitch { -2 2 1 }
- Eisis = \musical_pitch { -2 2 2 }
- Feses = \musical_pitch { -2 3 -2 }
- Fes = \musical_pitch { -2 3 -1 }
- F = \musical_pitch { -2 3 0 }
- Fis = \musical_pitch { -2 3 1 }
- Fisis = \musical_pitch { -2 3 2 }
- Geses = \musical_pitch { -2 4 -2 }
- Ges = \musical_pitch { -2 4 -1 }
- G = \musical_pitch { -2 4 0 }
- Gis = \musical_pitch { -2 4 1 }
- Gisis = \musical_pitch { -2 4 2 }
- Aeses = \musical_pitch { -2 5 -2 }
- Ases = \musical_pitch { -2 5 -2 }
- Aes = \musical_pitch { -2 5 -1 }
- As = \musical_pitch { -2 5 -1 }
- A = \musical_pitch { -2 5 0 }
- Ais = \musical_pitch { -2 5 1 }
- Aisis = \musical_pitch { -2 5 2 }
- Beses = \musical_pitch { -2 6 -2 }
- Bes = \musical_pitch { -2 6 -1 }
- B = \musical_pitch { -2 6 0 }
- Bis = \musical_pitch { -2 6 1 }
- Bisis = \musical_pitch { -2 6 2 }
+ Ceses = \musicalpitch { -2 0 -2 }
+ Ces = \musicalpitch { -2 0 -1 }
+ C = \musicalpitch { -2 0 0 }
+ Cis = \musicalpitch { -2 0 1 }
+ Cisis = \musicalpitch { -2 0 2 }
+ Deses = \musicalpitch { -2 1 -2 }
+ Des = \musicalpitch { -2 1 -1 }
+ D = \musicalpitch { -2 1 0 }
+ Dis = \musicalpitch { -2 1 1 }
+ Disis = \musicalpitch { -2 1 2 }
+ Eses = \musicalpitch { -2 2 -2 }
+ Es = \musicalpitch { -2 2 -1 }
+ E = \musicalpitch { -2 2 0 }
+ Eis = \musicalpitch { -2 2 1 }
+ Eisis = \musicalpitch { -2 2 2 }
+ Feses = \musicalpitch { -2 3 -2 }
+ Fes = \musicalpitch { -2 3 -1 }
+ F = \musicalpitch { -2 3 0 }
+ Fis = \musicalpitch { -2 3 1 }
+ Fisis = \musicalpitch { -2 3 2 }
+ Geses = \musicalpitch { -2 4 -2 }
+ Ges = \musicalpitch { -2 4 -1 }
+ G = \musicalpitch { -2 4 0 }
+ Gis = \musicalpitch { -2 4 1 }
+ Gisis = \musicalpitch { -2 4 2 }
+ Aeses = \musicalpitch { -2 5 -2 }
+ Ases = \musicalpitch { -2 5 -2 }
+ Aes = \musicalpitch { -2 5 -1 }
+ As = \musicalpitch { -2 5 -1 }
+ A = \musicalpitch { -2 5 0 }
+ Ais = \musicalpitch { -2 5 1 }
+ Aisis = \musicalpitch { -2 5 2 }
+ Beses = \musicalpitch { -2 6 -2 }
+ Bes = \musicalpitch { -2 6 -1 }
+ B = \musicalpitch { -2 6 0 }
+ Bis = \musicalpitch { -2 6 1 }
+ Bisis = \musicalpitch { -2 6 2 }
}
diff --git a/init/norsk.ly b/init/norsk.ly
index 591f363c77..714eb10e46 100644
--- a/init/norsk.ly
+++ b/init/norsk.ly
@@ -28,78 +28,78 @@
%}
\notenames {
- ceses = \musical_pitch { -1 0 -2 }
- cessess = \musical_pitch { -1 0 -2 }
- ces = \musical_pitch { -1 0 -1 }
- cess = \musical_pitch { -1 0 -1 }
- c = \musical_pitch { -1 0 0 }
- cis = \musical_pitch { -1 0 1 }
- ciss = \musical_pitch { -1 0 1 }
- cisis = \musical_pitch { -1 0 2 }
- cississ = \musical_pitch { -1 0 2 }
- deses = \musical_pitch { -1 1 -2 }
- dessess = \musical_pitch { -1 1 -2 }
- des = \musical_pitch { -1 1 -1 }
- dess = \musical_pitch { -1 1 -1 }
- d = \musical_pitch { -1 1 0 }
- dis = \musical_pitch { -1 1 1 }
- diss = \musical_pitch { -1 1 1 }
- disis = \musical_pitch { -1 1 2 }
- dississ = \musical_pitch { -1 1 2 }
- eeses = \musical_pitch { -1 2 -2 }
- eessess = \musical_pitch { -1 2 -2 }
- eses = \musical_pitch { -1 2 -2 }
- essess = \musical_pitch { -1 2 -2 }
- ees = \musical_pitch { -1 2 -1 }
- eess = \musical_pitch { -1 2 -1 }
- es = \musical_pitch { -1 2 -1 }
- ess = \musical_pitch { -1 2 -1 }
- e = \musical_pitch { -1 2 0 }
- eis = \musical_pitch { -1 2 1 }
- eiss = \musical_pitch { -1 2 1 }
- eisis = \musical_pitch { -1 2 2 }
- eississ = \musical_pitch { -1 2 2 }
- feses = \musical_pitch { -1 3 -2 }
- fessess = \musical_pitch { -1 3 -2 }
- fes = \musical_pitch { -1 3 -1 }
- fess = \musical_pitch { -1 3 -1 }
- f = \musical_pitch { -1 3 0 }
- fis = \musical_pitch { -1 3 1 }
- fiss = \musical_pitch { -1 3 1 }
- fisis = \musical_pitch { -1 3 2 }
- fississ = \musical_pitch { -1 3 2 }
- geses = \musical_pitch { -1 4 -2 }
- gessess = \musical_pitch { -1 4 -2 }
- ges = \musical_pitch { -1 4 -1 }
- gess = \musical_pitch { -1 4 -1 }
- g = \musical_pitch { -1 4 0 }
- g = \musical_pitch { -1 4 0 }
- gis = \musical_pitch { -1 4 1 }
- giss = \musical_pitch { -1 4 1 }
- gisis = \musical_pitch { -1 4 2 }
- gississ = \musical_pitch { -1 4 2 }
- aeses = \musical_pitch { -1 5 -2 }
- aessess = \musical_pitch { -1 5 -2 }
- ases = \musical_pitch { -1 5 -2 }
- assess = \musical_pitch { -1 5 -2 }
- aes = \musical_pitch { -1 5 -1 }
- aess = \musical_pitch { -1 5 -1 }
- as = \musical_pitch { -1 5 -1 }
- ass = \musical_pitch { -1 5 -1 }
- a = \musical_pitch { -1 5 0 }
- ais = \musical_pitch { -1 5 1 }
- aiss = \musical_pitch { -1 5 1 }
- aisis = \musical_pitch { -1 5 2 }
- aississ = \musical_pitch { -1 5 2 }
- bes = \musical_pitch { -1 6 -2 }
- bess = \musical_pitch { -1 6 -2 }
- b = \musical_pitch { -1 6 -1 }
- b = \musical_pitch { -1 6 -1 }
- h = \musical_pitch { -1 6 0 }
- his = \musical_pitch { -1 6 1 }
- hiss = \musical_pitch { -1 6 1 }
- hisis = \musical_pitch { -1 6 2 }
- hississ = \musical_pitch { -1 6 2 }
+ ceses = \musicalpitch { -1 0 -2 }
+ cessess = \musicalpitch { -1 0 -2 }
+ ces = \musicalpitch { -1 0 -1 }
+ cess = \musicalpitch { -1 0 -1 }
+ c = \musicalpitch { -1 0 0 }
+ cis = \musicalpitch { -1 0 1 }
+ ciss = \musicalpitch { -1 0 1 }
+ cisis = \musicalpitch { -1 0 2 }
+ cississ = \musicalpitch { -1 0 2 }
+ deses = \musicalpitch { -1 1 -2 }
+ dessess = \musicalpitch { -1 1 -2 }
+ des = \musicalpitch { -1 1 -1 }
+ dess = \musicalpitch { -1 1 -1 }
+ d = \musicalpitch { -1 1 0 }
+ dis = \musicalpitch { -1 1 1 }
+ diss = \musicalpitch { -1 1 1 }
+ disis = \musicalpitch { -1 1 2 }
+ dississ = \musicalpitch { -1 1 2 }
+ eeses = \musicalpitch { -1 2 -2 }
+ eessess = \musicalpitch { -1 2 -2 }
+ eses = \musicalpitch { -1 2 -2 }
+ essess = \musicalpitch { -1 2 -2 }
+ ees = \musicalpitch { -1 2 -1 }
+ eess = \musicalpitch { -1 2 -1 }
+ es = \musicalpitch { -1 2 -1 }
+ ess = \musicalpitch { -1 2 -1 }
+ e = \musicalpitch { -1 2 0 }
+ eis = \musicalpitch { -1 2 1 }
+ eiss = \musicalpitch { -1 2 1 }
+ eisis = \musicalpitch { -1 2 2 }
+ eississ = \musicalpitch { -1 2 2 }
+ feses = \musicalpitch { -1 3 -2 }
+ fessess = \musicalpitch { -1 3 -2 }
+ fes = \musicalpitch { -1 3 -1 }
+ fess = \musicalpitch { -1 3 -1 }
+ f = \musicalpitch { -1 3 0 }
+ fis = \musicalpitch { -1 3 1 }
+ fiss = \musicalpitch { -1 3 1 }
+ fisis = \musicalpitch { -1 3 2 }
+ fississ = \musicalpitch { -1 3 2 }
+ geses = \musicalpitch { -1 4 -2 }
+ gessess = \musicalpitch { -1 4 -2 }
+ ges = \musicalpitch { -1 4 -1 }
+ gess = \musicalpitch { -1 4 -1 }
+ g = \musicalpitch { -1 4 0 }
+ g = \musicalpitch { -1 4 0 }
+ gis = \musicalpitch { -1 4 1 }
+ giss = \musicalpitch { -1 4 1 }
+ gisis = \musicalpitch { -1 4 2 }
+ gississ = \musicalpitch { -1 4 2 }
+ aeses = \musicalpitch { -1 5 -2 }
+ aessess = \musicalpitch { -1 5 -2 }
+ ases = \musicalpitch { -1 5 -2 }
+ assess = \musicalpitch { -1 5 -2 }
+ aes = \musicalpitch { -1 5 -1 }
+ aess = \musicalpitch { -1 5 -1 }
+ as = \musicalpitch { -1 5 -1 }
+ ass = \musicalpitch { -1 5 -1 }
+ a = \musicalpitch { -1 5 0 }
+ ais = \musicalpitch { -1 5 1 }
+ aiss = \musicalpitch { -1 5 1 }
+ aisis = \musicalpitch { -1 5 2 }
+ aississ = \musicalpitch { -1 5 2 }
+ bes = \musicalpitch { -1 6 -2 }
+ bess = \musicalpitch { -1 6 -2 }
+ b = \musicalpitch { -1 6 -1 }
+ b = \musicalpitch { -1 6 -1 }
+ h = \musicalpitch { -1 6 0 }
+ his = \musicalpitch { -1 6 1 }
+ hiss = \musicalpitch { -1 6 1 }
+ hisis = \musicalpitch { -1 6 2 }
+ hississ = \musicalpitch { -1 6 2 }
%
@@ -107,75 +107,75 @@
%
- Ceses = \musical_pitch { -2 0 -2 }
- Cessess = \musical_pitch { -2 0 -2 }
- Ces = \musical_pitch { -2 0 -1 }
- Cess = \musical_pitch { -2 0 -1 }
- C = \musical_pitch { -2 0 0 }
- Cis = \musical_pitch { -2 0 1 }
- Ciss = \musical_pitch { -2 0 1 }
- Cisis = \musical_pitch { -2 0 2 }
- Cississ = \musical_pitch { -2 0 2 }
- Deses = \musical_pitch { -2 1 -2 }
- Dessess = \musical_pitch { -2 1 -2 }
- Des = \musical_pitch { -2 1 -1 }
- Dess = \musical_pitch { -2 1 -1 }
- D = \musical_pitch { -2 1 0 }
- D = \musical_pitch { -2 1 0 }
- Dis = \musical_pitch { -2 1 1 }
- Diss = \musical_pitch { -2 1 1 }
- Disis = \musical_pitch { -2 1 2 }
- Dississ = \musical_pitch { -2 1 2 }
- Eses = \musical_pitch { -2 2 -2 }
- Essess = \musical_pitch { -2 2 -2 }
- Es = \musical_pitch { -2 2 -1 }
- Ess = \musical_pitch { -2 2 -1 }
- E = \musical_pitch { -2 2 0 }
- E = \musical_pitch { -2 2 0 }
- Eis = \musical_pitch { -2 2 1 }
- Eiss = \musical_pitch { -2 2 1 }
- Eisis = \musical_pitch { -2 2 2 }
- Eississ = \musical_pitch { -2 2 2 }
- Feses = \musical_pitch { -2 3 -2 }
- Fessess = \musical_pitch { -2 3 -2 }
- Fes = \musical_pitch { -2 3 -1 }
- Fess = \musical_pitch { -2 3 -1 }
- F = \musical_pitch { -2 3 0 }
- Fis = \musical_pitch { -2 3 1 }
- Fiss = \musical_pitch { -2 3 1 }
- Fisis = \musical_pitch { -2 3 2 }
- Fississ = \musical_pitch { -2 3 2 }
- Geses = \musical_pitch { -2 4 -2 }
- Gessess = \musical_pitch { -2 4 -2 }
- Ges = \musical_pitch { -2 4 -1 }
- Gess = \musical_pitch { -2 4 -1 }
- G = \musical_pitch { -2 4 0 }
- Gis = \musical_pitch { -2 4 1 }
- Giss = \musical_pitch { -2 4 1 }
- Gisis = \musical_pitch { -2 4 2 }
- Gississ = \musical_pitch { -2 4 2 }
- Aeses = \musical_pitch { -2 5 -2 }
- Aessess = \musical_pitch { -2 5 -2 }
- Ases = \musical_pitch { -2 5 -2 }
- Assess = \musical_pitch { -2 5 -2 }
- Aes = \musical_pitch { -2 5 -1 }
- Aess = \musical_pitch { -2 5 -1 }
- As = \musical_pitch { -2 5 -1 }
- Ass = \musical_pitch { -2 5 -1 }
- A = \musical_pitch { -2 5 0 }
- A = \musical_pitch { -2 5 0 }
- Ais = \musical_pitch { -2 5 1 }
- Aiss = \musical_pitch { -2 5 1 }
- Aisis = \musical_pitch { -2 5 2 }
- Aississ = \musical_pitch { -2 5 2 }
- Bes = \musical_pitch { -2 6 -2 }
- Bess = \musical_pitch { -2 6 -2 }
- B = \musical_pitch { -2 6 -1 }
- H = \musical_pitch { -2 6 0 }
- His = \musical_pitch { -2 6 1 }
- Hiss = \musical_pitch { -2 6 1 }
- Hisis = \musical_pitch { -2 6 2 }
- Hississ = \musical_pitch { -2 6 2 }
+ Ceses = \musicalpitch { -2 0 -2 }
+ Cessess = \musicalpitch { -2 0 -2 }
+ Ces = \musicalpitch { -2 0 -1 }
+ Cess = \musicalpitch { -2 0 -1 }
+ C = \musicalpitch { -2 0 0 }
+ Cis = \musicalpitch { -2 0 1 }
+ Ciss = \musicalpitch { -2 0 1 }
+ Cisis = \musicalpitch { -2 0 2 }
+ Cississ = \musicalpitch { -2 0 2 }
+ Deses = \musicalpitch { -2 1 -2 }
+ Dessess = \musicalpitch { -2 1 -2 }
+ Des = \musicalpitch { -2 1 -1 }
+ Dess = \musicalpitch { -2 1 -1 }
+ D = \musicalpitch { -2 1 0 }
+ D = \musicalpitch { -2 1 0 }
+ Dis = \musicalpitch { -2 1 1 }
+ Diss = \musicalpitch { -2 1 1 }
+ Disis = \musicalpitch { -2 1 2 }
+ Dississ = \musicalpitch { -2 1 2 }
+ Eses = \musicalpitch { -2 2 -2 }
+ Essess = \musicalpitch { -2 2 -2 }
+ Es = \musicalpitch { -2 2 -1 }
+ Ess = \musicalpitch { -2 2 -1 }
+ E = \musicalpitch { -2 2 0 }
+ E = \musicalpitch { -2 2 0 }
+ Eis = \musicalpitch { -2 2 1 }
+ Eiss = \musicalpitch { -2 2 1 }
+ Eisis = \musicalpitch { -2 2 2 }
+ Eississ = \musicalpitch { -2 2 2 }
+ Feses = \musicalpitch { -2 3 -2 }
+ Fessess = \musicalpitch { -2 3 -2 }
+ Fes = \musicalpitch { -2 3 -1 }
+ Fess = \musicalpitch { -2 3 -1 }
+ F = \musicalpitch { -2 3 0 }
+ Fis = \musicalpitch { -2 3 1 }
+ Fiss = \musicalpitch { -2 3 1 }
+ Fisis = \musicalpitch { -2 3 2 }
+ Fississ = \musicalpitch { -2 3 2 }
+ Geses = \musicalpitch { -2 4 -2 }
+ Gessess = \musicalpitch { -2 4 -2 }
+ Ges = \musicalpitch { -2 4 -1 }
+ Gess = \musicalpitch { -2 4 -1 }
+ G = \musicalpitch { -2 4 0 }
+ Gis = \musicalpitch { -2 4 1 }
+ Giss = \musicalpitch { -2 4 1 }
+ Gisis = \musicalpitch { -2 4 2 }
+ Gississ = \musicalpitch { -2 4 2 }
+ Aeses = \musicalpitch { -2 5 -2 }
+ Aessess = \musicalpitch { -2 5 -2 }
+ Ases = \musicalpitch { -2 5 -2 }
+ Assess = \musicalpitch { -2 5 -2 }
+ Aes = \musicalpitch { -2 5 -1 }
+ Aess = \musicalpitch { -2 5 -1 }
+ As = \musicalpitch { -2 5 -1 }
+ Ass = \musicalpitch { -2 5 -1 }
+ A = \musicalpitch { -2 5 0 }
+ A = \musicalpitch { -2 5 0 }
+ Ais = \musicalpitch { -2 5 1 }
+ Aiss = \musicalpitch { -2 5 1 }
+ Aisis = \musicalpitch { -2 5 2 }
+ Aississ = \musicalpitch { -2 5 2 }
+ Bes = \musicalpitch { -2 6 -2 }
+ Bess = \musicalpitch { -2 6 -2 }
+ B = \musicalpitch { -2 6 -1 }
+ H = \musicalpitch { -2 6 0 }
+ His = \musicalpitch { -2 6 1 }
+ Hiss = \musicalpitch { -2 6 1 }
+ Hisis = \musicalpitch { -2 6 2 }
+ Hississ = \musicalpitch { -2 6 2 }
}
diff --git a/init/out/dummy.dep b/init/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/init/out/dummy.dep
+++ /dev/null
diff --git a/init/paper-params16.ly b/init/paper-params16.ly
deleted file mode 100644
index e69de29bb2..0000000000
--- a/init/paper-params16.ly
+++ /dev/null
diff --git a/init/paper-params20.ly b/init/paper-params20.ly
deleted file mode 100644
index e69de29bb2..0000000000
--- a/init/paper-params20.ly
+++ /dev/null
diff --git a/init/paper11.ly b/init/paper11.ly
index 2f2d86a5d4..e5f5a613be 100644
--- a/init/paper11.ly
+++ b/init/paper11.ly
@@ -16,7 +16,7 @@ paper_eleven = \paper {
arithmetic_basicspace = 2.;
arithmetic_multiplier = 4.8\pt;
- \symboltables { \table_eleven }
+ 0=\symboltables { \table_eleven }
\include "params.ly";
}
diff --git a/init/paper13.ly b/init/paper13.ly
index 9c1a5d1e64..104b3829fa 100644
--- a/init/paper13.ly
+++ b/init/paper13.ly
@@ -16,7 +16,7 @@ paper_thirteen = \paper {
arithmetic_basicspace = 2.;
arithmetic_multiplier = 4.8\pt;
- \symboltables { \table_thirteen }
+ 0=\symboltables { \table_thirteen }
\include "params.ly";
\include "a4.ly";
}
diff --git a/init/paper16.ly b/init/paper16.ly
index b9b777403d..336a7fe737 100644
--- a/init/paper16.ly
+++ b/init/paper16.ly
@@ -1,15 +1,12 @@
% paper16.ly
+\include "table13.ly";
+\include "table11.ly";
\include "table16.ly";
-%{
-TODO make this somehow parametric. for example the linewidth was
-chosen to look good on A4 paper. This probably looks less good on US
-paper sizes.
-
-%}
+\version "1.0.0";
paper_sixteen = \paper {
staffheight = 16.0\pt;
@@ -22,7 +19,11 @@ paper_sixteen = \paper {
basicspace = 4.\pt;
arithmetic_basicspace = 2.;
arithmetic_multiplier = 4.8\pt;
+ texsetting = "\\input lilyponddefs \\musixsixteendefs ";
- \symboltables { \table_sixteen }
+ 0 = \symboltables { \table_sixteen }
+ -1 = \symboltables { \table_thirteen }
+ -2 = \symboltables { \table_eleven }
+
\include "params.ly";
}
diff --git a/init/paper20.ly b/init/paper20.ly
index 38247adf4a..1977147a96 100644
--- a/init/paper20.ly
+++ b/init/paper20.ly
@@ -2,6 +2,11 @@
\include "table20.ly";
+ \include "table13.ly";
+ \include "table16.ly";
+
+\version "1.0.0";
+
paper_twenty = \paper {
staffheight = 20.0\pt;
% where to get papersize (e.g. a5, letter)
@@ -14,8 +19,13 @@ paper_twenty = \paper {
basicspace = 8.\pt;
arithmetic_basicspace = 2.;
arithmetic_multiplier = 6.\pt;
+ texsetting = "\\input lilyponddefs \\musixtwentydefs ";
+
+
+ -2 = \symboltables { \table_thirteen }
+ -1 = \symboltables { \table_sixteen }
+ 0 = \symboltables { \table_twenty }
- \symboltables { \table_twenty }
\include "params.ly";
}
diff --git a/init/paper26.ly b/init/paper26.ly
index 357e9c2b34..445506e575 100644
--- a/init/paper26.ly
+++ b/init/paper26.ly
@@ -3,7 +3,7 @@
\include "table26.ly";
paper_twentysix = \paper {
- staffheight = 20.0\pt;
+ staffheight = 26.0\pt;
papersize = "a4";
% ugh see table26 for sizes
@@ -14,7 +14,7 @@ paper_twentysix = \paper {
arithmetic_basicspace = 2.;
arithmetic_multiplier = 6.\pt;
- \symboltables { \table_twenty }
+ 0=\symboltables { \table_twentysix }
\include "params.ly";
linewidth = linewidth20;
textheight = textheight20;
diff --git a/init/params.ly b/init/params.ly
index 0dfb82e371..888ccbf9b8 100644
--- a/init/params.ly
+++ b/init/params.ly
@@ -2,6 +2,7 @@
% generic paper parameters
paperfile = \papersize + ".ly";
+% paperfile = "a4.ly";
\include \paperfile;
\include "paper.ly";
@@ -9,10 +10,33 @@ interline = \staffheight / 4.0;
internote = \interline / 2.0;
staffline = \interline / 10.0;
-beam_thickness = 0.48 * (\interline - \staffline);
+beam_thickness = 0.52 * (\interline - \staffline);
interbeam = (2.0 * \interline - \beam_thickness) / 2.0;
interbeam4 = (3.0 * \interline - \beam_thickness) / 3.0;
+%
+% stems and beams
+%
+% not used for beams
+stem_length = 7.0*\internote;
+%
+% stems in unnatural (forced) direction should be shortened,
+% according to [Roush & Gourlay]. Their suggestion to knock off
+% a whole staffspace seems a bit drastical though?
+%
+forced_stem_shorten = 1.0 * \interline;
+%
+% there are several ways to calculate the direction of a beam
+%
+% * MAJORITY : number count of up or down notes
+% * MEAN : mean centre distance of all notes
+% * MEDIAN : mean centre distance weighted per note
+%
+% enum Dir_algorithm { DOWN=-1, UP=1, MAJORITY=2, MEAN, MEDIAN };
+%
+beam_dir_algorithm = 2.0;
+%
+%
% some beam-stemlength settings...
%
% beam_*1 : multiplicity < beam_multiple_break
@@ -29,7 +53,7 @@ beam_slope_damp_correct_factor = 0.0;
% OSU: suggested gap = ss / 5;
slur_x_gap = \interline / 5.0;
slur_x_minimum = 2.0 * \interline;
-slur_slope_damping = 0.3;
+slur_slope_damping = 0.5;
tie_x_minimum = \slur_x_minimum;
tie_x_gap = \slur_x_gap;
tie_slope_damping = 0.3;
diff --git a/mutopia/Coriolan/part-paper.ly b/init/part-paper.ly
index c150a934a3..94e0351107 100644
--- a/mutopia/Coriolan/part-paper.ly
+++ b/init/part-paper.ly
@@ -1,33 +1,27 @@
-%J.S.Bach/paper20.ly
-\version "0.1.14";
+%part-paper.ly
-\include "table20.ly"
-\include "paper20.ly"
-default_paper = \paper {
- \paper_twenty
- Score = \translator {
+\paper {
+ % for simple testing only!
+% castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn
+Score = \translator {
\type Score_engraver;
\consists "Timing_engraver";
- % uncomment to bar numbers on a whole system.
-%{
\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 "Staff_group";
+ \accepts "StaffGroup";
\accepts "Staff";
- \accepts "Rhythmic_staff";
+ \accepts "RhythmicStaff";
\accepts "Lyrics";
- \accepts "Grand_staff";
+ \accepts "GrandStaff";
SkipBars = "1";
}
-
-
+ \include "bar-numbering.ly";
}
diff --git a/init/performer.ly b/init/performer.ly
index 7d7cd9f113..a4cee69b75 100644
--- a/init/performer.ly
+++ b/init/performer.ly
@@ -6,7 +6,7 @@ Staff = \translator {
\type "Staff_performer";
\accepts Voice;
\consists "Key_performer";
- \consists "Meter_performer";
+ \consists "Time_signature_performer";
}
Thread =\translator
@@ -21,13 +21,13 @@ Voice = \translator
\accepts Thread;
}
-Grand_staff = \translator
+GrandStaff = \translator
{
\type "Performer_group_performer";
\accepts Staff;
}
-Lyric_voice = \translator {
+LyricVoice = \translator {
\type "Performer_group_performer";
\consists "Lyric_performer";
}
@@ -35,11 +35,11 @@ Lyric_voice = \translator {
Lyrics = \translator {
\type "Staff_performer";
- \accepts Lyric_voice;
- \consists "Meter_performer";
+ \accepts LyricVoice;
+ \consists "Time_signature_performer";
}
-Staff_group = \translator
+StaffGroup = \translator
{
\type Performer_group_performer;
\accepts Staff;
@@ -49,9 +49,9 @@ Score = \translator {
\type "Score_performer";
instrument = piano;
\accepts Staff;
- \accepts Grand_staff;
+ \accepts GrandStaff;
\accepts Lyrics;
- \accepts Staff_group;
+ \accepts StaffGroup;
\consists "Swallow_performer";
}
diff --git a/init/property.ly b/init/property.ly
index 9520dbb86f..75d8f10669 100644
--- a/init/property.ly
+++ b/init/property.ly
@@ -21,6 +21,14 @@ slurdash 0 normal slurs
slurdash 1 dotted slurs
slurdash >1 dashed slurs
+slurydirection -1 force stem down \slurdown
+slurydirection 0 stem direction free \slurboth
+slurydirection 1 force stem up \slurup
+
+slurydirection -1 force stem down \slurdown
+slurydirection 0 stem direction free \slurboth
+slurydirection 1 force stem up \slurup
+
[Score?]
beamslopedamping 0 no damping \beamslopeproportional
beamslopedamping 1 damping1) \beamslopedamped
@@ -31,6 +39,10 @@ beamquantisation 0 no quantisations \beamposfree
beamquantisation 1 quantise pos and slope \beamposnormal
beamquantisation 2 quantise avoide wedge2) \beampostraditional
+[Staff]
+specialaccidentals 0 Accidental for all octaves \normalkey
+specialaccidentals 1 Accidental only for specified octave \specialkey
+
[Staff?]
instrument ascii midi instrument table lookup
@@ -66,36 +78,83 @@ stemdown = {
\skip 1*0;
\property Voice.ydirection = \down
}
+slurup = {
+ \skip 1*0;
+ \property Voice.slurydirection = \up
+ }
+slurboth= {
+ \skip 1*0;
+ \property Voice.slurydirection = \center
+}
+slurdown = {
+ \skip 1*0;
+ \property Voice.slurydirection = \down
+}
+
+shifton = \property Voice.hshift = 1
+shiftoff = \property Voice.hshift = 0
onevoice = {
- \property Voice.ydirection = \center
- \property Voice.hshift = 0
+ \stemboth \shiftoff
}
voiceone = {
\type Voice = one
\skip 1*0;
- \property Voice.ydirection = \up
+ \stemup
}
voicetwo = {
\type Voice = two
\skip 1*0;
- \property Voice.ydirection = \down
+ \stemdown
}
voicethree = {
\type Voice = three
\skip 1*0;
- \property Voice.ydirection = \up
- \property Voice.hshift = 1
+ \stemup
+
}
voicefour = {
\type Voice = four
\skip 1*0;
- \property Voice.ydirection = \down
- \property Voice.hshift = 1
+ \stemdown
+ \shifton
+}
+
+onestaff = {
+ \translator Staff=one
+ \skip 1*0;
+}
+
+staffone = {
+ \translator Staff=one
+ \skip 1*0;
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
+}
+
+stafftwo = {
+ \translator Staff=two
+ \skip 1*0;
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
+}
+
+staffthree = {
+ \translator Staff=three
+ \skip 1*0;
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
+}
+
+stafffour = {
+ \translator Staff=four
+ \skip 1*0;
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
}
% ugh, cluttering global namespace...
@@ -139,3 +198,63 @@ slurdotted = {
\property Voice.slurdash = 1
}
+%{
+ for grace note hack, see input/test/grace.ly
+%}
+pletoff = {
+ \property Voice.pletvisibility = 0
+}
+pleton = {
+ \property Voice.pletvisibility = 2
+}
+tiny = {
+ \property Voice.fontsize= "-2"
+ \pletoff %urg
+}
+
+small = {
+ \property Voice.fontsize= "-1"
+}
+
+normalsize = {
+ \property Voice.fontsize= "0"
+ \pleton %urg
+}
+
+%{
+ [urg: try at] temporary grace note hack
+ the total visible duration of the grace notes must be half
+ the duration of the 'at' note: e.g.:
+
+ \grace b8 \graceat c4 \ecarg
+ \grace c16 b16 \graceat c4 \ecarg
+
+grace = {
+ \tiny
+% it would be so cool not to have to specify these factors each time...
+% :-(
+ \property Voice.pletvisibility = 0
+ \[1/16
+}
+
+graceat = \melodic {
+ \normalsize
+ \property Voice.pletvisibility = 0
+ \] \[31/32
+}
+
+ecarg = \melodic {
+ \property Voice.pletvisibility = 0
+ \]
+ \property Voice.pletvisibility = 2
+}
+%}
+
+normalkey = {
+ \property Staff.specialaccidentals = 0
+}
+
+specialkey = {
+ \property Staff.specialaccidentals = 1
+}
+
diff --git a/init/score-bar-numbering.ly b/init/score-bar-numbering.ly
index 3e47d6ec89..a3da56b279 100644
--- a/init/score-bar-numbering.ly
+++ b/init/score-bar-numbering.ly
@@ -1,19 +1,26 @@
+% 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 "Staff_group";
+ \accepts "ChoireStaff";
+ \accepts "StaffGroup";
\accepts "Staff";
- \accepts "Rhythmic_staff";
+ \accepts "RhythmicStaff";
\accepts "Lyrics";
- \accepts "Grand_staff";
+ \accepts "GrandStaff";
}
diff --git a/init/score-paper.ly b/init/score-paper.ly
new file mode 100644
index 0000000000..f0e4783822
--- /dev/null
+++ b/init/score-paper.ly
@@ -0,0 +1,29 @@
+%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 --git a/init/script.ly b/init/script.ly
index d032f44a8b..2a7cd50bcc 100644
--- a/init/script.ly
+++ b/init/script.ly
@@ -10,7 +10,7 @@ portato= \script { "portato" 0 -1 0 1 0 }
fermata = \script { "fermata" 0 1 0 1 0 }
stopped = \script { "stopped" 0 0 1 0 0 }
staccato = \script { "staccato" 1 -1 0 0 0 }
-tenuto = \script {"tenuto" 0 -1 0 0 0 }
+tenuto = \script {"tenuto" 1 -1 0 0 0 }
upbow = \script { "upbow" 0 0 1 0 0 }
downbow = \script { "downbow" 0 0 1 0 0 }
lheel = \script { "upedalheel" 0 0 -1 0 0 }
diff --git a/init/simple-init.ly b/init/simple-init.ly
deleted file mode 100644
index 3b39cc6c1a..0000000000
--- a/init/simple-init.ly
+++ /dev/null
@@ -1,12 +0,0 @@
-% Toplevel initialisation file.
-Gourlay = 1.0
-\include "nederlands.ly"
-
-\include "paper20.ly"
-
-default_paper = \paper{
- \paper_twenty
-}
-
-\maininput
-
diff --git a/init/svenska.ly b/init/svenska.ly
index 6b288cf3c3..6b8977fdcb 100644
--- a/init/svenska.ly
+++ b/init/svenska.ly
@@ -10,41 +10,41 @@
% have a rhythmic part too. This is the reason that we don't write 'note { .. }'
%
\notenames {
- cessess = \musical_pitch { -1 0 -2 }
- cess = \musical_pitch { -1 0 -1 }
- c = \musical_pitch { -1 0 0 }
- ciss = \musical_pitch { -1 0 1 }
- cississ = \musical_pitch { -1 0 2 }
- dessess = \musical_pitch { -1 1 -2 }
- dess = \musical_pitch { -1 1 -1 }
- d = \musical_pitch { -1 1 0 }
- diss = \musical_pitch { -1 1 1 }
- dississ = \musical_pitch { -1 1 2 }
- essess = \musical_pitch { -1 2 -2 }
- ess = \musical_pitch { -1 2 -1 }
- e = \musical_pitch { -1 2 0 }
- eiss = \musical_pitch { -1 2 1 }
- eississ = \musical_pitch { -1 2 2 }
- fessess = \musical_pitch { -1 3 -2 }
- fess = \musical_pitch { -1 3 -1 }
- f = \musical_pitch { -1 3 0 }
- fiss = \musical_pitch { -1 3 1 }
- fississ = \musical_pitch { -1 3 2 }
- gessess = \musical_pitch { -1 4 -2 }
- gess = \musical_pitch { -1 4 -1 }
- g = \musical_pitch { -1 4 0 }
- giss = \musical_pitch { -1 4 1 }
- gississ = \musical_pitch { -1 4 2 }
- assess = \musical_pitch { -1 5 -2 }
- ass = \musical_pitch { -1 5 -1 }
- a = \musical_pitch { -1 5 0 }
- aiss = \musical_pitch { -1 5 1 }
- aississ = \musical_pitch { -1 5 2 }
- hessess = \musical_pitch { -1 6 -2 }
- b = \musical_pitch { -1 6 -1 }
- h = \musical_pitch { -1 6 0 }
- hiss = \musical_pitch { -1 6 1 }
- hississ = \musical_pitch { -1 6 2 }
+ cessess = \musicalpitch { -1 0 -2 }
+ cess = \musicalpitch { -1 0 -1 }
+ c = \musicalpitch { -1 0 0 }
+ ciss = \musicalpitch { -1 0 1 }
+ cississ = \musicalpitch { -1 0 2 }
+ dessess = \musicalpitch { -1 1 -2 }
+ dess = \musicalpitch { -1 1 -1 }
+ d = \musicalpitch { -1 1 0 }
+ diss = \musicalpitch { -1 1 1 }
+ dississ = \musicalpitch { -1 1 2 }
+ essess = \musicalpitch { -1 2 -2 }
+ ess = \musicalpitch { -1 2 -1 }
+ e = \musicalpitch { -1 2 0 }
+ eiss = \musicalpitch { -1 2 1 }
+ eississ = \musicalpitch { -1 2 2 }
+ fessess = \musicalpitch { -1 3 -2 }
+ fess = \musicalpitch { -1 3 -1 }
+ f = \musicalpitch { -1 3 0 }
+ fiss = \musicalpitch { -1 3 1 }
+ fississ = \musicalpitch { -1 3 2 }
+ gessess = \musicalpitch { -1 4 -2 }
+ gess = \musicalpitch { -1 4 -1 }
+ g = \musicalpitch { -1 4 0 }
+ giss = \musicalpitch { -1 4 1 }
+ gississ = \musicalpitch { -1 4 2 }
+ assess = \musicalpitch { -1 5 -2 }
+ ass = \musicalpitch { -1 5 -1 }
+ a = \musicalpitch { -1 5 0 }
+ aiss = \musicalpitch { -1 5 1 }
+ aississ = \musicalpitch { -1 5 2 }
+ hessess = \musicalpitch { -1 6 -2 }
+ b = \musicalpitch { -1 6 -1 }
+ h = \musicalpitch { -1 6 0 }
+ hiss = \musicalpitch { -1 6 1 }
+ hississ = \musicalpitch { -1 6 2 }
%
@@ -52,41 +52,41 @@
%
- Cessess = \musical_pitch { -2 0 -2 }
- Cess = \musical_pitch { -2 0 -1 }
- C = \musical_pitch { -2 0 0 }
- Ciss = \musical_pitch { -2 0 1 }
- Cississ = \musical_pitch { -2 0 2 }
- Dessess = \musical_pitch { -2 1 -2 }
- Dess = \musical_pitch { -2 1 -1 }
- D = \musical_pitch { -2 1 0 }
- Diss = \musical_pitch { -2 1 1 }
- Dississ = \musical_pitch { -2 1 2 }
- Essess = \musical_pitch { -2 2 -2 }
- Ess = \musical_pitch { -2 2 -1 }
- E = \musical_pitch { -2 2 0 }
- Eiss = \musical_pitch { -2 2 1 }
- Eississ = \musical_pitch { -2 2 2 }
- Fessess = \musical_pitch { -2 3 -2 }
- Fess = \musical_pitch { -2 3 -1 }
- F = \musical_pitch { -2 3 0 }
- Fiss = \musical_pitch { -2 3 1 }
- Fississ = \musical_pitch { -2 3 2 }
- Gessess = \musical_pitch { -2 4 -2 }
- Gess = \musical_pitch { -2 4 -1 }
- G = \musical_pitch { -2 4 0 }
- Giss = \musical_pitch { -2 4 1 }
- Gississ = \musical_pitch { -2 4 2 }
- Assess = \musical_pitch { -2 5 -2 }
- Ass = \musical_pitch { -2 5 -1 }
- A = \musical_pitch { -2 5 0 }
- Aiss = \musical_pitch { -2 5 1 }
- Aississ = \musical_pitch { -2 5 2 }
- Hessess = \musical_pitch { -2 6 -2 }
- B = \musical_pitch { -2 6 -1 }
- H = \musical_pitch { -2 6 0 }
- Hiss = \musical_pitch { -2 6 1 }
- Hississ = \musical_pitch { -2 6 2 }
+ Cessess = \musicalpitch { -2 0 -2 }
+ Cess = \musicalpitch { -2 0 -1 }
+ C = \musicalpitch { -2 0 0 }
+ Ciss = \musicalpitch { -2 0 1 }
+ Cississ = \musicalpitch { -2 0 2 }
+ Dessess = \musicalpitch { -2 1 -2 }
+ Dess = \musicalpitch { -2 1 -1 }
+ D = \musicalpitch { -2 1 0 }
+ Diss = \musicalpitch { -2 1 1 }
+ Dississ = \musicalpitch { -2 1 2 }
+ Essess = \musicalpitch { -2 2 -2 }
+ Ess = \musicalpitch { -2 2 -1 }
+ E = \musicalpitch { -2 2 0 }
+ Eiss = \musicalpitch { -2 2 1 }
+ Eississ = \musicalpitch { -2 2 2 }
+ Fessess = \musicalpitch { -2 3 -2 }
+ Fess = \musicalpitch { -2 3 -1 }
+ F = \musicalpitch { -2 3 0 }
+ Fiss = \musicalpitch { -2 3 1 }
+ Fississ = \musicalpitch { -2 3 2 }
+ Gessess = \musicalpitch { -2 4 -2 }
+ Gess = \musicalpitch { -2 4 -1 }
+ G = \musicalpitch { -2 4 0 }
+ Giss = \musicalpitch { -2 4 1 }
+ Gississ = \musicalpitch { -2 4 2 }
+ Assess = \musicalpitch { -2 5 -2 }
+ Ass = \musicalpitch { -2 5 -1 }
+ A = \musicalpitch { -2 5 0 }
+ Aiss = \musicalpitch { -2 5 1 }
+ Aississ = \musicalpitch { -2 5 2 }
+ Hessess = \musicalpitch { -2 6 -2 }
+ B = \musicalpitch { -2 6 -1 }
+ H = \musicalpitch { -2 6 0 }
+ Hiss = \musicalpitch { -2 6 1 }
+ Hississ = \musicalpitch { -2 6 2 }
}
diff --git a/init/table11.ly b/init/table11.ly
index 34bffcc63c..646a0b843c 100644
--- a/init/table11.ly
+++ b/init/table11.ly
@@ -6,72 +6,71 @@
table_eleven = \symboltables {
- \texid "\input lilyponddefs \musixelevendefs"
+ \font "feta11.afm"
% index TeXstring, xmin xmax ymin ymax
"style" = \table {
- "bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
- "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
- "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt
- "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
- "large" "\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt
- "number" "\setnumber{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt
- "roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt
+ "bold" "\\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
+ "dynamic" "\\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "finger" "\\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt
+ "italic" "\\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "large" "\\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt
+ "number" "\\setnumber{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt
+ "roman" "\\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt
}
"dynamics" = \table {
- "mf" "\dynmf"
- "fff" "\dynfff"
- "ff" "\dynff"
- "f" "\dynf"
+ "mf" "\\dynmf"
+ "fff" "\\dynfff"
+ "ff" "\\dynff"
+ "f" "\\dynf"
- "mp" "\dynmp"
- "p" "\dynp"
- "pp" "\dynpp"
- "ppp" "\dynppp"
- "fp" "\dynfp"
- "sf" "\dynsf"
- "sfz" "\dynsfz"
+ "mp" "\\dynmp"
+ "p" "\\dynp"
+ "pp" "\\dynpp"
+ "ppp" "\\dynppp"
+ "fp" "\\dynfp"
+ "sf" "\\dynsf"
+ "sfz" "\\dynsfz"
}
"align" = \table {
- "-1" "\leftalign{%}"
- "0" "\centeralign{%}"
- "1" "\rightalign{%}"
+ "-1" "\\leftalign{%}"
+ "0" "\\centeralign{%}"
+ "1" "\\rightalign{%}"
}
"bars" = \table {
- "empty" "\emptybar"
+ "empty" "\\emptybar"
"" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt
- "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt
- "||" "\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt
- "|." "\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt
- ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt
- ":|" "\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt
- "|:" "\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
- ":|:" "\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt
+ "|" "\\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt
+ "||" "\\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt
+ "|." "\\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt
+ ".|" "\\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt
+ ".|." "\\fatdoublebar{%}" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|" "\\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt
+ "|:" "\\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|:" "\\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt
}
- "meters" = \table {
- "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "foobar" = \table {
+ "C" "\\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C2" "\\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
}
% dims ignored for this table
"param" = \table {
- "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt
- "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- "stem" "\stem{%}{%}"
- "fill" "\hbox{}"
- "rule" "\rulesym{%}{%}"
+ "brace" "\\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt
+ "time_signature" "\\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "stem" "\\stem{%}{%}"
+ "fill" "\\hbox{}"
+ "rule" "\\rulesym{%}{%}"
}
- % ugh what's our outdir called?
- \include "feta11.ly"
}
diff --git a/init/table13.ly b/init/table13.ly
index d8d64fff07..1432209b8e 100644
--- a/init/table13.ly
+++ b/init/table13.ly
@@ -6,72 +6,70 @@
table_thirteen = \symboltables {
- \texid "\input lilyponddefs \musixthirteendefs"
+ \font "feta13.afm"
% index TeXstring, xmin xmax ymin ymax
"style" = \table {
- "bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
- "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
- "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt
- "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
- "large" "\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt
- "number" "\setnumber{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt
- "roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt
+ "bold" "\\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
+ "dynamic" "\\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "finger" "\\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt
+ "italic" "\\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "large" "\\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt
+ "number" "\\setnumber{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt
+ "roman" "\\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt
}
"dynamics" = \table {
- "mf" "\dynmf"
- "fff" "\dynfff"
- "ff" "\dynff"
- "f" "\dynf"
+ "mf" "\\dynmf"
+ "fff" "\\dynfff"
+ "ff" "\\dynff"
+ "f" "\\dynf"
- "mp" "\dynmp"
- "p" "\dynp"
- "pp" "\dynpp"
- "ppp" "\dynppp"
- "fp" "\dynfp"
- "sf" "\dynsf"
- "sfz" "\dynsfz"
+ "mp" "\\dynmp"
+ "p" "\\dynp"
+ "pp" "\\dynpp"
+ "ppp" "\\dynppp"
+ "fp" "\\dynfp"
+ "sf" "\\dynsf"
+ "sfz" "\\dynsfz"
}
"align" = \table {
- "-1" "\leftalign{%}"
- "0" "\centeralign{%}"
- "1" "\rightalign{%}"
+ "-1" "\\leftalign{%}"
+ "0" "\\centeralign{%}"
+ "1" "\\rightalign{%}"
}
"bars" = \table {
- "empty" "\emptybar"
+ "empty" "\\emptybar"
"" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt
- "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt
- "||" "\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt
- "|." "\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt
- ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt
- ":|" "\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt
- "|:" "\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
- ":|:" "\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt
+ "|" "\\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt
+ "||" "\\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt
+ "|." "\\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt
+ ".|" "\\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt
+ ".|." "\\fatdoublebar{%}" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|" "\\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt
+ "|:" "\\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|:" "\\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt
}
- "meters" = \table {
- "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "time_signatures" = \table {
+ "C" "\\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C2" "\\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
}
% dims ignored for this table
"param" = \table {
- "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt
- "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- "stem" "\stem{%}{%}"
- "fill" "\hbox{}"
- "rule" "\rulesym{%}{%}"
+ "brace" "\\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt
+ "time_signature" "\\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "stem" "\\stem{%}{%}"
+ "fill" "\\hbox{}"
+ "rule" "\\rulesym{%}{%}"
}
-
- % ugh what's our outdir called?
- \include "feta13.ly"
}
diff --git a/init/table16.ly b/init/table16.ly
index c78d4be45a..c7ca13d246 100644
--- a/init/table16.ly
+++ b/init/table16.ly
@@ -7,79 +7,73 @@
table_sixteen=
\symboltables {
- \texid "\input lilyponddefs \musixsixteendefs"
+ \font "feta16.afm"
+
% index TeXstring, xmin xmax ymin ymax
"style" = \table {
- "bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
- "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt
- "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 4.0\pt
- "italic" "\setitalic{%}" 0.0\pt 4.\pt 0.0\pt 8.0\pt
- "large" "\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 10.0\pt
- "number" "\setnumber{%}" 0.0\pt 6.0\pt 0.0\pt 8.0\pt
- "roman" "\settext{%}" 0.0\pt 4.0\pt 0.0\pt 8.0\pt
+ "bold" "\\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
+ "dynamic" "\\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt
+ "finger" "\\setfinger{%}" 0.0\pt 2.0\pt 0.0\pt 4.0\pt
+ "italic" "\\setitalic{%}" 0.0\pt 4.\pt 0.0\pt 8.0\pt
+ "typewriter" "\\settypewriter{%}" 0.0\pt 4.\pt 0.0\pt 8.0\pt
+ "large" "\\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 10.0\pt
+ "number" "\\setnumber{%}" 0.0\pt 6.0\pt 0.0\pt 8.0\pt
+ "roman" "\\settext{%}" 0.0\pt 4.5\pt 0.0\pt 8.0\pt
}
"dynamics" = \table {
- "mf" "\dynmf"
- "fff" "\dynfff"
- "ff" "\dynff"
- "f" "\dynf"
- "mp" "\dynmp"
- "p" "\dynp"
- "pp" "\dynpp"
- "ppp" "\dynppp"
- "fp" "\dynfp"
- "sf" "\dynsf"
- "sfz" "\dynsfz"
+ "mf" "\\dynmf"
+ "fff" "\\dynfff"
+ "ff" "\\dynff"
+ "f" "\\dynf"
+ "mp" "\\dynmp"
+ "p" "\\dynp"
+ "pp" "\\dynpp"
+ "ppp" "\\dynppp"
+ "fp" "\\dynfp"
+ "sf" "\\dynsf"
+ "sfz" "\\dynsfz"
}
"align" = \table {
- "-1" "\leftalign{%}"
- "0" "\centeralign{%}"
- "1" "\rightalign{%}"
+ "-1" "\\leftalign{%}"
+ "0" "\\centeralign{%}"
+ "1" "\\rightalign{%}"
}
- "slur" = \table {
- "whole" "\slurchar%{%}"
- "half" "\hslurchar%{%}"
- }
"bars" = \table {
- "empty" "\emptybar"
+ "empty" "\\emptybar"
"" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt
- "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 16.0\pt
- "||" "\doublebar{%}" 0.0\pt 4.0\pt 0.0\pt 16.0\pt
- "|." "\finishbar{%}" -4.0\pt 0.0\pt 0.0\pt 16.0\pt
- ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 16.0\pt
- ":|" "\repeatbar" -8.0\pt 0.0\pt 0.0\pt 16.0\pt
- "|:" "\startrepeat" 0.0\pt 8.0\pt 0.0\pt 16.0\pt
- ":|:" "\repeatbarstartrepeat" 0.0\pt 16.0\pt 0.0\pt 16.0\pt
+ "|" "\\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 16.0\pt
+ "||" "\\doublebar{%}" 0.0\pt 4.0\pt 0.0\pt 16.0\pt
+ "|." "\\finishbar{%}" -4.0\pt 0.0\pt 0.0\pt 16.0\pt
+ ".|" "\\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 16.0\pt
+ ".|." "\\fatdoublebar{%}" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|" "\\repeatbar" -8.0\pt 0.0\pt 0.0\pt 16.0\pt
+ "|:" "\\startrepeat" 0.0\pt 8.0\pt 0.0\pt 16.0\pt
+ ":|:" "\\repeatbarstartrepeat" 0.0\pt 16.0\pt 0.0\pt 16.0\pt
}
"meters" = \table {
- "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C" "\\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C2" "\\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
}
% dims ignored for this table
"param" = \table {
-% "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt
- "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 80.0\pt
- "bracket" "\staffbracket{%}" 0.0\pt 4.0\pt 16.0\pt 128.0\pt
- "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -8.0\pt 8.0\pt
- "rule" "\rulesym{%}{%}"
- "stem" "\stem{%}{%}"
- "fill" "\hbox{}"
- % ugh. 8pt
- "crescendosym" "\crescendosym{%}" 0.0\pt 0.0\pt -5.0\pt 5.0\pt
- "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -5.0\pt 5.0\pt
+ "brace" "\\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 80.0\pt
+ "bracket" "\\staffbracket{%}" 0.0\pt 4.0\pt 16.0\pt 128.0\pt
+ "time_signature" "\\generalmeter{%}{%}" 0.0\pt 10.0\pt -8.0\pt 8.0\pt
+ "rule" "\\rulesym{%}{%}"
+ "stem" "\\stem{%}{%}"
+ "fill" "\\hbox{}"
}
"beamslopes" = \table {
- "slope" "\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
- "horizontal" "\rulesym{%}{%}"
+ "slope" "\\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
+ "horizontal" "\\rulesym{%}{%}"
}
- \include "feta16.ly"
}
diff --git a/init/table20.ly b/init/table20.ly
index 0ee27d15b3..483c775ef2 100644
--- a/init/table20.ly
+++ b/init/table20.ly
@@ -7,84 +7,77 @@
table_twenty =
\symboltables {
- \texid "\input lilyponddefs \musixtwentydefs"
+ \font "feta20.afm"
% index TeXstring, xmin xmax ymin ymax
"style" = \table {
- "bold" "\setbold{%}" 0.0\pt 5.50\pt 0.0\pt 8.0\pt
- "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
- "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt
- "italic" "\setitalic{%}" 0.0\pt 5.5\pt 0.0\pt 10.0\pt
- "large" "\setlarge{%}" 0.0\pt 6.50\pt 0.0\pt 12.0\pt
- "number" "\setnumber{%}" 0.0\pt 8.0\pt 0.0\pt 10.0\pt
- "roman" "\settext{%}" 0.0\pt 5.0\pt 0.0\pt 10.0\pt
+ "bold" "\\setbold{%}" 0.0\pt 5.50\pt 0.0\pt 8.0\pt
+ "dynamic" "\\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "finger" "\\setfinger{%}" 0.0\pt 4.5\pt 0.0\pt 5.0\pt
+ "typewriter" "\\settypewriter{%}" 0.0\pt 5.5\pt 0.0\pt 10.0\pt
+ "italic" "\\setitalic{%}" 0.0\pt 5.5\pt 0.0\pt 10.0\pt
+ "large" "\\setlarge{%}" 0.0\pt 6.50\pt 0.0\pt 12.0\pt
+ "Large" "\\setLarge{%}" 0.0\pt 6.50\pt 0.0\pt 12.0\pt
+ "mark" "\\setmark{%}" 0.0\pt 6.50\pt 0.0\pt 12.0\pt
+ "number" "\\setnumber{%}" 0.0\pt 8.0\pt 0.0\pt 10.0\pt
+ "roman" "\\settext{%}" 0.0\pt 5.6\pt 0.0\pt 10.0\pt
}
"dynamics" = \table {
- "mf" "\dynmf"
- "fff" "\dynfff"
- "ff" "\dynff"
- "f" "\dynf"
- "mp" "\dynmp"
- "p" "\dynp"
- "pp" "\dynpp"
- "ppp" "\dynppp"
- "fp" "\dynfp"
- "sf" "\dynsf"
- "sfz" "\dynsfz"
+ "mf" "\\dynmf"
+ "fff" "\\dynfff"
+ "ff" "\\dynff"
+ "f" "\\dynf"
+ "mp" "\\dynmp"
+ "p" "\\dynp"
+ "pp" "\\dynpp"
+ "ppp" "\\dynppp"
+ "fp" "\\dynfp"
+ "sf" "\\dynsf"
+ "sfz" "\\dynsfz"
}
"align" = \table {
- "-1" "\leftalign{%}"
- "0" "\centeralign{%}"
- "1" "\rightalign{%}"
+ "-1" "\\leftalign{%}"
+ "0" "\\centeralign{%}"
+ "1" "\\rightalign{%}"
}
- "slur" = \table {
- "whole" "\slurchar%{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt
- "half" "\hslurchar%{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt
- }
-
"bars" = \table {
- "empty" "\emptybar"
+ "empty" "\\emptybar"
"" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt
- "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt
- "||" "\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt
- "|." "\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt
- ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt
- ":|" "\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt
- "|:" "\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
- ":|:" "\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt
+ "|" "\\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt
+ "||" "\\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt
+ "|." "\\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt
+ ".|" "\\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt
+ ".|." "\\fatdoublebar{%}" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|" "\\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt
+ "|:" "\\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|:" "\\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt
}
"meters" = \table {
- "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C" "\\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C2" "\\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
}
% dims ignored for this table
"param" = \table {
-% "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt
- "bracket" "\staffbracket{%}" 0.0\pt 0.0\pt 20.0\pt 160.0\pt
- "rule" "\rulesym{%}{%}"
- "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 40.0\pt 100.0\pt
- "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- "stem" "\stem{%}{%}"
- "fill" "\hbox{}"
- % ugh. 8\pt
- "crescendosym" "\crescendosym{%}" 0.0\pt 0.0\pt -6.25\pt 6.25\pt
- "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -6.25\pt 6.25\pt
+ "bracket" "\\staffbracket{%}" 0.0\pt 0.0\pt 20.0\pt 160.0\pt
+ "rule" "\\rulesym{%}{%}"
+ "brace" "\\pianobrace{%}" 0.0\pt 0.0\pt 40.0\pt 100.0\pt
+ "time_signature" "\\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "stem" "\\stem{%}{%}"
+ "fill" "\\hbox{}"
}
"beamslopes" = \table {
- "slope" "\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
- "horizontal" "\rulesym{%}{%}"
+ "slope" "\\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
+ "horizontal" "\\rulesym{%}{%}"
}
- % ugh what's our outdir called?
- \include "feta20.ly"
}
diff --git a/init/table26.ly b/init/table26.ly
index 93d9bd645a..c9d7dbc412 100644
--- a/init/table26.ly
+++ b/init/table26.ly
@@ -6,72 +6,70 @@
table_twentysix = \symboltables {
- \texid "\input lilyponddefs \musixtwentysixdefs"
+ \font "feta26.afm"
% index TeXstring, xmin xmax ymin ymax
"style" = \table {
- "bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
- "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
- "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt
- "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
- "large" "\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt
- "number" "\setnumber{%}" 0.0\pt 8.0\pt 0.0\pt 10.0\pt
- "roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt
+ "bold" "\\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt
+ "dynamic" "\\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "finger" "\\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt
+ "italic" "\\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt
+ "large" "\\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt
+ "number" "\\setnumber{%}" 0.0\pt 8.0\pt 0.0\pt 10.0\pt
+ "roman" "\\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt
}
"dynamics" = \table {
- "mf" "\dynmf"
- "fff" "\dynfff"
- "ff" "\dynff"
- "f" "\dynf"
+ "mf" "\\dynmf"
+ "fff" "\\dynfff"
+ "ff" "\\dynff"
+ "f" "\\dynf"
- "mp" "\dynmp"
- "p" "\dynp"
- "pp" "\dynpp"
- "ppp" "\dynppp"
- "fp" "\dynfp"
- "sf" "\dynsf"
- "sfz" "\dynsfz"
+ "mp" "\\dynmp"
+ "p" "\\dynp"
+ "pp" "\\dynpp"
+ "ppp" "\\dynppp"
+ "fp" "\\dynfp"
+ "sf" "\\dynsf"
+ "sfz" "\\dynsfz"
}
"align" = \table {
- "-1" "\leftalign{%}"
- "0" "\centeralign{%}"
- "1" "\rightalign{%}"
+ "-1" "\\leftalign{%}"
+ "0" "\\centeralign{%}"
+ "1" "\\rightalign{%}"
}
"bars" = \table {
- "empty" "\emptybar"
+ "empty" "\\emptybar"
"" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt
- "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt
- "||" "\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt
- "|." "\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt
- ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt
- ":|" "\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt
- "|:" "\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
- ":|:" "\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt
+ "|" "\\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt
+ "||" "\\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt
+ "|." "\\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt
+ ".|" "\\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt
+ ".|." "\\fatdoublebar{%}" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|" "\\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt
+ "|:" "\\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt
+ ":|:" "\\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt
}
"meters" = \table {
- "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C" "\\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C2" "\\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
}
% dims ignored for this table
"param" = \table {
- "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt
- "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- "stem" "\stem{%}{%}"
- "fill" "\hbox{}"
- "rule" "\rulesym{%}{%}"
+ "brace" "\\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt
+ "time_signature" "\\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "stem" "\\stem{%}{%}"
+ "fill" "\\hbox{}"
+ "rule" "\\rulesym{%}{%}"
}
-
- % ugh what's our outdir called?
- \include "feta26.ly"
}
diff --git a/input/Makefile b/input/Makefile
index 07f36f84d1..b557d18d4b 100644
--- a/input/Makefile
+++ b/input/Makefile
@@ -1,14 +1,14 @@
# input/Makefile
-# subdir level:
-#
depth = ..
-#
SUBDIRS=test bugs
-include $(depth)/make/Mutopia.make
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
-examples=twinkle-pop praeludium-fuga-E twinkle
+examples=example-3 twinkle-pop praeludium-fuga-E twinkle
+flexamples=example-1 example-2
+
+include $(stepdir)/WWW.make
-include $(depth)/make/WWW.make
diff --git a/input/bugs/Makefile b/input/bugs/Makefile
index a221caa99d..369ff9045a 100644
--- a/input/bugs/Makefile
+++ b/input/bugs/Makefile
@@ -1,14 +1,11 @@
-# input/Makefile
+# input/bugs/Makefile
-# subdir level:
-#
depth = ../..
-#
-
-include $(depth)/make/Mutopia.make
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
examples= #beam-bug slur-bug #why would we want to demo Lily's errors?
-include $(depth)/make/WWW.make
+include $(stepdir)/WWW.make
diff --git a/input/bugs/beam-bug.ly b/input/bugs/beam-bug.ly
deleted file mode 100644
index 571d981736..0000000000
--- a/input/bugs/beam-bug.ly
+++ /dev/null
@@ -1,35 +0,0 @@
-% silly file to test beam stem lengths
-% compare to *ugly* bug in preludes-1: [e'16 c'' g' f']
-% here it's okee ??
-
-one = \melodic{
- \octave c';
- [e'8 c'' g' f']
- \octave c'';
- [e16-1\f c'-5( g-3 f-2] % [e-1 c'-5 g-3 e-2]
- \octave c';
-% [e'16 c'' g' f']
- [e'32 c'' g' f']
- [c32 c] ['b b,]
- [c8 c]
- [e8 g b]
- [e16 g b] c c c
- [e32 g b] c
- [c c c c]
- c4 c4
- \onevoice;
- [e'8 c'' g' f']
- [e'16 c'' g' f']
- [e'32 c'' g' f']
- [c32 c] ['b b,]
- [c8 c]
- [e8 g b]
- [e16 g b] c
- [e32 g b] c
- [c c c c]
- c4
-}
-
-\score{
- \one
-}
diff --git a/input/bugs/beam-length.ly b/input/bugs/beam-length.ly
deleted file mode 100644
index 1297b78336..0000000000
--- a/input/bugs/beam-length.ly
+++ /dev/null
@@ -1,12 +0,0 @@
-% beams should look the same
-\score{
- \melodic{
- \octave relative;
- [d''8 d d] [d g d]
- c c
- c4 c c c
- c c c c
- c c c c
- }
-}
-
diff --git a/input/bugs/grouping.fly b/input/bugs/grouping.fly
new file mode 100644
index 0000000000..ca109804ea
--- /dev/null
+++ b/input/bugs/grouping.fly
@@ -0,0 +1,2 @@
+
+[bes:16 e e e]
diff --git a/input/bugs/hari-number.ly b/input/bugs/hari-number.ly
new file mode 100644
index 0000000000..79bdd6050d
--- /dev/null
+++ b/input/bugs/hari-number.ly
@@ -0,0 +1,32 @@
+\score{
+ \melodic { R1 }
+ \paper{
+ linewidth = 40.0\mm;
+
+Staff = \translator {
+ \type "Hara_kiri_line_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";
+% {
+ \consists "Bar_column_engraver";
+ \consists "Bar_number_engraver";
+% }
+ \consists "Staff_margin_engraver";
+ \consists "Separating_line_group_engraver";
+% \consists "Line_group_engraver";
+
+ \accepts "Voice";
+}
+
+% }
+ }
+}
+
diff --git a/input/bugs/multi-slope.ly b/input/bugs/multi-slope.ly
deleted file mode 100644
index 24677ef3d0..0000000000
--- a/input/bugs/multi-slope.ly
+++ /dev/null
@@ -1,6 +0,0 @@
-\score{
- \melodic{
- \octave c';
- [c8 c16 c16]
- }
-}
diff --git a/input/bugs/out/dummy.dep b/input/bugs/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/input/bugs/out/dummy.dep
+++ /dev/null
diff --git a/input/bugs/slur-broken.ly b/input/bugs/slur-broken.ly
index dfdf22adc2..cb8391a086 100644
--- a/input/bugs/slur-broken.ly
+++ b/input/bugs/slur-broken.ly
@@ -2,7 +2,7 @@ shortlong = \melodic{
c4()c( c c |
c c c c |
c c c c |
- \break;
+ \break
c c c )c |
c c c c |
c c c c |
diff --git a/input/bugs/slur-bug.ly b/input/bugs/slur-bug.fly
index 474bf96c23..474bf96c23 100644
--- a/input/bugs/slur-bug.ly
+++ b/input/bugs/slur-bug.fly
diff --git a/input/bugs/s.ly b/input/bugs/slur-symmetry.ly
index c370d88947..60e1ad8dc6 100644
--- a/input/bugs/s.ly
+++ b/input/bugs/slur-symmetry.ly
@@ -3,10 +3,11 @@
title="symmetry";
}
\score{
- \melodic{
- \octave relative;
+ \melodic\relative c'{
[g'8( e )c' g,]
[d'( f' )a, a]
+ [d( f )a, d']
+ [g,( e, )c' c]
}
\paper{
castingalgorithm = \Wordwrap;
diff --git a/input/bugs/stem-length.ly b/input/bugs/stem-length.ly
deleted file mode 100644
index e4cb9443c8..0000000000
--- a/input/bugs/stem-length.ly
+++ /dev/null
@@ -1,7 +0,0 @@
-\score{
- \melodic{
- \octave c';
- [a'16 a']
- [c16 c]
- }
-}
diff --git a/input/bugs/tie-bug.ly b/input/bugs/tie-bug.ly
deleted file mode 100644
index 61c49afdea..0000000000
--- a/input/bugs/tie-bug.ly
+++ /dev/null
@@ -1,13 +0,0 @@
-
-\score{
- \melodic{
- \octave relative;
- <
- {\voicetwo <g'4 f'~> f}
- % this is the correct way
- % {\voicetwo <g'4 {f'~ f }> }
- {\voiceone c' ~ c }
- >
- }
-}
-
diff --git a/input/coriolan-alto.ly b/input/coriolan-alto.ly
deleted file mode 100644
index 71587c72ca..0000000000
--- a/input/coriolan-alto.ly
+++ /dev/null
@@ -1,77 +0,0 @@
-% remark: still temporarily broken.
-
-\header{
-filename = "coriolan-alto.ly";
-title = "Ouverture zu Collins Trauerspiel "Coriolan" Opus 62";
-description = "a 5 bar fragment of the alto part";
-composer = "Ludwig van Beethoven (1770-1792)";
-enteredby = "JCN";
-copyright = "public domain";
-
-TestedFeatures:
-}
-
-%
-% when lily can handle this, i-ll type the other 304 bars
-% (maybe even sooner :-)
-%
-
-\version "0.1.15";
-
-alto1 = \melodic{
- \meter 4/4;
- \key bes es as;
-
- \clef "alto";
- % these are chords (i.e. non-divisi)
- { \octave c ;
-
- [ c8 c8-. ] c2.( |
-%31
- [ ) c8 c8-. ] c2.( |
-%32
- [ ) c8 c8-. ] c4. c8-. c4( |
-%33
- [ ) c8 c8-. ] c4. c8-. c4 |
-
- %% divisi
- \type Voice="altodivisi1" {\stemup c4:16 ^"div." c4: c2: }
- \stemboth
- }
-%30:2
-}
-
-alto2 = \melodic{
- \octave c, ;
- \textstyle "italic";
- % this should be a \dynamic, rather than text
- [ c8 c8_"cresc. \ \ - \ \ \ \ - \ \ \ \ - \ \ \ \
- - \ \ \ \ - \ \ \ \ - \ \ \ \ - \ \ \ \
- - \ \ \ \ - \ \ \ \ - \ \ \ \ - \ \ \ \
- - \ \ \ \ - \ \ \ \ -" ] c2.( |
- \textstyle "roman";
-%31:2
- [ ) c8 c-. ] c2.( |
-%32:2
- [ ) c8 c-. ] c4. c8-. c4( |
-%33:2
- [ ) c8 c-. ] c4. c8-. c4 |
- \octave c ;
-
-%34
- % these are two \voices (i.e. divisi)
- % the c4 and c2, however are really 16th...
- % we-ll say "simile" for now...
- %
- \octave c, ;
- \type Voice="altodivisi2" {
- \stemdown
- as4: as4: as2}
- \stemboth
-}
-
-\score{
- \type Voice < \alto1 \alto2 >
- \paper{
- }
-}
diff --git a/input/example-1.fly b/input/example-1.fly
new file mode 100644
index 0000000000..2a99dcd297
--- /dev/null
+++ b/input/example-1.fly
@@ -0,0 +1,13 @@
+c'4 d e f g a b c
+
+% A simple scale in Mudela.
+%
+% Type:
+%
+% ly2dvi example-1
+% xdvi example-1 # or your dvi viewer here
+%
+% For more elaborate examples see twinkle.ly, kortjakje.ly and mutopia/*.
+%
+% A docmument on Mudela is under construction: Documentation/tex/mudela.doc
+% (available as .ps from the website too).
diff --git a/input/example-2.fly b/input/example-2.fly
new file mode 100644
index 0000000000..813fed7131
--- /dev/null
+++ b/input/example-2.fly
@@ -0,0 +1,13 @@
+a''2 ~ c4( [e8 )e] [a,16 a a a]
+
+% Some beamed and slurred notes of different taste in Mudela.
+%
+% Type:
+%
+% ly2dvi example-2
+% xdvi example-2 # or your dvi viewer here
+%
+% For more elaborate examples see twinkle.ly, kortjakje.ly and mutopia/*.
+%
+% A docmument on Mudela is under construction: Documentation/tex/mudela.doc
+% (available as .ps from the website too).
diff --git a/input/example-3.ly b/input/example-3.ly
new file mode 100644
index 0000000000..ebd4ba1851
--- /dev/null
+++ b/input/example-3.ly
@@ -0,0 +1,29 @@
+one = \melodic\relative c{
+ c'' d e f
+}
+
+two = \melodic\relative c{
+ \clef "bass";
+ c'2 g2
+}
+
+\score{
+ <
+ \one
+ \two
+ >
+ \paper{}
+ \midi{}
+}
+
+% A full-mudala example with two staffs
+%
+% Type:
+%
+% ly2dvi example-3
+% xdvi example-3 # or your dvi viewer here
+%
+% For more elaborate examples see twinkle.ly, kortjakje.ly and mutopia/*.
+%
+% A docmument on Mudela is under construction: Documentation/tex/mudela.doc
+% (available as .ps from the website too).
diff --git a/input/keys.ly b/input/keys.ly
index 35f27b18d0..134351df3c 100644
--- a/input/keys.ly
+++ b/input/keys.ly
@@ -1,19 +1,21 @@
-\version "0.1.15";
+\version "1.0.0";
-blah = \melodic{
- \meter 4/4;
- \octave c';
- \key bes es as;
+blah = \melodic {
+
+\transpose c'' {
+ \time 4/4;
+ \accidentals es;
[cis8 d e f] [e! a b cis'] |
es e f e a a' a a' |
- \clef "bass"; \octave c; [es16 c' b a] [g f es d] [c d es d] [c Bes As G] |
+ \clef "bass"; }
+ [es16 c' b a] [g f es d] [c d es d] [c Bes As G] |
\clef "violin";
- \key ;
+ \accidentals c;
cis4 c cis cis |
<cis dis eis fes ges> cis dis2 ~ |
- \meter 2/4 ;
+ \time 2/4 ;
dis4 dis ~ | c cis~ | c
}
diff --git a/input/kortjakje.ly b/input/kortjakje.ly
index 657eeaf89f..b3f68e393f 100644
--- a/input/kortjakje.ly
+++ b/input/kortjakje.ly
@@ -1,9 +1,8 @@
-
\header{
filename = "kortjakje.ly";
-title = "Ah, vous dirais-je, maman (variations)";
+title = "Ah vous dirais-je maman (variations)";
description = "bare bones version. (written down from memory :-)";
-composer = "Mozart, KV 265";
+composer = "Mozart KV 265";
enteredby = "HWN";
copyright = "public domain";
}
@@ -11,55 +10,51 @@ copyright = "public domain";
Tested Features: example file with comments
%}
-\version "0.1.15";
+\version "1.0.0";
% the % is a comment.
% declare melody (which will be in *one* staff ) for the lead voice
-melodie = \melodic {
+melodie = \melodic \relative c' {
% switch Lilypond in note-mode
\clef"violin";
- \meter 2/4 ;
- \octave c'; % set the default octave
- % the default note duratino is 4
+ \time 2/4 ;
%%% theme
- c4 c | % the '|' checks if there is a new measure here.
- g g|
+ c4 c | % the | checks if there is a new measure here.
+ g' g|
a a|
g2| % g2 means a "g-1" pitched half-note
f4 f| e e| d d| c2
- g4 g| f f| e e| d d| g g| f f| e e| d d|
+ g'4 g| f f| e e| d d| g g| f f| e e| d d|
%%% var 1
c4 r8 c % r8 means an 8th rest.
(| % start a slur
% NOTE: the slurstart should be directly after the note
) % end a slur.
- g4 r8 g8 () a4 r8 a8 () g4 r4
+ g'4 r8 g8 () a4 r8 a8 () g4 r4
f4 r8 f8 () e4 r8 e8 (|) d4 r8 d8 () c4 r4
}
% more of this.
-begeleiding = \melodic{
+begeleiding = \melodic \relative c {
\clef "bass";
- \meter 2/4 ;
- \octave c'; % default octave: 1 below the first octave.
+ \time 2/4 ;
%%% theme
- c,4 % ' before note means one octave lower.
- % Similarly: ' after means one higher.
- c e c f c e c d b, c a, f, g, c,2 |
- \octave c ;
- e4 g, d g, c g, b, g, e g, d g, c g, b, g,
+ c4 % before note means one octave lower.
+ % Similarly: after means one higher.
+ c' e c f c e c d b c a f g c,2 |
+ e'4 g, d' g, c g b g e' g, d' g, c g b g
%%%% var 1
- r8 e8() c4 r8 e8() c4 r8 f8() c4 r8 e8() c4
- r8 d8() b,4 r8 c8() a,4 r8 a,8() f,4 r8 e,8() c,4
+ r8 e'8() c4 r8 e8() c4 r8 f8() c4 r8 e8() c4
+ r8 d8() b4 r8 c8() a4 r8 a8() f4 r8 e8() c4
}
\score{
- \melodic \type Grand_staff <
+ \type GrandStaff <
\melodie
\begeleiding
>
diff --git a/input/minimal.ly b/input/minimal.ly
deleted file mode 100644
index 58ba75e4af..0000000000
--- a/input/minimal.ly
+++ /dev/null
@@ -1,52 +0,0 @@
-\notenames {
- c = \melodic_request { -1 0 0 }
-}
-
-%default_paper = \paper{
-paper_minimal = \paper{
- bla = 0.0;
- blo = 0.0;
-
- castingalgorithm = 0.0;
- linewidth = 15.0\cm;
- staffsize = 20.0\pt;
- interline = \linewidth / 14.0;
- notewidth = \interline;
- internote = \interline / 2.0;
-
- arithmetic_basicspace = 1.0;
- arithmetic_multiplier = 1.0;
- geometric = 0.0;
-
- Score = \translator {
- \type Score_engraver;
- \consists "Note_head_engraver" ;
- }
-
- bli = "hi";
-
- \symboltables {
- \texid "\input lilyponddefs \musixtwentydefs"
- "balls" = \table {
- "2" "\\quartball" 0.00\pt 3.63\pt -1.51\pt 1.51\pt
- "2l" "\\quartledger" -1.65\pt 8.26\pt -0.50\pt 0.50\pt
- }
- "param" = \table {
- "fill" "\hbox{}"
-% "rule" "\rulesym{%}{%}"
- }
- }
-}
-
-default_paper = \paper{
- \paper_minimal
-}
-
-\score{
-% \melodic_request { -1 0 0 }
- \melodic{ c'' }
- \paper{
- bla = 0.0;
- }
-}
-
diff --git a/input/multi.ly b/input/multi.ly
deleted file mode 100644
index ccd1322413..0000000000
--- a/input/multi.ly
+++ /dev/null
@@ -1,47 +0,0 @@
-\header{
-filename = "multi.ly";
-description = "stupid testfile for pl68 features.";
-enteredby = "HWN";
-copyright = "public domain";
-}
-%{
-Tested Features: \multi
-
-
-WARNING: the \multi construct is not very intuitive. You better try
-the
-
- \type Grand_staff <
- \type Staff = treble {.. }
- \type Staff = bass {.. }
- >
-
-construct to get multiple staffs, it's cleaner
-
-%}
-
-
-\version "0.1.15";
-
-\score{
- \melodic
- { \octave c'; c4 c4
- \multi 1 < { c2 c2 } { c'2 c'2 } >
- \multi 2 < { \stemdown c2 c2 } { \stemup c'2 c'2 } >
- \multi 3 < { \clef "bass"; c2 c2 }
- { \meter 2/4;\bar "||";
- \key fis cis gis; c'2 c'2 }
->
- c2 c1
- c1 c1
- \multi 1 < \multi 3 <
- { \meter 2/4; \clef "violin"; c2 c2 }
- { \meter 2/4; \clef "bass"; c2 c2 }
- >
- \multi 3 <
- { \meter 2/4; \clef "violin"; c2 c2 }
- { \meter 2/4; \clef "bass"; c2 c2 }
- >
- >
- }
-}
diff --git a/input/out/dummy.dep b/input/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/input/out/dummy.dep
+++ /dev/null
diff --git a/input/part.ly b/input/part.ly
index b2d6ad9bc2..b7beca7636 100644
--- a/input/part.ly
+++ b/input/part.ly
@@ -1,5 +1,4 @@
part = \melodic{
- \octave c;
c-1 c c c
r1*3
c4-5 c c c
diff --git a/input/pedal.ly b/input/pedal.ly
index 651cd94fcb..6810cfa6be 100644
--- a/input/pedal.ly
+++ b/input/pedal.ly
@@ -24,14 +24,13 @@
% \lbheel \lbheel \lfheel \lftoe
% \rbheel \rbtoe \rfheel \rftoe
-\version "0.1.15";
+\version "1.0.0";
\score{
\melodic {
- \meter 4/4;
- \key fis cis;
+ \time 4/4;
+ \key D;
\clef bass;
- \octave c;
% silly chord testing...
% these should be stacked...
% < c,-\ltoe e,-\lheel > < c'-\rtoe e'-\rheel>
diff --git a/input/praeludium-fuga-E.ly b/input/praeludium-fuga-E.ly
index 48ea88df3b..b198ed23f6 100644
--- a/input/praeludium-fuga-E.ly
+++ b/input/praeludium-fuga-E.ly
@@ -19,32 +19,41 @@
* organ staff...
%}
-\version "0.1.15";
+\version "1.0.0";
-noShift = { \property Voice.hshift = 0 }
-Shift = { \property Voice.hshift = 1 }
praeludium_commands = \melodic {
- \meter 4/4;
- \key fis cis gis dis; % E-major
+ \time 4/4;
+ \key e;
}
-praeludium_right = \melodic {
+praeludium_right = \melodic\transpose c'' {
\$praeludium_commands
- \octave c';
\clef violin;
% 13 -- how to type -- where to split -- this more neatly?
- \multi 2 <
+ \type Staff <
{ \stemup r4 dis'4 e'4. e'8 ~ |
- \Shift e'4 [d'8 fis'8] \noShift gis'4 ~ [gis'8 fis'16 e'16] |
+ \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 \Shift r4 bis4 cis'4 \noShift cis'4 |
- a'4 ~ [a'16 gis'16 a'16 b'16] \Shift dis'4 cis'4 ~ |
+ { \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 }
- { \stemup \Shift s4 gis4 }
- { \stemdown \Shift r4 fis4 \noShift gis4 gis4 |
+ {
+
+ %\stemup
+ %{
+ this is a diversion from the Griepenkerl/Keller
+ edition; a hack to avoid collisions
+ %}
+ \stemdown
+ \shifton s4 gis4 }
+
+ { \stemdown
+% \shifton % idem
+
+ r4 fis4 \shiftoff gis4 gis4 |
a4. cis'8 gis2 |
fis4 gis4 gis4 r8 e8 }
> |
@@ -53,19 +62,20 @@ praeludium_right = \melodic {
praeludium_left = \melodic {
\$praeludium_commands
- \octave c;
\clef bass;
% 13
- \multi 2 <
+ \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 bis2 }
- { \stemup \Shift r4 gis4 ~ [gis 8 gis8] ~ \stemdown \noShift gis4 |
+ { \stemup \shifton r4 gis4 ~ [gis 8 gis8] ~ \stemdown \shiftoff gis4 |
a4. fis8 gis4. a8 ~ |
a4 gis4 gis4 r8 gis8 }
- { \stemup \Shift s4 fis4 e}
+% { \stemup \shifton s4 fis4 e}
+% a quick hack to avoid some collisons
+ { \stemdown \shifton s4 fis4 e}
{ \stemdown s4 dis4 cis4 }
> |
% 16
@@ -73,7 +83,6 @@ praeludium_left = \melodic {
praeludium_pedal = \melodic {
\$praeludium_commands
- \octave c;
\clef bass;
% 13
@@ -85,17 +94,16 @@ praeludium_pedal = \melodic {
fuga2_commands = \melodic{
- \meter 3/4;
- \key fis cis gis dis; % E-major
+ \time 3/4;
+ \key e; % E-major
}
-fuga2_right = \melodic {
+fuga2_right = \melodic\transpose c'' {
\$fuga2_commands
- \octave c';
\clef violin;
% 15
- \multi 2 <
+ \type Staff <
{ \stemup [b8 fis8] b4 }
{ \stemdown fis2 }
>
@@ -107,18 +115,18 @@ fuga2_right = \melodic {
|x
|
%}
- \multi 2 <
- { \stemup \noShift e'4 }
- { \stemup \Shift cis'4 }
- { \stemup \Shift ais4 }
+ \type Staff <
+ { \stemup \shiftoff e'4 }
+ { \stemup \shifton cis'4 }
+ { \stemup \shifton ais4 }
{ \stemdown fis4 }
> |
% 16
- \multi 2 <
+ \type Staff <
{ \stemup dis'2 dis'4 |
cis'2 cis'4 |
b4. [cis'8 dis'8 e'8] }
- { \stemup \Shift [b8 fis8] b2 ~ |
+ { \stemup \shifton [b8 fis8] b2 ~ |
[b8 a!16 gis16] a2 ~ |
a4 gis2 }
{ \stemdown fis2. ~ |
@@ -130,11 +138,10 @@ fuga2_right = \melodic {
fuga2_left = \melodic {
\$fuga2_commands
- \octave c;
\clef bass;
% 15
- \multi 2 <
+ \type Staff <
{ \stemdown b2 \stemup ais4 |
b2 b4 }
{ \stemdown s2 e4 |
@@ -147,7 +154,6 @@ fuga2_left = \melodic {
fuga2_pedal = \melodic {
\$fuga2_commands
- \octave c;
\clef bass;
% 15
@@ -159,7 +165,7 @@ fuga2_pedal = \melodic {
}
breakmusic = \melodic {
- %\meter 4/4;
+ %\time 4/4;
r1
}
@@ -167,7 +173,7 @@ breakmusic = \melodic {
% these should be two separate scores...
\score{
\type Score <
- \type Grand_staff <
+ \type GrandStaff <
\type Staff = treble {
\praeludium_right \breakmusic \fuga2_right }
\type Staff = bass {
diff --git a/input/rhythm.ly b/input/rhythm.ly
index e0a019dbbf..a9624effb9 100644
--- a/input/rhythm.ly
+++ b/input/rhythm.ly
@@ -7,26 +7,26 @@ TestedFeatures = "multiple meters, beaming, unsynced bars, userdefd engravers";
-\version "0.1.15";
+\version "1.0.0";
-ritme = \melodic{ %\octave ;
+ritme = \melodic\transpose c'' {
\partial 8;
- \octave c';
- \meter 4/4;
+
+ \time 4/4;
c8 |
[a8~ a8. a8 a16 a16 a16] c4. | % watch the beams!
r32 r32 r16 r8 r4 r2 |
- \meter 5/16;
+ \time 5/16;
% divide measure in 5 equal parts. Usually it 2+3 or 3+2
\grouping 16*5 ;
[c8 c16 c8 ] | % watch THIS!
[5/4 c16 c16 c16 c16]1/1 |
- \meter 2/8;
+ \time 2/8;
c4 |
c4 c4 c4 c4
- \meter 4/4;
+ \time 4/4;
c1 c1 c1
% [c16 c16 c16 c16 ] |
@@ -37,22 +37,22 @@ ritme = \melodic{ %\octave ;
another =
- \melodic{ \meter 4/4;
- c1. c1. c4 c4 c4 c4 \meter 4/4; c1 c1 c1
+ \melodic{ \time 4/4;
+ c1. c1. c4 c4 c4 c4 \time 4/4; c1 c1 c1
}
yanother =
- \melodic{ \meter 4/4;
+ \melodic{ \time 4/4;
c1 c1 c1 c4 c4 c4 c4 c1 c1 c1
}
\score{
- \type Staff_group <
+ \type StaffGroup <
\ritme
\another
- \type Rhythmic_staff {
+ \type RhythmicStaff {
\yanother
}
>
@@ -71,13 +71,13 @@ yanother =
\consists "Vertical_align_engraver";
- \accepts "Staff_group";
+ \accepts "StaffGroup";
\accepts "Staff";
\accepts "Lyrics";
- \accepts "Grand_staff";
+ \accepts "GrandStaff";
}
-Rhythmic_staff = \translator
+RhythmicStaff = \translator
{
\type "Engraver_group_engraver";
nolines = "1";
diff --git a/input/scales.ly b/input/scales.ly
index 397198f53e..6c18cddc2f 100644
--- a/input/scales.ly
+++ b/input/scales.ly
@@ -12,26 +12,25 @@ copyright = "public domain";
% scales with accents.
%
-\version "0.1.15";
+\version "1.0.0";
blah = \melodic {
- \meter 6/8;
- \octave c, ;
+ \time 6/8;
+\transpose c {
\clef "bass";
c4. d
- \octave c ;
+}
c d
\clef "violin" ;
- \octave c' ;
- \transpose d { e f }
- \octave c'' ;
+\transpose c'' {
+ \transpose d { e f } }
+\transpose c''' {
c4. d
%ugr
- |[6/9 a8 \< a a a a a a \! a a \ff \> ]1/1 |
- \octave c' ;
- |[6/9 a a a a a a a a \! a ]1/1 |
- \octave c'' ;
-
- [6/9'c->-.-\fermata \< g,->-.-\fermata
+ |[6/9 a8 \< a a a a a a \! a a \ff \> ]1/1 | }
+ \transpose c'' {
+ [6/9 a a a a a a a a \! a ]1/1 | }
+ \transpose c''' {
+ [6/9 c,->-.-\fermata \< g,->-.-\fermata
d->-.-\fermata a->-.-\fermata
e'->-.-\fermata b'-. f''-. c'''->-.-\fermata
\! g'''->-.-\fermata \> ]1/1
@@ -40,8 +39,8 @@ blah = \melodic {
f''->-.-\fermata b'->-.-\fermata e'->-.-\fermata
a->-.-\fermata d->-.-\fermata g,->-.-\fermata \!
c,->-.-\fermata ]1/1
- \octave c;
- [6/9'c->-.-\fermata \< g,->-.-\fermata d->-.-\fermata
+
+ [6/9 c,->-.-\fermata \< g,->-.-\fermata d->-.-\fermata
a->-.-\fermata
e'->-.-\fermata b'-. f''-.
c'''->-.-\fermata \! g'''->-.-\fermata \> ]1/1
@@ -49,26 +48,27 @@ blah = \melodic {
f''->-.-\fermata b'->-.-\fermata e'->-.-\fermata
a->-.-\fermata d->-.-\fermata
g,->-.-\fermata \! c,->-.-\fermata ]1/1
- \octave c' ;
- \octave c' ;
+ }
+ \transpose c'' {
[2/3 c g d' ]1/1
[2/3 d' g c ]1/1
[2/3 f c' g' ]1/1
- [2/3 g' c' f ]1/1
- \octave c ;
+ [2/3 g' c' f ]1/1
+ }
+ \transpose c' {
[2/3 c g d' ]1/1
[2/3 d' g c ]1/1
[2/3 f c' g' ]1/1
[2/3 g' c' f ]1/1
[2/3 g' c' f ]1/1
- \meter 4/4;
+ \time 4/4;
-c1
+c1}
r8-"text" r8^. r8_. r8 r8 r8 r8 r8
[c-> d-> e-> f->][g-> a-> b-> c'->] % 1
-\octave c'; [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^]
-\octave c; [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^]
+\transpose c'' { [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^]}
+ [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^]
[c-. d-. e-. f-.][g-. a-. b-. c'-.]
[c'-- b-- a-- g][f-- e-- d c--] % 5
[c-\portato d-\portato e-\portato f-\portato]
@@ -86,5 +86,6 @@ c1
\score{
\melodic {\blah}
\paper{
+ castingalgorithm = \Wordwrap;
}
}
diff --git a/input/scripts.ly b/input/scripts.ly
index 31c227d576..bce1fb13ad 100644
--- a/input/scripts.ly
+++ b/input/scripts.ly
@@ -1,9 +1,9 @@
-\version "0.1.15";
+\version "1.0.0";
-blah = \melodic {
- \octave c';
+blah = \melodic{ \transpose c'' {
+
c,4 ->-.-\fermata-"text"
c ->-.-\fermata-"text"
c' ->-.-\fermata-"text"
@@ -43,9 +43,7 @@ blah = \melodic {
\stemup
b,---. c---. d---. e---. f---. g---. a---. b---. c'---.
\stemboth
-
- \meter 4/4;
- \octave c';
+ \time 4/4;
[c8 \< d e \! f][d' \> e' f' \! g']
[c-> \< d-> e-> \! f->][d'-> \> e'-> f'-> \! g'->]
[c-^ \< d-^ e-^ \! f-^][d'-^ \> e'-^ f'-^ \! g'-^]
@@ -60,7 +58,8 @@ blah = \melodic {
[d'-\fermata \> e'-\fermata f'-\fermata \! g'-\fermata]
[c-\lheel \< d-\lheel e-\lheel \! f-\lheel]
[d'-\lheel \> e'-\lheel f'-\lheel \! g'-\lheel]
-}
+
+}}
\score{
diff --git a/input/test/Makefile b/input/test/Makefile
index 9f29c9f5db..e09e760108 100644
--- a/input/test/Makefile
+++ b/input/test/Makefile
@@ -1,12 +1,11 @@
-# input/Makefile
+# input/test/Makefile
-# subdir level:
-#
depth = ../..
-#
-include $(depth)/make/Mutopia.make
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
-examples=font20 denneboom
+examples=font20 hara-kiri grace mark denneboom
+
+include $(stepdir)/WWW.make
-include $(depth)/make/WWW.make
diff --git a/input/bugs/a.ly b/input/test/a.ly
index 45b63b199e..45c13fc8b5 100644
--- a/input/bugs/a.ly
+++ b/input/test/a.ly
@@ -5,29 +5,27 @@ TestedFeatures = "This file tests Feta embedded slurs"
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.15";
+\version "1.0.0";
-shortlong = \melodic{
- \octave c';
+shortlong = \melodic\transpose c'{
c4()c( c c |
c c c c |
c c c c |
- \break;
+ \break
c c c )c |
}
-sl = \melodic{
- \octave c'';
+sl = \melodic\transpose c''{
+
% e4()e( a e |
e4 e( a e |
e e e e |
e e e a |
- \break;
+ \break
e e g )e |
}
-broken = \melodic{
- \octave c'';
+broken = \melodic\transpose c'' {
c c c c()
c c c c(
c )c c c(
@@ -35,16 +33,16 @@ broken = \melodic{
)a' a' a' a'()
a' a' a' a'()
c( c c )c
- c( c c )'f
+ c( c c )f,
f,( c c )c
- f,( c c )'f
+ f,( c c )f,
}
\score{
\melodic{
-% \shortlong
+ \shortlong
\sl
-% \broken
+ \broken
}
\paper{
indent = 0.0\pt;
diff --git a/input/test/abbrev.ly b/input/test/abbrev.ly
index c57aeabdae..2cb2d7b141 100644
--- a/input/test/abbrev.ly
+++ b/input/test/abbrev.ly
@@ -1,17 +1,20 @@
-\score{\melodic {
+\score{
+ \melodic \transpose c'''{
+ \stemup
+% \stemdown
% default abbreviations
c4 c4: c4:32 c4: c4 c2.
- 'a1
- 'a1:32
- 'c4:8 c': 'c4:16 c':
- [ 'c8:16 'c 'c 'c ] [ a a a a ]
- [ 'c 'f 'b e ]
- [ 'c16:32 'c 'c 'c ] [ a16:32 a a a ]
+ a,1
+ a,1:32
+ c,4:8 c': c,4:16 c':
+ [ c,8:16 c, c, c, ] [ a a a a ]
+ [ c, f, b, e ]
+ [ c,16:32 c, c, c, ] [ a16:32 a a a ]
% % there's still some hairy beam bugfixing todo
- [ c'8:16 g d 'a ]
- [ c'16:32 g d 'a ]
- [ 'c8:32 'f 'b e ]
+ [ c'8:16 g d a, ]
+ [ c,8:32 f, b, e ]
+% [ c'16:32 g d a, ]
[:32 c16 e]
[:32 c16 e]
[:16 c8 e]
@@ -19,4 +22,8 @@
[:16 e2 g]
[:16 e1 g]
-}}
+ }
+ \paper{
+ castingalgorithm = \Wordwrap;
+ }
+}
diff --git a/input/test/bar-scripts.ly b/input/test/bar-scripts.ly
new file mode 100644
index 0000000000..55b4f4ea74
--- /dev/null
+++ b/input/test/bar-scripts.ly
@@ -0,0 +1,78 @@
+
+
+
+onestaff = \type Staff = foo\melodic {
+ \property Staff.instr = instr
+ \property Staff.instrument = instrument \mark "B";
+ c1 \mark "A"; \break c2 c2 \break
+}
+
+grstaff = \melodic \type GrandStaff <
+ \type Staff = bar {
+
+ \property Staff.instr = instr
+
+ \mark "B"; \break c1 \mark "A"; c2 }
+ \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";
+}}
+
+scscore = \score { \grstaff \paper {
+\scpaper
+}}
+
+
+stscore = \score { \onestaff \paper {
+ \stpaper
+}}
+
+\score {\stscore}
+%\score {\scscore}
diff --git a/input/test/beam-abbrev.fly b/input/test/beam-abbrev.fly
new file mode 100644
index 0000000000..e65abb3444
--- /dev/null
+++ b/input/test/beam-abbrev.fly
@@ -0,0 +1,5 @@
+c'1:16
+\stemup
+c4:8 c4:16 [c8:16 c:] [c,8:16 c'':]
+\stemboth
+[c,,8:16 c'':]
diff --git a/input/test/beam-chord.ly b/input/test/beam-chord.ly
index 0f6a295ebd..e0200c2744 100644
--- a/input/test/beam-chord.ly
+++ b/input/test/beam-chord.ly
@@ -1,14 +1,13 @@
\score{
- \melodic{
+ \melodic\transpose c'{
\property Score.beamquantisation = \none
- \octave c';
[a'8 <a' g'']>
- [c <c 'e]>
+ [c <c e,]>
[a'16 <a' g'']>
- [c <c 'e]>
+ [c <c e,]>
[a'32 <a' g'']>
- [c <c 'e]>
+ [c <c e,]>
}
\paper{
castingalgorithm = \Wordwrap;
diff --git a/input/test/beam-length.fly b/input/test/beam-length.fly
new file mode 100644
index 0000000000..5c7d7a7ffa
--- /dev/null
+++ b/input/test/beam-length.fly
@@ -0,0 +1,3 @@
+% beams should look the same
+ [d''8 d d] [d g d]
+ c c
diff --git a/input/test/beam-pos.ly b/input/test/beam-pos.ly
index 76030ec43e..6d32b96ef3 100644
--- a/input/test/beam-pos.ly
+++ b/input/test/beam-pos.ly
@@ -1,7 +1,7 @@
\score{
- \melodic{
+ \melodic\transpose c''{
\property Score.beamquantisation = 3 % TEST
- \octave c';
+
[c8 c] [c c] [c c] [c c]
[a' a'] [a' a'] [a' a'] [a' a']
[c16 c] [c c] [c c] [c c]
diff --git a/input/test/beams.ly b/input/test/beams.ly
index f3bb1637dc..686dca2388 100644
--- a/input/test/beams.ly
+++ b/input/test/beams.ly
@@ -6,15 +6,15 @@ copyright = "PD";
TestedFeatures = "beams and beamflags";
}
-\version "0.1.15";
+\version "1.0.0";
\score{
<
% \property Score.beamquantisation = \none
- \type Grand_staff <
- \melodic {
- \octave c';
- \meter 8/4;
+ \type GrandStaff <
+ \melodic\transpose c' {
+
+ \time 8/4;
\stemup [c8 c'' a' f']
\stemup [c16 c'' a' f']
\stemup [c32 c'' a' f']
@@ -29,39 +29,39 @@ TestedFeatures = "beams and beamflags";
\stemup [g128 g g g]
r32
- \octave c;
- \stemboth;
+ \transpose c{
+ \stemboth
[c'8 c'] [b b] [a a] [g g] [f f] [e e]
[c'16 c'] [b b] [a a] [g g] [f f] [e e]
[c'32 c'] [b b] [a a] [g g] [f f] [e e]
- [c'64 c'] [e e]
+ [c'64 c'] [e e]}
}
>
<
\melodic {
- \octave c';
- \meter 8/4;
+\transpose c' {
+ \time 8/4;
\stemdown [a'8 a, c e]
\stemdown [a'16 a, c e]
\stemdown [a'32 a, c e]
\stemdown [a'64 a, c e]
\stemdown [a'128 a, c e]
- r32
+ r32}
- \octave c;
+ \transpose c{
\stemdown [d''8 d'' d'' d'']
\stemdown [d''16 d'' d'' d'']
\stemdown [d''32 d'' d'' d'']
\stemdown [d''64 d'' d'' d'']
\stemdown [d''128 d'' d'' d'']
- r32
+ r32}
- \octave c'';
- \stemboth;
+ \transpose c''{
+ \stemboth
[a8 a] [b b] [c' c'] [d' d'] [e' e'] [f' f']
[a16 a] [b b] [c' c'] [d' d'] [e' e'] [f' f']
[a32 a] [b b] [c' c'] [d' d'] [e' e'] [f' f']
- [a64 a] [f' f']
+ [a64 a] [f' f']}
}
>
>
diff --git a/input/test/broken.ly b/input/test/broken.ly
index 16b44a6f6e..8f33fb5490 100644
--- a/input/test/broken.ly
+++ b/input/test/broken.ly
@@ -5,18 +5,18 @@ TestedFeatures = "This file tests Feta embedded slurs"
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.15";
+\version "1.0.0";
shortlong = \melodic{
c4()c( c c |
c c c c |
c c c c |
- \break;
+ \break
c c c )c |
}
-broken = \melodic{
- \octave c'';
+broken = \melodic\transpose c''{
+
c c c c()
c c c c(
c )c c c(
@@ -24,9 +24,9 @@ broken = \melodic{
)a' a' a' a'()
a' a' a' a'()
c( c c )c
- c( c c )'f
+ c( c c )f,
f,( c c )c
- f,( c c )'f
+ f,( c c )f,
}
\score{
diff --git a/input/test/clefs.ly b/input/test/clefs.ly
index 3c14564347..a49133116b 100644
--- a/input/test/clefs.ly
+++ b/input/test/clefs.ly
@@ -1,17 +1,17 @@
\score {
- \melodic{ \octave c';
- \clef "violin"; c1^"{violin}" \bar "||";
- \clef "french";c1^"{french}" \bar "||";
- \clef "soprano";c1^"{soprano}" \bar "||";
- \clef "mezzosoprano";c1^"{mezzosoprano}" \bar "||";
- \clef "alto";c1^"{alto}" \bar "||";
- \clef "tenor";c1^"{tenor}" \bar "||";
- \clef "baritone";c1^"{baritone}" \bar "||";
- \clef "varbaritone";c1^"{varbaritone}" \bar "||";
- \clef "G_8";c1^"{sub 8?}" \bar "||";
- \clef "G^8";c1^"{sup 8?}" \bar "|.";
- \clef "bass";c1^"{bass}" \bar "||";
- \clef "subbass";c1^"{subbass}" \bar "|.";
+ \melodic{
+ \clef "violin"; c'1^"{violin}" \bar "||";
+ \clef "french";c'1^"{french}" \bar "||";
+ \clef "soprano";c'1^"{soprano}" \bar "||";
+ \clef "mezzosoprano";c'1^"{mezzosoprano}" \bar "||";
+ \clef "alto";c'1^"{alto}" \bar "||";
+ \clef "tenor";c'1^"{tenor}" \bar "||";
+ \clef "baritone";c'1^"{baritone}" \bar "||";
+ \clef "varbaritone";c'1^"{varbaritone}" \bar "||";
+ \clef "G_8";c'1^"{sub 8?}" \bar "||";
+ \clef "G^8";c'1^"{sup 8?}" \bar "|.";
+ \clef "bass";c'1^"{bass}" \bar "||";
+ \clef "subbass";c'1^"{subbass}" \bar "|.";
}
\paper{
}
diff --git a/input/test/collisions.ly b/input/test/collisions.ly
index 6ab2e5f41e..ade5a27a95 100644
--- a/input/test/collisions.ly
+++ b/input/test/collisions.ly
@@ -5,13 +5,13 @@ enteredby = "HWN,JCN";
copyright = "public domain";
Tested = "test the Collision resolution ";
}
-\version "0.1.15";
+\version "1.0.0";
two_voice = \melodic
- \multi 2 <
- { \stemdown \octave c';
+ \type Staff <
+ { \stemdown
c4 d e f g2~ g4 a [c8 d e f] c2| }
{ \stemup
g4 f e g ~ g2 g2 c4 g4 g2 }
@@ -19,9 +19,9 @@ two_voice = \melodic
>
two_voice_steminvert = \melodic
- \multi 2 <
+ \type Staff <
{
- \octave c'; \stemup
+ \stemup
% the f and g on 4th beat are exceptionally ugh.
c4 d e f g2 g4 a | }
{ \stemdown
@@ -30,7 +30,7 @@ two_voice_steminvert = \melodic
>
three_voice = \melodic
- \multi 2 <
+ \type Staff <
{ \stemup
g4 f e f g a g2 }
{ \stemup \property Voice.hshift = 1
@@ -41,7 +41,7 @@ three_voice = \melodic
rests = \melodic
- \multi 2 <
+ \type Staff <
{ \stemup
| r8 r r r r r r r
[c' b a g] [f e d c]
@@ -53,21 +53,20 @@ rests = \melodic
>
restsII = \melodic {
- \octave c';
- \multi 2 <
+ \type Staff <
{ \stemup g' f' e' d' c' b a g f e d c }
{ \stemdown r r r r r r r r r r r r }
>
- \multi 2 <
+ \type Staff <
{ \stemup r r r r r r r r r r r r }
{ \stemdown c d e f g a b c' d' e' f' g' }
>
r8 r4
- \multi 2 < r8 r8 >
- \multi 2 < r8 r8 r8 >
- \multi 2 < r8 r8 r8 r8 >
- \multi 2 < r r >
- \multi 2 < r r r >
+ \type Staff < r8 r8 >
+ \type Staff < r8 r8 r8 >
+ \type Staff < r8 r8 r8 r8 >
+ \type Staff < r r >
+ \type Staff < r r r >
\stemup
[c''8 r8 c''8 c''8]
[c8 r8 c8 c8]
@@ -77,7 +76,7 @@ restsII = \melodic {
}
\score{
- { \two_voice
+ \melodic \transpose c' { \two_voice
\two_voice_steminvert
\three_voice
\rests
diff --git a/input/test/denneboom.ly b/input/test/denneboom.ly
index 23ae35e3ba..7dd60edfb8 100644
--- a/input/test/denneboom.ly
+++ b/input/test/denneboom.ly
@@ -7,7 +7,7 @@ TestedFeatures = "This file tests silly line shapes";
\include "paper20.ly"
-\version "0.1.15";
+\version "1.0.0";
oden = \lyric{
O8 |
@@ -33,8 +33,7 @@ ugloeit = \lyric{
licht8. ge-16 spreid.4 _8
}
-oboom = \melodic{
- \octave c';
+oboom = \melodic\transpose c''{
g,8 |
c8. c16 c4. d8 |
e8. e16 e4. e8 |
@@ -42,8 +41,7 @@ oboom = \melodic{
d8. c16 c4 r8
}
-bos = \melodic{
- \octave c';
+bos = \melodic\transpose c''{
g8 |
g e a4. g8 |
g8. f16 f4 r8 f8 |
@@ -52,7 +50,7 @@ bos = \melodic{
}
global = \melodic{
- \meter 3/4;
+ \time 3/4;
\partial 8;
\skip 4*48;
\bar "|.";
diff --git a/input/test/find-quarts.ly b/input/test/find-quarts.ly
new file mode 100644
index 0000000000..7952b0f1bc
--- /dev/null
+++ b/input/test/find-quarts.ly
@@ -0,0 +1,8 @@
+\score{
+ \melodic \relative c {
+ c d c f c g c b, c g, c f, c c'' c
+% run with find-quarts should suggest:
+% c d c f c g' c, b c g c f, c' c'' c,,
+ }
+}
+
diff --git a/input/test/font-body.ly b/input/test/font-body.ly
index c9fbb81382..be1e3f0d98 100644
--- a/input/test/font-body.ly
+++ b/input/test/font-body.ly
@@ -1,9 +1,9 @@
-\version "0.1.15";
-FontBody= \melodic{
- \octave c';
+\version "1.0.0";
+
+FontBody= \melodic\transpose c''{
\bar "|:";
- \meter 4/4;
- \multi 2 < { \stemup e'\longa a\breve | }
+ \time 4/4;
+ \type Staff < { \stemup e'\longa a\breve | }
{ \stemdown
c1 \clef "bass"; b,, \clef "violin"; c' a'
c2 \clef "alto"; g c' \clef "violin"; a'
@@ -18,36 +18,38 @@ FontBody= \melodic{
[c \< d e f] [as' ges' f' e']
[cis' dis' c' des'] [cisis' disis' \! ceses' deses'] |
\clef "bass";
+ r\longa * 1/4 r\breve *1/2
r1 r2 r4 r8 r16 r32 r64 r128 r128 |
- \multi 2 < { \stemup r2 r2} {\stemdown c c }>
- \multi 2 < { \stemup c,,1 } {\stemdown r1}>
+ \type Staff < { \stemup r2 r2} {\stemdown c c }>
+ \type Staff < { \stemup c,,1 } {\stemdown r1}>
\stemboth
\clef "violin";
e8_. g'8-> e16^^ g'16_^
e32 _| g'32^| g''32-\ltoe g''32-\lheel
e64-\rtoe g'64-\rheel c4... |
- \octave c'';
- \meter 4/4;
- \textstyle "finger";
- c4^"1" d^"2" e^"3" f^"4" g^"5"
-
- % Music to the Martians!
- < bes4^"6" e_"7" c_"8" >
- a^"0"_"9"
-
- a'^\flageolet
- \textstyle "roman";
- \meter 1/2; a2 |
- \meter 3/2; < a1.
- { s4 \ppp \< s4 \! s4 \fff s4 \> s4 \! s4\ppp} >
- |
- \meter 2/4; a2 |
- \meter 5/4; a1.. |
- \meter 6/8; a2. |
- \meter 7/8; a2.. |
- \meter 9/8; a1... |
- \meter 12/8; a1. |
- \meter 12/4;
- r1. r2. r4. r8. r16. r32. r64. r64. |
+ \transpose c'{
+ \time 4/4;
+ \property Voice . textstyle = "finger"
+ c4^"1" d^"2" e^"3" f^"4" g^"5"
+
+ % Music to the Martians!
+ < bes4^"6" e_"7" c_"8" >
+ a^"0"_"9"
+
+ a'^\flageolet
+ \property Voice . textstyle = "roman"
+ \time 1/2; a2 |
+ \time 3/2; < a1.
+ { s4 \ppp \< s4 \! s4 \fff s4 \> s4 \! s4\ppp} >
+ |
+ \time 2/4; a2 |
+ \time 5/4; a1.. |
+ \time 6/8; a2. |
+ \time 7/8; a2.. |
+ \time 9/8; a1... |
+ \time 12/8; a1. |
+ \time 12/4;
+ r1. r2. r4. r8. r16. r32. r64. r64. |
}
+}
diff --git a/input/test/font.ly b/input/test/font.ly
index 1b72842cd6..2063e9fb96 100644
--- a/input/test/font.ly
+++ b/input/test/font.ly
@@ -7,7 +7,7 @@ description = "This file tests the Feta music font";
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.15";
+\version "1.0.0";
\include "font-body.ly"
\score{
diff --git a/input/test/font16.ly b/input/test/font16.ly
index a79a64d7c4..9b2d190f79 100644
--- a/input/test/font16.ly
+++ b/input/test/font16.ly
@@ -7,7 +7,7 @@ description = "This file tests the Feta music font";
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.15";
+\version "1.0.0";
\include "font-body.ly"
\score{
diff --git a/input/test/font20.ly b/input/test/font20.ly
index e78f752bd4..d0884925a7 100644
--- a/input/test/font20.ly
+++ b/input/test/font20.ly
@@ -8,13 +8,12 @@ TestedFeatures =
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\include "paper20.ly"
\include "font-body.ly"
+
\score{
- \FontBody
+ \type Staff { \FontBody}
\paper{
- \paper_twenty
linewidth = 17.5 \cm;
gourlay_maxmeasures =5.;
}
- }
+}
diff --git a/input/test/gourlay.ly b/input/test/gourlay.ly
index 0e83b364b1..9d82c7aa42 100644
--- a/input/test/gourlay.ly
+++ b/input/test/gourlay.ly
@@ -4,7 +4,7 @@ copyright = "PD";
TestedFeatures = "This file tests some nasty Gourlay spacings";
}
-\version "0.1.15";
+\version "1.0.0";
%{
@@ -13,10 +13,9 @@ This is taken from [Gourlay]'s paper on breaking lines
%}
\score{
- \melodic \multi 2 < \octave c'';
+ \melodic \type Staff \transpose c''<
{ \stemup; d2 d | d d | d4 d2. | \break; c1 }
- \octave c';
- { \stemdown; g4 g g g | \[2/3 g2 g2 g2 \] | g4. g8 g2 | c1 }
+ \transpose c, { \stemdown; g4 g g g | \[2/3 g2 g2 g2 \] | g4. g8 g2 | c1 }
>
\paper{
linewidth = 8.\cm;
diff --git a/input/test/grace.ly b/input/test/grace.ly
new file mode 100644
index 0000000000..deec5f44f3
--- /dev/null
+++ b/input/test/grace.ly
@@ -0,0 +1,27 @@
+
+\include "table13.ly";
+\include "table16.ly";
+
+\score{
+ <
+ \type Staff = a \melodic\relative c <
+% {\grace b''8 \graceat a4 \ecarg g fis2 | a2 a }
+ {\tiny b''8*1/16 \normalsize a4*31/32 g fis2 | a2 a }
+ >
+ \type Staff = b \melodic\relative c <
+% {\grace g''16 b16 \graceat a4 \ecarg g fis2 | }
+ {\tiny g''16*1/16 b16*1/16 \normalsize a4*31/32 g fis2 | a1 }
+ >
+ \type Staff = c \melodic\relative c <
+% {\grace [2/48 g''16 b g]/1 \graceat a4 \ecarg g fis2 | a1 }
+ {\tiny [2/48 g''16 b g]/1 \normalsize a4*31/32 g fis2 | a1 }
+ >
+ >
+ \paper {
+ linewidth = 120.0\mm;
+ -2 = \symboltables { \table_thirteen }
+ -1 = \symboltables { \table_sixteen }
+
+ }
+}
+
diff --git a/input/test/hara-kiri.ly b/input/test/hara-kiri.ly
index 4a63bd9367..7913177956 100644
--- a/input/test/hara-kiri.ly
+++ b/input/test/hara-kiri.ly
@@ -1,36 +1,85 @@
+
+toeter_i = \melodic\relative c {
+ \property Staff.instrument = "Toeters"
+ \property Staff.instr = "Ttr."
+ c'''4 c c c \break
+ d d d d \break
+ R1 \break
+ \voiceone
+ e4 e e e \break
+ \onevoice
+ f f f f \break
+ g g g g
+}
+
+toeter_ii = \melodic \relative c {
+ c''4 c c c \break
+ d d d d \break
+ R1 \break
+ \voicetwo
+ e4 e e e \break
+ \onevoice
+ f f f f \break
+ g g g g
+}
+
+toeters = \type StaffGroup = xtoeters <
+ \type Staff = toeters <
+ \toeter_i
+ \toeter_ii
+ >
+>
+
+zager = \type Staff = zager \melodic \relative c {
+ \clef bass;
+ \property Staff.instrument = "Zager"
+ \property Staff.instr = "Zag."
+ c4 d e f \break
+ \property Staff.instr = "Zag. \& Zog."
+ f e d c \break
+ c d e f \break
+ \property Staff.instr = "Zag."
+ \voiceone
+ f e d c \break
+ \onevoice
+ c d e f \break
+ f e d c
+}
+
+zoger = \type Staff = zoger \melodic \relative c {
+ \clef bass;
+ \property Staff.instrument = "Zoger"
+ \property Staff.instr = "Zog."
+ c4 d e f \break
+ \skip 1*2;
+% \staffone
+ \translator Staff=zager
+ \voicetwo
+ c2 g2\break
+ \onevoice
+ a4 b c d \break
+ \skip 1*1;
+}
+
+default_paper = \include "score-paper.ly";
+
+zagers = \type GrandStaff <
+ \zager
+ \zoger
+>
+
\score{
- \melodic{
- c4 c c c \break
- d d d d \break
- R1*4 \break
- e4 e e e \break
- f f f f \break
- }
+ <
+ \type StaffGroup = toeters <
+ \toeters
+ >
+ \type StaffGroup = zagers <
+ \zagers
+ >
+ >
\paper{
linewidth = 40.0\mm;
-
-% this is broken: edit init/engraver.ly
-%
-%{
-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";
- \consists "Bar_column_engraver";
- \consists "Bar_number_engraver";
-
- \consists "Separating_line_group_engraver";
-% \consists "Line_group_engraver";
- \consists "Hara_kiri_line_group_engraver";
-%}
- }
}
}
+
+
diff --git a/input/test/keys.ly b/input/test/keys.ly
new file mode 100644
index 0000000000..9c5bd3623b
--- /dev/null
+++ b/input/test/keys.ly
@@ -0,0 +1,11 @@
+%{
+test key itemv breaking
+%}
+\score {
+ \melodic
+ {
+ \key bes; c1 \key c; c1
+ \break
+ \key bes; c1 \key d;\break c1
+ }
+}
diff --git a/input/test/knee.ly b/input/test/knee.ly
index f43487c34f..eedb742039 100644
--- a/input/test/knee.ly
+++ b/input/test/knee.ly
@@ -1,7 +1,6 @@
-\version "0.1.15";
+\version "1.0.0";
\score{
- \melodic{
- \octave relative;
+ \melodic\relative c'{
[c16 \stemdown c'' \stemboth c,, d]
\stemdown [d'' a \stemboth c,, g,]
\stemup [g c' \stemboth a'' d']
diff --git a/input/test/mark.ly b/input/test/mark.ly
new file mode 100644
index 0000000000..29fdba15fa
--- /dev/null
+++ b/input/test/mark.ly
@@ -0,0 +1,23 @@
+global = \melodic {
+ s1 | \mark "A";
+ s1*2 | \mark "'12";
+}
+
+one = \melodic\relative c{
+ c'' c c c
+ c c c c
+ c c c c
+}
+
+two = \melodic\relative c{
+ b' b b b
+ b b b b
+ b b b b
+}
+
+\score{
+ < \global \one \two >
+ \paper {
+ \include "score-bar-numbering.ly";
+ }
+}
diff --git a/input/test/multi-rest.ly b/input/test/multi-rest.ly
index 691427bd49..aa41f4496c 100644
--- a/input/test/multi-rest.ly
+++ b/input/test/multi-rest.ly
@@ -1,4 +1,4 @@
-voice_one = \melodic { \octave c'; \stemup
+voice_one = \melodic\transpose c' { \stemup
R1 * 2 | f'4-. r r2 | R1 * 3 |
f'4-. r r2 | R1 * 3 |
es'4-. r r2 | r1 |
@@ -9,7 +9,7 @@ voice_one = \melodic { \octave c'; \stemup
}
voice_two = \melodic
- { \transpose 'c { \stemdown
+ { \transpose c, { \stemdown
R1 * 2 | f'4-. r r2 | R1 * 3 |
f'4-. r r2 | R1 * 3 |
es'4-. r r2 | r1 |
diff --git a/input/test/multi-slope.fly b/input/test/multi-slope.fly
new file mode 100644
index 0000000000..3e63dd367f
--- /dev/null
+++ b/input/test/multi-slope.fly
@@ -0,0 +1 @@
+ [c8 c16 c16]
diff --git a/input/test/ossia.ly b/input/test/ossia.ly
new file mode 100644
index 0000000000..62cb305290
--- /dev/null
+++ b/input/test/ossia.ly
@@ -0,0 +1,3 @@
+\score {
+\melodic { c1 c1 < {\clef "treble"; c1 c1 } \type Staff=stb{ c1 c1}>}
+}
diff --git a/input/test/out/dummy.dep b/input/test/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/input/test/out/dummy.dep
+++ /dev/null
diff --git a/input/test/score-bar-scripts.ly b/input/test/score-bar-scripts.ly
new file mode 100644
index 0000000000..a27deda9f8
--- /dev/null
+++ b/input/test/score-bar-scripts.ly
@@ -0,0 +1,75 @@
+
+
+
+onestaff = \type Staff = foo\melodic {
+ \property Staff.instr = instr
+ \property Staff.instrument = instrument \mark "B"; c1 \mark "A"; \break c2 c2 \break }
+
+grstaff = \melodic \type GrandStaff <
+ \type Staff = bar {
+
+ \property Staff.instr = instr
+
+ \mark "B"; \break c1 \mark "A"; c2 }
+ \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";
+
+ 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";
+}}
+
+scscore = \score { \grstaff \paper {
+\scpaper
+}}
+
+
+stscore = \score { \onestaff \paper {
+ \stpaper
+}}
+
+%\score {\stscore}
+\score {\scscore}
diff --git a/input/test/sizes.fly b/input/test/sizes.fly
new file mode 100644
index 0000000000..00923366a4
--- /dev/null
+++ b/input/test/sizes.fly
@@ -0,0 +1,10 @@
+% to see the magic: uncomment size stuff in init/paper20.ly
+
+c'4 c4
+
+\property Voice.fontsize= "-2"
+b16 * 1 / 2 (
+\property Voice.fontsize= "0" )
+g4 *31/32
+
+a a g2
diff --git a/input/test/sleur.ly b/input/test/sleur.ly
index d0bdc34543..7fec239ef5 100644
--- a/input/test/sleur.ly
+++ b/input/test/sleur.ly
@@ -5,7 +5,7 @@ TestedFeatures = "This file tests Feta embedded slurs"
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.15";
+\version "1.0.0";
shortlong = \melodic{
c4()c( c c |
@@ -15,20 +15,20 @@ shortlong = \melodic{
c c c )c |
}
-dirs = \melodic {
- \octave c';
+dirs = \melodic\transpose c' {
+
c'1() g' () c () g () c |
}
complex = \melodic{
- \octave c';
- c,16( e,( g,( b,( d( f( a( c'())))))))c4 c4 |
- \octave c''';
- c,16( a( f( d( b,( g,( e,( c,())))))))c4 c4 |
+\transpose c'{
+ c,16( e,( g,( b,( d( f( a( c'())))))))c4 c4 |}
+\transpose c'''{
+ c,16( a( f( d( b,( g,( e,( c,())))))))c4 c4 |}
}
-over = \melodic{
- \octave c';
+over = \melodic\transpose c'{
+
e( g' g' )e
e( a' a' )e
@@ -51,8 +51,8 @@ over = \melodic{
e( c'' f )e
}
-under = \melodic{
- \octave c';
+under = \melodic\transpose c'{
+
\stemdown
f'( \stemboth d d \stemdown )f'
f'( \stemboth c c \stemdown )f'
@@ -76,8 +76,8 @@ under = \melodic{
f'( e, f )f'
}
-eccentric = \melodic{
- \octave c';
+eccentric = \melodic\transpose c'{
+
\stemup
\[4/7 f( a' f f f f )f \] |
\[4/7 f( f f f f a' )f \] |
@@ -86,8 +86,7 @@ eccentric = \melodic{
\[4/7 e'( e' e' e' e' c )e' \] |
}
-tiltup = \melodic{
- \octave c';
+tiltup = \melodic\transpose c'{
e( c'' c'' )e'
\stemup
e( c'' c'' )e'
@@ -101,8 +100,7 @@ tiltup = \melodic{
f'( a, a, )f''
}
-tiltdown = \melodic{
- \octave c';
+tiltdown = \melodic\transpose c'{
e'( c'' c'' )e
\stemup
e'( c'' c'' )e
@@ -116,8 +114,7 @@ tiltdown = \melodic{
f''( a, a, )f'
}
-broken = \melodic{
- \octave c'';
+broken = \melodic\transpose c''{
c c c c()
c c c c(
c )c c c(
@@ -125,13 +122,12 @@ broken = \melodic{
)a' a' a' a'()
a' a' a' a'()
c( c c )c
- c( c c )'f
+ c( c c )f,
f,( c c )c
- f,( c c )'f
+ f,( c c )f,
}
-blend = \melodic{
- \octave c';
+blend = \melodic\transpose c'{
e( c'' c'' )e
\stemup
f'( c'' c'' )f'
@@ -152,8 +148,8 @@ blend = \melodic{
}
-bug = \melodic{
- \octave c';
+bug = \melodic\transpose c'{
+
a()g( f )e
b'()a'( g' )f'
g( f' e' )d'
@@ -161,15 +157,14 @@ bug = \melodic{
c' () b () c' c'
}
-clipping = \melodic{
- \octave c';
+clipping = \melodic\transpose c'{
\stemboth
c( c''' c''')c
c( c''' c )c''
c''( c c''' )c
\stemdown
c( \stemup c,,, c,,, \stemdown )c
- c( \stemup c,,, c \stemdown )''c
+ c( \stemup c,,, c \stemdown )c,,
c,,( \stemup c c,,, \stemdown )c
}
diff --git a/input/test/slur-bug.ly b/input/test/slur-bug.ly
new file mode 100644
index 0000000000..583415ceef
--- /dev/null
+++ b/input/test/slur-bug.ly
@@ -0,0 +1,8 @@
+% bug
+% excentric slur can't handle this ...
+\score{
+ \melodic{
+ \stemdown
+ \[4/5c8( c f,, c c\]1/1 c c c )c |
+ }
+}
diff --git a/input/test/slur-damping.ly b/input/test/slur-damping.ly
index 663487904a..7b4f14bf87 100644
--- a/input/test/slur-damping.ly
+++ b/input/test/slur-damping.ly
@@ -1,9 +1,10 @@
% test damping
+\version "1.0.0";
\score{
- \melodic{
- \octave relative;
- c'()b' ~ 'b c
+ \melodic\relative c'{
+
+ c'()b' ~ b, c
c c c c
c c c c
c c c c
diff --git a/input/test/slur-swap.ly b/input/test/slur-swap.ly
new file mode 100644
index 0000000000..6c09f424d3
--- /dev/null
+++ b/input/test/slur-swap.ly
@@ -0,0 +1,18 @@
+% urg, the direction of the slur gets swapped!
+\score{
+ \melodic\relative c{
+ \slurup
+ \stemup
+ [e'8( c' a b]
+ \stemdown
+ [e c a )e] \break
+ \stemup
+ [e8( c' a b]
+ \stemdown
+ [e c a )e] e1
+ }
+ \paper{
+ indent = 0.\mm
+ linewidth=80.\mm
+ }
+}
diff --git a/input/test/slurs.ly b/input/test/slurs.ly
index aeb78c5ac8..d723fbb618 100644
--- a/input/test/slurs.ly
+++ b/input/test/slurs.ly
@@ -1,33 +1,27 @@
-\version "0.1.15";
+\version "1.0.0";
\score{
- \melodic{\octave c';
+ \melodic\transpose c'{
c,4 ~ c, c'' ~ c'' ~ g ~ c ~
d ~ e ~ f ~ g ~
a ~ b ~ c, ~ c
< c e ( > <)d f>
- \octave c'';
+ \transpose c''
< c e ( > <)d f>
- \octave c';
+ \transpose c'
< c e ( > <)d' f'>
< { c ~ d }
{ e ~ f }
>
-% \multi 2 <
+% \type Staff <
% { \stemup c'8 ~g ~e( ~c~ [c'~ g' e' )c'] c'' ~ c'' c~c }
% { \stemdown c (e g )c'~( [b a g )d] r2 }
% >
{
-% \octave c';
-% c,16( e,( g,( b,( d( f( a( c'~ )))))))c4 c4 |
-% \octave c''';
-% c,16( a( f( d( b,( g,( e,( c,~ )))))))c4 c4 |
-% \octave c';
-% c'1() g' () c () g () c |
c4()c( c c |
c c c c |
diff --git a/input/test/spacing.ly b/input/test/spacing.ly
index 3af80b1eb0..e8c72ce3f7 100644
--- a/input/test/spacing.ly
+++ b/input/test/spacing.ly
@@ -6,10 +6,10 @@ copyright = "public domain";
TestedFeatures = "This file tests various spacings";
}
-\version "0.1.15";
+\version "1.0.0";
multipart = \melodic{
- \multi 3 <
+ \type StaffGroup <
{
c4
c
diff --git a/input/test/stem.ly b/input/test/stem.ly
index c707e14ef3..6df99dd73f 100644
--- a/input/test/stem.ly
+++ b/input/test/stem.ly
@@ -8,29 +8,28 @@ of beams";
}
-\version "0.1.15";
+\version "1.0.0";
beamintervals = \melodic{
- \meter 7/4;
+ \time 7/4;
\stemup
- \octave c';
+\transpose c'{
[ c8 d ] [ c e ] [ c f ] [ c g ] [ c a ] [ c b ] [ c c' ] |
[ c b, ] [ c a, ] [ c g, ] [ c f, ] [ c e, ] [ c d, ] [ c c, ] |
- \octave c'';
+ }\transpose c''{
[ c b, ] [ c a, ] [ c g, ] [ c f, ] [ c e, ] [ c d, ] [ c c, ] |
- \stemdown
- \octave c''';
+ \stemdown}
+ \transpose c'''{
[ c b, ] [ c a, ] [ c g, ] [ c f, ] [ c e, ] [ c d, ] [ c c, ] |
- \octave c'';
+} \transpose c''{
[ c b, ] [ c a, ] [ c g, ] [ c f, ] [ c e, ] [ c d, ] [ c c, ] |
[ c d ] [ c e ] [ c f ] [ c g ] [ c a ] [ c b ] [ c c' ] |
- }
+ }}
\score{
- \melodic{
- \octave c';
+ \melodic\transpose c'{
\stemup
- \meter 17/4;
+ \time 17/4;
g,4 a, b, c d e f g a b c' d' e' f' g' a' b' |
\stemdown
b' a' g' f' e' d' c' b a g f e d c b, a, g, |
diff --git a/input/test/test-lyrics.ly b/input/test/test-lyrics.ly
index 4d42f97030..bc65c2442e 100644
--- a/input/test/test-lyrics.ly
+++ b/input/test/test-lyrics.ly
@@ -40,8 +40,8 @@ $quite_long_lyrics_staff = \type Lyrics = quite <
\$quite_long
>
-melody = \melodic{
- \octave c';
+melody = \melodic
+\transpose c'{
c4 e4 g4 e4 c4 e4 g4 e4 c4 e4 g4 e4 c4 e4 g4 e4
c4 e4 g4 e4 c4 e4 g4 e4 c4 e4 g4 e4 c4 e4 g4 e4
}
diff --git a/input/test/tie-bug.ly b/input/test/tie-bug.ly
new file mode 100644
index 0000000000..0cdf237204
--- /dev/null
+++ b/input/test/tie-bug.ly
@@ -0,0 +1,8 @@
+
+% middle tie is wrong
+\score{
+ \melodic\relative c'{
+ { <c4 e g~ > <d f a>
+ }
+}}
+
diff --git a/input/test/tie.ly b/input/test/tie.ly
index 2018b00868..4a708b9eb9 100644
--- a/input/test/tie.ly
+++ b/input/test/tie.ly
@@ -1,11 +1,11 @@
-tie = \melodic{
- \octave c'';
+tie = \melodic\transpose c''{
+
e4 ~ e e e ~ |
e ~ a a a ~ |
a d d d ~ |
e e e e |
- ''g ''g ''g ''g ~ |
- ''g ''g ''g ''g |
+ g,, g,, g,, g,, ~ |
+ g,, g,, g,, g,, |
}
\score{
diff --git a/input/test/title.ly b/input/test/title.ly
index cae3d93f9f..50209186cd 100644
--- a/input/test/title.ly
+++ b/input/test/title.ly
@@ -3,32 +3,38 @@ filename = "title.ly";
title = "Title";
subtitle = "Subtitle";
composer= "Composer (xxxx-yyyy)";
-opus = "Opus 0";
arranger = "Arranger";
copyright = "public domain";
enteredby = "jcn";
source = "urtext";
-piece = "Piece I";
instrument= "Instrument";
}
+\version "1.0.0";
+
\score{
- \melodic{
- \octave relative;
+ \melodic
+ \relative c'{
c' d e f f e d c \break
c d e f f e d c
}
+ \header{
+ opus = "Opus 0";
+ piece = "Piece I";
+ override="Overdriven";
+ }
}
-\header{
-piece = "Piece II";
-opus = "Opus 1";
-}
\score{
- \melodic{
+ \melodic
+ \relative c' {
f' e d c c d e f \break
f e d c c d e f
}
+ \header{
+ piece = "Piece II";
+ opus = "Opus 1";
+ }
}
diff --git a/input/test/transposing.fly b/input/test/transposing.fly
new file mode 100644
index 0000000000..1af11261b2
--- /dev/null
+++ b/input/test/transposing.fly
@@ -0,0 +1,10 @@
+% btw: this is not how transposing is done in mudela,
+% this is a transposing performer, i.e. for midi-output only
+\property Staff.transposing = 0 c
+\property Staff.transposing = 2 c
+\property Staff.transposing = 4 c
+\property Staff.transposing = 5 c
+\property Staff.transposing = 7 c
+\property Staff.transposing = 9 c
+\property Staff.transposing = 11 c
+\property Staff.transposing = 12 c
diff --git a/input/test/transposition.ly b/input/test/transposition.ly
new file mode 100644
index 0000000000..3c6dac9233
--- /dev/null
+++ b/input/test/transposition.ly
@@ -0,0 +1,64 @@
+%{
+Hi all,
+
+I have extend Mats' patches to allow accidental transposition:
+ \accidentals bes es fis;
+ = \transpose d =>
+ \accidentals gis;
+
+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
+
+Eric
+%}
+
+\header{
+title = "Test it";
+description = "Transposition Test file";
+enteredby = "Eric Bullinger";
+copyright = "public domain";
+}
+
+
+\version "1.0.0";
+
+vOne = \melodic \relative c''{
+ \clef"violin";
+ \key d;
+ \time 2/4 ;
+ d4 d |
+ \key fis;
+ fis4 fis |
+ \key es;
+ c4 c |
+}
+
+vTwo = \melodic \relative c''\transpose d' { \vOne }
+
+vThree = \melodic \relative c''{
+ \clef"violin";
+ \accidentals fis cis;
+ \time 2/4 ;
+ d4 d |
+ \accidentals bes es fis;
+ fis4 fis |
+ \accidentals fis cis gis dis ais eis;
+ cis4 ais4 |
+}
+
+vFour = \melodic \relative c''\transpose d' \vThree
+
+\score {
+ \type StaffGroup <
+ \vOne
+ \vTwo
+ \vThree
+ \vFour
+ >
+ \paper { linewidth= 130.\mm; }
+}
+
+
+
diff --git a/input/test/updown.fly b/input/test/updown.fly
new file mode 100644
index 0000000000..dfac8a1cf6
--- /dev/null
+++ b/input/test/updown.fly
@@ -0,0 +1,9 @@
+% this used to work:
+% <{\voiceone e}
+% {\voicetwo c}>
+
+% now we need:
+\type Staff
+<{\voiceone e}
+{\voicetwo c}>
+
diff --git a/input/test/vertical-align.ly b/input/test/vertical-align.ly
new file mode 100644
index 0000000000..bb479e3cc0
--- /dev/null
+++ b/input/test/vertical-align.ly
@@ -0,0 +1,33 @@
+
+\score {
+\melodic <
+ \type GrandStaff < {
+ \property GrandStaff . maxVerticalAlign = "60."
+ \property GrandStaff . minVerticalAlign = "35."
+
+ c'1 \break c'''''1
+ }
+ { c'1 \break c,,,,1}
+ >
+
+>
+
+\paper{
+Staff = \translator {
+ \type "Line_group_engraver_group";
+ defaultclef = violin;
+
+ \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 --git a/input/tril.ly b/input/tril.ly
index a09198ee97..f7d64a5676 100644
--- a/input/tril.ly
+++ b/input/tril.ly
@@ -5,7 +5,7 @@ TestedFeatures = "This file tests trills"
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.15";
+\version "1.0.0";
\score{
\melodic{
diff --git a/input/twinkle-pop.ly b/input/twinkle-pop.ly
index 599749f934..eb2cd8e9a3 100644
--- a/input/twinkle-pop.ly
+++ b/input/twinkle-pop.ly
@@ -12,23 +12,23 @@ copyright = "public domain";
Tested Features lyrics and chords
%}
-\version "0.1.15";
+\version "1.0.0";
-melodie = \melodic {
+melodie = \melodic\relative c {
\clef"violin";
- \meter 2/4 ;
- \octave c';
+ \time 2/4 ;
- c4^"C" c | g g | a^"F" a | g2^"C" |
+ c''4^"C" c | g' g | a^"F" a | g2^"C" |
f4^"F" f | e^"C" e | d^"G7" d | c2^"C" |
- g4^"G" g | f^"F" f | e^"C" e | d^"G7" d |
+ g'4^"G" g | f^"F" f | e^"C" e | d^"G7" d |
g^"G" g | f^"F" f | e^"C" e | d^"G7" d |
- c4^"C" c | g g | a^"F" a | g2^"C" |
+ c4^"C" c | g' g | a^"F" a | g2^"C" |
f4^"F" f | e^"C" e | d^"G7" d | c2^"C" |
}
text = \lyric{
- \textstyle "italic";
+ \property Lyrics . textstyle = "italic"
+
Ah!4 vous dir- ai_- je ma man2
Ce4 qui cau- se mon tour- ment2
Pa-4 pa veut que je rai- so- nne
diff --git a/input/twinkle.ly b/input/twinkle.ly
index ed7bb618b4..926f7abafb 100644
--- a/input/twinkle.ly
+++ b/input/twinkle.ly
@@ -15,63 +15,60 @@ copyright = "public domain";
Tested Features: lyrics, interleaving lyrics and staffs
%}
-\version "0.1.15";
+\version "1.0.0";
-melody = \melodic{
+melody = \melodic \relative c'' {
\clef violin;
- \octave c';
\property Staff.instrument = "alto sax"
- c4 c | g g | a a | g g |
- f f | e e | d d8.( e16 | )c2 | % :|
+ c4 c | g' g | a a | g g |
+ f f | e e | d d8.( e16 | )c2 |
- g4 g | f f | e e | d d |
+ g'4 g | f f | e e | d d |
g g | f f | e( e8. f16 | e4 )d |
- c c | g g | a a | g g |
- f f | e e | d d8.( e16 | )c2 % :|
- \bar ":|";
+ c c | g' g | a a | g g |
+ f f | e e | d d8.( e16 | )c2 |
}
-accompany = \melodic {
+accompany = \melodic \relative c {
\clef "bass";
- \octave c,;
- c4 c' | e' c' | f' c' | e' c' |
- d' b | c' a | f g | c2 |
+ c4 c' | e c | f c | e c |
+ d b | c a | f g | c,2 |
- e'4 g | d g | c' g | b g |
- e' g | d' g | c' c'8.( d'16 | c'4 )b |
+ e'4 g, | d' g, | c g | b g |
+ e' g, | d' g, | c c8.( d16 | c4 )b |
- c c' | e' c' | f' c' | e' c' |
- d' b | c' a | f g | c2
- \bar ":|";
+ c, c' | e c | f c | e c |
+ d b | c a | f g | c,2
}
global = \melodic {
- \meter 2 / 4;
- \skip 2*24;
-% \bar "|.";
- }
+ \time 2/4;
+ \skip 2*24;
+ \bar ":|";
+}
tekst = \lyric{
Al-4 tijd is Kort- jak- je ziek,2
-% midden4 in_de week maar s,_zon- dags niet.2
+ midden4 in_de week maar s,_zon- dags niet.2
% ugly hack: insertion of empty syllables creates columns on extra
% moments. The net result is more spacing.
%
- midden8 _8 in_de8 _8 week4 maar s,_zon- dags niet.2
+% probably not necessary anymore
+% midden8 _8 in_de8 _8 week4 maar s,_zon- dags niet.2
s,_Zon-4 dags gaat ze naar de kerk,2
met4 een boek vol zil- ver werk.2
Al-4 tijd is Kort- jak- je ziek,2
midden8 _8 in_de8 _8 week4 maar s,_zon- dags niet.2
}
-%{
+%{
Ja inderdaad. Dit is geen educatieve danwel muzikaal verantwoorde
tekst. Mogen wij ook af en toe ergens op afgeven?
-
%}
+
hegedraagjetekst = \lyric{
Al-4 tijd zuigt Bill Gates mijn piek,2
"\TeX"4 is slecht- ser dan mu- ziek.2
@@ -82,21 +79,18 @@ hegedraagjetekst = \lyric{
}
texte = \lyric{
-
-% \textstyle "italic" ;
- \textstyle "roman" ;
+ \property Lyrics . textstyle" = "italic"
+% \property Lyrics . textstyle" = "roman"
Ah!4 vous dir- ai_- je ma man2
Ce4 qui cau- se mon tour- ment2
Pa-4 pa veut que je rai- sonne2
Comme4 un- e grand- e per- sonne2
Moi4 je dis que les bon- bons2
Val-4 ent mieux que la rai- son2
-
}
texti = \lyric{
-
- \textstyle "roman";
+ \property "Lyrics"."textstyle" = "roman"
Twin-4 kle, twin- kle, lit- tle star,2
How4 I won- der what you are.2
Up4 a- bove the world so high,2
@@ -116,18 +110,15 @@ textii = \lyric{
}
textiii = \lyric{
-
Then4 the tra- veler in the dark2
Thanks4 you for your ti- ny spark;2
He_could4 not see which way to go,2
If4 you did not twin- kle so.2
Twin-4 kle, twin- kle, lit- tle star,2
How4 I won- der what you are!2
-
}
$top_lyrics = \type Lyrics = top <
- \global
\tekst
>
@@ -142,18 +133,17 @@ $bass_staff = \type Staff = bass <
>
$middle_lyrics = \type Lyrics = middle <
- \global
\texte
>
$bottom_lyrics = \type Lyrics = bottom <
- \global
+% \global
\texti
\textii
\textiii
>
-$grand_staff = \type Staff_group <
+$grand_staff = \type GrandStaff <
\$treble_staff
\$middle_lyrics
\$bass_staff
@@ -168,8 +158,6 @@ $grand_staff = \type Staff_group <
\$bottom_lyrics
>
\paper{
- % use a lot of space, to avoid clashing syllables
-% arithmetic_multiplier = 8.\pt;
gourlay_maxmeasures = 14.0;
}
\midi{
diff --git a/intl/ChangeLog b/intl/ChangeLog
new file mode 100644
index 0000000000..6bda59584e
--- /dev/null
+++ b/intl/ChangeLog
@@ -0,0 +1,693 @@
+Sat Dec 2 22:51:38 1995 Marcus Daniels <marcus@sysc.pdx.edu>
+
+ * cat-compat.c (textdomain):
+ Reverse order in which files are tried you load. First
+ try local file, when this failed absolute path.
+
+Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
+
+ * cat-compat.c (bindtextdomain): Add missing { }.
+
+Sun Nov 26 18:21:41 1995 Ulrich Drepper <drepper@myware>
+
+ * libintl.inst: Add missing __P definition. Reported by Nelson Beebe.
+
+ * Makefile.in:
+ Add dummy `all' and `dvi' goals. Reported by Tom Tromey.
+
+Sat Nov 25 16:12:01 1995 Franc,ois Pinard <pinard@iro.umontreal.ca>
+
+ * hash-string.h: Capitalize arguments of macros.
+
+Sat Nov 25 12:01:36 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (DISTFILES): Prevent files names longer than 13
+ characters. libintl.h.glibc->libintl.glibc,
+ libintl.h.install->libintl.inst. Reported by Joshua R. Poulson.
+
+Sat Nov 25 11:31:12 1995 Eric Backus <ericb@lsid.hp.com>
+
+ * dcgettext.c: Fix bug in preprocessor conditionals.
+
+Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
+
+ * libgettext.h: Solaris cc does not understand
+ #if !SYMBOL1 && !SYMBOL2. Sad but true.
+
+Thu Nov 23 16:22:14 1995 Ulrich Drepper <drepper@myware>
+
+ * hash-string.h (hash_string):
+ Fix for machine with >32 bit `unsigned long's.
+
+ * dcgettext.c (DCGETTEXT):
+ Fix horrible bug in loop for alternative translation.
+
+Thu Nov 23 01:45:29 1995 Ulrich Drepper <drepper@myware>
+
+ * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed:
+ Some further simplifications in message number generation.
+
+Mon Nov 20 21:08:43 1995 Ulrich Drepper <drepper@myware>
+
+ * libintl.h.glibc: Use __const instead of const in prototypes.
+
+ * Makefile.in (install-src):
+ Install libintl.h.install instead of libintl.h. This
+ is a stripped-down version. Suggested by Peter Miller.
+
+ * libintl.h.install, libintl.h.glibc: Initial revision.
+
+ * localealias.c (_nl_expand_alias, read_alias_file):
+ Protect prototypes in type casts by __P.
+
+Tue Nov 14 16:43:58 1995 Ulrich Drepper <drepper@myware>
+
+ * hash-string.h: Correct prototype for hash_string.
+
+Sun Nov 12 12:42:30 1995 Ulrich Drepper <drepper@myware>
+
+ * hash-string.h (hash_string): Add prototype.
+
+ * gettextP.h: Fix copyright.
+ (SWAP): Add prototype.
+
+Wed Nov 8 22:56:33 1995 Ulrich Drepper <drepper@myware>
+
+ * localealias.c (read_alias_file): Forgot sizeof.
+ Avoid calling *printf function. This introduces a big overhead.
+ Patch by Roland McGrath.
+
+Tue Nov 7 14:21:08 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy.
+
+ * finddomain.c (stpcpy):
+ Define substitution function local. The macro was to flaky.
+
+ * cat-compat.c: Fix typo.
+
+ * xopen-msg.sed, linux-msg.sed:
+ While bringing message number to right place only accept digits.
+
+ * linux-msg.sed, xopen-msg.sed: Now that the counter does not have
+ leading 0s we don't need to remove them. Reported by Marcus
+ Daniels.
+
+ * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in
+ dependency. Reported by Marcus Daniels.
+
+ * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement.
+ Generally cleanup using #if instead of #ifndef.
+
+ * Makefile.in: Correct typos in comment. By Franc,ois Pinard.
+
+Mon Nov 6 00:27:02 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (install-src): Don't install libintl.h and libintl.a
+ if we use an available gettext implementation.
+
+Sun Nov 5 22:02:08 1995 Ulrich Drepper <drepper@myware>
+
+ * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported
+ by Franc,ois Pinard.
+
+ * libgettext.h: Use #if instead of #ifdef/#ifndef.
+
+ * finddomain.c:
+ Comments describing what has to be done should start with FIXME.
+
+Sun Nov 5 19:38:01 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning.
+ DISTFILES.common names the files common to both dist goals.
+ DISTFILES.gettext are the files only distributed in GNU gettext.
+
+Sun Nov 5 17:32:54 1995 Ulrich Drepper <drepper@myware>
+
+ * dcgettext.c (DCGETTEXT): Correct searching in derived locales.
+ This was necessary since a change in _nl_find_msg several weeks
+ ago. I really don't know this is still not fixed.
+
+Sun Nov 5 12:43:12 1995 Ulrich Drepper <drepper@myware>
+
+ * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This
+ might mark a special condition.
+
+ * finddomain.c (make_entry_rec): Don't make illegal entry as decided.
+
+ * Makefile.in (dist): Suppress error message when ln failed.
+ Get files from $(srcdir) explicitly.
+
+ * libgettext.h (gettext_const): Rename to gettext_noop.
+
+Fri Nov 3 07:36:50 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (make_entry_rec):
+ Protect against wrong locale names by testing mask.
+
+ * libgettext.h (gettext_const): Add macro definition.
+ Capitalize macro arguments.
+
+Thu Nov 2 23:15:51 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (_nl_find_domain):
+ Test for pointer != NULL before accessing value.
+ Reported by Tom Tromey.
+
+ * gettext.c (NULL):
+ Define as (void*)0 instad of 0. Reported by Franc,ois Pinard.
+
+Mon Oct 30 21:28:52 1995 Ulrich Drepper <drepper@myware>
+
+ * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering.
+
+Sat Oct 28 23:20:47 1995 Ulrich Drepper <drepper@myware>
+
+ * libgettext.h: Disable dcgettext optimization for Solaris 2.3.
+
+ * localealias.c (alias_compare):
+ Peter Miller reported that tolower in some systems is
+ even dumber than I thought. Protect call by `isupper'.
+
+Fri Oct 27 22:22:51 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (libdir, includedir): New variables.
+ (install-src): Install libintl.a and libintl.h in correct dirs.
+
+Fri Oct 27 22:07:29 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c.
+
+ * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques.
+
+ * localealias.c:
+ Fix typo and superflous test. Reported by Christian von Roques.
+
+Fri Oct 6 11:52:05 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (_nl_find_domain):
+ Correct some remainder from the pre-CEN syntax. Now
+ we don't have a constant number of successors anymore.
+
+Wed Sep 27 21:41:13 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (DISTFILES): Add libintl.h.glibc.
+
+ * Makefile.in (dist-libc): Add goal for packing sources for glibc.
+ (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc.
+
+ * loadmsgcat.c: Forget to continue #if line.
+
+ * localealias.c:
+ [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name
+ space clean.
+
+ * dcgettext.c, finddomain.c: Better comment to last change.
+
+ * loadmsgcat.c:
+ [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to
+ __fstat, __open, __close, __read, __mmap, and __munmap resp
+ to keep ANSI C name space clean.
+
+ * finddomain.c:
+ [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean.
+
+ * dcgettext.c:
+ [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to
+ keep ANSI C name space clean.
+
+ * libgettext.h:
+ Include sys/types.h for those old SysV systems out there.
+ Reported by Francesco Potorti`.
+
+ * loadmsgcat.c (use_mmap): Define if compiled for glibc.
+
+ * bindtextdom.c: Include all those standard headers
+ unconditionally if _LIBC is defined.
+
+ * finddomain.c: Fix 2 times defiend -> defined.
+
+ * textdomain.c: Include libintl.h instead of libgettext.h when
+ compiling for glibc. Include all those standard headers
+ unconditionally if _LIBC is defined.
+
+ * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc.
+
+ * gettext.c:
+ Include libintl.h instead of libgettext.h when compiling for glibc.
+ Get NULL from stddef.h if we compile for glibc.
+
+ * finddomain.c: Include libintl.h instead of libgettext.h when
+ compiling for glibc. Include all those standard headers
+ unconditionally if _LIBC is defined.
+
+ * dcgettext.c: Include all those standard headers unconditionally
+ if _LIBC is defined.
+
+ * dgettext.c: If compiled in glibc include libintl.h instead of
+ libgettext.h.
+ (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc.
+
+ * dcgettext.c: If compiled in glibc include libintl.h instead of
+ libgettext.h.
+ (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc.
+
+ * bindtextdom.c:
+ If compiled in glibc include libintl.h instead of libgettext.h.
+
+Mon Sep 25 22:23:06 1995 Ulrich Drepper <drepper@myware>
+
+ * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0.
+ Reported by Marcus Daniels.
+
+ * cat-compat.c (bindtextdomain):
+ String used in putenv must not be recycled.
+ Reported by Marcus Daniels.
+
+ * libgettext.h (__USE_GNU_GETTEXT):
+ Additional symbol to signal that we use GNU gettext
+ library.
+
+ * cat-compat.c (bindtextdomain):
+ Fix bug with the strange stpcpy replacement.
+ Reported by Nelson Beebe.
+
+Sat Sep 23 08:23:51 1995 Ulrich Drepper <drepper@myware>
+
+ * cat-compat.c: Include <string.h> for stpcpy prototype.
+
+ * localealias.c (read_alias_file):
+ While expand strdup code temporary variable `cp' hided
+ higher level variable with same name. Rename to `tp'.
+
+ * textdomain.c (textdomain):
+ Avoid warning by using temporary variable in strdup code.
+
+ * finddomain.c (_nl_find_domain): Remove unused variable `application'.
+
+Thu Sep 21 15:51:44 1995 Ulrich Drepper <drepper@myware>
+
+ * localealias.c (alias_compare):
+ Use strcasecmp() only if available. Else use
+ implementation in place.
+
+ * intl-compat.c:
+ Wrapper functions now call *__ functions instead of __*.
+
+ * libgettext.h: Declare prototypes for *__ functions instead for __*.
+
+ * cat-compat.c, loadmsgcat.c:
+ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+ of the standard libc and so prevent libintl.a from being used
+ standalone.
+
+ * bindtextdom.c:
+ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+ of the standard libc and so prevent libintl.a from being used
+ standalone.
+ Rename to bindtextdomain__ if not used in GNU C Library.
+
+ * dgettext.c:
+ Rename function to dgettext__ if not used in GNU C Library.
+
+ * gettext.c:
+ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+ of the standard libc and so prevent libintl.a from being used
+ standalone.
+ Functions now called gettext__ if not used in GNU C Library.
+
+ * dcgettext.c, localealias.c, textdomain.c, finddomain.c:
+ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+ of the standard libc and so prevent libintl.a from being used
+ standalone.
+
+Sun Sep 17 23:14:49 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c: Correct some bugs in handling of CEN standard
+ locale definitions.
+
+Thu Sep 7 01:49:28 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c: Implement CEN syntax.
+
+ * gettextP.h (loaded_domain): Extend number of successors to 31.
+
+Sat Aug 19 19:25:29 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (aliaspath): Remove path to X11 locale dir.
+
+ * Makefile.in: Make install-src depend on install. This helps
+ gettext to install the sources and other packages can use the
+ install goal.
+
+Sat Aug 19 15:19:33 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (uninstall): Remove stuff installed by install-src.
+
+Tue Aug 15 13:13:53 1995 Ulrich Drepper <drepper@myware>
+
+ * VERSION.in: Initial revision.
+
+ * Makefile.in (DISTFILES):
+ Add VERSION file. This is not necessary for gettext, but
+ for other packages using this library.
+
+Tue Aug 15 06:16:44 1995 Ulrich Drepper <drepper@myware>
+
+ * gettextP.h (_nl_find_domain):
+ New prototype after changing search strategy.
+
+ * finddomain.c (_nl_find_domain):
+ We now try only to find a specified catalog. Fall back to other
+ catalogs listed in the locale list is now done in __dcgettext.
+
+ * dcgettext.c (__dcgettext):
+ Now we provide message fall back even to different languages.
+ I.e. if a message is not available in one language all the other
+ in the locale list a tried. Formerly fall back was only possible
+ within one language. Implemented by moving one loop from
+ _nl_find_domain to here.
+
+Mon Aug 14 23:45:50 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (gettextsrcdir):
+ Directory where source of GNU gettext library are made
+ available.
+ (INSTALL, INSTALL_DATA): Programs used for installing sources.
+ (gettext-src): New. Rule to install GNU gettext sources for use in
+ gettextize shell script.
+
+Sun Aug 13 14:40:48 1995 Ulrich Drepper <drepper@myware>
+
+ * loadmsgcat.c (_nl_load_domain):
+ Use mmap for loading only when munmap function is
+ also available.
+
+ * Makefile.in (install): Depend on `all' goal.
+
+Wed Aug 9 11:04:33 1995 Ulrich Drepper <drepper@myware>
+
+ * localealias.c (read_alias_file):
+ Do not overwrite '\n' when terminating alias value string.
+
+ * localealias.c (read_alias_file):
+ Handle long lines. Ignore the rest not fitting in
+ the buffer after the initial `fgets' call.
+
+Wed Aug 9 00:54:29 1995 Ulrich Drepper <drepper@myware>
+
+ * gettextP.h (_nl_load_domain):
+ Add prototype, replacing prototype for _nl_load_msg_cat.
+
+ * finddomain.c (_nl_find_domain):
+ Remove unneeded variable filename and filename_len.
+ (expand_alias): Remove prototype because functions does not
+ exist anymore.
+
+ * localealias.c (read_alias_file):
+ Change type of fname_len parameter to int.
+ (xmalloc): Add prototype.
+
+ * loadmsgcat.c: Better prototypes for xmalloc.
+
+Tue Aug 8 22:30:39 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (_nl_find_domain):
+ Allow alias name to be constructed from the four components.
+
+ * Makefile.in (aliaspath): New variable. Set to preliminary value.
+ (SOURCES): Add localealias.c.
+ (OBJECTS): Add localealias.o.
+
+ * gettextP.h: Add prototype for _nl_expand_alias.
+
+ * finddomain.c: Aliasing handled in intl/localealias.c.
+
+ * localealias.c: Aliasing for locale names.
+
+ * bindtextdom.c: Better prototypes for xmalloc and xstrdup.
+
+Mon Aug 7 23:47:42 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (DISTFILES): gettext.perl is now found in misc/.
+
+ * cat-compat.c (bindtextdomain):
+ Correct implementation. dirname parameter was not used.
+ Reported by Marcus Daniels.
+
+ * gettextP.h (loaded_domain):
+ New fields `successor' and `decided' for oo, lazy
+ message handling implementation.
+
+ * dcgettext.c:
+ Adopt for oo, lazy message handliing.
+ Now we can inherit translations from less specific locales.
+ (find_msg): New function.
+
+ * loadmsgcat.c, finddomain.c:
+ Complete rewrite. Implement oo, lazy message handling :-).
+ We now have an additional environment variable `LANGUAGE' with
+ a higher priority than LC_ALL for the LC_MESSAGE locale.
+ Here we can set a colon separated list of specifications each
+ of the form `language[_territory[.codeset]][@modifier]'.
+
+Sat Aug 5 09:55:42 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (unistd.h):
+ Include to get _PC_PATH_MAX defined on system having it.
+
+Fri Aug 4 22:42:00 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (stpcpy): Include prototype.
+
+ * Makefile.in (dist): Remove `copying instead' message.
+
+Wed Aug 2 18:52:03 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (ID, TAGS): Do not use $^.
+
+Tue Aug 1 20:07:11 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (TAGS, ID): Use $^ as command argument.
+ (TAGS): Give etags -o option t write to current directory,
+ not $(srcdir).
+ (ID): Use $(srcdir) instead os $(top_srcdir)/src.
+ (distclean): Remove ID.
+
+Sun Jul 30 11:51:46 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (gnulocaledir):
+ New variable, always using share/ for data directory.
+ (DEFS): Add GNULOCALEDIR, used in finddomain.c.
+
+ * finddomain.c (_nl_default_dirname):
+ Set to GNULOCALEDIR, because it always has to point
+ to the directory where GNU gettext Library writes it to.
+
+ * intl-compat.c (textdomain, bindtextdomain):
+ Undefine macros before function definition.
+
+Sat Jul 22 01:10:02 1995 Ulrich Drepper <drepper@myware>
+
+ * libgettext.h (_LIBINTL_H):
+ Protect definition in case where this file is included as
+ libgettext.h on Solaris machines. Add comment about this.
+
+Wed Jul 19 02:36:42 1995 Ulrich Drepper <drepper@myware>
+
+ * intl-compat.c (textdomain): Correct typo.
+
+Wed Jul 19 01:51:35 1995 Ulrich Drepper <drepper@myware>
+
+ * dcgettext.c (dcgettext): Function now called __dcgettext.
+
+ * dgettext.c (dgettext): Now called __dgettext and calls
+ __dcgettext.
+
+ * gettext.c (gettext):
+ Function now called __gettext and calls __dgettext.
+
+ * textdomain.c (textdomain): Function now called __textdomain.
+
+ * bindtextdom.c (bindtextdomain): Function now called
+ __bindtextdomain.
+
+ * intl-compat.c: Initial revision.
+
+ * Makefile.in (SOURCES): Add intl-compat.c.
+ (OBJECTS): We always compile the GNU gettext library functions.
+ OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o,
+ and intl-compat.o.
+ (GETTOBJS): Contains now only intl-compat.o.
+
+ * libgettext.h:
+ Re-include protection matches dualistic character of libgettext.h.
+ For all functions in GNU gettext library define __ counter part.
+
+ * finddomain.c (strchr): Define as index if not found in C library.
+ (_nl_find_domain): For relative paths paste / in between.
+
+Tue Jul 18 16:37:45 1995 Ulrich Drepper <drepper@myware>
+
+ * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h.
+
+ * xopen-msg.sed: Fix bug with `msgstr ""' lines.
+ A little bit better comments.
+
+Tue Jul 18 01:18:27 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in:
+ po-mode.el, makelinks, combine-sh are now found in ../misc.
+
+ * po-mode.el, makelinks, combine-sh, elisp-comp:
+ Moved to ../misc/.
+
+ * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__.
+
+Sun Jul 16 22:33:02 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (INSTALL, INSTALL_DATA): New variables.
+ (install-data, uninstall): Install/uninstall .elc file.
+
+ * po-mode.el (Installation comment):
+ Add .pox as possible extension of .po files.
+
+Sun Jul 16 13:23:27 1995 Ulrich Drepper <drepper@myware>
+
+ * elisp-comp: Complete new version by Franc,ois: This does not
+ fail when not compiling in the source directory.
+
+Sun Jul 16 00:12:17 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (../po/cat-id-tbl.o):
+ Use $(MAKE) instead of make for recursive make.
+
+ * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh.
+ (install-exec): Add missing dummy goal.
+ (install-data, uninstall): @ in multi-line shell command at
+ beginning, not in front of echo. Reported by Eric Backus.
+
+Sat Jul 15 00:21:28 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (DISTFILES):
+ Rename libgettext.perl to gettext.perl to fit in 14 chars
+ file systems.
+
+ * gettext.perl:
+ Rename to gettext.perl to fit in 14 chars file systems.
+
+Thu Jul 13 23:17:20 1995 Ulrich Drepper <drepper@myware>
+
+ * cat-compat.c: If !STDC_HEADERS try to include malloc.h.
+
+Thu Jul 13 20:55:02 1995 Ulrich Drepper <drepper@myware>
+
+ * po2tbl.sed.in: Pretty printing.
+
+ * linux-msg.sed, xopen-msg.sed:
+ Correct bugs with handling substitute flags in branches.
+
+ * hash-string.h (hash_string):
+ Old K&R compilers don't under stand `unsigned char'.
+
+ * gettext.h (nls_uint32):
+ Some old K&R compilers (eg HP) don't understand `unsigned int'.
+
+ * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes.
+
+Thu Jul 13 01:34:33 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (ELCFILES): New variable.
+ (DISTFILES): Add elisp-comp.
+ Add implicit rule for .el -> .elc compilation.
+ (install-data): install $ELCFILES
+ (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp.
+
+ * elisp-comp: Initial revision
+
+Wed Jul 12 16:14:52 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in:
+ cat-id-tbl.c is now found in po/. This enables us to use an identical
+ intl/ directory in all packages.
+
+ * dcgettext.c (dcgettext): hashing does not work for table size <= 2.
+
+ * textdomain.c: fix typo (#if def -> #if defined)
+
+Tue Jul 11 18:44:43 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (stamp-cat-id): use top_srcdir to address source files
+ (DISTFILES,distclean): move tupdate.perl to src/
+
+ * po-to-tbl.sed.in:
+ add additional jump to clear change flag to recognize multiline strings
+
+Tue Jul 11 01:32:50 1995 Ulrich Drepper <drepper@myware>
+
+ * textdomain.c: Protect inclusion of stdlib.h and string.h.
+
+ * loadmsgcat.c: Protect inclusion of stdlib.h.
+
+ * libgettext.h: Protect inclusion of locale.h.
+ Allow use in C++ programs.
+ Define NULL is not happened already.
+
+ * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of
+ po-to-tbl.sed.
+ (distclean): remove po-to-tbl.sed and tupdate.perl.
+
+ * tupdate.perl.in: Substitute Perl path even in exec line.
+ Don't include entries without translation from old .po file.
+
+Tue Jul 4 00:41:51 1995 Ulrich Drepper <drepper@myware>
+
+ * tupdate.perl.in: use "Updated: " in msgid "".
+
+ * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR).
+ Define getenv if !__STDC__.
+
+ * bindtextdom.c: Protect stdlib.h and string.h inclusion.
+ Define free if !__STDC__.
+
+ * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
+ Define free if !__STDC__.
+
+ * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
+
+Mon Jul 3 23:56:30 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR.
+ Remove unneeded $(srcdir) from Makefile.in dependency.
+
+ * makelinks: Add copyright and short description.
+
+ * po-mode.el: Last version for 0.7.
+
+ * tupdate.perl.in: Fix die message.
+
+ * dcgettext.c: Protect include of string.h.
+
+ * gettext.c: Protect include of stdlib.h and further tries to get NULL.
+
+ * finddomain.c: Some corrections in includes.
+
+ * Makefile.in (INCLUDES): Prune list correct path to Makefile.in.
+
+ * po-to-tbl.sed: Adopt for new .po file format.
+
+ * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format.
+
+Sun Jul 2 23:55:03 1995 Ulrich Drepper <drepper@myware>
+
+ * tupdate.perl.in: Complete rewrite for new .po file format.
+
+Sun Jul 2 02:06:50 1995 Ulrich Drepper <drepper@myware>
+
+ * First official release. This directory contains all the code
+ needed to internationalize own packages. It provides functions
+ which allow to use the X/Open catgets function with an interface
+ like the Uniforum gettext function. For system which does not
+ have neither of those a complete implementation is provided.
+
+
diff --git a/intl/Makefile b/intl/Makefile
new file mode 100644
index 0000000000..7679393f40
--- /dev/null
+++ b/intl/Makefile
@@ -0,0 +1,48 @@
+# intl/Makefile
+
+depth = ..
+
+NAME = intl
+
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C.make
+
+
+# MODULE_CXXFLAGS += -D_REENTRANT
+MAINTARGET = $(LIBRARY)# huh?
+
+SED_FILES = $(wildcard *.sed)
+
+# should be set by configure...
+URG_DEFINES = -DGNULOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(localedir):\"
+EXTRA_CFLAGS = -I. $(URG_DEFINES)
+
+EXTRA_DIST_FILES = Makefile.in.dist cat-compat.c.dist ChangeLog libintl.inst $(SED_FILES)
+
+default:
+ @echo "to install libintl type 'make lib; make install-lib'"
+
+lib: $(LIBRARY)
+LIBINTL = $(LIBRARY)
+
+install-lib: $(LIBINTL)
+# localinstall: $(LIBINTL)
+ $(INSTALL) -d $(includedir)
+# $(INSTALL) libintl.h $(includedir)
+ $(INSTALL) libintl.inst $(includedir)/libintl.h
+ifeq ($(LIB_SUFFIX),.so)
+ $(INSTALL) -d $(libdir)
+ $(INSTALL) $(LIBINTL).$(VERSION) $(libdir)
+ ln -s $(LIB_PREFIX)intl$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)intl$(LIB_SUFFIX).$(MAJOR_VERSION)
+ ln -s $(LIB_PREFIX)intl$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)intl$(LIB_SUFFIX)
+else
+ $(INSTALL) -d $(libdir)
+ echo libintl: $(LIBINTL)
+ echo libdir: $(libdir)
+ $(INSTALL) $(LIBINTL) $(libdir)
+endif
+
+localuninstall:
+ rm -f $(inludedir)/libintl.h
+ rm -f $(libdir)/libintl.{so*,a}
+
diff --git a/intl/Makefile.in.dist b/intl/Makefile.in.dist
new file mode 100644
index 0000000000..2a05735516
--- /dev/null
+++ b/intl/Makefile.in.dist
@@ -0,0 +1,166 @@
+# Makefile for directory with message catalog handling in GNU NLS Utilities.
+# Copyright (C) 1995 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = /bin/sh
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+transform = @program_transform_name@
+libdir = $(prefix)/lib
+includedir = $(prefix)/include
+datadir = $(prefix)/@DATADIRNAME@
+localedir = $(datadir)/locale
+gnulocaledir = $(prefix)/share/locale
+gettextsrcdir = $(prefix)/share/gettext
+aliaspath = $(localedir):.
+subdir = intl
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+AR = ar
+CC = @CC@
+RANLIB = @RANLIB@
+
+DEFS = -DLOCALEDIR=\"$(localedir)\" -DGNULOCALEDIR=\"$(gnulocaledir)\" \
+-DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@
+CFLAGS = @CFLAGS@
+
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+HEADERS = $(COMHDRS) libgettext.h
+COMHDRS = gettext.h gettextP.h hash-string.h
+SOURCES = $(COMSRCS) intl-compat.c cat-compat.c
+COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \
+finddomain.c loadmsgcat.c localealias.c textdomain.c
+OBJECTS = @INTLOBJS@ bindtextdom.o dcgettext.o dgettext.o gettext.o \
+finddomain.o loadmsgcat.o localealias.o textdomain.o
+CATOBJS = cat-compat.o ../po/cat-id-tbl.o
+GETTOBJS = intl-compat.o
+DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \
+xopen-msg.sed $(HEADERS) $(SOURCES)
+DISTFILES = $(DISTFILES.common) VERSION
+DISTFILES.gettext = $(DISTFILES.common) libintl.glibc libintl.inst
+
+.SUFFIXES:
+.SUFFIXES: .c .o
+.c.o:
+ $(COMPILE) $<
+
+INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib
+
+all: libintl.a
+
+
+libintl.a: $(OBJECTS)
+ rm -f $@
+ $(AR) cru $@ $(OBJECTS)
+ $(RANLIB) $@
+
+../po/cat-id-tbl.o: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot
+ cd ../po && $(MAKE) cat-id-tbl.o
+
+check install: all
+
+# This installation goal is only used in GNU gettext. Packages which
+# only use the library should use install instead.
+#
+# We must not install the libintl.h/libintl.a files if we are on a system
+# which has the gettext() function in its C library or in a separate
+# library. A special case is where configure found a previously installed
+# GNU gettext library. If you want to use the one which comes with this
+# version of the package, you have to use `configure --with-gnu-gettext'.
+install-src: install
+ $(top_srcdir)/mkinstalldirs $(libdir) $(includedir) $(gettextsrcdir)
+ if test -f libintl.h; then \
+ $(INSTALL_DATA) $(srcdir)/libintl.inst \
+ $(includedir)/libintl.h; \
+ $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \
+ fi
+ cd $(srcdir) && \
+ for file in $(DISTFILES.common); do \
+ $(INSTALL_DATA) $$file $(gettextsrcdir)/intl-$$file; \
+ done
+ $(INSTALL_DATA) VERSION $(gettextsrcdir)/intl-VERSION
+
+uninstall:
+ for file in $(DISTFILES); do \
+ rm -f $(gettextsrcdir)/intl-$$file; \
+ done
+
+info dvi:
+
+$(OBJECTS): ../config.h libgettext.h
+bindtextdom.o finddomain.o loadmsgcat.o: gettextP.h gettext.h
+dcgettext.o: gettextP.h gettext.h hash-string.h
+
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES)
+ here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
+
+id: ID
+
+ID: $(HEADERS) $(SOURCES)
+ here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
+
+
+mostlyclean:
+ rm -f *.a *.o core core.*
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile ID TAGS po2msg.sed po2tbl.sed libintl.h
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+
+
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+dist: Makefile $(DISTFILES)
+ for file in $(DISTFILES); do \
+ ln $(srcdir)/$$file $(distdir) 2> /dev/null \
+ || cp -p $(srcdir)/$$file $(distdir); \
+ done
+
+# This dist goal is only used in GNU gettext. GNU gettext needs not contain
+# the file `VERSION' but contains some other files which should not be
+# distributed in other packages.
+dist-gettext: Makefile $(DISTFILES.gettext)
+ for file in $(DISTFILES.gettext); do \
+ ln $(srcdir)/$$file $(distdir) 2> /dev/null \
+ || cp -p $(srcdir)/$$file $(distdir); \
+ done
+
+dist-libc:
+ tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc
+
+Makefile: Makefile.in ../config.status
+ cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c
new file mode 100644
index 0000000000..bd9f422654
--- /dev/null
+++ b/intl/bindtextdom.c
@@ -0,0 +1,172 @@
+/* bindtextdom.c -- implementation of the bindtextdomain(3) function
+ Copyright (C) 1995 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+# ifdef HAVE_MALLOC_H
+# include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+#include "gettext.h"
+#include "gettextP.h"
+
+/* @@ end of prolog @@ */
+
+/* Contains the default location of the message catalogs. */
+extern const char _nl_default_dirname[];
+
+/* List with bindings of specific domains. */
+extern struct binding *_nl_domain_bindings;
+
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define BINDTEXTDOMAIN __bindtextdomain
+#else
+# define BINDTEXTDOMAIN bindtextdomain__
+#endif
+
+/* Specify that the DOMAINNAME message catalog will be found
+ in DIRNAME rather than in the system locale data base. */
+char *
+BINDTEXTDOMAIN (domainname, dirname)
+ const char *domainname;
+ const char *dirname;
+{
+ struct binding *binding;
+
+ /* Some sanity checks. */
+ if (domainname == NULL || domainname[0] == '\0')
+ return NULL;
+
+ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+ {
+ int compare = strcmp (domainname, binding->domainname);
+ if (compare == 0)
+ /* We found it! */
+ break;
+ if (compare < 0)
+ {
+ /* It is not in the list. */
+ binding = NULL;
+ break;
+ }
+ }
+
+ if (dirname == NULL)
+ /* The current binding has be to returned. */
+ return binding == NULL ? (char *) _nl_default_dirname : binding->dirname;
+
+ if (binding != NULL)
+ {
+ /* The domain is already bound. Replace the old binding. */
+ char *new_dirname;
+
+ if (strcmp (dirname, _nl_default_dirname) == 0)
+ new_dirname = (char *) _nl_default_dirname;
+ else
+ {
+ size_t len = strlen (dirname) + 1;
+ new_dirname = (char *) malloc (len);
+ if (new_dirname == NULL)
+ return NULL;
+
+ memcpy (new_dirname, dirname, len);
+ }
+
+ if (strcmp (binding->dirname, _nl_default_dirname) != 0)
+ free (binding->dirname);
+
+ binding->dirname = new_dirname;
+ }
+ else
+ {
+ /* We have to create a new binding. */
+ size_t len;
+ struct binding *new_binding =
+ (struct binding *) malloc (sizeof (*new_binding));
+
+ if (new_binding == NULL)
+ return NULL;
+
+ len = strlen (domainname) + 1;
+ new_binding->domainname = (char *) malloc (len);
+ if (new_binding->domainname == NULL)
+ return NULL;
+ memcpy (new_binding->domainname, domainname, len);
+
+ if (strcmp (dirname, _nl_default_dirname) == 0)
+ new_binding->dirname = (char *) _nl_default_dirname;
+ else
+ {
+ len = strlen (dirname) + 1;
+ new_binding->dirname = (char *) malloc (len);
+ if (new_binding->dirname == NULL)
+ return NULL;
+ memcpy (new_binding->dirname, dirname, len);
+ }
+
+ /* Now enqueue it. */
+ if (_nl_domain_bindings == NULL
+ || strcmp (domainname, _nl_domain_bindings->domainname) < 0)
+ {
+ new_binding->next = _nl_domain_bindings;
+ _nl_domain_bindings = new_binding;
+ }
+ else
+ {
+ binding = _nl_domain_bindings;
+ while (binding->next != NULL
+ && strcmp (domainname, binding->next->domainname) > 0)
+ binding = binding->next;
+
+ new_binding->next = binding->next;
+ binding->next = new_binding;
+ }
+
+ binding = new_binding;
+ }
+
+ return binding->dirname;
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__bindtextdomain, bindtextdomain);
+#endif
diff --git a/intl/cat-compat.c.dist b/intl/cat-compat.c.dist
new file mode 100644
index 0000000000..39fcfb43a0
--- /dev/null
+++ b/intl/cat-compat.c.dist
@@ -0,0 +1,252 @@
+/* Compatibility code for gettext-using-catgets interface.
+ Copyright (C) 1995 Free Software Foundation, Inc.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <string.h>
+#else
+char *getenv ();
+# ifdef HAVE_MALLOC_H
+# include <malloc.h>
+# endif
+#endif
+
+#ifdef HAVE_NL_TYPES_H
+# include <nl_types.h>
+#endif
+
+#include "libgettext.h"
+
+/* @@ end of prolog @@ */
+
+/* The catalog descriptor. */
+static nl_catd catalog = (nl_catd) -1;
+
+/* Name of the default catalog. */
+static const char default_catalog_name[] = "messages";
+
+/* Name of currently used catalog. */
+static const char *catalog_name = default_catalog_name;
+
+/* Get ID for given string. If not found return -1. */
+static int msg_to_cat_id __P ((const char *msg));
+
+/* Substitution for systems lacking this function in their C library. */
+#if !_LIBC && !HAVE_STPCPY
+static char *stpcpy __P ((char *dest, const char *src));
+#endif
+
+
+/* Set currently used domain/catalog. */
+char *
+textdomain (domainname)
+ const char *domainname;
+{
+ nl_catd new_catalog;
+ char *new_name;
+ size_t new_name_len;
+ char *lang;
+
+#if HAVE_SETLOCALE && HAVE_LC_MESSAGES && HAVE_SETLOCALE_NULL
+ lang = setlocale (LC_MESSAGES, NULL);
+#else
+ lang = getenv ("LC_ALL");
+ if (lang == NULL || lang[0] == '\0')
+ {
+ lang = getenv ("LC_MESSAGES");
+ if (lang == NULL || lang[0] == '\0')
+ lang = getenv ("LANG");
+ }
+#endif
+ if (lang == NULL || lang[0] == '\0')
+ lang = "C";
+
+ /* See whether name of currently used domain is asked. */
+ if (domainname == NULL)
+ return (char *) catalog_name;
+
+ if (domainname[0] == '\0')
+ domainname = default_catalog_name;
+
+ /* Compute length of added path element. */
+ new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang)
+ + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1
+ + sizeof (".cat");
+
+ new_name = (char *) malloc (new_name_len);
+ if (new_name == NULL)
+ return NULL;
+
+ strcpy (new_name, PACKAGE);
+ new_catalog = catopen (new_name, 0);
+
+ if (new_catalog == (nl_catd) -1)
+ {
+ /* NLSPATH search didn't work, try absolute path */
+ sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang,
+ PACKAGE);
+ new_catalog = catopen (new_name, 0);
+
+ if (new_catalog == (nl_catd) -1)
+ {
+ free (new_name);
+ return (char *) catalog_name;
+ }
+ }
+
+ /* Close old catalog. */
+ if (catalog != (nl_catd) -1)
+ catclose (catalog);
+ if (catalog_name != default_catalog_name)
+ free ((char *) catalog_name);
+
+ catalog = new_catalog;
+ catalog_name = new_name;
+
+ return (char *) catalog_name;
+}
+
+char *
+bindtextdomain (domainname, dirname)
+ const char *domainname;
+ const char *dirname;
+{
+#if HAVE_SETENV || HAVE_PUTENV
+ char *old_val, *new_val, *cp;
+ size_t new_val_len;
+
+ /* This does not make much sense here but to be compatible do it. */
+ if (domainname == NULL)
+ return NULL;
+
+ /* Compute length of added path element. If we use setenv we don't need
+ the first byts for NLSPATH=, but why complicate the code for this
+ peanuts. */
+ new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname)
+ + sizeof ("/%L/LC_MESSAGES/%N.cat");
+
+ old_val = getenv ("NLSPATH");
+ if (old_val == NULL || old_val[0] == '\0')
+ {
+ old_val = NULL;
+ new_val_len += 1 + sizeof (LOCALEDIR) - 1
+ + sizeof ("/%L/LC_MESSAGES/%N.cat");
+ }
+ else
+ new_val_len += strlen (old_val);
+
+ new_val = (char *) malloc (new_val_len);
+ if (new_val == NULL)
+ return NULL;
+
+# if HAVE_SETENV
+ cp = new_val;
+# else
+ cp = stpcpy (new_val, "NLSPATH=");
+# endif
+
+ cp = stpcpy (cp, dirname);
+ cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:");
+
+ if (old_val == NULL)
+ {
+# if __STDC__
+ stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat");
+# else
+
+ cp = stpcpy (cp, LOCALEDIR);
+ stpcpy (cp, "/%L/LC_MESSAGES/%N.cat");
+# endif
+ }
+ else
+ stpcpy (cp, old_val);
+
+# if HAVE_SETENV
+ setenv ("NLSPATH", new_val, 1);
+ free (new_val);
+# else
+ putenv (new_val);
+ /* Do *not* free the environment entry we just entered. It is used
+ from now on. */
+# endif
+
+#endif
+
+ return (char *) domainname;
+}
+
+#undef gettext
+char *
+gettext (msg)
+ const char *msg;
+{
+ int msgid;
+
+ if (msg == NULL || catalog == (nl_catd) -1)
+ return (char *) msg;
+
+ /* Get the message from the catalog. We always use set number 1.
+ The message ID is computed by the function `msg_to_cat_id'
+ which works on the table generated by `po-to-tbl'. */
+ msgid = msg_to_cat_id (msg);
+ if (msgid == -1)
+ return (char *) msg;
+
+ return catgets (catalog, 1, msgid, (char *) msg);
+}
+
+/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries
+ for the one equal to msg. If it is found return the ID. In case when
+ the string is not found return -1. */
+static int
+msg_to_cat_id (msg)
+ const char *msg;
+{
+ int cnt;
+
+ for (cnt = 0; cnt < _msg_tbl_length; ++cnt)
+ if (strcmp (msg, _msg_tbl[cnt]._msg) == 0)
+ return _msg_tbl[cnt]._msg_number;
+
+ return -1;
+}
+
+
+/* @@ begin of epilog @@ */
+
+/* We don't want libintl.a to depend on any other library. So we
+ avoid the non-standard function stpcpy. In GNU C Library this
+ function is available, though. Also allow the symbol HAVE_STPCPY
+ to be defined. */
+#if !_LIBC && !HAVE_STPCPY
+static char *
+stpcpy (dest, src)
+ char *dest;
+ const char *src;
+{
+ while ((*dest++ = *src++) != '\0')
+ /* Do nothing. */ ;
+ return dest - 1;
+}
+#endif
diff --git a/intl/config.h b/intl/config.h
new file mode 100644
index 0000000000..8f99f31f53
--- /dev/null
+++ b/intl/config.h
@@ -0,0 +1,18 @@
+/* urg */
+
+#include "config.hh"
+
+/* urg */
+#ifdef PACKAGE
+#undef PACKAGE
+#endif
+/* Define to the name of the distribution. */
+#define PACKAGE "gettext"
+
+/* urg */
+#ifdef VERSION
+#undef VERSION
+#endif
+/* Define to the version of the distribution. */
+#define VERSION "0.10"
+
diff --git a/intl/dcgettext.c b/intl/dcgettext.c
new file mode 100644
index 0000000000..911bc5c788
--- /dev/null
+++ b/intl/dcgettext.c
@@ -0,0 +1,522 @@
+/* dcgettext.c -- implemenatation of the dcgettext(3) function
+ Copyright (C) 1995 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <sys/types.h>
+
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# if defined HAVE_ALLOCA_H || defined _LIBC
+# include <alloca.h>
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca
+char *alloca ();
+# endif
+# endif
+# endif
+#endif
+
+#include <errno.h>
+#ifndef errno
+extern int errno;
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+char *getenv ();
+# ifdef HAVE_MALLOC_H
+# include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+# define strchr index
+# endif
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
+#endif
+
+#include "gettext.h"
+#include "gettextP.h"
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+#include "hash-string.h"
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions. This is required by the standard
+ because some ANSI C functions will require linking with this object
+ file and the name space must not be polluted. */
+# define getcwd __getcwd
+# define stpcpy __stpcpy
+#endif
+
+#if !defined HAVE_GETCWD && !defined _LIBC
+char *getwd ();
+# define getcwd(buf, max) getwd (buf)
+#else
+char *getcwd ();
+#endif
+
+/* Amount to increase buffer size by in each try. */
+#define PATH_INCR 32
+
+/* The following is from pathmax.h. */
+/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
+ PATH_MAX but might cause redefinition warnings when sys/param.h is
+ later included (as on MORE/BSD 4.3). */
+#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__))
+# include <limits.h>
+#endif
+
+#ifndef _POSIX_PATH_MAX
+# define _POSIX_PATH_MAX 255
+#endif
+
+#if !defined(PATH_MAX) && defined(_PC_PATH_MAX)
+# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
+#endif
+
+/* Don't include sys/param.h if it already has been. */
+#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN)
+# include <sys/param.h>
+#endif
+
+#if !defined(PATH_MAX) && defined(MAXPATHLEN)
+# define PATH_MAX MAXPATHLEN
+#endif
+
+#ifndef PATH_MAX
+# define PATH_MAX _POSIX_PATH_MAX
+#endif
+
+/* XPG3 defines the result of `setlocale (category, NULL)' as:
+ ``Directs `setlocale()' to query `category' and return the current
+ setting of `local'.''
+ However it does not specify the exact format. And even worse: POSIX
+ defines this not at all. So we can use this feature only on selected
+ system (e.g. those using GNU C Library). */
+#ifdef _LIBC
+# define HAVE_LOCALE_NULL
+#endif
+
+/* Name of the default domain used for gettext(3) prior any call to
+ textdomain(3). The default value for this is "messages". */
+const char _nl_default_default_domain[] = "messages";
+
+/* Value used as the default domain for gettext(3). */
+const char *_nl_current_default_domain = _nl_default_default_domain;
+
+/* Contains the default location of the message catalogs. */
+const char _nl_default_dirname[] = GNULOCALEDIR;
+
+/* List with bindings of specific domains created by bindtextdomain()
+ calls. */
+struct binding *_nl_domain_bindings;
+
+/* Prototypes for local functions. */
+static char *find_msg __P ((struct loaded_domain *domain, const char *msgid));
+static const char *category_to_name __P((int category));
+static const char *guess_category_value __P((int category,
+ const char *categoryname));
+
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define DCGETTEXT __dcgettext
+#else
+# define DCGETTEXT dcgettext__
+#endif
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+ locale. */
+char *
+DCGETTEXT (domainname, msgid, category)
+ const char *domainname;
+ const char *msgid;
+ int category;
+{
+ struct loaded_domain *domain;
+ struct binding *binding;
+ const char *categoryname;
+ const char *categoryvalue;
+ char *dirname, *xdomainname;
+ char *single_locale;
+ char *retval;
+
+ /* If no real MSGID is given return NULL. */
+ if (msgid == NULL)
+ return NULL;
+
+ /* If DOMAINNAME is NULL, we are interested in the default domain. If
+ CATEGORY is not LC_MESSAGES this might not make much sense but the
+ defintion left this undefined. */
+ if (domainname == NULL)
+ domainname = _nl_current_default_domain;
+
+ /* First find matching binding. */
+ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+ {
+ int compare = strcmp (domainname, binding->domainname);
+ if (compare == 0)
+ /* We found it! */
+ break;
+ if (compare < 0)
+ {
+ /* It is not in the list. */
+ binding = NULL;
+ break;
+ }
+ }
+
+ if (binding == NULL)
+ dirname = (char *) _nl_default_dirname;
+ else if (binding->dirname[0] == '/')
+ dirname = binding->dirname;
+ else
+ {
+ /* We have a relative path. Make it absolute now. */
+ size_t dirname_len = strlen (binding->dirname) + 1;
+ size_t path_max;
+ char *ret;
+
+ path_max = (unsigned) PATH_MAX;
+ path_max += 2; /* The getcwd docs say to do this. */
+
+ dirname = (char *) alloca (path_max + dirname_len);
+
+ errno = 0;
+ while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE)
+ {
+ path_max += PATH_INCR;
+ dirname = (char *) alloca (path_max + dirname_len);
+ errno = 0;
+ }
+
+ if (ret == NULL)
+ /* We cannot get the current working directory. Don't signal an
+ error but simply return the default string. */
+ return (char *) msgid;
+
+ /* We don't want libintl.a to depend on any other library. So
+ we avoid the non-standard function stpcpy. In GNU C Library
+ this function is available, though. Also allow the symbol
+ HAVE_STPCPY to be defined. */
+#if defined _LIBC || defined HAVE_STPCPY
+ stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
+#else
+ strcat (dirname, "/");
+ strcat (dirname, binding->dirname);
+#endif
+ }
+
+ /* Now determine the symbolic name of CATEGORY and its value. */
+ categoryname = category_to_name (category);
+ categoryvalue = guess_category_value (category, categoryname);
+
+ xdomainname = (char *) alloca (strlen (categoryname)
+ + strlen (domainname) + 5);
+ /* We don't want libintl.a to depend on any other library. So we
+ avoid the non-standard function stpcpy. In GNU C Library this
+ function is available, though. Also allow the symbol HAVE_STPCPY
+ to be defined. */
+#if defined _LIBC || defined HAVE_STPCPY
+ stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
+ domainname),
+ ".mo");
+#else
+ strcpy (xdomainname, categoryname);
+ strcat (xdomainname, "/");
+ strcat (xdomainname, domainname);
+ strcat (xdomainname, ".mo");
+#endif
+
+ /* Creating working area. */
+ single_locale = (char *) alloca (strlen (categoryvalue) + 1);
+
+
+ /* Search for the given string. This is a loop because we perhaps
+ got an ordered list of languages to consider for th translation. */
+ while (1)
+ {
+ /* Make CATEGORYVALUE point to the next element of the list. */
+ while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
+ ++categoryvalue;
+ if (categoryvalue[0] == '\0')
+ {
+ /* The whole contents of CATEGORYVALUE has been searched but
+ no valid entry has been found. We solve this situation
+ by implicitely appending a "C" entry, i.e. no translation
+ will take place. */
+ single_locale[0] = 'C';
+ single_locale[1] = '\0';
+ }
+ else
+ {
+ char *cp = single_locale;
+ while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
+ *cp++ = *categoryvalue++;
+ *cp = '\0';
+ }
+
+ /* If the current locale value is C (or POSIX) we don't load a
+ domain. Return the MSGID. */
+ if (strcmp (single_locale, "C") == 0
+ || strcmp (single_locale, "POSIX") == 0)
+ return (char *) msgid;
+
+
+ /* Find structure describing the message catalog matching the
+ DOMAINNAME and CATEGORY. */
+ domain = _nl_find_domain (dirname, single_locale, xdomainname);
+
+ if (domain != NULL)
+ {
+ retval = find_msg (domain, msgid);
+
+ if (retval == NULL)
+ {
+ int cnt;
+
+ for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
+ {
+ retval = find_msg (domain->successor[cnt], msgid);
+
+ if (retval != NULL)
+ break;
+ }
+ }
+
+ if (retval != NULL)
+ return retval;
+ }
+ }
+ /* NOTREACHED */
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__dcgettext, dcgettext);
+#endif
+
+
+static char *
+find_msg (domain, msgid)
+ struct loaded_domain *domain;
+ const char *msgid;
+{
+ size_t top, act, bottom;
+
+ if (domain->decided == 0)
+ _nl_load_domain (domain);
+
+ if (domain->data == NULL)
+ return NULL;
+
+ /* Locate the MSGID and its translation. */
+ if (domain->hash_size > 2 && domain->hash_tab != NULL)
+ {
+ /* Use the hashing table. */
+ nls_uint32 len = strlen (msgid);
+ nls_uint32 hash_val = hash_string (msgid);
+ nls_uint32 idx = hash_val % domain->hash_size;
+ nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
+ nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]);
+
+ if (nstr == 0)
+ /* Hash table entry is empty. */
+ return NULL;
+
+ if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
+ && strcmp (msgid,
+ domain->data + W (domain->must_swap,
+ domain->orig_tab[nstr - 1].offset)) == 0)
+ return (char *) domain->data + W (domain->must_swap,
+ domain->trans_tab[nstr - 1].offset);
+
+ while (1)
+ {
+ if (idx >= W (domain->must_swap, domain->hash_size) - incr)
+ idx -= W (domain->must_swap, domain->hash_size) - incr;
+ else
+ idx += incr;
+
+ nstr = W (domain->must_swap, domain->hash_tab[idx]);
+ if (nstr == 0)
+ /* Hash table entry is empty. */
+ return NULL;
+
+ if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
+ && strcmp (msgid,
+ domain->data + W (domain->must_swap,
+ domain->orig_tab[nstr - 1].offset))
+ == 0)
+ return (char *) domain->data
+ + W (domain->must_swap, domain->trans_tab[nstr - 1].offset);
+ }
+ /* NOTREACHED */
+ }
+
+ /* Now we try the default method: binary search in the sorted
+ array of messages. */
+ bottom = 0;
+ top = domain->nstrings;
+ while (bottom < top)
+ {
+ int cmp_val;
+
+ act = (bottom + top) / 2;
+ cmp_val = strcmp (msgid, domain->data
+ + W (domain->must_swap,
+ domain->orig_tab[act].offset));
+ if (cmp_val < 0)
+ top = act;
+ else if (cmp_val > 0)
+ bottom = act + 1;
+ else
+ break;
+ }
+
+ /* If an translation is found return this. */
+ return bottom >= top ? NULL : (char *) domain->data
+ + W (domain->must_swap,
+ domain->trans_tab[act].offset);
+}
+
+
+/* Return string representation of locale CATEGORY. */
+static const char *category_to_name (category)
+ int category;
+{
+ const char *retval;
+
+ switch (category)
+ {
+#ifdef LC_COLLATE
+ case LC_COLLATE:
+ retval = "LC_COLLATE";
+ break;
+#endif
+#ifdef LC_CTYPE
+ case LC_CTYPE:
+ retval = "LC_CTYPE";
+ break;
+#endif
+#ifdef LC_MONETARY
+ case LC_MONETARY:
+ retval = "LC_MONETARY";
+ break;
+#endif
+#ifdef LC_NUMERIC
+ case LC_NUMERIC:
+ retval = "LC_NUMERIC";
+ break;
+#endif
+#ifdef LC_TIME
+ case LC_TIME:
+ retval = "LC_TIME";
+ break;
+#endif
+#ifdef LC_MESSAGES
+ case LC_MESSAGES:
+ retval = "LC_MESSAGES";
+ break;
+#endif
+#ifdef LC_RESPONSE
+ case LC_RESPONSE:
+ retval = "LC_RESPONSE";
+ break;
+#endif
+#ifdef LC_ALL
+ case LC_ALL:
+ /* This might not make sense but is perhaps better than any other
+ value. */
+ retval = "LC_ALL";
+ break;
+#endif
+ default:
+ /* If you have a better idea for a default value let me know. */
+ retval = "LC_XXX";
+ }
+
+ return retval;
+}
+
+/* Guess value of current locale from value of the environment variables. */
+static const char *guess_category_value (category, categoryname)
+ int category;
+ const char *categoryname;
+{
+ const char *retval;
+
+ /* The highest priority value is the `LANGUAGE' environment
+ variable. This is a GNU extension. */
+ retval = getenv ("LANGUAGE");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+
+ /* `LANGUAGE' is not set. So we have to proceed with the POSIX
+ methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some
+ systems this can be done by the `setlocale' function itself. */
+#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
+ return setlocale (category, NULL);
+#else
+ /* Setting of LC_ALL overwrites all other. */
+ retval = getenv ("LC_ALL");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+
+ /* Next comes the name of the desired category. */
+ retval = getenv (categoryname);
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+
+ /* Last possibility is the LANG environment variable. */
+ retval = getenv ("LANG");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+
+ /* We use C as the default domain. POSIX says this is implementation
+ defined. */
+ return "C";
+#endif
+}
diff --git a/intl/dgettext.c b/intl/dgettext.c
new file mode 100644
index 0000000000..2fde6770f7
--- /dev/null
+++ b/intl/dgettext.c
@@ -0,0 +1,59 @@
+/* dgettext.c -- implementation of the dgettext(3) function
+ Copyright (C) 1995 Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if defined HAVE_LOCALE_H || defined _LIBC
+# include <locale.h>
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define DGETTEXT __dgettext
+# define DCGETTEXT __dcgettext
+#else
+# define DGETTEXT dgettext__
+# define DCGETTEXT dcgettext__
+#endif
+
+/* Look up MSGID in the DOMAINNAME message catalog of the current
+ LC_MESSAGES locale. */
+char *
+DGETTEXT (domainname, msgid)
+ const char *domainname;
+ const char *msgid;
+{
+ return DCGETTEXT (domainname, msgid, LC_MESSAGES);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__dgettext, dgettext);
+#endif
diff --git a/intl/finddomain.c b/intl/finddomain.c
new file mode 100644
index 0000000000..007a87e075
--- /dev/null
+++ b/intl/finddomain.c
@@ -0,0 +1,503 @@
+/* finddomain.c -- handle list of needed message catalogs
+ Copyright (C) 1995 Software Foundation, Inc.
+ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+# ifdef HAVE_MALLOC_H
+# include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+# define strchr index
+# endif
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
+#endif
+
+#include "gettext.h"
+#include "gettextP.h"
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions. This is required by the standard
+ because some ANSI C functions will require linking with this object
+ file and the name space must not be polluted. */
+# define stpcpy __stpcpy
+#endif
+
+/* Encoding of locale name parts. */
+#define CEN_REVISION 1
+#define CEN_SPONSOR 2
+#define CEN_SPECIAL 4
+#define XPG_CODESET 8
+#define TERRITORY 16
+#define CEN_AUDIENCE 32
+#define XPG_MODIFIER 64
+
+#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
+#define XPG_SPECIFIC (XPG_CODESET|XPG_MODIFIER)
+
+
+/* List of already loaded domains. */
+static struct loaded_domain *_nl_loaded_domains;
+
+/* Prototypes for local functions. */
+static struct loaded_domain *make_entry_rec __P ((const char *dirname,
+ int mask,
+ const char *language,
+ const char *territory,
+ const char *codeset,
+ const char *modifier,
+ const char *special,
+ const char *sponsor,
+ const char *revision,
+ const char *domainname,
+ int do_allocate));
+
+/* Substitution for systems lacking this function in their C library. */
+#if !_LIBC && !HAVE_STPCPY
+static char *stpcpy __P ((char *dest, const char *src));
+#endif
+
+
+/* Return a data structure describing the message catalog described by
+ the DOMAINNAME and CATEGORY parameters with respect to the currently
+ established bindings. */
+struct loaded_domain *
+_nl_find_domain (dirname, locale, domainname)
+ const char *dirname;
+ char *locale;
+ const char *domainname;
+{
+ enum { undecided, xpg, cen } syntax;
+ struct loaded_domain *retval;
+ const char *language;
+ const char *modifier = NULL;
+ const char *territory = NULL;
+ const char *codeset = NULL;
+ const char *special = NULL;
+ const char *sponsor = NULL;
+ const char *revision = NULL;
+ const char *alias_value = NULL;
+ char *cp;
+ int mask;
+
+ /* CATEGORYVALUE now possibly contains a colon separated list of
+ locales. Each single locale can consist of up to four recognized
+ parts for the XPG syntax:
+
+ language[_territory[.codeset]][@modifier]
+
+ and six parts for the CEN syntax:
+
+ language[_territory][+audience][+special][,sponsor][_revision]
+
+ Beside the first all of them are allowed to be missing. If the
+ full specified locale is not found, the less specific one are
+ looked for. The various part will be stripped of according to
+ the following order:
+ (1) revision
+ (2) sponsor
+ (3) special
+ (4) codeset
+ (5) territory
+ (6) audience/modifier
+ */
+
+ /* If we have already tested for this locale entry there has to
+ be one data set in the list of loaded domains. */
+ retval = make_entry_rec (dirname, 0, locale, NULL, NULL, NULL,
+ NULL, NULL, NULL, domainname, 0);
+ if (retval != NULL)
+ {
+ /* We know something about this locale. */
+ int cnt;
+
+ if (retval->decided == 0)
+ _nl_load_domain (retval); /* @@@ */
+
+ if (retval->data != NULL)
+ return retval;
+
+ for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+ {
+ if (retval->successor[cnt]->decided == 0)
+ _nl_load_domain (retval->successor[cnt]);
+
+ if (retval->successor[cnt]->data != NULL)
+ break;
+ }
+
+ /* We really found some usable information. */
+ return cnt >= 0 ? retval : NULL;
+ /* NOTREACHED */
+ }
+
+ /* See whether the locale value is an alias. If yes its value
+ *overwrites* the alias name. No test for the original value is
+ done. */
+ alias_value = _nl_expand_alias (locale);
+ if (alias_value != NULL)
+ {
+ size_t len = strlen (alias_value) + 1;
+ locale = (char *) malloc (len);
+ if (locale == NULL)
+ return NULL;
+
+ memcpy (locale, alias_value, len);
+ }
+
+ /* Now we determine the single parts of the locale name. First
+ look for the language. Termination symbols are `_' and `@' if
+ we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
+ mask = 0;
+ syntax = undecided;
+ language = cp = locale;
+ while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@'
+ && cp[0] != '+' && cp[0] != ',')
+ ++cp;
+
+ if (language == cp)
+ /* This does not make sense: language has to be specified. Use
+ this entry as it is without exploding. Perhaps it is an alias. */
+ cp = strchr (language, '\0');
+ else if (cp[0] == '_')
+ {
+ /* Next is the territory. */
+ cp[0] = '\0';
+ territory = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@'
+ && cp[0] != '+' && cp[0] != ',' && cp[0] != '_')
+ ++cp;
+
+ mask |= TERRITORY;
+
+ if (cp[0] == '.')
+ {
+ /* Next is the codeset. */
+ syntax = xpg;
+ cp[0] = '\0';
+ codeset = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != '@')
+ ++cp;
+
+ mask |= XPG_CODESET;
+ }
+ }
+
+ if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))
+ {
+ /* Next is the modifier. */
+ syntax = cp[0] == '@' ? xpg : cen;
+ cp[0] = '\0';
+ modifier = ++cp;
+
+ while (syntax == cen && cp[0] != '\0' && cp[0] != '+'
+ && cp[0] != ',' && cp[0] != '_')
+ ++cp;
+
+ mask |= XPG_MODIFIER | CEN_AUDIENCE;
+ }
+
+ if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))
+ {
+ syntax = cen;
+
+ if (cp[0] == '+')
+ {
+ /* Next is special application (CEN syntax). */
+ cp[0] = '\0';
+ special = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_')
+ ++cp;
+
+ mask |= CEN_SPECIAL;
+ }
+
+ if (cp[0] == ',')
+ {
+ /* Next is sponsor (CEN syntax). */
+ cp[0] = '\0';
+ sponsor = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != '_')
+ ++cp;
+
+ mask |= CEN_SPONSOR;
+ }
+
+ if (cp[0] == '_')
+ {
+ /* Next is revision (CEN syntax). */
+ cp[0] = '\0';
+ revision = ++cp;
+
+ mask |= CEN_REVISION;
+ }
+ }
+
+ /* For CEN sytnax values it might be important to have the
+ separator character in the file name, not for XPG syntax. */
+ if (syntax == xpg)
+ {
+ if (territory != NULL && territory[0] == '\0')
+ mask &= ~TERRITORY;
+
+ if (codeset != NULL && codeset[0] == '\0')
+ mask &= ~XPG_CODESET;
+
+ if (modifier != NULL && modifier[0] == '\0')
+ mask &= ~XPG_MODIFIER;
+ }
+
+ /* Create all possible locale entries which might be interested in
+ generalzation. */
+ retval = make_entry_rec (dirname, mask, language, territory, codeset,
+ modifier, special, sponsor, revision,
+ domainname, 1);
+ if (retval == NULL)
+ /* This means we are out of core. */
+ return NULL;
+
+ if (retval->decided == 0)
+ _nl_load_domain (retval);
+ if (retval->data == NULL)
+ {
+ int cnt;
+ for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+ {
+ if (retval->successor[cnt]->decided == 0)
+ _nl_load_domain (retval->successor[cnt]);
+ if (retval->successor[cnt]->data != NULL)
+ break;
+
+ /* Signal that locale is not available. */
+ retval->successor[cnt] = NULL;
+ }
+ if (retval->successor[cnt] == NULL)
+ retval = NULL;
+ }
+
+ /* The room for an alias was dynamically allocated. Free it now. */
+ if (alias_value != NULL)
+ free (locale);
+
+ return retval;
+}
+
+
+static struct loaded_domain *
+make_entry_rec (dirname, mask, language, territory, codeset, modifier,
+ special, sponsor, revision, domain, do_allocate)
+ const char *dirname;
+ int mask;
+ const char *language;
+ const char *territory;
+ const char *codeset;
+ const char *modifier;
+ const char *special;
+ const char *sponsor;
+ const char *revision;
+ const char *domain;
+ int do_allocate;
+{
+ char *filename = NULL;
+ struct loaded_domain *last = NULL;
+ struct loaded_domain *retval;
+ char *cp;
+ size_t entries;
+ int cnt;
+
+
+ /* Process the current entry described by the MASK only when it is
+ valid. Because the mask can have in the first call bits from
+ both syntaces set this is necessary to prevent constructing
+ illegal local names. */
+ /* FIXME: Rewrite because test is necessary only in first round. */
+ if ((mask & CEN_SPECIFIC) == 0 || (mask & XPG_SPECIFIC) == 0)
+ {
+ /* Allocate room for the full file name. */
+ filename = (char *) malloc (strlen (dirname) + 1
+ + strlen (language)
+ + ((mask & TERRITORY) != 0
+ ? strlen (territory) : 0)
+ + ((mask & XPG_CODESET) != 0
+ ? strlen (codeset) : 0)
+ + ((mask & XPG_MODIFIER) != 0 ?
+ strlen (modifier) : 0)
+ + ((mask & CEN_SPECIAL) != 0
+ ? strlen (special) : 0)
+ + ((mask & CEN_SPONSOR) != 0
+ ? strlen (sponsor) : 0)
+ + ((mask & CEN_REVISION) != 0
+ ? strlen (revision) : 0) + 1
+ + strlen (domain) + 1);
+
+ if (filename == NULL)
+ return NULL;
+
+ retval = NULL;
+ last = NULL;
+
+ /* Construct file name. */
+ cp = stpcpy (filename, dirname);
+ *cp++ = '/';
+ cp = stpcpy (cp, language);
+
+ if ((mask & TERRITORY) != 0)
+ {
+ *cp++ = '_';
+ cp = stpcpy (cp, territory);
+ }
+ if ((mask & XPG_CODESET) != 0)
+ {
+ *cp++ = '.';
+ cp = stpcpy (cp, codeset);
+ }
+ if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
+ {
+ /* This component can be part of both syntaces but has different
+ leading characters. For CEN we use `+', else `@'. */
+ *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
+ cp = stpcpy (cp, modifier);
+ }
+ if ((mask & CEN_SPECIAL) != 0)
+ {
+ *cp++ = '+';
+ cp = stpcpy (cp, special);
+ }
+ if ((mask & CEN_SPONSOR) != 0)
+ {
+ *cp++ = ',';
+ cp = stpcpy (cp, sponsor);
+ }
+ if ((mask & CEN_REVISION) != 0)
+ {
+ *cp++ = '_';
+ cp = stpcpy (cp, revision);
+ }
+
+ *cp++ = '/';
+ stpcpy (cp, domain);
+
+ /* Look in list of already loaded domains whether it is already
+ available. */
+ last = NULL;
+ for (retval = _nl_loaded_domains; retval != NULL; retval = retval->next)
+ if (retval->filename != NULL)
+ {
+ int compare = strcmp (retval->filename, filename);
+ if (compare == 0)
+ /* We found it! */
+ break;
+ if (compare < 0)
+ {
+ /* It's not in the list. */
+ retval = NULL;
+ break;
+ }
+
+ last = retval;
+ }
+
+ if (retval != NULL || do_allocate == 0)
+ {
+ free (filename);
+ return retval;
+ }
+ }
+
+ retval = (struct loaded_domain *) malloc (sizeof (*retval));
+ if (retval == NULL)
+ return NULL;
+
+ retval->filename = filename;
+ retval->decided = 0;
+
+ if (last == NULL)
+ {
+ retval->next = _nl_loaded_domains;
+ _nl_loaded_domains = retval;
+ }
+ else
+ {
+ retval->next = last->next;
+ last->next = retval;
+ }
+
+ entries = 0;
+ for (cnt = 126; cnt >= 0; --cnt)
+ if (cnt < mask && (cnt & ~mask) == 0
+ && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0))
+ retval->successor[entries++] = make_entry_rec (dirname, cnt,
+ language, territory,
+ codeset, modifier,
+ special, sponsor,
+ revision, domain, 1);
+ retval->successor[entries] = NULL;
+
+ return retval;
+}
+
+
+/* @@ begin of epilog @@ */
+
+/* We don't want libintl.a to depend on any other library. So we
+ avoid the non-standard function stpcpy. In GNU C Library this
+ function is available, though. Also allow the symbol HAVE_STPCPY
+ to be defined. */
+#if !_LIBC && !HAVE_STPCPY
+static char *
+stpcpy (dest, src)
+ char *dest;
+ const char *src;
+{
+ while ((*dest++ = *src++) != '\0')
+ /* Do nothing. */ ;
+ return dest - 1;
+}
+#endif
diff --git a/intl/gettext.c b/intl/gettext.c
new file mode 100644
index 0000000000..7bed6369b4
--- /dev/null
+++ b/intl/gettext.c
@@ -0,0 +1,70 @@
+/* gettext.c -- implementation of gettext(3) function
+ Copyright (C) 1995 Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#ifdef _LIBC
+# define __need_NULL
+# include <stddef.h>
+#else
+# ifdef STDC_HEADERS
+# include <stdlib.h> /* Just for NULL. */
+# else
+# ifdef HAVE_STRING_H
+# include <string.h>
+# else
+# define NULL ((void *) 0)
+# endif
+# endif
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define GETTEXT __gettext
+# define DGETTEXT __dgettext
+#else
+# define GETTEXT gettext__
+# define DGETTEXT dgettext__
+#endif
+
+/* Look up MSGID in the current default message catalog for the current
+ LC_MESSAGES locale. If not found, returns MSGID itself (the default
+ text). */
+char *
+GETTEXT (msgid)
+ const char *msgid;
+{
+ return DGETTEXT (NULL, msgid);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__gettext, gettext);
+#endif
diff --git a/intl/gettext.h b/intl/gettext.h
new file mode 100644
index 0000000000..5190f09447
--- /dev/null
+++ b/intl/gettext.h
@@ -0,0 +1,105 @@
+/* gettext.h - internal header for GNU gettext internationalization functions
+ Copyright (C) 1995 Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#ifndef _GETTEXT_H
+#define _GETTEXT_H 1
+
+#include <stdio.h>
+
+#if HAVE_LIMITS_H || _LIBC
+# include <limits.h>
+#endif
+
+/* @@ end of prolog @@ */
+
+/* The magic number of the GNU message catalog format. */
+#define _MAGIC 0x950412de
+#define _MAGIC_SWAPPED 0xde120495
+
+/* Revision number of the currently used .mo (binary) file format. */
+#define MO_REVISION_NUMBER 0
+
+/* The following contortions are an attempt to use the C preprocessor
+ to determine an unsigned integral type that is 32 bits wide. An
+ alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
+ doing that would require that the configure script compile and *run*
+ the resulting executable. Locally running cross-compiled executables
+ is usually not possible. */
+
+#if __STDC__
+# define UINT_MAX_32_BITS 4294967295U
+#else
+# define UINT_MAX_32_BITS 0xFFFFFFFF
+#endif
+
+/* If UINT_MAX isn't defined, assume it's a 32-bit type.
+ This should be valid for all systems GNU cares about because
+ that doesn't include 16-bit systems, and only modern systems
+ (that certainly have <limits.h>) have 64+-bit integral types. */
+
+#ifndef UINT_MAX
+# define UINT_MAX UINT_MAX_32_BITS
+#endif
+
+#if UINT_MAX == UINT_MAX_32_BITS
+typedef unsigned nls_uint32;
+#else
+# if USHRT_MAX == UINT_MAX_32_BITS
+typedef unsigned short nls_uint32;
+# else
+# if ULONG_MAX == UINT_MAX_32_BITS
+typedef unsigned long nls_uint32;
+# else
+ /* The following line is intended to throw an error. Using #error is
+ not portable enough. */
+ "Cannot determine unsigned 32-bit data type."
+# endif
+# endif
+#endif
+
+
+/* Header for binary .mo file format. */
+struct mo_file_header
+{
+ /* The magic number. */
+ nls_uint32 magic;
+ /* The revision number of the file format. */
+ nls_uint32 revision;
+ /* The number of strings pairs. */
+ nls_uint32 nstrings;
+ /* Offset of table with start offsets of original strings. */
+ nls_uint32 orig_tab_offset;
+ /* Offset of table with start offsets of translation strings. */
+ nls_uint32 trans_tab_offset;
+ /* Size of hashing table. */
+ nls_uint32 hash_tab_size;
+ /* Offset of first hashing entry. */
+ nls_uint32 hash_tab_offset;
+};
+
+struct string_desc
+{
+ /* Length of addressed string. */
+ nls_uint32 length;
+ /* Offset of string in file. */
+ nls_uint32 offset;
+};
+
+/* @@ begin of epilog @@ */
+
+#endif /* gettext.h */
diff --git a/intl/gettextP.h b/intl/gettextP.h
new file mode 100644
index 0000000000..6d53ac1a15
--- /dev/null
+++ b/intl/gettextP.h
@@ -0,0 +1,79 @@
+/* gettextP.h -- header describing internals of gettext library
+ Copyright (C) 1995 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef _GETTEXTP_H
+#define _GETTEXTP_H
+
+/* @@ end of prolog @@ */
+
+#ifndef __P
+# if __STDC__
+# define __P(args) args
+# else
+# define __P(args) ()
+# endif
+#endif
+
+#ifndef W
+# define W(flag, data) ((flag) ? SWAP (data) : (data))
+#endif
+
+
+static nls_uint32 SWAP __P ((nls_uint32 i));
+
+static inline nls_uint32
+SWAP (i)
+ nls_uint32 i;
+{
+ return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
+}
+
+
+struct loaded_domain
+{
+ struct loaded_domain *next;
+ struct loaded_domain *successor[31];
+
+ const char *filename;
+ int decided;
+
+ const char *data;
+ int must_swap;
+ nls_uint32 nstrings;
+ struct string_desc *orig_tab;
+ struct string_desc *trans_tab;
+ nls_uint32 hash_size;
+ nls_uint32 *hash_tab;
+};
+
+struct binding
+{
+ struct binding *next;
+ char *domainname;
+ char *dirname;
+};
+
+struct loaded_domain *_nl_find_domain __P ((const char *__dirname,
+ char *__locale,
+ const char *__domainname));
+void _nl_load_domain __P ((struct loaded_domain *__domain));
+
+const char *_nl_expand_alias __P ((const char *__name));
+
+/* @@ begin of epilog @@ */
+
+#endif /* gettextP.h */
diff --git a/intl/hash-string.h b/intl/hash-string.h
new file mode 100644
index 0000000000..3b38bd115c
--- /dev/null
+++ b/intl/hash-string.h
@@ -0,0 +1,62 @@
+/* hash-string - Implements a string hashing function.
+ Copyright (C) 1995 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_VALUES_H
+# include <values.h>
+#endif
+
+/* @@ end of prolog @@ */
+
+#ifndef __P
+# if __STDC__
+# define __P(Args) Args
+# else
+# define __P(Args) ()
+# endif
+#endif
+
+/* We assume to have `unsigned long int' value with at least 32 bits. */
+#define HASHWORDBITS 32
+
+
+/* Defines the so called `hashpjw' function by P.J. Weinberger
+ [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
+ 1986, 1987 Bell Telephone Laboratories, Inc.] */
+static unsigned long hash_string __P ((const char *__str_param));
+
+static inline unsigned long
+hash_string (str_param)
+ const char *str_param;
+{
+ unsigned long int hval, g;
+ const char *str = str_param;
+
+ /* Compute the hash value for the given string. */
+ hval = 0;
+ while (*str != '\0')
+ {
+ hval <<= 4;
+ hval += (unsigned long) *str++;
+ g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4));
+ if (g != 0)
+ {
+ hval ^= g >> (HASHWORDBITS - 8);
+ hval ^= g;
+ }
+ }
+ return hval;
+}
diff --git a/intl/intl-compat.c b/intl/intl-compat.c
new file mode 100644
index 0000000000..503efa0fa9
--- /dev/null
+++ b/intl/intl-compat.c
@@ -0,0 +1,76 @@
+/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
+ Library.
+ Copyright (C) 1995 Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "libgettext.h"
+
+/* @@ end of prolog @@ */
+
+
+#undef gettext
+#undef dgettext
+#undef dcgettext
+#undef textdomain
+#undef bindtextdomain
+
+
+char *
+bindtextdomain (domainname, dirname)
+ const char *domainname;
+ const char *dirname;
+{
+ return bindtextdomain__ (domainname, dirname);
+}
+
+
+char *
+dcgettext (domainname, msgid, category)
+ const char *domainname;
+ const char *msgid;
+ int category;
+{
+ return dcgettext__ (domainname, msgid, category);
+}
+
+
+char *
+dgettext (domainname, msgid)
+ const char *domainname;
+ const char *msgid;
+{
+ return dgettext__ (domainname, msgid);
+}
+
+
+char *
+gettext (msgid)
+ const char *msgid;
+{
+ return gettext__ (msgid);
+}
+
+
+char *
+textdomain (domainname)
+ const char *domainname;
+{
+ return textdomain__ (domainname);
+}
diff --git a/intl/libgettext.h b/intl/libgettext.h
new file mode 100644
index 0000000000..4570cdf4b5
--- /dev/null
+++ b/intl/libgettext.h
@@ -0,0 +1,177 @@
+/* libgettext.h -- Message catalogs for internationalization.
+ Copyright (C) 1995 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* Because on some systems (e.g. Solaris) we sometimes have to include
+ the systems libintl.h as well as this file we have more complex
+ include protection above. But the systems header might perhaps also
+ define _LIBINTL_H and therefore we have to protect the definition here. */
+
+#if !defined (_LIBINTL_H) || !defined (_LIBGETTEXT_H)
+#if !_LIBINTL_H
+# define _LIBINTL_H 1
+#endif
+#define _LIBGETTEXT_H 1
+
+/* We define an additional symbol to signal that we use the GNU
+ implementation of gettext. */
+#define __USE_GNU_GETTEXT 1
+
+#include <sys/types.h>
+
+#if HAVE_LOCALE_H
+# include <locale.h>
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* @@ end of prolog @@ */
+
+#ifndef __P
+# if __STDC__
+# define __P(args) args
+# else
+# define __P(args) ()
+# endif
+#endif
+
+#ifndef NULL
+# if !defined __cplusplus || defined __GNUC__
+# define NULL ((void *) 0)
+# else
+# define NULL (0)
+# endif
+#endif
+
+#if !HAVE_LC_MESSAGES
+/* This value determines the behaviour of the gettext() and dgettext()
+ function. But some system does not have this defined. Define it
+ to a default value. */
+# define LC_MESSAGES (-1)
+#endif
+
+
+/* Declarations for gettext-using-catgets interface. Derived from
+ Jim Meyering's libintl.h. */
+struct _msg_ent
+{
+ const char *_msg;
+ int _msg_number;
+};
+
+
+#if HAVE_CATGETS
+/* These two variables are defined in the automatically by po-to-tbl.sed
+ generated file `cat-id-tbl.c'. */
+extern const struct _msg_ent _msg_tbl[];
+extern int _msg_tbl_length;
+#endif
+
+
+/* For automatical extraction of messages sometimes no real
+ translation is needed. Instead the string itself is the result. */
+#define gettext_noop(Str) (Str)
+
+/* Look up MSGID in the current default message catalog for the current
+ LC_MESSAGES locale. If not found, returns MSGID itself (the default
+ text). */
+extern char *gettext __P ((const char *__msgid));
+extern char *gettext__ __P ((const char *__msgid));
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current
+ LC_MESSAGES locale. */
+extern char *dgettext __P ((const char *__domainname, const char *__msgid));
+extern char *dgettext__ __P ((const char *__domainname, const char *__msgid));
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+ locale. */
+extern char *dcgettext __P ((const char *__domainname, const char *__msgid,
+ int __category));
+extern char *dcgettext__ __P ((const char *__domainname, const char *__msgid,
+ int __category));
+
+
+/* Set the current default message catalog to DOMAINNAME.
+ If DOMAINNAME is null, return the current default.
+ If DOMAINNAME is "", reset to the default of "messages". */
+extern char *textdomain __P ((const char *__domainname));
+extern char *textdomain__ __P ((const char *__domainname));
+
+/* Specify that the DOMAINNAME message catalog will be found
+ in DIRNAME rather than in the system locale data base. */
+extern char *bindtextdomain __P ((const char *__domainname,
+ const char *__dirname));
+extern char *bindtextdomain__ __P ((const char *__domainname,
+ const char *__dirname));
+
+#if ENABLE_NLS
+
+/* Solaris 2.3 has the gettext function but dcgettext is missing.
+ So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4
+ has dcgettext. */
+# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT)
+
+# define gettext(Msgid) \
+ dgettext (NULL, Msgid)
+
+# define dgettext(Domainname, Msgid) \
+ dcgettext (Domainname, Msgid, LC_MESSAGES)
+
+# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7
+# define dcgettext(Domainname, Msgid, Category) \
+ (__extension__ \
+ ({ \
+ char *result; \
+ if (__builtin_constant_p (Msgid)) \
+ { \
+ extern int _nl_msg_cat_cntr; \
+ static char *__translation__; \
+ static int __catalog_counter__; \
+ if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \
+ { \
+ __translation__ = \
+ dcgettext__ ((Domainname), (Msgid), (Category)); \
+ __catalog_counter__ = _nl_msg_cat_cntr; \
+ } \
+ result = __translation__; \
+ } \
+ else \
+ result = dcgettext__ ((Domainname), (Msgid), (Category)); \
+ result; \
+ }))
+# endif
+# endif
+
+#else
+
+# define gettext(Msgid) (Msgid)
+# define dgettext(Domainname, Msgid) (Msgid)
+# define dcgettext(Domainname, Msgid, Category) (Msgid)
+# define textdomain(Domainname) while (0) /* nothing */
+# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
+
+#endif
+
+/* @@ begin of epilog @@ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/intl/libintl.inst b/intl/libintl.inst
new file mode 100644
index 0000000000..4b91230f88
--- /dev/null
+++ b/intl/libintl.inst
@@ -0,0 +1,108 @@
+/* libintl.h -- Message catalogs for internationalization.
+Copyright (C) 1995 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef _LIBINTL_H
+#define _LIBINTL_H 1
+
+#ifdef HAVE_LOCALE_H
+# include <locale.h>
+#endif
+
+/* We define an additional symbol to signal that we use the GNU
+ implementation of gettext. */
+#define __USE_GNU_GETTEXT 1
+
+#ifndef __P
+# if __STDC__
+# define __P(args) args
+# else
+# define __P(args) ()
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Look up MSGID in the current default message catalog for the current
+ LC_MESSAGES locale. If not found, returns MSGID itself (the default
+ text). */
+extern char *gettext __P ((const char *__msgid));
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current
+ LC_MESSAGES locale. */
+extern char *dgettext __P ((const char *__domainname, const char *__msgid));
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+ locale. */
+extern char *dcgettext __P ((const char *__domainname, const char *__msgid,
+ int __category));
+
+
+/* Set the current default message catalog to DOMAINNAME.
+ If DOMAINNAME is null, return the current default.
+ If DOMAINNAME is "", reset to the default of "messages". */
+extern char *textdomain __P ((const char *__domainname));
+
+/* Specify that the DOMAINNAME message catalog will be found
+ in DIRNAME rather than in the system locale data base. */
+extern char *bindtextdomain __P ((const char *__domainname,
+ const char *__dirname));
+
+
+/* Optimized version of the functions above. */
+#if defined __OPTIMIZED
+/* These must be a macro. Inlined functions are useless because the
+ `__builtin_constant_p' predicate in dcgettext would always return
+ false. */
+
+# define gettext(msgid) dgettext ((char *) 0, msgid)
+
+# define dgettext(domainname, msgid) \
+ dcgettext (domainname, msgid, LC_MESSAGES)
+
+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define dcgettext(domainname, msgid, category) \
+ (__extension__ \
+ ({ \
+ char *result; \
+ if (__builtin_constant_p (msgid)) \
+ { \
+ extern int _nl_msg_cat_cntr; \
+ static char *__translation__; \
+ static int __catalog_counter__; \
+ if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \
+ { \
+ __translation__ = \
+ (dcgettext) ((domainname), (msgid), (category)); \
+ __catalog_counter__ = _nl_msg_cat_cntr; \
+ } \
+ result = __translation__; \
+ } \
+ else \
+ result = (dcgettext) ((domainname), (msgid), (category)); \
+ result; \
+ }))
+# endif
+#endif /* Optimizing. */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* libintl.h */
diff --git a/intl/linux-msg.sed b/intl/linux-msg.sed
new file mode 100755
index 0000000000..5918e720a9
--- /dev/null
+++ b/intl/linux-msg.sed
@@ -0,0 +1,100 @@
+# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file
+# Copyright (C) 1995 Free Software Foundation, Inc.
+# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+#
+# The first directive in the .msg should be the definition of the
+# message set number. We use always set number 1.
+#
+1 {
+ i\
+$set 1 # Automatically created by po2msg.sed
+ h
+ s/.*/0/
+ x
+}
+#
+# Mitch's old catalog format does not allow comments.
+#
+# We copy the original message as a comment into the .msg file.
+#
+/^msgid/ {
+ s/msgid[ ]*"//
+#
+# This does not work now with the new format.
+# /"$/! {
+# s/\\$//
+# s/$/ ... (more lines following)"/
+# }
+ x
+# The following nice solution is by
+# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+ td
+# Increment a decimal number in pattern space.
+# First hide trailing `9' digits.
+ :d
+ s/9\(_*\)$/_\1/
+ td
+# Assure at least one digit is available.
+ s/^\(_*\)$/0\1/
+# Increment the last digit.
+ s/8\(_*\)$/9\1/
+ s/7\(_*\)$/8\1/
+ s/6\(_*\)$/7\1/
+ s/5\(_*\)$/6\1/
+ s/4\(_*\)$/5\1/
+ s/3\(_*\)$/4\1/
+ s/2\(_*\)$/3\1/
+ s/1\(_*\)$/2\1/
+ s/0\(_*\)$/1\1/
+# Convert the hidden `9' digits to `0's.
+ s/_/0/g
+ x
+ G
+ s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p
+}
+#
+# The .msg file contains, other then the .po file, only the translations
+# but each given a unique ID. Starting from 1 and incrementing by 1 for
+# each message we assign them to the messages.
+# It is important that the .po file used to generate the cat-id-tbl.c file
+# (with po-to-tbl) is the same as the one used here. (At least the order
+# of declarations must not be changed.)
+#
+/^msgstr/ {
+ s/msgstr[ ]*"\(.*\)"/# \1/
+# Clear substitution flag.
+ tb
+# Append the next line.
+ :b
+ N
+# Look whether second part is continuation line.
+ s/\(.*\n\)"\(.*\)"/\1\2/
+# Yes, then branch.
+ ta
+ P
+ D
+# Note that D includes a jump to the start!!
+# We found a continuation line. But before printing insert '\'.
+ :a
+ s/\(.*\)\(\n.*\)/\1\\\2/
+ P
+# We cannot use D here.
+ s/.*\n\(.*\)/\1/
+ tb
+}
+d
diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c
new file mode 100644
index 0000000000..d98f365bf9
--- /dev/null
+++ b/intl/loadmsgcat.c
@@ -0,0 +1,191 @@
+/* loadmsgcat.c -- load needed message catalogs
+ Copyright (C) 1995 Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
+#endif
+
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC
+# include <sys/mman.h>
+#endif
+
+#include "gettext.h"
+#include "gettextP.h"
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions. This is required by the standard
+ because some ANSI C functions will require linking with this object
+ file and the name space must not be polluted. */
+# define fstat __fstat
+# define open __open
+# define close __close
+# define read __read
+# define mmap __mmap
+# define munmap __munmap
+#endif
+
+/* We need a sign, whether a new catalog was loaded, which can be associated
+ with all translations. This is important if the translations are
+ cached by one of GCC's features. */
+int _nl_msg_cat_cntr;
+
+
+/* Load the message catalogs specified by FILENAME. If it is no valid
+ message catalog do nothing. */
+void
+_nl_load_domain (domain)
+ struct loaded_domain *domain;
+{
+ int fd;
+ struct stat st;
+ struct mo_file_header *data = (struct mo_file_header *) -1;
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+ || defined _LIBC
+ int use_mmap = 0;
+#endif
+
+ domain->decided = 1;
+ domain->data = NULL;
+
+ /* If the record does not represent a valid locale the FILENAME
+ might be NULL. This can happen when according to the given
+ specification the locale file name is different for XPG and CEN
+ syntax. */
+ if (domain->filename == NULL)
+ return;
+
+ /* Try to open the addressed file. */
+ fd = open (domain->filename, O_RDONLY);
+ if (fd == -1)
+ return;
+
+ /* We must know about the size of the file. */
+ if (fstat (fd, &st) != 0
+ && st.st_size < (off_t) sizeof (struct mo_file_header))
+ {
+ /* Something went wrong. */
+ close (fd);
+ return;
+ }
+
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+ || defined _LIBC
+ /* Now we are ready to load the file. If mmap() is available we try
+ this first. If not available or it failed we try to load it. */
+ data = (struct mo_file_header *) mmap (NULL, st.st_size, PROT_READ,
+ MAP_PRIVATE, fd, 0);
+
+ if (data != (struct mo_file_header *) -1)
+ {
+ /* mmap() call was successful. */
+ close (fd);
+ use_mmap = 1;
+ }
+#endif
+
+ /* If the data is not yet available (i.e. mmap'ed) we try to load
+ it manually. */
+ if (data == (struct mo_file_header *) -1)
+ {
+ off_t to_read;
+ char *read_ptr;
+
+ data = (struct mo_file_header *) malloc (st.st_size);
+ if (data == NULL)
+ return;
+
+ to_read = st.st_size;
+ read_ptr = (char *) data;
+ do
+ {
+ long int nb = (long int) read (fd, read_ptr, to_read);
+ if (nb == -1)
+ {
+ close (fd);
+ return;
+ }
+
+ read_ptr += nb;
+ to_read -= nb;
+ }
+ while (to_read > 0);
+
+ close (fd);
+ }
+
+ /* Using the magic number we can test whether it really is a message
+ catalog file. */
+ if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED)
+ {
+ /* The magic number is wrong: not a message catalog file. */
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+ || defined _LIBC
+ if (use_mmap)
+ munmap ((caddr_t) data, st.st_size);
+ else
+#endif
+ free (data);
+ return;
+ }
+
+ domain->data = (char *) data;
+ domain->must_swap = data->magic != _MAGIC;
+
+ /* Fill in the information about the available tables. */
+ switch (W (domain->must_swap, data->revision))
+ {
+ case 0:
+ domain->nstrings = W (domain->must_swap, data->nstrings);
+ domain->orig_tab = (struct string_desc *)
+ ((char *) data + W (domain->must_swap, data->orig_tab_offset));
+ domain->trans_tab = (struct string_desc *)
+ ((char *) data + W (domain->must_swap, data->trans_tab_offset));
+ domain->hash_size = W (domain->must_swap, data->hash_tab_size);
+ domain->hash_tab = (nls_uint32 *)
+ ((char *) data + W (domain->must_swap, data->hash_tab_offset));
+ break;
+ default:
+ /* This is an illegal revision. */
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+ || defined _LIBC
+ if (use_mmap)
+ munmap ((caddr_t) data, st.st_size);
+ else
+#endif
+ free (data);
+ domain->data = NULL;
+ return;
+ }
+
+ /* Show that one domain is changed. This might make some cached
+ translation invalid. */
+ ++_nl_msg_cat_cntr;
+}
diff --git a/intl/localealias.c b/intl/localealias.c
new file mode 100644
index 0000000000..b432e91150
--- /dev/null
+++ b/intl/localealias.c
@@ -0,0 +1,317 @@
+/* localealias.c -- handle aliases for locale names
+ Copyright (C) 1995 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# if defined HAVE_ALLOCA_H || defined _LIBC
+# include <alloca.h>
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca
+char *alloca ();
+# endif
+# endif
+# endif
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+char *getenv ();
+# ifdef HAVE_MALLOC_H
+# include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+# define strchr index
+# endif
+#endif
+
+#include "gettext.h"
+#include "gettextP.h"
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions. This is required by the standard
+ because some ANSI C functions will require linking with this object
+ file and the name space must not be polluted. */
+# define strcasecmp __strcasecmp
+#endif
+
+struct alias_map
+{
+ const char *alias;
+ const char *value;
+};
+
+
+static struct alias_map *map;
+static size_t nmap = 0;
+static size_t maxmap = 0;
+
+
+/* Prototypes for local functions. */
+static size_t read_alias_file __P ((const char *fname, int fname_len));
+static void extend_alias_table __P ((void));
+static int alias_compare __P ((const struct alias_map *map1,
+ const struct alias_map *map2));
+
+
+const char *
+_nl_expand_alias (name)
+ const char *name;
+{
+ static const char *locale_alias_path = LOCALE_ALIAS_PATH;
+ struct alias_map *retval;
+ size_t added;
+
+ do
+ {
+ struct alias_map item;
+
+ item.alias = name;
+
+ if (nmap > 0)
+ retval = (struct alias_map *) bsearch (&item, map, nmap,
+ sizeof (struct alias_map),
+ (int (*) __P ((const void *,
+ const void *)))
+ alias_compare);
+ else
+ retval = NULL;
+
+ /* We really found an alias. Return the value. */
+ if (retval != NULL)
+ return retval->value;
+
+ /* Perhaps we can find another alias file. */
+ added = 0;
+ while (added == 0 && locale_alias_path[0] != '\0')
+ {
+ const char *start;
+
+ while (locale_alias_path[0] == ':')
+ ++locale_alias_path;
+ start = locale_alias_path;
+
+ while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':')
+ ++locale_alias_path;
+
+ if (start < locale_alias_path)
+ added = read_alias_file (start, locale_alias_path - start);
+ }
+ }
+ while (added != 0);
+
+ return NULL;
+}
+
+
+static size_t
+read_alias_file (fname, fname_len)
+ const char *fname;
+ int fname_len;
+{
+ FILE *fp;
+ char *full_fname;
+ size_t added;
+ static const char aliasfile[] = "/locale.alias";
+
+ full_fname = (char *) alloca (fname_len + sizeof aliasfile);
+ memcpy (full_fname, fname, fname_len);
+ memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
+
+ fp = fopen (full_fname, "r");
+ if (fp == NULL)
+ return 0;
+
+ added = 0;
+ while (!feof (fp))
+ {
+ /* It is a reasonable approach to use a fix buffer here because
+ a) we are only interested in the first two fields
+ b) these fields must be usable as file names and so must not
+ be that long
+ */
+ char buf[BUFSIZ];
+ char *alias;
+ char *value;
+ char *cp;
+
+ if (fgets (buf, BUFSIZ, fp) == NULL)
+ /* EOF reached. */
+ break;
+
+ cp = buf;
+ /* Ignore leading white space. */
+ while (isspace (cp[0]))
+ ++cp;
+
+ /* A leading '#' signals a comment line. */
+ if (cp[0] != '\0' && cp[0] != '#')
+ {
+ alias = cp++;
+ while (cp[0] != '\0' && !isspace (cp[0]))
+ ++cp;
+ /* Terminate alias name. */
+ if (cp[0] != '\0')
+ *cp++ = '\0';
+
+ /* Now look for the beginning of the value. */
+ while (isspace (cp[0]))
+ ++cp;
+
+ if (cp[0] != '\0')
+ {
+ char *tp;
+ size_t len;
+
+ value = cp++;
+ while (cp[0] != '\0' && !isspace (cp[0]))
+ ++cp;
+ /* Terminate value. */
+ if (cp[0] == '\n')
+ {
+ /* This has to be done to make the following test
+ for the end of line possible. We are looking for
+ the terminating '\n' which do not overwrite here. */
+ *cp++ = '\0';
+ *cp = '\n';
+ }
+ else if (cp[0] != '\0')
+ *cp++ = '\0';
+
+ if (nmap >= maxmap)
+ extend_alias_table ();
+
+ /* We cannot depend on strdup available in the libc. Sigh! */
+ len = strlen (alias) + 1;
+ tp = (char *) malloc (len);
+ if (tp == NULL)
+ return added;
+ memcpy (tp, alias, len);
+ map[nmap].alias = tp;
+
+ len = strlen (value) + 1;
+ tp = (char *) malloc (len);
+ if (tp == NULL)
+ return added;
+ memcpy (tp, value, len);
+ map[nmap].value = tp;
+
+ ++nmap;
+ ++added;
+ }
+ }
+
+ /* Possibily not the whole line fitted into the buffer. Ignore
+ the rest of the line. */
+ while (strchr (cp, '\n') == NULL)
+ {
+ cp = buf;
+ if (fgets (buf, BUFSIZ, fp) == NULL)
+ /* Make sure the inner loop will be left. The outer loop
+ will exit at the `feof' test. */
+ *cp = '\n';
+ }
+ }
+
+ /* Should we test for ferror()? I think we have to silently ignore
+ errors. --drepper */
+ fclose (fp);
+
+ if (added > 0)
+ qsort (map, nmap, sizeof (struct alias_map),
+ (int (*) __P ((const void *, const void *))) alias_compare);
+
+ return added;
+}
+
+
+static void
+extend_alias_table ()
+{
+ size_t new_size;
+ struct alias_map *new_map;
+
+ new_size = maxmap == 0 ? 100 : 2 * maxmap;
+ new_map = (struct alias_map *) malloc (new_size
+ * sizeof (struct alias_map));
+ if (new_map == NULL)
+ /* Simply don't extend: we don't have any more core. */
+ return;
+
+ memcpy (new_map, map, nmap * sizeof (struct alias_map));
+
+ if (maxmap != 0)
+ free (map);
+
+ map = new_map;
+ maxmap = new_size;
+}
+
+
+static int
+alias_compare (map1, map2)
+ const struct alias_map *map1;
+ const struct alias_map *map2;
+{
+#if defined _LIBC || defined HAVE_STRCASECMP
+ return strcasecmp (map1->alias, map2->alias);
+#else
+ const unsigned char *p1 = (const unsigned char *) map1->alias;
+ const unsigned char *p2 = (const unsigned char *) map2->alias;
+ unsigned char c1, c2;
+
+ if (p1 == p2)
+ return 0;
+
+ do
+ {
+ /* I know this seems to be odd but the tolower() function in
+ some systems libc cannot handle nonalpha characters. */
+ c1 = isupper (*p1) ? tolower (*p1) : *p1;
+ c2 = isupper (*p2) ? tolower (*p2) : *p2;
+ if (c1 == '\0')
+ break;
+ }
+ while (c1 == c2);
+
+ return c1 - c2;
+#endif
+}
diff --git a/intl/po2tbl.sed.in b/intl/po2tbl.sed.in
new file mode 100755
index 0000000000..b3bcca4d73
--- /dev/null
+++ b/intl/po2tbl.sed.in
@@ -0,0 +1,102 @@
+# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets
+# Copyright (C) 1995 Free Software Foundation, Inc.
+# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+1 {
+ i\
+/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\
+\
+#if HAVE_CONFIG_H\
+# include <config.h>\
+#endif\
+\
+#include "libgettext.h"\
+\
+const struct _msg_ent _msg_tbl[] = {
+ h
+ s/.*/0/
+ x
+}
+#
+# Write msgid entries in C array form.
+#
+/^msgid/ {
+ s/msgid[ ]*\(".*"\)/ {\1/
+ tb
+# Append the next line
+ :b
+ N
+# Look whether second part is continuation line.
+ s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/
+# Yes, then branch.
+ ta
+# Because we assume that the input file correctly formed the line
+# just read cannot be again be a msgid line. So it's safe to ignore
+# it.
+ s/\(.*\)\n.*/\1/
+ bc
+# We found a continuation line. But before printing insert '\'.
+ :a
+ s/\(.*\)\(\n.*\)/\1\\\2/
+ P
+# We cannot use D here.
+ s/.*\n\(.*\)/\1/
+# Some buggy seds do not clear the `successful substitution since last ``t'''
+# flag on `N', so we do a `t' here to clear it.
+ tb
+# Not reached
+ :c
+ x
+# The following nice solution is by
+# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+ td
+# Increment a decimal number in pattern space.
+# First hide trailing `9' digits.
+ :d
+ s/9\(_*\)$/_\1/
+ td
+# Assure at least one digit is available.
+ s/^\(_*\)$/0\1/
+# Increment the last digit.
+ s/8\(_*\)$/9\1/
+ s/7\(_*\)$/8\1/
+ s/6\(_*\)$/7\1/
+ s/5\(_*\)$/6\1/
+ s/4\(_*\)$/5\1/
+ s/3\(_*\)$/4\1/
+ s/2\(_*\)$/3\1/
+ s/1\(_*\)$/2\1/
+ s/0\(_*\)$/1\1/
+# Convert the hidden `9' digits to `0's.
+ s/_/0/g
+ x
+ G
+ s/\(.*\)\n\([0-9]*\)/\1, \2},/
+ s/\(.*\)"$/\1/
+ p
+}
+#
+# Last line.
+#
+$ {
+ i\
+};\
+
+ g
+ s/0*\(.*\)/int _msg_tbl_length = \1;/p
+}
+d
diff --git a/intl/textdomain.c b/intl/textdomain.c
new file mode 100644
index 0000000000..c06642b268
--- /dev/null
+++ b/intl/textdomain.c
@@ -0,0 +1,97 @@
+/* textdomain.c -- implementation of the textdomain(3) function
+ Copyright (C) 1995 Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#endif
+
+#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Name of the default text domain. */
+extern const char _nl_default_default_domain[];
+
+/* Default text domain in which entries for gettext(3) are to be found. */
+extern const char *_nl_current_default_domain;
+
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define TEXTDOMAIN __textdomain
+#else
+# define TEXTDOMAIN textdomain__
+#endif
+
+/* Set the current default message catalog to DOMAINNAME.
+ If DOMAINNAME is null, return the current default.
+ If DOMAINNAME is "", reset to the default of "messages". */
+char *
+TEXTDOMAIN (domainname)
+ const char *domainname;
+{
+ char *old;
+
+ /* A NULL pointer requests the current setting. */
+ if (domainname == NULL)
+ return (char *) _nl_current_default_domain;
+
+ old = (char *) _nl_current_default_domain;
+
+ /* If domain name is the null string set to default domain "messages". */
+ if (domainname[0] == '\0'
+ || strcmp (domainname, _nl_default_default_domain) == 0)
+ _nl_current_default_domain = _nl_default_default_domain;
+ else
+ {
+ /* If the following malloc fails `_nl_current_default_domain'
+ will be NULL. This value will be returned and so signals we
+ are out of core. */
+ size_t len = strlen (domainname) + 1;
+ char *cp = (char *) malloc (len);
+ if (cp != NULL)
+ memcpy (cp, domainname, len);
+ _nl_current_default_domain = cp;
+ }
+
+ if (old != _nl_default_default_domain)
+ free (old);
+
+ return (char *) _nl_current_default_domain;
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__textdomain, textdomain);
+#endif
diff --git a/intl/xopen-msg.sed b/intl/xopen-msg.sed
new file mode 100755
index 0000000000..b19c0bbd0e
--- /dev/null
+++ b/intl/xopen-msg.sed
@@ -0,0 +1,104 @@
+# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file
+# Copyright (C) 1995 Free Software Foundation, Inc.
+# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+#
+# The first directive in the .msg should be the definition of the
+# message set number. We use always set number 1.
+#
+1 {
+ i\
+$set 1 # Automatically created by po2msg.sed
+ h
+ s/.*/0/
+ x
+}
+#
+# We copy all comments into the .msg file. Perhaps they can help.
+#
+/^#/ s/^#[ ]*/$ /p
+#
+# We copy the original message as a comment into the .msg file.
+#
+/^msgid/ {
+# Does not work now
+# /"$/! {
+# s/\\$//
+# s/$/ ... (more lines following)"/
+# }
+ s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/
+ p
+}
+#
+# The .msg file contains, other then the .po file, only the translations
+# but each given a unique ID. Starting from 1 and incrementing by 1 for
+# each message we assign them to the messages.
+# It is important that the .po file used to generate the cat-id-tbl.c file
+# (with po-to-tbl) is the same as the one used here. (At least the order
+# of declarations must not be changed.)
+#
+/^msgstr/ {
+ s/msgstr[ ]*"\(.*\)"/\1/
+ x
+# The following nice solution is by
+# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+ td
+# Increment a decimal number in pattern space.
+# First hide trailing `9' digits.
+ :d
+ s/9\(_*\)$/_\1/
+ td
+# Assure at least one digit is available.
+ s/^\(_*\)$/0\1/
+# Increment the last digit.
+ s/8\(_*\)$/9\1/
+ s/7\(_*\)$/8\1/
+ s/6\(_*\)$/7\1/
+ s/5\(_*\)$/6\1/
+ s/4\(_*\)$/5\1/
+ s/3\(_*\)$/4\1/
+ s/2\(_*\)$/3\1/
+ s/1\(_*\)$/2\1/
+ s/0\(_*\)$/1\1/
+# Convert the hidden `9' digits to `0's.
+ s/_/0/g
+ x
+# Bring the line in the format `<number> <message>'
+ G
+ s/^[^\n]*$/& /
+ s/\(.*\)\n\([0-9]*\)/\2 \1/
+# Clear flag from last substitution.
+ tb
+# Append the next line.
+ :b
+ N
+# Look whether second part is a continuation line.
+ s/\(.*\n\)"\(.*\)"/\1\2/
+# Yes, then branch.
+ ta
+ P
+ D
+# Note that `D' includes a jump to the start!!
+# We found a continuation line. But before printing insert '\'.
+ :a
+ s/\(.*\)\(\n.*\)/\1\\\2/
+ P
+# We cannot use the sed command `D' here
+ s/.*\n\(.*\)/\1/
+ tb
+}
+d
diff --git a/lib/Makefile b/lib/Makefile
index e1593fcd69..8b95c0a8c1 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -1,24 +1,14 @@
-# subdir level:
-#
-depth = ..
+# lib/Makefile
-include ./$(depth)/make/Variables.make
-include ./$(depth)/make/Files.make
-include ./$(depth)/make/Version.make
-#
+depth = ..
NAME = lily
SUBDIRS = include
-
+# MODULE_LIBS= $(depth)/flower
MODULE_CXXFLAGS += -D_REENTRANT
-MAINTARGET = $(LIBRARY)# huh?
-
-default: $(LIBRARY)
-
-# generic targets and rules:
-#
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C++.make
+include $(stepdir)/Library.make
diff --git a/lib/binary-source-file.cc b/lib/binary-source-file.cc
index 971d4d0c21..9bcf0e5f70 100644
--- a/lib/binary-source-file.cc
+++ b/lib/binary-source-file.cc
@@ -39,15 +39,15 @@ Binary_source_file::error_str (char const* pos_ch_c_l) const
String pre_str ((Byte const*)begin_ch_c_l, pos_ch_c_l - begin_ch_c_l);
pre_str = String_convert::bin2hex_str (pre_str);
for (int i = 2; i < pre_str.length_i (); i += 3)
- pre_str = pre_str.left_str (i) + " " + pre_str.cut (i, INT_MAX);
+ pre_str = pre_str.left_str (i) + " " + pre_str.cut_str (i, INT_MAX);
String post_str ((Byte const*)pos_ch_c_l, end_ch_c_l - pos_ch_c_l);
post_str = String_convert::bin2hex_str (post_str);
for (int i = 2; i < post_str.length_i (); i += 3)
- post_str = post_str.left_str (i) + " " + post_str.cut (i, INT_MAX);
+ post_str = post_str.left_str (i) + " " + post_str.cut_str (i, INT_MAX);
String str = pre_str
- + String ('\n')
- + String (' ', pre_str.length_i () + 1)
+ + to_str ('\n')
+ + to_str (' ', pre_str.length_i () + 1)
+ post_str;
return str;
}
diff --git a/lib/duration-convert.cc b/lib/duration-convert.cc
index 1fc42aa3be..c1240f3cdd 100644
--- a/lib/duration-convert.cc
+++ b/lib/duration-convert.cc
@@ -3,8 +3,8 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <assert.h>
#include "duration-convert.hh"
@@ -23,19 +23,19 @@ String
Duration_convert::dur2_str (Duration dur)
{
if (dur.ticks_i_)
- return String ("[") + String (dur.ticks_i_) + "]";
+ return String ("[") + to_str (dur.ticks_i_) + "]";
String str;
if (dur.durlog_i_ >= 0)
- str = String ( type2_i (dur.durlog_i_) );
+ str = to_str ( type2_i (dur.durlog_i_) );
else if (dur.durlog_i_ == -1)
str = "\\breve";
else if (dur.durlog_i_ == -2)
str = "\\longa";
- str += String ('.', dur.dots_i_);
+ str += to_str ('.', dur.dots_i_);
if (dur.plet_b ())
- str += String ("*") + String (dur.plet_.iso_i_)
- + String ("/") + String (dur.plet_.type_i_);
+ str += String ("*") + to_str (dur.plet_.iso_i_)
+ + String ("/") + to_str (dur.plet_.type_i_);
return str;
}
@@ -47,12 +47,11 @@ Duration_convert::dur2ticks_i (Duration dur)
return dur2_mom (dur) * Moment (Duration::division_1_i_s);
}
-
int
Duration_convert::i2_type (int i)
{
int t=0;
- while (!(i & 1)) {
+ while (i && !(i & 1)) {
i >>= 1;
t++;
}
diff --git a/lib/duration-iter.cc b/lib/duration-iter.cc
index b1af3fd8dd..eac7a759ab 100644
--- a/lib/duration-iter.cc
+++ b/lib/duration-iter.cc
@@ -3,8 +3,8 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <assert.h>
#include "duration-convert.hh"
diff --git a/lib/duration.cc b/lib/duration.cc
index 95e056b789..7bdf8d00dc 100644
--- a/lib/duration.cc
+++ b/lib/duration.cc
@@ -3,8 +3,8 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
- Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+ Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <assert.h>
@@ -82,3 +82,4 @@ Duration::plet_b ()
{
return !plet_.unit_b ();
}
+
diff --git a/lib/include/Makefile b/lib/include/Makefile
index 43a98084f3..5dba771ec9 100644
--- a/lib/include/Makefile
+++ b/lib/include/Makefile
@@ -1,17 +1,8 @@
# lib/include/Makefile
-# subdir level:
-#
depth = ../..
-#
-# identify module:
-#
-MODULE_NAME = lilypond
-
-# generic stuff/Makefile
-#
-
-include ./$(depth)/make/Include.make
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C++.make
diff --git a/lib/include/binary-source-file.hh b/lib/include/binary-source-file.hh
index 33ee6bd784..a6f252a1da 100644
--- a/lib/include/binary-source-file.hh
+++ b/lib/include/binary-source-file.hh
@@ -1,7 +1,7 @@
//
// binary-source-file.hh -- declare Binary_source_file
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#ifndef BINARY_SOURCE_FILE_HH
#define BINARY_SOURCE_FILE_HH
diff --git a/lib/include/duration-convert.hh b/lib/include/duration-convert.hh
index 82e102d4c8..fc7ee51d97 100644
--- a/lib/include/duration-convert.hh
+++ b/lib/include/duration-convert.hh
@@ -3,7 +3,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -12,7 +12,7 @@
#include "duration.hh"
#include "string.hh"
//#include "array.hh"
-#include "varray.hh"
+#include "array.hh"
/**
Duration_convert handles all conversions to -n fro Duration (dur).
diff --git a/lib/include/duration.hh b/lib/include/duration.hh
index 59c968f751..367672ac4e 100644
--- a/lib/include/duration.hh
+++ b/lib/include/duration.hh
@@ -1,9 +1,9 @@
/*
- duration.hh -- declare Duration Plet
-
+ duration.hh -- declare Duration
+
source file of the LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
@@ -17,7 +17,7 @@
#include "plet.hh"
/**
- Class to handle "musical" durations. This means: balltype 1,2,4,etc. and dots.
+ Handle "musical" durations. This means: balltype 1,2,4,etc. and dots.
(dur)
*/
diff --git a/lib/include/file-storage.hh b/lib/include/file-storage.hh
index b2e679bb57..4e6fca65ef 100644
--- a/lib/include/file-storage.hh
+++ b/lib/include/file-storage.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lib/include/input.hh b/lib/include/input.hh
index ac0780b21d..afdf6eff22 100644
--- a/lib/include/input.hh
+++ b/lib/include/input.hh
@@ -3,7 +3,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lib/include/mapped-file-storage.hh b/lib/include/mapped-file-storage.hh
index 506bbc978f..50b12f5178 100644
--- a/lib/include/mapped-file-storage.hh
+++ b/lib/include/mapped-file-storage.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lib/include/out/dummy.dep b/lib/include/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/lib/include/out/dummy.dep
+++ /dev/null
diff --git a/lib/include/plet.hh b/lib/include/plet.hh
index de32eb1753..05b6297704 100644
--- a/lib/include/plet.hh
+++ b/lib/include/plet.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lib/include/simple-file-storage.hh b/lib/include/simple-file-storage.hh
index 4f4bd59199..1fe0136c50 100644
--- a/lib/include/simple-file-storage.hh
+++ b/lib/include/simple-file-storage.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lib/include/source-file.hh b/lib/include/source-file.hh
index 0983a829a4..ee671c785a 100644
--- a/lib/include/source-file.hh
+++ b/lib/include/source-file.hh
@@ -1,7 +1,7 @@
//
// source-file.hh -- declare Source_file
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#ifndef SOURCE_FILE_HH
#define SOURCE_FILE_HH
@@ -20,6 +20,7 @@ public:
/** Ugh! filename gets changed! The path to the opened file may
change, since it might be searched in multiple directories. */
Source_file (String filename_str_r );
+ Source_file (String name_str, String data_str);
virtual ~Source_file ();
char const* ch_C () const;
diff --git a/lib/include/source.hh b/lib/include/source.hh
index f6a824fa70..395a9d8bb4 100644
--- a/lib/include/source.hh
+++ b/lib/include/source.hh
@@ -1,7 +1,7 @@
//
// source.hh -- part of LilyPond
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#ifndef SOURCE_HH
#define SOURCE_HH
@@ -16,12 +16,12 @@ public:
Source_file * get_file_l (String &filename );
Source_file* sourcefile_l (char const* ch_C );
+ void add (Source_file* sourcefile_p );
void set_path (File_path*p_C);
void set_binary (bool);
private:
const File_path * path_C_;
- void add (Source_file* sourcefile_p );
Pointer_list<Source_file*> sourcefile_p_list_;
bool binary_b_ ;
};
diff --git a/lib/include/windhoos-suck-suck-suck-thank-you-cygnus.hh b/lib/include/thank-you-cygnus.hh
index 95d60bfc33..95d60bfc33 100644
--- a/lib/include/windhoos-suck-suck-suck-thank-you-cygnus.hh
+++ b/lib/include/thank-you-cygnus.hh
diff --git a/lib/include/warn.hh b/lib/include/warn.hh
index 27bc4ff759..e22d320f33 100644
--- a/lib/include/warn.hh
+++ b/lib/include/warn.hh
@@ -3,7 +3,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lib/input.cc b/lib/input.cc
index 46ddcb2ca6..4283783f8d 100644
--- a/lib/input.cc
+++ b/lib/input.cc
@@ -3,7 +3,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "proto.hh"
#include "input.hh"
@@ -94,7 +94,7 @@ Input::error (String s) const
void
Input::non_fatal_error (String s) const
{
- message (_ ("Non fatal error: ")+ s);
+ message (_ ("Non fatal error: ") + s);
}
String
Input::location_str () const
@@ -102,5 +102,5 @@ Input::location_str () const
if (source_file_l_)
return source_file_l_->file_line_column_str (defined_ch_C_);
else
- return _("(location unknown)");
+ return "(" + _ ("position unknown") + ")";
}
diff --git a/lib/mapped-file-storage.cc b/lib/mapped-file-storage.cc
index 17d451d1a6..f9e6d88cbb 100644
--- a/lib/mapped-file-storage.cc
+++ b/lib/mapped-file-storage.cc
@@ -5,8 +5,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>.
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>.
Nextstep fixes by tiggr@ics.ele.tue.nl
*/
@@ -71,7 +71,7 @@ Mapped_file_storage::map ()
data_caddr_ = (caddr_t)mmap ((void*)0, size_off_, PROT_READ, MAP_SHARED, fildes_i_, 0);
if ((int)data_caddr_ == -1)
- warning (String (_ ("can't map: error no: ")) + strerror (errno));
+ warning (_ ("can't map file") + ": " + strerror (errno));
#endif
}
@@ -84,7 +84,8 @@ Mapped_file_storage::open (String name_str)
if (fildes_i_ == -1)
{
- warning (String (_ ("can't open: ")) + name_str + String (": ") + strerror (errno));
+ warning (_f ("can't open file: `%s\'", name_str)
+ + ": " + strerror (errno));
return;
}
diff --git a/lib/moment.cc b/lib/moment.cc
index d29ce9065b..0f49d0aa21 100644
--- a/lib/moment.cc
+++ b/lib/moment.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <iostream.h>
diff --git a/lib/out/dummy.dep b/lib/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/lib/out/dummy.dep
+++ /dev/null
diff --git a/lib/plet.cc b/lib/plet.cc
index 9a098cc4c9..b27ecc9c0b 100644
--- a/lib/plet.cc
+++ b/lib/plet.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "plet.hh"
diff --git a/lib/simple-file-storage.cc b/lib/simple-file-storage.cc
index 561ab838c9..1fd7ea7fc9 100644
--- a/lib/simple-file-storage.cc
+++ b/lib/simple-file-storage.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <stdio.h>
@@ -13,14 +13,13 @@
#endif
#include "simple-file-storage.hh"
-#include "varray.hh"
+#include "array.hh"
#include "string.hh"
#include "warn.hh"
void
Simple_file_storage::load_stdin ()
{
- int data_len = 0;
len_i_ = 0;
int c;
@@ -42,7 +41,7 @@ Simple_file_storage::load_file (String s)
if (!f)
{
- warning (_ ("can't open file `") + s + "'");
+ warning (_f ("can't open file: `%s\'", s));
return ;
}
@@ -54,8 +53,7 @@ Simple_file_storage::load_file (String s)
ret = fread (data_p_, sizeof (char), len_i_, f);
if (ret!=len_i_)
- warning (_ ("Huh? got ") + String (ret) + _ (", expected ")
- + String (len_i_) + _ (" characters"));
+ warning (_f ("Huh? got %d, expected %d characters", ret, len_i_));
fclose (f);
}
@@ -80,7 +78,7 @@ Simple_file_storage::Simple_file_storage (String s)
data_p_ = 0;
len_i_ = 0;
- if (!s.length_i ())
+ if (!s.length_i () || (s == "-"))
load_stdin ();
else
load_file (s);
diff --git a/lib/source-file.cc b/lib/source-file.cc
index 14fabe7959..5403abb517 100644
--- a/lib/source-file.cc
+++ b/lib/source-file.cc
@@ -3,8 +3,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
- & Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+ & Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -15,9 +15,10 @@
#include "proto.hh"
#include "plist.hh"
#include "warn.hh"
-#include "windhoos-suck-suck-suck-thank-you-cygnus.hh"
+#include "thank-you-cygnus.hh"
#include "source-file.hh"
#include "simple-file-storage.hh"
+#include "string-storage.hh"
Source_file::Source_file (String filename_str)
{
@@ -26,6 +27,13 @@ Source_file::Source_file (String filename_str)
storage_p_ = new Simple_file_storage (filename_str);
}
+Source_file::Source_file (String name_str, String data_str)
+{
+ name_str_ = name_str;
+ istream_p_ = 0;
+ storage_p_ = new String_storage (data_str);
+}
+
istream*
Source_file::istream_l ()
{
@@ -51,10 +59,10 @@ String
Source_file::file_line_column_str (char const *context_ch_C) const
{
if (!ch_C ())
- return _ ("(unknown)");
+ return "(" + _ ("position unknown") + ")";
else
- return name_str () + ":" + String (line_i (context_ch_C))
- + ":" + String (char_i (context_ch_C));
+ return name_str () + ":" + to_str (line_i (context_ch_C))
+ + ":" + to_str (char_i (context_ch_C));
}
String
@@ -144,14 +152,14 @@ String
Source_file::error_str (char const* pos_ch_C) const
{
if (!in_b (pos_ch_C))
- return _ ("(position unknown)");
+ return "(" + _ ("position unknown") + ")";
int ch_i = char_i (pos_ch_C);
String line = line_str (pos_ch_C);
String context = line.left_str (ch_i)
- + String ('\n')
- + String (' ', column_i (pos_ch_C))
- + line.cut (ch_i, INT_MAX);
+ + to_str ('\n')
+ + to_str (' ', column_i (pos_ch_C))
+ + line.cut_str (ch_i, INT_MAX);
return context;
}
diff --git a/lib/source.cc b/lib/source.cc
index 5d384f757e..81423bb1cb 100644
--- a/lib/source.cc
+++ b/lib/source.cc
@@ -3,7 +3,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -46,14 +46,14 @@ Sources::set_path (File_path *f_C)
Source_file*
Sources::get_file_l (String &file_str) //UGH
{
- if (path_C_)
+ if ((file_str != "-") && path_C_)
{
String file_str_o = path_C_->find (file_str);
if ((file_str_o == "") && (file_str != ""))
return 0;
file_str = file_str_o;
}
- Source_file * f_p= (!binary_b_) ?
+ Source_file * f_p = (!binary_b_) ?
new Source_file (file_str) : new Binary_source_file (file_str);
add (f_p);
return f_p;
diff --git a/lib/template.cc b/lib/template.cc
index 4ebec57399..7b7a3c229a 100644
--- a/lib/template.cc
+++ b/lib/template.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "config.hh"
diff --git a/lib/windhoos-suck-suck-suck-thank-you-cygnus.cc b/lib/thank-you-cygnus.cc
index c0aaab91ff..22cbb9d834 100644
--- a/lib/windhoos-suck-suck-suck-thank-you-cygnus.cc
+++ b/lib/thank-you-cygnus.cc
@@ -8,7 +8,7 @@
#include <sys/types.h>
#include <sys/mman.h>
#include <winbase.h>
-#include "windhoos-suck-suck-suck-thank-you-cygnus.hh"
+#include "thank-you-cygnus.hh"
/*
HANDLE CreateFileMapping (
diff --git a/lib/warn.cc b/lib/warn.cc
index afdbd97f4f..afc6f7b9ce 100644
--- a/lib/warn.cc
+++ b/lib/warn.cc
@@ -4,7 +4,7 @@
void
error (String s)
{
- cerr << _ ("error: ") << s << "\n";
+ cerr << _ ("error: ") << s << '\n';
exit (1);
}
@@ -12,7 +12,7 @@ error (String s)
void
non_fatal_error (String s)
{
- cerr << _ ("error: ") << s << "\n";
+ cerr << _ ("error: ") << s << '\n';
}
void
diff --git a/lily/Makefile b/lily/Makefile
index d94ae0d93a..7da45565b8 100644
--- a/lily/Makefile
+++ b/lily/Makefile
@@ -1,48 +1,30 @@
-# project LilyPond -- the musical typesetter
# title makefile for lilypond
# file lily/Makefile
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-#
-
-# subdir level:
-#
+
depth = ..
-#
-# identify module:
-#
NAME = lilypond
SUBDIRS = include
+EXTRA_DIST_FILES = VERSION
+MODULE_LIBS=$(depth)/lib $(depth)/flower
+
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C++.make
+include $(stepdir)/Executable.make
-# generic variables:
include Stable.make
-include ./$(depth)/make/Variables.make
include VERSION
-# list of distribution files:
-#
-EXTRA_DISTFILES = VERSION
-MODULE_LIBDEPS= check-flower-deps check-lib-deps
-MODULE_LIBES= -llily -lflower
-
-# main target of this module:
-#
-default: $(EXECUTABLE)
-include ./$(depth)/make/Files.make
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-
# force these: Make can't know these have to be generated in advance
my-lily-lexer.cc: $(outdir)/parser.hh
-$(outdir)/lexer.cc: $(outdir)/parser.hh
+$(outdir)/lexer.o: $(outdir)/parser.hh
-EXECUTABLES=lilypond
-include $(depth)/make/Executable.make
-
$(outdir)/lily-version.o: $(outdir)/version.hh
+$(outdir)/main.o: $(outdir)/BLURB.hh $(outdir)/COPERTINA.hh $(outdir)/FLAPTEKST.hh
+
+
+VERSION: $(depth)/VERSION
+ cp $< $@
diff --git a/lily/VERSION b/lily/VERSION
index c7309d695e..522667c82e 100644
--- a/lily/VERSION
+++ b/lily/VERSION
@@ -1,5 +1,9 @@
-MAJOR_VERSION=0
-MINOR_VERSION=1
-PATCH_LEVEL=65
+PACKAGE_NAME=LilyPond
+MAJOR_VERSION=1
+MINOR_VERSION=0
+PATCH_LEVEL=1
MY_PATCH_LEVEL=
+# use the above to send patches, always empty for released version:
+# please don't move these comments up; the patch should fail if
+# the previous version was wrong.
diff --git a/lily/abbrev.cc b/lily/abbrev.cc
index 977c1307c6..323bf8ddd8 100644
--- a/lily/abbrev.cc
+++ b/lily/abbrev.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -13,7 +13,7 @@
#include "paper-def.hh"
#include "lookup.hh"
#include "stem.hh"
-#include "dimen.hh"
+#include "dimension.hh"
Abbreviation::Abbreviation ()
{
@@ -30,63 +30,108 @@ Abbreviation::do_print () const
Molecule*
Abbreviation::brew_molecule_p () const
{
- Real dy = paper ()->interbeam_f (stem_l_->mult_i_);
- Real w = 1.5 * paper ()->lookup_l ()->ball (2).dim_.x ().length ();
+ 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;
- Real slope_f = paper ()->internote_f () / 4;
+ Real slope_f = internote_f / 4 / internote_f;
if (stem_l_ && stem_l_->beam_l_) {
- // huh?
- slope_f = 2 * stem_l_->beam_l_->slope_f_;
+ slope_f = stem_l_->beam_l_->slope_f_;
// ugh, rather calc from Abbreviation_req
beams_i = stem_l_->beams_right_i_ >? stem_l_->beams_left_i_;
- }
- paper ()->lookup_l ()->beam (slope_f, 20 PT, 1 PT);
+ }
+ Real sl = slope_f * internote_f;
- Atom a (paper ()->lookup_l ()->beam (slope_f, w, .48 * interline_f));
+ Atom a (lookup_l ()->beam (sl, w, beam_f));
a.translate (Offset (-w/2, w / 2 * slope_f));
Molecule *beams= new Molecule;
for (int i = 0; i < abbrev_flags_i_; i++)
{
Atom b (a);
- b.translate_axis (dy * i, Y_AXIS);
- beams->add (b);
+ b.translate_axis (interbeam_f * i, Y_AXIS);
+ beams->add_atom (b);
}
+#define EGCS_ICE
+#ifndef EGCS_ICE
beams->translate_axis (-beams->extent ()[Y_AXIS].center (), Y_AXIS);
+#else
+ beams->translate_axis (-(beams->extent ()[Y_AXIS].min () +
+ beams->extent ()[Y_AXIS].max ()) / 2 , Y_AXIS);
+#endif
if (stem_l_)
- {
- /* Try to be in the middle of the open part of the stem and
- between on the staff.
-
- (urgh)
- */
- Direction sd = stem_l_->dir_;
- Interval empty_stem (stem_l_->chord_start_f () * sd ,
- (stem_l_->stem_end_f ()* sd) - beams_i * dy);
- empty_stem *= sd;
-
- Interval instaff = empty_stem;
- instaff.intersect (interline_f * Interval (-2,2));
- if (instaff.empty_b ())
- instaff = empty_stem;
-
- instaff.print ();
- beams->translate (Offset(stem_l_->hpos_f () - hpos_f (),
- instaff.center ()));
+ {
+ if (stem_l_->beam_l_)
+ {
+ beams->translate (Offset(stem_l_->hpos_f () - hpos_f (),
+ stem_l_->stem_end_f () * internote_f -
+ stem_l_->beam_l_->dir_ * beams_i * interbeam_f));
+ }
+ else
+#if 1
+ {
+ /*
+ Beams should intersect one beamthickness below staff end
+ */
+ Real dy = - beams->extent ()[Y_AXIS].length () / 2 * stem_l_->dir_;
+ dy /= internote_f;
+ dy += stem_l_->stem_end_f ();
+ dy *= internote_f;
+// urg: can't: stem should be stetched first
+// dy -= paper ()->beam_thickness_f () * stem_l_->dir_;
+ beams->translate (Offset(stem_l_->hpos_f () - hpos_f (), dy));
+ }
+#else
+ {
+ /*
+ urg: this is wrong, even if coded correctly
+
+ Try to be in the middle of the open part of the stem and
+ between on the staff.
+
+ (urgh)
+ */
+ Direction sd = stem_l_->dir_;
+ // watch out: chord_start_f is (the only one) not in dim(internote)
+ Interval empty_stem (stem_l_->chord_start_f () / internote_f * sd
+ + interline_f, (stem_l_->stem_end_f ()* sd));
+ empty_stem *= sd;
+
+ Interval instaff = empty_stem;
+ /*
+ huh? i don't understand, hw
+ what about:
+ .fly= \stemup d'''2:16
+ instaff.intersect (Interval (-4,4));
+ */
+ // hmm, let's try
+ if (stem_l_->get_default_dir () == stem_l_->dir_)
+ instaff.intersect (Interval (-4,4));
+
+ if (instaff.empty_b ())
+ instaff = empty_stem;
+
+ instaff.print ();
+ instaff *= internote_f;
+ beams->translate (Offset(stem_l_->hpos_f () - hpos_f (),
+ instaff.center ()));
+ }
+#endif
}
return beams;
}
void
-Abbreviation::do_substitute_dependent (Score_elem*o, Score_elem*n)
+Abbreviation::do_substitute_dependent (Score_element*o, Score_element*n)
{
if (stem_l_ == o)
- stem_l_ = n ? (Stem*)n->item () : 0;
+ stem_l_ = n ? (Stem*)n->access_Item () : 0;
}
diff --git a/lily/abbreviation-beam-engraver.cc b/lily/abbreviation-beam-engraver.cc
index f2a69f5504..67c09cb7fc 100644
--- a/lily/abbreviation-beam-engraver.cc
+++ b/lily/abbreviation-beam-engraver.cc
@@ -3,8 +3,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "duration-convert.hh"
@@ -27,11 +27,11 @@ Abbreviation_beam_engraver::Abbreviation_beam_engraver ()
bool
Abbreviation_beam_engraver::do_try_request (Request*r)
{
- Musical_req* mus_l = r->musical ();
+ Musical_req* mus_l = r->access_Musical_req ();
if (!mus_l)
return false;
- Abbreviation_beam_req * b = mus_l->abbrev_beam ();
+ Abbreviation_beam_req * b = mus_l->access_Abbreviation_beam_req ();
if (!b)
return false;
@@ -52,7 +52,7 @@ Abbreviation_beam_engraver::do_process_requests ()
{
if (!abeam_p_ && span_reqs_drul_[LEFT]) {
abeam_p_ = new Abbreviation_beam;
- announce_element (Score_elem_info (abeam_p_, span_reqs_drul_[LEFT]));
+ announce_element (Score_element_info (abeam_p_, span_reqs_drul_[LEFT]));
}
}
@@ -80,12 +80,12 @@ Abbreviation_beam_engraver::do_removal_processing ()
}
void
-Abbreviation_beam_engraver::acknowledge_element (Score_elem_info i)
+Abbreviation_beam_engraver::acknowledge_element (Score_element_info i)
{
if (!abeam_p_ || !i.elem_l_->is_type_b (Stem::static_name ()))
return;
- Stem* s = (Stem*)i.elem_l_->item ();
+ Stem* s = (Stem*)i.elem_l_->access_Item ();
int type_i = span_reqs_drul_[LEFT]->type_i_;
s->flag_i_ = intlog2 (type_i) - 2;
@@ -98,5 +98,5 @@ Abbreviation_beam_engraver::acknowledge_element (Score_elem_info i)
if (s->type_i () != 1) // no abbrev gaps on half note
s->beam_gap_i_ = s->flag_i_ - ((s->type_i () >? 2) - 2);
- abeam_p_->add (s);
+ abeam_p_->add_stem (s);
}
diff --git a/lily/abbreviation-beam.cc b/lily/abbreviation-beam.cc
index 6637d19f0f..91f4ff21f9 100644
--- a/lily/abbreviation-beam.cc
+++ b/lily/abbreviation-beam.cc
@@ -3,14 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "p-col.hh"
-#include "varray.hh"
+#include "array.hh"
#include "proto.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "abbreviation-beam.hh"
#include "misc.hh"
#include "debug.hh"
diff --git a/lily/afm-reader.cc b/lily/afm-reader.cc
new file mode 100644
index 0000000000..ba3adae70f
--- /dev/null
+++ b/lily/afm-reader.cc
@@ -0,0 +1,154 @@
+/*
+ afm-reader.cc -- implement Adobe_font_metric_file
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "direction.hh"
+#include "afm.hh"
+#include "data-file.hh"
+#include "string-convert.hh"
+
+
+Box
+parse_box (Array<String> a)
+{
+ Box b;
+ int i=0;
+ b[X_AXIS][SMALLER] = a[i++].value_f ();
+ b[Y_AXIS][SMALLER] = a[i++].value_f ();
+ b[X_AXIS][BIGGER] = a[i++].value_f ();
+ b[Y_AXIS][BIGGER] = a[i++].value_f ();
+ return b;
+}
+
+String
+strip_leading_white (String c)
+{
+ int i=0;
+ while (c[i] == ' ')
+ i++;
+ c = c.cut_str (i, INT_MAX);
+ return c;
+}
+
+Adobe_font_char_metric
+read_char_metric (String s)
+{
+ Adobe_font_char_metric char_metric;
+ Array<String> a= String_convert::split_arr (s, ';');
+ for (int i=0; i < a.size (); i++)
+ {
+ String c = strip_leading_white (a[i]);
+
+ Array<String> b = String_convert::split_arr (c, ' ');
+ if (b[0] == "C")
+ char_metric.C_ = b[1].value_i ();
+ if (b[0] == "WX")
+ char_metric.WX_ = b[1].value_f ();
+ if (b[0] == "N")
+ char_metric.N_ = strip_leading_white (b[1]);
+ if (b[0] == "B")
+ char_metric.B_ = parse_box (b.slice (1, b.size()));
+ }
+ return char_metric;
+}
+
+void
+read_char_metrics (Array<Adobe_font_char_metric> &mets, Data_file &input)
+{
+ while (!input.eof_b ())
+ {
+ input.gobble_leading_white ();
+ String s= input.get_line ();
+ if (s == "EndCharMetrics")
+ return ;
+ mets.push (read_char_metric (s));
+ }
+}
+
+#define READSTRING(k) if (key == #k) { \
+ afm.k ## _ = input.get_line (); continue; }
+#define READBOX(b) if (key == #b) { \
+ afm.b ## _ = read_box (input); continue; }
+#define READREAL(r) if (key == #r) { \
+ afm.r ## _ = read_real (input); continue; }
+
+Real
+read_real(Data_file &d)
+{
+ String s = d.get_word ();
+ d.gobble_white ();
+ return s.value_f ();
+}
+
+
+Box
+read_box ( Data_file &d)
+{
+ Box b;
+ b[X_AXIS][SMALLER] = read_real (d);
+ b[Y_AXIS][SMALLER] = read_real (d);
+ b[X_AXIS][BIGGER] = read_real (d);
+ b[Y_AXIS][BIGGER] = read_real (d);
+ return b;
+}
+
+Adobe_font_metric
+read_afm (String fn)
+{
+ Data_file input (fn);
+
+ assert (!input.eof_b ());
+
+ Adobe_font_metric afm;
+
+ while (!input.eof_b ())
+ {
+ input.gobble_leading_white ();
+ String w = input.get_word ();
+ if (w == "StartFontMetrics")
+ break;
+ input.get_line ();
+ }
+
+ while (!input.eof_b ())
+ {
+ input.gobble_leading_white ();
+ String key = input.get_word ();
+ if (key == "Comment")
+ continue;
+
+ READSTRING(FontName);
+ READSTRING(FullName);
+ READSTRING(FamilyName);
+ READSTRING(Weight);
+ READSTRING(Version);
+ READSTRING(Notice);
+ READSTRING(EncodingScheme);
+ READREAL(ItalicAngle);
+ READREAL(UnderlineThickness);
+ READREAL(UnderlinePosition);
+ READBOX(FontBBox);
+ if (key == "StartCharMetrics")
+ {
+ input.get_line ();
+ read_char_metrics (afm.char_metrics_, input);
+ }
+ if (key == "EndFontMetrics")
+ break;
+
+ }
+
+ /*
+ read to EOF
+ */
+ input.gulp ();
+
+ return afm;
+}
+
+
diff --git a/lily/afm.cc b/lily/afm.cc
new file mode 100644
index 0000000000..2935a8a967
--- /dev/null
+++ b/lily/afm.cc
@@ -0,0 +1,118 @@
+/*
+ afm.cc -- implement Adobe_font_metric
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "afm.hh"
+#include "box.hh"
+#include "direction.hh"
+#include "debug.hh"
+
+Box &
+Adobe_font_char_metric::bbox ()
+{
+ return B_;
+}
+
+String &
+Adobe_font_char_metric::name ()
+{
+ return N_;
+
+}
+
+int &
+Adobe_font_char_metric::code ()
+{
+ return C_;
+}
+
+Real &
+Adobe_font_char_metric::width ()
+{
+ return WX_;
+}
+
+Adobe_font_char_metric::Adobe_font_char_metric ()
+{
+ C_ = 0;
+}
+
+Adobe_font_metric::Adobe_font_metric ()
+{
+ ItalicAngle_ = 0.0;
+ IsFixedPitch_ = false;
+ UnderlinePosition_ =0.;
+ UnderlineThickness_=0.;
+}
+
+
+#define APPEND_CHAR_METRIC_ELT(k) outstr += to_str (#k) + " " + to_str (k ## _) + "; "
+
+String
+box_str (Box b)
+{
+ return to_str (b[X_AXIS][SMALLER]) + " " +
+ to_str(b[Y_AXIS][SMALLER]) + " " +
+ to_str (b[X_AXIS][BIGGER]) + " "+
+ to_str (b[Y_AXIS][BIGGER]);
+}
+
+#define APPEND_BOX(k) outstr += to_str (#k) + " " + box_str (k ## _) + ";"
+
+String
+Adobe_font_char_metric::str () const
+{
+ String outstr ;
+
+ APPEND_CHAR_METRIC_ELT (C);
+ APPEND_CHAR_METRIC_ELT(N);
+ APPEND_CHAR_METRIC_ELT(WX);
+
+ APPEND_BOX(B);
+ return outstr + "\n";
+}
+
+#define WRITESTRING(k) outstr += String (#k) + " " + to_str (k ## _) + "\n"
+
+String
+Adobe_font_metric::str () const
+{
+ String outstr;
+ WRITESTRING(FontName);
+ WRITESTRING(FullName);
+ WRITESTRING(FamilyName);
+ WRITESTRING(Weight);
+ WRITESTRING(Version);
+ WRITESTRING(Notice);
+ WRITESTRING(EncodingScheme);
+ WRITESTRING(ItalicAngle);
+ WRITESTRING(UnderlineThickness);
+ WRITESTRING(UnderlinePosition);
+ outstr += "FontBBox " + box_str (FontBBox_) + "\n";
+
+ for (int i=0; i < char_metrics_.size (); i++)
+ outstr += char_metrics_[i].str ();
+
+ return outstr;
+}
+
+/*
+ UGH. should have hashtable.
+ */
+Adobe_font_char_metric
+Adobe_font_metric::find_char (String nm) 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()));
+
+ Adobe_font_char_metric a;
+ return a;
+}
diff --git a/lily/align-element.cc b/lily/align-element.cc
new file mode 100644
index 0000000000..4f80841a66
--- /dev/null
+++ b/lily/align-element.cc
@@ -0,0 +1,187 @@
+/*
+ align-elem.cc -- implement Align_elem
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "align-element.hh"
+#include "interval.hh"
+#include "direction.hh"
+
+
+struct Align_element_content {
+ Score_element * elem_l_;
+ int priority_i_;
+
+ static int compare (Align_element_content const &h1,
+ Align_element_content const &h2)
+ {
+ return h1.priority_i_ - h2.priority_i_;
+ }
+ Align_element_content (Score_element *elem_l, int p)
+ {
+ priority_i_ = p;
+ elem_l_ = elem_l;
+ }
+ Align_element_content () {
+ elem_l_ = 0;
+ priority_i_ = 0;
+ }
+};
+
+
+
+void
+Align_element::add_element (Score_element*el_l)
+{
+ int p = priority_i_arr_.size ();
+ add_element_priority (el_l, p);
+}
+
+void
+Align_element::add_element_priority (Score_element *el, int p)
+{
+ assert (! contains_b (el));
+ elem_l_arr_.push (el);
+ priority_i_arr_.push (p);
+ add_dependency (el);
+}
+
+void
+Align_element::do_substitute_dependency (Score_element*o,
+ Score_element*n)
+{
+ int i;
+ while ((i = elem_l_arr_.find_i (o))>=0)
+ if (n)
+ elem_l_arr_[i] = n;
+ else
+ elem_l_arr_.del (i);
+
+ if (o == center_l_)
+ {
+ center_l_ = n;
+ }
+}
+
+/**
+ Align elements top to bottom.
+ The first element has its top at y = 0.0 afterwards
+
+ TODO configurable, like Horizontal_align_item
+
+ TODO should parametrise in direction and coordinate.
+ */
+void
+Align_element::do_post_processing()
+{
+ if (axis_ == Y_AXIS)
+ do_side_processing ();
+}
+
+void
+Align_element::do_pre_processing ()
+{
+ if (axis_ == X_AXIS)
+ do_side_processing ();
+}
+
+void
+Align_element::do_side_processing ()
+{
+ sort_elements ();
+ Array<Interval> dims;
+
+ for (int i=0; i < elem_l_arr_.size(); i++)
+ {
+ Interval y = elem_l_arr_[i]->extent(axis_) ;
+ if (y.empty_b())
+ y = Interval (0,0);
+
+ dims.push (y);
+ }
+
+ Real where_f=0;
+ Real center_f = 0.0;
+ for (int i=0 ; i < elem_l_arr_.size(); i++)
+ {
+ Real dy = - stacking_dir_ * dims[i][-stacking_dir_];
+ if (i)
+ dy += stacking_dir_ * dims[i-1][stacking_dir_];
+
+ if (i)
+ {
+ dy = (dy >? threshold_interval_[SMALLER] )
+ <? threshold_interval_[BIGGER];
+ }
+
+
+ if (!i && align_dir_ == LEFT)
+ center_f = where_f;
+ else if (align_dir_ == CENTER && elem_l_arr_[i] == center_l_)
+ center_f = where_f;
+
+ where_f += stacking_dir_ * dy;
+
+
+ elem_l_arr_[i]->translate_axis (where_f, axis_);
+ }
+
+ if (align_dir_ == RIGHT)
+ center_f = where_f;
+
+ if (center_f)
+ for (int i=0 ; i < elem_l_arr_.size(); i++)
+ elem_l_arr_[i]->translate_axis (- center_f, axis_);
+}
+
+Align_element::Align_element()
+{
+ threshold_interval_ = Interval (0, Interval::infinity ());
+ transparent_b_ = true;
+ set_empty (true);
+ stacking_dir_ = DOWN;
+ align_dir_ = LEFT;
+ axis_ = X_AXIS;
+ center_l_ =0;
+}
+
+
+bool
+Align_element::contains_b (Score_element const *e) const
+{
+ return elem_l_arr_.find_l (e);
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Align_element, Score_element);
+
+void
+Align_element::sort_elements ()
+{
+ Array<Align_element_content> content;
+ for (int i =0; i < elem_l_arr_.size(); i++)
+ content.push (Align_element_content (elem_l_arr_[i], priority_i_arr_[i]));
+ content.sort (Align_element_content::compare);
+
+ elem_l_arr_.clear();
+ priority_i_arr_.clear();
+
+ for (int i =0; i < content.size(); i++)
+ {
+ elem_l_arr_.push (content[i].elem_l_);
+ priority_i_arr_.push (content[i].priority_i_);
+ }
+}
+
+void
+Align_element::do_print () const
+{
+#if 0
+ DOUT << "contains: ";
+ for (int i=0 ; i < item_l_arr_.size(); i++)
+ DOUT << item_l_arr_[i]->name () << ", ";
+#endif
+}
diff --git a/lily/atom.cc b/lily/atom.cc
index eba9660c92..48b5c73720 100644
--- a/lily/atom.cc
+++ b/lily/atom.cc
@@ -3,14 +3,16 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
+
+
#include "atom.hh"
#include "tex.hh"
#include "interval.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "string.hh"
-#include "varray.hh"
+#include "array.hh"
#include "debug.hh"
#include "main.hh"
@@ -26,8 +28,8 @@ Atom::check_infinity_b ()const
Axis ax = (Axis)a;
if (abs (off_[ax]) >= 100 CM)
{
- warning (_("ridiculous dimension ") + axis_name_str (ax) + ", "
- +print_dimen(off_[ax]));
+ warning (_f ("ridiculous dimension: %s, %s", axis_name_str (ax),
+ print_dimen(off_[ax])));
if (experimental_features_global_b)
assert (false);
@@ -45,11 +47,11 @@ void
Atom::print() const
{
#ifndef NPRINT
- DOUT << "texstring: " <<tex_<<"\n";
+ DOUT << "texstring: " << tex_ << '\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
@@ -80,26 +82,18 @@ Atom::Atom (String s, Box b)
String
Atom::str() const
{
- return "Atom (\'"+tex_+"\', (" + dim_.x().str () + ", "
+ return String ("Atom (\'") + tex_ + "\', (" + dim_.x().str () + ", "
+ dim_.y ().str () + "))";
}
-
-String
-Atom::TeX_string() const
+Offset
+Atom::offset () const
{
- String tex_str = tex_;
- if (check_infinity_b ())
- tex_str += "\errormark";
-
- // whugh.. Hard coded...
- String s ("\\placebox{");
- s += print_dimen (off_[Y_AXIS])+"}{";
- s += print_dimen (off_[X_AXIS]) + "}{";
- s += tex_str + "}";
- return s;
+ return off_;
}
+
+
void
Atom::translate_axis (Real r, Axis a)
{
diff --git a/lily/audio-column.cc b/lily/audio-column.cc
index 2f5ad611a6..5b6717c015 100644
--- a/lily/audio-column.cc
+++ b/lily/audio-column.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "audio-column.hh"
@@ -19,7 +19,7 @@ Audio_column::Audio_column (Moment at_mom)
}
void
-Audio_column::add (Audio_item* l)
+Audio_column::add_audio_item (Audio_item* l)
{
audio_item_l_list_.bottom().add (l);
l->audio_column_l_ = this;
diff --git a/lily/audio-element.cc b/lily/audio-element.cc
index 18f265c46e..bffe351af4 100644
--- a/lily/audio-element.cc
+++ b/lily/audio-element.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "audio-element.hh"
diff --git a/lily/audio-item.cc b/lily/audio-item.cc
index 81b0285ba6..71757314a7 100644
--- a/lily/audio-item.cc
+++ b/lily/audio-item.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "debug.hh"
#include "audio-item.hh"
@@ -42,9 +42,10 @@ Audio_key::midi_item_p()
}
IMPLEMENT_IS_TYPE_B1 (Audio_key, Audio_item);
-Audio_note::Audio_note (Request* req_l)
+Audio_note::Audio_note (Request* req_l, int transposing_i)
: Audio_item (req_l)
{
+ transposing_i_ = transposing_i;
}
Midi_item*
@@ -69,17 +70,17 @@ Audio_tempo::midi_item_p()
IMPLEMENT_IS_TYPE_B1(Audio_tempo, Audio_item);
-Audio_meter::Audio_meter (Request* req_l)
+Audio_time_signature::Audio_time_signature (Request* req_l)
: Audio_item (req_l)
{
}
Midi_item*
-Audio_meter::midi_item_p()
+Audio_time_signature::midi_item_p()
{
- return new Midi_meter (this);
+ return new Midi_time_signature (this);
}
-IMPLEMENT_IS_TYPE_B1(Audio_meter, Audio_item);
+IMPLEMENT_IS_TYPE_B1(Audio_time_signature, Audio_item);
Audio_text::Audio_text (Audio_text::Type type, String text_str)
: Audio_item (0)
diff --git a/lily/audio-staff.cc b/lily/audio-staff.cc
index d35fb23a58..235de874de 100644
--- a/lily/audio-staff.cc
+++ b/lily/audio-staff.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "audio-staff.hh"
@@ -13,7 +13,7 @@
#include "midi-walker.hh"
void
-Audio_staff::add (Audio_item* l)
+Audio_staff::add_audio_item (Audio_item* l)
{
audio_item_l_list_.bottom().add (l);
}
diff --git a/lily/axis-group-administration.cc b/lily/axis-group-administration.cc
deleted file mode 100644
index bf42295aee..0000000000
--- a/lily/axis-group-administration.cc
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- axis-group.cc -- implement Axis_group_administration
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-#include "interval.hh"
-#include "axis-group-administration.hh"
-#include "axis-group-element.hh"
-#include "graphical-element.hh"
-#include "debug.hh"
-
-/** don't copy anything: an element can only be in one
- Axis_group_element at one time. */
-Axis_group_administration::Axis_group_administration (Axis_group_administration const&)
-{
-}
-
-bool
-Axis_group_administration::contains_b (Graphical_element const *e) const
-{
- return elem_l_arr_.find_l (e);
-}
-
-Interval
-Axis_group_administration::extent (Axis axis) const
-{
- Interval r;
- for (int i=0; i < elem_l_arr_.size(); i++)
- r.unite (elem_l_arr_[i]->extent (axis));
- return r;
-}
-
-void
-Axis_group_administration::add_element (Graphical_element*e,
- Axis_group_element*g, Axis a1, Axis a2)
-{
- // don't add self to self.
- assert (e != g);
- Axis_group_element *& g1 = e->axis_group_l_a_[a1];
- Axis_group_element *& g2 = e->axis_group_l_a_[a2];
-
- assert (!g1 || g1 == g);
- assert (!g2 || g2 == g);
- g1 = g;
- g2 = g;
- elem_l_arr_.push (e);
-}
-
-
-
-void
-Axis_group_administration::remove_element (Graphical_element*e, Axis a1, Axis a2)
-{
- assert (contains_b (e));
- elem_l_arr_.unordered_substitute (e,0);
-
- e->axis_group_l_a_[a1] = 0;
- e->axis_group_l_a_[a2] = 0;
-}
-
-void
-Axis_group_administration::remove_all (Axis a1, Axis a2)
-{
- for (int i=0; i < elem_l_arr_.size(); i++)
- {
- Graphical_element*e=elem_l_arr_[i];
- e->axis_group_l_a_[a1] = 0;
- e->axis_group_l_a_[a2] = 0;
- }
- elem_l_arr_.clear ();
-}
-
-
-void
-Axis_group_administration::print() const
-{
-#ifndef NPRINT
- for (int i=0; i < elem_l_arr_.size(); i++)
- DOUT << elem_l_arr_[i]->name () << ' ';
-#endif
-}
diff --git a/lily/axis-group-element.cc b/lily/axis-group-element.cc
index b4061af7f5..8aa8263668 100644
--- a/lily/axis-group-element.cc
+++ b/lily/axis-group-element.cc
@@ -3,10 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "axis-group-element.hh"
+#include "graphical-axis-group.hh"
void
Axis_group_element::do_unlink()
@@ -17,45 +18,69 @@ Axis_group_element::do_unlink()
void
Axis_group_element::do_junk_links()
{
- axis_admin_.elem_l_arr_.set_size (0);
+ elem_l_arr_.set_size (0);
}
-bool
-Axis_group_element::contains_b (Graphical_element const*e) const
-{
- return axis_admin_.contains_b (e);
-}
-
-Link_array<Score_elem>
+Link_array<Score_element>
Axis_group_element::get_extra_dependencies() const
{
return elem_l_arr ();
}
-Link_array<Score_elem>
+Link_array<Score_element>
Axis_group_element::elem_l_arr () const
{
/*
ugh. I know
- */
- Link_array<Score_elem> r;
- for (int i=0; i < axis_admin_.elem_l_arr_.size (); i++)
- r.push ((Score_elem*)axis_admin_.elem_l_arr_[i]);
+ */
+ Link_array<Score_element> r;
+ for (int i=0; i < elem_l_arr_.size (); i++)
+ r.push (elem_l_arr_[i]->access_Score_element());
return r;
}
+Link_array<Score_element>
+Axis_group_element::get_children ()
+{
+ Link_array<Score_element> childs;
+ Link_array<Score_element> elems = elem_l_arr ();
+ for (int i=0; i < elems.size (); i++)
+ {
+ Score_element* e = elems[i];
+ childs.push (e) ;
+ Axis_group_element * axis_group= e->access_Axis_group_element ();
+ if (axis_group)
+ childs.concat (axis_group->get_children ());
+ }
+
+ return childs;
+}
+
void
Axis_group_element::do_print() const
{
- axis_admin_.print();
+ Graphical_axis_group::do_print();
}
+Axis_group_element::Axis_group_element(Axis a1, Axis a2)
+ : Graphical_axis_group (a1,a2)
+{
+ transparent_b_ = true;
+}
-Axis_group_element::Axis_group_element()
+Axis_group_element::Axis_group_element ()
+ : Graphical_axis_group (X_AXIS, Y_AXIS)
{
transparent_b_ = true;
}
+Axis_group_element*
+Axis_group_element::access_Axis_group_element ()
+{
+ return this;
+}
+
+
-IMPLEMENT_IS_TYPE_B1(Axis_group_element, Score_elem);
+IMPLEMENT_IS_TYPE_B2(Axis_group_element, Score_element, Graphical_axis_group);
diff --git a/lily/axis-group-item.cc b/lily/axis-group-item.cc
index 2706fa8faa..33dfdceba9 100644
--- a/lily/axis-group-item.cc
+++ b/lily/axis-group-item.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "axis-group-item.hh"
#include "p-col.hh"
@@ -13,10 +13,10 @@ IMPLEMENT_IS_TYPE_B2(Axis_group_item, Axis_group_element, Item);
void
Axis_group_item::OK() const
{
- Link_array<Score_elem> elems = elem_l_arr ();
+ Link_array<Score_element> elems = elem_l_arr ();
for (int i=0; i < elems.size(); i++)
{
- Item * it_l = elems[i]->item();
+ Item * it_l = elems[i]->access_Item ();
assert (it_l);
}
}
@@ -31,15 +31,15 @@ Axis_group_item::do_breakable_col_processing()
copy_breakable_items();
- Link_array<Score_elem> elems = elem_l_arr ();
+ Link_array<Score_element> elems = elem_l_arr ();
for (int i=0; i < elems.size(); i++)
{
- Item* it_l = elems[i]->item();
+ Item* it_l = elems[i]->access_Item ();
Direction j=LEFT;
do
{
Item *new_l =
- it_l->find_prebroken_piece (broken_to_drul_[j]->break_status_i_);
+ it_l->find_prebroken_piece (broken_to_drul_[j]->break_status_dir_);
((Axis_group_item*)broken_to_drul_[j])->add_element (new_l);
}
while (flip(&j)!=LEFT);
diff --git a/lily/axis-group-spanner.cc b/lily/axis-group-spanner.cc
index 344b4060cc..64a28da895 100644
--- a/lily/axis-group-spanner.cc
+++ b/lily/axis-group-spanner.cc
@@ -3,10 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "axis-group-spanner.hh"
+#include "debug.hh"
#include "item.hh"
#include "p-col.hh"
@@ -17,16 +18,16 @@
void
Axis_group_spanner::do_break_processing_if_unbroken()
{
- Link_array<Score_elem> elems = elem_l_arr ();
+ Link_array<Score_element> elems = elem_l_arr ();
Line_of_score *my_line = line_l();
for (int i=0; i < elems.size(); i++)
{
if (!elems[i]->line_l())
{
- Item * item_l = elems[i]->item();
+ Item * item_l = elems[i]->access_Item ();
if (item_l
&& item_l->breakable_b_
- && item_l->break_status_i() == 0)
+ && item_l->break_status_dir() == 0)
{
// last two checks are paranoia
Item * broken_item_l =
@@ -37,9 +38,11 @@ Axis_group_spanner::do_break_processing_if_unbroken()
}
}
}
+
void
Axis_group_spanner::do_break_processing()
{
+ DOUT << "do_break_processing ()\n";
bool breaking_self_b = ! Spanner::line_l();
if (!breaking_self_b)
{
@@ -49,12 +52,12 @@ Axis_group_spanner::do_break_processing()
}
break_into_pieces ();
- Link_array<Score_elem> loose_elems = elem_l_arr ();
+ Link_array<Score_element> loose_elems = elem_l_arr ();
remove_all();
for (int i=0; i < loose_elems.size(); i++)
{
- Score_elem * elt = loose_elems[i];
+ Score_element * elt = loose_elems[i];
Line_of_score *elt_line = elt->line_l();
if (! elt_line)
@@ -62,9 +65,9 @@ Axis_group_spanner::do_break_processing()
/* this piece doesn't know where it belongs.
Find out if it was broken, and use the broken remains
*/
- if (elt->spanner())
+ if (elt->access_Spanner ())
{
- Spanner * sp = elt->spanner();
+ Spanner * sp = elt->access_Spanner ();
for (int j =0; j < broken_into_l_arr_.size(); j++)
{
@@ -73,22 +76,22 @@ Axis_group_spanner::do_break_processing()
Spanner * broken_span_l
= sp->find_broken_piece (
- ((Score_elem*)my_broken_l)->line_l());
+ ((Score_element*)my_broken_l)->line_l());
if (broken_span_l)
my_broken_l->add_element (broken_span_l);
}
}
- else if (elt->item()
- && elt->item()->breakable_b_
- && elt->item()->break_status_i () == 0)
+ else if (elt->access_Item ()
+ && elt->access_Item ()->breakable_b_
+ && elt->access_Item ()->break_status_dir () == 0)
{
// broken items
Direction j=LEFT;
do
{
- Item * my_item = elt->item()->broken_to_drul_[j];
+ Item * my_item = elt->access_Item ()->broken_to_drul_[j];
Line_of_score * item_line_l = my_item->line_l() ;
if (! item_line_l)
continue;
@@ -97,6 +100,14 @@ Axis_group_spanner::do_break_processing()
= (Axis_group_spanner*)find_broken_piece (item_line_l);
if (v)
v->add_element (my_item);
+ else
+ {
+ my_item->transparent_b_ = true;
+ my_item->set_empty (true);
+ /*my_item->unlink ();
+ delete my_item;*/
+ }
+
}
while (flip(&j) != LEFT);
}
@@ -119,6 +130,8 @@ void
Axis_group_spanner::do_print() const
{
Axis_group_element::do_print();
+
+ Spanner::do_print ();
}
diff --git a/lily/bar-column-engraver.cc b/lily/bar-column-engraver.cc
new file mode 100644
index 0000000000..2f1d760fa5
--- /dev/null
+++ b/lily/bar-column-engraver.cc
@@ -0,0 +1,103 @@
+/*
+ bar-column-grav.cc -- implement Bar_column_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#include "bar-column-engraver.hh"
+#include "bar-column.hh"
+#include "request.hh"
+#include "script.hh"
+#include "bar.hh"
+
+Bar_column_engraver::Bar_column_engraver()
+{
+ bar_l_ =0;
+ barcol_p_ =0;
+ break_priority_i_ = 0;
+}
+
+void
+Bar_column_engraver::do_creation_processing ()
+{
+}
+
+
+void
+Bar_column_engraver::do_process_requests ()
+{
+ Scalar pri = get_property ("barColumnPriority");
+ if (pri.length_i() && pri.isnum_b ())
+ {
+ break_priority_i_ = int(pri);
+ }
+}
+
+void
+Bar_column_engraver::create_column ()
+{
+ if (!barcol_p_)
+ {
+ barcol_p_ = new Bar_column;
+ barcol_p_->breakable_b_ =true;
+ barcol_p_->break_priority_i_ = break_priority_i_;
+ announce_element (Score_element_info (barcol_p_, 0));
+ }
+}
+
+
+void
+Bar_column_engraver::acknowledge_element (Score_element_info info)
+{
+ Item * it = info.elem_l_->access_Item ();
+ if (!it)
+ return;
+
+ if (it->is_type_b (Script::static_name())
+ && it->breakable_b_
+ && info.origin_grav_l_arr_.size() == 1
+ && it->break_priority_i_ == break_priority_i_)
+ {
+ create_column ();
+ barcol_p_->add_script ((Script*)it);
+ }
+ else if (info.origin_grav_l_arr_.size() == 1
+ && it->break_priority_i_ == break_priority_i_
+ && it->breakable_b_
+ && it->is_type_b (Bar::static_name()))
+ {
+ create_column ();
+ barcol_p_->set_bar ( (Bar*)it);
+ }
+}
+
+
+void
+Bar_column_engraver::process_acknowledged ()
+{
+}
+
+
+
+void
+Bar_column_engraver::do_pre_move_processing()
+{
+ if (barcol_p_)
+ {
+ typeset_element (barcol_p_);
+ barcol_p_ =0;
+ }
+}
+
+void
+Bar_column_engraver::do_post_move_processing()
+{
+ script_l_arr_.clear();
+ bar_l_ =0;
+}
+
+IMPLEMENT_IS_TYPE_B1(Bar_column_engraver, Engraver);
+ADD_THIS_TRANSLATOR(Bar_column_engraver);
diff --git a/lily/bar-column-grav.cc b/lily/bar-column-grav.cc
deleted file mode 100644
index 7afced803a..0000000000
--- a/lily/bar-column-grav.cc
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- bar-column-grav.cc -- implement Bar_column_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#include "bar-column-grav.hh"
-#include "bar-column.hh"
-#include "request.hh"
-#include "script.hh"
-#include "bar.hh"
-
-Bar_column_engraver::Bar_column_engraver()
-{
- bar_l_ =0;
- barcol_p_ =0;
-}
-
-
-void
-Bar_column_engraver::acknowledge_element (Score_elem_info info)
-{
- if (info.elem_l_->is_type_b (Script::static_name())
- && info.req_l_->command()
- && info.origin_grav_l_arr_.size() == 1)
- {
- script_l_arr_.push ((Script*)info.elem_l_->item());
- }
- else if (info.origin_grav_l_arr_.size() == 1
- && info.elem_l_->is_type_b (Bar::static_name()))
- bar_l_ = (Bar*)info.elem_l_->item();
-
- if (bar_l_ && !barcol_p_)
- {
- barcol_p_ = new Bar_column;
- barcol_p_->breakable_b_ =true;
- barcol_p_->break_priority_i_ = bar_l_ -> break_priority_i_;
- barcol_p_->set_bar (bar_l_);
-
- announce_element (Score_elem_info (barcol_p_, 0));
- }
-
- if (barcol_p_)
- {
- for (int i=0; i < script_l_arr_.size(); i++)
- {
- script_l_arr_[i]->breakable_b_ = true;
- script_l_arr_[i]->break_priority_i_ = barcol_p_-> break_priority_i_;
- barcol_p_->add (script_l_arr_[i]);
- }
- script_l_arr_.clear();
- }
-}
-
-void
-Bar_column_engraver::do_pre_move_processing()
-{
- if (barcol_p_)
- {
- typeset_element (barcol_p_);
- barcol_p_ =0;
- }
-}
-
-void
-Bar_column_engraver::do_post_move_processing()
-{
- script_l_arr_.clear();
- bar_l_ =0;
-}
-
-IMPLEMENT_IS_TYPE_B1(Bar_column_engraver, Engraver);
-ADD_THIS_TRANSLATOR(Bar_column_engraver);
diff --git a/lily/bar-column.cc b/lily/bar-column.cc
index 57bf47660d..e61c398900 100644
--- a/lily/bar-column.cc
+++ b/lily/bar-column.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "bar.hh"
@@ -23,12 +23,12 @@ Bar_column::set_bar (Bar*b)
}
void
-Bar_column::do_substitute_dependency (Score_elem*o,Score_elem*n)
+Bar_column::do_substitute_dependency (Score_element*o,Score_element*n)
{
Script_column::do_substitute_dependency (o,n);
if (o == bar_l_)
{
- bar_l_ = n ? (Bar*)n->item() : 0;
+ bar_l_ = n ? (Bar*)n->access_Item () : 0;
}
}
diff --git a/lily/bar-grav.cc b/lily/bar-engraver.cc
index 33e62ad6a9..7ed4bad871 100644
--- a/lily/bar-grav.cc
+++ b/lily/bar-engraver.cc
@@ -3,10 +3,10 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "bar-grav.hh"
+#include "bar-engraver.hh"
#include "bar.hh"
#include "musical-request.hh"
#include "multi-measure-rest.hh"
@@ -23,10 +23,10 @@ Bar_engraver::Bar_engraver()
bool
Bar_engraver::do_try_request (Request*r_l)
{
- Command_req* c_l = r_l->command();
- if (!c_l|| !c_l->bar())
+ Command_req* c_l = r_l->access_Command_req ();
+ if (!c_l|| !c_l->access_Bar_req ())
return false;
- Bar_req * b= c_l->bar();
+ Bar_req * b= c_l->access_Bar_req ();
if (bar_req_l_ && bar_req_l_->equal_b (b))
return false;
@@ -42,7 +42,7 @@ Bar_engraver::create_bar ()
{
bar_p_ = new Bar;
bar_p_->break_priority_i_ = 0;
- announce_element (Score_elem_info (bar_p_, bar_req_l_));
+ announce_element (Score_element_info (bar_p_, bar_req_l_));
}
}
diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc
new file mode 100644
index 0000000000..8a79324621
--- /dev/null
+++ b/lily/bar-number-engraver.cc
@@ -0,0 +1,84 @@
+/*
+ bar-number-grav.cc -- implement Bar_number_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#include "bar-number-engraver.hh"
+#include "script.hh"
+#include "text-def.hh"
+#include "paper-def.hh"
+#include "command-request.hh"
+#include "bar.hh"
+#include "span-bar.hh"
+#include "stem.hh"
+#include "time-description.hh"
+#include "dimension.hh"
+
+Bar_number_engraver::Bar_number_engraver()
+{
+ script_p_ =0;
+}
+
+void
+Bar_number_engraver::acknowledge_element (Score_element_info i)
+{
+
+ Item *it=i.elem_l_->access_Item ();
+ if (script_p_
+ || !it || !it->is_type_b (Bar::static_name()))
+ return;
+
+ /* Only put numbers on bars that are at our own level (don't put
+ numbers over the staffs of a GrandStaff, only over the GrandStaff
+ itself */
+ if (i.origin_grav_l_arr_.size() != 1)
+ return;
+
+ Time_description const * time = get_staff_info().time_C_;
+ if (!time || time->cadenza_b_)
+ return;
+
+ script_p_ = new Script;
+ Text_def *td_p = new Text_def;
+ td_p->text_str_ = to_str (time->bars_i_);
+
+ td_p->align_dir_ = LEFT;
+
+ script_p_->dir_ = UP;
+ script_p_->axis_ = Y_AXIS;
+ script_p_->specs_p_ = td_p->clone ();
+ script_p_->breakable_b_ = true;
+
+ Scalar pri = get_property ("barNumberBreakPriority");
+ if (pri.length_i () && pri.isnum_b ())
+ {
+ script_p_->break_priority_i_ = int (pri);
+ }
+ else
+ script_p_->break_priority_i_ = it->break_priority_i_;
+
+ Scalar padding = get_property ("barScriptPadding");
+ if (padding.length_i() && padding.isnum_b ())
+ {
+ script_p_->padding_f_ = Real(padding);
+ }
+
+ announce_element (Score_element_info (script_p_,0));
+}
+
+void
+Bar_number_engraver::do_pre_move_processing()
+{
+ if (script_p_)
+ {
+ typeset_element (script_p_);
+ script_p_ =0;
+ }
+}
+
+IMPLEMENT_IS_TYPE_B1(Bar_number_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Bar_number_engraver);
diff --git a/lily/bar-number-grav.cc b/lily/bar-number-grav.cc
deleted file mode 100644
index be49f69b3f..0000000000
--- a/lily/bar-number-grav.cc
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- bar-number-grav.cc -- implement Bar_number_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#include "bar-number-grav.hh"
-#include "script.hh"
-#include "text-def.hh"
-#include "command-request.hh"
-#include "bar.hh"
-#include "stem.hh"
-#include "time-description.hh"
-
-Bar_number_engraver::Bar_number_engraver()
-{
- script_p_ =0;
-}
-
-static Command_script_req dummy;
-static Stem support;
-
-void
-Bar_number_engraver::acknowledge_element (Score_elem_info i)
-{
- if (i.origin_grav_l_arr_.size() == 1 &&
- i.elem_l_->is_type_b (Bar::static_name()) && !script_p_)
- {
- Time_description const * time = get_staff_info().time_C_;
- if (!time || time->cadenza_b_)
- return ;
-
- script_p_ = new Script;
- Text_def *td_p =new Text_def;
- td_p->text_str_ = time->bars_i_;
- td_p->align_i_ = LEFT;
-
- script_p_->specs_l_ = td_p;
- script_p_->breakable_b_ = true;
-
- // ugh, howto move this up?
- script_p_->dir_ = UP;
-//// script_p_->y_ += 2;
- script_p_->y_ = 10;
-
- support.dir_ = UP;
- support.set_stemend (10);
- script_p_->set_stem (&support);
-
- announce_element (Score_elem_info (script_p_, &dummy));
- }
-}
-
-void
-Bar_number_engraver::do_pre_move_processing()
-{
- if (script_p_)
- {
- typeset_element (script_p_);
- script_p_ =0;
- }
-}
-
-IMPLEMENT_IS_TYPE_B1(Bar_number_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Bar_number_engraver);
diff --git a/lily/bar.cc b/lily/bar.cc
index 701bbd7b86..32120fa1bf 100644
--- a/lily/bar.cc
+++ b/lily/bar.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "bar.hh"
@@ -13,18 +13,16 @@
#include "lookup.hh"
#include "debug.hh"
-Bar::Bar()
+IMPLEMENT_IS_TYPE_B1 (Bar,Item);
+
+Bar::Bar ()
{
breakable_b_ = true;
type_str_ = "|";
}
-
-
-IMPLEMENT_IS_TYPE_B1(Bar,Item);
-
void
-Bar::do_print() const
+Bar::do_print () const
{
#ifndef NPRINT
DOUT << type_str_;
@@ -32,11 +30,10 @@ Bar::do_print() const
}
Molecule*
-Bar::brew_molecule_p() const
+Bar::brew_molecule_p () const
{
- Paper_def *p = paper();
- Atom s = p->lookup_l()->bar (type_str_,
- p->get_var ("barsize"));
+ Paper_def *p = paper ();
+ Atom s = lookup_l ()->bar (type_str_, p->get_var ("barsize"));
Molecule*output = new Molecule (Atom (s));
return output;
@@ -51,19 +48,20 @@ static char const *bar_breaks[][3] ={
{"|", "|", ""},
{"", "|s", "|"},
{"", "|:", "|:"},
- {"||.", "||.", ""},
+ {"|.", "|.", ""},
{":|", ":|", ""},
{"||", "||", ""},
+ {".|.", ".|.", ""},
{0,0,0}
};
void
-Bar::do_pre_processing()
+Bar::do_pre_processing ()
{
for (int i=0; bar_breaks[i][0]; i++)
{
if (bar_breaks[i][1] == type_str_)
- type_str_ = bar_breaks[i][break_status_i()+1];
+ type_str_ = bar_breaks[i][break_status_dir ()+1];
}
/*
diff --git a/lily/beam-grav.cc b/lily/beam-engraver.cc
index 9a3f9586c2..6ef0ba09fc 100644
--- a/lily/beam-grav.cc
+++ b/lily/beam-engraver.cc
@@ -3,16 +3,17 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "duration-convert.hh"
#include "time-description.hh"
-#include "beam-grav.hh"
+#include "beam-engraver.hh"
#include "stem.hh"
#include "beam.hh"
#include "musical-request.hh"
#include "grouping.hh"
#include "p-col.hh"
+#include "warn.hh"
Beam_engraver::Beam_engraver()
{
@@ -24,11 +25,11 @@ Beam_engraver::Beam_engraver()
bool
Beam_engraver::do_try_request(Request*r)
{
- Musical_req* mus_l = r->musical();
+ Musical_req* mus_l = r->access_Musical_req ();
if (!mus_l)
return false;
- Beam_req* b = mus_l->beam ();
+ Beam_req* b = mus_l->access_Beam_req ();
if (!b)
return false;
@@ -60,7 +61,7 @@ Beam_engraver::do_process_requests()
if (prop.isnum_b ())
beam_p_->quantisation_ = (Beam::Quantisation)(int)prop;
- announce_element (Score_elem_info (beam_p_, span_reqs_drul_[LEFT]));
+ announce_element (Score_element_info (beam_p_, span_reqs_drul_[LEFT]));
}
void
@@ -94,16 +95,22 @@ Beam_engraver::do_removal_processing()
void
-Beam_engraver::acknowledge_element (Score_elem_info i)
+Beam_engraver::acknowledge_element (Score_element_info i)
{
if (!beam_p_ || !i.elem_l_->is_type_b (Stem::static_name ()))
return;
- Stem* s = (Stem*)i.elem_l_->item();
- Rhythmic_req *rhythmic_req = i.req_l_->musical ()->rhythmic ();
+ Stem* s = (Stem*)i.elem_l_->access_Item ();
+ if (!i.req_l_ || !i.req_l_->access_Musical_req () || !i.req_l_->access_Musical_req ()->access_Rhythmic_req ())
+ {
+ ::warning ( _("Stem must have Rhythmic structure."));
+ return;
+ }
+
+ Rhythmic_req *rhythmic_req = i.req_l_->access_Musical_req ()->access_Rhythmic_req ();
if (rhythmic_req->duration_.durlog_i_<= 2)
{
- rhythmic_req->warning (_("Stem doesn't fit in Beam"));
+ rhythmic_req->warning (_ ("stem doesn't fit in beam"));
return;
}
@@ -114,9 +121,8 @@ Beam_engraver::acknowledge_element (Score_elem_info i)
if (!current_grouping_p_->child_fit_b (start))
{
- String s (_("please fix me: Stem at ")
- + now_moment ().str ()
- + _(" does not fit in beam"));
+ String s (_("please fix me") + ": "
+ + _f ("stem at %s doesn't fit in beam", now_moment ().str ()));
if (i.req_l_)
i.req_l_->warning(s);
else
@@ -126,7 +132,7 @@ Beam_engraver::acknowledge_element (Score_elem_info i)
{
current_grouping_p_->add_child (start, rhythmic_req->duration ());
s->flag_i_ = rhythmic_req->duration_.durlog_i_;
- beam_p_->add (s);
+ beam_p_->add_stem (s);
}
}
IMPLEMENT_IS_TYPE_B1(Beam_engraver, Engraver);
diff --git a/lily/beam-swallow-trans.cc b/lily/beam-swallow-trans.cc
index 38418fc333..f6a4194ca7 100644
--- a/lily/beam-swallow-trans.cc
+++ b/lily/beam-swallow-trans.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/beam.cc b/lily/beam.cc
index 55256fdd5b..dea856499b 100644
--- a/lily/beam.cc
+++ b/lily/beam.cc
@@ -3,8 +3,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998, 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
@@ -19,9 +19,9 @@
#include <math.h>
#include "p-col.hh"
-#include "varray.hh"
+#include "array.hh"
#include "proto.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "beam.hh"
#include "abbreviation-beam.hh"
#include "misc.hh"
@@ -34,7 +34,6 @@
#include "lookup.hh"
#include "grouping.hh"
#include "stem-info.hh"
-#include "main.hh" // experimental features
IMPLEMENT_IS_TYPE_B1 (Beam, Spanner);
@@ -50,7 +49,7 @@ Beam::Beam ()
}
void
-Beam::add (Stem*s)
+Beam::add_stem (Stem*s)
{
stems_.push (s);
s->add_dependency (this);
@@ -79,7 +78,7 @@ Beam::brew_molecule_p () const
Molecule sb = stem_beams (i, next, prev);
Real x = i->hpos_f ()-x0;
sb.translate (Offset (x, (x * slope_f_ + left_y_) * internote_f));
- mol_p->add (sb);
+ mol_p->add_molecule (sb);
}
mol_p->translate_axis (x0
- spanned_drul_[LEFT]->absolute_coordinate (X_AXIS), X_AXIS);
@@ -105,7 +104,7 @@ void
Beam::do_print () const
{
#ifndef NPRINT
- DOUT << "slope_f_ " <<slope_f_ << "left ypos " << left_y_;
+ DOUT << "slope_f_ " << slope_f_ << "left ypos " << left_y_;
Spanner::do_print ();
#endif
}
@@ -115,7 +114,7 @@ Beam::do_post_processing ()
{
if (stems_.size () < 2)
{
- warning (_ ("Beam with less than 2 stems"));
+ warning (_ ("beam with less than two stems"));
transparent_b_ = true;
return ;
}
@@ -124,10 +123,10 @@ Beam::do_post_processing ()
}
void
-Beam::do_substitute_dependent (Score_elem*o,Score_elem*n)
+Beam::do_substitute_dependent (Score_element*o,Score_element*n)
{
if (o->is_type_b (Stem::static_name ()))
- stems_.substitute ((Stem*)o->item (), n? (Stem*) n->item ():0);
+ stems_.substitute ((Stem*)o->access_Item (), n? (Stem*) n->access_Item ():0);
}
Interval
@@ -173,15 +172,30 @@ Beam::set_default_dir ()
But is that because it really looks better, or because he
wants to provide some real simple hands-on rules.
- We have our doubts.
+ We have our doubts, so we simply provide all sensible alternatives.
*/
- // fixme. make runtime.
- // majority
- // dir_ = (count[UP] > count[DOWN]) ? UP : DOWN;
-
- // mean centre distance
- dir_ = (total[UP] > total[DOWN]) ? UP : DOWN;
+ Dir_algorithm a = (Dir_algorithm)rint(paper ()->get_var ("beam_dir_algorithm"));
+ switch (a)
+ {
+ case MAJORITY:
+ dir_ = (count[UP] > count[DOWN]) ? UP : DOWN;
+ break;
+ case MEAN:
+ // mean centre distance
+ dir_ = (total[UP] > total[DOWN]) ? UP : DOWN;
+ break;
+ default:
+ case MEDIAN:
+ // median centre distance
+ if (!count[UP])
+ dir_ = DOWN;
+ else if (!count[DOWN])
+ dir_ = UP;
+ else
+ dir_ = (total[UP] / count[UP] > total[DOWN] / count[DOWN]) ? UP : DOWN;
+ break;
+ }
for (int i=0; i <stems_.size (); i++)
{
@@ -545,7 +559,7 @@ Beam::set_stemlens ()
{
// when all too short, normal stems win..
if (dy_f < -epsilon_f)
- warning ( _("Weird beam shift, check your knees."));
+ warning (_ ("weird beam shift, check your knees"));
dy_f = dy_f >? info.miny_f_ - y;
}
}
@@ -621,7 +635,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
Real dy = interbeam_f;
Real stemdx = staffline_f;
Real sl = slope_f_* internote_f;
- paper ()->lookup_l ()->beam (sl, 20 PT, 1 PT);
+ lookup_l ()->beam (sl, 20 PT, 1 PT);
Molecule leftbeams;
Molecule rightbeams;
@@ -631,16 +645,21 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
{
int lhalfs= lhalfs = here->beams_left_i_ - prev->beams_right_i_ ;
int lwholebeams= here->beams_left_i_ <? prev->beams_right_i_ ;
- Real w = (here->hpos_f () - prev->hpos_f ())/4 <? paper ()->note_width ();;
+ /*
+ Half beam should be one note-width,
+ but let's make sure two half-beams never touch
+ */
+ Real w = here->hpos_f () - prev->hpos_f ();
+ w = w/2 <? paper ()->note_width ();
Atom a;
if (lhalfs) // generates warnings if not
- a = paper ()->lookup_l ()->beam (sl, w, beam_f);
+ a = lookup_l ()->beam (sl, w, beam_f);
a.translate (Offset (-w, -w * sl));
for (int j = 0; j < lhalfs; j++)
{
Atom b (a);
b.translate_axis (-dir_ * dy * (lwholebeams+j), Y_AXIS);
- leftbeams.add (b);
+ leftbeams.add_atom (b);
}
}
@@ -650,7 +669,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
int rwholebeams = here->beams_right_i_ <? next->beams_left_i_;
Real w = next->hpos_f () - here->hpos_f ();
- Atom a = paper ()->lookup_l ()->beam (sl, w + stemdx, beam_f);
+ Atom a = lookup_l ()->beam (sl, w + stemdx, beam_f);
a.translate_axis( - stemdx/2, X_AXIS);
int j = 0;
Real gap_f = 0;
@@ -661,34 +680,34 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
{
Atom b (a);
b.translate_axis (-dir_ * dy * j, Y_AXIS);
- rightbeams.add (b);
+ rightbeams.add_atom (b);
}
// TODO: notehead widths differ for different types
gap_f = paper ()->note_width () / 2;
w -= 2 * gap_f;
- a = paper ()->lookup_l ()->beam (sl, w + stemdx, beam_f);
+ a = lookup_l ()->beam (sl, w + stemdx, beam_f);
}
for (; j < rwholebeams; j++)
{
Atom b (a);
b.translate (Offset (gap_f, -dir_ * dy * j));
- rightbeams.add (b);
+ rightbeams.add_atom (b);
}
- w = w/4 <? paper ()->note_width ();
+ w = w/2 <? paper ()->note_width ();
if (rhalfs)
- a = paper ()->lookup_l ()->beam (sl, w, beam_f);
+ a = lookup_l ()->beam (sl, w, beam_f);
for (; j < rwholebeams + rhalfs; j++)
{
Atom b (a);
b.translate_axis (-dir_ * dy * j, Y_AXIS);
- rightbeams.add (b);
+ rightbeams.add_atom (b);
}
}
- leftbeams.add (rightbeams);
+ leftbeams.add_molecule (rightbeams);
/*
Does beam quanting think of the asymetry of beams?
diff --git a/lily/bezier.cc b/lily/bezier.cc
index 2242c4ffa5..e851e74f03 100644
--- a/lily/bezier.cc
+++ b/lily/bezier.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <math.h>
@@ -12,7 +12,7 @@
#ifndef STANDALONE
#include "direction.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "paper-def.hh"
#include "debug.hh"
#include "main.hh"
@@ -168,6 +168,12 @@ Bezier_bow::blow_fit ()
Real b = dy1;
Real h = -b / a;
+ if (sign (h) != sign (h1))
+ return;
+
+ if (sign (h) != sign (h1))
+ return;
+
control_[1].y () += -h1 +h;
control_[2].y () += -h1 +h;
return_[1].y () += -h1 +h;
diff --git a/lily/bow.cc b/lily/bow.cc
index b986debd30..04a09d7bc9 100644
--- a/lily/bow.cc
+++ b/lily/bow.cc
@@ -3,8 +3,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "bow.hh"
@@ -33,9 +33,9 @@ Bow::brew_molecule_p () const
Atom a;
if (!dash_i_)
- a = paper ()->lookup_l ()->slur (c);
+ a = lookup_l ()->slur (c);
else
- a = paper ()->lookup_l ()->dashed_slur (c, thick, dash_i_);
+ a = lookup_l ()->dashed_slur (c, thick, dash_i_);
if (check_debug && !monitor->silent_b ("Bow"))
{
@@ -53,7 +53,7 @@ Bow::brew_molecule_p () const
a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
Molecule* mol_p = new Molecule;
- mol_p->add (a);
+ mol_p->add_atom (a);
return mol_p;
}
@@ -68,6 +68,26 @@ Bow::center () const
return Offset (dx / 2, dy);
}
+
+
+/*
+
+ ugh . Control points are too crude measures.
+ */
+Interval
+Bow::do_height () const
+{
+ Array<Offset> c (get_controls());
+
+ Interval iv;
+ for (int i=0; i < c.size (); i++)
+ {
+ Real y = c[i][Y_AXIS];
+ iv.unite (Interval (y,y));
+ }
+ return iv;
+}
+
Interval
Bow::do_width () const
{
diff --git a/lily/boxes.cc b/lily/boxes.cc
index 0e9befcad2..92c8fa6c5a 100644
--- a/lily/boxes.cc
+++ b/lily/boxes.cc
@@ -3,11 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "boxes.hh"
-#include "varray.hh"
+#include "box.hh"
+#include "array.hh"
void
Box::translate (Offset o)
diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc
index b95f5fd41e..f973976774 100644
--- a/lily/break-align-item.cc
+++ b/lily/break-align-item.cc
@@ -3,16 +3,18 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "break-align-item.hh"
+#include "dimension.hh"
void
Break_align_item::do_pre_processing()
{
-
- align_i_ = break_status_i();
+ align_dir_ = break_status_dir();
+ threshold_interval_[SMALLER] = 1.5 PT;
+ flip (&align_dir_);
Horizontal_align_item::do_pre_processing();
}
diff --git a/lily/break.cc b/lily/break.cc
index cc5c6f92a4..f6c374dce5 100644
--- a/lily/break.cc
+++ b/lily/break.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "score-column.hh"
@@ -11,7 +11,7 @@
#include "paper-def.hh"
#include "spring-spacer.hh"
#include "debug.hh"
-#include "scoreline.hh"
+#include "line-of-score.hh"
#include "p-score.hh"
#include "p-col.hh"
#include "cpu-timer.hh"
@@ -20,11 +20,14 @@
String
Col_stats::str () const
{
- String s (count_i_);
- s += _ (" lines");
- if (count_i_)
- s += String (Real (cols_i_)/count_i_, _(", (with an average of %.1f columns)"));
-
+ String s;
+ if (!count_i_)
+ s = _ ("0 lines");
+ else if (count_i_ == 1)
+ s = _f ("1 line (of %.0f columns)", (Real)cols_i_/count_i_);
+ else
+ s = _f ("%d lines (with an average of %.1f columns)",
+ count_i_, (Real)cols_i_/count_i_);
return s;
}
@@ -103,7 +106,7 @@ Break_algorithm::generate_spacing_problem (Line_of_cols curline, Interval line)
Spring_spacer * sp= (Spring_spacer*) (*get_line_spacer) (); // ugh
sp->paper_l_ = pscore_l_->paper_l_;
- sp->add_column (curline[0], true, line.min ());
+ sp->add_column (curline[0], true, line[LEFT]);
for (int i=1; i< curline.size ()-1; i++)
sp->add_column (curline[i]);
@@ -153,7 +156,7 @@ void
Break_algorithm::problem_OK () const
{
if (!pscore_l_->col_p_list_.size ())
- error (_("Score does not have any columns"));
+ error (_("score does not have any columns"));
OK ();
}
@@ -169,18 +172,18 @@ Break_algorithm::OK () const
#endif
}
-Array<Col_hpositions>
+Array<Column_x_positions>
Break_algorithm::solve () const
{
Cpu_timer timer;
- Array<Col_hpositions> h= do_solve ();
+ Array<Column_x_positions> h= do_solve ();
if (approx_stats_.count_i_)
- *mlog << _ ("\n(Approximated: ") << approx_stats_.str () << ")\n";
+ *mlog << '\n' << _f ("approximated: %s", approx_stats_.str ()) << endl;
if (exact_stats_.count_i_)
- *mlog << _ ("(Calculated exactly: ") << exact_stats_.str () << ")\n";
- *mlog << _ ("Time: ") << String (timer.read (), "%.2f") << _ (" seconds\n");
+ *mlog << _f ("calculated exactly: %s", exact_stats_.str ()) << endl;
+ *mlog << _f ("time: %.2f seconds", timer.read ()) << endl;
return h;
}
diff --git a/lily/change-iterator.cc b/lily/change-iterator.cc
index 681ac2ae0f..4f97c77fd7 100644
--- a/lily/change-iterator.cc
+++ b/lily/change-iterator.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "change-iterator.hh"
@@ -22,10 +22,10 @@ Change_iterator::error (String reason)
String to_type = change_l_->change_to_type_str_;
String to_id = change_l_->change_to_id_str_;
- String warn1 =
- _ ("Can't change ") + to_type
- + _(" to ") + "`" + to_id + "\': " + reason;
- String warn2= "Change_iterator::process_and_next (): " + report_to_l ()->type_str_ + " = `"
+ String warn1 = _f ("can't change `%s\' to `%s\'", to_type, to_id)
+ + ": " + reason;
+ String warn2= "Change_iterator::process_and_next (): "
+ + report_to_l ()->type_str_ + " = `"
+ report_to_l ()->id_str_ + "\': ";
warning (warn2);
change_l_->warning (warn1);
diff --git a/lily/change-translator.cc b/lily/change-translator.cc
index 54bbed8e81..771e8d43b1 100644
--- a/lily/change-translator.cc
+++ b/lily/change-translator.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "change-translator.hh"
diff --git a/lily/chord-iterator.cc b/lily/chord-iterator.cc
index 1629d3fb37..777a9bcb44 100644
--- a/lily/chord-iterator.cc
+++ b/lily/chord-iterator.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "translator-group.hh"
diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc
new file mode 100644
index 0000000000..f6ebe58409
--- /dev/null
+++ b/lily/clef-engraver.cc
@@ -0,0 +1,256 @@
+/*
+ clef.cc -- implement Clef_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>,
+ Mats Bengtsson <matsb@s3.kth.se>
+*/
+
+#include <ctype.h>
+#include "bar.hh"
+#include "clef-engraver.hh"
+#include "clef-item.hh"
+#include "debug.hh"
+#include "command-request.hh"
+#include "time-description.hh"
+
+
+#include "note-head.hh"
+#include "key-item.hh"
+#include "local-key-item.hh"
+
+Clef_engraver::Clef_engraver()
+{
+ clef_p_ = 0;
+ clef_req_l_ = 0;
+ clef_type_str_ = "";
+ c0_position_i_ = 0;
+ clef_position_i_ = 0;
+ octave_dir_ = CENTER;
+}
+
+/*
+ Ugh. Should have support for Dictionaries in mudela.
+ */
+bool
+Clef_engraver::set_type (String s)
+{
+ if (s.right_str(2) == "_8") // Down one octave
+ {
+ octave_dir_ = DOWN;
+ s = s.left_str(s.length_i() - 2);
+ }
+ else if (s.right_str(2) == "^8") // Up one octave
+ {
+ octave_dir_ = UP;
+ s = s.left_str(s.length_i() - 2);
+ }
+ else
+ octave_dir_ = CENTER;
+ if (s == "treble" ||
+ s == "violin" ||
+ s == "G" || s == "G2")
+ {
+ clef_type_str_ = "violin";
+ clef_position_i_ = -2;
+ }
+ else if (s == "french")
+ {
+ clef_type_str_ = "violin";
+ clef_position_i_ = -4;
+ }
+ else if (s == "soprano")
+ {
+ clef_type_str_ = "alto";
+ clef_position_i_ = -4;
+ }
+ else if (s == "mezzosoprano")
+ {
+ clef_type_str_ = "alto";
+ clef_position_i_ = -2;
+ }
+ else if (s == "alto")
+ {
+ clef_type_str_ = "alto";
+ clef_position_i_ = 0;
+ }
+ else if (s == "tenor")
+ {
+ clef_type_str_ = "alto";
+ clef_position_i_ = 2;
+ }
+ else if (s == "baritone")
+ {
+ clef_type_str_ = "alto";
+ clef_position_i_ = 4;
+ }
+ else if (s == "varbaritone")
+ {
+ clef_type_str_ = "bass";
+ clef_position_i_ = 0;
+ }
+ else if (s == "bass" || s == "F")
+ {
+ clef_type_str_ = "bass";
+ clef_position_i_ = 2;
+ }
+ else if (s == "subbass")
+ {
+ clef_type_str_ = "bass";
+ clef_position_i_ = 4;
+ }
+ else
+ {
+ switch(toupper (s[0]))
+ {
+ case 'F':
+ clef_type_str_ = "bass";
+ break;
+ case 'G':
+ clef_type_str_ = "violin";
+ break;
+ case 'C':
+ clef_type_str_ = "alto";
+ break;
+ default:
+ return false;
+ }
+ clef_position_i_ = 2 * (s[1] - '0') - 6;
+ }
+ if (clef_type_str_ == "violin")
+ c0_position_i_ = clef_position_i_ - 4;
+ else if (clef_type_str_ == "alto")
+ c0_position_i_ = clef_position_i_;
+ else if (clef_type_str_ == "bass")
+ c0_position_i_ = clef_position_i_ + 4;
+ else
+ assert (false);
+
+
+ c0_position_i_ -= (int) octave_dir_ * 7;
+
+ return true;
+}
+
+void
+Clef_engraver::read_req (Clef_change_req*c_l)
+{
+ if (!set_type (c_l->clef_str_))
+ c_l->error (_ ("unknown clef type "));
+}
+
+
+/**
+ Generate a clef at the start of a measure. (when you see a Bar,
+ ie. a breakpoint)
+ */
+void
+Clef_engraver::acknowledge_element (Score_element_info info)
+{
+ if (info.elem_l_->is_type_b (Bar::static_name ())
+ && clef_type_str_.length_i())
+ {
+ create_clef();
+ if (!clef_req_l_)
+ clef_p_->default_b_ = true;
+ }
+
+ /* ugh; should make Clef_referenced baseclass */
+ Item * it_l =info.elem_l_->access_Item ();
+if (it_l)
+ {
+ if (it_l->is_type_b (Note_head::static_name ()))
+ {
+ Note_head * h = (Note_head*)it_l;
+ h->position_i_ += c0_position_i_;
+ }
+ else if (it_l->is_type_b (Local_key_item::static_name ()))
+ {
+ Local_key_item *i = (Local_key_item*)it_l;
+ i->c0_position_i_ =c0_position_i_;
+ }
+ else if (it_l->is_type_b (Key_item::static_name ()))
+ {
+ Key_item *k = (Key_item*)it_l;
+ k-> set_c_position (c0_position_i_);
+ }
+ }
+}
+
+void
+Clef_engraver::do_creation_processing()
+{
+ Scalar def = get_property ("defaultclef");
+ if (def.operator bool ()) // egcs: Scalar to bool is ambiguous
+ set_type (def);
+ if (clef_type_str_.length_i ())
+ {
+ create_clef();
+ clef_p_->default_b_ = false;
+ }
+}
+
+bool
+Clef_engraver::do_try_request (Request * r_l)
+{
+ Command_req* creq_l= r_l->access_Command_req ();
+ if (!creq_l || !creq_l->access_Clef_change_req ())
+ return false;
+
+ clef_req_l_ = creq_l->access_Clef_change_req ();
+ read_req (clef_req_l_);
+ return true;
+}
+
+void
+Clef_engraver::create_clef()
+{
+ if (!clef_p_)
+ {
+ clef_p_ = new Clef_item;
+ clef_p_->break_priority_i_ = -2; // ugh
+ announce_element (Score_element_info (clef_p_,clef_req_l_));
+ }
+ clef_p_->read (*this);
+}
+
+void
+Clef_engraver::do_process_requests()
+{
+ if (clef_req_l_)
+ {
+ create_clef();
+ clef_p_->default_b_ = false;
+ }
+}
+
+void
+Clef_engraver::do_pre_move_processing()
+{
+ if (clef_p_)
+ {
+ typeset_element (clef_p_);
+ clef_p_ = 0;
+ }
+}
+void
+Clef_engraver::do_post_move_processing()
+{
+ clef_req_l_ = 0;
+}
+
+void
+Clef_engraver::do_removal_processing()
+{
+ if (clef_p_)
+ {
+ clef_p_->unlink ();
+ delete clef_p_;
+ clef_p_ =0;
+ }
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Clef_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Clef_engraver);
diff --git a/lily/clef-grav.cc b/lily/clef-grav.cc
deleted file mode 100644
index bc981272a4..0000000000
--- a/lily/clef-grav.cc
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- clef.cc -- implement Clef_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>,
- Mats Bengtsson <matsb@s3.kth.se>
-*/
-
-#include "bar.hh"
-#include "clef-grav.hh"
-#include "clef-item.hh"
-#include "debug.hh"
-#include "command-request.hh"
-#include "time-description.hh"
-
-Clef_engraver::Clef_engraver()
-{
- clef_p_ = 0;
- clef_req_l_ =0;
- clef_type_str_ = 0;
- c0_position_i_ =0;
- octave_dir_ = CENTER;
-}
-
-/*
- Ugh. Should have support for Dictionaries in mudela.
- */
-bool
-Clef_engraver::set_type (String s)
-{
- if (s.right_str(2) == "_8") // Down one octave
- {
- octave_dir_ = DOWN;
- s = s.left_str(s.length_i() - 2);
- }
- else if (s.right_str(2) == "^8") // Up one octave
- {
- octave_dir_ = UP;
- s = s.left_str(s.length_i() - 2);
- }
- else
- octave_dir_ = CENTER;
- clef_type_str_ = s;
- if (clef_type_str_ == "violin" || clef_type_str_ == "G" || clef_type_str_ == "G2")
- c0_position_i_= -6;
- else if (clef_type_str_ == "french")
- c0_position_i_= -8;
- else if (clef_type_str_ == "soprano")
- c0_position_i_= -4;
- else if (clef_type_str_ == "mezzosoprano")
- c0_position_i_ = -2;
- else if (clef_type_str_ == "alto")
- c0_position_i_= 0;
- else if (clef_type_str_ == "tenor")
- c0_position_i_= 2;
- else if (clef_type_str_ == "baritone")
- c0_position_i_ = 4;
- else if (clef_type_str_ == "varbaritone")
- c0_position_i_ = 4;
- else if (clef_type_str_ == "bass" || clef_type_str_ == "F")
- c0_position_i_= 6;
- else if (clef_type_str_ == "subbass")
- c0_position_i_ = 8;
- else
- switch(clef_type_str_[0])
- {
- case 'F': case 'f':
- c0_position_i_ = 2 * (clef_type_str_[1] - '0') - 2;
- break;
- case 'G': case 'g':
- c0_position_i_ = 2 * (clef_type_str_[1] - '0') - 10;
- break;
- case 'C': case 'c':
- c0_position_i_ = 2 * (clef_type_str_[1] - '0') - 6;
- break;
- default:
- return false;
- }
- c0_position_i_ -= (int) octave_dir_ * 7;
-
- return true;
-}
-
-void
-Clef_engraver::fill_staff_info (Staff_info &i)
-{
- i.c0_position_i_l_ = &c0_position_i_;
-}
-
-void
-Clef_engraver::read_req (Clef_change_req*c_l)
-{
- if (!set_type (c_l->clef_str_))
- c_l->error (_("unknown clef type "));
-}
-
-
-/**
- Generate a clef at the start of a measure. (when you see a Bar,
- ie. a breakpoint)
- */
-void
-Clef_engraver::acknowledge_element (Score_elem_info info)
-{
- if (info.elem_l_->is_type_b (Bar::static_name ())
- && clef_type_str_.length_i())
- {
- create_clef();
- if (!clef_req_l_)
- clef_p_->default_b_ = true;
- }
-}
-
-void
-Clef_engraver::do_creation_processing()
-{
- Scalar def = get_property ("defaultclef");
- if (def.operator bool ()) // egcs: Scalar to bool is ambiguous
- set_type (def);
- if (clef_type_str_.length_i ())
- create_clef();
- clef_p_->default_b_ = false;
-}
-
-bool
-Clef_engraver::do_try_request (Request * r_l)
-{
- Command_req* creq_l= r_l->command();
- if (!creq_l || !creq_l->clefchange())
- return false;
-
- clef_req_l_ = creq_l->clefchange();
- read_req (clef_req_l_);
- return true;
-}
-
-void
-Clef_engraver::create_clef()
-{
- if (!clef_p_)
- {
- clef_p_ = new Clef_item;
- clef_p_->break_priority_i_ = -2; // ugh
- announce_element (Score_elem_info (clef_p_,clef_req_l_));
- }
- clef_p_->read (*this);
-}
-
-void
-Clef_engraver::do_process_requests()
-{
- if (clef_req_l_)
- {
- create_clef();
- clef_p_->default_b_ = false;
- }
-}
-
-void
-Clef_engraver::do_pre_move_processing()
-{
- if (clef_p_)
- {
- typeset_element (clef_p_);
- clef_p_ = 0;
- }
-}
-void
-Clef_engraver::do_post_move_processing()
-{
- clef_req_l_ = 0;
-}
-
-void
-Clef_engraver::do_removal_processing()
-{
- delete clef_p_;
- clef_p_ =0;
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Clef_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Clef_engraver);
diff --git a/lily/clef-item.cc b/lily/clef-item.cc
index 234b85fbb4..285d904a09 100644
--- a/lily/clef-item.cc
+++ b/lily/clef-item.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <ctype.h>
@@ -12,18 +12,19 @@
#include "molecule.hh"
#include "paper-def.hh"
#include "lookup.hh"
-#include "clef-grav.hh"
+#include "clef-engraver.hh"
#include "text-item.hh"
void
Clef_item::do_pre_processing()
{
- change_b_ = ! (break_status_i() == 1);
+ bool b= (break_status_dir() != RIGHT);
+ change_b_ = b;
if (default_b_)
{
- set_empty(break_status_i() != 1);
- transparent_b_ = (break_status_i() != 1);
+ set_empty(b);
+ transparent_b_ = b;
}
}
@@ -33,107 +34,21 @@ Clef_item::Clef_item()
default_b_ = false;
change_b_ = true;
octave_dir_ = CENTER;
- read ("violin");
+ symbol_ = "violin";
+ y_position_i_ = -2;
+
// Ugh: This should be const, I guess.
- octave_marker_td_p_ = new Text_def();
+ octave_marker_td_p_.set_p (new Text_def());
octave_marker_td_p_->text_str_ = "8";
octave_marker_td_p_->style_str_ = "italic";
}
-/*
- * Convert input clef string to
- * a clef symbol and a line position.
- * This would be better done in the lexer (more efficient)
- * or as a table-lookup.
- */
-void
-Clef_item::read (String t)
-{
- symbol_= t;
- if (t == "violin")
- {
- y_position_i_ = -2;
- }
- else if (t == "bass")
- {
- y_position_i_ = 2;
- }
- else if (t == "G" || t == "G2" || t == "treble")
- {
- symbol_ = "violin";
- y_position_i_ = -2;
- }
- else if (t == "french" || t == "G1")
- {
- symbol_="violin";
- y_position_i_ = -4;
- }
- else if (t == "soprano" || t == "C1")
- {
- symbol_="alto";
- y_position_i_ = -4;
- }
- else if (t == "mezzosoprano" || t == "C2")
- {
- symbol_ = "alto";
- y_position_i_ = -2;
- }
- else if (t == "alto")
- {
- symbol_ = "alto";
- y_position_i_ = 0;
- }
- else if (t == "C3")
- {
- symbol_ = "alto";
- y_position_i_ = 0;
- }
- else if (t == "tenor" || t == "C4")
- {
- symbol_ = "alto";
- y_position_i_ = 2;
- }
- else if (t == "baritone" || t == "C5")
- {
- symbol_ = "alto";
- y_position_i_ = 4;
- }
- else if (t == "varbaritone" || t == "F3")
- {
- symbol_ = "bass";
- y_position_i_ = 0;
- }
- else if (t == "F" || t == "F4")
- {
- symbol_ = "bass";
- y_position_i_ = 2;
- }
- else if (t == "subbass")
- {
- symbol_ = "bass";
- y_position_i_ = 4;
- }
- else if (isdigit(t[1]))
- switch (t[0])
- { // we've already dealt with plain F, G or C clef
- // position 0 is line 3.
- case 'G':
- case 'g':
- symbol_ = "violin";
- y_position_i_ = 2 * (t[1] - '0') - 6;
- break;
- case 'F':
- case 'f':
- symbol_ = "bass";
- y_position_i_ = 2 * (t[1] - '0') - 6;
- break;
- }
-}
void
Clef_item::read (Clef_engraver const &k)
{
- read (k.clef_type_str_);
+ symbol_ = k.clef_type_str_;
+ y_position_i_ = k.clef_position_i_;
octave_dir_ = k.octave_dir_;
}
@@ -143,16 +58,26 @@ Clef_item::brew_molecule_p() const
String t = symbol_;
if (change_b_)
t += "_change";
- Atom s = paper()->lookup_l ()->clef (t);
+ Atom s = lookup_l ()->clef (t);
Molecule*output = new Molecule (Atom (s));
output->translate_axis (paper()->internote_f () * y_position_i_, Y_AXIS);
- if (octave_dir_)
- output->add_at_edge (Y_AXIS,
- octave_dir_,
- Molecule(octave_marker_td_p_->get_atom(paper(),
- CENTER)));
+ if (octave_dir_) {
+ Molecule octave_marker = Molecule(octave_marker_td_p_->get_atom(paper(),
+ CENTER));
+ Real offset = output->extent()[Y_AXIS][octave_dir_]
+ - octave_marker.extent()[Y_AXIS][- octave_dir_];
+ if (octave_dir_ == DOWN)
+ offset += octave_marker.extent()[Y_AXIS][UP] * 0.35 ;
+ octave_marker.translate_axis (offset, Y_AXIS);
+ output->add_molecule (octave_marker);
+ }
return output;
}
IMPLEMENT_IS_TYPE_B1(Clef_item,Item);
+
+#include "pointer.tcc"
+template class P<Text_def>; // ugh
+
+
diff --git a/lily/col-info.cc b/lily/col-info.cc
index 85287257b0..581a9491b7 100644
--- a/lily/col-info.cc
+++ b/lily/col-info.cc
@@ -1,9 +1,9 @@
/*
- col-info.cc -- implement Colinfo
+ col-info.cc -- implement Column_info
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "p-col.hh"
@@ -11,12 +11,12 @@
#include "debug.hh"
void
-Colinfo::print() const
+Column_info::print() const
{
#ifndef NPRINT
DOUT << "column { ";
if (fixed_b())
- DOUT << "fixed at " << fixed_position()<<", ";
+ DOUT << "fixed at " << fixed_position() << ", ";
assert (pcol_l_);
DOUT << width_.str();
Direction d = LEFT;
@@ -29,7 +29,7 @@ Colinfo::print() const
#endif
}
-Colinfo::Colinfo (Paper_column *col_l, Real const *fixed_C)
+Column_info::Column_info (Paper_column *col_l, Real const *fixed_C)
{
if (fixed_C)
fixpos_p_.set_l (fixed_C);
@@ -41,26 +41,26 @@ Colinfo::Colinfo (Paper_column *col_l, Real const *fixed_C)
}
-Colinfo::Colinfo()
+Column_info::Column_info()
{
ugh_b_ = false;
pcol_l_ =0;
}
bool
-Colinfo::fixed_b () const
+Column_info::fixed_b () const
{
return fixpos_p_.get_C();
}
Real
-Colinfo::fixed_position () const
+Column_info::fixed_position () const
{
return *fixpos_p_;
}
int
-Colinfo::rank_i () const
+Column_info::rank_i () const
{
return pcol_l_->rank_i ();
}
diff --git a/lily/colhpos.cc b/lily/colhpos.cc
index 1e90ffeb37..8e37871558 100644
--- a/lily/colhpos.cc
+++ b/lily/colhpos.cc
@@ -1,9 +1,9 @@
/*
- colhpos.cc -- implement Col_hpositions
+ colhpos.cc -- implement Column_x_positions
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "colhpos.hh"
@@ -12,7 +12,7 @@
#include "vector.hh"
#include "line-spacer.hh"
-Col_hpositions::Col_hpositions()
+Column_x_positions::Column_x_positions()
{
energy_f_ = infinity_f;
ugh_b_ = false;
@@ -20,19 +20,19 @@ Col_hpositions::Col_hpositions()
spacer_l_ =0;
}
-Col_hpositions::~Col_hpositions()
+Column_x_positions::~Column_x_positions()
{
}
void
-Col_hpositions::add (Paper_column*c)
+Column_x_positions::add_paper_column (Paper_column*c)
{
cols.push (c);
}
void
-Col_hpositions::print() const
+Column_x_positions::print() const
{
#ifndef NPRINT
DOUT << "energy : " << energy_f_ << '\n';
@@ -43,7 +43,7 @@ Col_hpositions::print() const
}
void
-Col_hpositions::OK() const
+Column_x_positions::OK() const
{
#ifndef NDEBUG
assert (config.size() == cols.size ());
@@ -51,7 +51,7 @@ Col_hpositions::OK() const
}
void
-Col_hpositions::set_stupid_solution(Vector v)
+Column_x_positions::set_stupid_solution(Vector v)
{
energy_f_ = infinity_f;
ugh_b_ = true;
@@ -59,20 +59,20 @@ Col_hpositions::set_stupid_solution(Vector v)
}
void
-Col_hpositions::stupid_solution()
+Column_x_positions::stupid_solution()
{
set_stupid_solution (spacer_l_->default_solution());
}
void
-Col_hpositions::solve_line()
+Column_x_positions::solve_line()
{
spacer_l_->solve (this);
}
void
-Col_hpositions::approximate_solve_line()
+Column_x_positions::approximate_solve_line()
{
spacer_l_->lower_bound_solution (this);
}
diff --git a/lily/collision-engraver.cc b/lily/collision-engraver.cc
new file mode 100644
index 0000000000..be5ab22866
--- /dev/null
+++ b/lily/collision-engraver.cc
@@ -0,0 +1,59 @@
+/*
+ collision-reg.cc -- implement Collision_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "note-column.hh"
+#include "collision-engraver.hh"
+#include "collision.hh"
+
+void
+Collision_engraver::process_acknowledged ()
+{
+
+ if (col_p_ || note_column_l_arr_.size () < 2)
+ return ;
+ if (!col_p_)
+ {
+ col_p_ = new Collision;
+ announce_element (Score_element_info (col_p_,0));
+ }
+ for (int i=0; i< note_column_l_arr_.size (); i++)
+ col_p_->add_column (note_column_l_arr_[i]);
+}
+
+void
+Collision_engraver::acknowledge_element (Score_element_info i)
+{
+ if (i.elem_l_->is_type_b (Note_column::static_name ()))
+ {
+ Note_column * c = (Note_column*) i.elem_l_->access_Item ();
+ if (c->rest_b ())
+ return ;
+
+ note_column_l_arr_.push (c);
+ }
+}
+
+void
+Collision_engraver::do_pre_move_processing()
+{
+ if (col_p_)
+ {
+ typeset_element (col_p_);
+ col_p_ =0;
+ }
+ note_column_l_arr_.clear ();
+}
+
+Collision_engraver::Collision_engraver()
+{
+ col_p_ =0;
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Collision_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Collision_engraver);
diff --git a/lily/collision-grav.cc b/lily/collision-grav.cc
deleted file mode 100644
index 6a6dcef13c..0000000000
--- a/lily/collision-grav.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- collision-reg.cc -- implement Collision_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "note-column.hh"
-#include "collision-grav.hh"
-#include "collision.hh"
-
-void
-Collision_engraver::acknowledge_element (Score_elem_info i)
-{
- if (i.elem_l_->is_type_b (Note_column::static_name ()))
- {
- Note_column * c = (Note_column*) i.elem_l_->item ();
- if (c->rest_b ())
- return ;
- if (!col_p_)
- {
- col_p_ = new Collision;
- announce_element (Score_elem_info (col_p_,0));
- }
- col_p_->add (c);
- }
-}
-void
-Collision_engraver::do_pre_move_processing()
-{
- if (col_p_)
- {
- typeset_element (col_p_);
- col_p_ =0;
- }
-}
-Collision_engraver::Collision_engraver()
-{
- col_p_ =0;
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Collision_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Collision_engraver);
diff --git a/lily/collision.cc b/lily/collision.cc
index 2da1e0ddae..c63c71747c 100644
--- a/lily/collision.cc
+++ b/lily/collision.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "debug.hh"
#include "collision.hh"
@@ -16,7 +16,7 @@ Collision::Collision()
}
void
-Collision::add (Note_column* ncol_l)
+Collision::add_column (Note_column* ncol_l)
{
clash_l_arr_.push (ncol_l);
add_element (ncol_l);
@@ -59,7 +59,7 @@ Collision::do_pre_processing()
Note_column* c_l = clash_l_arr_[i];
if (! c_l->dir_)
{
- warning (_("No stem direction set. Ignoring column in clash. "));
+ warning (_ ("No stem direction set. Ignoring column in clash."));
continue;
}
int d = (c_l->dir_);
@@ -72,7 +72,7 @@ Collision::do_pre_processing()
{
if (clash_group_arr_a[j].size() > 1)
{
- warning (_("Too many clashing notecolumns. Ignoring them."));
+ warning (_ ("Too many clashing notecolumns. Ignoring them."));
return;
}
}
@@ -154,7 +154,7 @@ Collision::do_pre_processing()
(shaddup)
*/
Offset o (x_off[j] * wid_f, y_off[j] * inter_f);
- ((Score_elem*)col_l_a[j])->translate (o);
+ ((Score_element*)col_l_a[j])->translate (o);
}
}
}
@@ -163,8 +163,8 @@ Collision::do_pre_processing()
IMPLEMENT_IS_TYPE_B1(Collision, Item);
void
-Collision::do_substitute_dependency (Score_elem*o_l,Score_elem*n_l)
+Collision::do_substitute_dependency (Score_element*o_l,Score_element*n_l)
{
- clash_l_arr_.substitute ((Note_column*)o_l->item(),
- (Note_column*)(n_l?n_l->item():0));
+ clash_l_arr_.substitute ((Note_column*)o_l->access_Item (),
+ (Note_column*)(n_l?n_l->access_Item ():0));
}
diff --git a/lily/command-request.cc b/lily/command-request.cc
index 5cc36319bf..24f2fee50b 100644
--- a/lily/command-request.cc
+++ b/lily/command-request.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "command-request.hh"
@@ -32,7 +32,7 @@ Cadenza_req::do_print() const
bool
Cadenza_req::do_equal_b (Request*r) const
{
- Cadenza_req*cad = r->command()->timing ()->cadenza ();
+ Cadenza_req*cad = r->access_Command_req ()->access_Timing_req ()->access_Cadenza_req ();
return cad->on_b_ == on_b_;
}
@@ -41,13 +41,13 @@ Cadenza_req::Cadenza_req (bool b)
{
on_b_ =b;
}
-/* *************** */
+
bool
Bar_req::do_equal_b (Request*r) const
{
- Bar_req * b = r->command()->bar ();
+ Bar_req * b = r->access_Command_req ()->access_Bar_req ();
return type_str_ == b->type_str_;
}
@@ -73,7 +73,7 @@ Partial_measure_req::Partial_measure_req (Moment m)
bool
Partial_measure_req::do_equal_b (Request* r) const
{
- Partial_measure_req *p = r->command()->timing ()->partial ();
+ Partial_measure_req *p = r->access_Command_req ()->access_Timing_req ()->access_Partial_measure_req ();
return p->duration_ == duration_;
}
@@ -100,7 +100,7 @@ Barcheck_req::do_equal_b (Request*) const
{
return true;
}
-/* *************** */
+
IMPLEMENT_IS_TYPE_B1(Clef_change_req,Command_req);
@@ -117,7 +117,7 @@ Clef_change_req::Clef_change_req (String s)
clef_str_ = s;
}
-/* *************** */
+
IMPLEMENT_IS_TYPE_B1(Partial_measure_req,Timing_req);
@@ -129,10 +129,10 @@ Partial_measure_req::do_print() const
}
-IMPLEMENT_IS_TYPE_B1(Meter_change_req,Timing_req);
+IMPLEMENT_IS_TYPE_B1(Time_signature_change_req,Timing_req);
void
-Meter_change_req::do_print() const
+Time_signature_change_req::do_print() const
{
#ifndef NPRINT
DOUT << beats_i_ << "/" << one_beat_i_;
@@ -140,27 +140,20 @@ Meter_change_req::do_print() const
}
bool
-Meter_change_req::do_equal_b (Request * r) const
+Time_signature_change_req::do_equal_b (Request * r) const
{
- Meter_change_req * m = r->command()->timing ()->meterchange ();
+ Time_signature_change_req * m = r->access_Command_req ()->access_Timing_req ()->access_Time_signature_change_req ();
return m->beats_i_ == beats_i_
&& one_beat_i_ == m->one_beat_i_;
}
-Meter_change_req::Meter_change_req()
+Time_signature_change_req::Time_signature_change_req()
{
beats_i_ = 0;
one_beat_i_ =0;
}
-void
-Meter_change_req::set (int b,int o)
-{
- beats_i_=b;
- one_beat_i_=o;
-}
-
Tempo_req::Tempo_req()
{
@@ -171,19 +164,19 @@ Tempo_req::Tempo_req()
void
Tempo_req::do_print() const
{
- DOUT << dur_.str() << " = " <<metronome_i_ ;
+ DOUT << dur_.str() << " = " << metronome_i_;
}
IMPLEMENT_IS_TYPE_B1(Tempo_req, Timing_req);
bool
Tempo_req::do_equal_b (Request *r) const
{
- Tempo_req *t = r->command()->timing ()->tempo ();
+ Tempo_req *t = r->access_Command_req ()->access_Timing_req ()->access_Tempo_req ();
return t->dur_.length()== dur_.length () && metronome_i_ == t->metronome_i_;
}
-/* *************** */
+
IMPLEMENT_IS_TYPE_B1(Measure_grouping_req,Timing_req);
@@ -193,7 +186,7 @@ Measure_grouping_req::do_print() const
{
for (int i=0; i < elt_length_arr_.size(); i++)
{
- DOUT << beat_i_arr_[i] <<"*" << elt_length_arr_[i]<<" ";
+ DOUT << beat_i_arr_[i] << "*" << elt_length_arr_[i].str () << " ";
}
}
@@ -204,15 +197,100 @@ Measure_grouping_req::do_equal_b (Request*) const
return false; // todo
}
-/* *************** */
-
void
-Key_change_req::transpose (Musical_pitch d) const
+Key_change_req::transpose (Musical_pitch d)
{
- WARN << _("don't know how to transpose a key. \n"); // TODO!
+ if (ordinary_key_b_ )
+ {
+ if (pitch_arr_.size () > 0)
+ pitch_arr_[0].transpose(d);
+ else
+ {
+ warning(_ ("don't know how handle empty keys")); // TODO
+ }
+ }
+ else
+ {
+ Array<Musical_pitch> old_pitch_arr_;
+ for (int i = 0; i < pitch_arr_.size(); i++)
+ {
+ old_pitch_arr_.push(pitch_arr_[i]);
+ }
+ // set accidentals for \key d (as in Key_engraver::read_req)
+ // (later called "new accidentals")
+ int p = d.semitone_pitch ();
+ /* Solve the equation 7*no_of_acc mod 12 = p, -6 <= no_of_acc <= 5 */
+ int no_of_acc = (7*p) % 12;
+ no_of_acc = (no_of_acc + 18) % 12 -6;
+
+ /* Correct from flats to sharps or vice versa */
+ if (no_of_acc * d.accidental_i_ < 0)
+ no_of_acc += 12 * sign (d.accidental_i_);
+
+ pitch_arr_.clear ();
+ if (no_of_acc < 0)
+ {
+ int accidental = 6 ; // First accidental: bes
+ for ( ; no_of_acc < 0 ; no_of_acc++ )
+ {
+ Musical_pitch m;
+ m.accidental_i_ = -1;
+ m.notename_i_ = accidental;
+ pitch_arr_.push(m);
+
+ accidental = (accidental + 3) % 7 ;
+ }
+ }
+ else
+ {
+ int accidental = 3 ; // First accidental: fis
+ for ( ; no_of_acc > 0 ; no_of_acc-- )
+ {
+ Musical_pitch m;
+ m.accidental_i_ = 1;
+ m.notename_i_ = accidental;
+ pitch_arr_.push(m);
+
+ accidental = (accidental + 4) % 7 ;
+ }
+ }
+ // Check if transposed old accidentals and the new ones coincide
+ no_of_acc = pitch_arr_.size();
+ int acc_found;
+ Musical_pitch mm;
+ for (int i=0; i < old_pitch_arr_.size(); i++)
+ {
+ acc_found = 0;
+ mm = old_pitch_arr_[i];
+ mm.transpose(d);
+ for (int j=0; ((j < no_of_acc) && (acc_found == 0)); j++)
+ {
+ if (pitch_arr_[j].notename_i_ == mm.notename_i_)
+ {
+ if (mm.accidental_i_ == 0)
+ {
+ // remove new accidental
+ pitch_arr_.del(j);
+ no_of_acc--;
+ acc_found = 1;
+ }
+ else
+ {
+ // change new accidental
+ pitch_arr_[j].accidental_i_ = mm.accidental_i_;
+ acc_found = 1;
+ }
+ }
+ }
+ if (acc_found == 0)
+ {
+ // add transposed old accidental
+ pitch_arr_.push(mm);
+ }
+ }
+ }
}
-
IMPLEMENT_IS_TYPE_B1(Key_change_req,Command_req);
void
Key_change_req::squash_octaves()
@@ -237,7 +315,7 @@ Key_change_req::do_print() const
Key_change_req::Key_change_req()
{
minor_b_ = false;
- multi_octave_b_= false;
+ ordinary_key_b_= false;
}
IMPLEMENT_IS_TYPE_B1(Break_req, Command_req);
@@ -252,6 +330,19 @@ Break_req::do_print () const
{
}
+IMPLEMENT_IS_TYPE_B1 (Mark_req, Command_req);
+
+Mark_req::Mark_req (String s)
+{
+ str_ = s;
+}
+
+void
+Mark_req::do_print () const
+{
+ DOUT << str_;
+}
+
int
Key_change_req::flats_i()
{
@@ -264,8 +355,8 @@ Key_change_req::flats_i()
return flats_i;
}
-int
-Key_change_req::minor_b()
+bool
+Key_change_req::minor_b() const
{
return minor_b_;
}
@@ -276,7 +367,7 @@ Key_change_req::sharps_i()
int sharps_i = 0;
for (int i = 0; i < pitch_arr_.size(); i++)
{
- if (pitch_arr_[i].accidental_i_ < 0)
+ if (pitch_arr_[i].accidental_i_ > 0)
sharps_i += pitch_arr_[i].accidental_i_;
}
return sharps_i;
diff --git a/lily/crescendo.cc b/lily/crescendo.cc
index 0dee71825b..4b59b529ad 100644
--- a/lily/crescendo.cc
+++ b/lily/crescendo.cc
@@ -3,11 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "molecule.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "crescendo.hh"
#include "lookup.hh"
#include "paper-def.hh"
@@ -44,7 +44,7 @@ Crescendo::get_symbol() const
if (w_dim < 0)
{
- warning (_("Crescendo too small"));
+ warning (_ ("crescendo") + " " + _("too small"));
w_dim = 0;
}
@@ -57,7 +57,7 @@ Crescendo::get_symbol() const
bool continued = broken[(Direction)-grow_dir_];
- return Atom (paper()->lookup_l ()->hairpin (w_dim, grow_dir_ < 0, continued));
+ return Atom (lookup_l ()->hairpin (w_dim, grow_dir_ < 0, continued));
}
Molecule*
@@ -70,8 +70,8 @@ Crescendo::brew_molecule_p() const
m_p = new Molecule;
Atom s (get_symbol());
- m_p->add (Atom (s));
- m_p->translate (Offset (x_off_dim, y_));
+ m_p->add_atom (s);
+ m_p->translate (Offset (x_off_dim, coordinate_offset_f_));
return m_p;
}
diff --git a/lily/debug.cc b/lily/debug.cc
index 8fcb8eba4b..200af4ec32 100644
--- a/lily/debug.cc
+++ b/lily/debug.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996,98 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996,98 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <fstream.h>
@@ -12,12 +12,15 @@
// libg++ 2.8.0
// #include <std/new.h>
#include <stdlib.h>
+
+
#include "debug.hh"
#include "dstream.hh"
#include "flower-debug.hh"
#include "moment.hh"
-
+#include "misc.hh"
#include "main.hh"
+
Dstream *monitor=0;
ostream * nulldev =0;
@@ -50,7 +53,7 @@ mynewhandler()
void
float_handler (int)
{
- cerr << _("Floating point exception .. \n")<< flush;
+ cerr << _ ("Floating point exception") << endl;
assert (false);
}
@@ -72,30 +75,54 @@ bool check_debug=false;
bool check_malloc_b = false;
-//#define MEMORY_PARANOID
+// #define MEMORY_PARANOID
#ifdef MEMORY_PARANOID
#include <malloc.h>
+void
+frobnify (void *p, size_t s)
+{
+ char *cp = (char*)p;
+ char *e = cp + s;
+ while (cp < e)
+ {
+ *cp++ ^=42;
+ }
+}
+
+
void *
operator new (size_t size)
{
void *result;
result = malloc (size);
if (check_malloc_b)
- memfrob (result, size);
+ frobnify (result, size);
return result;
}
+void *to_frob; int frob_size;
+
+void
+set_frobnify (void * p, size_t sz)
+{
+ to_frob = p;
+ frob_size = sz;
+}
void
operator delete (void *p)
{
if (!p)
return ;
- if (check_malloc_b)
- memfrob (p, 8); // ugh. Need the blocksize. 8 is sysdependant
+ if (p == to_frob)
+ {
+ frobnify (p, frob_size);
+ to_frob = 0;
+ frob_size=0;
+ }
free (p);
}
@@ -106,11 +133,10 @@ set_debug (bool b)
{
check_debug =b;
set_flower_debug (*monitor, check_debug);
- check_malloc_b = experimental_features_global_b;
#ifdef MEMORY_PARANOID
if (check_malloc_b)
if (mcheck (0))
- warning ("Can't set mem-checking!");
+ warning (_ ("can't set mem-checking") + "!");
#endif
}
diff --git a/lily/dimen.cc b/lily/dimen.cc
index 5e85f4992d..d309241e23 100644
--- a/lily/dimen.cc
+++ b/lily/dimen.cc
@@ -1,5 +1,5 @@
#include <ctype.h>
-#include "dimen.hh"
+#include "dimension.hh"
#include "debug.hh"
#include "string.hh"
@@ -28,13 +28,19 @@ convert_dimen (Real quant, String unit)
return quant*CM_TO_PT/10;
if (unit == "in")
return quant * INCH_TO_PT;
- error (_("unknown length unit: `") + unit+"'");
+ error (_f ("unknown length unit: `%s\'", unit));
}
String
print_dimen (Real r)
{
- String s (r, "%.3f");
+ String s = to_str (r, "%.3f");
+ if (s.index_i ("NaN") != -1)
+ {
+ warning (_ ("NaN"));
+ s = "0.0";
+ }
s += "pt ";
return s;
}
+
diff --git a/lily/direction.cc b/lily/direction.cc
index 802418fce5..1c2481953f 100644
--- a/lily/direction.cc
+++ b/lily/direction.cc
@@ -4,7 +4,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/dot-column-engraver.cc b/lily/dot-column-engraver.cc
new file mode 100644
index 0000000000..04ae0bfba4
--- /dev/null
+++ b/lily/dot-column-engraver.cc
@@ -0,0 +1,54 @@
+/*
+ dot-column-engraver.cc -- implement Dot_column_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "dot-column-engraver.hh"
+#include "rhythmic-head.hh"
+#include "dot-column.hh"
+
+Dot_column_engraver::Dot_column_engraver ()
+{
+ dotcol_p_ =0;
+}
+
+void
+Dot_column_engraver::do_pre_move_processing ()
+{
+ if (dotcol_p_)
+ {
+ typeset_element (dotcol_p_);
+ dotcol_p_ =0;
+ }
+ head_l_arr_.clear ();
+}
+
+void
+Dot_column_engraver::acknowledge_element (Score_element_info info)
+{
+ Item * i=info.elem_l_->access_Item ();
+
+ if (! (i && i->is_type_b (Rhythmic_head::static_name ())))
+ return;
+
+ Rhythmic_head * h = (Rhythmic_head*)i;
+
+ if (!h->dots_l_)
+ return;
+
+ if (!dotcol_p_)
+ {
+ dotcol_p_ = new Dot_column;
+ announce_element (Score_element_info (dotcol_p_, 0));
+ }
+
+ dotcol_p_->add_head (h);
+}
+
+
+ADD_THIS_TRANSLATOR(Dot_column_engraver);
+IMPLEMENT_IS_TYPE_B1(Dot_column_engraver,Engraver);
diff --git a/lily/dot-column.cc b/lily/dot-column.cc
index 4c44095826..bb1885ca88 100644
--- a/lily/dot-column.cc
+++ b/lily/dot-column.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "dots.hh"
@@ -11,7 +11,7 @@
#include "rhythmic-head.hh"
void
-Dot_column::add (Dots *d)
+Dot_column::add_dots (Dots *d)
{
dot_l_arr_.push (d);
add_dependency (d);
@@ -19,21 +19,21 @@ Dot_column::add (Dots *d)
}
void
-Dot_column::add (Rhythmic_head *r)
+Dot_column::add_head (Rhythmic_head *r)
{
if (!r->dots_l_)
return ;
head_l_arr_.push (r);
add_dependency (r);
- add (r->dots_l_);
+ add_dots (r->dots_l_);
}
void
-Dot_column::do_substitute_dependency (Score_elem*o,Score_elem*n)
+Dot_column::do_substitute_dependency (Score_element*o,Score_element*n)
{
- Item *oi =o->item ();
- Item *ni = n?n->item ():0;
+ Item *oi =o->access_Item ();
+ Item *ni = n?n->access_Item ():0;
if (oi&&oi->is_type_b (Rhythmic_head::static_name ()))
head_l_arr_.substitute ((Rhythmic_head*)oi, (Rhythmic_head*)ni);
diff --git a/lily/dots.cc b/lily/dots.cc
index 20cf87a515..370ea3dbe7 100644
--- a/lily/dots.cc
+++ b/lily/dots.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "dots.hh"
@@ -33,18 +33,18 @@ Molecule*
Dots::brew_molecule_p () const
{
Molecule *out = new Molecule;
- Atom fill = paper ()->lookup_l ()->fill (Box (Interval (0,0),
+ Atom fill = lookup_l ()->fill (Box (Interval (0,0),
Interval (0,0)));
- out->add(fill);
+ out->add_atom (fill);
- Atom d = paper ()->lookup_l ()->dots ();
+ Atom d = lookup_l ()->dots ();
Real dw = d.dim_[X_AXIS].length ();
d.translate_axis (-dw, X_AXIS);
for (int i=no_dots_i_; i--; )
{
d.translate_axis (2*dw,X_AXIS);
- out->add (d);
+ out->add_atom (d);
}
Real inter_f = paper ()->internote_f ();
out->translate_axis (inter_f * position_i_, Y_AXIS);
diff --git a/lily/dynamic-grav.cc b/lily/dynamic-engraver.cc
index 9a0913c129..9fc4704f2c 100644
--- a/lily/dynamic-grav.cc
+++ b/lily/dynamic-engraver.cc
@@ -3,11 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "debug.hh"
#include "crescendo.hh"
-#include "dynamic-grav.hh"
+#include "dynamic-engraver.hh"
#include "musical-request.hh"
#include "text-item.hh"
#include "lookup.hh"
@@ -34,24 +34,23 @@ Dynamic_engraver::do_post_move_processing()
bool
Dynamic_engraver::do_try_request (Request * r)
{
- Musical_req * m = r->musical();
+ Musical_req * m = r->access_Musical_req ();
if (!m)
return false;
- Dynamic_req * d = m->dynamic ();
+ Dynamic_req * d = m->access_Dynamic_req ();
if (!d)
return false;
- if (cresc_p_ && d->span_dynamic ()
- && d->span_dynamic ()->spantype == Span_req::START)
+#if 0
+ if (cresc_p_ && d->access_Span_dynamic_req ()
+ && d->access_Span_dynamic_req ()->spantype == Span_req::START)
return false;
- if (d->absdynamic ())
- {
- for (int i=0; i < dynamic_req_l_arr_.size (); i++)
- if (d->equal_b (dynamic_req_l_arr_[i]))
- return true;
- }
+#endif
+ for (int i=0; i < dynamic_req_l_arr_.size (); i++)
+ if (d->equal_b (dynamic_req_l_arr_[i]))
+ return true;
- dynamic_req_l_arr_.push (m->dynamic());
+ dynamic_req_l_arr_.push (m->access_Dynamic_req ());
return true;
}
void
@@ -61,28 +60,34 @@ Dynamic_engraver::do_process_requests()
for (int i=0; i < dynamic_req_l_arr_.size(); i++)
{
Dynamic_req *dreq_l = dynamic_req_l_arr_[i];
- if (dreq_l->absdynamic())
+ if (dreq_l->access_Absolute_dynamic_req ())
{
+
+ if (dynamic_p_)
+ {
+ dynamic_req_l_arr_[i]->warning (_("Got a dynamic already. Continuing dazed and confused"));
+ continue;
+ }
+
Text_def * td_p = new Text_def;
- td_p->align_i_ = CENTER;
- String loud = dreq_l->absdynamic()->loudness_str ();
- td_p->text_str_ = paper()->lookup_l ()->dynamic (loud).tex_;
+ 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->style_str_ = "dynamic";
- assert (!dynamic_p_) ; // TODO
+
dynamic_p_ = new Text_item (td_p);
- announce_element (Score_elem_info (dynamic_p_, dreq_l));
+ announce_element (Score_element_info (dynamic_p_, dreq_l));
}
- else if (dreq_l->span_dynamic())
+ else if (dreq_l->access_Span_dynamic_req ())
{
-
- Span_dynamic_req* span_l = dreq_l->span_dynamic();
+ Span_dynamic_req* span_l = dreq_l->access_Span_dynamic_req ();
if (span_l->spantype == Span_req::STOP)
{
if (!cresc_p_)
{
- span_l->warning (_("Can't find cresc to end "));
+ span_l->warning (_ ("can't find (de)crescendo to end"));
}
else
{
@@ -97,13 +102,20 @@ Dynamic_engraver::do_process_requests()
assert (!new_cresc_p);
new_cresc_p = new Crescendo;
new_cresc_p->grow_dir_ = span_l->dynamic_dir_;
- announce_element (Score_elem_info (new_cresc_p, span_l));
+ announce_element (Score_element_info (new_cresc_p, span_l));
}
}
}
if (new_cresc_p)
{
+ if (cresc_p_)
+ {
+ ::warning (_ ("Too many crescendi here"));
+ typeset_element (cresc_p_);
+ cresc_p_ = 0;
+ }
+
cresc_p_ = new_cresc_p;
cresc_p_->set_bounds(LEFT,get_staff_info().musical_l ());
if (dynamic_p_)
@@ -122,6 +134,12 @@ Dynamic_engraver::do_pre_move_processing()
if (dynamic_p_)
to_end_cresc_p_->dyn_b_drul_[RIGHT]=true;
+
+ Scalar prop = get_property ("dynamicdir");
+ if (prop.isnum_b ())
+ {
+ to_end_cresc_p_->dir_ = (Direction) (int) prop;
+ }
to_end_cresc_p_->set_bounds(RIGHT,get_staff_info().musical_l ());
to_end_cresc_p_->add_support (s_l);
typeset_element (to_end_cresc_p_);
@@ -129,6 +147,11 @@ Dynamic_engraver::do_pre_move_processing()
}
if (dynamic_p_)
{
+ Scalar prop = get_property ("dynamicdir");
+ if (prop.isnum_b ())
+ {
+ dynamic_p_->dir_ = (Direction) (int) prop;
+ }
dynamic_p_->add_support (s_l);
typeset_element (dynamic_p_);
@@ -147,7 +170,7 @@ Dynamic_engraver::do_removal_processing ()
{
typeset_element (cresc_p_ );
- cresc_req_l_->warning (_("unended crescendo"));
+ cresc_req_l_->warning (_ ("unended crescendo"));
cresc_p_ =0;
}
if (to_end_cresc_p_)
@@ -163,7 +186,7 @@ Dynamic_engraver::do_removal_processing ()
}
void
-Dynamic_engraver::acknowledge_element (Score_elem_info i)
+Dynamic_engraver::acknowledge_element (Score_element_info i)
{
if (i.elem_l_->is_type_b (Note_column::static_name ()))
{
diff --git a/lily/encompass-info.cc b/lily/encompass-info.cc
index 193ef482b5..3da2c28559 100644
--- a/lily/encompass-info.cc
+++ b/lily/encompass-info.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc
index bd6873d0d2..8ac916b547 100644
--- a/lily/engraver-group.cc
+++ b/lily/engraver-group.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "proto.hh"
@@ -12,13 +12,13 @@
#include "engraver.hh"
#include "debug.hh"
#include "p-score.hh"
-#include "score-elem.hh"
+#include "score-element.hh"
IMPLEMENT_IS_TYPE_B2(Engraver_group_engraver,Engraver, Translator_group);
ADD_THIS_TRANSLATOR(Engraver_group_engraver);
void
-Engraver_group_engraver::announce_element (Score_elem_info info)
+Engraver_group_engraver::announce_element (Score_element_info info)
{
announce_info_arr_.push (info);
Engraver::announce_element (info);
@@ -46,7 +46,7 @@ Engraver_group_engraver::do_announces()
{
for (int j =0; j < announce_info_arr_.size(); j++)
{
- Score_elem_info info = announce_info_arr_[j];
+ Score_element_info info = announce_info_arr_[j];
if (!info.req_l_)
info.req_l_ = &dummy_req;
diff --git a/lily/engraver.cc b/lily/engraver.cc
index 2ccf335069..696bedcf2e 100644
--- a/lily/engraver.cc
+++ b/lily/engraver.cc
@@ -3,7 +3,7 @@
Sourcefile of GNU LilyPond musictypesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "music-list.hh"
@@ -20,7 +20,7 @@ Engraver::fill_staff_info (Staff_info&)
void
-Engraver::announce_element (Score_elem_info i)
+Engraver::announce_element (Score_element_info i)
{
i.origin_grav_l_arr_.push (this);
daddy_grav_l()->announce_element (i);
@@ -28,7 +28,7 @@ Engraver::announce_element (Score_elem_info i)
void
-Engraver::typeset_element (Score_elem*p)
+Engraver::typeset_element (Score_element*p)
{
daddy_grav_l()->typeset_element (p);
}
diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc
new file mode 100644
index 0000000000..6689e91eac
--- /dev/null
+++ b/lily/font-size-engraver.cc
@@ -0,0 +1,36 @@
+/*
+ font-size-grav.cc -- implement Font_size_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "font-size-engraver.hh"
+#include "score-element.hh"
+
+Font_size_engraver::Font_size_engraver ()
+{
+ size_i_ = 0;
+}
+
+void
+Font_size_engraver::do_process_requests ()
+{
+ Scalar s (get_property ("fontsize"));
+
+ if (s.length_i () && s.isnum_b ())
+ {
+ size_i_ = int (s);
+ }
+}
+
+void
+Font_size_engraver::acknowledge_element (Score_element_info e)
+{
+ e.elem_l_->size_i_ = size_i_;
+}
+
+ADD_THIS_TRANSLATOR (Font_size_engraver);
+IMPLEMENT_IS_TYPE_B1(Font_size_engraver,Engraver);
diff --git a/lily/general-script-def.cc b/lily/general-script-def.cc
index 9d7b657880..ba7da733e2 100644
--- a/lily/general-script-def.cc
+++ b/lily/general-script-def.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/global-translator.cc b/lily/global-translator.cc
index 3620c52d69..1c8179441f 100644
--- a/lily/global-translator.cc
+++ b/lily/global-translator.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "global-translator.hh"
diff --git a/lily/gourlay-breaking.cc b/lily/gourlay-breaking.cc
index 58e08b959c..d8fda8415c 100644
--- a/lily/gourlay-breaking.cc
+++ b/lily/gourlay-breaking.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "gourlay-breaking.hh"
@@ -27,7 +27,7 @@ struct Break_node {
int prev_break_i_;
int line_i_;
Real energy_f_;
- Col_hpositions line_config_;
+ Column_x_positions line_config_;
Break_node ()
{
prev_break_i_ = -1;
@@ -39,7 +39,7 @@ struct Break_node {
This algorithms is adapted from
*/
-Array<Col_hpositions>
+Array<Column_x_positions>
Gourlay_breaking::do_solve () const
{
Array<Break_node> optimal_paths;
@@ -60,7 +60,7 @@ Gourlay_breaking::do_solve () const
for (; break_idx< breaks.size (); break_idx++)
{
Array<int> candidates;
- Array<Col_hpositions> candidate_lines;
+ Array<Column_x_positions> candidate_lines;
Pointer_list<Line_spacer*> spacer_p_list;
/*
@@ -85,7 +85,7 @@ Gourlay_breaking::do_solve () const
if (!feasible (line))
break;
- Col_hpositions approx;
+ Column_x_positions approx;
approx.cols = line;
approx.spacer_l_ = generate_spacing_problem (line,
@@ -148,15 +148,15 @@ Gourlay_breaking::do_solve () const
}
if (! (break_idx % HAPPY_DOTS_I))
- *mlog << "[" << break_idx << "]"<<flush;
+ *mlog << "[" << break_idx << "]" << flush;
}
if (break_idx % HAPPY_DOTS_I)
- *mlog << "[" << break_idx << "]"<<flush;
+ *mlog << "[" << break_idx << "]" << flush;
Array<int> final_breaks;
- Array<Col_hpositions> lines;
+ Array<Column_x_positions> lines;
/* skip 0-th element, since it is a "dummy" elt*/
for (int i = optimal_paths.size ()-1; i> 0;)
diff --git a/lily/graphical-axis-group.cc b/lily/graphical-axis-group.cc
new file mode 100644
index 0000000000..b0aab89df0
--- /dev/null
+++ b/lily/graphical-axis-group.cc
@@ -0,0 +1,90 @@
+/*
+ axis-group.cc -- implement Graphical_axis_group
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+#include "interval.hh"
+#include "graphical-axis-group.hh"
+#include "axis-group-element.hh"
+#include "graphical-element.hh"
+#include "debug.hh"
+
+/** don't copy anything: an element can only be in one
+ Graphical_axis_group at one time. */
+Graphical_axis_group::Graphical_axis_group (Graphical_axis_group const&s)
+{
+ axis1_ = s.axis1_;
+ axis2_ = s.axis2_;
+}
+
+bool
+Graphical_axis_group::contains_b (Graphical_element const *e) const
+{
+ return elem_l_arr_.find_l (e);
+}
+
+Interval
+Graphical_axis_group::extent (Axis axis) const
+{
+ Interval r;
+ for (int i=0; i < elem_l_arr_.size(); i++)
+ r.unite (elem_l_arr_[i]->extent (axis));
+ return r;
+}
+
+void
+Graphical_axis_group::add_element (Graphical_element*e)
+{
+ Graphical_axis_group *& g1 = e->axis_group_l_a_[axis1_];
+ Graphical_axis_group *& g2 = e->axis_group_l_a_[axis2_];
+
+ assert (!g1 || g1 == this);
+ assert (!g2 || g2 == this);
+ g1 = this;
+ g2 = this;
+ elem_l_arr_.push (e);
+}
+
+
+
+void
+Graphical_axis_group::remove_element (Graphical_element*e)
+{
+ assert (contains_b (e));
+ elem_l_arr_.unordered_substitute (e,0);
+
+ e->axis_group_l_a_[axis1_] = 0;
+ e->axis_group_l_a_[axis2_] = 0;
+}
+
+void
+Graphical_axis_group::remove_all ()
+{
+ for (int i=0; i < elem_l_arr_.size(); i++)
+ {
+ Graphical_element*e=elem_l_arr_[i];
+ e->axis_group_l_a_[axis1_] = 0;
+ e->axis_group_l_a_[axis2_] = 0;
+ }
+ elem_l_arr_.clear ();
+}
+
+
+void
+Graphical_axis_group::do_print() const
+{
+#ifndef NPRINT
+ for (int i=0; i < elem_l_arr_.size(); i++)
+ DOUT << elem_l_arr_[i]->name () << " ";
+#endif
+}
+
+Graphical_axis_group::Graphical_axis_group (Axis a1, Axis a2)
+{
+ axis1_ =a1;
+ axis2_ = a2;
+}
+
+IMPLEMENT_IS_TYPE_B1(Graphical_axis_group, Graphical_element);
diff --git a/lily/graphical-element.cc b/lily/graphical-element.cc
index f9273f0ee3..d604fba9c3 100644
--- a/lily/graphical-element.cc
+++ b/lily/graphical-element.cc
@@ -3,11 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "graphical-element.hh"
-#include "axis-group-element.hh"
+#include "graphical-axis-group.hh"
#include "debug.hh"
bool
@@ -26,14 +26,9 @@ Graphical_element::Graphical_element (Graphical_element const &s)
init ();
empty_b_ = s.empty_b_;
axis_group_l_a_[0] = axis_group_l_a_[1] =0;
- offset_ = Offset (0,0);
+ offset_ = Offset (0,0); // Hmmmm.... Should copy?
}
-Graphical_element::~Graphical_element ()
-{
-
-}
-
void
Graphical_element::init ()
{
@@ -58,7 +53,7 @@ Real
Graphical_element::absolute_coordinate (Axis a) const
{
Real r = offset_[a];
- for (Axis_group_element * axis_group_l = axis_group_l_a_[a];
+ for (Graphical_axis_group * axis_group_l = axis_group_l_a_[a];
axis_group_l; axis_group_l = axis_group_l->axis_group_l_a_[a])
r += axis_group_l->offset_[a];
@@ -81,10 +76,10 @@ Graphical_element::translate_axis (Real y, Axis a)
}
Real
-Graphical_element::relative_coordinate (Axis_group_element*e, Axis a) const
+Graphical_element::relative_coordinate (Graphical_axis_group*e, Axis a) const
{
Real r =0.0;
- for (Axis_group_element * axis_group_l = axis_group_l_a_[a];
+ for (Graphical_axis_group * axis_group_l = axis_group_l_a_[a];
axis_group_l != e;
axis_group_l = axis_group_l->axis_group_l_a_[a])
r += axis_group_l->offset_[a];
@@ -92,17 +87,17 @@ Graphical_element::relative_coordinate (Axis_group_element*e, Axis a) const
return r;
}
-Axis_group_element*
+Graphical_axis_group*
Graphical_element::common_group (Graphical_element const* s, Axis a) const
{
- Link_array<Axis_group_element> my_groups;
- for (Axis_group_element * axis_group_l = axis_group_l_a_[a];
+ Link_array<Graphical_axis_group> my_groups;
+ for (Graphical_axis_group * axis_group_l = axis_group_l_a_[a];
axis_group_l;
axis_group_l = axis_group_l->axis_group_l_a_[a])
my_groups.push (axis_group_l);
- Axis_group_element* common_l=0;
- for (Axis_group_element * axis_group_l = s->axis_group_l_a_[a];
+ Graphical_axis_group* common_l=0;
+ for (Graphical_axis_group * axis_group_l = s->axis_group_l_a_[a];
!common_l && axis_group_l;
axis_group_l = axis_group_l->axis_group_l_a_[a])
common_l = my_groups.find_l (axis_group_l);
@@ -169,7 +164,7 @@ Graphical_element::height() const
void
Graphical_element::unlink ()
{
- for (int j=0; j < 2; j++)
+ for (int j=0; j < 2; j++)
if (axis_group_l_a_[j])
axis_group_l_a_[j]->remove_element (this);
}
@@ -181,12 +176,12 @@ Graphical_element::junk_links ()
}
void
-Graphical_element::print () const
+Graphical_element::do_print () const
{
#ifndef NPRINT
if (offset_.x() || offset_.y ())
DOUT << "offset: " << offset_.str() ;
- DOUT << "\n";
+ DOUT << '\n';
#endif
}
diff --git a/lily/grouping.cc b/lily/grouping.cc
index 2bdaed7db1..af7d234bf4 100644
--- a/lily/grouping.cc
+++ b/lily/grouping.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "debug.hh"
diff --git a/lily/hara-kiri-line-group-engraver.cc b/lily/hara-kiri-line-group-engraver.cc
index fecde2402d..ab12bf8780 100644
--- a/lily/hara-kiri-line-group-engraver.cc
+++ b/lily/hara-kiri-line-group-engraver.cc
@@ -3,16 +3,16 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "staff-sym.hh"
#include "command-request.hh"
-#include "p-col.hh"
+#include "note-head.hh"
#include "hara-kiri-vertical-group-spanner.hh"
#include "hara-kiri-line-group-engraver.hh"
-IMPLEMENT_IS_TYPE_B1 (Hara_kiri_line_group_engraver,Engraver);
+IMPLEMENT_IS_TYPE_B1 (Hara_kiri_line_group_engraver,Line_group_engraver_group);
ADD_THIS_TRANSLATOR (Hara_kiri_line_group_engraver);
void
@@ -20,3 +20,14 @@ Hara_kiri_line_group_engraver::create_line_spanner ()
{
staffline_p_ = new Hara_kiri_vertical_group_spanner;
}
+
+void
+Hara_kiri_line_group_engraver::typeset_element(Score_element * e)
+{
+ if (e->is_type_b (Note_head::static_name ()))
+ ((Hara_kiri_vertical_group_spanner*)staffline_p_)->add_note
+ ((Note_head*)e->access_Item ());
+
+ Line_group_engraver_group::typeset_element (e);
+}
+
diff --git a/lily/hara-kiri-vertical-group-spanner.cc b/lily/hara-kiri-vertical-group-spanner.cc
index 92fc9e29ee..849a2552fa 100644
--- a/lily/hara-kiri-vertical-group-spanner.cc
+++ b/lily/hara-kiri-vertical-group-spanner.cc
@@ -4,51 +4,53 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "hara-kiri-vertical-group-spanner.hh"
-#include "item.hh"
+#include "debug.hh"
#include "note-head.hh"
-#include "p-col.hh"
-#include "molecule.hh"
+#include "bar.hh"
IMPLEMENT_IS_TYPE_B1 (Hara_kiri_vertical_group_spanner, Vertical_group_spanner);
-void
-Hara_kiri_vertical_group_spanner::add_element (Graphical_element* e)
+Hara_kiri_vertical_group_spanner::Hara_kiri_vertical_group_spanner()
{
- if (e->is_type_b (Note_head::static_name ()))
- add_dependency ((Score_elem*)e);
- Vertical_group_spanner::add_element (e);
}
-// we never get here, or indeed in axis-group-spanner::do_break_processing?
void
-Hara_kiri_vertical_group_spanner::do_break_processing ()
+Hara_kiri_vertical_group_spanner::add_note (Note_head* n)
{
- Vertical_group_spanner::do_break_processing ();
- if (dependency_size ())
- return;
- transparent_b_ = true;
+ add_dependency (n);
+ head_l_arr_.push (n);
}
-// too late ?
void
Hara_kiri_vertical_group_spanner::do_post_processing ()
{
- if (dependency_size ())
+ if (!head_l_arr_.empty ())
return;
- transparent_b_ = true;
+
+ Link_array<Score_element> childs = get_children ();
+ for (int i = 0; i < childs.size (); i++)
+ {
+ childs[i]->transparent_b_ = true;
+ childs[i]->set_empty (true);
+ }
+ set_empty (true);
}
-Molecule*
-Hara_kiri_vertical_group_spanner::brew_molecule_p() const
+void
+Hara_kiri_vertical_group_spanner::do_substitute_dependency (Score_element*o, Score_element*n)
{
- // aaarg: go away
- if (1) // transparent_b_)
- return new Molecule;
- return Vertical_group_spanner::brew_molecule_p ();
+ if (o->is_type_b (Note_head::static_name ()))
+ head_l_arr_.substitute ((Note_head*)o->access_Item (),
+ (n)? (Note_head*)n->access_Item () : 0);
}
+void
+Hara_kiri_vertical_group_spanner::do_print () const
+{
+ Axis_group_spanner::do_print ();
+}
diff --git a/lily/head-grav.cc b/lily/head-engraver.cc
index 5820c5fa5f..c8c5e79248 100644
--- a/lily/head-grav.cc
+++ b/lily/head-engraver.cc
@@ -1,11 +1,11 @@
/*
head-grav.cc -- part of GNU LilyPond
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "note-head.hh"
-#include "head-grav.hh"
+#include "head-engraver.hh"
#include "paper-def.hh"
#include "musical-request.hh"
#include "dots.hh"
@@ -23,11 +23,11 @@ Note_head_engraver::do_try_request (Request *req_l)
if (note_req_l_)
return false;
- if (!(req_l->musical() && req_l->musical ()->note ()))
+ if (!(req_l->access_Musical_req () && req_l->access_Musical_req ()->access_Note_req ()))
return false;
- note_req_l_=req_l->musical()->rhythmic ();
+ note_req_l_=req_l->access_Musical_req ()->access_Rhythmic_req ();
return true;
}
@@ -44,17 +44,13 @@ Note_head_engraver::do_process_requests()
{
dot_p_ = new Dots;
note_p_->dots_l_ = dot_p_;
- announce_element (Score_elem_info (dot_p_,0));
+ announce_element (Score_element_info (dot_p_,0));
}
- note_p_->position_i_ = note_req_l_->note()->pitch_.steps ();
-
- Staff_info inf = get_staff_info();
- if (inf.c0_position_i_l_)
- note_p_->position_i_ += *inf.c0_position_i_l_;
+ note_p_->position_i_ = note_req_l_->access_Note_req ()->pitch_.steps ();
- Score_elem_info itinf (note_p_,note_req_l_);
+ Score_element_info itinf (note_p_,note_req_l_);
announce_element (itinf);
}
diff --git a/lily/header.cc b/lily/header.cc
index 39dffd5dbf..2a38c5e597 100644
--- a/lily/header.cc
+++ b/lily/header.cc
@@ -3,12 +3,16 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "string.hh"
#include "dictionary-iter.hh"
#include "header.hh"
+#include "main.hh"
+
+extern char const *lily_version_number_sz();
+
String
Header::TeX_string() const
@@ -23,3 +27,9 @@ Header::TeX_string() const
}
return s;
}
+
+Header::Header ()
+{
+ lily_id_str_ = "Lily was here, " +
+ String (lily_version_number_sz ());
+}
diff --git a/lily/heads-engraver.cc b/lily/heads-engraver.cc
new file mode 100644
index 0000000000..63e192ea06
--- /dev/null
+++ b/lily/heads-engraver.cc
@@ -0,0 +1,86 @@
+/*
+ head-grav.cc -- part of GNU LilyPond
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "note-head.hh"
+#include "heads-engraver.hh"
+#include "paper-def.hh"
+#include "musical-request.hh"
+#include "dots.hh"
+#include "dot-column.hh"
+
+Note_heads_engraver::Note_heads_engraver()
+{
+}
+
+bool
+Note_heads_engraver::do_try_request (Request *req_l)
+{
+ if (!req_l->access_Musical_req ())
+ return false;
+
+ Note_req * n =req_l->access_Musical_req ()->access_Note_req ();
+ if (!n)
+ return false;
+
+ note_req_l_arr_.push (n);
+ return true;
+}
+
+void
+Note_heads_engraver::do_process_requests()
+{
+ if (note_p_arr_.size ())
+ return ;
+
+ for (int i=0; i < note_req_l_arr_.size (); i++)
+ {
+ Note_head *note_p = new Note_head;
+ Note_req * note_req_l = note_req_l_arr_[i];
+ note_p->balltype_i_ = note_req_l->duration_.durlog_i_;
+ note_p->dots_i_ = note_req_l->duration_.dots_i_;
+ if (note_p->dots_i_)
+ {
+ Dots * d = new Dots;
+ note_p->dots_l_ = d;
+ announce_element (Score_element_info (d,0));
+ dot_p_arr_.push (d);
+ }
+
+ note_p->position_i_ = note_req_l->access_Note_req ()->pitch_.steps ();
+
+
+ Score_element_info itinf (note_p,note_req_l);
+ announce_element (itinf);
+ note_p_arr_.push (note_p);
+ }
+}
+
+void
+Note_heads_engraver::do_pre_move_processing()
+{
+ for (int i=0; i < note_p_arr_.size (); i++)
+ {
+ typeset_element (note_p_arr_[i]);
+ }
+ note_p_arr_.clear ();
+ for (int i=0; i < dot_p_arr_.size (); i++)
+ {
+ typeset_element (dot_p_arr_[i]);
+ }
+ dot_p_arr_.clear ();
+
+ note_req_l_arr_.clear ();
+}
+
+void
+Note_heads_engraver::do_post_move_processing()
+{
+
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Note_heads_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Note_heads_engraver);
diff --git a/lily/horizontal-align-item.cc b/lily/horizontal-align-item.cc
index 82a81c2300..a22f30eb5e 100644
--- a/lily/horizontal-align-item.cc
+++ b/lily/horizontal-align-item.cc
@@ -3,112 +3,18 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "horizontal-align-item.hh"
#include "debug.hh"
-IMPLEMENT_IS_TYPE_B1(Horizontal_align_item,Item);
-
-bool
-Horizontal_align_item::contains_b (Item *i) const
-{
- return item_l_arr_.find_l (i);
-}
-
-void
-Horizontal_align_item::add (Item *i,int p)
-{
- assert (! contains_b (i));
- priority_i_arr_.push (p);
- item_l_arr_.push (i);
- add_dependency (i);
-}
-
-void
-Horizontal_align_item::do_substitute_dependency (Score_elem*o,Score_elem*n)
-{
- int i;
- while ((i = item_l_arr_.find_i (o->item())) >=0)
- {
- if (n)
- item_l_arr_[i] = n->item();
- else
- item_l_arr_.del (i);
- }
-}
-
-struct Horizontal_align_item_content {
- Item * item_l_;
- int priority_i_;
- static int compare (Horizontal_align_item_content const &h1,
- Horizontal_align_item_content const &h2)
- {
- return h1.priority_i_ - h2.priority_i_;
- }
- Horizontal_align_item_content (Item*i, int p)
- {
- priority_i_ = p;
- item_l_ = i;
- }
- Horizontal_align_item_content(){item_l_ =0; priority_i_ =0; }
-};
-
+IMPLEMENT_IS_TYPE_B2(Horizontal_align_item,Align_element,Item);
void
-Horizontal_align_item::do_pre_processing()
+Horizontal_align_item::add_item (Item *i,int p)
{
- {
- Array<Horizontal_align_item_content> content;
- for (int i =0; i < item_l_arr_.size(); i++)
- content.push (
- Horizontal_align_item_content (
- item_l_arr_[i], priority_i_arr_[i]));
- content.sort (Horizontal_align_item_content::compare);
- item_l_arr_.clear();
- priority_i_arr_.clear();
- for (int i =0; i < content.size(); i++)
- {
- item_l_arr_.push (content[i].item_l_);
- priority_i_arr_.push (content[i].priority_i_);
- }
- }
-
- Array<Interval> dims;
- Real total =0;
- for (int i =0; i < item_l_arr_.size(); i++)
- {
-
- Interval item_width= item_l_arr_[i]->width();
- if (item_width.empty_b())
- {
- item_width = Interval (0,0);
- }
- dims.push (item_width);
- total += item_width.length();
- }
-
- Real where_f= total * (align_i_-1.0)/2.0;
- Real center_dx_f = 0;
- for (int i=0 ; i < item_l_arr_.size(); i++)
- {
- Real dx = where_f -dims[i][-1];
- item_l_arr_[i]->translate_axis (dx , X_AXIS);
- if (item_l_arr_[i] == center_l_)
- center_dx_f = where_f;
- where_f += dims[i].length();
- }
- if (center_dx_f && !align_i_)
- for (int i=0 ; i < item_l_arr_.size(); i++)
- item_l_arr_[i]->translate_axis (- center_dx_f , X_AXIS);
-
-}
-
-Interval
-Horizontal_align_item::do_width() const
-{
- return Interval (0,0);
+ add_element_priority (i,p);
}
void
@@ -116,16 +22,14 @@ Horizontal_align_item::do_print() const
{
#ifndef NPRINT
Item::do_print ();
- DOUT << "contains: ";
- for (int i=0 ; i < item_l_arr_.size(); i++)
- DOUT << item_l_arr_[i]->name () << ", ";
+ Align_element::do_print ();
#endif
}
-Horizontal_align_item::Horizontal_align_item()
+
+Horizontal_align_item::Horizontal_align_item ()
{
- center_l_ = 0;
- align_i_ = 0;
- set_empty (true);
- transparent_b_ = true;
+ align_dir_ = CENTER;
+ stacking_dir_ = RIGHT;
+ axis_ = X_AXIS;
}
diff --git a/lily/horizontal-group-elem.cc b/lily/horizontal-group-elem.cc
index 85ca745509..804dd6d9b3 100644
--- a/lily/horizontal-group-elem.cc
+++ b/lily/horizontal-group-elem.cc
@@ -1,5 +1,4 @@
-
-#include "horizontal-group-elem.hh"
+#include "horizontal-group-element.hh"
#include "interval.hh"
#include "item.hh"
#include "debug.hh"
@@ -7,28 +6,14 @@
IMPLEMENT_IS_TYPE_B1(Horizontal_group_element, Axis_group_element);
-void
-Horizontal_group_element::remove_all()
-{
- axis_admin_.remove_all (X_AXIS,X_AXIS);
-}
-
-void
-Horizontal_group_element::add_element (Graphical_element*e)
+Horizontal_group_element::Horizontal_group_element ()
+ : Axis_group_element (X_AXIS,X_AXIS)
{
- axis_admin_.add_element (e,this, X_AXIS,X_AXIS);
}
-void
-Horizontal_group_element::remove_element (Graphical_element*e)
-{
- axis_admin_.remove_element (e,X_AXIS,X_AXIS);
-}
-
-
Interval
Horizontal_group_element::do_width() const
{
- return axis_admin_.extent (X_AXIS);
+ return Graphical_axis_group::extent (X_AXIS);
}
diff --git a/lily/horizontal-group-item.cc b/lily/horizontal-group-item.cc
index a894ba5214..4e4d559495 100644
--- a/lily/horizontal-group-item.cc
+++ b/lily/horizontal-group-item.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "p-col.hh"
@@ -16,3 +16,8 @@ Horizontal_group_item::do_print() const
{
Axis_group_item::do_print();
}
+
+Horizontal_group_item::Horizontal_group_item ()
+{
+ axis1_ = axis2_ = X_AXIS;
+}
diff --git a/lily/horizontal-vertical-group-elem.cc b/lily/horizontal-vertical-group-elem.cc
index 6b5ddd79b6..9021d88da6 100644
--- a/lily/horizontal-vertical-group-elem.cc
+++ b/lily/horizontal-vertical-group-elem.cc
@@ -1,24 +1,13 @@
-#include "horizontal-vertical-group-elem.hh"
+#include "horizontal-vertical-group-element.hh"
#include "interval.hh"
#include "item.hh"
#include "debug.hh"
-void
-Horizontal_vertical_group_element::remove_all()
+Horizontal_vertical_group_element::Horizontal_vertical_group_element()
{
- axis_admin_.remove_all (X_AXIS,Y_AXIS);
-}
-void
-Horizontal_vertical_group_element::add_element (Graphical_element *e)
-{
- axis_admin_.add_element (e, this, X_AXIS, Y_AXIS);
-}
-
-void
-Horizontal_vertical_group_element::remove_element (Graphical_element*e)
-{
- axis_admin_.remove_element (e, X_AXIS, Y_AXIS);
+ axis1_ = X_AXIS;
+ axis2_ = Y_AXIS;
}
diff --git a/lily/horizontal-vertical-group-item.cc b/lily/horizontal-vertical-group-item.cc
index dd40fb8182..cf1917228c 100644
--- a/lily/horizontal-vertical-group-item.cc
+++ b/lily/horizontal-vertical-group-item.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -17,3 +17,9 @@ Horizontal_vertical_group_item::do_print() const
}
IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group_item,Horizontal_vertical_group_element,Item);
+
+Horizontal_vertical_group_item::Horizontal_vertical_group_item ()
+{
+ axis1_ = X_AXIS;
+ axis2_ = Y_AXIS;
+}
diff --git a/lily/idealspacing.cc b/lily/idealspacing.cc
index 64c1866fd8..f2638e0603 100644
--- a/lily/idealspacing.cc
+++ b/lily/idealspacing.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "idealspacing.hh"
@@ -16,7 +16,7 @@ Idealspacing::print() const
{
#ifndef NPRINT
DOUT << "idealspacing {" ;
- DOUT << "distance "<<space_f_<< " strength " << hooke_f_ ;
+ DOUT << "distance " << space_f_ << " strength " << hooke_f_;
DOUT << "left " << left_i_ << " right " << right_i_ << "}\n";
#endif
}
diff --git a/lily/identifier.cc b/lily/identifier.cc
index 69b3ca1c40..71f093fdfe 100644
--- a/lily/identifier.cc
+++ b/lily/identifier.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <assert.h>
@@ -47,7 +47,7 @@ void
Identifier::error (String expect) const
{
String e (_("Wrong identifier type: "));
- e += String (name()) + _("(expected ") + expect + ")";
+ e += _f ("%s expected", expect);
::error (e);
}
@@ -75,26 +75,24 @@ Identifier::do_print () const
}
/* ugh. */
-/* UGH MEMORY LEAK! */
-#define DEFAULT_PRINT(Class, accessor) \
+#define DEFAULT_PRINT(Class) \
void \
Class ## _identifier::do_print () const { \
- Class *cl = ((Class ## _identifier *)this)->accessor();\
+ Class *cl = ((Class ## _identifier *)this)->access_ ## Class(false);\
cl->print (); \
- delete cl; \
}
-DEFAULT_PRINT(General_script_def, script);
-DEFAULT_PRINT(Lookup, lookup);
-DEFAULT_PRINT(Translator, translator);
-DEFAULT_PRINT(Symtables, symtables);
-DEFAULT_PRINT(Music, music);
-DEFAULT_PRINT(Request, request);
-DEFAULT_PRINT(Score, score);
-DEFAULT_PRINT(Midi_def, mididef);
-DEFAULT_PRINT(Paper_def, paperdef);
+DEFAULT_PRINT(General_script_def);
+DEFAULT_PRINT(Lookup);
+DEFAULT_PRINT(Translator);
+DEFAULT_PRINT(Symtables);
+DEFAULT_PRINT(Music);
+DEFAULT_PRINT(Request);
+DEFAULT_PRINT(Score);
+DEFAULT_PRINT(Midi_def);
+DEFAULT_PRINT(Paper_def);
/* ugh. */
#define DUMMY_STR(Class) \
@@ -120,7 +118,7 @@ DUMMY_STR(Duration);
void \
Class ## _identifier::do_print () const\
{\
- DOUT << do_str () << "\n";\
+ DOUT << do_str () << '\n';\
}\
@@ -133,7 +131,7 @@ STRING_PRINT(String);
String \
Class ## _identifier::do_str () const\
{\
- return String (*data_p_);\
+ return to_str (*data_p_);\
}
DEFAULT_STR(int);
@@ -145,57 +143,61 @@ DEFAULT_STR(String);
fucking C++ blows me.
*/
-#define DEFAULT_ACCESSOR(Class, accessor)\
+#define DEFAULT_ACCESSOR(Class)\
Class*\
-Class ## _identifier::accessor () const {\
+Class ## _identifier::access_ ## Class (bool copy_b) const {\
((Class ## _identifier*)this)->accessed_b_ = true;\
- return new Class (*data_p_);\
+ return copy_b ? new Class (*data_p_) : data_p_;\
}
-#define VIRTUAL_ACCESSOR(Class, accessor)\
+#define VIRTUAL_ACCESSOR(Class)\
Class*\
-Class ## _identifier::accessor () const{\
+Class ## _identifier::access_ ## Class (bool copy_b) const{\
((Class ## _identifier*)this)->accessed_b_ = true;\
- return (Class*)data_p_->clone();\
+ return copy_b ? (Class*)data_p_->clone() : data_p_;\
}
-#define IMPLEMENT_ID_CLASS(Class, accessor) \
+#define IMPLEMENT_ID_CLASS(Class) \
IMPLEMENT_IS_TYPE_B1(Class ## _identifier,Identifier)\
Class ## _identifier::~Class ## _identifier() { delete data_p_; }\
- Class ## _identifier::Class ## _identifier (Class*st, int code):Identifier (code) { data_p_ = st; }\
+ Class ## _identifier::Class ## _identifier (Class*st, int code) \
+ :Identifier (code)\
+ {\
+ data_p_ = st;\
+ }\
Class ## _identifier::Class ## _identifier (Class ## _identifier const &s) \
-: Identifier (s)\
+ : Identifier (s)\
{\
- data_p_ = s.accessor ();\
+ data_p_ = s.access_ ## Class (true);\
}
-IMPLEMENT_ID_CLASS(Duration, duration);
-IMPLEMENT_ID_CLASS(Translator, translator);
-IMPLEMENT_ID_CLASS(int, intid);
-IMPLEMENT_ID_CLASS(Real, real);
-IMPLEMENT_ID_CLASS(String, string);
-IMPLEMENT_ID_CLASS(General_script_def, script);
-IMPLEMENT_ID_CLASS(Lookup, lookup);
-IMPLEMENT_ID_CLASS(Symtables, symtables);
-IMPLEMENT_ID_CLASS(Music, music);
-IMPLEMENT_ID_CLASS(Score, score);
-IMPLEMENT_ID_CLASS(Request, request);
-IMPLEMENT_ID_CLASS(Midi_def, mididef);
-IMPLEMENT_ID_CLASS(Paper_def, paperdef);
-
-VIRTUAL_ACCESSOR(Music, music);
-VIRTUAL_ACCESSOR(Request, request);
-VIRTUAL_ACCESSOR(Translator, translator);
-VIRTUAL_ACCESSOR(General_script_def, script);
-
-DEFAULT_ACCESSOR(Duration, duration);
-DEFAULT_ACCESSOR(int, intid);
-DEFAULT_ACCESSOR(Real, real);
-DEFAULT_ACCESSOR(String, string);
-DEFAULT_ACCESSOR(Lookup, lookup);
-DEFAULT_ACCESSOR(Symtables, symtables);
-DEFAULT_ACCESSOR(Score, score);
-DEFAULT_ACCESSOR(Midi_def, mididef);
-DEFAULT_ACCESSOR(Paper_def, paperdef);
+IMPLEMENT_ID_CLASS(Duration);
+IMPLEMENT_ID_CLASS(Translator);
+IMPLEMENT_ID_CLASS(int);
+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);
+IMPLEMENT_ID_CLASS(Request);
+IMPLEMENT_ID_CLASS(Midi_def);
+IMPLEMENT_ID_CLASS(Paper_def);
+
+VIRTUAL_ACCESSOR(Music);
+VIRTUAL_ACCESSOR(Request);
+VIRTUAL_ACCESSOR(Translator);
+VIRTUAL_ACCESSOR(General_script_def);
+
+DEFAULT_ACCESSOR(Duration);
+DEFAULT_ACCESSOR(int);
+DEFAULT_ACCESSOR(Real);
+DEFAULT_ACCESSOR(String);
+DEFAULT_ACCESSOR(Lookup);
+DEFAULT_ACCESSOR(Symtables);
+DEFAULT_ACCESSOR(Score);
+DEFAULT_ACCESSOR(Midi_def);
+DEFAULT_ACCESSOR(Paper_def);
diff --git a/lily/includable-lexer.cc b/lily/includable-lexer.cc
index 2d3b45597d..1adf85425d 100644
--- a/lily/includable-lexer.cc
+++ b/lily/includable-lexer.cc
@@ -3,16 +3,25 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
+
+#include <strstream.h>
+
#include "includable-lexer.hh"
#include "source-file.hh"
#include "source.hh"
+#include "debug.hh"
#ifndef YY_BUF_SIZE
#define YY_BUF_SIZE 16384
#endif
+#ifndef YY_START
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+#endif
+
Includable_lexer::Includable_lexer ()
{
yy_current_buffer = 0;
@@ -26,7 +35,7 @@ Includable_lexer::new_input (String s, Sources * global_sources)
Source_file * sl = global_sources->get_file_l (s);
if (!sl)
{
- String msg =_ ("Can't find file `") + s+ "'";
+ String msg = _f ("can't find file: `%s\'", s);
LexerError (msg.ch_C ());
return;
}
@@ -35,7 +44,7 @@ Includable_lexer::new_input (String s, Sources * global_sources)
char_count_stack_.push (0);
if (yy_current_buffer)
state_stack_.push (yy_current_buffer);
- cout << "[" << s<<flush;
+ *mlog << "[" << s<<flush;
include_stack_.push (sl);
/*
@@ -48,6 +57,21 @@ Includable_lexer::new_input (String s, Sources * global_sources)
yy_switch_to_buffer (yy_create_buffer (sl->istream_l (), YY_BUF_SIZE));
}
+void
+Includable_lexer::new_input (String name, String data, Sources* sources)
+{
+ Source_file* file = new Source_file (name, data);
+ sources->add (file);
+ filename_str_arr_.push (name);
+
+ char_count_stack_.push (0);
+ if (yy_current_buffer)
+ state_stack_.push (yy_current_buffer);
+ *mlog << "[" << name << flush;
+ include_stack_.push (file);
+
+ yy_switch_to_buffer (yy_create_buffer (file->istream_l (), YY_BUF_SIZE));
+}
/** pop the inputstack. conceptually this is a destructor, but it
does not destruct the Source_file that Includable_lexer::new_input creates. */
@@ -56,11 +80,12 @@ Includable_lexer::close_input ()
{
include_stack_.pop ();
char_count_stack_.pop ();
- cout << "]"<<flush;
+ *mlog << "]"<<flush;
yy_delete_buffer (yy_current_buffer);
yy_current_buffer = 0;
if (state_stack_.empty ())
{
+ yy_current_buffer = 0;
return false;
}
else
diff --git a/lily/include/Makefile b/lily/include/Makefile
index da392fe30f..828589fd94 100644
--- a/lily/include/Makefile
+++ b/lily/include/Makefile
@@ -1,12 +1,7 @@
# lily/include/Makefile
-# subdir level:
-#
depth = ../..
-#
-# identify module:
-#
-MODULE_NAME = lilypond
-include ./$(depth)/make/Include.make
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C++.make
diff --git a/lily/include/abbrev.hh b/lily/include/abbrev.hh
index ace2cffa53..f0df714af2 100644
--- a/lily/include/abbrev.hh
+++ b/lily/include/abbrev.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -16,7 +16,7 @@ class Abbreviation : public Item {
protected:
virtual void do_print () const;
virtual Molecule *brew_molecule_p () const;
- virtual void do_substitute_dependent (Score_elem*, Score_elem*);
+ virtual void do_substitute_dependent (Score_element*, Score_element*);
public:
int abbrev_flags_i_;
Abbreviation ();
diff --git a/lily/include/abbreviation-beam-engraver.hh b/lily/include/abbreviation-beam-engraver.hh
index df3244e4dd..2a25c89d44 100644
--- a/lily/include/abbreviation-beam-engraver.hh
+++ b/lily/include/abbreviation-beam-engraver.hh
@@ -3,8 +3,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
@@ -29,7 +29,7 @@ protected:
virtual void do_removal_processing();
virtual void do_process_requests();
virtual bool do_try_request (Request*);
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual void do_pre_move_processing();
private:
diff --git a/lily/include/abbreviation-beam.hh b/lily/include/abbreviation-beam.hh
index f6eb933e70..629fb0286e 100644
--- a/lily/include/abbreviation-beam.hh
+++ b/lily/include/abbreviation-beam.hh
@@ -3,8 +3,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef ABBREVIATION_BEAM_HH
@@ -21,7 +21,7 @@ public:
Abbreviation_beam();
- SCORE_ELEM_CLONE(Abbreviation_beam);
+ SCORE_ELEMENT_CLONE(Abbreviation_beam);
protected:
virtual void do_print() const;
diff --git a/lily/include/afm-reader.hh b/lily/include/afm-reader.hh
new file mode 100644
index 0000000000..64faa2afa1
--- /dev/null
+++ b/lily/include/afm-reader.hh
@@ -0,0 +1,22 @@
+
+/*
+ afm-reader.hh -- declare
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef AFM_READER_HH
+#define AFM_READER_HH
+
+class Adobe_font_metric_file
+{
+ Adobe_font_metric_file
+
+};
+
+
+#endif /* AFM_READER_HH */
+
diff --git a/lily/include/afm.hh b/lily/include/afm.hh
new file mode 100644
index 0000000000..8a932d05fc
--- /dev/null
+++ b/lily/include/afm.hh
@@ -0,0 +1,56 @@
+/*
+ afm.hh -- declare Adobe_font_metric
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef AFM_HH
+#define AFM_HH
+
+#include "string.hh"
+#include "box.hh"
+#include "array.hh"
+
+struct Adobe_font_char_metric {
+ int C_;
+ Real WX_;
+ String N_;
+ Box B_;
+ Box &bbox();
+ String &name();
+ Real &width();
+ int &code ();
+
+ String str () const;
+ Adobe_font_char_metric ();
+};
+
+struct Adobe_font_metric {
+ String FontName_;
+ String FullName_;
+ String FamilyName_;
+ String Weight_;
+ Real ItalicAngle_;
+ bool IsFixedPitch_;
+ Box FontBBox_;
+ Real UnderlinePosition_;
+ Real UnderlineThickness_;
+ String Version_;
+ String Notice_;
+ String EncodingScheme_;
+ Array<Adobe_font_char_metric> char_metrics_;
+
+ Adobe_font_char_metric find_char (String name) const;
+ String str () const;
+ Adobe_font_metric ();
+};
+
+Adobe_font_metric read_afm (String fn);
+
+
+
+#endif /* AFM_HH */
+
diff --git a/lily/include/align-element.hh b/lily/include/align-element.hh
new file mode 100644
index 0000000000..0b18f18f54
--- /dev/null
+++ b/lily/include/align-element.hh
@@ -0,0 +1,58 @@
+/*
+ align-item.hh -- declare Align_elem
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef VERTICAL_ALIGN_ITEM_HH
+#define VERTICAL_ALIGN_ITEM_HH
+
+#include "score-element.hh"
+#include "interval.hh"
+#include "direction.hh"
+#include "axes.hh"
+
+/**
+ Order elements top to bottom.
+
+ TODO: merge with Horizontal_align_item
+ */
+class Align_element : virtual public Score_element {
+ Link_array<Score_element> elem_l_arr_;
+ Array<int> priority_i_arr_;
+ void sort_elements ();
+public:
+ Interval threshold_interval_ ;
+
+ /**
+ Should high priorities be first or last?
+ */
+
+ Direction stacking_dir_;
+
+ /**
+ Which side to align?
+ -1: left side, 0: centered (around center_l_ if not nil), 1: right side
+ */
+
+ Direction align_dir_;
+
+ Axis axis_;
+ Score_element * center_l_;
+
+ Align_element ();
+ void add_element (Score_element*);
+ void add_element_priority (Score_element*, int);
+ bool contains_b (Score_element const*) const;
+ DECLARE_MY_RUNTIME_TYPEINFO;
+protected:
+ virtual void do_print() const;
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
+ virtual void do_post_processing() ;
+ virtual void do_pre_processing ();
+ virtual void do_side_processing ();
+};
+#endif // VERTICAL_ALIGN_ITEM_HH
diff --git a/lily/include/atom.hh b/lily/include/atom.hh
index b145383d7d..d7c31ee35c 100644
--- a/lily/include/atom.hh
+++ b/lily/include/atom.hh
@@ -3,14 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef ATOM_HH
#define ATOM_HH
#include "string.hh"
-#include "boxes.hh"
+#include "box.hh"
#include "lily-proto.hh"
@@ -19,8 +19,10 @@ class Atom {
Offset off_;
public:
String tex_;
+ String font_;
Box dim_;
+ Offset offset () const;
String str() const; // for printing.
Atom (String, Box);
Atom ();
@@ -29,7 +31,6 @@ public:
/// how big is #this#?
Box extent() const;
void print() const;
- String TeX_string() const;
bool check_infinity_b () const;
};
#endif
diff --git a/lily/include/audio-column.hh b/lily/include/audio-column.hh
index 6065e43a68..9b60c3eb7d 100644
--- a/lily/include/audio-column.hh
+++ b/lily/include/audio-column.hh
@@ -1,7 +1,7 @@
/*
audio-column.hh -- declare Audio_column
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef AUDIO_COLUMN_HH
@@ -21,7 +21,7 @@ class Audio_column {
public:
Audio_column (Moment at_mom);
- void add (Audio_item* i_l);
+ void add_audio_item (Audio_item* i_l);
Moment at_mom() const;
void print() const;
diff --git a/lily/include/audio-element.hh b/lily/include/audio-element.hh
index 6fe2a8e068..db7e4097d3 100644
--- a/lily/include/audio-element.hh
+++ b/lily/include/audio-element.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/audio-item.hh b/lily/include/audio-item.hh
index 3edfa01e48..b745c5b931 100644
--- a/lily/include/audio-item.hh
+++ b/lily/include/audio-item.hh
@@ -1,7 +1,7 @@
/*
audio-item.hh -- declare Audio_items
- (c) 1996, 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef AUDIO_ITEM_HH
@@ -58,8 +58,9 @@ struct Audio_instrument : public Audio_item {
struct Audio_note : public Audio_item {
DECLARE_MY_RUNTIME_TYPEINFO;
- Audio_note (Request* req_l);
+ Audio_note (Request* req_l, int transposing_i = 0);
virtual Midi_item* midi_item_p();
+ int transposing_i_;
};
struct Audio_text : Audio_item {
@@ -82,8 +83,8 @@ struct Audio_tempo : Audio_item {
int per_minute_4_i_;
};
-struct Audio_meter : Audio_item {
- Audio_meter (Request* req_l);
+struct Audio_time_signature : Audio_item {
+ Audio_time_signature (Request* req_l);
virtual Midi_item* midi_item_p();
DECLARE_MY_RUNTIME_TYPEINFO;
};
diff --git a/lily/include/audio-staff.hh b/lily/include/audio-staff.hh
index 12f3d9c1e8..3d13b28d61 100644
--- a/lily/include/audio-staff.hh
+++ b/lily/include/audio-staff.hh
@@ -1,7 +1,7 @@
/*
audio-staff.hh -- declare Audio_staff
- (c) 1996, 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef AUDIO_STAFF_HH
@@ -13,7 +13,7 @@
#include "audio-element.hh"
struct Audio_staff : public Audio_element {
- void add (Audio_item* l);
+ void add_audio_item (Audio_item* l);
void output (Midi_stream& midi_stream_r, int track_i);
Link_list<Audio_item*> audio_item_l_list_;
diff --git a/lily/include/axis-group-administration.hh b/lily/include/axis-group-administration.hh
deleted file mode 100644
index 7933590884..0000000000
--- a/lily/include/axis-group-administration.hh
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- axis-group-administration.hh -- declare Axis_group_administration
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef AXIS_GROUP_ADMINISTRATION_HH
-#define AXIS_GROUP_ADMINISTRATION_HH
-
-
-#include "parray.hh"
-#include "axes.hh"
-#include "real.hh"
-#include "lily-proto.hh"
-
-/**
- Do the dirty work for Axis_group_element.
- */
-struct Axis_group_administration {
- Link_array<Graphical_element> elem_l_arr_;
-
- Interval extent (Axis) const;
- void print() const ;
- Axis_group_administration (Axis_group_administration const&);
- Axis_group_administration(){}
- void remove_all (Axis a1, Axis a2);
-
- bool contains_b (Graphical_element const *) const;
- void add_element (Graphical_element*, Axis_group_element*, Axis a1, Axis a2);
- void remove_element (Graphical_element*, Axis a1, Axis a2);
-};
-
-#endif // AXIS_GROUP_ADMINISTRATION_HH
diff --git a/lily/include/axis-group-element.hh b/lily/include/axis-group-element.hh
index f3bfb3f702..f1389deebd 100644
--- a/lily/include/axis-group-element.hh
+++ b/lily/include/axis-group-element.hh
@@ -3,34 +3,35 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef AXIS_GROUP_ELEMENT_HH
#define AXIS_GROUP_ELEMENT_HH
-#include "score-elem.hh"
-#include "axis-group-administration.hh"
+#include "score-element.hh"
+#include "graphical-axis-group.hh"
+
/**
Treat a group of elements a unity in either or both axis sense .
This is a wrapper around Axis_group_administration
*/
-class Axis_group_element : public virtual Score_elem {
+class Axis_group_element : public virtual Score_element,
+ public Graphical_axis_group {
protected:
- Axis_group_administration axis_admin_;
virtual void do_print() const;
- virtual Link_array<Score_elem> get_extra_dependencies() const;
+ virtual Link_array<Score_element> get_extra_dependencies() const;
virtual void do_unlink();
virtual void do_junk_links();
+ virtual Axis_group_element * access_Axis_group_element ();
public:
- virtual Link_array<Score_elem> elem_l_arr() const;
- Axis_group_element();
- virtual void remove_all()=0;
- virtual void add_element (Graphical_element*)=0;
- virtual void remove_element (Graphical_element*)=0;
- virtual bool contains_b (Graphical_element const *) const;
+ virtual Link_array<Score_element> elem_l_arr() const;
+ Axis_group_element(Axis,Axis);
+ Axis_group_element();
+ virtual Link_array<Score_element> get_children ();
+
DECLARE_MY_RUNTIME_TYPEINFO;
};
diff --git a/lily/include/axis-group-item.hh b/lily/include/axis-group-item.hh
index c61a081020..be1a78b6ca 100644
--- a/lily/include/axis-group-item.hh
+++ b/lily/include/axis-group-item.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/axis-group-spanner.hh b/lily/include/axis-group-spanner.hh
index 64c2df98b2..15022e2d80 100644
--- a/lily/include/axis-group-spanner.hh
+++ b/lily/include/axis-group-spanner.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/bar-align-grav.hh b/lily/include/bar-align-engraver.hh
index a6579db197..a0ff903543 100644
--- a/lily/include/bar-align-grav.hh
+++ b/lily/include/bar-align-engraver.hh
@@ -1,9 +1,9 @@
/*
- bar-align-grav.hh -- declare
+ bar-align-engraver.hh -- declare
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/bar-column-grav.hh b/lily/include/bar-column-engraver.hh
index 9e058984f5..1c186b6385 100644
--- a/lily/include/bar-column-grav.hh
+++ b/lily/include/bar-column-engraver.hh
@@ -1,9 +1,9 @@
/*
- bar-column-grav.hh -- declare Bar_column_engraver
+ bar-column-engraver.hh -- declare Bar_column_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -17,12 +17,16 @@
class Bar_column_engraver :public Engraver {
Bar_column *barcol_p_;
Link_array<Script> script_l_arr_;
+ int break_priority_i_;
Bar *bar_l_;
-
+ void create_column ();
protected:
- virtual void acknowledge_element (Score_elem_info);
- virtual void do_pre_move_processing();
+ virtual void acknowledge_element (Score_element_info);
+ virtual void process_acknowledged ();
+ virtual void do_pre_move_processing ();
+ virtual void do_creation_processing ();
+ virtual void do_process_requests ();
virtual void do_post_move_processing();
public:
TRANSLATOR_CLONE(Bar_column_engraver);
diff --git a/lily/include/bar-column.hh b/lily/include/bar-column.hh
index 84c32113ea..2db6cbe264 100644
--- a/lily/include/bar-column.hh
+++ b/lily/include/bar-column.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -22,8 +22,8 @@ public:
Bar_column();
void set_bar (Bar*);
protected:
- SCORE_ELEM_CLONE(Bar_column);
- void do_substitute_dependency (Score_elem*,Score_elem*);
+ SCORE_ELEMENT_CLONE(Bar_column);
+ void do_substitute_dependency (Score_element*,Score_element*);
DECLARE_MY_RUNTIME_TYPEINFO;
};
diff --git a/lily/include/bar-grav.hh b/lily/include/bar-engraver.hh
index b513e3e517..151adf2926 100644
--- a/lily/include/bar-grav.hh
+++ b/lily/include/bar-engraver.hh
@@ -1,9 +1,9 @@
/*
- bar-grav.hh -- declare Bar_engraver
+ bar-engraver.hh -- declare Bar_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/bar-number-grav.hh b/lily/include/bar-number-engraver.hh
index b57a8040a8..69caa55095 100644
--- a/lily/include/bar-number-grav.hh
+++ b/lily/include/bar-number-engraver.hh
@@ -1,9 +1,9 @@
/*
- bar-number-grav.hh -- declare Bar_number_grav
+ bar-number-engraver.hh -- declare Bar_number_grav
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -19,7 +19,7 @@ class Bar_number_engraver : public Engraver {
Script * script_p_;
protected:
- void acknowledge_element (Score_elem_info);
+ void acknowledge_element (Score_element_info);
void do_pre_move_processing();
public:
TRANSLATOR_CLONE(Bar_number_engraver);
diff --git a/lily/include/bar.hh b/lily/include/bar.hh
index df39cea389..c00677cc0f 100644
--- a/lily/include/bar.hh
+++ b/lily/include/bar.hh
@@ -1,7 +1,7 @@
/*
bar.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef BAR_HH
@@ -17,13 +17,15 @@ public:
String type_str_;
DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Bar);
- Bar();
-private:
- void do_print() const;
+ SCORE_ELEMENT_CLONE (Bar);
+ Bar ();
+
protected:
- virtual void do_pre_processing();
- Molecule*brew_molecule_p() const;
+ virtual void do_pre_processing ();
+ Molecule* brew_molecule_p () const;
+
+private:
+ void do_print () const;
};
#endif // BAR_HH
diff --git a/lily/include/beam-grav.hh b/lily/include/beam-engraver.hh
index cbfe1bb7d5..ccb96d15bf 100644
--- a/lily/include/beam-grav.hh
+++ b/lily/include/beam-engraver.hh
@@ -1,9 +1,9 @@
/*
- beam-grav.hh -- declare Beam_engraver
+ beam-engraver.hh -- declare Beam_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -30,7 +30,7 @@ protected:
virtual void do_removal_processing();
virtual void do_process_requests();
virtual bool do_try_request (Request*);
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual void do_pre_move_processing();
};
diff --git a/lily/include/beam-swallow-trans.hh b/lily/include/beam-swallow-trans.hh
index 760704fc50..9165b6d813 100644
--- a/lily/include/beam-swallow-trans.hh
+++ b/lily/include/beam-swallow-trans.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/beam.hh b/lily/include/beam.hh
index e4bad88c1c..f6f59c8c9e 100644
--- a/lily/include/beam.hh
+++ b/lily/include/beam.hh
@@ -1,7 +1,7 @@
/*
beam.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef BEAM_HH
@@ -21,6 +21,7 @@ public:
especially at small slopes.
*/
enum Quantisation { NONE, NORMAL, TRADITIONAL, TEST };
+ enum Dir_algorithm { /* DOWN=-1, UP=1, */ MAJORITY=2, MEAN, MEDIAN };
Link_array<Stem> stems_;
/// the slope of the beam in posns / point (dimension)
@@ -40,11 +41,11 @@ public:
DECLARE_MY_RUNTIME_TYPEINFO;
Beam();
- void add (Stem*);
+ void add_stem (Stem*);
void set_grouping (Rhythmic_grouping def, Rhythmic_grouping current);
void set_stemlens ();
- SCORE_ELEM_CLONE (Beam);
+ SCORE_ELEMENT_CLONE (Beam);
protected:
virtual Interval do_width () const;
@@ -52,7 +53,7 @@ protected:
void set_default_dir ();
virtual void do_pre_processing ();
virtual void do_post_processing ();
- virtual void do_substitute_dependent (Score_elem*, Score_elem*);
+ virtual void do_substitute_dependent (Score_element*, Score_element*);
virtual void do_print() const;
diff --git a/lily/include/bezier.hh b/lily/include/bezier.hh
index ea8c1ed00d..8014037700 100644
--- a/lily/include/bezier.hh
+++ b/lily/include/bezier.hh
@@ -1,7 +1,7 @@
/*
bezier.hh -- declare Bezier and Bezier_bow
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef BEZIER_HH
@@ -47,7 +47,7 @@ public:
Bezier_bow (Paper_def* paper_l);
/**
- Calculate bezier curve for bow from bow parameters.
+ Calculate bezier curve for bow from bow paratime_signatures.
*/
void blow_fit ();
void calc ();
diff --git a/lily/include/bow.hh b/lily/include/bow.hh
index e7e3e912cc..107cff0789 100644
--- a/lily/include/bow.hh
+++ b/lily/include/bow.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -32,6 +32,7 @@ protected:
virtual Interval do_width () const;
Array<Offset> get_controls () const;
virtual Array<Offset> get_encompass_offset_arr () const;
+ virtual Interval do_height () const;
Drul_array<Real> dy_f_drul_;
Drul_array<Real> dx_f_drul_;
diff --git a/lily/include/boxes.hh b/lily/include/box.hh
index 0e5addc8af..b26c6e3695 100644
--- a/lily/include/boxes.hh
+++ b/lily/include/box.hh
@@ -11,6 +11,7 @@
#include "offset.hh"
#include "axes.hh"
+
struct Box {
Interval interval_a_[NO_AXES];
diff --git a/lily/include/break-align-item.hh b/lily/include/break-align-item.hh
index 9d800f8ca6..6b5a1e4014 100644
--- a/lily/include/break-align-item.hh
+++ b/lily/include/break-align-item.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -19,7 +19,7 @@ protected:
virtual void do_pre_processing();
public:
DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Break_align_item);
+ SCORE_ELEMENT_CLONE(Break_align_item);
};
#endif // BREAK_ALIGN_ITEM_HH
diff --git a/lily/include/break-caching.hh b/lily/include/break-caching.hh
index 188360d013..706c5c3dfc 100644
--- a/lily/include/break-caching.hh
+++ b/lily/include/break-caching.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -16,7 +16,7 @@
struct Break_caching : Break_algorithm
{
void do_set_pscore();
- Array<Col_hpositions> do_solve() const;
+ Array<Column_x_positions> do_solve() const;
};
diff --git a/lily/include/break.hh b/lily/include/break.hh
index 4499686f10..f3b3deb18b 100644
--- a/lily/include/break.hh
+++ b/lily/include/break.hh
@@ -3,13 +3,13 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef BREAK_HH
#define BREAK_HH
-#include "varray.hh"
+#include "array.hh"
#include "interval.hh"
#include "lily-proto.hh"
#include "colhpos.hh"
@@ -47,10 +47,10 @@ protected:
/// helper: solve for the columns in #curline#.
- void solve_line (Col_hpositions*) const;
+ void solve_line (Column_x_positions*) const;
/// helper: approximate the energyv
- void approximate_solve_line (Col_hpositions*) const;
+ void approximate_solve_line (Column_x_positions*) const;
/// does curline fit on the paper?
bool feasible (Line_of_cols) const;
@@ -58,7 +58,7 @@ protected:
Line_spacer* generate_spacing_problem (Line_of_cols, Interval) const;
- virtual Array<Col_hpositions> do_solve() const=0;
+ virtual Array<Column_x_positions> do_solve() const=0;
virtual void do_set_pscore();
public:
@@ -73,7 +73,7 @@ public:
/// check if the spacing/breaking problem is well-stated
void problem_OK() const;
void OK() const;
- Array<Col_hpositions> solve() const;
+ Array<Column_x_positions> solve() const;
};
#endif // BREAK_HH
diff --git a/lily/include/cf-basic.hh b/lily/include/cf-basic.hh
deleted file mode 100644
index d201ece057..0000000000
--- a/lily/include/cf-basic.hh
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- cf-basic.hh -- declare
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
-
- */
-
-#ifndef CF_BASIC_HH
-#define CF_BASIC_HH
-#endif /* CF_BASIC_HH */
-
diff --git a/lily/include/cf-string.hh b/lily/include/cf-string.hh
deleted file mode 100644
index 8b13789179..0000000000
--- a/lily/include/cf-string.hh
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lily/include/change-iterator.hh b/lily/include/change-iterator.hh
index e4adf804e1..a4d435be5b 100644
--- a/lily/include/change-iterator.hh
+++ b/lily/include/change-iterator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/change-translator.hh b/lily/include/change-translator.hh
index 8c759717ed..b369462ca2 100644
--- a/lily/include/change-translator.hh
+++ b/lily/include/change-translator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/chord-iterator.hh b/lily/include/chord-iterator.hh
index 0a3c9fa64a..1dea414961 100644
--- a/lily/include/chord-iterator.hh
+++ b/lily/include/chord-iterator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/clef-grav.hh b/lily/include/clef-engraver.hh
index ec4702cac8..56c4fbc1d8 100644
--- a/lily/include/clef-grav.hh
+++ b/lily/include/clef-engraver.hh
@@ -1,9 +1,9 @@
/*
- clef-grav.hh -- declare Clef_engraver
+ clef-engraver.hh -- declare Clef_engraver
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -11,7 +11,7 @@
#define CLEF_GRAV_HH
#include "scalar.hh"
-#include "varray.hh"
+#include "array.hh"
#include "engraver.hh"
#include "direction.hh"
@@ -24,16 +24,16 @@ class Clef_engraver : public Engraver {
bool set_type (String);
protected:
virtual void do_process_requests();
- virtual void fill_staff_info (Staff_info&);
virtual void do_pre_move_processing();
virtual void do_removal_processing();
virtual void do_creation_processing();
virtual void do_post_move_processing();
virtual bool do_try_request (Request*);
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
public:
TRANSLATOR_CLONE(Clef_engraver);
int c0_position_i_;
+ int clef_position_i_;
Direction octave_dir_;
String clef_type_str_;
diff --git a/lily/include/clef-item.hh b/lily/include/clef-item.hh
index 3b82f9d426..54c5bf1a0c 100644
--- a/lily/include/clef-item.hh
+++ b/lily/include/clef-item.hh
@@ -1,7 +1,7 @@
/*
clef-item.hh -- declare Clef_item
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef CLEFITEM_HH
@@ -9,37 +9,36 @@
#include "item.hh"
#include "text-def.hh"
#include "direction.hh"
+#include "pointer.hh"
/**
Set a clef in a staff.
*/
class Clef_item : public Item {
protected:
- virtual void do_pre_processing();
- Molecule* brew_molecule_p() const;
+ virtual void do_pre_processing();
+ virtual Molecule* brew_molecule_p() const;
public:
- String symbol_;
- int y_position_i_;
+ String symbol_;
+ int y_position_i_;
- /// is this a change clef (smaller size)?
- bool change_b_;
+ /// is this a change clef (smaller size)?
+ bool change_b_;
- /// set because of existence of a bar
- bool default_b_;
-
- /// should we print an octave symbol (8), and where? (up=1, down=1)?
- Direction octave_dir_;
-
- /// text def to put above/below clef (ugh: should be const)
- Text_def * octave_marker_td_p_;
-
- /* *************** */
- DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Clef_item);
- Clef_item();
- void read (Clef_engraver const&);
- void read (String);
+ /// set because of existence of a bar
+ bool default_b_;
+
+ /// should we print an octave symbol (8), and where? (up=1, down=-1)?
+ Direction octave_dir_;
+
+ /// text def to put above/below clef?
+ P<Text_def> octave_marker_td_p_;
+
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ SCORE_ELEMENT_CLONE(Clef_item);
+ Clef_item();
+ void read (Clef_engraver const&);
};
#endif // CLEFITEM_HH
diff --git a/lily/include/col-info.hh b/lily/include/col-info.hh
index 49694352d0..a01afd3c74 100644
--- a/lily/include/col-info.hh
+++ b/lily/include/col-info.hh
@@ -1,9 +1,9 @@
/*
- col-info.hh -- declare Colinfo
+ col-info.hh -- declare Column_info
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -23,7 +23,7 @@ struct Spacer_rod {
/// helper struct for #Spacing_problem#
-struct Colinfo {
+struct Column_info {
Paper_column *pcol_l_;
P<Real> fixpos_p_;
@@ -35,8 +35,8 @@ struct Colinfo {
Drul_array< Array<Spacer_rod> > rods_;
/* *************** */
- Colinfo();
- Colinfo (Paper_column *,Real const *);
+ Column_info();
+ Column_info (Paper_column *,Real const *);
int rank_i () const;
void print() const;
diff --git a/lily/include/colhpos.hh b/lily/include/colhpos.hh
index 01a87167ba..e46991dc33 100644
--- a/lily/include/colhpos.hh
+++ b/lily/include/colhpos.hh
@@ -1,18 +1,18 @@
/*
colhpos.hh -- part of GNU LilyPond
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef COLHPOS_HH
#define COLHPOS_HH
-#include "varray.hh"
+#include "array.hh"
#include "lily-proto.hh"
typedef Array<Paper_column*> Line_of_cols;
-struct Col_hpositions {
+struct Column_x_positions {
Line_spacer * spacer_l_;
bool ugh_b_;
Line_of_cols error_col_l_arr_;
@@ -23,15 +23,15 @@ struct Col_hpositions {
/* ************** */
void OK() const;
- ~Col_hpositions();
+ ~Column_x_positions();
void solve_line();
void approximate_solve_line();
/** generate a solution with no regard to idealspacings or
constraints. should always work */
void stupid_solution();
void set_stupid_solution (Vector);
- Col_hpositions();
- void add (Paper_column*c);
+ Column_x_positions();
+ void add_paper_column (Paper_column*c);
void print() const;
};
diff --git a/lily/include/collision-grav.hh b/lily/include/collision-engraver.hh
index 6cf18d7dbc..d4a674f04e 100644
--- a/lily/include/collision-grav.hh
+++ b/lily/include/collision-engraver.hh
@@ -1,9 +1,9 @@
/*
- collision-grav.hh -- declare Collision_engraver
+ collision-engraver.hh -- declare Collision_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -14,9 +14,11 @@
class Collision_engraver : public Engraver {
Collision* col_p_;
+ Link_array<Note_column> note_column_l_arr_;
protected:
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
+ virtual void process_acknowledged ();
virtual void do_pre_move_processing();
public:
TRANSLATOR_CLONE(Collision_engraver);
diff --git a/lily/include/collision.hh b/lily/include/collision.hh
index 9d47efb513..9a7505163b 100644
--- a/lily/include/collision.hh
+++ b/lily/include/collision.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -22,12 +22,12 @@
*/
class Collision : public Horizontal_vertical_group_item {
protected:
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
virtual void do_pre_processing();
public:
Link_array<Note_column> clash_l_arr_;
DECLARE_MY_RUNTIME_TYPEINFO;
- void add (Note_column*ncol_l);
+ void add_column (Note_column*ncol_l);
Collision();
};
#endif // COLLISION_HH
diff --git a/lily/include/command-request.hh b/lily/include/command-request.hh
index 8085fd6621..3e187487f3 100644
--- a/lily/include/command-request.hh
+++ b/lily/include/command-request.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -11,7 +11,7 @@
#define COMMANDREQUEST_HH
#include "request.hh"
-#include "varray.hh"
+#include "array.hh"
#include "duration.hh"
#include "musical-pitch.hh"
@@ -19,17 +19,19 @@
musical requests. */
class Command_req : public virtual Request {
public:
- REQUESTMETHODS(Command_req, command);
- virtual Measure_grouping_req * measuregrouping() { return 0; }
- virtual Clef_change_req * clefchange() { return 0; }
- virtual Key_change_req * keychange() { return 0; }
- virtual Partial_measure_req * partial() { return 0; }
- virtual Meter_change_req * meterchange() { return 0; }
- virtual Bar_req *bar() { return 0; }
- virtual Cadenza_req *cadenza() { return 0; }
- virtual Timing_req*timing() { return 0; }
- virtual Command_script_req*commandscript() { return 0;}
- virtual Break_req *linebreak () { return 0; }
+ REQUESTMETHODS(Command_req);
+
+ DEFAULTACCESSOR(Measure_grouping_req)
+ DEFAULTACCESSOR(Clef_change_req)
+ DEFAULTACCESSOR(Key_change_req)
+ DEFAULTACCESSOR(Partial_measure_req)
+ DEFAULTACCESSOR(Time_signature_change_req)
+ DEFAULTACCESSOR(Bar_req)
+ DEFAULTACCESSOR(Cadenza_req)
+ DEFAULTACCESSOR(Timing_req)
+ DEFAULTACCESSOR(Command_script_req)
+ DEFAULTACCESSOR(Break_req)
+ DEFAULTACCESSOR(Mark_req)
};
@@ -38,7 +40,14 @@ public:
enum { DISALLOW = -10000, FORCE = 10000 };
int penalty_i_;
Break_req ();
- REQUESTMETHODS (Break_req, linebreak);
+ REQUESTMETHODS (Break_req);
+};
+
+class Mark_req : public Command_req {
+public:
+ Mark_req (String);
+ String str_;
+ REQUESTMETHODS (Mark_req);
};
class Command_script_req : public Command_req, public Script_req {
@@ -46,15 +55,15 @@ public:
// huh?
Command_script_req();
~Command_script_req();
- REQUESTMETHODS(Command_script_req, commandscript);
+ REQUESTMETHODS(Command_script_req);
};
-/** Baseclass for meter/partial req. It has to be handled by
+/** Baseclass for time_signature/partial req. It has to be handled by
Staff_{walker,column} baseclass. */
class Timing_req : public Command_req {
public:
- REQUESTMETHODS(Timing_req, timing);
- virtual Tempo_req * tempo(){return 0; }
+ REQUESTMETHODS(Timing_req);
+ DEFAULTACCESSOR(Tempo_req)
};
@@ -65,7 +74,7 @@ public:
int metronome_i_;
Tempo_req();
- REQUESTMETHODS(Tempo_req, tempo);
+ REQUESTMETHODS(Tempo_req);
bool do_equal_b (Request *) const;
};
@@ -74,21 +83,20 @@ public:
Moment duration_;
Partial_measure_req (Moment);
- REQUESTMETHODS(Partial_measure_req, partial);
+ REQUESTMETHODS(Partial_measure_req);
bool do_equal_b (Request*) const;
};
/**
- todo: allow C meter
+ todo: allow C time_signature
*/
-class Meter_change_req : public Timing_req {
+class Time_signature_change_req : public Timing_req {
public:
int beats_i_, one_beat_i_;
- Meter_change_req();
- void set (int,int);
+ Time_signature_change_req();
bool do_equal_b (Request*) const;
- REQUESTMETHODS(Meter_change_req, meterchange);
+ REQUESTMETHODS(Time_signature_change_req);
};
/// toggle Cadenza mode
@@ -98,14 +106,14 @@ public:
bool on_b_;
bool do_equal_b (Request*) const;
Cadenza_req (bool);
- REQUESTMETHODS(Cadenza_req,cadenza);
+ REQUESTMETHODS(Cadenza_req);
};
/// check if we're at start of a measure.
class Barcheck_req : public Timing_req {
public:
bool do_equal_b (Request *) const;
- REQUESTMETHODS(Barcheck_req,barcheck);
+ REQUESTMETHODS(Barcheck_req);
};
class Measure_grouping_req : public Timing_req {
@@ -113,7 +121,7 @@ public:
Array<int> beat_i_arr_;
Array<Moment> elt_length_arr_;
bool do_equal_b (Request *) const;
- REQUESTMETHODS(Measure_grouping_req, measuregrouping);
+ REQUESTMETHODS(Measure_grouping_req);
};
/** draw a (repeat)-bar. This something different than #Barcheck_req#,
@@ -124,7 +132,7 @@ public:
Bar_req (String);
bool do_equal_b (Request*) const;
- REQUESTMETHODS(Bar_req,bar);
+ REQUESTMETHODS(Bar_req);
};
@@ -137,11 +145,10 @@ class Key_change_req : public Command_req {
public:
Array<Musical_pitch> pitch_arr_;
bool minor_b_;
+ bool ordinary_key_b_;
- /// don't ignore the octaves in #melodic_p_arr_#?
- bool multi_octave_b_;
Key_change_req();
- REQUESTMETHODS(Key_change_req, keychange);
+ REQUESTMETHODS(Key_change_req);
/// squash the octaves to 1
void squash_octaves();
@@ -151,16 +158,16 @@ public:
/// return number of sharps in key
int sharps_i();
- void transpose (Musical_pitch d) const;
+ void transpose (Musical_pitch d);
/// is minor key?
- int minor_b();
+ bool minor_b() const;
};
class Clef_change_req : public Command_req {
public:
String clef_str_;
Clef_change_req (String);
- REQUESTMETHODS(Clef_change_req, clefchange);
+ REQUESTMETHODS(Clef_change_req);
};
#endif // COMMANDREQUEST_HH
diff --git a/lily/include/crescendo.hh b/lily/include/crescendo.hh
index 0b62f65810..02a311c60e 100644
--- a/lily/include/crescendo.hh
+++ b/lily/include/crescendo.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -24,7 +24,7 @@ public:
Crescendo();
protected:
- SCORE_ELEM_CLONE(Crescendo);
+ SCORE_ELEMENT_CLONE(Crescendo);
virtual Molecule*brew_molecule_p() const;
virtual Interval symbol_height() const;
DECLARE_MY_RUNTIME_TYPEINFO;
diff --git a/lily/include/curve.hh b/lily/include/curve.hh
index a37be5c669..caa5989514 100644
--- a/lily/include/curve.hh
+++ b/lily/include/curve.hh
@@ -1,7 +1,7 @@
/*
curve.hh -- declare point and curve
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef CURVE_HH
@@ -14,7 +14,7 @@
#include "real.hh"
#include "offset.hh"
-#include "varray.hh"
+#include "array.hh"
class Curve : public Array<Offset>
{
diff --git a/lily/include/dimen.hh b/lily/include/dimension.hh
index ac8267f187..ac8267f187 100644
--- a/lily/include/dimen.hh
+++ b/lily/include/dimension.hh
diff --git a/lily/include/direction.hh b/lily/include/direction.hh
index 416b3fc33f..8afa94ce43 100644
--- a/lily/include/direction.hh
+++ b/lily/include/direction.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/directional-spanner.hh b/lily/include/directional-spanner.hh
index 7854a348ce..99594b12ce 100644
--- a/lily/include/directional-spanner.hh
+++ b/lily/include/directional-spanner.hh
@@ -1,7 +1,7 @@
/*
directional-spanner.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef DIRECTIONALSPANNER_HH
diff --git a/lily/include/dot-column-engraver.hh b/lily/include/dot-column-engraver.hh
new file mode 100644
index 0000000000..0454e41fec
--- /dev/null
+++ b/lily/include/dot-column-engraver.hh
@@ -0,0 +1,28 @@
+/*
+ dot-column-engraver.hh -- declare Dot_column_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef DOT_COLUMN_GRAV_HH
+#define DOT_COLUMN_GRAV_HH
+
+#include "engraver.hh"
+
+class Dot_column_engraver : public Engraver
+{
+ Dot_column *dotcol_p_ ;
+ Link_array<Rhythmic_head> head_l_arr_;
+public:
+ TRANSLATOR_CLONE(Dot_column_engraver);
+ Dot_column_engraver();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+protected:
+ virtual void acknowledge_element (Score_element_info);
+ virtual void do_pre_move_processing ();
+};
+
+#endif // DOT_COLUMN_GRAV_HH
diff --git a/lily/include/dot-column-grav.hh b/lily/include/dot-column-grav.hh
deleted file mode 100644
index e2e3b660fd..0000000000
--- a/lily/include/dot-column-grav.hh
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- dot-column-grav.hh -- declare Dot_column_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef DOT_COLUMN_GRAV_HH
-#define DOT_COLUMN_GRAV_HH
-
-#include "engraver.hh"
-
-class Dot_column_engraver : public Engraver
-{
-
-};
-
-#endif // DOT_COLUMN_GRAV_HH
diff --git a/lily/include/dot-column.hh b/lily/include/dot-column.hh
index 9d8d5e552a..aa197cd7a3 100644
--- a/lily/include/dot-column.hh
+++ b/lily/include/dot-column.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -19,13 +19,14 @@ class Dot_column : public Horizontal_group_item
{
Link_array<Rhythmic_head> head_l_arr_;
Link_array<Dots> dot_l_arr_;
- void add (Dots*);
public:
DECLARE_MY_RUNTIME_TYPEINFO;
- void add (Rhythmic_head*);
+ void add_head (Rhythmic_head*);
+ void add_dots (Dots*);
+
protected:
virtual void do_pre_processing ();
- virtual void do_substitute_dependency (Score_elem *o, Score_elem*n);
+ virtual void do_substitute_dependency (Score_element *o, Score_element*n);
};
#endif // DOT_COLUMN_HH
diff --git a/lily/include/dots.hh b/lily/include/dots.hh
index 846cf0364f..4c17ab42c1 100644
--- a/lily/include/dots.hh
+++ b/lily/include/dots.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/drul-array.hh b/lily/include/drul-array.hh
index 9169a57828..efc611f76f 100644
--- a/lily/include/drul-array.hh
+++ b/lily/include/drul-array.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/dynamic-grav.hh b/lily/include/dynamic-engraver.hh
index 29d3e2fa73..1c2a574eff 100644
--- a/lily/include/dynamic-grav.hh
+++ b/lily/include/dynamic-engraver.hh
@@ -1,9 +1,9 @@
/*
- dynamic-grav.hh -- declare Dynamic_engraver
+ dynamic-engraver.hh -- declare Dynamic_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -26,7 +26,7 @@ public:
DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual void do_removal_processing ();
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual bool do_try_request (Request *req_l);
virtual void do_process_requests();
virtual void do_pre_move_processing();
diff --git a/lily/include/elem-group.hh b/lily/include/elem-group.hh
index 6ad1d1d243..d1092d98bd 100644
--- a/lily/include/elem-group.hh
+++ b/lily/include/elem-group.hh
@@ -3,14 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef ELEM_GROUP_HH
#define ELEM_GROUP_HH
-#include "score-elem.hh"
+#include "score-element.hh"
#include "axis-group-element.hh"
diff --git a/lily/include/encompass-info.hh b/lily/include/encompass-info.hh
index 6180ba3677..511a24404d 100644
--- a/lily/include/encompass-info.hh
+++ b/lily/include/encompass-info.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
diff --git a/lily/include/engraver-group.hh b/lily/include/engraver-group.hh
index 125021cdf6..636842ce77 100644
--- a/lily/include/engraver-group.hh
+++ b/lily/include/engraver-group.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -13,7 +13,7 @@
#include "lily-proto.hh"
#include "parray.hh"
#include "plist.hh"
-#include "score-elem-info.hh"
+#include "score-element-info.hh"
#include "engraver.hh"
#include "translator-group.hh"
@@ -26,7 +26,7 @@ class Engraver_group_engraver : public Engraver,
public virtual Translator_group
{
protected:
- Array<Score_elem_info> announce_info_arr_;
+ Array<Score_element_info> announce_info_arr_;
public:
TRANSLATOR_CLONE(Engraver_group_engraver);
Engraver_group_engraver();
@@ -36,7 +36,7 @@ public:
virtual Staff_info get_staff_info() const;
virtual void do_announces();
- virtual void announce_element (Score_elem_info);
+ virtual void announce_element (Score_element_info);
};
#endif // ENGRAVERGROUP_HH
diff --git a/lily/include/engraver.hh b/lily/include/engraver.hh
index f6b4f6bafa..e6e5b7fe76 100644
--- a/lily/include/engraver.hh
+++ b/lily/include/engraver.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -11,15 +11,15 @@
#define ENGRAVER_HH
#include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
#include "request.hh"
-#include "score-elem-info.hh"
+#include "score-element-info.hh"
#include "staff-info.hh"
#include "translator.hh"
/**
- a struct which processes requests, and creates the #Score_elem#s.
+ a struct which processes requests, and creates the #Score_element#s.
It may use derived classes. Hungarian postfix: grav
*/
@@ -35,7 +35,7 @@ protected:
/**
Invoke walker method to typeset element. Default: pass on to daddy.
*/
- virtual void typeset_element (Score_elem*elem_p);
+ virtual void typeset_element (Score_element*elem_p);
/**
take note of item/spanner
@@ -43,7 +43,7 @@ protected:
Default: ignore the info
*/
- virtual void acknowledge_element (Score_elem_info) {}
+ virtual void acknowledge_element (Score_element_info) {}
/** Do things with stuff found in acknowledge_element. Ugh. Should
be looped with acknowledge_element.
@@ -53,7 +53,7 @@ protected:
/**
Announce element. Default: pass on to daddy. Utility
*/
- virtual void announce_element (Score_elem_info);
+ virtual void announce_element (Score_element_info);
/**
Get information on the staff. Default: ask daddy.
diff --git a/lily/include/file-results.hh b/lily/include/file-results.hh
index 3d6df5e9d6..f4cf779c17 100644
--- a/lily/include/file-results.hh
+++ b/lily/include/file-results.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -12,7 +12,7 @@
#include "fproto.hh"
void do_one_file (String init_str, String file_str);
-
+extern Header *header_global_p;
extern Array<String> target_str_global_array;
extern Array<String> inclusion_global_array;
extern Link_array<Score> score_global_array;
diff --git a/lily/include/font-size-engraver.hh b/lily/include/font-size-engraver.hh
new file mode 100644
index 0000000000..a108408bb5
--- /dev/null
+++ b/lily/include/font-size-engraver.hh
@@ -0,0 +1,27 @@
+/*
+ font-size-engraver.hh -- declare Font_size_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef FONT_SIZE_GRAV_HH
+#define FONT_SIZE_GRAV_HH
+
+#include "engraver.hh"
+
+class Font_size_engraver : public Engraver {
+ int size_i_;
+protected:
+ virtual void acknowledge_element (Score_element_info);
+ virtual void do_process_requests ();
+public:
+ Font_size_engraver ();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ TRANSLATOR_CLONE (Font_size_engraver);
+};
+
+#endif /* FONT_SIZE_GRAV_HH */
+
diff --git a/lily/include/general-script-def.hh b/lily/include/general-script-def.hh
index 024468e343..cc6b1e6adc 100644
--- a/lily/include/general-script-def.hh
+++ b/lily/include/general-script-def.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/global-translator.hh b/lily/include/global-translator.hh
index dddfacb0b2..b4381eb703 100644
--- a/lily/include/global-translator.hh
+++ b/lily/include/global-translator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/gourlay-breaking.hh b/lily/include/gourlay-breaking.hh
index f01df23848..cc5ed6c385 100644
--- a/lily/include/gourlay-breaking.hh
+++ b/lily/include/gourlay-breaking.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -22,7 +22,7 @@ struct Gourlay_breaking : public Break_algorithm
/// maximum number of measures in a line
int max_measures_i_;
void do_set_pscore();
- Array<Col_hpositions> do_solve() const;
+ Array<Column_x_positions> do_solve() const;
Gourlay_breaking();
};
#endif // GOURLAY_BREAKING_HH
diff --git a/lily/include/graphical-axis-group.hh b/lily/include/graphical-axis-group.hh
new file mode 100644
index 0000000000..17ac4b9481
--- /dev/null
+++ b/lily/include/graphical-axis-group.hh
@@ -0,0 +1,40 @@
+/*
+ axis-group-administration.hh -- declare Graphical_axis_group
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef GRAPHICAL_AXIS_GROUP_HH
+#define GRAPHICAL_AXIS_GROUP_HH
+
+
+#include "parray.hh"
+#include "axes.hh"
+#include "real.hh"
+#include "lily-proto.hh"
+#include "graphical-element.hh"
+
+/**
+ Treat a group of graphical elements as an aggegrate.
+ */
+class Graphical_axis_group : public virtual Graphical_element {
+public:
+ Link_array<Graphical_element> elem_l_arr_;
+ Axis axis1_, axis2_;
+
+ Interval extent (Axis) const;
+ virtual void do_print() const;
+ Graphical_axis_group (Graphical_axis_group const&);
+ Graphical_axis_group (Axis,Axis);
+ void remove_all ();
+
+ bool contains_b (Graphical_element const *) const;
+ void add_element (Graphical_element*);
+ void remove_element (Graphical_element*);
+ DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // Graphical_axis_group_HH
diff --git a/lily/include/graphical-element.hh b/lily/include/graphical-element.hh
index 6dce57708b..3a57588a7d 100644
--- a/lily/include/graphical-element.hh
+++ b/lily/include/graphical-element.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -16,7 +16,7 @@
#include "virtual-methods.hh"
/** The 2d geometric aspects of a score-element. It was put in a
- separate class, because Score_elem got quite big.
+ separate class, because Score_element got quite big.
*/
class Graphical_element
@@ -27,24 +27,23 @@ class Graphical_element
*/
bool empty_b_;
+ Offset offset_;
+ Interval cached_dimension_a_[NO_AXES];
+ bool cached_valid_b_a_[NO_AXES];
public:
+
+ // suck me plenty
+ virtual Score_element* access_Score_element () { return 0; }
void set_empty (bool);
+
bool empty_b () const;
DECLARE_MY_RUNTIME_TYPEINFO;
- /**
- This is needed, because #output# may still be
- NULL.
- */
- Offset offset_;
- Axis_group_element * axis_group_l_a_[NO_AXES];
- Interval cached_dimension_a_[NO_AXES];
- bool cached_valid_b_a_[NO_AXES];
+ Graphical_axis_group * axis_group_l_a_[NO_AXES];
Graphical_element ();
Graphical_element (Graphical_element const&);
- virtual ~Graphical_element ();
void invalidate_cache (Axis);
Interval extent (Axis) const;
@@ -61,16 +60,16 @@ public:
void translate_axis (Real, Axis);
- Real relative_coordinate (Axis_group_element*group, Axis) const;
+ Real relative_coordinate (Graphical_axis_group*group, Axis) const;
Offset absolute_offset() const;
Real absolute_coordinate (Axis) const;
/**
Find the group-element which has both #this# and #s#
*/
- Axis_group_element*common_group (Graphical_element const* s, Axis a) const;
+ Graphical_axis_group*common_group (Graphical_element const* s, Axis a) const;
void unlink ();
void junk_links ();
- void print () const;
+ virtual void do_print () const;
protected:
virtual Interval do_height () const=0;
virtual Interval do_width () const=0;
diff --git a/lily/include/grouping.hh b/lily/include/grouping.hh
index d88ed2876b..b0bff2363d 100644
--- a/lily/include/grouping.hh
+++ b/lily/include/grouping.hh
@@ -1,14 +1,14 @@
/*
grouping.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef GROUPING_HH
#define GROUPING_HH
#include "minterval.hh"
-#include "varray.hh"
+#include "array.hh"
/** data structure which represents rhythmic units this is a tree. It groupes notes according to rules
diff --git a/lily/include/hara-kiri-line-group-engraver.hh b/lily/include/hara-kiri-line-group-engraver.hh
index 21ca5197d6..e1d21bcdc1 100644
--- a/lily/include/hara-kiri-line-group-engraver.hh
+++ b/lily/include/hara-kiri-line-group-engraver.hh
@@ -1,22 +1,22 @@
/*
- hara-kiri-line-group-grav.hh -- declare Hara_kiri_line_group_engraver
+ hara-kiri-line-group-engraver.hh -- declare Hara_kiri_line_group_engraver
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef HARA_KIRI_LINE_GROUP_GRAV_HH
#define HARA_KIRI_LINE_GROUP_GRAV_HH
-#include "line-group-grav.hh"
+#include "line-group-group-engraver.hh"
/**
Just as Line_group_engraver, but won't disgrace Lily by typesetting
an empty line (for orchestral scores).
*/
-class Hara_kiri_line_group_engraver : public Line_group_engraver
+class Hara_kiri_line_group_engraver : public Line_group_engraver_group
{
public:
TRANSLATOR_CLONE (Hara_kiri_line_group_engraver);
@@ -24,6 +24,7 @@ public:
protected:
virtual void create_line_spanner ();
+ void typeset_element (Score_element*);
};
diff --git a/lily/include/hara-kiri-vertical-group-spanner.hh b/lily/include/hara-kiri-vertical-group-spanner.hh
index d861e7c235..8492d976f6 100644
--- a/lily/include/hara-kiri-vertical-group-spanner.hh
+++ b/lily/include/hara-kiri-vertical-group-spanner.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
@@ -20,14 +20,17 @@ class Hara_kiri_vertical_group_spanner : public Vertical_group_spanner
public:
DECLARE_MY_RUNTIME_TYPEINFO;
+ Hara_kiri_vertical_group_spanner ();
virtual void do_post_processing ();
- virtual void add_element (Graphical_element* e);
+ void add_note (Note_head* n);
protected:
- SCORE_ELEM_CLONE (Hara_kiri_vertical_group_spanner);
+ SCORE_ELEMENT_CLONE (Hara_kiri_vertical_group_spanner);
- virtual void do_break_processing ();
- virtual Molecule* brew_molecule_p () const;
+ virtual void do_substitute_dependency (Score_element*, Score_element*);
+ virtual void do_print ()const;
+
+ Link_array<Note_head> head_l_arr_;
};
diff --git a/lily/include/head-grav.hh b/lily/include/head-engraver.hh
index 8841f4e7e8..0890183714 100644
--- a/lily/include/head-grav.hh
+++ b/lily/include/head-engraver.hh
@@ -1,7 +1,7 @@
/*
- head-grav.hh -- part of GNU LilyPond
+ head-engraver.hh -- part of GNU LilyPond
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/header.hh b/lily/include/header.hh
index 4877f396f6..a6b37dba9f 100644
--- a/lily/include/header.hh
+++ b/lily/include/header.hh
@@ -1,9 +1,9 @@
/*
- header.hh -- declare
+ header.hh -- declare Header
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -14,10 +14,14 @@
#include "dictionary.hh"
+/** Store bibliographical information. The information in the \header
+ block is read into this struct. Lily does not process this
+ information. */
struct Header : Dictionary<String>
{
String lily_id_str_;
String TeX_string() const;
+ Header ();
};
#endif // HEADER_HH
diff --git a/lily/include/heads-engraver.hh b/lily/include/heads-engraver.hh
new file mode 100644
index 0000000000..c00d46f330
--- /dev/null
+++ b/lily/include/heads-engraver.hh
@@ -0,0 +1,32 @@
+/*
+ head-engraver.hh -- part of GNU LilyPond
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef HEADSGRAV_HH
+#define HEADSGRAV_HH
+#include "engraver.hh"
+
+/**
+ make balls and rests
+ */
+class Note_heads_engraver : public Engraver {
+ Link_array<Note_head> note_p_arr_;
+ Link_array<Dots> dot_p_arr_;
+ Link_array<Note_req> note_req_l_arr_;
+
+public:
+ TRANSLATOR_CLONE(Note_heads_engraver);
+ Note_heads_engraver();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+protected:
+ virtual bool do_try_request (Request *req_l) ;
+ virtual void do_process_requests();
+ virtual void do_pre_move_processing();
+ virtual void do_post_move_processing();
+};
+
+
+#endif // HEADSGRAV_HH
diff --git a/lily/include/horizontal-align-item.hh b/lily/include/horizontal-align-item.hh
index da0794d760..20ef3a4336 100644
--- a/lily/include/horizontal-align-item.hh
+++ b/lily/include/horizontal-align-item.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -11,38 +11,20 @@
#define HORIZONTAL_ALIGN_ITEM_HH
#include "item.hh"
+#include "align-element.hh"
/**
Order elems left to right.
-
-
TODO: insert (order, elem)
*/
-class Horizontal_align_item : public Item {
-protected:
- Link_array<Item> item_l_arr_;
- Array<int> priority_i_arr_;
-
+class Horizontal_align_item : public Item , public Align_element {
public:
- Item * center_l_;
- /**
- Which side to align?
- -1: left side, 0: centered (around center_l_ if not nil), 1: right side
- */
- int align_i_;
-
- DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Horizontal_align_item);
- void add (Item*, int p);
- Horizontal_align_item();
-protected:
-
- virtual void do_substitute_dependency (Score_elem * , Score_elem *);
- /// do calculations before determining horizontal spacing
- virtual void do_pre_processing();
- virtual void do_print() const;
- virtual Interval do_width() const;
- bool contains_b (Item*) const;
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ SCORE_ELEMENT_CLONE(Horizontal_align_item);
+ void add_item (Item*, int p);
+ Horizontal_align_item();
+ virtual void do_print() const;
+
};
#endif // HORIZONTAL_ALIGN_ITEM_HH
diff --git a/lily/include/horizontal-group-elem.hh b/lily/include/horizontal-group-element.hh
index db851583cc..f3c5d586ae 100644
--- a/lily/include/horizontal-group-elem.hh
+++ b/lily/include/horizontal-group-element.hh
@@ -1,9 +1,9 @@
/*
- horizontal-group-elem.hh -- declare
+ horizontal-group-element.hh -- declare Horizontal_group_element
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -18,14 +18,11 @@
*/
class Horizontal_group_element : public virtual Axis_group_element {
protected:
- virtual void remove_all();
- virtual Interval do_width() const;
+ virtual Interval do_width() const;
public:
- DECLARE_MY_RUNTIME_TYPEINFO;
- virtual void add_element (Graphical_element*);
- virtual void remove_element (Graphical_element*);
-
+ Horizontal_group_element ();
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
diff --git a/lily/include/horizontal-group-item.hh b/lily/include/horizontal-group-item.hh
index d94e0df1a4..8c6f9ea7b9 100644
--- a/lily/include/horizontal-group-item.hh
+++ b/lily/include/horizontal-group-item.hh
@@ -3,14 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef HORIZONTAL_GROUP_ITEM_HH
#define HORIZONTAL_GROUP_ITEM_HH
-#include "horizontal-group-elem.hh"
+#include "horizontal-group-element.hh"
#include "axis-group-item.hh"
/**
@@ -18,7 +18,6 @@
*/
class Horizontal_group_item : public Axis_group_item, public Horizontal_group_element {
protected:
- virtual void remove_all() { Horizontal_group_element::remove_all (); }
virtual void do_unlink () {
Axis_group_item::do_unlink ();
}
@@ -27,10 +26,9 @@ protected:
}
virtual void do_print() const;
public:
- virtual void add_element (Graphical_element*e) { Horizontal_group_element::add_element (e); }
- virtual void remove_element (Graphical_element*e) { Horizontal_group_element::remove_element (e); }
+ Horizontal_group_item ();
DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Horizontal_group_item);
+ SCORE_ELEMENT_CLONE(Horizontal_group_item);
};
#endif // HORIZONTAL_GROUP_ITEM_HH
diff --git a/lily/include/horizontal-vertical-group-elem.hh b/lily/include/horizontal-vertical-group-element.hh
index ed4c3a7713..520170beae 100644
--- a/lily/include/horizontal-vertical-group-elem.hh
+++ b/lily/include/horizontal-vertical-group-element.hh
@@ -1,32 +1,30 @@
/*
- horizontal-vertical-group-elem.hh -- declare
+ horizontal-vertical-group-element.hh -- declare Horizontal_vertical_group_element
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef HORIZONTAL_VERTICAL_GROUP_ELEM_HH
#define HORIZONTAL_VERTICAL_GROUP_ELEM_HH
-#include "vertical-group-elem.hh"
-#include "horizontal-group-elem.hh"
+#include "vertical-group-element.hh"
+#include "horizontal-group-element.hh"
/** A class to treat a group of elements as a single entity. The
dimensions are the unions of the dimensions of what it contains.
Translation means translating the contents.
*/
class Horizontal_vertical_group_element : public Vertical_group_element,
- public Horizontal_group_element
+ public Horizontal_group_element
{
protected:
- virtual void remove_all();
public:
- virtual void add_element (Graphical_element*);
- virtual void remove_element (Graphical_element*);
-
- DECLARE_MY_RUNTIME_TYPEINFO;
+ Horizontal_vertical_group_element ();
+
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
diff --git a/lily/include/horizontal-vertical-group-item.hh b/lily/include/horizontal-vertical-group-item.hh
index 50e1e9ef56..2a6a0bf425 100644
--- a/lily/include/horizontal-vertical-group-item.hh
+++ b/lily/include/horizontal-vertical-group-item.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -11,7 +11,7 @@
#define HORIZONTAL_VERTICAL_GROUP_ITEM_HH
#include "axis-group-item.hh"
-#include "horizontal-vertical-group-elem.hh"
+#include "horizontal-vertical-group-element.hh"
/**
@@ -20,12 +20,10 @@
class Horizontal_vertical_group_item : public Axis_group_item, public Horizontal_vertical_group_element {
protected:
virtual void do_print() const;
- virtual void remove_all() { Horizontal_vertical_group_element::remove_all (); }
virtual void do_unlink () { Horizontal_vertical_group_element::do_unlink (); }
- SCORE_HORIZONTAL_VERTICAL_CLONE(Horizontal_vertical_group_item);
+ SCORE_ELEMENT_CLONE(Horizontal_vertical_group_item);
public:
- virtual void add_element (Graphical_element*e) { Horizontal_vertical_group_element::add_element (e); }
- virtual void remove_element (Graphical_element*e) { Horizontal_vertical_group_element::remove_element (e); }
+ Horizontal_vertical_group_item ();
DECLARE_MY_RUNTIME_TYPEINFO;
};
diff --git a/lily/include/idealspacing.hh b/lily/include/idealspacing.hh
index 198b7e000b..20ff60fee5 100644
--- a/lily/include/idealspacing.hh
+++ b/lily/include/idealspacing.hh
@@ -1,7 +1,7 @@
/*
idealspacing.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef IDEALSPACING_HH
diff --git a/lily/include/identifier.hh b/lily/include/identifier.hh
index 85a398ae0e..56898a043e 100644
--- a/lily/include/identifier.hh
+++ b/lily/include/identifier.hh
@@ -1,7 +1,7 @@
/*
identifier.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef IDENTIFIER_HH
@@ -12,8 +12,8 @@
#include "input.hh"
#include "virtual-methods.hh"
-#define IDACCESSOR(Class, accessor)\
-virtual Class * accessor () const { error (#Class + String ("_identifier")); return 0; }
+#define IDACCESSOR(Class)\
+virtual Class * access_ ## Class (bool=true) const { error (#Class + String ("_identifier")); return 0; }
/**
A declarable data structure in mudela.
@@ -33,19 +33,19 @@ struct Identifier : public Input {
DECLARE_MY_RUNTIME_TYPEINFO;
void error (String) const;
String str () const;
- IDACCESSOR(Translator, translator)
- IDACCESSOR(Music, music)
- IDACCESSOR(General_script_def, script)
- IDACCESSOR(Symtables, symtables)
- IDACCESSOR(Midi_def, mididef)
- IDACCESSOR(Paper_def, paperdef)
- IDACCESSOR(Lookup,lookup)
- IDACCESSOR(Real,real)
- IDACCESSOR(String,string)
- IDACCESSOR(Request, request)
- IDACCESSOR(Score, score)
- IDACCESSOR(int, intid)
- IDACCESSOR(Duration, duration)
+ IDACCESSOR(Translator)
+ IDACCESSOR(Music)
+ IDACCESSOR(General_script_def)
+ IDACCESSOR(Symtables)
+ IDACCESSOR(Midi_def)
+ IDACCESSOR(Paper_def)
+ IDACCESSOR(Lookup)
+ IDACCESSOR(Real)
+ IDACCESSOR(String)
+ IDACCESSOR(Request)
+ IDACCESSOR(Score)
+ IDACCESSOR(int)
+ IDACCESSOR(Duration)
VIRTUAL_COPY_CONS (Identifier, Identifier);
protected:
@@ -53,33 +53,33 @@ protected:
virtual String do_str () const;
};
-#define DECLARE_ID_CLASS(Class, accessor) \
+#define DECLARE_ID_CLASS(Class) \
struct Class ## _identifier : Identifier {\
Class *data_p_; \
DECLARE_MY_RUNTIME_TYPEINFO; \
Class ## _identifier (Class ## _identifier const&);\
Class ## _identifier (Class*st, int code);\
VIRTUAL_COPY_CONS (Class ## _identifier, Identifier);\
- virtual Class* accessor () const;\
+ virtual Class* access_ ## Class (bool copy_b = true) const;\
~Class ## _identifier();\
virtual void do_print () const; \
virtual String do_str () const; \
}\
-DECLARE_ID_CLASS(Translator, translator);
-DECLARE_ID_CLASS(Duration, duration);
-DECLARE_ID_CLASS(Real, real);
-DECLARE_ID_CLASS(String, string);
-DECLARE_ID_CLASS(General_script_def, script);
-DECLARE_ID_CLASS(Lookup, lookup);
-DECLARE_ID_CLASS(Symtables, symtables);
-DECLARE_ID_CLASS(Music, music);
-DECLARE_ID_CLASS(int, intid);
-DECLARE_ID_CLASS(Score, score);
-DECLARE_ID_CLASS(Request, request);
-DECLARE_ID_CLASS(Paper_def, paperdef);
-DECLARE_ID_CLASS(Midi_def, mididef);
+DECLARE_ID_CLASS(Translator);
+DECLARE_ID_CLASS(Duration);
+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);
+DECLARE_ID_CLASS(Score);
+DECLARE_ID_CLASS(Request);
+DECLARE_ID_CLASS(Paper_def);
+DECLARE_ID_CLASS(Midi_def);
#endif // IDENTIFIER_HH
diff --git a/lily/include/includable-lexer.hh b/lily/include/includable-lexer.hh
index 9cf7087369..6837efc1f5 100644
--- a/lily/include/includable-lexer.hh
+++ b/lily/include/includable-lexer.hh
@@ -3,7 +3,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -13,7 +13,7 @@
#include <FlexLexer.h>
#include "string.hh"
-#include "varray.hh"
+#include "array.hh"
#include "fproto.hh"
#include "proto.hh"
@@ -23,20 +23,26 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
/**
an yyFlexLexer child with provisions for inclusion.
*/
-class Includable_lexer : public yyFlexLexer {
+class Includable_lexer : public yyFlexLexer
+{
Array<YY_BUFFER_STATE> state_stack_;
+
protected:
bool close_input ();
Array<Source_file*> include_stack_;
Array<int> char_count_stack_;
+
public:
+ Includable_lexer ();
+ ~Includable_lexer ();
+
/// store dependencies for Makefile stuff.
Array<String> filename_str_arr_;
Source_file* source_file_l () const;
- void new_input (String s,Sources*);
- Includable_lexer ();
- ~Includable_lexer ();
+ void new_input (String s, Sources*);
+ void new_input (String name, String data, Sources*);
+
void add_lexed_char (int);
char const * here_ch_C ();
};
diff --git a/lily/include/ineq-constrained-qp.hh b/lily/include/ineq-constrained-qp.hh
index 3b23cb898f..5686d9e361 100644
--- a/lily/include/ineq-constrained-qp.hh
+++ b/lily/include/ineq-constrained-qp.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/item.hh b/lily/include/item.hh
index 0a20e76148..3201029829 100644
--- a/lily/include/item.hh
+++ b/lily/include/item.hh
@@ -3,15 +3,15 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef ITEM_HH
#define ITEM_HH
-#include "boxes.hh"
+#include "box.hh"
#include "string.hh"
-#include "score-elem.hh"
+#include "score-element.hh"
#include "drul-array.hh"
/**
@@ -24,22 +24,22 @@
spacing calculation.
*/
-class Item : public virtual Score_elem {
+class Item : public virtual Score_element {
public:
Link_array<Spanner> attached_span_l_arr_;
Drul_array<Item*> broken_to_drul_;
/// should be put in a breakable col.
bool breakable_b_;
- Direction break_status_i_;
+ Direction break_status_dir_;
int break_priority_i_;
/// nobreak = 0, pre = -1, post = 1
- int break_status_i() const;
+ Direction break_status_dir() const;
Item * find_prebroken_piece (Direction) const;
Item * find_prebroken_piece (Line_of_score*) const;
- virtual Item *item() { return this; }
+ virtual Item *access_Item() ;
Item();
Real hpos_f() const;
DECLARE_MY_RUNTIME_TYPEINFO;
@@ -47,6 +47,8 @@ public:
virtual Paper_column * column_l () const;
static int left_right_compare (Item const *, Item const*);
+
+ Item (Item const &);
protected:
virtual void do_unlink ();
virtual void do_junk_links();
diff --git a/lily/include/key-grav.hh b/lily/include/key-engraver.hh
index b895af193a..ce154b12da 100644
--- a/lily/include/key-grav.hh
+++ b/lily/include/key-engraver.hh
@@ -1,9 +1,9 @@
/*
- key-grav.hh -- declare Key_engraver
+ key-engraver.hh -- declare Key_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -12,6 +12,7 @@
#include "engraver.hh"
#include "key.hh"
+#include "musical-pitch.hh"
/**
Make the key signature.
@@ -27,7 +28,8 @@ public:
Key key_;
Key_change_req * keyreq_l_;
Key_item * kit_p_;
- Array<int> accidental_idx_arr_;
+ Array<Musical_pitch> accidental_idx_arr_;
+ Array<Musical_pitch> old_accidental_idx_arr_;
bool default_key_b_;
bool change_key_b_;
@@ -36,7 +38,7 @@ protected:
virtual void do_process_requests();
virtual void do_pre_move_processing();
virtual void do_post_move_processing();
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
};
#endif // KEYGRAV_HH
diff --git a/lily/include/key-item.hh b/lily/include/key-item.hh
index 3f4b7f30e0..9056db33b8 100644
--- a/lily/include/key-item.hh
+++ b/lily/include/key-item.hh
@@ -1,34 +1,42 @@
/*
key-item.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef KEYITEM_HH
#define KEYITEM_HH
#include "item.hh"
-#include "varray.hh"
+#include "array.hh"
/// An item which places accidentals at the start of the line
struct Key_item : Item {
- Array<int> pitch;
- Array<int> acc;
- int c_position;
- bool default_b_;
-
+ Array<int> pitch;
+ Array<int> acc;
+ Array<int> old_pitch;
+ Array<int> old_acc;
+ int c_position;
+ int c0_position;
+ bool default_b_;
+ bool multi_octave_b_;
- DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Key_item);
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ SCORE_ELEMENT_CLONE(Key_item);
+
+ Key_item ();
+ void add (int pitch, int acc);
+ void add (const Musical_pitch&);
+ void add_old (int pitch, int acc);
+ void add_old (const Musical_pitch&);
+ void read (const Key_engraver&);
+ void set_c_position (int);
+ int Key_item::calculate_position(int p, int a) const;
- Key_item (int cposition);
- void add (int pitch, int acc);
- void read (const Key_engraver&);
- void set_c_position (int);
protected:
- virtual void do_pre_processing();
- Molecule* brew_molecule_p() const;
+ virtual void do_pre_processing();
+ Molecule* brew_molecule_p() const;
};
#endif // KEYITEM_HH
diff --git a/lily/include/key-performer.hh b/lily/include/key-performer.hh
index f76b9e11fd..406ae94aeb 100644
--- a/lily/include/key-performer.hh
+++ b/lily/include/key-performer.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef KEY_PERFOMER_HH
diff --git a/lily/include/key.hh b/lily/include/key.hh
index 90c1479235..b00b1723c1 100644
--- a/lily/include/key.hh
+++ b/lily/include/key.hh
@@ -1,13 +1,13 @@
/*
key.hh -- declare Key, Octave_key
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef KEY_HH
#define KEY_HH
-#include "varray.hh"
+#include "array.hh"
#include "scalar.hh"
#include "lily-proto.hh"
diff --git a/lily/include/keyword.hh b/lily/include/keyword.hh
index 4b40a979fc..1f01b93d60 100644
--- a/lily/include/keyword.hh
+++ b/lily/include/keyword.hh
@@ -1,7 +1,7 @@
/*
keyword.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef KEYWORD_HH
diff --git a/lily/include/leastsquares.hh b/lily/include/leastsquares.hh
index c813f36bc4..63f88b6097 100644
--- a/lily/include/leastsquares.hh
+++ b/lily/include/leastsquares.hh
@@ -1,12 +1,12 @@
/*
leastsquare.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef LEASTSQUARE_HH
#define LEASTSQUARE_HH
-#include "varray.hh"
+#include "array.hh"
#include "offset.hh"
diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh
index 319f054432..d84e7bc27c 100644
--- a/lily/include/lily-proto.hh
+++ b/lily/include/lily-proto.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef LILY_PROTO_HH
@@ -25,7 +25,7 @@ struct Audio_element;
struct Audio_column;
struct Audio_item;
struct Audio_key;
-struct Audio_meter;
+struct Audio_time_signature;
struct Audio_note;
struct Audio_note_off;
struct Performance;
@@ -55,9 +55,9 @@ struct Clef_change_req;
struct Clef_item;
struct Clef_engraver;
struct Clef_performer;
-struct Col_hpositions;
+struct Column_x_positions;
struct Chord;
-struct Colinfo;
+struct Column_info;
struct Collision;
struct Collision_engraver;
struct Command_req;
@@ -76,6 +76,8 @@ struct Element_group;
struct Element_group_item;
struct General_script_def;
struct Graphical_element;
+struct Graphical_axis_group;
+struct Mark_req;
struct Music_output;
struct Musical_pitch;
struct Music_output_def;
@@ -115,16 +117,16 @@ struct Lyric_req;
struct My_lily_lexer;
struct Measure_grouping_req;
struct Melodic_req;
-struct Meter;
-struct Meter_change_req;
-struct Meter_engraver;
-struct Meter_performer;
+struct Time_signature;
+struct Time_signature_change_req;
+struct Time_signature_engraver;
+struct Time_signature_performer;
struct Midi_def;
struct Midi_duration;
struct Midi_header;
struct Midi_item;
struct Midi_key;
-struct Midi_meter;
+struct Midi_time_signature;
struct Midi_note;
struct Midi_note_event;
struct Midi_note_off;
@@ -164,13 +166,12 @@ struct Plet;
struct Plet_engraver;
struct Plet_req;
struct Plet_spanner;
-struct Pulk_voice;
-struct Pulk_voices;
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;
@@ -190,8 +191,8 @@ struct Scope;
struct Separating_group_spanner;
struct Score;
struct Score_column;
-struct Score_elem;
-struct Score_elem_info;
+struct Score_element;
+struct Score_element_info;
struct Score_performer;
struct Script;
struct Script_column;
@@ -203,11 +204,14 @@ struct Skip_req;
struct Slur;
struct Slur_engraver;
struct Slur_req;
-struct Spacing_req ;
+struct Spacing_req;
+struct Span_bar;
+struct Span_score_bar;
struct Span_dynamic_req;
struct Span_req;
struct Spanner;
struct Spring_spacer;
+struct Staff_bracket;
struct Staff_performer;
struct Staff_side;
struct Staff_symbol;
@@ -215,12 +219,10 @@ struct Stem;
struct Stem_beam_engraver;
struct Stem_req;
struct String;
-struct Subtle_req;
struct Atom;
struct Symtable;
struct Symtables;
struct Super_elem;
-struct Terminate_voice_req;
struct Translation_property;
struct Tempo_req;
struct Tex_stream;
@@ -241,14 +243,10 @@ struct Vertical_group_element;
struct Vertical_group_spanner;
struct Vertical_align_spanner;
struct Vertical_align_engraver;
-struct Vertical_align_element;
+struct Align_element;
struct Voice;
struct Request_chord;
-struct Voice_group_engravers;
struct Voice_group_performer;
struct Voice_list;
-struct Voice_engravers;
-struct Voicegroup;
-struct Walker_engravers;
typedef Rational Moment;
#endif // LILY_PROTO_HH
diff --git a/lily/include/line-group-grav.hh b/lily/include/line-group-group-engraver.hh
index f6d4e6b35f..c31fc755d5 100644
--- a/lily/include/line-group-grav.hh
+++ b/lily/include/line-group-group-engraver.hh
@@ -1,36 +1,35 @@
/*
- line-group-grav.hh -- declare Line_group_engraver
+ line-group-engraver.hh -- declare Line_group_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef LINE_GROUP_GRAV_HH
#define LINE_GROUP_GRAV_HH
-#include "engraver.hh"
+#include "engraver-group.hh"
#include "lily-proto.hh"
/**
Engravers put elements on the same or lowel level in a line
*/
-class Line_group_engraver : public Engraver{
+class Line_group_engraver_group : public Engraver_group_engraver {
protected:
-
Vertical_group_spanner *staffline_p_;
-
virtual void create_line_spanner ();
virtual void do_creation_processing();
virtual void do_removal_processing();
- virtual void acknowledge_element (Score_elem_info);
+ virtual void typeset_element (Score_element*);
+virtual void do_announces ();
public:
- TRANSLATOR_CLONE(Line_group_engraver);
+ TRANSLATOR_CLONE(Line_group_engraver_group);
DECLARE_MY_RUNTIME_TYPEINFO;
- Line_group_engraver();
+ Line_group_engraver_group();
};
diff --git a/lily/include/scoreline.hh b/lily/include/line-of-score.hh
index cb089cdb05..894b39a5ba 100644
--- a/lily/include/scoreline.hh
+++ b/lily/include/line-of-score.hh
@@ -1,7 +1,7 @@
/*
scoreline.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef SCORELINE_HH
@@ -20,23 +20,23 @@ public:
DECLARE_MY_RUNTIME_TYPEINFO;
Line_of_score();
- void add (Score_elem *);
+ void add_element (Score_element *);
/// is #c# contained in #*this#?
bool contains_b (Paper_column const *c) const;
Link_array<Line_of_score> get_lines() const;
- void set_breaking (Array<Col_hpositions> const&);
+ void set_breaking (Array<Column_x_positions> const&);
protected:
- virtual Link_array<Score_elem> get_extra_dependencies () const;
+ virtual Link_array<Score_element> get_extra_dependencies () const;
virtual void do_unlink ();
virtual void do_junk_links ();
virtual void break_into_pieces (bool);
virtual Interval do_width() const;
virtual void do_print() const;
- SCORE_ELEM_CLONE(Line_of_score);
+ SCORE_ELEMENT_CLONE(Line_of_score);
};
#endif
diff --git a/lily/include/line-spacer.hh b/lily/include/line-spacer.hh
index 1bc88f52c2..a61ac4d9e8 100644
--- a/lily/include/line-spacer.hh
+++ b/lily/include/line-spacer.hh
@@ -3,14 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef LINE_SPACER_HH
#define LINE_SPACER_HH
#include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
#include "vector.hh"
#include "interval.hh"
@@ -31,13 +31,13 @@ public:
/** solve the spacing problem
*/
- virtual void solve (Col_hpositions *) const=0;
+ virtual void solve (Column_x_positions *) const=0;
/**
Approximate the spacing problem:
return a lower bound on the energy
*/
- virtual void lower_bound_solution (Col_hpositions *) const=0;
+ virtual void lower_bound_solution (Column_x_positions *) const=0;
/** add a col to the problem. columns have to be added left to
right. The column contains info on it's minimum width. */
diff --git a/lily/include/linear-programming.hh b/lily/include/linear-programming.hh
index 08eefad823..c0648e8b26 100644
--- a/lily/include/linear-programming.hh
+++ b/lily/include/linear-programming.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/linespace.hh b/lily/include/linespace.hh
index a468fad24f..8b230ff516 100644
--- a/lily/include/linespace.hh
+++ b/lily/include/linespace.hh
@@ -1,9 +1,9 @@
/*
- linespace.hh -- declare Colinfo, Spacing_problem
+ linespace.hh -- declare Spacing_problem
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#error
@@ -12,7 +12,7 @@
#define LINESPACE_HH
#include "plist.hh"
-#include "varray.hh"
+#include "array.hh"
#include "vector.hh"
#include "interval.hh"
#include "pointer.hh"
@@ -42,8 +42,8 @@
*/
class Spacing_problem {
PointerList<Idealspacing *> ideal_p_list_;
- Array<Colinfo> cols;
- Array<Colinfo> loose_col_arr_;
+ Array<Column_info> cols;
+ Array<Column_info> loose_col_arr_;
/// mark column #i# as being loose.
void loosen_column (int i);
@@ -81,7 +81,7 @@ public:
Array<Paper_column*> error_pcol_l_arr() const;
virtual Array<Real> solve() const;
- virtual void add_column (Paper_column *, bool fixed=false, Real fixpos=0.0);
+ virtual void add_column (Paper_column *, bool fixed=false, Real fixpos=0.0);
virtual Vector default_solution() contains {
diff --git a/lily/include/local-key-grav.hh b/lily/include/local-key-engraver.hh
index b61446b760..7599d08d9a 100644
--- a/lily/include/local-key-grav.hh
+++ b/lily/include/local-key-engraver.hh
@@ -1,7 +1,7 @@
/*
- local-key-grav.hh -- declare Local_key_engraver
+ local-key-engraver.hh -- declare Local_key_engraver
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -17,7 +17,7 @@ struct Local_key_engraver : Engraver {
protected:
TRANSLATOR_CLONE(Local_key_engraver);
virtual void do_process_requests();
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual void do_pre_move_processing();
virtual void do_creation_processing ();
virtual void process_acknowledged ();
diff --git a/lily/include/local-key-item.hh b/lily/include/local-key-item.hh
index ec41cb3a54..d08ca2b490 100644
--- a/lily/include/local-key-item.hh
+++ b/lily/include/local-key-item.hh
@@ -1,13 +1,13 @@
/*
local-key-item.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef LOCALKEYITEM_HH
#define LOCALKEYITEM_HH
#include "item.hh"
-#include "varray.hh"
+#include "array.hh"
#include "musical-pitch.hh"
/**
@@ -26,16 +26,14 @@ public:
DECLARE_MY_RUNTIME_TYPEINFO;
Array<Musical_pitch> accs;
Link_array<Item> support_items_;
- int c0_position;
-
-
+ int c0_position_i_;
- Local_key_item (int c0position);
+ Local_key_item ();
void add_support (Item*);
void add (Musical_pitch);
protected:
virtual void do_pre_processing();
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
virtual Molecule* brew_molecule_p() const;
};
#endif // LOCALKEYITEM_HH
diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh
index 292363bb9c..763beb8d42 100644
--- a/lily/include/lookup.hh
+++ b/lily/include/lookup.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef LOOKUPSYMS_HH
@@ -14,32 +14,33 @@
#include "scalar.hh"
#include "direction.hh"
#include "curve.hh"
+#include "afm.hh"
/** handy interface to symbol table
*/
struct Lookup {
Paper_def * paper_l_;
Symtables *symtables_p_;
- String texsetting;
-
+ String font_;
+ String font_path_;
+ Adobe_font_metric * afm_p_;
+
+
Lookup();
Lookup (Lookup const &);
~Lookup();
void add (String, Symtable*);
void print() const;
+ Atom afm_find (String) const;
Atom fill (Box b) const;
- Atom beam_element (int,int,Real=0) 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 meter (Array<Scalar>) const;
+ Atom time_signature (Array<Scalar>) const;
Atom stem (Real y1_pos, Real y2_pos) const;
Atom rule_symbol (Real height, Real width) const;
Atom accidental (int) const;
@@ -48,12 +49,11 @@ struct Lookup {
Atom rest (int, bool outside) const;
Atom clef (String) const;
Atom bar (String, Real height) const;
-
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, int align = 1) 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;
diff --git a/lily/include/lyric-engraver.hh b/lily/include/lyric-engraver.hh
index 195e4f92dc..ec85670f73 100644
--- a/lily/include/lyric-engraver.hh
+++ b/lily/include/lyric-engraver.hh
@@ -3,14 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef LYRIC_ENGRAVER_HH
#define LYRIC_ENGRAVER_HH
#include "engraver.hh"
-#include "varray.hh"
+#include "array.hh"
#include "lily-proto.hh"
diff --git a/lily/include/lyric-performer.hh b/lily/include/lyric-performer.hh
index 2660f89002..29a5f92390 100644
--- a/lily/include/lyric-performer.hh
+++ b/lily/include/lyric-performer.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
@@ -12,7 +12,7 @@
#include "lily-proto.hh"
#include "performer.hh"
-#include "varray.hh"
+#include "array.hh"
class Lyric_performer : public Performer {
public:
diff --git a/lily/include/main.hh b/lily/include/main.hh
index b96b62df56..da5e0a53ef 100644
--- a/lily/include/main.hh
+++ b/lily/include/main.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef MAIN_HH
#define MAIN_HH
@@ -17,7 +17,6 @@ void add_score (Score* s);
void set_default_output (String s);
String find_file (String);
String get_version_str();
-String get_version_number_str();
void call_constructors ();
extern Sources* source_global_l;
extern bool no_paper_global_b;
@@ -28,9 +27,12 @@ extern bool experimental_features_global_b;
extern bool dependency_global_b;
extern bool version_ignore_global_b;
+
extern Array<String> get_inclusion_names ();
extern void set_inclusion_names (Array<String>);
+extern File_path global_path;
+
extern String default_outname_base_global;
extern String default_outname_suffix_global;
extern int default_count_global;
diff --git a/lily/include/meter-performer.hh b/lily/include/meter-performer.hh
deleted file mode 100644
index f3fe174dd1..0000000000
--- a/lily/include/meter-performer.hh
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- meter-performer.hh -- declare Meter_performer
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
-*/
-
-#ifndef METER_PERFOMER_HH
-#define METER_PERFOMER_HH
-
-#include "lily-proto.hh"
-#include "performer.hh"
-
-class Meter_performer : public Performer {
-public:
- TRANSLATOR_CLONE(Meter_performer);
- DECLARE_MY_RUNTIME_TYPEINFO;
- Meter_performer();
- ~Meter_performer();
-
-protected:
- void do_print() const;
- virtual bool do_try_request (Request* req_l);
- virtual void do_process_requests();
-
-private:
- Meter_change_req* meter_req_l_;
-};
-
-#endif // METER_PERFOMER_HH
diff --git a/lily/include/meter.hh b/lily/include/meter.hh
deleted file mode 100644
index 8347b3fa2d..0000000000
--- a/lily/include/meter.hh
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- meter.hh -- declare Meter
-
- (c) 1996,97 Han-Wen Nienhuys
-*/
-
-#ifndef METER_HH
-#define METER_HH
-#include "item.hh"
-#include "varray.hh"
-#include "scalar.hh"
-
-/**
- TODO:
-
- C style meters, 2+3+2/8 meters, alla breve.
-
- */
-class Meter: public Item {
- Array<Scalar> args;
- /* *************** */
-protected:
- Molecule*brew_molecule_p() const;
-public:
- Meter (Array<Scalar> args) ;
- DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Meter);
-};
-#endif // METER_HH
-
diff --git a/lily/include/midi-def.hh b/lily/include/midi-def.hh
index 98951c10f1..dcf0a9819d 100644
--- a/lily/include/midi-def.hh
+++ b/lily/include/midi-def.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
diff --git a/lily/include/midi-item.hh b/lily/include/midi-item.hh
index ca89bacec1..dc40138d13 100644
--- a/lily/include/midi-item.hh
+++ b/lily/include/midi-item.hh
@@ -1,7 +1,7 @@
/*
midi-item.hh -- declare Midi items
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef MIDI_ITEM_HH
@@ -96,10 +96,10 @@ struct Midi_key : public Midi_item {
virtual String str () const;
};
-struct Midi_meter : Midi_item {
+struct Midi_time_signature : Midi_item {
DECLARE_MY_RUNTIME_TYPEINFO;
- Midi_meter (Audio_item* audio_item_l);
+ Midi_time_signature (Audio_item* audio_item_l);
virtual String str () const;
int clocks_per_1_i_;
diff --git a/lily/include/midi-stream.hh b/lily/include/midi-stream.hh
index f3a3781ed3..464bfba9e6 100644
--- a/lily/include/midi-stream.hh
+++ b/lily/include/midi-stream.hh
@@ -1,7 +1,7 @@
/*
midi-stream.hh -- declare Midi_stream
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef MIDI_STREAM_HH
diff --git a/lily/include/midi-walker.hh b/lily/include/midi-walker.hh
index c7a20f76ac..3be3395e62 100644
--- a/lily/include/midi-walker.hh
+++ b/lily/include/midi-walker.hh
@@ -1,8 +1,8 @@
/*
midi-walker.hh -- declare Midi_walker
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef MIDI_WALKER_HH
diff --git a/lily/include/minterval.hh b/lily/include/minterval.hh
index bb56394a7d..e7f2cf605a 100644
--- a/lily/include/minterval.hh
+++ b/lily/include/minterval.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/misc.hh b/lily/include/misc.hh
index 35a10dfaf9..e659602e99 100644
--- a/lily/include/misc.hh
+++ b/lily/include/misc.hh
@@ -1,18 +1,23 @@
#ifndef MISC_HH
#define MISC_HH
+#include <stdlib.h>
+
#include "real.hh"
-#include "varray.hh"
+#include "array.hh"
#include "interval.hh"
double log_2(double x) ;
int intlog2(int d);
-#if ! defined(_ABS_)
+
+#if 0
+ // defined in real.hh
inline int
abs (int i){
return (i < 0)?-i:i;
}
#endif
+
inline int
sign (int i) {
if (i<0) return -1;
@@ -25,6 +30,7 @@ sign (int i) {
Interval itemlist_width (const Array<Item*> &its);
#endif
+void set_frobnify (void*, size_t);
int get_lower_bound (Array<Real> const& positions, Real x);
Slice get_bounds_slice (Array<Real> const& positions, Real x);
Interval get_bounds_iv (Array<Real> const& positions, Real x);
diff --git a/lily/include/molecule.hh b/lily/include/molecule.hh
index 3faccc45f8..f8edc37c25 100644
--- a/lily/include/molecule.hh
+++ b/lily/include/molecule.hh
@@ -3,37 +3,36 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef MOLECULE_HH
#define MOLECULE_HH
#include "lily-proto.hh"
#include "plist.hh"
-#include "boxes.hh"
+#include "box.hh"
#include "axes.hh"
#include "direction.hh"
/** a group of individually translated symbols. You can add molecules
to the top, to the right, etc. */
struct Molecule {
- Pointer_list<Atom*> ats; // change to List<Atom>?
+ Pointer_list<Atom*> atoms_; // change to List<Atom>?
/* *************** */
Molecule() { }
- Molecule (Atom const &a) { add (a) ;}
+ Molecule (Atom const &a);
void add_at_edge (Axis a, Direction d, const Molecule &m);
- void add (Molecule const &m);
+ void add_molecule (Molecule const &m);
void translate (Offset);
void translate_axis (Real,Axis);
- void add (Atom const & a) ;
+ void add_atom (Atom const & a) ;
/// how big is #this#?
Box extent() const;
- String TeX_string() const;
Molecule (const Molecule&s);
void print() const;
diff --git a/lily/include/mudela-version.hh b/lily/include/mudela-version.hh
index 0858c8178a..4fc6104a4e 100644
--- a/lily/include/mudela-version.hh
+++ b/lily/include/mudela-version.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
diff --git a/lily/include/multi-measure-rest-engraver.hh b/lily/include/multi-measure-rest-engraver.hh
index 067ff3eae1..abb17be6e4 100644
--- a/lily/include/multi-measure-rest-engraver.hh
+++ b/lily/include/multi-measure-rest-engraver.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef MULTI_MEASURE_REST_ENGRAVER_HH
diff --git a/lily/include/multi-measure-rest.hh b/lily/include/multi-measure-rest.hh
index afaeaf7770..66cf89d004 100644
--- a/lily/include/multi-measure-rest.hh
+++ b/lily/include/multi-measure-rest.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
diff --git a/lily/include/music-iterator.hh b/lily/include/music-iterator.hh
index f3f6b4e155..f5e04126f8 100644
--- a/lily/include/music-iterator.hh
+++ b/lily/include/music-iterator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -12,7 +12,7 @@
#include "lily-proto.hh"
#include "plist.hh"
-#include "varray.hh"
+#include "array.hh"
#include "moment.hh"
#include "virtual-methods.hh"
diff --git a/lily/include/music-list.hh b/lily/include/music-list.hh
index 018832f773..78a2ac1a6b 100644
--- a/lily/include/music-list.hh
+++ b/lily/include/music-list.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/music-output-def.hh b/lily/include/music-output-def.hh
index b4cd413412..29f4c11aae 100644
--- a/lily/include/music-output-def.hh
+++ b/lily/include/music-output-def.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/music-output.hh b/lily/include/music-output.hh
index 6f2807ff2c..04a16e5d8d 100644
--- a/lily/include/music-output.hh
+++ b/lily/include/music-output.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/music-wrapper-iterator.hh b/lily/include/music-wrapper-iterator.hh
index cd5ad0a986..4437d461ed 100644
--- a/lily/include/music-wrapper-iterator.hh
+++ b/lily/include/music-wrapper-iterator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/music-wrapper.hh b/lily/include/music-wrapper.hh
index 989fb5fd0c..cdecc0b5ba 100644
--- a/lily/include/music-wrapper.hh
+++ b/lily/include/music-wrapper.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/music.hh b/lily/include/music.hh
index b5e85ff184..083e476f73 100644
--- a/lily/include/music.hh
+++ b/lily/include/music.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/musical-pitch.hh b/lily/include/musical-pitch.hh
index 643cf04678..ed3e8ed015 100644
--- a/lily/include/musical-pitch.hh
+++ b/lily/include/musical-pitch.hh
@@ -3,27 +3,32 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef MUSICAL_PITCH_HH
#define MUSICAL_PITCH_HH
+
#include "lily-proto.hh"
+#include "input.hh"
/** The pitch as it figures in diatonal western music (12 semitones in
an octave).
It is not Music because, it has to duration associated
*/
-struct Musical_pitch {
+struct Musical_pitch : public Input
+{
+ Musical_pitch ();
+
/// 0 is c, 6 is b
int notename_i_;
/// 0 is central c
int octave_i_;
-
- /// 0 natural, 1 sharp, etc
+ /// 0 natural, 1 sharp, etc
int accidental_i_;
+
void init () ;
Musical_pitch to_relative_octave (Musical_pitch);
void transpose (Musical_pitch);
@@ -32,7 +37,6 @@ struct Musical_pitch {
int steps() const;
/// return pitch from central c (in halfnotes)
int semitone_pitch() const;
- Musical_pitch ();
void up_to (int);
void down_to (int);
String str () const;
diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh
index 2b3bf0fc58..f6bb89cec5 100644
--- a/lily/include/musical-request.hh
+++ b/lily/include/musical-request.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -21,27 +21,27 @@
*/
class Musical_req : public virtual Request {
public:
-
- virtual Lyric_req* lreq_l() { return 0; }
- virtual Note_req *note() { return 0;}
- virtual Stem_req *stem() { return 0;}
- virtual Melodic_req *melodic() { return 0; }
- virtual Slur_req *slur() { return 0 ; }
- virtual Beam_req *beam() { return 0 ; }
- virtual Abbreviation_beam_req* abbrev_beam() { return 0 ; }
- virtual Rhythmic_req*rhythmic() { return 0; }
- virtual Musical_script_req*musicalscript() { return 0; }
- virtual Text_req*text() { return 0; }
- virtual Rest_req *rest() { return 0; }
- virtual Skip_req* skip() { return 0; }
- virtual Dynamic_req* dynamic() { return 0; }
- virtual Absolute_dynamic_req * absdynamic() { return 0; }
- virtual Tie_req * tie() { return 0; }
- virtual Plet_req* plet() { return 0; }
- virtual Span_dynamic_req * span_dynamic() { return 0; }
- virtual Abbreviation_req* abbrev() { return 0; }
- virtual Multi_measure_rest_req* multi_measure() { return 0; }
- REQUESTMETHODS(Musical_req, musical);
+
+ DEFAULTACCESSOR(Lyric_req)
+ DEFAULTACCESSOR(Note_req )
+ DEFAULTACCESSOR(Stem_req )
+ DEFAULTACCESSOR(Melodic_req )
+ DEFAULTACCESSOR(Slur_req )
+ DEFAULTACCESSOR(Beam_req )
+ DEFAULTACCESSOR(Abbreviation_beam_req)
+ DEFAULTACCESSOR(Rhythmic_req)
+ DEFAULTACCESSOR(Musical_script_req)
+ DEFAULTACCESSOR(Text_req)
+ DEFAULTACCESSOR(Rest_req )
+ DEFAULTACCESSOR(Skip_req)
+ DEFAULTACCESSOR(Dynamic_req)
+ DEFAULTACCESSOR(Absolute_dynamic_req )
+ DEFAULTACCESSOR(Tie_req )
+ DEFAULTACCESSOR(Plet_req)
+ DEFAULTACCESSOR(Span_dynamic_req )
+ DEFAULTACCESSOR(Abbreviation_req)
+ DEFAULTACCESSOR(Multi_measure_rest_req)
+ REQUESTMETHODS(Musical_req);
};
@@ -59,12 +59,12 @@ public:
virtual Moment duration() const;
Rhythmic_req();
static int compare (Rhythmic_req const&,Rhythmic_req const&);
- REQUESTMETHODS(Rhythmic_req, rhythmic);
+ REQUESTMETHODS(Rhythmic_req);
};
class Skip_req : public Rhythmic_req {
public:
- REQUESTMETHODS(Skip_req, skip);
+ REQUESTMETHODS(Skip_req);
};
struct Spacing_req :virtual Request {
@@ -73,18 +73,18 @@ struct Spacing_req :virtual Request {
Real strength;
/* *************** */
Spacing_req();
- REQUESTMETHODS(Spacing_req, spacing);
+ REQUESTMETHODS(Spacing_req);
};
struct Abbreviation_req : public Musical_req {
- REQUESTMETHODS (Abbreviation_req, abbrev);
+ REQUESTMETHODS (Abbreviation_req);
Abbreviation_req ();
int type_i_;
};
class Blank_req : public Spacing_req, Rhythmic_req {
public:
- REQUESTMETHODS(Spacing_req, spacing);
+ REQUESTMETHODS(Spacing_req);
};
/// Put a text above or below (?) this staff.
@@ -100,16 +100,15 @@ public:
~Text_req();
Text_req (Text_req const&);
- REQUESTMETHODS(Text_req,text);
+ REQUESTMETHODS(Text_req);
};
-/** Put a text in lyric_staff
- @see Lyric_staff
+/** a syllable or lyric is a string with rhythm.
*/
-class Lyric_req : public Rhythmic_req, public Text_req {
+class Lyric_req : public Rhythmic_req {
public:
- Lyric_req (Text_def* t_p);
- REQUESTMETHODS(Lyric_req, lreq_l);
+ String text_str_;
+ REQUESTMETHODS(Lyric_req);
};
@@ -123,7 +122,7 @@ struct Melodic_req :virtual Musical_req
Melodic_req();
bool do_equal_b (Request*) const;
static int compare (Melodic_req const&,Melodic_req const&);
- REQUESTMETHODS(Melodic_req,melodic);
+ REQUESTMETHODS(Melodic_req);
};
/// Put a note of specified type, height, and with accidental on the staff.
@@ -134,8 +133,8 @@ public:
bool forceacc_b_;
Note_req();
bool do_equal_b (Request*) const;
- Rhythmic_req* rhythmic() { return Rhythmic_req::rhythmic (); }
- REQUESTMETHODS(Note_req, note);
+ Rhythmic_req* access_Rhythmic_req () { return Rhythmic_req::access_Rhythmic_req (); }
+ REQUESTMETHODS(Note_req);
};
/**
@@ -143,7 +142,7 @@ Put a rest on the staff. Why a request? It might be a good idea to not typeset t
*/
class Rest_req : public Rhythmic_req {
public:
- REQUESTMETHODS(Rest_req,rest);
+ REQUESTMETHODS(Rest_req);
};
/**
@@ -152,7 +151,7 @@ public:
*/
class Multi_measure_rest_req : public Rhythmic_req {
public:
- REQUESTMETHODS(Multi_measure_rest_req, multi_measure);
+ REQUESTMETHODS(Multi_measure_rest_req);
};
@@ -167,7 +166,7 @@ public:
NOSPAN, START, STOP
} spantype;
bool do_equal_b (Request*) const;
- REQUESTMETHODS(Span_req,span);
+ REQUESTMETHODS(Span_req);
Span_req();
@@ -177,7 +176,7 @@ public:
class Beam_req : public Span_req {
public:
/* *************** */
- REQUESTMETHODS(Beam_req,beam);
+ REQUESTMETHODS(Beam_req);
Beam_req();
};
@@ -187,7 +186,7 @@ public:
*/
class Abbreviation_beam_req : public Span_req {
public:
- REQUESTMETHODS (Abbreviation_beam_req, abbrev_beam);
+ REQUESTMETHODS (Abbreviation_beam_req);
Abbreviation_beam_req ();
@@ -199,13 +198,13 @@ public:
*/
class Tie_req : public Musical_req {
public:
- REQUESTMETHODS(Tie_req, tie);
+ REQUESTMETHODS(Tie_req);
};
/// a slur
class Slur_req : public Span_req {
public:
- REQUESTMETHODS(Slur_req,slur);
+ REQUESTMETHODS(Slur_req);
};
@@ -214,14 +213,13 @@ class Plet_req : public Span_req {
public:
int plet_i_;
- REQUESTMETHODS(Plet_req,plet);
-
+ REQUESTMETHODS(Plet_req);
Plet_req ();
};
class Musical_script_req : public Musical_req, public Script_req {
public:
- REQUESTMETHODS(Musical_script_req, musicalscript);
+ REQUESTMETHODS(Musical_script_req);
};
@@ -237,7 +235,7 @@ public:
FFF, FF, F, MF, MP, P, PP, PPP, FP, SF, SFZ
};
static String loudness_static_str (Loudness);
- REQUESTMETHODS(Dynamic_req, dynamic);
+ REQUESTMETHODS(Dynamic_req);
};
class Absolute_dynamic_req : public Dynamic_req {
@@ -246,15 +244,16 @@ public:
virtual bool do_equal_b (Request*) const;
String loudness_str () const;
Absolute_dynamic_req();
- REQUESTMETHODS(Absolute_dynamic_req, absdynamic);
+ REQUESTMETHODS(Absolute_dynamic_req);
};
class Span_dynamic_req : public Dynamic_req, public Span_req {
public:
+ virtual bool do_equal_b (Request*) const;
/// Grow or shrink the volume: 1=cresc, -1 = decresc
Direction dynamic_dir_;
Span_dynamic_req();
- REQUESTMETHODS(Span_dynamic_req, span_dynamic);
+ REQUESTMETHODS(Span_dynamic_req);
};
#endif // MUSICALREQUESTS_HH
diff --git a/lily/include/my-lily-lexer.hh b/lily/include/my-lily-lexer.hh
index 42ac85949f..e4e3d293ed 100644
--- a/lily/include/my-lily-lexer.hh
+++ b/lily/include/my-lily-lexer.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef LEXER_HH
@@ -15,7 +15,7 @@
#include "lily-proto.hh"
#include "lily-proto.hh"
#include "fproto.hh"
-#include "varray.hh"
+#include "array.hh"
#include "string.hh"
#include "includable-lexer.hh"
#include "duration.hh"
diff --git a/lily/include/my-lily-parser.hh b/lily/include/my-lily-parser.hh
index 0dd977dca9..04e1871305 100644
--- a/lily/include/my-lily-parser.hh
+++ b/lily/include/my-lily-parser.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -11,12 +11,12 @@
#define MY_LILY_PARSER_HH
#include "lily-proto.hh"
#include "string.hh"
-#include "varray.hh"
+#include "array.hh"
#include "lily-proto.hh"
#include "lily-proto.hh"
#include "duration.hh"
#include "string.hh"
-#include "varray.hh"
+#include "array.hh"
#include "input.hh"
class My_lily_parser {
@@ -27,8 +27,8 @@ class My_lily_parser {
void add_requests (Chord*v);
Chord * get_note_element (Note_req * ,Duration *);
- Chord* get_rest_element (String,Duration *);
- Chord* get_word_element (Text_def*, Duration*);
+ Chord* get_rest_element (String, Duration *);
+ Chord* get_word_element (String, Duration*);
Melodic_req* get_melodic_req (Melodic_req* melodic, int quotes);
String notename_str (Melodic_req* melodic);
void set_last_duration (Duration const *);
@@ -37,12 +37,11 @@ class My_lily_parser {
public:
int abbrev_beam_type_i_;
- int default_octave_i_;
+ int default_abbrev_i_;
Duration default_duration_;
Plet plet_;
Header *default_header_p_;
- String textstyle_str_;
bool first_b_;
Array<Request*> pre_reqs, post_reqs;
diff --git a/lily/include/note-column.hh b/lily/include/note-column.hh
index dfcc1cc7ab..2dd3243355 100644
--- a/lily/include/note-column.hh
+++ b/lily/include/note-column.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -19,7 +19,7 @@ class Note_column : public Script_column {
protected:
virtual void do_pre_processing();
virtual void do_print () const;
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
public:
/** The relative position of the "voice" containing this
chord. Normally this would be the same as the stem direction,
@@ -40,11 +40,11 @@ public:
DECLARE_MY_RUNTIME_TYPEINFO;
Note_column ();
- void set (Stem*);
- void set (Dot_column*);
- void add (Rhythmic_head*);
+ void set_stem (Stem*);
+ void set_dotcol (Dot_column*);
+ void add_head (Rhythmic_head*);
bool rest_b () const;
- virtual void add (Script*s);
+ virtual void add_script (Script*s);
void sort ();
};
diff --git a/lily/include/note-head.hh b/lily/include/note-head.hh
index 6ed35ce263..07d3185a06 100644
--- a/lily/include/note-head.hh
+++ b/lily/include/note-head.hh
@@ -1,7 +1,7 @@
/*
note-head.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef NOTEHEAD_HH
diff --git a/lily/include/note-performer.hh b/lily/include/note-performer.hh
index c3b77ea415..057f61c4e7 100644
--- a/lily/include/note-performer.hh
+++ b/lily/include/note-performer.hh
@@ -1,8 +1,8 @@
/*
note-performer.hh -- declare Note_performer
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef NOTE_PERFORMER_HH
diff --git a/lily/include/notename-table.hh b/lily/include/notename-table.hh
index a9181e9d90..56dd7c3927 100644
--- a/lily/include/notename-table.hh
+++ b/lily/include/notename-table.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/notename.hh b/lily/include/notename.hh
index 426f7e4564..716217ef84 100644
--- a/lily/include/notename.hh
+++ b/lily/include/notename.hh
@@ -1,7 +1,7 @@
/*
notename.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef NOTENAME_HH
diff --git a/lily/include/out/dummy.dep b/lily/include/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/lily/include/out/dummy.dep
+++ /dev/null
diff --git a/lily/include/p-col.hh b/lily/include/p-col.hh
index 5ab02c8410..674139c149 100644
--- a/lily/include/p-col.hh
+++ b/lily/include/p-col.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -31,7 +31,7 @@
class Paper_column : public Horizontal_group_item {
public:
DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Paper_column);
+ SCORE_ELEMENT_CLONE(Paper_column);
Drul_array< Array<Column_rod> > minimal_dists_arr_drul_;
void preprocess ();
@@ -64,7 +64,7 @@ public:
bool used_b() const;
bool breakpoint_b() const;
- void add (Item *i);
+ void add_item (Item *i);
Paper_column();
diff --git a/lily/include/p-score.hh b/lily/include/p-score.hh
index 60ebda08cd..a6b4dc2a9d 100644
--- a/lily/include/p-score.hh
+++ b/lily/include/p-score.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -33,14 +33,14 @@ public:
Pointer_list<Spanner *> span_p_list_;
/// other elements
- Pointer_list<Score_elem*> elem_p_list_;
+ Pointer_list<Score_element*> elem_p_list_;
Outputter *outputter_l_;
Super_elem *super_elem_l_;
Paper_score ();
/// add a line to the broken stuff. Positions given in #config#
- void set_breaking (Array<Col_hpositions> const &);
+ void set_breaking (Array<Column_x_positions> const &);
/// add to bottom of pcols
@@ -59,7 +59,7 @@ public:
/* STANDARD ROUTINES */
void print() const;
- void typeset_element (Score_elem*);
+ void typeset_element (Score_element*);
void typeset_broken_spanner (Spanner*);
/// add a Spanner
void typeset_unbroken_spanner (Spanner*);
diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh
index ea7b9d39e3..aa8973d8a8 100644
--- a/lily/include/paper-def.hh
+++ b/lily/include/paper-def.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -14,7 +14,7 @@
#include "real.hh"
#include "moment.hh"
-#include "varray.hh"
+#include "array.hh"
#include "interval.hh"
#include "music-output-def.hh"
@@ -36,7 +36,7 @@
*/
class Paper_def : public Music_output_def
{
- Lookup *lookup_p_;
+ Assoc<int, Lookup *> *lookup_p_assoc_p_;
Scope* scope_p_;
static int default_count_i_;
@@ -52,7 +52,7 @@ public:
Real get_var (String) const;
void reinit ();
Paper_def ();
- void set (Lookup*);
+ void set_lookup (int, Lookup*);
Paper_def (Paper_def const&);
/// The distance between beams of multiplicity_i
@@ -82,10 +82,10 @@ public:
Real note_width () const;
void print () const;
- Lookup const * lookup_l (); // TODO naming
+ Lookup const * lookup_l (int sz) const; // TODO naming
/** convert a duration to an idealspacing
- influence using the geometric_ and parameters.
+ influence using the geometric_ and paratime_signatures.
*/
Real duration_to_dist (Moment, Real) const;
Real geometric_spacing (Moment) const;
diff --git a/lily/include/parseconstruct.hh b/lily/include/parseconstruct.hh
index a48ce2c022..7a85104846 100644
--- a/lily/include/parseconstruct.hh
+++ b/lily/include/parseconstruct.hh
@@ -1,7 +1,7 @@
/*
parseconstruct.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef PARSECONSTRUCT_HH
diff --git a/lily/include/performance.hh b/lily/include/performance.hh
index 923575769d..bc7067a4af 100644
--- a/lily/include/performance.hh
+++ b/lily/include/performance.hh
@@ -1,7 +1,7 @@
/*
performance.hh -- declare Performance
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef PERFORMANCE_HH
@@ -20,9 +20,9 @@ public:
Performance ();
~Performance () {}
- void add (Audio_column*);
+ void add_column (Audio_column*);
void add_staff (Audio_staff* l);
- void add (Audio_element*p);
+ void add_element (Audio_element*p);
void output (Midi_stream& midi_stream_r);
diff --git a/lily/include/performer-group-performer.hh b/lily/include/performer-group-performer.hh
index f5bcb61b4a..8c9c8aa8d8 100644
--- a/lily/include/performer-group-performer.hh
+++ b/lily/include/performer-group-performer.hh
@@ -1,8 +1,8 @@
/*
performer-group-performer.hh -- declare Performer_group_performer
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef PERFORMER_GROUP_PERFORMER_HH
diff --git a/lily/include/performer.hh b/lily/include/performer.hh
index 5d17b6afef..11fbdbb397 100644
--- a/lily/include/performer.hh
+++ b/lily/include/performer.hh
@@ -1,17 +1,17 @@
/*
performer.hh -- declare Performer
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef PERFORMER_HH
#define PERFORMER_HH
#include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
#include "request.hh"
-#include "score-elem-info.hh"
+#include "score-element-info.hh"
#include "staff-info.hh"
#include "translator.hh"
diff --git a/lily/include/piano-brace.hh b/lily/include/piano-brace.hh
new file mode 100644
index 0000000000..2d094cab11
--- /dev/null
+++ b/lily/include/piano-brace.hh
@@ -0,0 +1,33 @@
+/*
+ piano-brace.hh -- declare Piano_brace
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef PIANO_BRACE_HH
+#define PIANO_BRACE_HH
+
+#include "span-score-bar.hh"
+
+class Piano_brace : public Span_score_bar
+{
+public:
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ SCORE_ELEMENT_CLONE(Piano_brace);
+
+ /** make room for Staff_bracket. Ugh. Should use some kind of
+ relation thingy. */
+ Real extra_move_left_f_;
+ Piano_brace ();
+protected:
+ virtual Interval do_width() const;
+ virtual void do_post_processing();
+ virtual Atom get_bar_sym (Real) const;
+};
+
+
+#endif /* PIANO_BRACE_HH */
+
diff --git a/lily/include/pitch-squash-grav.hh b/lily/include/pitch-squash-engraver.hh
index 9f224fa6ab..dbf432a536 100644
--- a/lily/include/pitch-squash-grav.hh
+++ b/lily/include/pitch-squash-engraver.hh
@@ -1,9 +1,9 @@
/*
- pitch-squash-grav.hh -- declare Pitch_squash_engraver
+ pitch-squash-engraver.hh -- declare Pitch_squash_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -16,7 +16,7 @@ class Pitch_squash_engraver : public Engraver {
public:
DECLARE_MY_RUNTIME_TYPEINFO;
TRANSLATOR_CLONE (Pitch_squash_engraver);
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
};
diff --git a/lily/include/plet-engraver.hh b/lily/include/plet-engraver.hh
index 7de90d4526..005a475bf6 100644
--- a/lily/include/plet-engraver.hh
+++ b/lily/include/plet-engraver.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef PLET_ENGRAVER_HH
@@ -25,7 +25,7 @@ public:
Plet_engraver ();
protected:
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual void do_removal_processing();
virtual void do_process_requests();
virtual bool do_try_request (Request*);
diff --git a/lily/include/plet-spanner.hh b/lily/include/plet-spanner.hh
index 1625721bf4..39e7cac57d 100644
--- a/lily/include/plet-spanner.hh
+++ b/lily/include/plet-spanner.hh
@@ -1,7 +1,7 @@
/*
plet-spanner.hh -- part of GNU LilyPond
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef PLET_SPANNER_HH
@@ -28,12 +28,12 @@ protected:
virtual Molecule* brew_molecule_p () const;
DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Plet_spanner);
+ SCORE_ELEMENT_CLONE(Plet_spanner);
virtual void do_add_processing ();
virtual void do_post_processing ();
virtual void set_default_dir ();
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
Plet_spanner (Plet_spanner const&);
};
diff --git a/lily/include/plet-swallow-engraver.hh b/lily/include/plet-swallow-engraver.hh
index 8dd6affd4e..0dbb142774 100644
--- a/lily/include/plet-swallow-engraver.hh
+++ b/lily/include/plet-swallow-engraver.hh
@@ -3,14 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef PLET_SWALLOW_ENGRAVER_HH
#define PLET_SWALLOW_ENGRAVER_HH
-#include "swallow-grav.hh"
+#include "swallow-engraver.hh"
/**
This engraver swallows plets silently.
diff --git a/lily/include/priority-halign-grav.hh b/lily/include/priority-halign-engraver.hh
index b591a40eb4..5d91ac4e03 100644
--- a/lily/include/priority-halign-grav.hh
+++ b/lily/include/priority-halign-engraver.hh
@@ -1,9 +1,9 @@
/*
- score-halign-grav.hh -- declare Score_horizontal_align_engraver
+ score-halign-engraver.hh -- declare Score_horizontal_align_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -19,7 +19,7 @@ public:
DECLARE_MY_RUNTIME_TYPEINFO;
Priority_horizontal_align_engraver();
protected:
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual void do_pre_move_processing();
};
#endif // Priority_HALIGN_GRAV_HH
diff --git a/lily/include/property-iterator.hh b/lily/include/property-iterator.hh
index f0dfbb5fb9..ac0703dc29 100644
--- a/lily/include/property-iterator.hh
+++ b/lily/include/property-iterator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/qlp.hh b/lily/include/qlp.hh
index 82371d363c..2de28843b9 100644
--- a/lily/include/qlp.hh
+++ b/lily/include/qlp.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef QLP_HH
diff --git a/lily/include/qlpsolve.hh b/lily/include/qlpsolve.hh
index dc2aaa5663..bf04b55d84 100644
--- a/lily/include/qlpsolve.hh
+++ b/lily/include/qlpsolve.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -35,6 +35,8 @@ class Active_constraints {
Ineq_constrained_qp const *opt;
public:
+
+ int degenerate_count_i_;
String status() const;
Vector vec (int k) const { return opt->cons_[k]; }
@@ -45,17 +47,17 @@ public:
constraint in #active#
*/
- void drop (int k);
+ void drop_constraint (int k);
/** add constraint j.
add constraint j to the active set j is the index of the
constraint in #inactive#
*/
- void add (int j);
+ void add_constraint (int j);
/// exchange in and out.
- void exchange (int in, int out) { add (in); drop (out); }
+ void exchange (int in, int out) { add_constraint (in); drop_constraint (out); }
Vector find_active_optimum (Vector g);
diff --git a/lily/include/relative-music-iterator.hh b/lily/include/relative-music-iterator.hh
index 0971a62d2d..c792445996 100644
--- a/lily/include/relative-music-iterator.hh
+++ b/lily/include/relative-music-iterator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/relative-music.hh b/lily/include/relative-music.hh
index dd1639858a..6137260d68 100644
--- a/lily/include/relative-music.hh
+++ b/lily/include/relative-music.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/request-iterator.hh b/lily/include/request-iterator.hh
index 8f7a30b4c8..15640ccd74 100644
--- a/lily/include/request-iterator.hh
+++ b/lily/include/request-iterator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/request.hh b/lily/include/request.hh
index a349f5786b..d63a7cd7f1 100644
--- a/lily/include/request.hh
+++ b/lily/include/request.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef REQUEST_HH
@@ -17,6 +17,9 @@
#include "music.hh"
#include "direction.hh"
+#define DEFAULTACCESSOR(T) virtual T *access_ ## T () { return 0; }
+
+
/**
a voice element wants something printed.
Hungarian postfix: req
@@ -26,34 +29,36 @@ class Request : public Music {
public:
- /* *************** */
+ /* *************** */
- virtual ~Request(){}
+ virtual ~Request(){}
- DECLARE_MY_RUNTIME_TYPEINFO;
- VIRTUAL_COPY_CONS(Request,Music);
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ VIRTUAL_COPY_CONS(Request,Music);
- virtual MInterval time_int() const;
- virtual Moment duration() const { return 0; }
-
- /* accessors for children
- maybe checkout RTTI
- */
- virtual Barcheck_req *barcheck() { return 0; }
- virtual Script_req *script() { return 0;}
- virtual Span_req *span() { return 0; }
- virtual Spacing_req * spacing() { return 0; }
- virtual Blank_req * blank() { return 0; }
- virtual Musical_req *musical() { return 0; }
- virtual Command_req * command() { return 0; }
- bool equal_b (Request*) const;
+ virtual MInterval time_int() const;
+ virtual Moment duration() const { return 0; }
+
+ /* accessors for children
+ maybe checkout RTTI
+ */
+
+ DEFAULTACCESSOR(Barcheck_req)
+ DEFAULTACCESSOR(Script_req)
+ DEFAULTACCESSOR(Span_req)
+ DEFAULTACCESSOR(Spacing_req)
+ DEFAULTACCESSOR(Musical_req)
+ DEFAULTACCESSOR(Command_req)
+
+ bool equal_b (Request*) const;
protected:
- virtual bool do_equal_b (Request*) const;
- virtual void do_print() const;
+ virtual bool do_equal_b (Request*) const;
+ virtual void do_print() const;
};
-#define REQUESTMETHODS(T,accessor) \
-virtual T * accessor() { return this;}\
+
+#define REQUESTMETHODS(T) \
+virtual T * access_ ## T() { return this;}\
DECLARE_MY_RUNTIME_TYPEINFO;\
VIRTUAL_COPY_CONS(T, Request);\
virtual void do_print() const
@@ -63,18 +68,18 @@ virtual void do_print() const
/** Put a script above or below this ``note'' or bar. eg upbow, downbow. Why
a request? These symbols may conflict with slurs and brackets, so
this also a request */
+
class Script_req : public virtual Request {
public:
- Direction dir_;
- General_script_def *scriptdef_p_;
-
- /* *************** */
- bool do_equal_b (Request*) const;
-
- Script_req();
- REQUESTMETHODS(Script_req,script);
- ~Script_req();
- Script_req (Script_req const&);
+ Direction dir_;
+ General_script_def *scriptdef_p_;
+
+ bool do_equal_b (Request*) const;
+
+ Script_req();
+ REQUESTMETHODS(Script_req);
+ ~Script_req();
+ Script_req (Script_req const&);
};
diff --git a/lily/include/rest-collision-grav.hh b/lily/include/rest-collision-engraver.hh
index 0e99b48b75..c62c4e2e3a 100644
--- a/lily/include/rest-collision-grav.hh
+++ b/lily/include/rest-collision-engraver.hh
@@ -1,23 +1,25 @@
/*
- rest-collision-grav.hh -- declare Rest_collision_engraver
+ rest-collision-engraver.hh -- declare Rest_collision_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef REST_COLLISION_GRAV_HH
#define REST_COLLISION_GRAV_HH
-#include "varray.hh"
+#include "array.hh"
#include "engraver.hh"
class Rest_collision_engraver : public Engraver {
Rest_collision* rest_collision_p_;
+ Link_array<Note_column> note_column_l_arr_;
protected:
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
+ virtual void process_acknowledged ();
virtual void do_pre_move_processing();
public:
TRANSLATOR_CLONE(Rest_collision_engraver);
diff --git a/lily/include/rest-collision.hh b/lily/include/rest-collision.hh
index 4d39f54347..cc6bc84db8 100644
--- a/lily/include/rest-collision.hh
+++ b/lily/include/rest-collision.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -17,13 +17,13 @@ class Rest_collision : public Item {
Link_array<Note_column> rest_l_arr_;
Link_array<Note_column> ncol_l_arr_;
public:
- void add (Note_column*);
+ void add_column (Note_column*);
DECLARE_MY_RUNTIME_TYPEINFO;
Rest_collision();
protected:
virtual void do_post_processing();
virtual void do_pre_processing();
virtual void do_print() const;
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
};
#endif // REST_COLLISION_HH
diff --git a/Documentation/man/out/dummy.dep b/lily/include/rest-column-engraver.hh
index e69de29bb2..e69de29bb2 100644
--- a/Documentation/man/out/dummy.dep
+++ b/lily/include/rest-column-engraver.hh
diff --git a/lily/include/rest-column-grav.hh b/lily/include/rest-column-grav.hh
deleted file mode 100644
index e69de29bb2..0000000000
--- a/lily/include/rest-column-grav.hh
+++ /dev/null
diff --git a/lily/include/rest-grav.hh b/lily/include/rest-engraver.hh
index 67006a98af..0081454fd7 100644
--- a/lily/include/rest-grav.hh
+++ b/lily/include/rest-engraver.hh
@@ -1,9 +1,9 @@
/*
- rest-grav.hh -- declare Engraver
+ rest-engraver.hh -- declare Engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/rest.hh b/lily/include/rest.hh
index 65cddc848e..493472c0e7 100644
--- a/lily/include/rest.hh
+++ b/lily/include/rest.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -19,7 +19,7 @@ public:
int position_i_;
Rest ();
- void add (Dots*);
+ void add_dots (Dots*);
protected:
virtual void do_add_processing ();
virtual Molecule * brew_molecule_p () const;
diff --git a/lily/include/rhythmic-column-grav.hh b/lily/include/rhythmic-column-engraver.hh
index 52e0904e3b..207427117d 100644
--- a/lily/include/rhythmic-column-grav.hh
+++ b/lily/include/rhythmic-column-engraver.hh
@@ -1,9 +1,9 @@
/*
- rhythmic-column-grav.hh -- declare Rhythmic_column_engraver
+ rhythmic-column-engraver.hh -- declare Rhythmic_column_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -15,12 +15,15 @@
class Rhythmic_column_engraver :public Engraver {
Link_array<Script> script_l_arr_;
+ Link_array<Rhythmic_head> rhead_l_arr_;
Stem * stem_l_;
Note_column *ncol_p_;
- Dot_column *dotcol_p_;
+ Dot_column *dotcol_l_;
+
protected:
TRANSLATOR_CLONE(Rhythmic_column_engraver);
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
+ virtual void process_acknowledged ();
virtual void do_pre_move_processing();
virtual void do_post_move_processing();
public:
diff --git a/lily/include/rhythmic-head.hh b/lily/include/rhythmic-head.hh
index 84a1728b0a..4c11b50fd0 100644
--- a/lily/include/rhythmic-head.hh
+++ b/lily/include/rhythmic-head.hh
@@ -1,9 +1,9 @@
/*
- rhythmic-head.hh -- declare
+ rhythmic-head.hh -- declare Rhythmic_head
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -21,12 +21,12 @@ public:
int dots_i_;
Dots * dots_l_;
- void add (Dots *);
+ void add_dots (Dots *);
Rhythmic_head ();
protected:
virtual void do_add_processing ();
virtual void do_print () const;
- virtual void do_substitute_dependent (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependent (Score_element*,Score_element*);
};
#endif // RHYTHMIC_HEAD_HH
diff --git a/lily/include/rod.hh b/lily/include/rod.hh
index c71b6b3484..81ea0d97b3 100644
--- a/lily/include/rod.hh
+++ b/lily/include/rod.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/scope.hh b/lily/include/scope.hh
index 799e480ac0..f9980f2db8 100644
--- a/lily/include/scope.hh
+++ b/lily/include/scope.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/score-bar.hh b/lily/include/score-bar.hh
index 298404da5d..83c8e0bbaa 100644
--- a/lily/include/score-bar.hh
+++ b/lily/include/score-bar.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -19,7 +19,7 @@
class Score_bar : public virtual Bar {
public:
DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Score_bar);
+ SCORE_ELEMENT_CLONE(Score_bar);
protected:
void do_pre_processing ();
};
diff --git a/lily/include/score-column.hh b/lily/include/score-column.hh
index e82b51aa80..10d55a798d 100644
--- a/lily/include/score-column.hh
+++ b/lily/include/score-column.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -11,7 +11,7 @@
#define SCORE_COLUMN_HH
#include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
#include "moment.hh"
#include "p-col.hh"
@@ -36,7 +36,7 @@ class Score_column : public Paper_column {
public:
int break_penalty_i () { return break_penalty_i_; }
DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Score_column);
+ SCORE_ELEMENT_CLONE(Score_column);
/// length of notes/rests in this column
Array<Moment> durations;
diff --git a/lily/include/score-elem.hh b/lily/include/score-elem.hh
deleted file mode 100644
index 5757d074e8..0000000000
--- a/lily/include/score-elem.hh
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- score-elem.hh -- part of GNU LilyPond
-
- (c) 1996,97 Han-Wen Nienhuys
-*/
-
-#ifndef STAFFELEM_HH
-#define STAFFELEM_HH
-
-#include "parray.hh"
-#include "virtual-methods.hh"
-#include "directed-graph.hh"
-#include "graphical-element.hh"
-
-#define SCORE_ELEM_CLONE(T) VIRTUAL_COPY_CONS(T, Score_elem)
-
-
-typedef void (Score_elem::*Score_elem_method_pointer)(void);
-
-/** Both Spanner and Item are Score_elem's. Most Score_elem's depend
- on other Score_elem's, eg, Beam needs to know and set direction of
- Stem. So the Beam has to be calculated *before* Stem. This is
- accomplished with the dependencies fields of struct Score_elem,
- which are implemented in the Directed_graph_node class: all elements
- form an acyclic graph.
-
- (elem) */
-class Score_elem : private Directed_graph_node, public Graphical_element {
-public:
- Paper_score *pscore_l_;
-
- Score_elem();
- Score_elem (Score_elem const&);
- virtual void print() const;
-
- Paper_def *paper() const;
-
- virtual ~Score_elem();
- DECLARE_MY_RUNTIME_TYPEINFO;
-
- void add_processing();
-
- /**
- Remove all links (dependencies, dependents, Axis_group_elements.
- */
- void unlink();
- void substitute_dependency (Score_elem*,Score_elem*);
- void remove_dependency (Score_elem*);
- /**
- add a dependency. It may be the 0 pointer, in which case, it is ignored.
- */
- void add_dependency (Score_elem*);
-
- /*
- virtual accessors
- */
-
- virtual Spanner* spanner() { return 0; }
- virtual Item * item() { return 0; }
- virtual Line_of_score * line_l() const;
- virtual bool linked_b() const;
- SCORE_ELEM_CLONE(Score_elem);
-
- /// do not print anything black
- bool transparent_b_;
-
- // ugh: no protection. Denk na, Vrij Veilig
- void calcalute_dependencies (int final, int busy, Score_elem_method_pointer funcptr);
-
-protected:
- /**
- Administration: Where are we?. This is mainly used by Super_elem and
- Score_elem::calcalute_dependencies ()
-
- 0 means ORPHAN,
- -1 means deleted
-
- */
- int status_i_;
-
- Score_elem* dependency (int) const;
- Score_elem* dependent (int) const;
- int dependent_size() const;
- int dependency_size() const;
-
- virtual void do_brew_molecule ();
- void junk_links();
- virtual Interval do_height() const;
- virtual Interval do_width() const;
-
- /// do printing of derived info.
- virtual void do_print() const {}
- /// generate the molecule
- virtual Molecule* brew_molecule_p() const;
- ///executed directly after the item is added to the Paper_score
- virtual void do_add_processing();
- /// do calculations before determining horizontal spacing
- virtual void do_pre_processing();
-
- /// generate rods & springs
- virtual void do_space_processing ();
-
- virtual void do_breakable_col_processing();
- /// do calculations after determining horizontal spacing
- virtual void do_post_processing();
-
- virtual void do_substitute_dependency (Score_elem * , Score_elem *);
- virtual void do_substitute_dependent (Score_elem *, Score_elem *);
- virtual void do_break_processing();
- virtual void handle_broken_dependencies();
- virtual void handle_prebroken_dependencies();
- virtual Link_array<Score_elem> get_extra_dependencies() const;
- virtual void do_unlink();
- virtual void do_junk_links();
-};
-
-
-#endif // STAFFELEM_HH
-
diff --git a/lily/include/score-elem-info.hh b/lily/include/score-element-info.hh
index edd695c4b9..3e31b87057 100644
--- a/lily/include/score-elem-info.hh
+++ b/lily/include/score-element-info.hh
@@ -1,9 +1,9 @@
/*
- score-elem-info.hh -- declare Score_elem_info
+ score-element-info.hh -- declare Score_element_info
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -12,19 +12,19 @@
#include "scalar.hh"
#include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
/**
Data container for broadcasts
*/
-struct Score_elem_info {
- Score_elem * elem_l_;
+struct Score_element_info {
+ Score_element * elem_l_;
Request*req_l_;
Array<Engraver*> origin_grav_l_arr_;
/* *** */
- Score_elem_info (Score_elem*, Request*);
- Score_elem_info();
+ Score_element_info (Score_element*, Request*);
+ Score_element_info();
};
diff --git a/lily/include/score-element.hh b/lily/include/score-element.hh
new file mode 100644
index 0000000000..7a3211b234
--- /dev/null
+++ b/lily/include/score-element.hh
@@ -0,0 +1,128 @@
+/*
+ score-element.hh -- part of GNU LilyPond
+
+ (c) 1996,97 Han-Wen Nienhuys
+*/
+
+#ifndef STAFFELEM_HH
+#define STAFFELEM_HH
+
+#include "parray.hh"
+#include "virtual-methods.hh"
+#include "directed-graph.hh"
+#include "graphical-element.hh"
+
+#define SCORE_ELEMENT_CLONE(T) VIRTUAL_COPY_CONS (T, Score_element)
+
+
+typedef void (Score_element::*Score_element_method_pointer) (void);
+
+/** Both Spanner and Item are Score_element's. Most Score_element's depend
+ on other Score_element's, eg, Beam needs to know and set direction of
+ Stem. So the Beam has to be calculated *before* Stem. This is
+ accomplished with the dependencies fields of struct Score_element,
+ which are implemented in the Directed_graph_node class: all elements
+ form an acyclic graph.
+
+ (elem) */
+class Score_element : private Directed_graph_node, public virtual Graphical_element {
+public:
+ Paper_score *pscore_l_;
+
+ Score_element ();
+ Score_element (Score_element const&);
+ virtual void print () const;
+
+ Paper_def *paper () const;
+ Lookup * lookup_l () const;
+
+ virtual ~Score_element ();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+
+ void add_processing ();
+
+ /**
+ Remove all links (dependencies, dependents, Axis_group_elements.
+ */
+ void unlink ();
+ void substitute_dependency (Score_element*,Score_element*);
+ void remove_dependency (Score_element*);
+ /**
+ add a dependency. It may be the 0 pointer, in which case, it is ignored.
+ */
+ void add_dependency (Score_element*);
+
+ /*
+ virtual accessors
+ */
+
+ virtual Spanner* access_Spanner () { return 0; }
+ virtual Span_bar* access_Span_bar () { return 0; }
+ virtual Axis_group_element * access_Axis_group_element () { return 0; }
+ virtual Score_element* access_Score_element () { return this; }
+
+ virtual Item * access_Item () { return 0; }
+ virtual Line_of_score * line_l () const;
+ virtual bool linked_b () const;
+ SCORE_ELEMENT_CLONE (Score_element);
+
+ /// do not print anything black
+ bool transparent_b_;
+
+ int size_i_;
+
+ // ugh: no protection. Denk na, Vrij Veilig
+ void calcalute_dependencies (int final, int busy, Score_element_method_pointer funcptr);
+
+protected:
+ /**
+ Administration: Where are we?. This is mainly used by Super_elem and
+ Score_element::calcalute_dependencies ()
+
+ 0 means ORPHAN,
+ -1 means deleted
+
+ */
+public:
+ int status_i_;
+protected:
+ Score_element* dependency (int) const;
+ Score_element* dependent (int) const;
+ int dependent_size () const;
+ int dependency_size () const;
+
+ virtual void do_brew_molecule ();
+ void junk_links ();
+ virtual Interval do_height () const;
+ virtual Interval do_width () const;
+
+ /// do printing of derived info.
+ virtual void do_print () const {}
+ /// generate the molecule
+ virtual Molecule* brew_molecule_p () const;
+ ///executed directly after the item is added to the Paper_score
+ virtual void do_add_processing ();
+ /// do calculations before determining horizontal spacing
+ virtual void do_pre_processing ();
+
+ /// generate rods & springs
+ virtual void do_space_processing ();
+
+ virtual void do_breakable_col_processing ();
+ /// do calculations after determining horizontal spacing
+ virtual void do_post_processing ();
+
+ virtual void do_substitute_dependency (Score_element * , Score_element *);
+ virtual void do_substitute_dependent (Score_element *, Score_element *);
+ virtual void do_break_processing ();
+ virtual void handle_broken_dependencies ();
+ virtual void handle_prebroken_dependencies ();
+ virtual Link_array<Score_element> get_extra_dependencies () const;
+ virtual void do_unlink ();
+ virtual void do_junk_links ();
+
+};
+
+
+#endif // STAFFELEM_HH
+
diff --git a/lily/include/score-grav.hh b/lily/include/score-engraver.hh
index bd89d2fd36..5d59fc06f7 100644
--- a/lily/include/score-grav.hh
+++ b/lily/include/score-engraver.hh
@@ -1,9 +1,9 @@
/*
- score-grav.hh -- declare Score_engraver
+ score-engraver.hh -- declare Score_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -23,7 +23,7 @@ class Score_engraver :
int break_penalty_i_;
int breaks_i_;
- Link_array<Score_elem> elem_p_arr_;
+ Link_array<Score_element> elem_p_arr_;
Score_column* command_column_l_;
Score_column* musical_column_l_;
@@ -50,9 +50,9 @@ protected:
virtual bool do_try_request (Request*);
virtual void do_creation_processing();
virtual void do_removal_processing();
- virtual void announce_element (Score_elem_info);
+ virtual void announce_element (Score_element_info);
virtual void do_announces();
- virtual void typeset_element (Score_elem*elem_p);
+ virtual void typeset_element (Score_element*elem_p);
virtual void do_pre_move_processing();
virtual void do_add_processing ();
};
diff --git a/lily/include/score-performer.hh b/lily/include/score-performer.hh
index 3aa4d4ba7e..adb462a2dd 100644
--- a/lily/include/score-performer.hh
+++ b/lily/include/score-performer.hh
@@ -1,8 +1,8 @@
/*
score-performer.hh -- declare Score_performer
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef SCORE_PERFORMER_HH
diff --git a/lily/include/score-priority-grav.hh b/lily/include/score-priority-engraver.hh
index 8b6ab1c1a7..c6827250b9 100644
--- a/lily/include/score-priority-grav.hh
+++ b/lily/include/score-priority-engraver.hh
@@ -1,9 +1,9 @@
/*
- score-align-grav.hh -- declare Type_align_engraver
+ score-align-engraver.hh -- declare Type_align_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -24,7 +24,7 @@ public:
Score_priority_engraver ();
DECLARE_MY_RUNTIME_TYPEINFO;
protected:
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual void do_pre_move_processing();
};
diff --git a/lily/include/score.hh b/lily/include/score.hh
index 667e443402..7817d7f891 100644
--- a/lily/include/score.hh
+++ b/lily/include/score.hh
@@ -3,14 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef SCORE_HH
#define SCORE_HH
-#include "varray.hh"
+#include "array.hh"
#include "lily-proto.hh"
#include "plist.hh"
#include "string.hh"
@@ -34,7 +34,7 @@ public:
~Score();
void process();
- void add (Music_output_def *def_p);
+ void add_output (Music_output_def *def_p);
void print() const;
private:
void run_translator (Music_output_def*);
diff --git a/lily/include/script-column.hh b/lily/include/script-column.hh
index 1b7328b1e5..99c053b10a 100644
--- a/lily/include/script-column.hh
+++ b/lily/include/script-column.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -18,14 +18,14 @@ class Script_column : public Horizontal_vertical_group_item {
protected:
virtual void do_print() const;
- virtual void do_substitute_dependency (Score_elem*, Score_elem*);
+ virtual void do_substitute_dependency (Score_element*, Score_element*);
virtual void do_pre_processing() ;
public:
Link_array<Script> script_l_arr_;
Link_array<Item> support_l_arr_;
DECLARE_MY_RUNTIME_TYPEINFO;
- virtual void add (Script *);
+ virtual void add_script (Script *);
void add_support (Item*);
};
diff --git a/lily/include/script-def.hh b/lily/include/script-def.hh
index ac5bf63561..a68628c9ef 100644
--- a/lily/include/script-def.hh
+++ b/lily/include/script-def.hh
@@ -1,7 +1,7 @@
/*
script-def.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef SCRIPTDEF_HH
diff --git a/lily/include/script-grav.hh b/lily/include/script-engraver.hh
index e8040c5372..6e4ed0100f 100644
--- a/lily/include/script-grav.hh
+++ b/lily/include/script-engraver.hh
@@ -1,7 +1,7 @@
/*
- script-grav.hh -- part of GNU LilyPond
+ script-engraver.hh -- part of GNU LilyPond
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/script.hh b/lily/include/script.hh
index 35a945af5a..105cb4f15c 100644
--- a/lily/include/script.hh
+++ b/lily/include/script.hh
@@ -1,7 +1,7 @@
/*
script.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef SCRIPT_HH
@@ -14,28 +14,31 @@
Accents that are put over a note-group.
*/
class Script : public Item, public Staff_side {
-
- Stem *stem_l_;
+ Stem *stem_l_;
protected:
- Molecule *brew_molecule_p() const;
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
- virtual void do_print() const;
- virtual Interval symbol_height() const;
- virtual void do_pre_processing();
- virtual Interval do_width() const;
- SCORE_ELEM_CLONE(Script);
+ Molecule *brew_molecule_p() const;
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
+ virtual void do_print() const;
+ virtual Interval symbol_height() const;
+ virtual Interval symbol_width () const;
+ virtual void do_pre_processing();
+ virtual Interval do_width() const;
+ SCORE_ELEMENT_CLONE(Script);
private:
- void set_default_dir();
+ void set_default_dir();
public:
- General_script_def *specs_l_;
+ General_script_def *specs_p_;
+ bool postbreak_only_b_;
- static int compare (Script *const&, Script *const&) ;
- Script();
- void set_stem (Stem*);
- DECLARE_MY_RUNTIME_TYPEINFO;
-
+ static int compare (Script *const&, Script *const&) ;
+ Script();
+ ~Script ();
+ Script (Script const&);
+
+ void set_stem (Stem*);
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
diff --git a/lily/include/separating-group-spanner.hh b/lily/include/separating-group-spanner.hh
index 6ec7d0f8e3..b90752479c 100644
--- a/lily/include/separating-group-spanner.hh
+++ b/lily/include/separating-group-spanner.hh
@@ -3,14 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef SEPARATING_GROUP_SPANNER_HH
#define SEPARATING_GROUP_SPANNER_HH
-#include "vertical-group-spanner.hh"
+#include "spanner.hh"
class Separating_group_spanner : public Spanner
@@ -20,9 +20,9 @@ public:
DECLARE_MY_RUNTIME_TYPEINFO;
void add_spacing_unit (Single_malt_grouping_item*);
protected:
- SCORE_ELEM_CLONE (Separating_group_spanner);
+ SCORE_ELEMENT_CLONE (Separating_group_spanner);
virtual Array<Rod> get_rods () const;
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
};
#endif /* SEPARATING_GROUP_SPANNER_HH */
diff --git a/lily/include/separating-line-group-grav.hh b/lily/include/separating-line-group-engraver.hh
index 17e83aa54a..d9419a9807 100644
--- a/lily/include/separating-line-group-grav.hh
+++ b/lily/include/separating-line-group-engraver.hh
@@ -1,25 +1,25 @@
/*
- separating-line-group-grav.hh -- declare Separating_line_group_engraver
+ separating-line-group-engraver.hh -- declare Separating_line_group_engraver
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef SEPARATING_LINE_GROUP_GRAV_HH
#define SEPARATING_LINE_GROUP_GRAV_HH
-#include "line-group-grav.hh"
+#include "engraver.hh"
-class Separating_line_group_engraver : public Line_group_engraver
+class Separating_line_group_engraver : public Engraver
{
protected:
Single_malt_grouping_item * break_malt_p_;
Single_malt_grouping_item* nobreak_malt_p_;
Separating_group_spanner * sep_span_p_;
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual void do_creation_processing ();
virtual void do_removal_processing ();
virtual void do_pre_move_processing ();
diff --git a/lily/include/single-malt-grouping-item.hh b/lily/include/single-malt-grouping-item.hh
index 0e69c49ded..32bfb45e2a 100644
--- a/lily/include/single-malt-grouping-item.hh
+++ b/lily/include/single-malt-grouping-item.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -19,15 +19,15 @@
It's 1 30 am. Naming suggestions appreciated. */
class Single_malt_grouping_item : public Item
{
- SCORE_ELEM_CLONE (Single_malt_grouping_item);
+ SCORE_ELEMENT_CLONE (Single_malt_grouping_item);
Link_array<Item> item_l_arr_;
public:
Single_malt_grouping_item ();
Interval my_width () const;
- void add (Item*);
+ void add_item (Item*);
DECLARE_MY_RUNTIME_TYPEINFO;
protected:
- virtual void do_substitute_dependency (Score_elem*, Score_elem*);
+ virtual void do_substitute_dependency (Score_element*, Score_element*);
virtual void do_print () const;
};
diff --git a/lily/include/slur-grav.hh b/lily/include/slur-engraver.hh
index 64dd45251c..75c21d07f2 100644
--- a/lily/include/slur-grav.hh
+++ b/lily/include/slur-engraver.hh
@@ -1,7 +1,7 @@
/*
- slur-grav.hh -- declare Slur_engraver
+ slur-engraver.hh -- declare Slur_engraver
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -20,7 +20,7 @@ class Slur_engraver :public Engraver {
protected:
virtual bool do_try_request (Request*);
virtual void do_process_requests();
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual void do_pre_move_processing();
virtual void do_post_move_processing();
virtual void do_removal_processing ();
diff --git a/lily/include/slur.hh b/lily/include/slur.hh
index 07ceb99374..c77f6f9865 100644
--- a/lily/include/slur.hh
+++ b/lily/include/slur.hh
@@ -1,7 +1,7 @@
/*
slur.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef SLUR_HH
@@ -19,11 +19,11 @@ class Slur : public Bow
{
public:
Link_array<Note_column> encompass_arr_;
- void add (Note_column*);
+ void add_column (Note_column*);
Slur ();
- SCORE_ELEM_CLONE(Slur);
+ SCORE_ELEMENT_CLONE(Slur);
DECLARE_MY_RUNTIME_TYPEINFO;
protected:
@@ -33,7 +33,7 @@ protected:
virtual void do_post_processing ();
virtual void do_add_processing ();
virtual void do_pre_processing ();
- virtual void do_substitute_dependency (Score_elem*, Score_elem*);
+ virtual void do_substitute_dependency (Score_element*, Score_element*);
};
#endif // SLUR_HH
diff --git a/lily/include/span-bar-grav.hh b/lily/include/span-bar-engraver.hh
index c7e6241e84..c7050cf3ad 100644
--- a/lily/include/span-bar-grav.hh
+++ b/lily/include/span-bar-engraver.hh
@@ -1,9 +1,9 @@
/*
- span-bar-grav.hh -- declare Span_bar_engraver
+ span-bar-engraver.hh -- declare Span_bar_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -22,7 +22,7 @@ class Span_bar_engraver : public Engraver
{
Span_bar * spanbar_p_;
Array<Bar*> bar_l_arr_;
- Vertical_align_element * valign_l_;
+ Vertical_align_spanner * valign_l_;
public:
TRANSLATOR_CLONE(Span_bar_engraver);
DECLARE_MY_RUNTIME_TYPEINFO;
@@ -31,7 +31,7 @@ public:
protected:
virtual void do_creation_processing ();
virtual void do_removal_processing ();
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual void do_pre_move_processing();
virtual Span_bar* get_span_bar_p() const;
};
diff --git a/lily/include/span-bar.hh b/lily/include/span-bar.hh
index 4d0744de01..1aec571514 100644
--- a/lily/include/span-bar.hh
+++ b/lily/include/span-bar.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -14,20 +14,23 @@
class Span_bar : public virtual Bar
{
- Link_array<Score_elem> spanning_l_arr_;
+ Link_array<Score_element> spanning_l_arr_;
public:
Span_bar();
DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Span_bar);
- void add (Bar*);
- void set (Vertical_align_element *);
+ SCORE_ELEMENT_CLONE(Span_bar);
+ virtual Span_bar* access_Span_bar ();
+ void add_bar (Bar*);
+ void set_align (Align_element *);
protected:
+ void evaluate_empty ();
virtual Interval do_width() const;
virtual void do_pre_processing();
+ virtual void do_post_processing();
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
virtual Molecule * brew_molecule_p() const;
virtual Atom get_bar_sym (Real dy) const;
};
diff --git a/lily/include/span-score-bar-grav.hh b/lily/include/span-score-bar-engraver.hh
index bf4b88aa44..f75b7756a1 100644
--- a/lily/include/span-score-bar-grav.hh
+++ b/lily/include/span-score-bar-engraver.hh
@@ -1,16 +1,16 @@
/*
- span-score-bar-grav.hh -- declare Span_score_bar_engraver
+ span-score-bar-engraver.hh -- declare Span_score_bar_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef SPAN_SCORE_BAR_GRAV_HH
#define SPAN_SCORE_BAR_GRAV_HH
-#include "span-bar-grav.hh"
+#include "span-bar-engraver.hh"
/**
@@ -47,7 +47,7 @@ public:
TRANSLATOR_CLONE (Staff_group_bar_engraver);
DECLARE_MY_RUNTIME_TYPEINFO;
virtual Span_bar * get_span_bar_p () const;
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
};
#endif // SPAN_SCORE_BAR_GRAV_HH
diff --git a/lily/include/span-score-bar.hh b/lily/include/span-score-bar.hh
index f42205b38e..411c56da5e 100644
--- a/lily/include/span-score-bar.hh
+++ b/lily/include/span-score-bar.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -17,31 +17,13 @@ class Span_score_bar : public Span_bar, public Score_bar
{
public:
DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Span_score_bar);
+ SCORE_ELEMENT_CLONE(Span_score_bar);
Span_score_bar();
+
protected:
virtual void do_pre_processing();
};
-class Piano_brace : public Span_score_bar
-{
-public:
- DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Piano_brace);
-protected:
- virtual Interval do_width() const;
- virtual Atom get_bar_sym (Real) const;
-};
-
-class Staff_bracket : public Span_score_bar
-{
-public:
- DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Staff_bracket);
-protected:
- virtual Interval do_width() const;
- virtual Atom get_bar_sym (Real) const;
-};
#endif // SPAN_SCORE_BAR_HH
diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh
index 0559dce40d..d5688cb8e0 100644
--- a/lily/include/spanner.hh
+++ b/lily/include/spanner.hh
@@ -1,14 +1,14 @@
/*
spanner.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef SPANNER_HH
#define SPANNER_HH
#include "lily-proto.hh"
-#include "score-elem.hh"
+#include "score-element.hh"
#include "drul-array.hh"
#include "rod.hh"
@@ -32,21 +32,21 @@
length of stems of notes they encompass.
*/
-class Spanner : public virtual Score_elem {
+class Spanner : public virtual Score_element {
public:
Drul_array<Item*> spanned_drul_;
- void set_bounds(Direction d, Item*);
+ void set_bounds (Direction d, Item*);
DECLARE_MY_RUNTIME_TYPEINFO;
- virtual Spanner* spanner() { return this; }
- Spanner();
- bool broken_b() const;
+ virtual Spanner* access_Spanner ();
+ Spanner ();
+ bool broken_b () const;
virtual Array<Rod> get_rods () const;
Spanner* find_broken_piece (Line_of_score*) const;
protected:
- void set_my_columns();
- SCORE_ELEM_CLONE(Spanner);
+ void set_my_columns ();
+ SCORE_ELEMENT_CLONE (Spanner);
/**
this is virtual; for instance, Line_of_score overrides it.
@@ -55,13 +55,13 @@ protected:
Link_array<Spanner> broken_into_l_arr_;
- virtual void do_unlink();
- virtual void do_junk_links();
+ virtual void do_unlink ();
+ virtual void do_junk_links ();
virtual void do_brew_molecule ();
virtual void do_space_processing ();
- virtual void do_break_processing();
- virtual Interval do_width() const;
- virtual void do_print() const;
- virtual Line_of_score*line_l() const;
+ virtual void do_break_processing ();
+ virtual Interval do_width () const;
+ virtual void do_print () const;
+ virtual Line_of_score*line_l () const;
};
#endif
diff --git a/lily/include/spring-spacer.hh b/lily/include/spring-spacer.hh
index 609fb666d6..defcd15bc3 100644
--- a/lily/include/spring-spacer.hh
+++ b/lily/include/spring-spacer.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -48,8 +48,8 @@ class Spring_spacer : public Line_spacer {
Pointer_list<Idealspacing *> ideal_p_list_;
- Array<Colinfo> cols_;
- Array<Colinfo> loose_col_arr_;
+ Array<Column_info> cols_;
+ Array<Column_info> loose_col_arr_;
Array<Spacer_rod> rods_;
/// mark column #i# as being loose.
@@ -86,8 +86,8 @@ public:
static Line_spacer *constructor();
Real energy_normalisation_f_;
Spring_spacer ();
- virtual void solve (Col_hpositions*) const;
- virtual void lower_bound_solution (Col_hpositions*) const;
+ virtual void solve (Column_x_positions*) const;
+ virtual void lower_bound_solution (Column_x_positions*) const;
virtual void add_column (Paper_column *, bool fixed=false, Real fixpos=0.0);
diff --git a/lily/include/staff-bracket.hh b/lily/include/staff-bracket.hh
new file mode 100644
index 0000000000..526df1365b
--- /dev/null
+++ b/lily/include/staff-bracket.hh
@@ -0,0 +1,28 @@
+
+/*
+ staff-bracket.hh -- declare Staff_bracket
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef STAFF_BRACKET_HH
+#define STAFF_BRACKET_HH
+#include "span-score-bar.hh"
+class Staff_bracket : public Span_score_bar
+{
+public:
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ SCORE_ELEMENT_CLONE(Staff_bracket);
+
+protected:
+ virtual Interval do_width() const;
+ virtual void do_post_processing();
+ virtual Atom get_bar_sym (Real) const;
+};
+
+
+#endif /* STAFF_BRACKET_HH */
+
diff --git a/lily/include/staff-info.hh b/lily/include/staff-info.hh
index 9f03ca73d5..8e68983dbe 100644
--- a/lily/include/staff-info.hh
+++ b/lily/include/staff-info.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -14,7 +14,6 @@
/// struct to pass staff info along a Engraver hierarchy.
struct Staff_info {
- int *c0_position_i_l_;
Staff_symbol*staff_sym_l_;
Time_description const *time_C_;
@@ -22,8 +21,6 @@ struct Staff_info {
Score_column *musical_l_;
Score_column *command_l_;
- ///
- bool break_allowed_b_;
Score * score_l_;
Score *score_l();
Paper_column * command_pcol_l();
diff --git a/lily/include/staff-performer.hh b/lily/include/staff-performer.hh
index 3352e85b77..484ae5bafa 100644
--- a/lily/include/staff-performer.hh
+++ b/lily/include/staff-performer.hh
@@ -1,8 +1,8 @@
/*
staff-performer.hh -- declare Staff_performer
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#ifndef STAFF_PERFORMER_HH
diff --git a/lily/include/staff-side.hh b/lily/include/staff-side.hh
index 9762887458..5c95249868 100644
--- a/lily/include/staff-side.hh
+++ b/lily/include/staff-side.hh
@@ -3,21 +3,24 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef STAFF_SIDE_HH
#define STAFF_SIDE_HH
-#include "score-elem.hh"
+#include "score-element.hh"
#include "interval.hh"
#include "direction.hh"
-/** A symbol which sits along a staff.
+/**
- */
-class Staff_side : virtual Score_elem
+ A symbol which sits either below or above "something" (usually, a
+ staff).
+
+*/
+class Staff_side : virtual Score_element
{
public:
@@ -25,25 +28,33 @@ public:
Vertical dir of symbol relative to staff. -1 = below staff?
*/
Direction dir_;
+ Axis axis_;
Interval sym_int_;
- Real y_;
+ Real coordinate_offset_f_;
+ /**
+ Add extra vertical space to the support symbols.
+ */
+ Real padding_f_;
- void set_staffsym (Staff_symbol * );
Staff_side ();
- void add_support (Score_elem*);
+ void add_support (Score_element*);
DECLARE_MY_RUNTIME_TYPEINFO;
protected:
virtual Interval symbol_height () const;
+ virtual Interval symbol_width () const;
+ Interval symbol_extent () const;
virtual Real get_position_f () const;
- virtual void do_substitute_dependency (Score_elem *, Score_elem*);
+ virtual void do_substitute_dependency (Score_element *, Score_element*);
+ virtual void do_pre_processing ();
virtual void do_post_processing ();
- Interval support_height () const;
+ Interval support_extent () const;
private:
- Link_array<Score_elem> support_l_arr_;
-// Interval support_height () const;
+ void do_side_processing ();
+ Link_array<Score_element> support_l_arr_;
};
+
#endif // STAFF_SIDE_HH
diff --git a/lily/include/staff-sym-grav.hh b/lily/include/staff-sym-engraver.hh
index ff65bf6663..0cc98d6283 100644
--- a/lily/include/staff-sym-grav.hh
+++ b/lily/include/staff-sym-engraver.hh
@@ -1,9 +1,9 @@
/*
- staff-sym-grav.hh -- declare Staff_sym_engraver
+ staff-sym-engraver.hh -- declare Staff_sym_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/staff-sym.hh b/lily/include/staff-sym.hh
index 258818db1e..215e41bde9 100644
--- a/lily/include/staff-sym.hh
+++ b/lily/include/staff-sym.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -27,7 +27,7 @@ public:
Real inter_note_f() const;
int steps_i() const;
protected:
- SCORE_ELEM_CLONE(Staff_symbol);
+ SCORE_ELEMENT_CLONE(Staff_symbol);
virtual Interval do_height () const;
virtual Molecule* brew_molecule_p() const;
virtual void do_print() const;
diff --git a/lily/include/stem-grav.hh b/lily/include/stem-engraver.hh
index 78a9236544..2fa376c58a 100644
--- a/lily/include/stem-grav.hh
+++ b/lily/include/stem-engraver.hh
@@ -1,9 +1,9 @@
/*
- stem-grav.hh -- declare Stem_engraver
+ stem-engraver.hh -- declare Stem_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -25,7 +25,7 @@ class Stem_engraver : public Engraver
Abbreviation_req* abbrev_req_l_;
protected:
virtual void do_creation_processing ();
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual void do_pre_move_processing ();
virtual bool do_try_request (Request*);
diff --git a/lily/include/stem-info.hh b/lily/include/stem-info.hh
index 06a6cb2918..bff7cfbdb3 100644
--- a/lily/include/stem-info.hh
+++ b/lily/include/stem-info.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
diff --git a/lily/include/stem.hh b/lily/include/stem.hh
index aa6f1b44ca..6bef757c91 100644
--- a/lily/include/stem.hh
+++ b/lily/include/stem.hh
@@ -1,13 +1,13 @@
/*
stem.hh -- declare Stem
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef STEM_HH
#define STEM_HH
#include "item.hh"
-#include "varray.hh"
+#include "array.hh"
#include "moment.hh"
#include "molecule.hh"
@@ -82,7 +82,7 @@ public:
Stem ();
/// ensure that this Stem also encompasses the Notehead #n#
- void add (Rhythmic_head*n);
+ void add_head (Rhythmic_head*n);
DECLARE_MY_RUNTIME_TYPEINFO;
@@ -93,10 +93,10 @@ public:
void do_print() const;
void set_stemend (Real);
- Direction get_default_dir();
- Direction get_dir ();
+ Direction get_default_dir() const;
+ Direction get_dir () const;
- int get_center_distance(Direction);
+ int get_center_distance(Direction) const;
void set_default_dir();
void set_default_stemlen();
void set_default_extents();
@@ -111,8 +111,9 @@ public:
/// heads that the stem encompasses (positions)
Interval_t<int> head_positions() const;
+ virtual ~Stem ();
protected:
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
virtual void do_pre_processing();
virtual Interval do_width() const;
Molecule* brew_molecule_p() const;
diff --git a/lily/include/super-elem.hh b/lily/include/super-element.hh
index 4ee998706e..a625b850ec 100644
--- a/lily/include/super-elem.hh
+++ b/lily/include/super-element.hh
@@ -1,20 +1,20 @@
/*
- super-elem.hh -- declare Super_elem
+ super-element.hh -- declare Super_elem
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef SUPER_ELEM_HH
#define SUPER_ELEM_HH
-#include "score-elem.hh"
+#include "score-element.hh"
/** The toplevel element. The Paper_score contains this element, and any
element shoud be a dependency for the super element.
*/
-class Super_elem : public Score_elem {
+class Super_elem : public Score_element {
public:
Link_array<Line_of_score> lines_arr_;
Line_of_score * line_of_score_l_;
@@ -30,7 +30,7 @@ public:
void unlink_all ();
protected:
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
virtual void handle_broken_dependencies();
virtual void do_add_processing();
diff --git a/lily/include/swallow-grav.hh b/lily/include/swallow-engraver.hh
index 601477fcd2..d2ca31a927 100644
--- a/lily/include/swallow-grav.hh
+++ b/lily/include/swallow-engraver.hh
@@ -1,9 +1,9 @@
/*
- swallow-grav.hh -- declare Swallow_engraver
+ swallow-engraver.hh -- declare Swallow_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/swallow-perf.hh b/lily/include/swallow-perf.hh
index 699990c4db..62e14d45f0 100644
--- a/lily/include/swallow-perf.hh
+++ b/lily/include/swallow-perf.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/symtable.hh b/lily/include/symtable.hh
index 71724eb0ad..12cf34b11e 100644
--- a/lily/include/symtable.hh
+++ b/lily/include/symtable.hh
@@ -1,9 +1,9 @@
/*
- symtable.hh -- declare
+ symtable.hh -- declare Symtable, Symtables
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/outputter.hh b/lily/include/tex-outputter.hh
index cb842e4c6c..ce9f772917 100644
--- a/lily/include/outputter.hh
+++ b/lily/include/tex-outputter.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -11,15 +11,17 @@
#define OUTPUTTER_HH
#include "lily-proto.hh"
+#include "array.hh"
+#include "string.hh"
/**
- Abstract interface for a Score_elem to output itself.
+ 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)=0;
+ virtual void output_molecule (Molecule const *, Offset, char const *)=0;
virtual void stop_line ()=0;
};
@@ -28,9 +30,13 @@ struct Outputter
*/
struct Tex_outputter : Outputter
{
+ Array<String> font_arr_;
+ String current_font_;
+
Tex_outputter (Tex_stream *);
Tex_stream * outstream_l_;
- virtual void output_molecule (Molecule const*, Offset);
+ void switch_to_font (String);
+ virtual void output_molecule (Molecule const*, Offset, char const*);
virtual void start_line ();
virtual void stop_line ();
};
diff --git a/lily/include/tex-stream.hh b/lily/include/tex-stream.hh
index e8011bb3ee..e26c8328cb 100644
--- a/lily/include/tex-stream.hh
+++ b/lily/include/tex-stream.hh
@@ -22,8 +22,9 @@ public:
/// open a file for writing
Tex_stream (String filename);
void header();
- /// delegate conversion to string class.
- Tex_stream &operator<<(String);
+
+ /// delegate conversion to scalar class
+ Tex_stream &operator <<(Scalar);
/// close the file
~Tex_stream();
diff --git a/lily/include/tex.hh b/lily/include/tex.hh
index 43a35d2ad3..3d5cf308b3 100644
--- a/lily/include/tex.hh
+++ b/lily/include/tex.hh
@@ -3,7 +3,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -12,10 +12,10 @@
#define TEX_HH
#include "string.hh"
-#include "boxes.hh"
+#include "box.hh"
#include "scalar.hh"
-/** parameter substitution in TeX_strings.
+/** paratime_signature substitution in TeX_strings.
this function provides a simple macro mechanism:
if source == "tex%bla%", then
@@ -24,7 +24,7 @@
String
substitute_args (String source, Array<String> args);
-/// parameter substitution in TeX_strings
+/// paratime_signature substitution in TeX_strings
String
substitute_args (String source, Array<Scalar> args);
diff --git a/lily/include/text-def.hh b/lily/include/text-def.hh
index 13fb25511b..296350de45 100644
--- a/lily/include/text-def.hh
+++ b/lily/include/text-def.hh
@@ -1,7 +1,7 @@
/*
text-def.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef TEXT_DEF_HH
@@ -19,11 +19,11 @@ public:
VIRTUAL_COPY_CONS(Text_def,General_script_def);
/**
- centered , or aligned?
+ Alignment of typeset text wrt center.
- -1 = raggedright, 0 = center, 1 = raggedleft
+ LEFT = raggedright, CENTER = centered, RIGHT = raggedleft
*/
- Direction align_i_;
+ Direction align_dir_;
String text_str_;
String style_str_;
diff --git a/lily/include/text-item.hh b/lily/include/text-item.hh
index 581446cfd4..8c6ba84f69 100644
--- a/lily/include/text-item.hh
+++ b/lily/include/text-item.hh
@@ -1,7 +1,7 @@
/*
text-item.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef TEXT_ITEM_HH
diff --git a/lily/include/text-spanner.hh b/lily/include/text-spanner.hh
index ab81d9099e..e7cd556cd9 100644
--- a/lily/include/text-spanner.hh
+++ b/lily/include/text-spanner.hh
@@ -1,7 +1,7 @@
/*
textspanner.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef TEXTSPANNER_HH
@@ -24,10 +24,10 @@ public:
Text_spanner();
Text_spanner (Text_spanner const&);
protected:
- SCORE_ELEM_CLONE(Text_spanner);
+ SCORE_ELEMENT_CLONE(Text_spanner);
~Text_spanner();
virtual void do_add_processing ();
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
virtual void do_pre_processing();
virtual void do_post_processing();
virtual Interval height() const ;
diff --git a/lily/include/tie-engraver.hh b/lily/include/tie-engraver.hh
new file mode 100644
index 0000000000..8c7536392a
--- /dev/null
+++ b/lily/include/tie-engraver.hh
@@ -0,0 +1,43 @@
+/*
+ tie-engraver.hh -- declare Tie_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef TIE_GRAV_HH
+#define TIE_GRAV_HH
+
+#include "engraver.hh"
+
+
+/**
+ Make a (one) tie from a request. To be used in conjunction with
+ the Note_head_engraver. Obsolete now that Thread context is junked.
+ */
+class Tie_engraver : public Engraver {
+ Tie * end_tie_p_;
+ Tie * tie_p_;
+ Moment end_mom_;
+ Tie_req * req_l_;
+ Direction dir_;
+ Tie_req *end_req_l_;
+ Melodic_req * end_melodic_req_l_;
+ Melodic_req * melodic_req_l_;
+
+protected:
+ virtual void do_removal_processing ();
+ virtual void acknowledge_element (Score_element_info);
+ virtual bool do_try_request (Request*);
+ virtual void do_process_requests();
+ virtual void do_post_move_processing();
+ virtual void do_pre_move_processing();
+public:
+ TRANSLATOR_CLONE(Tie_engraver);
+ Tie_engraver();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // TIE_GRAV_HH
diff --git a/lily/include/tie-grav.hh b/lily/include/tie-grav.hh
deleted file mode 100644
index 834d91ed55..0000000000
--- a/lily/include/tie-grav.hh
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- tie-grav.hh -- declare Tie_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef TIE_GRAV_HH
-#define TIE_GRAV_HH
-
-#include "engraver.hh"
-
-class Tie_engraver : public Engraver {
- Tie * end_tie_p_;
- Tie * tie_p_;
- Moment end_mom_;
- Tie_req * req_l_;
- Direction dir_;
- Tie_req *end_req_l_;
- Melodic_req * end_melodic_req_l_;
- Melodic_req * melodic_req_l_;
-
-protected:
- virtual void do_removal_processing ();
- virtual void acknowledge_element (Score_elem_info);
- virtual bool do_try_request (Request*);
- virtual void do_process_requests();
- virtual void do_post_move_processing();
- virtual void do_pre_move_processing();
-public:
-TRANSLATOR_CLONE(Tie_engraver);
- Tie_engraver();
- DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-#endif // TIE_GRAV_HH
diff --git a/lily/include/tie.hh b/lily/include/tie.hh
index d983e16491..a60577109a 100644
--- a/lily/include/tie.hh
+++ b/lily/include/tie.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -22,7 +22,7 @@ public:
void set_head (Direction, Note_head*head_l);
DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Tie);
+ SCORE_ELEMENT_CLONE(Tie);
bool same_pitch_b_;
Drul_array<Note_head *> head_l_drul_;
@@ -31,7 +31,7 @@ protected:
virtual void do_add_processing ();
virtual void do_post_processing ();
virtual void set_default_dir();
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+ virtual void do_substitute_dependency (Score_element*,Score_element*);
Array<Offset> get_controls () const;
};
#endif // TIE_HH
diff --git a/lily/include/ties-engraver.hh b/lily/include/ties-engraver.hh
new file mode 100644
index 0000000000..9ad8497b07
--- /dev/null
+++ b/lily/include/ties-engraver.hh
@@ -0,0 +1,51 @@
+/*
+ tie-engraver.hh -- declare Ties_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef Ties_GRAV_HH
+#define Ties_GRAV_HH
+
+#include "engraver.hh"
+
+struct Head_melodic_tuple {
+ Melodic_req *mel_l_ ;
+ Note_head *head_l_;
+
+ Head_melodic_tuple ();
+ Head_melodic_tuple (Note_head*, Melodic_req*);
+ static int compare (Head_melodic_tuple const &, Head_melodic_tuple const &);
+};
+
+class Ties_engraver : public Engraver {
+ Link_array<Tie> end_tie_p_arr_;
+ Link_array<Tie> tie_p_arr_;
+
+ Tie_req *req_l_;
+ Tie_req *end_req_l_;
+ Array<Head_melodic_tuple> head_mel_tuple_arr_;
+ Array<Head_melodic_tuple> left_head_mel_tuple_arr_;
+ int processed_ack_pass_i_;
+
+ Link_array<Melodic_req *> end_melodic_req_l_arr_;
+ Link_array<Melodic_req *> melodic_req_l_arr_;
+
+protected:
+ virtual void do_removal_processing ();
+ virtual void acknowledge_element (Score_element_info);
+ virtual bool do_try_request (Request*);
+ virtual void do_process_requests();
+ virtual void process_acknowledged ();
+ virtual void do_post_move_processing();
+ virtual void do_pre_move_processing();
+public:
+ TRANSLATOR_CLONE(Ties_engraver);
+ Ties_engraver();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // Ties_GRAV_HH
diff --git a/lily/include/time-description.hh b/lily/include/time-description.hh
index 5a84817ed9..f92b48ba79 100644
--- a/lily/include/time-description.hh
+++ b/lily/include/time-description.hh
@@ -1,7 +1,7 @@
/*
moment.hh -- part of GNU LilyPond
- (c) 1996,97 Han-Wen Nienhuys
+ (c) 1996--1998 Han-Wen Nienhuys
*/
#ifndef tdes_HH
@@ -9,7 +9,7 @@
#include "moment.hh"
#include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
/// full info on where we are
struct Time_description {
@@ -39,14 +39,14 @@ struct Time_description {
void OK() const;
Time_description();
void add (Moment dt);
- bool allow_meter_change_b();
+ bool allow_time_signature_change_b();
String str() const;
void print() const;
void setpartial (Moment p);
String try_set_partial_str (Moment) const;
Moment barleft() const;
Moment next_bar_moment() const;
- void set_meter (int,int);
+ void set_time_signature (int,int);
static int compare (const Time_description&, const Time_description&);
};
diff --git a/lily/include/meter-grav.hh b/lily/include/time-signature-engraver.hh
index 3abe46230b..4d4f1edd96 100644
--- a/lily/include/meter-grav.hh
+++ b/lily/include/time-signature-engraver.hh
@@ -1,9 +1,9 @@
/*
- meter-grav.hh -- declare Meter_engraver
+ time_signature-engraver.hh -- declare Time_signature_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -14,17 +14,17 @@
#include "grouping.hh"
/**
- generate meters.
+ generate time_signatures.
*/
-class Meter_engraver : public Engraver {
+class Time_signature_engraver : public Engraver {
protected:
virtual void do_process_requests();
virtual void do_pre_move_processing();
public:
- TRANSLATOR_CLONE(Meter_engraver);
- Meter * meter_p_;
+ TRANSLATOR_CLONE(Time_signature_engraver);
+ Time_signature * time_signature_p_;
- Meter_engraver();
+ Time_signature_engraver();
DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif // METERGRAV_HH
diff --git a/lily/include/time-signature.hh b/lily/include/time-signature.hh
new file mode 100644
index 0000000000..762f465b98
--- /dev/null
+++ b/lily/include/time-signature.hh
@@ -0,0 +1,31 @@
+/*
+ time_signature.hh -- declare Time_signature
+
+ (c) 1996--1998 Han-Wen Nienhuys
+*/
+
+#ifndef METER_HH
+#define METER_HH
+#include "item.hh"
+#include "array.hh"
+#include "scalar.hh"
+
+/**
+ Print a time_signature sign.
+ TODO:
+
+ C style time_signatures, 2+3+2/8 time_signatures, alla breve.
+
+ */
+class Time_signature: public Item {
+ Array<Scalar> args;
+
+protected:
+ virtual Molecule*brew_molecule_p() const;
+public:
+ Time_signature (Array<Scalar> args) ;
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ SCORE_ELEMENT_CLONE(Time_signature);
+};
+#endif // METER_HH
+
diff --git a/lily/include/timing-grav.hh b/lily/include/timing-engraver.hh
index 01c36c1aca..9e0012a8e9 100644
--- a/lily/include/timing-grav.hh
+++ b/lily/include/timing-engraver.hh
@@ -1,9 +1,9 @@
/*
- timing-grav.hh -- declare Timing_engraver
+ timing-engraver.hh -- declare Timing_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/timing-translator.hh b/lily/include/timing-translator.hh
index 1b2fe054ea..e62ee388f0 100644
--- a/lily/include/timing-translator.hh
+++ b/lily/include/timing-translator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -19,7 +19,7 @@ class Timing_translator : public virtual Translator
{
public:
TRANSLATOR_CLONE(Timing_translator);
- Meter_change_req * meter_req_l () const;
+ Time_signature_change_req * time_signature_req_l () const;
Timing_translator ();
DECLARE_MY_RUNTIME_TYPEINFO;
Time_description time_;
diff --git a/lily/include/translation-property.hh b/lily/include/translation-property.hh
index 686f0d938d..1ddfdffee9 100644
--- a/lily/include/translation-property.hh
+++ b/lily/include/translation-property.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/translator-change.hh b/lily/include/translator-change.hh
index 0220ed70f5..8de7b806c5 100644
--- a/lily/include/translator-change.hh
+++ b/lily/include/translator-change.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/translator-group.hh b/lily/include/translator-group.hh
index 3e00c5b0e1..a1613cba60 100644
--- a/lily/include/translator-group.hh
+++ b/lily/include/translator-group.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/translator.hh b/lily/include/translator.hh
index 1684809af5..b96d680721 100644
--- a/lily/include/translator.hh
+++ b/lily/include/translator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -96,21 +96,27 @@ protected:
virtual void do_removal_processing() {}
};
+
+template<class T>
+class Translator_adder
+{
+public:
+ static Translator *ctor ()
+ {
+ Translator *t = new T;
+ t->type_str_ = T::static_name ();
+ return t;
+ }
+ Translator_adder () {
+ add_constructor (ctor);
+ }
+};
+
/**
A macro to automate administration of translators.
*/
#define ADD_THIS_TRANSLATOR(c) \
-struct c ## init { \
- static Translator *ctor ()\
- {\
- Translator *t = new c;\
- t-> type_str_ = c::static_name ();\
- return t;\
- }\
- c ## init() { \
- add_constructor (ctor);\
- } \
-} _ ## c ## init;
+ Translator_adder<c> _ ## c ## init;
typedef Translator *(*Translator_ctor) ();
diff --git a/lily/include/type-swallow-trans.hh b/lily/include/type-swallow-trans.hh
index 76208a06cf..53eb7ea04a 100644
--- a/lily/include/type-swallow-trans.hh
+++ b/lily/include/type-swallow-trans.hh
@@ -1,9 +1,9 @@
/*
- type-swallow-grav.hh -- declare Type_swallow_translator
+ type-swallow-engraver.hh -- declare Type_swallow_translator
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/vertical-align-elem.hh b/lily/include/vertical-align-elem.hh
deleted file mode 100644
index b4962c34a0..0000000000
--- a/lily/include/vertical-align-elem.hh
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- vertical-align-item.hh -- declare Vertical_align_elem
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef VERTICAL_ALIGN_ITEM_HH
-#define VERTICAL_ALIGN_ITEM_HH
-
-#include "score-elem.hh"
-
-/**
- Order elements top to bottom.
- */
-class Vertical_align_element : virtual public Score_elem {
- Link_array<Score_elem> elem_l_arr_;
-public:
- void add (Score_elem*);
- bool contains_b (Score_elem const*) const;
- Vertical_align_element();
- DECLARE_MY_RUNTIME_TYPEINFO;
-protected:
- virtual void do_substitute_dependency (Score_elem*,Score_elem*);
- virtual void do_post_processing() ;
-};
-#endif // VERTICAL_ALIGN_ITEM_HH
diff --git a/lily/include/vertical-align-grav.hh b/lily/include/vertical-align-engraver.hh
index c61ba39d02..0f6bd5f141 100644
--- a/lily/include/vertical-align-grav.hh
+++ b/lily/include/vertical-align-engraver.hh
@@ -1,9 +1,9 @@
/*
- vertical-align-grav.hh -- declare Vertical_align_engraver
+ vertical-align-engraver.hh -- declare Vertical_align_engraver
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -20,7 +20,7 @@ public:
DECLARE_MY_RUNTIME_TYPEINFO;
Vertical_align_engraver();
protected:
- virtual void acknowledge_element (Score_elem_info);
+ virtual void acknowledge_element (Score_element_info);
virtual void do_creation_processing();
virtual void do_removal_processing();
};
diff --git a/lily/include/vertical-align-spanner.hh b/lily/include/vertical-align-spanner.hh
index df8be95bc5..667ab5e991 100644
--- a/lily/include/vertical-align-spanner.hh
+++ b/lily/include/vertical-align-spanner.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -11,14 +11,15 @@
#define VERTICAL_ALIGN_SPANNER_HH
#include "spanner.hh"
-#include "vertical-align-elem.hh"
+#include "align-element.hh"
-class Vertical_align_spanner : public Vertical_align_element, public Spanner
+class Vertical_align_spanner : public Align_element, public Spanner
{
public:
- DECLARE_MY_RUNTIME_TYPEINFO;
- SCORE_ELEM_CLONE(Vertical_align_spanner);
- virtual void do_print() const { Vertical_align_element::do_print () ; }
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ SCORE_ELEMENT_CLONE(Vertical_align_spanner);
+ Vertical_align_spanner ();
+ virtual void do_print() const ;
};
#endif // VERTICAL_ALIGN_SPANNER_HH
diff --git a/lily/include/vertical-group-elem.hh b/lily/include/vertical-group-element.hh
index f60623e7dc..b3eee34dfe 100644
--- a/lily/include/vertical-group-elem.hh
+++ b/lily/include/vertical-group-element.hh
@@ -1,9 +1,9 @@
/*
- vertical-group-elem.hh -- declare
+ vertical-group-element.hh -- declare
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -16,13 +16,11 @@
*/
class Vertical_group_element : public virtual Axis_group_element {
protected:
- virtual Interval do_height() const;
- virtual void remove_all();
+ virtual Interval do_height() const;
public:
- virtual void add_element (Graphical_element*);
- virtual void remove_element (Graphical_element*);
- DECLARE_MY_RUNTIME_TYPEINFO;
+ Vertical_group_element () ;
+ DECLARE_MY_RUNTIME_TYPEINFO;
};
#endif /* VERTICAL_GROUP_ELEM_HH */
diff --git a/lily/include/vertical-group-spanner.hh b/lily/include/vertical-group-spanner.hh
index 678137e29f..9df0d88053 100644
--- a/lily/include/vertical-group-spanner.hh
+++ b/lily/include/vertical-group-spanner.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -11,21 +11,19 @@
#define SPAN_VERTICAL_GROUP_HH
#include "axis-group-spanner.hh"
-#include "vertical-group-elem.hh"
+#include "vertical-group-element.hh"
/** An element which groups a line.
*/
class Vertical_group_spanner : public Axis_group_spanner, public Vertical_group_element
{
protected:
- SCORE_ELEM_CLONE(Vertical_group_spanner);
- virtual void remove_all() { Vertical_group_element::remove_all (); }
+ SCORE_ELEMENT_CLONE(Vertical_group_spanner);
virtual void do_junk_links () { Axis_group_spanner::do_junk_links (); }
virtual void do_unlink () { Axis_group_spanner::do_unlink (); }
public:
DECLARE_MY_RUNTIME_TYPEINFO;
- virtual void add_element (Graphical_element*e) { Vertical_group_element::add_element (e); }
- virtual void remove_element (Graphical_element*e) { Vertical_group_element::remove_element (e); }
+ Vertical_group_spanner ();
};
diff --git a/lily/include/voice-iterator.hh b/lily/include/voice-iterator.hh
index a9fec21204..887999e912 100644
--- a/lily/include/voice-iterator.hh
+++ b/lily/include/voice-iterator.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/include/word-wrap.hh b/lily/include/word-wrap.hh
index 7465c279e6..0589f46434 100644
--- a/lily/include/word-wrap.hh
+++ b/lily/include/word-wrap.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -14,7 +14,7 @@
/// wordwrap type algorithm: move to next line if current is optimal.
struct Word_wrap : Break_algorithm {
- virtual Array<Col_hpositions> do_solve() const;
+ virtual Array<Column_x_positions> do_solve() const;
Word_wrap();
};
diff --git a/lily/ineq-constrained-qp.cc b/lily/ineq-constrained-qp.cc
index 70856b56dc..f0e66c0793 100644
--- a/lily/ineq-constrained-qp.cc
+++ b/lily/ineq-constrained-qp.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "ineq-constrained-qp.hh"
#include "qlpsolve.hh"
@@ -17,6 +17,7 @@
const int MAXITER=100; // qlpsolve.hh
+const int MAXDEGEN=5;
/*
assume x (idx) == value, and adjust constraints, lin and quad accordingly
@@ -119,13 +120,13 @@ Ineq_constrained_qp::constraint_solve (Vector start) const
Vector x (start);
Vector gradient=quad_*x+lin_;
- // Real fvalue = x*quad_*x/2 + lin*x + const_term;
- // it's no use.
+
+ // Real fvalue = x*quad_*x/2 + lin*x + const_term;// it's no use.
Vector last_gradient (gradient);
int iterations=0;
- while (iterations++ < MAXITER)
+ while (iterations++ < MAXITER && act.degenerate_count_i_ < MAXDEGEN)
{
//#ifdef PARANOID
if (experimental_features_global_b)
@@ -134,7 +135,7 @@ Ineq_constrained_qp::constraint_solve (Vector start) const
Vector direction= - act.find_active_optimum (gradient);
- DOUT << "gradient "<< gradient<< "\ndirection " << direction<<"\n";
+ DOUT << "gradient "<< gradient<< "\ndirection " << direction<< '\n';
if (direction.norm() > EPS)
{
@@ -162,7 +163,10 @@ Ineq_constrained_qp::constraint_solve (Vector start) const
if (numerator >= 0)
{
if (numerator > EPS)
- warning (String ("Ineq_constrained_qp::solve (): Constraint off by ") + numerator);
+ {
+ warning (_f ("Ineq_constrained_qp::solve (): Constraint off by %f", numerator));
+ act.degenerate_count_i_ ++;
+ }
minalf = -numerator;
minidx = ia;
break;
@@ -180,23 +184,21 @@ Ineq_constrained_qp::constraint_solve (Vector start) const
Real optimal_step = minalf;
- Vector deltax=direction * optimal_step;
+ Vector deltax = direction * optimal_step;
x += deltax;
gradient += optimal_step * (quad_ * deltax);
- DOUT << "step = " << optimal_step<< " (|dx| = " <<
- deltax.norm() << ")\n";
+ DOUT << "step = " << optimal_step << " (|dx| = " <<
+ to_str (deltax.norm()) << ")\n";
if (minalf < unbounded_alfa)
{
/* bumped into an edge. try again, in smaller space. */
- act.add (minidx.idx());
- DOUT << "adding cons "<< minidx.idx()<<'\n';
+ act.add_constraint (minidx.idx());
+ DOUT << "adding cons "<< minidx.idx () << '\n';
continue;
}
- /*ASSERT: we are at optimal solution for this "plane"*/
-
-
+ /*ASSERT: we are at the optimal solution for this "plane"*/
}
Vector lagrange_mult=act.get_lagrange (gradient);
@@ -213,13 +215,14 @@ Ineq_constrained_qp::constraint_solve (Vector start) const
break;
}
- DOUT << "dropping cons " << m<<'\n';
- act.drop (m);
+ DOUT << "dropping cons " << m << '\n';
+ act.drop_constraint (m);
}
if (iterations >= MAXITER)
- WARN<<_("didn't converge!\n");
-
- DOUT << ": found " << x<<" in " << iterations <<" iterations\n";
+ WARN << _ ("didn't converge!") << '\n';
+ if (act.degenerate_count_i_ >= MAXDEGEN)
+ WARN << _ ("Too much degeneracy. ") << '\n';
+ DOUT << ": found " << x << " in " << iterations <<" iterations\n";
assert_solution (x);
return x;
}
@@ -246,3 +249,33 @@ Ineq_constrained_qp::dim () const
return lin_.dim();
}
+
+
+
+void
+Ineq_constrained_qp::assert_solution (Vector sol) const
+{
+ bool sol_b=true;
+
+ for (int i=0; sol_b && i < cons_.size(); i++)
+ {
+ Real R=cons_[i] * sol- consrhs_[i];
+ if (R> -EPS)
+ sol_b = false;
+ }
+}
+
+void
+Ineq_constrained_qp::print() const
+{
+#ifndef NPRINT
+ DOUT << "Quad " << quad_;
+ DOUT << "lin " << lin_ << '\n'
+ << "const " << const_term_<< '\n';
+ for (int i=0; i < cons_.size(); i++)
+ {
+ DOUT << "constraint["<<i<<"]: " << cons_[i] << " >= " << consrhs_[i];
+ DOUT << '\n';
+ }
+#endif
+}
diff --git a/lily/item.cc b/lily/item.cc
index 20f52f0553..ec4a583a07 100644
--- a/lily/item.cc
+++ b/lily/item.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "p-score.hh"
@@ -13,22 +13,22 @@
// #include "elem-group.hh"
#include "spanner.hh"
-Item::Item()
+Item::Item ()
{
break_priority_i_ = 0;
breakable_b_ = false;
- break_status_i_ = CENTER;
+ break_status_dir_ = CENTER;
broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0;
}
-IMPLEMENT_IS_TYPE_B1(Item, Score_elem);
+IMPLEMENT_IS_TYPE_B1(Item, Score_element);
void
Item::do_print() const
{
#ifndef NPRINT
DOUT << "breakable_b_: " << breakable_b_ <<
- " break_status_i_: " <<break_status_i_;
+ " break_status_dir_: " << break_status_dir_;
#endif
}
@@ -42,13 +42,19 @@ Item::hpos_f() const
Line_of_score *
Item::line_l() const
{
- return (axis_group_l_a_[X_AXIS])? axis_group_l_a_[X_AXIS]->line_l() : 0;
+ Graphical_axis_group *ga = axis_group_l_a_[X_AXIS];
+
+ if (!ga)
+ return 0;
+
+ assert (ga->access_Score_element());
+ return ga->access_Score_element ()-> line_l ();
}
-int
-Item::break_status_i() const
+Direction
+Item::break_status_dir() const
{
- return break_status_i_;
+ return break_status_dir_;
}
void
@@ -60,9 +66,9 @@ Item::copy_breakable_items()
Direction i=LEFT;
do
{
- Item * item_p = clone()->item ();
+ Item * item_p = clone()->access_Item ();
- item_p->break_status_i_ = i;
+ item_p->break_status_dir_ = i;
pscore_l_->typeset_element (item_p);
item_p->handle_prebroken_dependencies();
new_copies[i] =item_p;
@@ -85,7 +91,7 @@ Item::do_breakable_col_processing()
/*
Otherwise the broken items won't be pre_process()'ed.
- */
+ */
add_dependency (broken_to_drul_[LEFT]);
add_dependency (broken_to_drul_[RIGHT]);
}
@@ -116,16 +122,16 @@ void
Item::handle_prebroken_dependencies()
{
if (breakable_b_)
- Score_elem::handle_prebroken_dependencies();
+ Score_element::handle_prebroken_dependencies();
}
int
Item::left_right_compare(Item const *l, Item const *r)
{
while (!l->is_type_b (Paper_column::static_name ()))
- l = l->axis_group_l_a_[X_AXIS]->item();
+ l = l->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ();
while (!r->is_type_b (Paper_column::static_name ()))
- r = r->axis_group_l_a_[X_AXIS]->item();
+ r = r->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ();
Paper_column *p1 = (Paper_column*)l;
Paper_column* p2 = (Paper_column*)r;
@@ -136,7 +142,7 @@ Item::left_right_compare(Item const *l, Item const *r)
bool
Item::linked_b() const
{
- return Score_elem::linked_b() || attached_span_l_arr_.size();
+ return Score_element::linked_b() || attached_span_l_arr_.size();
}
void
@@ -148,21 +154,38 @@ Item::do_junk_links()
void
Item::do_unlink()
{
- Link_array<Spanner> attached = attached_span_l_arr_;
+ for (int i=0; i < attached_span_l_arr_.size (); i++)
+ {
+ Spanner *&s= attached_span_l_arr_[i];
+
+ Direction d= LEFT;
+ do {
+ if (s->spanned_drul_[d] == this)
+ s->set_bounds (d, 0);
- for (int i=0; i < attached_span_l_arr_.size (); i++) {
- Spanner *&s= attached_span_l_arr_[i];
- if (s->spanned_drul_[LEFT] == this)
- s->set_bounds (LEFT, 0);
- if (s->spanned_drul_[RIGHT] == this)
- s->set_bounds (RIGHT,0);
- s =0;
- }
+ } while ( flip (&d) != LEFT);
+ }
attached_span_l_arr_.set_size (0);
}
Paper_column *
Item::column_l () const
{
- return axis_group_l_a_[X_AXIS]->item ()->column_l ();
+ return axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ()->column_l ();
+}
+
+Item::Item (Item const &s)
+ : Score_element (s)
+{
+ /* do not copy attached_span_l_arr_ */
+ breakable_b_ = s.breakable_b_;
+ broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] =0;
+ break_status_dir_ = s.break_status_dir_;
+ break_priority_i_ = s.break_priority_i_;
+}
+
+Item *
+Item::access_Item ()
+{
+ return this;
}
diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc
new file mode 100644
index 0000000000..7772f0e718
--- /dev/null
+++ b/lily/key-engraver.cc
@@ -0,0 +1,187 @@
+/*
+ key-reg.cc -- implement Key_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+#include "key-engraver.hh"
+#include "key-item.hh"
+#include "command-request.hh"
+#include "local-key-engraver.hh"
+#include "musical-request.hh"
+#include "local-key-item.hh"
+#include "bar.hh"
+#include "time-description.hh"
+
+Key_engraver::Key_engraver ()
+{
+ kit_p_ = 0;
+ do_post_move_processing ();
+}
+
+void
+Key_engraver::create_key ()
+{
+ if (!kit_p_)
+ {
+ kit_p_ = new Key_item;
+ kit_p_->break_priority_i_ = -1; // ugh
+ announce_element (Score_element_info (kit_p_,keyreq_l_));
+ kit_p_->read (*this);
+ }
+}
+
+bool
+Key_engraver::do_try_request (Request * req_l)
+{
+ Command_req* creq_l= req_l->access_Command_req ();
+ if (!creq_l|| !creq_l->access_Key_change_req ())
+ return false;
+
+ if (keyreq_l_)
+ return false; // TODO
+ keyreq_l_ = creq_l->access_Key_change_req ();
+ read_req (keyreq_l_);
+ return true;
+}
+
+void
+Key_engraver::acknowledge_element (Score_element_info info)
+{
+ Command_req * r_l = info.req_l_->access_Command_req () ;
+ if (r_l && r_l->access_Clef_change_req ())
+ {
+ create_key ();
+ }
+ else if (info.elem_l_->is_type_b (Bar::static_name ())
+ && accidental_idx_arr_.size ())
+ {
+ if (!keyreq_l_)
+ default_key_b_ = true;
+ create_key ();
+ }
+
+}
+
+void
+Key_engraver::do_process_requests ()
+{
+ if (keyreq_l_)
+ {
+ create_key ();
+ }
+}
+
+void
+Key_engraver::do_pre_move_processing ()
+{
+ if (kit_p_)
+ {
+ kit_p_->default_b_ = default_key_b_;
+ typeset_element (kit_p_);
+ kit_p_ = 0;
+ }
+}
+
+
+/*
+ TODO Slightly hairy.
+ */
+void
+Key_engraver::read_req (Key_change_req const * r)
+{
+ old_accidental_idx_arr_ = accidental_idx_arr_;
+ key_.clear ();
+ Scalar prop = get_property ("specialaccidentals");
+ if (prop.length_i () > 0)
+ {
+ key_.multi_octave_b_ = prop.to_bool ();
+ }
+
+ accidental_idx_arr_.clear ();
+
+ if (r->ordinary_key_b_)
+ {
+ int p;
+ if (r->pitch_arr_.size () < 1)
+ {
+ r->warning (_ ("No key name: assuming `C'"));
+ p = 0;
+ }
+ else
+ {
+ p = r->pitch_arr_[0].semitone_pitch ();
+ if (r->minor_b ())
+ p += 3;
+ }
+ /* Solve the equation 7*no_of_acc mod 12 = p, -6 <= no_of_acc <= 5 */
+ int no_of_acc = (7*p) % 12;
+ no_of_acc = (no_of_acc + 18) % 12 -6;
+
+ /* Correct from flats to sharps or vice versa */
+ if (no_of_acc * r->pitch_arr_[0].accidental_i_ < 0)
+ no_of_acc += 12 * sign (r->pitch_arr_[0].accidental_i_);
+
+ if (no_of_acc < 0)
+ {
+ int accidental = 6 ; // First accidental: bes
+ for ( ; no_of_acc < 0 ; no_of_acc++ )
+ {
+ Musical_pitch m;
+ m.accidental_i_ = -1;
+ m.notename_i_ = accidental;
+ if (key_.multi_octave_b_)
+ key_.set (m);
+ else
+ key_.set (m.notename_i_, m.accidental_i_);
+ accidental_idx_arr_.push (m);
+
+ accidental = (accidental + 3) % 7 ;
+ }
+ }
+ else
+ {
+ int accidental = 3 ; // First accidental: fis
+ for ( ; no_of_acc > 0 ; no_of_acc-- )
+ {
+ Musical_pitch m;
+ m.accidental_i_ = 1;
+ m.notename_i_ = accidental;
+ if (key_.multi_octave_b_)
+ key_.set (m);
+ else
+ key_.set (m.notename_i_, m.accidental_i_);
+ accidental_idx_arr_.push (m);
+
+ accidental = (accidental + 4) % 7 ;
+ }
+ }
+ }
+ else // Special key
+ {
+ for (int i = 0; i < r->pitch_arr_.size (); i ++)
+ {
+ Musical_pitch m_l =r->pitch_arr_[i];
+ if (key_.multi_octave_b_)
+ key_.set (m_l);
+ else
+ key_.set (m_l.notename_i_, m_l.accidental_i_);
+
+ accidental_idx_arr_.push (m_l);
+ }
+ }
+}
+
+void
+Key_engraver::do_post_move_processing ()
+{
+ keyreq_l_ = 0;
+ default_key_b_ = false;
+}
+
+
+IMPLEMENT_IS_TYPE_B1 (Key_engraver,Engraver);
+ADD_THIS_TRANSLATOR (Key_engraver);
+
diff --git a/lily/key-grav.cc b/lily/key-grav.cc
deleted file mode 100644
index f50fc47729..0000000000
--- a/lily/key-grav.cc
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- key-reg.cc -- implement Key_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-
-
- Todo: key undo, special keys.
-
- */
-#include "key-grav.hh"
-#include "key-item.hh"
-#include "command-request.hh"
-#include "local-key-grav.hh"
-#include "musical-request.hh"
-#include "local-key-item.hh"
-#include "bar.hh"
-#include "time-description.hh"
-
-Key_engraver::Key_engraver()
-{
- kit_p_ = 0;
- do_post_move_processing();
-}
-
-void
-Key_engraver::create_key()
-{
- if (!kit_p_)
- {
- int c0_i=0;
-
- Staff_info inf = get_staff_info();
- if (inf.c0_position_i_l_)
- c0_i = *get_staff_info().c0_position_i_l_;
-
- kit_p_ = new Key_item (c0_i);
- kit_p_->break_priority_i_ = -1; // ugh
- announce_element (Score_elem_info (kit_p_,keyreq_l_));
- kit_p_->read (*this);
- }
-}
-
-bool
-Key_engraver::do_try_request (Request * req_l)
-{
- Command_req* creq_l= req_l->command();
- if (!creq_l|| !creq_l->keychange())
- return false;
-
- if (keyreq_l_)
- return false; // TODO
- keyreq_l_ = creq_l->keychange();
- read_req (keyreq_l_);
- return true;
-}
-
-void
-Key_engraver::acknowledge_element (Score_elem_info info)
-{
- Command_req * r_l = info.req_l_->command() ;
- if (r_l && r_l->clefchange())
- {
- create_key();
- }
- else if (info.elem_l_->is_type_b (Bar::static_name ()))
- {
- if (!keyreq_l_)
- default_key_b_ = true;
- create_key();
- }
-
-}
-
-void
-Key_engraver::do_process_requests()
-{
- if (key_.multi_octave_b_)
- {
- assert (false); // TODO .
- }
- else if (keyreq_l_)
- {
- create_key();
- }
-}
-
-void
-Key_engraver::do_pre_move_processing()
-{
- if (kit_p_)
- {
- kit_p_->default_b_ = default_key_b_;
- typeset_element (kit_p_);
- kit_p_ = 0;
- }
-}
-
-
-
-void
-Key_engraver::read_req (Key_change_req const * r)
-{
- key_.clear ();
- key_.multi_octave_b_ = r->multi_octave_b_;
- accidental_idx_arr_.clear();
-
- for (int i = 0; i < r->pitch_arr_.size(); i ++)
- {
- Musical_pitch m_l =r->pitch_arr_[i];
- if (r->multi_octave_b_)
- key_.set (m_l);
- else
- key_.set (m_l.notename_i_, m_l.accidental_i_);
-
- accidental_idx_arr_.push (m_l.notename_i_);
- }
-}
-
-void
-Key_engraver::do_post_move_processing()
-{
- keyreq_l_ = 0;
- default_key_b_ = false;
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Key_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Key_engraver);
diff --git a/lily/key-item.cc b/lily/key-item.cc
index 93abfa0575..94645d20c2 100644
--- a/lily/key-item.cc
+++ b/lily/key-item.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
keyplacement by Mats Bengtsson
*/
@@ -15,38 +15,50 @@
#include "paper-def.hh"
#include "lookup.hh"
-#include "key-grav.hh"
+#include "key-engraver.hh"
const int FLAT_TOP_PITCH=2; /* fes,ges,as and bes typeset in lower octave */
const int SHARP_TOP_PITCH=4; /* ais and bis typeset in lower octave */
-Key_item::Key_item (int c)
+Key_item::Key_item ()
{
breakable_b_ =true;
default_b_ = false;
- set_c_position (c);
+ set_c_position (0);
}
void
Key_item::read (Key_engraver const & key_grav_r)
{
- assert (!key_grav_r.key_.multi_octave_b_);
- const Array<int> &idx_arr =key_grav_r.accidental_idx_arr_;
+ multi_octave_b_ = key_grav_r.key_.multi_octave_b_;
+ const Array<Musical_pitch> &idx_arr = key_grav_r.accidental_idx_arr_;
for (int i = 0 ; i< idx_arr.size(); i++)
{
- int note = idx_arr[i];
- int acc = ((Key &) key_grav_r.key_).oct (0).acc (note);
-
- add (note, acc);
+ Musical_pitch m_l =idx_arr[i];
+ if (multi_octave_b_)
+ add (m_l);
+ else
+ add (m_l.notename_i_, m_l.accidental_i_);
+ }
+ const Array<Musical_pitch> &old_idx_arr = key_grav_r.old_accidental_idx_arr_;
+ for (int i = 0 ; i< old_idx_arr.size(); i++)
+ {
+ Musical_pitch m_l =old_idx_arr[i];
+ if (multi_octave_b_)
+ add_old (m_l);
+ else
+ add_old (m_l.notename_i_, m_l.accidental_i_);
}
}
void
Key_item::set_c_position (int c0)
{
- int from_bottom_pos = c0 + 4; // ugh
- int octaves =(from_bottom_pos / 7) +1 ;
- from_bottom_pos =(from_bottom_pos + 7*octaves)%7;
+ c0_position = c0;
+ // Find the c in the range -4 through 2
+ int from_bottom_pos = c0 + 4;
+ from_bottom_pos = from_bottom_pos%7;
+ from_bottom_pos = (from_bottom_pos + 7)%7; // Precaution to get positive.
c_position = from_bottom_pos - 4;
}
@@ -54,36 +66,101 @@ Key_item::set_c_position (int c0)
void
Key_item::add (int p, int a)
{
- if ((a<0 && ((p>FLAT_TOP_PITCH) || (p+c_position>4)) && (p+c_position>1))
- ||
- (a>0 && ((p>SHARP_TOP_PITCH) || (p+c_position>5)) && (p+c_position>2)))
- {
- p -= 7; /* Typeset below c_position */
- }
pitch.push (p);
acc.push (a);
}
+void
+Key_item::add (const Musical_pitch& pitch_r)
+{
+ pitch.push (pitch_r.steps());
+ acc.push (pitch_r.accidental_i_);
+}
+
+void
+Key_item::add_old (int p, int a)
+{
+ old_pitch.push (p);
+ old_acc.push (a);
+}
+void
+Key_item::add_old (const Musical_pitch& pitch_r)
+{
+ old_pitch.push (pitch_r.steps());
+ old_acc.push (pitch_r.accidental_i_);
+}
+
+int
+Key_item::calculate_position(int p, int a) const
+{
+ if (multi_octave_b_)
+ {
+ return p + c0_position;
+ }
+ else {
+ if ((a<0 && ((p>FLAT_TOP_PITCH) || (p+c_position>4)) && (p+c_position>1))
+ ||
+ (a>0 && ((p>SHARP_TOP_PITCH) || (p+c_position>5)) && (p+c_position>2)))
+ {
+ p -= 7; /* Typeset below c_position */
+ }
+ return p + c_position;
+ }
+}
+
+/*
+ TODO space the `natural' signs wider
+ */
Molecule*
Key_item::brew_molecule_p() const
{
Molecule*output = new Molecule;
Real inter = paper()->internote_f ();
+ int j;
+ if ((break_status_dir_ == LEFT || break_status_dir_ == CENTER)
+ || old_pitch.size ())
+ {
+ for (int i =0; i < old_pitch.size(); i++)
+ {
+ for (j =0; (j < pitch.size()) && (old_pitch[i] != pitch[j]); j++)
+ ;
+
+ if (j == pitch.size()
+ || (old_pitch[i] == pitch[j] && old_acc[i] != acc[j]))
+ {
+ Atom a =lookup_l ()->accidental (0);
+ a.translate_axis (calculate_position(old_pitch[i], old_acc[i]) * inter, Y_AXIS);
+ Molecule m (a);
+ output->add_at_edge (X_AXIS, RIGHT, m);
+ }
+ }
+
+ /*
+ Add half a space between cancellation and key sig.
+
+ As suggested by [Ross], p.148.
+ */
+ Interval x(0, inter);
+ Interval y(0,0);
+
+ output->add_at_edge (X_AXIS, RIGHT, lookup_l()->fill (Box(x,y)));
+ }
+
for (int i =0; i < pitch.size(); i++)
{
- Atom a =paper()->lookup_l ()->accidental (acc[i]);
- a.translate_axis ((c_position + pitch[i]) * inter, Y_AXIS);
+ Atom a =lookup_l ()->accidental (acc[i]);
+ a.translate_axis (calculate_position(pitch[i], acc[i]) * inter, Y_AXIS);
Molecule m (a);
output->add_at_edge (X_AXIS, RIGHT, m);
}
if (pitch.size())
{
- Molecule m (paper()->lookup_l ()->fill (Box (
- Interval (0, paper()->note_width ()),
- Interval (0,0))));
-
+ Molecule m (lookup_l ()->fill (Box (
+ Interval (0, paper()->note_width ()),
+ Interval (0,0))));
+
output->add_at_edge (X_AXIS, RIGHT, m);
}
return output;
@@ -96,7 +173,7 @@ Key_item::do_pre_processing()
{
if (default_b_)
{
- transparent_b_ = (break_status_i() != 1);
+ transparent_b_ = (break_status_dir() != RIGHT);
set_empty (transparent_b_);
}
}
diff --git a/lily/key-performer.cc b/lily/key-performer.cc
index 527cf06cbb..02e80fca28 100644
--- a/lily/key-performer.cc
+++ b/lily/key-performer.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "key-performer.hh"
@@ -47,8 +47,8 @@ Key_performer::do_try_request (Request* req_l)
if (key_req_l_)
return false;
- if (req_l->command())
- key_req_l_ = req_l->command()->keychange ();
+ if (req_l->access_Command_req ())
+ key_req_l_ = req_l->access_Command_req ()->access_Key_change_req ();
if (key_req_l_)
return true;
diff --git a/lily/key.cc b/lily/key.cc
index b7d9f22a23..e4ca04402c 100644
--- a/lily/key.cc
+++ b/lily/key.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
TODO
transposition.
@@ -21,7 +21,7 @@ void
Octave_key::print () const
{
for (int i= 0; i < 7 ; i++)
- DOUT << "note " << i << " acc: " << accidental_i_arr_[i] << "\n";
+ DOUT << "note " << i << " acc: " << accidental_i_arr_[i] << '\n';
}
@@ -51,12 +51,12 @@ Key::octave_to_index (int o) const
int i = o + ZEROOCTAVE;
if (i < 0)
{
- warning ("Don't have that many octaves (" + String (o) + ")");
+ warning ("Don't have that many octaves (" + to_str (o) + ")");
i = 0;
}
if (i >= NUMBER_OF_OCTAVES)
{
- warning ("Don't have that many octaves (" + String (o) + ")");
+ warning ("Don't have that many octaves (" + to_str (o) + ")");
i = NUMBER_OF_OCTAVES -1;
}
return i;
@@ -74,12 +74,12 @@ Octave_key::set (int i, int a)
{
if (a <= -3)
{
- warning ("Underdone accidentals (" + String (a)+ ")");
+ warning ("Underdone accidentals (" + to_str (a) + ")");
a = -2;
}
if (a >= 3)
{
- warning ("Overdone accidentals (" + String (a) + ")");
+ warning ("Overdone accidentals (" + to_str (a) + ")");
a = 2;
}
accidental_i_arr_[i]=a;
diff --git a/lily/keyword.cc b/lily/keyword.cc
index 43c87d95b5..b273df2d6e 100644
--- a/lily/keyword.cc
+++ b/lily/keyword.cc
@@ -13,7 +13,7 @@ int
tabcmp (void const * p1, void const * p2)
{
return strcmp (((Keyword_ent const *) p1)->name,
- ((Keyword_ent const *) p2)->name);
+ ((Keyword_ent const *) p2)->name);
}
Keyword_table::Keyword_table (Keyword_ent *tab)
@@ -21,7 +21,8 @@ Keyword_table::Keyword_table (Keyword_ent *tab)
table = tab;
/* count keywords */
- for (maxkey = 0; table[maxkey].name; maxkey++);
+ for (maxkey = 0; table[maxkey].name; maxkey++)
+ ;
/* sort them */
qsort (table, maxkey, sizeof (Keyword_ent), tabcmp);
diff --git a/lily/lexer.ll b/lily/lexer.ll
index 92da6c5f1d..91363bcc8d 100644
--- a/lily/lexer.ll
+++ b/lily/lexer.ll
@@ -27,7 +27,7 @@
#include "string.hh"
#include "string-convert.hh"
#include "my-lily-lexer.hh"
-#include "varray.hh"
+#include "array.hh"
#include "interval.hh"
#include "parser.hh"
#include "debug.hh"
@@ -78,9 +78,9 @@ UNSIGNED {N}+
INT -?{UNSIGNED}
REAL ({INT}\.{N}*)|(-?\.{N}+)
KEYWORD \\{WORD}
-WHITE [ \n\t\f]
+WHITE [ \n\t\f\r]
HORIZONTALWHITE [ \t]
-BLACK [^ \n\t\f]
+BLACK [^ \n\t\f\r]
RESTNAME [rs]
NOTECOMMAND \\{A}+
LYRICS ({AA}|{TEX})[^0-9 \t\n\f]*
@@ -122,7 +122,7 @@ TELP \\\]
yy_pop_state ();
}
<<EOF>> {
- LexerError ("EOF found inside a comment");
+ LexerError (_ ("EOF found inside a comment").ch_C ());
if (! close_input ())
yyterminate (); // can't move this, since it actually rets a YY_NULL
}
@@ -152,7 +152,7 @@ TELP \\\]
Identifier * id = lookup_identifier (s);
if (id)
{
- String* s_p = id->string ();
+ String* s_p = id->access_String ();
DOUT << "#include `" << *s_p << "\'\n";
new_input (*s_p, source_global_l);
delete s_p;
@@ -160,12 +160,12 @@ TELP \\\]
}
else
{
- String msg ("Undefined identifier: `" + s + "'");
+ String msg (_f ("undefined identifier: `%s\'", s ));
LexerError (msg.ch_C ());
}
}
<incl>\"[^"]* { // backup rule
- cerr << "missing end quote" << endl;
+ cerr << _ ("missing end quote") << endl;
exit (1);
}
<notes>{RESTNAME} {
@@ -180,7 +180,7 @@ TELP \\\]
<INITIAL,lyrics,notes>\\\${BLACK}*{WHITE} {
String s=YYText () + 2;
s=s.left_str (s.length_i () - 1);
- return scan_escaped_word (s);
+ return scan_escaped_word (s);
}
<INITIAL,lyrics,notes>\${BLACK}*{WHITE} {
String s=YYText () + 1;
@@ -188,11 +188,11 @@ TELP \\\]
return scan_bare_word (s);
}
<INITIAL,lyrics,notes>\\\${BLACK}* { // backup rule
- cerr << "white expected" << endl;
+ cerr << _ ("white expected") << endl;
exit (1);
}
<INITIAL,lyrics,notes>\${BLACK}* { // backup rule
- cerr << "white expected" << endl;
+ cerr << _ ("white expected") << endl;
exit (1);
}
<notes>{
@@ -203,7 +203,7 @@ TELP \\\]
}
{NOTECOMMAND} {
- return scan_escaped_word (YYText ()+1);
+ return scan_escaped_word (YYText () + 1);
}
{DIGIT} {
@@ -226,7 +226,7 @@ TELP \\\]
}
<quote>{
\\{ESCAPED} {
- *yylval.string += escaped_char(YYText()[1]);
+ *yylval.string += to_str (escaped_char(YYText()[1]));
}
[^\\"]+ {
*yylval.string += YYText ();
@@ -251,7 +251,7 @@ TELP \\\]
return UNSIGNED;
}
{NOTECOMMAND} {
- return scan_escaped_word (YYText ()+1);
+ return scan_escaped_word (YYText () + 1);
}
{LYRICS} {
/* ugr. This sux. */
@@ -284,7 +284,7 @@ TELP \\\]
return scan_bare_word (YYText ());
}
{KEYWORD} {
- return scan_escaped_word (YYText ()+1);
+ return scan_escaped_word (YYText () + 1);
}
{REAL} {
Real r;
@@ -339,7 +339,7 @@ TELP \\\]
}
<*>. {
- String msg= String ("illegal character: ") +String (YYText ()[0]);
+ String msg = _f ("illegal character: `%c\'", YYText ()[0]);
LexerError (msg.ch_C ());
return YYText ()[0];
}
@@ -382,12 +382,14 @@ My_lily_lexer::scan_escaped_word (String str)
if (notename_b (str))
{
yylval.pitch = new Musical_pitch (lookup_pitch (str));
+ yylval.pitch->set_spot (Input (source_file_l (),
+ here_ch_C ()));
return NOTENAME_PITCH;
}
}
if (check_debug)
print_declarations (true);
- String msg ("Unknown escaped string: `" + str + "'");
+ String msg (_f ("unknown escaped string: `\\%s\'", str));
LexerError (msg.ch_C ());
DOUT << "(string)";
String *sp = new String (str);
@@ -403,7 +405,8 @@ My_lily_lexer::scan_bare_word (String str)
if (notename_b (str)) {
DOUT << "(notename)\n";
yylval.pitch = new Musical_pitch (lookup_pitch (str));
-
+ yylval.pitch->set_spot (Input (source_file_l (),
+ here_ch_C ()));
return NOTENAME_PITCH;
}
}
diff --git a/lily/lexerinit.cc b/lily/lexerinit.cc
index 8b184bb7ad..ff16209eaf 100644
--- a/lily/lexerinit.cc
+++ b/lily/lexerinit.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <iostream.h>
diff --git a/lily/lily-version.cc b/lily/lily-version.cc
index b6a37c812b..18696cbd31 100644
--- a/lily/lily-version.cc
+++ b/lily/lily-version.cc
@@ -3,10 +3,8 @@
#include "config.hh"
#include "version.hh"
- #define VERSION_SZ MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL MY_PATCH_LEVEL
+#define VERSION_SZ MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL "." MY_PATCH_LEVEL
-//#define VERSION_SZ TOPLEVEL_VERSION
-//#define VERSION_SZ "version"
static char *s = "GNU LilyPond " VERSION_SZ ;
@@ -19,5 +17,5 @@ lily_version_number_sz()
char const *
lily_version_sz()
{
- return s;
+ return s;
}
diff --git a/lily/line-group-grav.cc b/lily/line-group-grav.cc
deleted file mode 100644
index 0ae8eca24e..0000000000
--- a/lily/line-group-grav.cc
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- staff-gravs.cc -- implement Line_group_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "staff-sym.hh"
-#include "vertical-group-spanner.hh"
-#include "command-request.hh"
-#include "bar.hh"
-#include "debug.hh"
-#include "line-group-grav.hh"
-#include "p-col.hh"
-
-Line_group_engraver::Line_group_engraver()
-{
- staffline_p_ =0;
-}
-
-void
-Line_group_engraver::acknowledge_element (Score_elem_info elem)
-{
- if (!elem.elem_l_->axis_group_l_a_[Y_AXIS])
- staffline_p_->add_element (elem.elem_l_);
-}
-
-
-void
-Line_group_engraver::do_removal_processing()
-{
- staffline_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
- typeset_element (staffline_p_);
- staffline_p_ = 0;
-}
-
-void
-Line_group_engraver::do_creation_processing()
-{
- create_line_spanner ();
- staffline_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
-
- // don't broadcast to self.
- announce_element (Score_elem_info (staffline_p_,0));
-}
-
-void
-Line_group_engraver::create_line_spanner ()
-{
- staffline_p_ = new Vertical_group_spanner ;
-}
-
-
-
-IMPLEMENT_IS_TYPE_B1(Line_group_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Line_group_engraver);
-
diff --git a/lily/line-group-group-engraver.cc b/lily/line-group-group-engraver.cc
new file mode 100644
index 0000000000..108e76c5c7
--- /dev/null
+++ b/lily/line-group-group-engraver.cc
@@ -0,0 +1,66 @@
+/*
+ staff-gravs.cc -- implement Line_group_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "staff-sym.hh"
+#include "vertical-group-spanner.hh"
+#include "command-request.hh"
+#include "bar.hh"
+#include "debug.hh"
+#include "line-group-group-engraver.hh"
+#include "p-col.hh"
+
+Line_group_engraver_group::Line_group_engraver_group()
+{
+ staffline_p_ =0;
+}
+
+
+void
+Line_group_engraver_group::typeset_element (Score_element *elem)
+{
+ if (!elem->axis_group_l_a_[Y_AXIS])
+ staffline_p_->add_element (elem);
+ Engraver_group_engraver::typeset_element (elem);
+}
+
+
+void
+Line_group_engraver_group::do_removal_processing()
+{
+ Engraver_group_engraver::do_removal_processing ();
+
+ staffline_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
+ Engraver_group_engraver::typeset_element (staffline_p_);
+ staffline_p_ = 0;
+}
+
+void
+Line_group_engraver_group::do_creation_processing()
+{
+ create_line_spanner ();
+ staffline_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
+
+ Engraver::announce_element (Score_element_info (staffline_p_,0));
+}
+
+void
+Line_group_engraver_group::create_line_spanner ()
+{
+ staffline_p_ = new Vertical_group_spanner ;
+}
+
+void
+Line_group_engraver_group::do_announces ()
+{
+ Engraver_group_engraver::do_announces ();
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Line_group_engraver_group,Engraver_group_engraver);
+ADD_THIS_TRANSLATOR(Line_group_engraver_group);
+
diff --git a/lily/scoreline.cc b/lily/line-of-score.cc
index 77eeead39e..164d07937f 100644
--- a/lily/scoreline.cc
+++ b/lily/line-of-score.cc
@@ -3,11 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "scoreline.hh"
-#include "dimen.hh"
+#include "line-of-score.hh"
+#include "dimension.hh"
#include "spanner.hh"
#include "atom.hh"
#include "paper-def.hh"
@@ -24,7 +24,7 @@ Line_of_score::Line_of_score()
IMPLEMENT_IS_TYPE_B1(Line_of_score,Spanner);
void
-Line_of_score::add (Score_elem*e)
+Line_of_score::add_element (Score_element*e)
{
// avoid excess dependencies.
if (!(e->axis_group_l_a_[0] || e->axis_group_l_a_[1]))
@@ -38,7 +38,7 @@ Line_of_score::contains_b (Paper_column const* c) const
}
void
-Line_of_score::set_breaking (Array<Col_hpositions> const &breaking)
+Line_of_score::set_breaking (Array<Column_x_positions> const &breaking)
{
for (int j=0; j < breaking.size(); j++)
{
@@ -54,7 +54,7 @@ Line_of_score::set_breaking (Array<Col_hpositions> const &breaking)
if (breaking.size() >1)
{
- line_p = (Line_of_score*)clone()->spanner ();
+ line_p = (Line_of_score*)clone()->access_Spanner ();
line_l = line_p;
}
else
@@ -114,10 +114,10 @@ Line_of_score::do_width() const
return Spanner::do_width();
}
-Link_array<Score_elem>
+Link_array<Score_element>
Line_of_score::get_extra_dependencies () const
{
- Link_array<Score_elem> r;
+ Link_array<Score_element> r;
for (int i=0; i < cols.size (); i++)
r.push (cols[i]);
return r;
diff --git a/lily/line-spacer.cc b/lily/line-spacer.cc
index 95b77e24c6..ffd65ff34e 100644
--- a/lily/line-spacer.cc
+++ b/lily/line-spacer.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/linear-programming.cc b/lily/linear-programming.cc
index eed55a9b37..6ccc0b31e4 100644
--- a/lily/linear-programming.cc
+++ b/lily/linear-programming.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/local-key-grav.cc b/lily/local-key-engraver.cc
index 8e492b621a..222d25beb8 100644
--- a/lily/local-key-grav.cc
+++ b/lily/local-key-engraver.cc
@@ -1,14 +1,14 @@
/*
local-key-reg.cc -- implement Local_key_engraver
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "musical-request.hh"
#include "command-request.hh"
-#include "local-key-grav.hh"
+#include "local-key-engraver.hh"
#include "local-key-item.hh"
-#include "key-grav.hh"
+#include "key-engraver.hh"
#include "debug.hh"
#include "key-item.hh"
#include "tie.hh"
@@ -26,12 +26,17 @@ Local_key_engraver::Local_key_engraver()
void
Local_key_engraver::do_creation_processing ()
{
+ /*
+ UGHGUHGUH.
+
+ Breaks if Key_engraver is removed from under us.
+ */
Translator * result =
daddy_grav_l()->get_simple_translator (Key_engraver::static_name());
if (!result)
{
- warning ("Out of tune! Can't find key engraver");
+ warning (_ ("out of tune") + "! " + _ ("can't find") + " Key_engraver");
}
else
{
@@ -59,19 +64,13 @@ Local_key_engraver::process_acknowledged ()
continue;
if (!key_item_p_)
{
- int c0_i=0;
-
- Staff_info inf = get_staff_info();
- if (inf.c0_position_i_l_)
- c0_i = *get_staff_info().c0_position_i_l_;
-
- key_item_p_ = new Local_key_item (c0_i);
- announce_element (Score_elem_info (key_item_p_, 0));
+ key_item_p_ = new Local_key_item;
+ announce_element (Score_element_info (key_item_p_, 0));
}
key_item_p_->add (note_l->pitch_);
key_item_p_->add_support (support_l);
local_key_.set (note_l->pitch_);
- }
+ }
}
}
@@ -95,25 +94,27 @@ Local_key_engraver::do_pre_move_processing()
}
void
-Local_key_engraver::acknowledge_element (Score_elem_info info)
+Local_key_engraver::acknowledge_element (Score_element_info info)
{
- Score_elem * elem_l = info.elem_l_;
- if (info.req_l_->musical() && info.req_l_->musical ()->note ())
- {
- Note_req * note_l = info.req_l_->musical()->note ();
- Item * item_l = info.elem_l_->item();
+ Score_element * elem_l = info.elem_l_;
+ Item * item_l = elem_l->access_Item();
+ Note_req * note_l = (info.req_l_->access_Musical_req ())
+ ? info.req_l_->access_Musical_req ()->access_Note_req () : 0;
+
+ if (note_l && item_l && item_l->is_type_b (Note_head::static_name ()))
+ {
mel_l_arr_.push (note_l);
support_l_arr_.push (item_l);
}
- else if (info.req_l_->command()
- && info.req_l_->command()->keychange () && key_C_)
+ else if (info.req_l_->access_Command_req ()
+ && info.req_l_->access_Command_req ()->access_Key_change_req () && key_C_)
{
local_key_ = *key_C_;
}
else if (elem_l->is_type_b (Tie::static_name ()))
{
- Tie * tie_l = (Tie*)elem_l->spanner();
+ Tie * tie_l = (Tie*)elem_l->access_Spanner ();
if (tie_l->same_pitch_b_)
tied_l_arr_.push (tie_l-> head_l_drul_[RIGHT]);
}
diff --git a/lily/local-key-item.cc b/lily/local-key-item.cc
index c4041f0b92..3791f48b97 100644
--- a/lily/local-key-item.cc
+++ b/lily/local-key-item.cc
@@ -3,9 +3,9 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "dimen.hh"
+#include "dimension.hh"
#include "local-key-item.hh"
#include "molecule.hh"
#include "scalar.hh"
@@ -15,9 +15,9 @@
#include "note-head.hh"
#include "misc.hh"
-Local_key_item::Local_key_item (int i)
+Local_key_item::Local_key_item ()
{
- c0_position = i;
+ c0_position_i_ = 0;
}
void
@@ -61,14 +61,14 @@ Local_key_item::brew_molecule_p() const
{
Real dy =lastoct*7*paper()->internote_f ();
octave_mol_p->translate_axis (dy, Y_AXIS);
- output->add (*octave_mol_p);
+ output->add_molecule (*octave_mol_p);
delete octave_mol_p;
}
octave_mol_p= new Molecule;
}
lastoct = accs[i].octave_i_;
- Real dy = (accs[i].notename_i_ + c0_position) * paper()->internote_f ();
- Atom a (paper()->lookup_l ()->accidental (accs[i].accidental_i_));
+ Real dy = (accs[i].notename_i_ + c0_position_i_) * paper()->internote_f ();
+ Atom a (lookup_l ()->accidental (accs[i].accidental_i_));
a.translate_axis (dy, Y_AXIS);
Molecule m(a);
@@ -79,21 +79,21 @@ Local_key_item::brew_molecule_p() const
{
Real dy =lastoct*7*paper()->internote_f ();
octave_mol_p->translate_axis (dy, Y_AXIS);
- output->add (*octave_mol_p);
+ output->add_molecule (*octave_mol_p);
delete octave_mol_p;
}
if (accs.size())
{
Box b(Interval (0, paper()->internote_f ()), Interval (0,0));
- Molecule m (paper()->lookup_l ()->fill (b));
+ Molecule m (lookup_l ()->fill (b));
output->add_at_edge (X_AXIS, RIGHT, m);
}
Interval x_int;
for (int i=0; i < support_items_.size(); i++)
{
- Axis_group_element *common =
+ Graphical_axis_group *common =
common_group (support_items_[i], X_AXIS);
Real x = support_items_[i]->relative_coordinate (common, X_AXIS)
@@ -112,10 +112,10 @@ Local_key_item::brew_molecule_p() const
IMPLEMENT_IS_TYPE_B1(Local_key_item,Item);
void
-Local_key_item::do_substitute_dependency (Score_elem*o,Score_elem*n)
+Local_key_item::do_substitute_dependency (Score_element*o,Score_element*n)
{
- Item* o_l = o->item();
- Item* n_l = n?n->item():0;
+ Item* o_l = o->access_Item ();
+ Item* n_l = n?n->access_Item ():0;
support_items_.substitute (o_l, n_l);
}
diff --git a/lily/lookup.cc b/lily/lookup.cc
index 2a446f01a7..0d21c2c448 100644
--- a/lily/lookup.cc
+++ b/lily/lookup.cc
@@ -3,10 +3,10 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
TODO
- This doth suck. We should have PS output, and read spacing info from TFMs
+ This doth suck. We should have PS output, and read spacing info from AFMs
Glissando,
@@ -15,7 +15,7 @@
#include "lookup.hh"
#include "debug.hh"
#include "symtable.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "tex.hh"
#include "scalar.hh"
#include "paper-def.hh"
@@ -25,21 +25,46 @@
Lookup::Lookup()
{
paper_l_ = 0;
- texsetting = "\\unknowntexsetting";
symtables_p_ = new Symtables;
+ afm_p_ =0;
}
Lookup::Lookup (Lookup const &s)
{
+ font_ = s.font_;
+ font_path_ = s.font_path_;
paper_l_ = s.paper_l_;
- texsetting = s.texsetting;
symtables_p_ = new Symtables (*s.symtables_p_);
+ afm_p_ = 0;
}
+
Lookup::~Lookup()
{
+ delete afm_p_;
delete symtables_p_;
}
+Atom
+Lookup::afm_find (String s) const
+{
+ if (!afm_p_)
+ {
+ *mlog << "[" << 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 ());
+ a.dim_ = m.B_;
+ a.dim_[X_AXIS] *= 1 / 1000.0;
+ a.dim_[Y_AXIS] *= 1 / 1000.0;
+ a.font_ = font_;
+ return a;
+}
+
void
Lookup::add (String s, Symtable*p)
{
@@ -50,25 +75,23 @@ void
Lookup::print() const
{
#ifndef NPRINT
- DOUT << "Lookup: " << texsetting << " {\n";
+ DOUT << "Lookup {\n";
symtables_p_->print();
DOUT << "}\n";
#endif
}
Atom
-Lookup::text (String style, String text, int dir) const
+Lookup::text (String style, String text) const
{
Array<String> a;
a.push (text);
Atom tsym = (*symtables_p_)("style")->lookup (style);
- a[0] = substitute_args (tsym.tex_,a);
+ tsym.tex_ = substitute_args (tsym.tex_,a);
+ tsym.font_ = font_;
- Atom s = (*symtables_p_)("align")->lookup (dir);
- s.tex_ = substitute_args (s.tex_,a);
- s.dim_ = tsym.dim_;
- return s;
+ return tsym;
}
@@ -79,28 +102,34 @@ Lookup::ball (int j) const
if (j > 2)
j = 2;
- Symtable * st = (*symtables_p_)("balls");
- return st->lookup (String (j));
+ Atom s = afm_find (String ("balls") + String ("-") + to_str (j));
+ return s;
}
Atom
Lookup::rest (int j, bool o) const
{
- return (*symtables_p_)("rests")->lookup (String (j) + (o ? "o" : ""));
+ Atom s =afm_find (String ("rests")
+ + String ("-") + to_str (j) + (o ? "o" : ""));
+
+ return s;
}
Atom
Lookup::fill (Box b) const
{
- Atom s ((*symtables_p_)("param")->lookup ("fill"));
+ Atom s;
+ s.tex_ = "";
s.dim_ = b;
+
return s;
}
Atom
Lookup::accidental (int j) const
{
- return (*symtables_p_)("accidentals")->lookup (String (j));
+ Atom s= afm_find (String ("accidentals") + String ("-") + to_str (j));
+ return s;
}
@@ -112,38 +141,47 @@ Lookup::bar (String s, Real h) const
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;
}
Atom
-Lookup::script (String s) const
+Lookup::script (String st) const
{
- return (*symtables_p_)("scripts")->lookup (s);
+ Atom s= afm_find (String ("scripts") + String ("-") + st);
+
+ return s;
}
Atom
-Lookup::dynamic (String s) const
+Lookup::dynamic (String st) const
{
- return (*symtables_p_)("dynamics")->lookup (s);
+ return (*symtables_p_) ("dynamics")->lookup (st);
}
Atom
-Lookup::clef (String s) const
+Lookup::clef (String st) const
{
- return (*symtables_p_)("clefs")->lookup (s);
+ Atom s=afm_find (String ("clefs") + String ("-") + st);
+
+ return s;
}
Atom
Lookup::dots () const
{
- return (*symtables_p_)("dots")->lookup ("dot");
+ Atom s=afm_find (String ("dots") + String ("-") + String("dot"));
+
+ return s;
}
Atom
Lookup::flag (int j, Direction d) const
{
char c = (d == UP) ? 'u' : 'd';
- return (*symtables_p_)("flags")->lookup (c + String (j));
+ Atom s=afm_find (String ("flags") + String ("-") + to_str (c) + to_str (j));
+
+ return s;
}
Atom
@@ -176,6 +214,7 @@ Lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const
s.dim_[X_AXIS] = Interval (0, dx);
s.dim_[Y_AXIS] = Interval (0 <? dy, 0 >? dy);
+ s.font_ = font_;
return s;
}
@@ -195,7 +234,7 @@ Lookup::slur (Array<Offset> controls) const
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 ()) + " ";
@@ -210,7 +249,9 @@ Lookup::slur (Array<Offset> controls) const
s.dim_[X_AXIS] = Interval (0, dx);
s.dim_[Y_AXIS] = Interval (0 <? dy, 0 >? dy);
+ s.font_ = font_;
return s;
+
}
Atom
@@ -219,9 +260,7 @@ Lookup::streepje (int type) const
if (type > 2)
type = 2;
- Symtable * st = (*symtables_p_)("balls");
-
- return st->lookup (String (type) + 'l');
+ return afm_find ("balls" + String ("-") +to_str (type) + "l");
}
Atom
@@ -231,24 +270,25 @@ Lookup::hairpin (Real width, bool decresc, bool continued) const
Atom ret;
Real height = paper_l_->staffheight_f () / 6;
embed = "\\embeddedps{\n" ;
- embed += String (width) + " "
- + String (height) + " "
- + String (continued ? height/2 : 0) +
+ 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
-Lookup::meter (Array<Scalar> a) const
+Lookup::time_signature (Array<Scalar> a) const
{
- Atom s((*symtables_p_)("param")->lookup ("meter"));
+ Atom s((*symtables_p_)("param")->lookup ("time_signature"));
s.tex_ = substitute_args (s.tex_,a);
+
return s;
}
@@ -273,6 +313,7 @@ Lookup::stem (Real y1,Real y2) const
String src = (*symtables_p_)("param")->lookup ("stem").tex_;
s.tex_ = substitute_args (src,a);
+ s.font_ = font_;
return s;
}
@@ -282,7 +323,7 @@ Lookup::stem (Real y1,Real y2) const
Atom
Lookup::vbrace (Real &y) const
{
- Atom brace = (*symtables_p_)("param")->lookup ("brace");
+ Atom brace = (*symtables_p_) ("param")->lookup ( "brace");
Interval ydims = brace.dim_[Y_AXIS];
Real min_y = ydims[LEFT];
Real max_y = ydims[RIGHT];
@@ -290,12 +331,14 @@ Lookup::vbrace (Real &y) const
if (y < min_y)
{
- warning (_("piano brace too small (") + print_dimen (y)+ ")");
+ warning (_ ("piano brace")
+ + " " + _ ("too small") + "(" + print_dimen (y) + ")");
y = min_y;
}
if (y > max_y)
{
- warning (_("piano brace too big (") + print_dimen (y)+ ")");
+ warning (_ ("piano brace")
+ + " " + _ ("too big") + "(" + print_dimen (y)+ ")");
y = max_y;
}
@@ -304,11 +347,13 @@ Lookup::vbrace (Real &y) const
{
Array<String> a;
- a.push (idx);
+ a.push (to_str (idx));
brace.tex_ = substitute_args (brace.tex_,a);
brace.dim_[Y_AXIS] = Interval (-y/2,y/2);
}
+ brace.font_ = font_;
+
return brace;
}
@@ -316,11 +361,19 @@ Atom
Lookup::vbracket (Real &y) const
{
Atom psbracket;
- psbracket.tex_ = String ("\\embeddedps{ ") + y + " draw_bracket}";
+ 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;
- Atom bracket = (*symtables_p_)("param")->lookup ("bracket");
+#if 0
+ Atom bracket = afm_find (String ("param") + "bracket");
Interval ydims = bracket.dim_[Y_AXIS];
Real min_y = ydims[LEFT];
@@ -329,12 +382,14 @@ Lookup::vbracket (Real &y) const
if (y < min_y)
{
- warning (_("bracket too small (") + print_dimen (y)+ ")");
+ warning (_ ("bracket")
+ + " " + _ ("too small") + "(" + print_dimen (y) + ")");
y = min_y;
}
if (y > max_y)
{
- warning (_("bracket too big (") + print_dimen (y)+ ")");
+ warning (_ ("bracket")
+ + " " + _ ("too big") + "(" + print_dimen (y)+ ")");
y = max_y;
}
@@ -343,11 +398,12 @@ Lookup::vbracket (Real &y) const
{
Array<String> a;
- a.push (idx);
+ 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 --git a/lily/lyric-grav.cc b/lily/lyric-engraver.cc
index 9c4cb14629..8ed3989043 100644
--- a/lily/lyric-grav.cc
+++ b/lily/lyric-engraver.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "lyric-engraver.hh"
@@ -23,10 +23,10 @@ Lyric_engraver::Lyric_engraver()
bool
Lyric_engraver::do_try_request (Request*r)
{
- Musical_req * m =r->musical();
- if (!m || ! m->lreq_l())
+ Musical_req * m =r->access_Musical_req ();
+ if (!m || ! m->access_Lyric_req ())
return false;
- lreq_l_ = m->lreq_l();
+ lreq_l_ = m->access_Lyric_req ();
return true;
}
@@ -36,12 +36,20 @@ Lyric_engraver::do_process_requests()
{
if (lreq_l_)
{
- lyric_item_p_ = new Text_item (lreq_l_->tdef_p_);
+ Text_def *td_p = new Text_def;
+ td_p->text_str_ = lreq_l_->text_str_;
+ td_p->align_dir_ = LEFT;
+ Scalar style = get_property ("textstyle");
+ if (style.length_i ())
+ {
+ td_p->style_str_ = style;
+ }
+
+ lyric_item_p_ = new Text_item (td_p);
- lyric_item_p_->translate_axis (paper()->note_width ()/2 , X_AXIS);
lyric_item_p_->dir_ = DOWN;
lyric_item_p_->fat_b_ = true;
- announce_element (Score_elem_info (lyric_item_p_, lreq_l_));
+ announce_element (Score_element_info (lyric_item_p_, lreq_l_));
}
}
@@ -56,17 +64,6 @@ Lyric_engraver::do_pre_move_processing()
{
if (lyric_item_p_)
{
- /*
- urg. should check-out deriving from staff/line spanner
- */
- if (experimental_features_global_b)
- {
- if (lyric_item_p_->tdef_p_->static_name () == Text_def::static_name ())
- {
- Text_def* t = (Text_def*)lyric_item_p_->tdef_p_;
- t->text_str_ += "\\hrule 1mm 10mm 20mm";
- }
- }
typeset_element (lyric_item_p_);
lyric_item_p_ =0;
}
diff --git a/lily/lyric-performer.cc b/lily/lyric-performer.cc
index d81875c95e..bcbbc9d501 100644
--- a/lily/lyric-performer.cc
+++ b/lily/lyric-performer.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "lyric-performer.hh"
@@ -29,25 +29,25 @@ Lyric_performer::do_print() const
{
#ifndef NPRINT
if (lreq_arr_.size())
- lreq_arr_[ 0 ]->print();
+ lreq_arr_[ 0 ]->print();
#endif
}
void
Lyric_performer::do_process_requests()
{
- if (lreq_arr_.size() && lreq_arr_[ 0 ]->tdef_p_->text_str_.length_i())
- play (new Audio_text (Audio_text::LYRIC, lreq_arr_[ 0 ]->tdef_p_->text_str_));
+ if (lreq_arr_.size() && lreq_arr_[0]->text_str_.length_i())
+ play (new Audio_text (Audio_text::LYRIC, lreq_arr_[ 0 ]->text_str_));
lreq_arr_.clear();
}
bool
Lyric_performer::do_try_request (Request* req_l)
{
- Musical_req* m_l = req_l->musical();
- if (!m_l || ! m_l->lreq_l())
- return false;
- lreq_arr_.push (m_l->lreq_l());
+ Musical_req* m_l = req_l->access_Musical_req ();
+ if (!m_l || ! m_l->access_Lyric_req ())
+ return false;
+ lreq_arr_.push (m_l->access_Lyric_req ());
return true;
}
diff --git a/lily/main.cc b/lily/main.cc
index bd5c6276de..379e4daa46 100644
--- a/lily/main.cc
+++ b/lily/main.cc
@@ -3,15 +3,16 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <stdlib.h>
#include <iostream.h>
#include <assert.h>
+#include <locale.h>
#include "proto.hh"
#include "plist.hh"
-#include "lgetopt.hh"
+#include "getopt-long.hh"
#include "misc.hh"
#include "string.hh"
#include "main.hh"
@@ -20,6 +21,10 @@
#include "file-results.hh"
#include "debug.hh"
+#if HAVE_GETTEXT
+#include <libintl.h>
+#endif
+
bool version_ignore_global_b = false;
bool no_paper_global_b = false;
@@ -27,15 +32,18 @@ bool no_timestamps_global_b = false;
bool find_quarts_global_b = false;
String default_outname_base_global = "lelie";
int default_count_global;
+File_path global_path;
+
bool experimental_features_global_b = false;
bool dependency_global_b = false;
int exit_status_i_;
-void destill_inname (String &name_str_r);
+String distill_inname_str (String name_str, String& ext_r);
Long_option_init theopts[] = {
+ {0, "about", 'a'},
{1, "output", 'o'},
{0, "warranty", 'w'},
{0, "help", 'h'},
@@ -46,7 +54,7 @@ Long_option_init theopts[] = {
{0, "no-paper", 'M'},
{0, "dependencies", 'd'},
{0, "no-timestamps", 'T'},
- {0, "find-quarts", 'Q'},
+ {0, "find-fourths", 'Q'},
{0, "ignore-version", 'V'},
{0,0,0}
};
@@ -54,25 +62,55 @@ Long_option_init theopts[] = {
void
usage ()
{
- cout <<
- _("Usage: lilypond [options] [mudela-files]\n"
- "Typeset and or produce midi output from mudela-file or stdin\n"
- "\n"
- "Options:\n"
+ cout << _f ("Usage: %s [OPTION]... [FILE]...", "lilypond") << '\n';
+ cout << _ ("Typeset music and or play MIDI from FILE or <stdin>");
+ cout << '\n';
+ cout << '\n';
+ cout << _ ("Options:");
+ cout << '\n';
+ cout << _ (
+ " -a, --about about LilyPond\n"
+ );
+ cout << _ (
" -D, --debug enable debugging output\n"
+ );
+ cout << _ (
" -d, --dependencies write Makefile dependencies for every input file\n"
- " -Q, --find-quarts show all intervals bigger than a quart\n"
+ );
+ cout << _ (
" -I, --include=DIR add DIR to search path\n"
+ );
+ cout << _ (
" -i, --init=FILE use FILE as init file\n"
+ );
+ cout << _ (
" -h, --help this help\n"
+ );
+ cout << _ (
" -M, --no-paper produce midi output only\n"
- " -o, --output=FILE set FILE as default output\n"
+ );
+ cout << _ (
+ " -o, --output=FILE set FILE as default output base\n"
+ );
+ cout << _ (
+ " -Q, --find-fourths show all intervals greater than a fourth\n"
+ );
+ cout << _ (
" -t, --test switch on experimental features\n"
+ );
+ cout << _ (
" -T, --no-timestamps don't timestamp the output\n"
+ );
+ cout << _ (
" -V, --ignore-version ignore mudela version\n"
+ );
+ cout << _ (
" -w, --warranty show warranty and copyright\n"
- "\n"
- "GNU LilyPond was compiled with the following settings:\n")
+ );
+ cout << '\n';
+ cout << _ ("GNU LilyPond was compiled with the following settings:");
+ cout << '\n';
+ cout <<
#ifdef NDEBUG
"NDEBUG "
#endif
@@ -82,7 +120,9 @@ usage ()
#ifdef STRING_UTILS_INLINED
"STRING_UTILS_INLINED "
#endif
- "datadir= " DIR_DATADIR
+ "datadir=" DIR_DATADIR
+ " "
+ "localedir=" DIR_LOCALEDIR
"\n";
@@ -90,15 +130,34 @@ usage ()
}
void
+about ()
+{
+ cout << '\n';
+ cout <<
+ #include "BLURB.hh"
+ cout << '\n';
+ cout << _ ("GNU LilyPond is Free software, see --warranty");
+ cout << '\n';
+ cout << '\n';
+ cout << _f ("Copyright (c) %s by", "1996, 1997, 1998");
+ cout << '\n';
+ cout << " " + _ ("Han-Wen Nienhuys <hanwen@cs.uu.nl>") + "\n";
+ cout << " " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
+ cout << '\n';
+}
+
+void
notice ()
{
- cout <<
- _("\n"
- "GNU LilyPond -- The GNU Project music typesetter.\n"
- "Copyright 1996, 97, 98 by\n"
- " Han-Wen Nienhuys <hanwen@stack.nl>\n"
- " Jan Nieuwenhuizen <jan@digicash.com>\n"
- "\n"
+ cout << '\n';
+ cout << _ ("GNU LilyPond -- The GNU Project music typesetter");
+ cout << '\n';
+ cout << _f ("Copyright (c) %s by", "1996, 1997, 1998");
+ cout << '\n';
+ cout << " " + _ ("Han-Wen Nienhuys <hanwen@cs.uu.nl>") + "\n";
+ cout << " " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
+ cout << '\n';
+ cout << _ (
" This program is free software; you can redistribute it and/or\n"
"modify it under the terms of the GNU General Public License version 2\n"
"as published by the Free Software Foundation.\n"
@@ -114,38 +173,43 @@ notice ()
"USA.\n");
}
-
- File_path path;
-
-
void
identify ()
{
- cout << get_version_str () << endl;
+ *mlog << get_version_str () << endl;
}
int
main (int argc, char **argv)
{
+
+#if HAVE_GETTEXT
+ setlocale (LC_ALL, "");
+// setlocale (LC_MESSAGES, "");
+ String name (PACKAGE);
+ name.to_lower ();
+ bindtextdomain (name.ch_C (), DIR_LOCALEDIR);
+ textdomain (name.ch_C ());
+#endif
+
identify ();
call_constructors ();
debug_init (); // should be first
-
-
- path.add ("");
+ global_path.add ("");
// must override (come before) "/usr/local/share/lilypond"!
char const *env_sz = getenv ("LILYINCLUDE");
if (env_sz)
- path.parse_path (env_sz);
+ global_path.parse_path (env_sz);
- path.add (String (DIR_DATADIR) + "/init/");
+ global_path.add (String (DIR_DATADIR) + "/init/");
- path.push (DIR_DATADIR);
+ global_path.push (DIR_DATADIR);
Getopt_long oparser (argc, argv,theopts);
- String init_str ("lily-init.ly");
+ String init_str;
+ String outname_str;
while (Long_option_init const * opt = oparser ())
{
switch (opt->shortname)
@@ -154,7 +218,7 @@ main (int argc, char **argv)
experimental_features_global_b = true;
break;
case 'o':
- default_outname_base_global = oparser.optional_argument_ch_C_;
+ outname_str = oparser.optional_argument_ch_C_;
break;
case 'w':
notice ();
@@ -164,11 +228,14 @@ main (int argc, char **argv)
find_quarts_global_b = true;
break;
case 'I':
- path.push (oparser.optional_argument_ch_C_);
+ global_path.push (oparser.optional_argument_ch_C_);
break;
case 'i':
init_str = oparser.optional_argument_ch_C_;
break;
+ case 'a':
+ about ();
+ exit (0);
case 'h':
usage ();
exit (0);
@@ -194,39 +261,83 @@ main (int argc, char **argv)
}
}
+ default_outname_base_global = "lelie";
+
+
+
int p=0;
const char *arg ;
while ((arg= oparser.get_next_arg ()))
{
String f (arg);
- destill_inname (f);
- do_one_file (init_str,f);
+ String i;
+ f = distill_inname_str (f, i);
+ if (f == "-")
+ default_outname_base_global = "-";
+ else
+ {
+ String a,b,c,d;
+ split_path (f, a, b, c, d);
+ default_outname_base_global = c;
+ }
+ if (outname_str.length_i ())
+ default_outname_base_global = outname_str;
+ if (init_str.length_i ())
+ i = init_str;
+ else
+ i = "init" + i;
+ do_one_file (i, f);
p++;
}
if (!p)
{
- do_one_file (init_str, "");
+ String i;
+ if (init_str.length_i ())
+ i = init_str;
+ else
+ i = "init.ly";
+ default_outname_base_global = "-";
+ if (outname_str.length_i ())
+ default_outname_base_global = outname_str;
+ do_one_file (i, default_outname_base_global);
}
return exit_status_i_;
}
-/// make input file name: add default extension. "" is stdin.
-void
-destill_inname (String &name_str_r)
+/*
+ urg: make input file name:
+ input: file name
+ output: file name with added default extension. "" is stdin.
+ in reference argument: the extention. ".ly" if none
+ */
+
+String
+distill_inname_str (String name_str, String& ext_r)
{
- if (name_str_r.length_i ())
+ String str = name_str;
+ if (str.length_i ())
{
- if (name_str_r[ 0 ] != '-')
+ if (str != "-")
{
- String a,b,c,d;
- split_path (name_str_r,a,b,c,d);
+ String a,b,c;
+ split_path (str,a,b,c,ext_r);
// add extension if not present.
- if (d.empty_b ())
- d = ".ly";
- name_str_r = a+b+c+d;
+ if (ext_r.empty_b ())
+ {
+ ext_r = ".fly";
+ if (global_path.find (a+b+c+ext_r).empty_b ())
+ ext_r = ".ly";
+ }
+ str = a+b+c+ext_r;
}
}
- else name_str_r = "";
+ else
+ {
+ str = "-";
+ ext_r = ".ly";
+ }
+ return str;
}
+
diff --git a/lily/meter-grav.cc b/lily/meter-grav.cc
deleted file mode 100644
index f14d00a4ed..0000000000
--- a/lily/meter-grav.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- meter-reg.cc -- implement Meter_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "meter-grav.hh"
-#include "meter.hh"
-#include "command-request.hh"
-#include "timing-grav.hh"
-#include "engraver-group.hh"
-
-Meter_engraver::Meter_engraver()
-{
- meter_p_ =0;
-}
-
-void
-Meter_engraver::do_process_requests()
-{
- Translator * result =
- daddy_grav_l()->get_simple_translator (Timing_engraver::static_name());
-
- if (!result)
- {
- warning ("Lost in time: can't find Timing_translator");
- return ;
- }
-
- Timing_engraver * timing_grav_l= (Timing_engraver*) result->engraver_l ();
-
- Meter_change_req *req = timing_grav_l->meter_req_l();
- if (req)
- {
- Array<Scalar> args;
- args.push (req->beats_i_);
- args.push (req->one_beat_i_);
-
- meter_p_ = new Meter (args);
- meter_p_->break_priority_i_ = 1; // ugh
- }
-
- if (meter_p_)
- announce_element (Score_elem_info (meter_p_, req));
-}
-
-void
-Meter_engraver::do_pre_move_processing()
-{
- if (meter_p_)
- {
- typeset_element (meter_p_);
- meter_p_ =0;
- }
-}
-
-
-ADD_THIS_TRANSLATOR(Meter_engraver);
-IMPLEMENT_IS_TYPE_B1(Meter_engraver,Engraver);
diff --git a/lily/meter-performer.cc b/lily/meter-performer.cc
deleted file mode 100644
index 44849ab744..0000000000
--- a/lily/meter-performer.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- meter-performer.cc -- implement Meter_performer
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
-*/
-
-#include "meter-performer.hh"
-#include "command-request.hh"
-#include "audio-item.hh"
-
-IMPLEMENT_IS_TYPE_B1(Meter_performer,Performer);
-ADD_THIS_TRANSLATOR(Meter_performer);
-
-Meter_performer::Meter_performer()
-{
- meter_req_l_ = 0;
-}
-
-Meter_performer::~Meter_performer()
-{
-}
-
-void
-Meter_performer::do_print() const
-{
-#ifndef NPRINT
- if (meter_req_l_)
- meter_req_l_->print();
-#endif
-}
-
-void
-Meter_performer::do_process_requests()
-{
- if (meter_req_l_)
- play (new Audio_meter (meter_req_l_));
- meter_req_l_ = 0;
-}
-
-bool
-Meter_performer::do_try_request (Request* req_l)
-{
- if (meter_req_l_)
- return false;
-
- if (req_l->command())
- meter_req_l_ = req_l->command()->meterchange ();
-
- if (meter_req_l_)
- return true;
-
- return false;
-}
-
diff --git a/lily/midi-def.cc b/lily/midi-def.cc
index 6eff15ea8e..202205d089 100644
--- a/lily/midi-def.cc
+++ b/lily/midi-def.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <math.h>
diff --git a/lily/midi-item.cc b/lily/midi-item.cc
index 543e8c0886..525140102e 100644
--- a/lily/midi-item.cc
+++ b/lily/midi-item.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "proto.hh"
@@ -25,7 +25,7 @@ IMPLEMENT_IS_TYPE_B1 (Midi_duration, Midi_item);
IMPLEMENT_IS_TYPE_B1 (Midi_header, Midi_chunk);
IMPLEMENT_IS_TYPE_B1 (Midi_instrument, Midi_item);
IMPLEMENT_IS_TYPE_B1 (Midi_key,Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_meter, Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_time_signature, Midi_item);
IMPLEMENT_IS_TYPE_B1 (Midi_note, Midi_item);
IMPLEMENT_IS_TYPE_B1 (Midi_note_off, Midi_item);
IMPLEMENT_IS_TYPE_B1 (Midi_tempo, Midi_item);
@@ -79,7 +79,7 @@ Midi_duration::Midi_duration (Real seconds_f)
String
Midi_duration::str () const
{
- return String ("<duration: ") + String (seconds_f_) + ">";
+ return String ("<duration: ") + to_str (seconds_f_) + ">";
}
Midi_event::Midi_event (Moment delta_mom, Midi_item* mitem_p)
@@ -312,8 +312,8 @@ Midi_instrument::str () const
break;
}
- String str = String ( (char) (0xc0 + channel_i_));
- str += String ( (char)program_byte);
+ String str = to_str ((char) (0xc0 + channel_i_));
+ str += to_str ((char)program_byte);
return str;
}
@@ -337,7 +337,7 @@ Midi_item::i2varint_str (int i)
String str;
while (1)
{
- str += (char)buffer_i;
+ str += to_str ((char)buffer_i);
if (buffer_i & 0x80)
buffer_i >>= 8;
else
@@ -354,13 +354,17 @@ Midi_key::Midi_key (Audio_item* audio_item_l)
String
Midi_key::str () const
{
- Key_change_req* k = audio_item_l_->req_l_->command ()->keychange ();
+ Key_change_req* k = audio_item_l_->req_l_->access_Command_req ()->access_Key_change_req ();
int sharps_i = k->sharps_i ();
int flats_i = k->flats_i ();
// midi cannot handle non-conventional keys
if (flats_i && sharps_i)
- return "";
+ {
+ String str = _f ("unconventional key: flats: %d, sharps: %d", flats_i,
+ sharps_i);
+ flats_i = sharps_i = 0;
+ }
int accidentals_i = sharps_i - flats_i;
String str = "ff5902";
@@ -370,16 +374,16 @@ Midi_key::str () const
return String_convert::hex2bin_str (str);
}
-Midi_meter::Midi_meter (Audio_item* audio_item_l)
+Midi_time_signature::Midi_time_signature (Audio_item* audio_item_l)
: Midi_item (audio_item_l)
{
clocks_per_1_i_ = 18;
}
String
-Midi_meter::str () const
+Midi_time_signature::str () const
{
- Meter_change_req* m = audio_item_l_->req_l_->command ()->meterchange ();
+ Time_signature_change_req* m = audio_item_l_->req_l_->access_Command_req ()->access_Time_signature_change_req ();
int num_i = m->beats_i_;
int den_i = m->one_beat_i_;
@@ -400,28 +404,39 @@ Midi_note::Midi_note (Audio_item* audio_item_l)
Moment
Midi_note::duration () const
{
- return audio_item_l_->req_l_->musical ()->rhythmic ()->duration ();
+ Moment m = audio_item_l_->req_l_->access_Musical_req ()->access_Rhythmic_req ()->duration ();
+ if (m < Moment (1, 1000))
+ {
+ warning (_ ("silly duration"));
+ m = 1;
+ }
+ return m;
}
int
Midi_note::pitch_i () const
{
- return audio_item_l_->req_l_->musical ()->melodic ()->pitch_.semitone_pitch ();
+ int p = audio_item_l_->req_l_->access_Musical_req ()->access_Melodic_req
+ ()->pitch_.semitone_pitch ()
+ + ((Audio_note*)audio_item_l_)->transposing_i_;
+ if (p == INT_MAX)
+ {
+ warning (_ ("silly pitch"));
+ p = 0;
+ }
+ return p;
}
String
Midi_note::str () const
{
- if (pitch_i () == INT_MAX)
- return String ("");
-
Byte status_byte = (char) (0x90 + channel_i_);
- String str = String ( (char)status_byte);
- str += (char) (pitch_i () + c0_pitch_i_c_);
+ String str = to_str ((char)status_byte);
+ str += to_str ((char) (pitch_i () + c0_pitch_i_c_));
// poor man's staff dynamics:
- str += (char) (dynamic_byte_ - 0x10 * channel_i_);
+ str += to_str ((char) (dynamic_byte_ - 0x10 * channel_i_));
return str;
}
@@ -437,20 +452,19 @@ Midi_note_off::Midi_note_off (Midi_note* midi_note_l)
int
Midi_note_off::pitch_i () const
{
- return audio_item_l_->req_l_->musical ()->melodic ()->pitch_.semitone_pitch ();
+ return audio_item_l_->req_l_->access_Musical_req ()->access_Melodic_req
+ ()->pitch_.semitone_pitch ()
+ + ((Audio_note*)audio_item_l_)->transposing_i_;
}
String
Midi_note_off::str () const
{
- if (pitch_i () == INT_MAX)
- return String ("");
-
Byte status_byte = (char) (0x80 + channel_i_);
- String str = String ( (char)status_byte);
- str += (char) (pitch_i () + Midi_note::c0_pitch_i_c_);
- str += (char)aftertouch_byte_;
+ String str = to_str ((char)status_byte);
+ str += to_str ((char) (pitch_i () + Midi_note::c0_pitch_i_c_));
+ str += to_str ((char)aftertouch_byte_);
return str;
}
diff --git a/lily/midi-stream.cc b/lily/midi-stream.cc
index 89aab84a8b..caeeae55c6 100644
--- a/lily/midi-stream.cc
+++ b/lily/midi-stream.cc
@@ -3,7 +3,7 @@
//
// source file of the GNU LilyPond music typesetter
//
-// (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+// (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
#include <fstream.h>
#include "string.hh"
@@ -72,7 +72,7 @@ Midi_stream::operator << (int i)
void
Midi_stream::open ()
{
- os_p_ = new ofstream (filename_str_.ch_C ());
+ os_p_ = new ofstream (filename_str_.ch_C (),ios::out|ios::bin);
if (!*os_p_)
- error (_ ("can't open `") + filename_str_ + "\'");
+ error (_f ("can't open file: `%s\'", filename_str_));
}
diff --git a/lily/midi-walker.cc b/lily/midi-walker.cc
index 75f7af9321..81489c2ad0 100644
--- a/lily/midi-walker.cc
+++ b/lily/midi-walker.cc
@@ -3,8 +3,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "midi-walker.hh"
@@ -48,13 +48,16 @@ Midi_walker::do_start_note (Midi_note* note_p)
Moment stop_mom = note_p->duration() + ptr ()->audio_column_l_->at_mom ();
for (int i=0; i < stop_note_queue.size(); i++)
{
- if (stop_note_queue[ i ].val->pitch_i() == note_p->pitch_i ())
- {
- if (stop_note_queue[ i ].key < stop_mom)
- stop_note_queue[ i ].ignore_b_ = true;
- else // skip the stopnote
- return;
+ if (stop_note_queue[ i ].val->pitch_i() == note_p->pitch_i ())
+ {
+ if (stop_note_queue[ i ].key < stop_mom)
+ stop_note_queue[ i ].ignore_b_ = true;
+ else {
+ // skip the stopnote
+ delete note_p;
+ return;
}
+ }
}
Midi_note_event e;
@@ -73,14 +76,17 @@ Midi_walker::do_stop_notes (Moment max_mom)
{
while (stop_note_queue.size() && stop_note_queue.front ().key <= max_mom)
{
- Midi_note_event e = stop_note_queue.get();
- if (e.ignore_b_)
- continue;
+ Midi_note_event e = stop_note_queue.get();
+ if (e.ignore_b_)
+ {
+ delete e.val;
+ continue;
+ }
+
+ Moment stop_mom = e.key;
+ Midi_note_off* note_p = e.val;
- Moment stop_mom = e.key;
- Midi_note_off* note_p = e.val;
-
- output_event (stop_mom, note_p);
+ output_event (stop_mom, note_p);
}
}
@@ -102,12 +108,12 @@ Midi_walker::process()
Midi_item* p = ptr()->midi_item_p ();
if (!p)
- return;
+ return;
p->channel_i_ = track_l_->number_i_;
if (p->name() != Midi_note::static_name ())
- output_event (ptr()->audio_column_l_->at_mom (), p);
+ output_event (ptr()->audio_column_l_->at_mom (), p);
else
- do_start_note ((Midi_note*)p);
+ do_start_note ((Midi_note*)p);
}
diff --git a/lily/misc.cc b/lily/misc.cc
index c9cb8e5dcf..381635b46d 100644
--- a/lily/misc.cc
+++ b/lily/misc.cc
@@ -3,8 +3,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998, 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <math.h>
@@ -118,4 +118,3 @@ quantise_iv (Array<Real> const& positions, Real period, Real x)
return iv;
}
-
diff --git a/lily/qlp.cc b/lily/mixed-qp.cc
index f77534e3e4..33ff24542a 100644
--- a/lily/qlp.cc
+++ b/lily/mixed-qp.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "debug.hh"
@@ -54,36 +54,6 @@ Mixed_qp::solve (Vector start) const
}
-void
-Ineq_constrained_qp::assert_solution (Vector sol) const
-{
- Array<int> binding;
- for (int i=0; i < cons_.size(); i++)
- {
- Real R=cons_[i] * sol- consrhs_[i];
- assert (R> -EPS);
- if (R < EPS)
- binding.push (i);
- }
- // KKT check...
- // todo
-}
-
-void
-Ineq_constrained_qp::print() const
-{
-#ifndef NPRINT
- DOUT << "Quad " << quad_;
- DOUT << "lin " << lin_ <<"\n"
- << "const " << const_term_<<"\n";
- for (int i=0; i < cons_.size(); i++)
- {
- DOUT << "constraint["<<i<<"]: " << cons_[i] << " >= " << consrhs_[i];
- DOUT << "\n";
- }
-#endif
-}
-
Mixed_qp::Mixed_qp (int n)
: Ineq_constrained_qp (n)
{
@@ -105,7 +75,7 @@ Mixed_qp::print() const
Ineq_constrained_qp::print();
for (int i=0; i < eq_cons.size(); i++)
{
- DOUT << "eq cons "<<i<<": x["<<eq_cons[i]<<"] == " << eq_consrhs[i]<<"\n";
+ DOUT << "eq cons "<<i<<": x["<<eq_cons[i]<<"] == " << eq_consrhs[i]<< '\n';
}
#endif
}
diff --git a/lily/molecule.cc b/lily/molecule.cc
index 613fc0ea1d..032f0742fb 100644
--- a/lily/molecule.cc
+++ b/lily/molecule.cc
@@ -3,31 +3,22 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "interval.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "string.hh"
#include "molecule.hh"
#include "atom.hh"
#include "debug.hh"
#include "tex.hh"
-String
-Molecule::TeX_string() const
-{
- String s;
- for (iter_top (ats,c); c.ok(); c++)
- s+=c->TeX_string();
- return s;
-}
-
Box
Molecule::extent() const
{
Box b;
- for (iter_top (ats,c); c.ok(); c++)
+ for (iter_top (atoms_,c); c.ok(); c++)
b.unite (c->extent());
return b;
}
@@ -35,23 +26,23 @@ Molecule::extent() const
void
Molecule::translate (Offset o)
{
- for (iter_top (ats,c); c.ok(); c++)
+ for (iter_top (atoms_,c); c.ok(); c++)
c->translate (o);
}
void
Molecule::translate_axis (Real x,Axis a)
{
- for (iter_top (ats,c); c.ok(); c++)
+ for (iter_top (atoms_,c); c.ok(); c++)
c->translate_axis (x,a);
}
void
-Molecule::add (Molecule const &m)
+Molecule::add_molecule (Molecule const &m)
{
- for (iter_top (m.ats,c); c.ok(); c++)
+ for (iter_top (m.atoms_,c); c.ok(); c++)
{
- add (**c);
+ add_atom (**c);
}
}
@@ -59,15 +50,15 @@ Molecule::add (Molecule const &m)
void
Molecule::add_at_edge (Axis a, Direction d, Molecule const &m)
{
- if (!ats.size())
+ if (!atoms_.size())
{
- add (m);
+ add_molecule (m);
return;
}
Real offset = extent ()[a][d] - m.extent ()[a][-d];
Molecule toadd (m);
toadd.translate_axis (offset, a);
- add (toadd);
+ add_molecule (toadd);
}
@@ -80,7 +71,7 @@ Molecule::operator = (Molecule const &)
Molecule::Molecule (Molecule const &s)
{
- add (s);
+ add_molecule (s);
}
void
@@ -89,13 +80,18 @@ Molecule::print() const
#ifndef NPRINT
if (! check_debug)
return;
- for (iter_top (ats,c); c.ok(); c++)
+ for (iter_top (atoms_,c); c.ok(); c++)
c->print();
#endif
}
void
-Molecule::add (Atom const &a)
+Molecule::add_atom (Atom const &a)
+{
+ atoms_.bottom().add (new Atom (a));
+}
+
+Molecule::Molecule (Atom const &a)
{
- ats.bottom().add (new Atom (a));
+ add_atom (a) ;
}
diff --git a/lily/mudela-version.cc b/lily/mudela-version.cc
index dbcc1b5934..b699b168b9 100644
--- a/lily/mudela-version.cc
+++ b/lily/mudela-version.cc
@@ -3,13 +3,13 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "mudela-version.hh"
#include "string-convert.hh"
-#include "varray.hh"
+#include "array.hh"
Mudela_version::Mudela_version (int major, int minor, int patch)
{
@@ -31,7 +31,7 @@ Mudela_version::Mudela_version (String str)
String
Mudela_version::str () const
{
- return String (major_i_) + "." + String (minor_i_) + "." + String (patch_i_);
+ return to_str (major_i_) + "." + to_str (minor_i_) + "." + to_str (patch_i_);
}
Mudela_version::operator int () const
diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc
index 56a3b8d93c..e8b23b67b3 100644
--- a/lily/multi-measure-rest-engraver.cc
+++ b/lily/multi-measure-rest-engraver.cc
@@ -1,8 +1,8 @@
/*
multi_measure_rest-engraver.cc -- implement Multi_measure_rest_engraver
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
- Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+ Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "proto.hh"
@@ -26,7 +26,7 @@ Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
bool
Multi_measure_rest_engraver::do_try_request (Request* req_l)
{
- if (!req_l->musical () || !req_l->musical ()->multi_measure ())
+ if (!req_l->access_Musical_req () || !req_l->access_Musical_req ()->access_Multi_measure_rest_req ())
return false;
if (multi_measure_req_l_)
@@ -34,7 +34,7 @@ Multi_measure_rest_engraver::do_try_request (Request* req_l)
|| req_start_mom_ != now_moment ())
return false;
- multi_measure_req_l_ = req_l->musical ()->multi_measure ();
+ multi_measure_req_l_ = req_l->access_Musical_req ()->access_Multi_measure_rest_req ();
req_start_mom_ = now_moment ();
rest_req_stop_mom_ = req_start_mom_ + multi_measure_req_l_->duration_.length ();
@@ -50,7 +50,7 @@ Multi_measure_rest_engraver::do_process_requests ()
Time_description const *time = get_staff_info().time_C_;
mmrest_p_ = new Multi_measure_rest;
rest_item_creation_mom_ = time->when_mom ();
- announce_element (Score_elem_info (mmrest_p_, multi_measure_req_l_));
+ announce_element (Score_element_info (mmrest_p_, multi_measure_req_l_));
start_measure_i_ = time->bars_i_;
}
}
diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc
index 4e7e05ff4c..279b6b9b36 100644
--- a/lily/multi-measure-rest.cc
+++ b/lily/multi-measure-rest.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
@@ -11,7 +11,7 @@
#include "debug.hh"
#include "paper-def.hh"
#include "lookup.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "rest.hh"
#include "script.hh"
#include "text-def.hh"
@@ -39,7 +39,7 @@ Multi_measure_rest::brew_molecule_p () const
* make two,four,eight-measure-rest symbols
*/
- Atom s (paper ()->lookup_l ()->rest (0, 0));
+ Atom s (lookup_l ()->rest (0, 0));
Molecule* mol_p = new Molecule ( Atom (s));
Real interline_f = paper ()->interline_f ();
mol_p->translate_axis (interline_f, Y_AXIS);
@@ -47,11 +47,11 @@ Multi_measure_rest::brew_molecule_p () const
if (measures_i_ > 1)
{
Text_def text;
- text.text_str_ = measures_i_;
+ text.text_str_ = to_str (measures_i_);
text.style_str_ = "number";
Atom s = text.get_atom (paper (), UP);
s.translate_axis (3.0 * interline_f, Y_AXIS);
- mol_p->add (s);
+ mol_p->add_atom (s);
}
return mol_p;
diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc
index a26231c0a9..97352020af 100644
--- a/lily/music-iterator.cc
+++ b/lily/music-iterator.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "debug.hh"
#include "music-list.hh"
@@ -117,6 +117,7 @@ Music_iterator::process_and_next (Moment)
first_b_ = false;
}
+
bool
Music_iterator::ok() const
{
diff --git a/lily/music-list.cc b/lily/music-list.cc
index e6b652f987..5642127ff3 100644
--- a/lily/music-list.cc
+++ b/lily/music-list.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -152,10 +152,10 @@ Request_chord::to_relative_octave (Musical_pitch last)
{
for (iter (music_p_list_.top(),i); i.ok (); i++)
{
- Musical_req *m =((Request*)i.ptr ())->musical ();
- if (m && m->melodic ())
+ Musical_req *m =((Request*)i.ptr ())->access_Musical_req ();
+ if (m && m->access_Melodic_req ())
{
- Musical_pitch &pit = m->melodic()->pitch_;
+ Musical_pitch &pit = m->access_Melodic_req ()->pitch_;
pit.to_relative_octave (last);
return pit;
}
diff --git a/lily/music-output-def.cc b/lily/music-output-def.cc
index 2e9a287863..ff1c78ddb9 100644
--- a/lily/music-output-def.cc
+++ b/lily/music-output-def.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/music-wrapper-iterator.cc b/lily/music-wrapper-iterator.cc
index 1160611e70..13b2a90c31 100644
--- a/lily/music-wrapper-iterator.cc
+++ b/lily/music-wrapper-iterator.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/music-wrapper.cc b/lily/music-wrapper.cc
index 2e241d5800..72971abf50 100644
--- a/lily/music-wrapper.cc
+++ b/lily/music-wrapper.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/music.cc b/lily/music.cc
index 5b33f57c54..4ba377fc91 100644
--- a/lily/music.cc
+++ b/lily/music.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/musical-pitch.cc b/lily/musical-pitch.cc
index 89da2e12d9..e7ffbd7014 100644
--- a/lily/musical-pitch.cc
+++ b/lily/musical-pitch.cc
@@ -3,11 +3,12 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "musical-pitch.hh"
#include "debug.hh"
+#include "main.hh"
Musical_pitch::Musical_pitch ()
{
@@ -26,7 +27,7 @@ void
Musical_pitch::print () const
{
#ifndef NPRINT
- DOUT << str();
+ DOUT << str ();
#endif
}
@@ -84,24 +85,32 @@ Musical_pitch::transpose (Musical_pitch delta)
}
+#if 0
+// nice test for internationalisation strings
char const *accname[] = {"double flat", "flat", "natural",
"sharp" , "double sharp"};
+#else
+char const *accname[] = {"eses", "es", "", "is" , "isis"};
+#endif
String
Musical_pitch::str () const
{
int n = (notename_i_ + 2) % 7;
- String s (char(n + 'a'));
+ String s = to_str (char(n + 'a'));
if (accidental_i_)
- s += " " + String (accname[accidental_i_ + 2]);
+ s += String (accname[accidental_i_ + 2]);
if (octave_i_)
- s += String ((octave_i_> 0)? "^": "_") + String(octave_i_);
-
+ s += String ((octave_i_> 0)? "^": "_") + to_str (octave_i_);
return s;
}
+/*
+ change me to relative, counting from last pitch p
+ return copy of resulting pitch
+ */
Musical_pitch
Musical_pitch::to_relative_octave (Musical_pitch p)
{
@@ -112,24 +121,37 @@ Musical_pitch::to_relative_octave (Musical_pitch p)
up_pitch.accidental_i_ = accidental_i_;
down_pitch.accidental_i_ = accidental_i_;
+ Musical_pitch n = *this;
up_pitch.up_to (notename_i_);
down_pitch.down_to (notename_i_);
+
int h = p.steps ();
if (abs (up_pitch.steps () - h) < abs (down_pitch.steps () - h))
- {
- *this = up_pitch;
- /* this sux imnsho
- if (oct_mod > 0) // ugh
- oct_mod --;*/
- }
+ n = up_pitch;
else
+ n = down_pitch;
+
+ if (find_quarts_global_b)
{
- *this = down_pitch;
- /* if (oct_mod < 0)
- oct_mod ++;*/
+ int d = this->semitone_pitch () - n.semitone_pitch ();
+ if (d)
+ {
+ int i = 1 + (abs (d) - 1) / 12;
+ String quote_str = d < 0 ? to_str (',', i) : to_str ('\'', i);
+ Musical_pitch w = *this;
+ w.octave_i_ = 0;
+ String name_str = w.str ();
+ name_str + quote_str;
+ w.warning (_f ("Interval greater than quart, relative: %s",
+ name_str + quote_str));
+ // don't actually do any relative stuff
+ n = *this;
+ }
}
-
- octave_i_ += oct_mod;
+ else
+ n.octave_i_ += oct_mod;
+
+ *this = n;
return *this;
}
@@ -153,86 +175,3 @@ Musical_pitch::down_to (int notename)
notename_i_ = notename;
}
-#if 0
-
-Musical_pitch
-My_lily_parser::get_melodic_req (Musical_pitch p, int quotes)
-{
- if (relative_octave_mode_b_)
- {
- set_nearest (melodic);
- int d = melodic->pitch () - last_melodic_->pitch ();
- int shift = 0;
- if (quotes && (sign (d) == sign (quotes)))
- shift -= sign (quotes);
- if (!quotes && (abs (d) == 6))
- {
- String str = _("Octave ambiguity; assuming ");
- /*
- [TODO]
- figure this out.
-
- If the distance is exactly*) half an octave, there is
- no nearest pitch. In that case, we'll try to guess what
- composer/ typist meant.
- Firstly, we'll do this by comparing the 'notename distance':
-
- f b' % name-distance: f g a b: 3
-
- is surely a shorter notename distance than
-
- f 'b % name-distance: b c d e f: 4
-
- (should we give a warning at all, or can we safely assume
- this is a positive interval up?)
-
- *) It is conceivable that, musically speaking, the interval
- with the greater pitch-distance is thought to be smaller?
-
- */
-
- int name_delta = melodic->notename_i_ - last_melodic_->notename_i_;
- int name_near = abs (name_delta) % 7;
- int name_wrap = (7 - abs (name_delta)) % 7;
- if (name_near != name_wrap)
- shift = name_near < name_wrap ? sign (name_delta) : -sign (name_delta);
- else if (sign (last_melodic_->accidental_i_)
- != sign (melodic->accidental_i_))
- shift = last_melodic_->accidental_i_ - melodic->accidental_i_;
- else
- shift = -1;
- String name_str = notename_str (melodic);
- str += shift > 0 ? name_str + "'" : "'" + name_str;
- if (sign (d) == sign (shift))
- shift = 0;
- melodic->warning (str);
- }
- melodic->octave_i_ += quotes + shift;
- }
- else
- {
- Melodic_req nearest (*melodic);
- set_nearest (&nearest);
- melodic->octave_i_ += quotes;
-
- if (find_quarts_global_b)
- {
- int e = melodic->pitch () - nearest.pitch ();
- if (e)
- {
- int d = melodic->pitch () - last_melodic_->pitch ();
- String str = _("Interval greater than quart");
- int n = 1 + (abs (d) - 1) / 12;
- String quote_str ('\'', n);
- str += _(", relative: ");
- String name_str = notename_str (melodic);
- str += d < 0 ? quote_str + name_str : name_str + quote_str;
- melodic->warning (str);
- }
- }
- }
- delete last_melodic_;
- last_melodic_ = melodic->clone ()->musical ()->melodic ();
- return melodic;
-}
-#endif
diff --git a/lily/musical-request.cc b/lily/musical-request.cc
index c2d0d0450a..b1d5120fe8 100644
--- a/lily/musical-request.cc
+++ b/lily/musical-request.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "musical-request.hh"
@@ -33,7 +33,7 @@ void
Span_req::do_print () const
{
#ifndef NPRINT
- DOUT << spantype ;
+ DOUT << spantype;
#endif
}
@@ -65,7 +65,7 @@ void
Abbreviation_req::do_print () const
{
#ifndef NPRINT
- DOUT << "type " << type_i_ << "\n";
+ DOUT << "type " << type_i_ << '\n';
#endif
}
@@ -90,7 +90,8 @@ Melodic_req::transpose (Musical_pitch delta)
if (abs (pitch_.accidental_i_) > 2)
{
- warning (_ ("transposition by ") + delta.str () + _(" makes accidental larger than 2"));
+ warning (_f ("transposition by %s makes accidental larger than two",
+ delta.str ()));
}
}
@@ -99,7 +100,7 @@ IMPLEMENT_IS_TYPE_B1 (Melodic_req,Musical_req);
bool
Melodic_req::do_equal_b (Request*r) const
{
- Melodic_req* m= r->musical ()->melodic ();
+ Melodic_req* m= r->access_Musical_req ()->access_Melodic_req ();
return !compare (*m, *this);
}
@@ -125,7 +126,7 @@ Rhythmic_req::compare (Rhythmic_req const &r1, Rhythmic_req const &r2)
bool
Rhythmic_req::do_equal_b (Request*r) const
{
- Rhythmic_req* rh = r->musical ()->rhythmic ();
+ Rhythmic_req* rh = r->access_Musical_req ()->access_Rhythmic_req ();
return !compare (*this, *rh);
}
@@ -159,24 +160,18 @@ Rhythmic_req::duration () const
}
/* *************** */
-Lyric_req::Lyric_req (Text_def* def_p)
- :Text_req (0, def_p)
-{
- def_p->align_i_ = CENTER; // centre
- dir_ = DOWN; // lyrics below (invisible) staff
-}
-IMPLEMENT_IS_TYPE_B2 (Lyric_req,Musical_req,Rhythmic_req);
+IMPLEMENT_IS_TYPE_B1 (Lyric_req,Rhythmic_req);
void
Lyric_req::do_print () const
{
Rhythmic_req::do_print ();
- Text_req::do_print ();
}
/* *************** */
+
bool
Note_req::do_equal_b (Request*r) const
{
@@ -276,7 +271,7 @@ Plet_req::do_print () const
bool
Span_req:: do_equal_b (Request*r) const
{
- Span_req * s = r->span ();
+ Span_req * s = r->access_Span_req ();
return spantype == s->spantype;
}
@@ -300,7 +295,7 @@ Script_req::Script_req (Script_req const&s)
bool
Script_req::do_equal_b (Request*r) const
{
- Script_req * s = r->script ();
+ Script_req * s = r->access_Script_req ();
return scriptdef_p_->equal_b (*s->scriptdef_p_);
}
@@ -318,7 +313,7 @@ void
Script_req::do_print () const
{
#ifndef NPRINT
- DOUT << " dir " << dir_ ;
+ DOUT << " dir " << dir_;
scriptdef_p_->print ();
#endif
}
@@ -365,7 +360,7 @@ void
Text_req::do_print () const
{
#ifndef NPRINT
- DOUT << " dir " << dir_ ;
+ DOUT << " dir " << dir_;
tdef_p_->print ();
#endif
}
@@ -410,7 +405,7 @@ Absolute_dynamic_req::do_print () const
bool
Absolute_dynamic_req::do_equal_b (Request *r) const
{
- Absolute_dynamic_req *a = r->musical ()->dynamic ()->absdynamic ();
+ Absolute_dynamic_req *a = r->access_Musical_req ()->access_Dynamic_req ()->access_Absolute_dynamic_req ();
return loudness_ == a->loudness_;
}
@@ -437,14 +432,15 @@ Dynamic_req::loudness_static_str (Loudness l)
String
Absolute_dynamic_req::loudness_str () const
{
- String s = loudness_static_str (loudness_);
- if (s.empty_b ())
+ String str = loudness_static_str (loudness_);
+ if (str.empty_b ())
{
- s = "mf";
- warning (String (_ ("Never heard of dynamic scale "))
- + loudness_ + _ (" assuming mf"));
+ String s = "mf";
+ warning (_f ("never heard of dynamic scale `\%s\', assuming %s",
+ str, s));
+ str = s;
}
- return s;
+ return str;
}
@@ -454,6 +450,15 @@ Absolute_dynamic_req::Absolute_dynamic_req ()
}
+
+bool
+Span_dynamic_req::do_equal_b (Request *req) const
+{
+ Span_dynamic_req * s = req->access_Musical_req ()->access_Span_dynamic_req ();
+
+ return Span_req::do_equal_b (req) && s->dynamic_dir_ == dynamic_dir_;
+}
+
Span_dynamic_req::Span_dynamic_req ()
{
dynamic_dir_ = CENTER;
@@ -467,7 +472,7 @@ Span_dynamic_req::do_print () const
{
#ifndef NPRINT
Span_req::do_print ();
- DOUT << "softer/louder: " <<dynamic_dir_;
+ DOUT << "softer/louder: " << dynamic_dir_;
#endif
}
diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc
index 1a46c7994c..286f09277a 100644
--- a/lily/my-lily-lexer.cc
+++ b/lily/my-lily-lexer.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <strstream.h>
@@ -23,7 +23,9 @@
#include "scope.hh"
static Keyword_ent the_key_tab[]={
+ {"absdynamic", ABSDYNAMIC},
{"accepts", ACCEPTS},
+ {"accidentals", ACCIDENTALS},
{"bar", BAR},
{"cadenza", CADENZA},
{"clear", CLEAR},
@@ -32,15 +34,15 @@ static Keyword_ent the_key_tab[]={
{"consists", CONSISTS},
{"contains", CONTAINS},
{"duration", DURATION},
- {"absdynamic", ABSDYNAMIC},
+ {"font", FONT},
+ {"grouping", GROUPING},
{"in", IN_T},
- {"translator", TRANSLATOR},
- {"type", TYPE},
{"lyric", LYRIC},
{"key", KEY},
+ {"mark", MARK},
{"melodic" , MELODIC},
- {"musical_pitch", MUSICAL_PITCH},
- {"meter", METER},
+ {"musicalpitch", MUSICAL_PITCH},
+ {"time", TIME_T},
{"midi", MIDI},
{"mm", MM_T},
{"multi", MULTI},
@@ -63,11 +65,10 @@ static Keyword_ent the_key_tab[]={
{"spandynamic", SPANDYNAMIC},
{"symboltables", SYMBOLTABLES},
{"tempo", TEMPO},
- {"texid", TEXID},
- {"textstyle", TEXTSTYLE},
+ {"translator", TRANSLATOR},
+ {"type", TYPE},
{"transpose", TRANSPOSE},
{"version", VERSION},
- {"grouping", GROUPING},
{0,0}
};
@@ -114,8 +115,10 @@ My_lily_lexer::set_identifier (String name_str, Identifier* i, bool unique_b)
Identifier *old = lookup_identifier (name_str);
if (old)
{
+#if 0
if (unique_b)
- old->warning(_("redeclaration of \\") + name_str);
+ old->warning(_f ("redeclaration of `\\%s\'", name_str));
+#endif
delete old;
}
(*scope_l_arr_.top ())[name_str] = i;
@@ -125,8 +128,6 @@ My_lily_lexer::~My_lily_lexer()
{
delete keytable_p_;
delete toplevel_scope_p_ ;
-
-
delete note_tab_p_;
}
@@ -135,7 +136,7 @@ My_lily_lexer::print_declarations (bool init_b) const
{
for (int i=scope_l_arr_.size (); i--; )
{
- DOUT << "Scope no. " << i << "\n";
+ DOUT << "Scope no. " << i << '\n';
scope_l_arr_[i]->print ();
}
}
@@ -145,7 +146,7 @@ My_lily_lexer::LexerError (char const *s)
{
if (include_stack_.empty())
{
- *mlog << _("error at EOF") << s << '\n';
+ *mlog << _f ("error at EOF: %s", s) << endl;
}
else
{
diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc
index 736f21b398..bdb3846692 100644
--- a/lily/my-lily-parser.cc
+++ b/lily/my-lily-parser.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "my-lily-parser.hh"
@@ -27,8 +27,7 @@ My_lily_parser::My_lily_parser (Sources * source_l)
lexer_p_ = 0;
abbrev_beam_type_i_ = 0;
default_duration_.durlog_i_ = 2;
- default_octave_i_ = 0;
- textstyle_str_="roman"; // in lexer?
+ default_abbrev_i_ = 0;
error_level_i_ = 0;
fatal_error_i_ = 0;
default_header_p_ =0;
@@ -60,17 +59,16 @@ My_lily_parser::parse_file (String init, String s)
init_str_ = init;
lexer_p_->main_input_str_ = s;
- *mlog << _("Parsing ... ");
+ *mlog << _ ("Parsing...");
init_parse_b_ = false;
set_yydebug (!monitor->silent_b ("Parser") && check_debug);
lexer_p_->new_input (init, source_l_);
do_yyparse ();
-
if (!define_spot_array_.empty())
{
- warning (_("Braces don't match."));
+ warning (_ ("braces don't match"));
error_level_i_ = 1;
}
@@ -110,21 +108,22 @@ void
My_lily_parser::set_last_duration (Duration const *d)
{
default_duration_ = *d;
- /*
- forget plet part,
- sticky plet factor only within plet brackets
- */
- default_duration_.set_plet (1, 1);
+
+ /*
+ forget plet part,
+ but keep sticky plet factor within plet brackets
+ */
+ default_duration_.plet_ = plet_;
}
Chord*
-My_lily_parser::get_word_element (Text_def* tdef_p, Duration * duration_p)
+My_lily_parser::get_word_element (String s, Duration * duration_p)
{
Chord* velt_p = new Request_chord;
- Lyric_req* lreq_p = new Lyric_req (tdef_p);
-
+ Lyric_req* lreq_p = new Lyric_req;
+ lreq_p ->text_str_ = s;
lreq_p->duration_ = *duration_p;
lreq_p->set_spot (here_input());
@@ -246,22 +245,22 @@ My_lily_parser::get_parens_request (int t)
switch (t)
{
case BEAMPLET:
- reqs.top ()->span()->spantype = Span_req::START;
+ reqs.top ()->access_Span_req ()->spantype = Span_req::START;
/* fall through */
case '<':
case '>':
case '(':
case '[':
case PLET:
- reqs[0]->span ()->spantype = Span_req::START;
+ reqs[0]->access_Span_req ()->spantype = Span_req::START;
break;
case MAEBTELP:
- reqs.top ()->span()->spantype = Span_req::STOP;
+ reqs.top ()->access_Span_req ()->spantype = Span_req::STOP;
/* fall through */
case '!':
case ')':
case ']':
- reqs[0]->span ()->spantype = Span_req::STOP;
+ reqs[0]->access_Span_req ()->spantype = Span_req::STOP;
break;
default:
@@ -269,9 +268,9 @@ My_lily_parser::get_parens_request (int t)
}
for (int i = 0; i < reqs.size (); i++)
- if (reqs[i]->musical ()->span_dynamic ())
+ if (reqs[i]->access_Musical_req ()->access_Span_dynamic_req ())
{
- Span_dynamic_req* s_l= (reqs[i]->musical ()->span_dynamic ()) ;
+ Span_dynamic_req* s_l= (reqs[i]->access_Musical_req ()->access_Span_dynamic_req ()) ;
s_l->dynamic_dir_ = (t == '<') ? UP:DOWN;
}
@@ -292,6 +291,14 @@ My_lily_parser::add_requests (Chord*v)
{
v->add (post_reqs[i]);
}
+#if 0 //disabling...
+ if (default_abbrev_i_)
+ {
+ Abbreviation_req* a = new Abbreviation_req;
+ a->type_i_ = default_abbrev_i_;
+ v->add (a);
+ }
+#endif
post_reqs.clear();
}
@@ -319,13 +326,13 @@ Paper_def*
My_lily_parser::default_paper_p ()
{
Identifier *id = lexer_p_->lookup_identifier ("default_paper");
- return id ? id->paperdef () : new Paper_def ;
+ return id ? id->access_Paper_def () : new Paper_def ;
}
Midi_def*
My_lily_parser::default_midi_p ()
{
Identifier *id = lexer_p_->lookup_identifier ("default_midi");
- return id ? id->mididef () : new Midi_def ;
+ return id ? id->access_Midi_def () : new Midi_def ;
}
diff --git a/lily/note-column.cc b/lily/note-column.cc
index e528b9e956..1085a3c071 100644
--- a/lily/note-column.cc
+++ b/lily/note-column.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "dot-column.hh"
#include "note-column.hh"
@@ -71,48 +71,48 @@ Note_column::do_pre_processing()
void
-Note_column::set (Stem * stem_l)
+Note_column::set_stem (Stem * stem_l)
{
add_support (stem_l);
stem_l_ = stem_l;
/*
don't add stem to support; mostly invisible for rest-columns (and possibly taken . .)
*/
- Score_elem::add_dependency (stem_l);
+ Score_element::add_dependency (stem_l);
for (int i=0; i < script_l_arr_.size(); i++)
script_l_arr_[i]->set_stem (stem_l);
}
void
-Note_column::add (Script *script_l)
+Note_column::add_script (Script *script_l)
{
- Script_column::add (script_l) ;
+ Script_column::add_script (script_l) ;
if (stem_l_)
script_l->set_stem (stem_l_);
}
void
-Note_column::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Note_column::do_substitute_dependency (Score_element*o, Score_element*n)
{
if (stem_l_ == o)
{
- stem_l_ = n ? (Stem*)n->item():0;
+ stem_l_ = n ? (Stem*)n->access_Item ():0;
}
if (o->is_type_b (Note_head::static_name ()))
{
- head_l_arr_.substitute ((Note_head*)o->item(),
- (n)? (Note_head*)n->item() : 0);
+ head_l_arr_.substitute ((Note_head*)o->access_Item (),
+ (n)? (Note_head*)n->access_Item () : 0);
}
Script_column::do_substitute_dependency (o,n);
if (o->is_type_b (Rest::static_name ()))
{
- rest_l_arr_.substitute ((Rest*)o->item(),
- (n)? (Rest*)n->item() : 0);
+ rest_l_arr_.substitute ((Rest*)o->access_Item (),
+ (n)? (Rest*)n->access_Item () : 0);
}
}
void
-Note_column::add (Rhythmic_head *h)
+Note_column::add_head (Rhythmic_head *h)
{
if (h->is_type_b (Rest::static_name ()))
{
@@ -147,7 +147,7 @@ Note_column::do_print() const
}
void
-Note_column::set (Dot_column *d)
+Note_column::set_dotcol (Dot_column *d)
{
add_element (d);
}
diff --git a/lily/note-head.cc b/lily/note-head.cc
index 3ae349b28b..00539b06d0 100644
--- a/lily/note-head.cc
+++ b/lily/note-head.cc
@@ -3,13 +3,13 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "misc.hh"
#include "dots.hh"
#include "note-head.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "debug.hh"
#include "paper-def.hh"
#include "lookup.hh"
@@ -47,7 +47,7 @@ Note_head::compare (Note_head *const &a, Note_head * const &b)
Interval
Note_head::do_width () const
{
- Atom a = paper ()->lookup_l()->ball (balltype_i_);
+ Atom a = lookup_l ()->ball (balltype_i_);
Interval i = a.dim_[X_AXIS];
i+= x_dir_ * i.length ();
return i;
@@ -65,14 +65,14 @@ Note_head::brew_molecule_p() const
? 0
: (abs(position_i_) - staff_size_i_/2) /2;
- Atom s = p->lookup_l()->ball (balltype_i_);
+ Atom s = lookup_l()->ball (balltype_i_);
out = new Molecule (Atom (s));
out->translate_axis (x_dir_ * s.dim_[X_AXIS].length (), X_AXIS);
if (streepjes_i)
{
int dir = sign (position_i_);
- Atom streepje = p->lookup_l ()->streepje (balltype_i_);
+ Atom streepje = lookup_l ()->streepje (balltype_i_);
int parity = (position_i_ % 2) ? 1 : 0;
@@ -82,7 +82,7 @@ Note_head::brew_molecule_p() const
Atom s = streepje;
s.translate_axis (-dir * inter_f * (i*2 + parity),
Y_AXIS);
- out->add (s);
+ out->add_atom (s);
}
}
diff --git a/lily/note-performer.cc b/lily/note-performer.cc
index 6679f61ba6..12c8601da3 100644
--- a/lily/note-performer.cc
+++ b/lily/note-performer.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "note-performer.hh"
@@ -11,33 +11,39 @@
#include "audio-item.hh"
#include "debug.hh"
-IMPLEMENT_IS_TYPE_B1(Note_performer,Performer);
-ADD_THIS_TRANSLATOR(Note_performer);
+IMPLEMENT_IS_TYPE_B1 (Note_performer,Performer);
+ADD_THIS_TRANSLATOR (Note_performer);
-Note_performer::Note_performer()
+Note_performer::Note_performer ()
{
note_req_l_ = 0;
}
void
-Note_performer::do_print() const
+Note_performer::do_print () const
{
#ifndef NPRINT
if (note_req_l_)
- {
- note_req_l_->print();
- }
+ note_req_l_->print ();
#endif
}
void
-Note_performer::do_process_requests()
+Note_performer::do_process_requests ()
{
// this is _really_ braindead, but it generates some output
- if (!note_req_l_ || !note_req_l_->melodic() || !note_req_l_->rhythmic ())
+ if (!note_req_l_ || !note_req_l_->access_Melodic_req () || !note_req_l_->access_Rhythmic_req ())
return;
- play (new Audio_note (note_req_l_));
+ int transposing_i = 0;
+ //urg
+ Scalar prop = get_property ("transposing");
+ if (!prop.empty_b () && prop.isnum_b ())
+ transposing_i = prop;
+
+
+ play (new Audio_note (note_req_l_, transposing_i));
+
note_req_l_ = 0;
}
@@ -47,9 +53,10 @@ Note_performer::do_try_request (Request* req_l)
if (note_req_l_)
return false;
- if (!req_l->musical() || !req_l->musical ()->note ())
+ if (!req_l->access_Musical_req () || !req_l->access_Musical_req ()->access_Note_req ())
return false;
- note_req_l_ = req_l->musical()->melodic ();
+ note_req_l_ = req_l->access_Musical_req ()->access_Melodic_req ();
+
return true;
}
diff --git a/lily/note.cc b/lily/note.cc
index 78e6429473..a32cabab79 100644
--- a/lily/note.cc
+++ b/lily/note.cc
@@ -11,7 +11,7 @@
#include "command-request.hh"
#include "music-list.hh"
#include "identifier.hh"
-#include "varray.hh"
+#include "array.hh"
#include "text-def.hh"
#include "parseconstruct.hh"
diff --git a/lily/notename-table.cc b/lily/notename-table.cc
index fa86049c65..9b08369db0 100644
--- a/lily/notename-table.cc
+++ b/lily/notename-table.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "notename-table.hh"
diff --git a/lily/out/dummy.dep b/lily/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/lily/out/dummy.dep
+++ /dev/null
diff --git a/lily/outputter.cc b/lily/outputter.cc
deleted file mode 100644
index d3df3f600f..0000000000
--- a/lily/outputter.cc
+++ /dev/null
@@ -1,57 +0,0 @@
-
-/*
- outputter.cc -- implement Tex_outputter
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "outputter.hh"
-#include "tex-stream.hh"
-#include "molecule.hh"
-#include "varray.hh"
-#include "dimen.hh"
-#include "tex.hh"
-
-Tex_outputter::Tex_outputter (Tex_stream *s)
-{
- outstream_l_ = s;
-}
-
-void
-Tex_outputter::output_molecule (Molecule const*m, Offset o)
-{
- String t = m->TeX_string();
- if (t.empty_b ())
- return ;
-
- String s ("\\placebox{%}{%}{%}");
- Array<String> a;
- a.push (print_dimen (o.y()));
- a.push (print_dimen (o.x()));
- a.push (t);
- String r;
- /*
- if (check_debug)
- r = String ("\n%start: ") + name() + "\n";
- */
-
- r += substitute_args (s, a);
-
- *outstream_l_ << r;
-}
-
-
-void
-Tex_outputter::start_line ()
-{
- *outstream_l_ << "\\hbox{%<- line of score\n";
-}
-
-void
-Tex_outputter::stop_line ()
-{
- *outstream_l_ << "}";
- *outstream_l_ << "\\interscoreline";
-}
diff --git a/lily/p-col.cc b/lily/p-col.cc
index e776b62c92..74ea11e5ea 100644
--- a/lily/p-col.cc
+++ b/lily/p-col.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "p-col.hh"
@@ -63,9 +63,9 @@ Paper_column::do_print() const
DOUT << "post: ";
postbreak_l()->print();
}
- if (break_status_i_)
+ if (break_status_dir_)
{
- DOUT <<'\n' << ((break_status_i_ == LEFT) ? "prebreak" : "postbreak");
+ DOUT << '\n' << ((break_status_dir_ == LEFT) ? "prebreak" : "postbreak");
DOUT << '\n';
}
diff --git a/lily/p-score.cc b/lily/p-score.cc
index 51c9a4b019..bd7ec060e0 100644
--- a/lily/p-score.cc
+++ b/lily/p-score.cc
@@ -3,16 +3,16 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "main.hh"
-#include "super-elem.hh"
+#include "super-element.hh"
#include "debug.hh"
#include "lookup.hh"
#include "spanner.hh"
#include "paper-def.hh"
-#include "scoreline.hh"
+#include "line-of-score.hh"
#include "pcursor.hh"
#include "plist.hh"
#include "p-col.hh"
@@ -22,8 +22,10 @@
#include "header.hh"
#include "word-wrap.hh"
#include "gourlay-breaking.hh"
-#include "outputter.hh"
+#include "tex-outputter.hh"
#include "file-results.hh"
+#include "misc.hh"
+
// sucking Cygnus egcs - w32
#include "list.tcc"
#include "cursor.tcc"
@@ -38,12 +40,12 @@ Paper_score::Paper_score ()
Paper_score::~Paper_score ()
{
super_elem_l_->unlink_all ();
- for (PCursor<Score_elem*> i(elem_p_list_.top()); i.ok(); i++)
+ for (PCursor<Score_element*> i(elem_p_list_.top()); i.ok(); i++)
assert(!i->linked_b());
}
void
-Paper_score::typeset_element (Score_elem * elem_p)
+Paper_score::typeset_element (Score_element * elem_p)
{
elem_p_list_.bottom ().add (elem_p);
elem_p->pscore_l_ = this;
@@ -117,31 +119,41 @@ Paper_score::find_col (Paper_column const *c) const
void
-Paper_score::set_breaking (Array<Col_hpositions> const &breaking)
+Paper_score::set_breaking (Array<Column_x_positions> const &breaking)
{
super_elem_l_->line_of_score_l_->set_breaking (breaking);
super_elem_l_->break_processing ();
-
for (iter (span_p_list_.top (),i); i.ok ();)
{
Spanner *span_p = i.remove_p ();
- if (span_p->broken_b ())
+ if (span_p->broken_b ()
+ || !((Score_element*)span_p)->line_l ())
{
span_p->unlink ();
+#if 0
+ int sz = span_p->class_size();
+ set_frobnify (span_p,sz);
+#endif
delete span_p;
- }else
- {
- typeset_broken_spanner (span_p);
- }
+ }
+ else
+ {
+ typeset_broken_spanner (span_p);
+ }
}
for (iter (elem_p_list_.top (),i); i.ok () ;)
{
- Item *i_l =i->item ();
+ Item *i_l =i->access_Item ();
if (i_l && !i_l->line_l ())
{
i_l->unlink ();
- delete i.remove_p ();
+ Score_element * item_p= i.remove_p ();
+#if 0
+ int sz = item_p->class_size ();
+ set_frobnify (item_p, sz);
+#endif
+ delete item_p;
}
else
i++;
@@ -152,7 +164,7 @@ void
Paper_score::calc_breaking ()
{
Break_algorithm *algorithm_p=0;
- Array<Col_hpositions> sol;
+ Array<Column_x_positions> sol;
bool try_wrap = ! paper_l_->get_var ("castingalgorithm");
if (!try_wrap)
@@ -163,7 +175,7 @@ Paper_score::calc_breaking ()
delete algorithm_p;
if (! sol.size ())
{
- warning (_("Can not solve this casting problem exactly; revert to Word_wrap"));
+ warning (_ ("Can't solve this casting problem exactly; revert to Word_wrap"));
try_wrap = true;
}
}
@@ -182,14 +194,15 @@ Paper_score::process ()
{
clean_cols ();
print ();
- *mlog << _("Preprocessing elements... ") <<flush;
+ *mlog << _ ("Preprocessing elements...") << " " << flush;
super_elem_l_->breakable_col_processing ();
super_elem_l_->pre_processing ();
- *mlog << _("\nCalculating column positions ... ") <<flush;
+ *mlog << '\n' << _ ("Calculating column positions...") << " " << flush;
super_elem_l_->space_processing ();
calc_breaking ();
- *mlog << _("\nPostprocessing elements...") << endl;
+ print ();
+ *mlog << _ ("Postprocessing elements...") << " " << endl;
super_elem_l_->post_processing ();
tex_output ();
}
@@ -206,22 +219,31 @@ Paper_score::tex_output ()
int def = paper_l_->get_next_default_count ();
if (def)
{
- base_outname += "-" + String(def);
+ base_outname += "-" + to_str (def);
}
}
- String outname = base_outname + ".tex";
+ String outname = base_outname;
+ if (outname != "-")
+ outname += ".tex";
target_str_global_array.push (outname);
-
- *mlog << _("TeX output to ") << outname << " ...\n";
+ *mlog << _f ("TeX output to %s...",
+ outname == "-" ? String ("<stdout>") : outname ) << endl;
Tex_stream tex_out (outname);
Tex_outputter interfees (&tex_out);
outputter_l_ = &interfees;
- tex_out << _("% outputting Score, defined at: ") << origin_str_ << "\n";
+ if (header_global_p)
+ {
+ tex_out << header_global_p->TeX_string ();
+ }
+
+
+ tex_out << _ ("% outputting Score, defined at: ") << origin_str_ << '\n';
+
if (header_l_)
{
tex_out << header_l_->TeX_string();
@@ -231,6 +253,7 @@ Paper_score::tex_output ()
if (experimental_features_global_b)
tex_out << "\\turnOnExperimentalFeatures%\n";
+
tex_out << "\\turnOnPostScript%\n";
super_elem_l_->output_all ();
tex_out << "\n\\EndLilyPondOutput";
@@ -239,7 +262,7 @@ Paper_score::tex_output ()
/** Get all breakable columns between l and r, (not counting l and r). */
Link_array<Paper_column>
-Paper_score::breakable_col_range (Paper_column*l,Paper_column*r) const
+Paper_score::breakable_col_range (Paper_column*l, Paper_column*r) const
{
Link_array<Paper_column> ret;
@@ -258,6 +281,8 @@ Paper_score::breakable_col_range (Paper_column*l,Paper_column*r) const
return ret;
}
+
+
Link_array<Paper_column>
Paper_score::col_range (Paper_column*l, Paper_column*r) const
{
@@ -284,10 +309,10 @@ Paper_score::broken_col_range (Item const*l_item_l, Item const*r_item_l) const
Item const*r=r_item_l;
while (! l->is_type_b(Paper_column::static_name ()))
- l = l->axis_group_l_a_[X_AXIS]->item ();
+ l = l->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ();
while (! r->is_type_b(Paper_column::static_name ()))
- r = r->axis_group_l_a_[X_AXIS]->item ();
+ r = r->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ();
PCursor<Paper_column*> start (l ? find_col ((Paper_column*)l)+1 : col_p_list_.top ());
PCursor<Paper_column*> stop (r ? find_col ((Paper_column*)r) : col_p_list_.bottom ());
diff --git a/lily/paper-def.cc b/lily/paper-def.cc
index fc867d6ac4..aafc231928 100644
--- a/lily/paper-def.cc
+++ b/lily/paper-def.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <math.h>
@@ -13,35 +13,44 @@
#include "paper-def.hh"
#include "debug.hh"
#include "lookup.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "assoc-iter.hh"
-#include "score-grav.hh"
+#include "score-engraver.hh"
#include "p-score.hh"
#include "identifier.hh"
#include "main.hh"
#include "scope.hh"
-
+#include "assoc.hh"
+#include "assoc-iter.hh"
Paper_def::Paper_def ()
{
- lookup_p_ = 0;
+ 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++)
+ {
+ delete ai.val ();
+ }
+
delete scope_p_;
- delete lookup_p_;
+ delete lookup_p_assoc_p_;
}
Paper_def::Paper_def (Paper_def const&s)
: Music_output_def (s)
{
- lookup_p_ = s.lookup_p_? new Lookup (*s.lookup_p_) : 0;
- if (lookup_p_)
+ lookup_p_assoc_p_ = new Assoc<int, Lookup*>;
+ for (Assoc_iter<int, Lookup*> ai(*s.lookup_p_assoc_p_); ai.ok (); ai++)
{
- lookup_p_->paper_l_ = this;
+ Lookup * l=new Lookup (*ai.val ());
+ l->paper_l_ = this;
+ set_lookup (ai.key(), l);
}
+
scope_p_ = new Scope (*s.scope_p_);
}
@@ -49,11 +58,15 @@ Real
Paper_def::get_var (String s) const
{
if (!scope_p_->elt_b (s))
- error (_ ("unknown paper variable `") + s+"'");
- Real * p = scope_p_->elem (s)->real ();
- Real r = *p;
- delete p;
- return r;
+ error (_f ("unknown paper variable: `%s\'", s));
+ Real * p = scope_p_->elem (s)->access_Real (false);
+ if (!p)
+ {
+ error (_ ("not a real variable"));
+ return 0.0;
+ }
+
+ return *p;
}
Interval
@@ -121,12 +134,14 @@ Paper_def::geometric_spacing (Moment d) const
}
void
-Paper_def::set (Lookup*l)
+Paper_def::set_lookup (int i, Lookup*l)
{
- assert (l != lookup_p_);
- delete lookup_p_;
- lookup_p_ = l;
- lookup_p_->paper_l_ = this;
+ if (lookup_p_assoc_p_->elt_b (i))
+ {
+ delete lookup_p_assoc_p_->elem (i);
+ }
+ l ->paper_l_ = this;
+ (*lookup_p_assoc_p_)[i] = l;
}
Real
@@ -180,24 +195,26 @@ Paper_def::print () const
#ifndef NPRINT
Music_output_def::print ();
DOUT << "Paper {";
- if (lookup_p_)
- lookup_p_->print ();
+
+ for (Assoc_iter<int, Lookup*> ai(*lookup_p_assoc_p_); ai.ok (); ai++)
+ {
+ DOUT << "Lookup: " << ai.key () ;
+ ai.val ()->print ();
+ }
+
for (Assoc_iter<String,Identifier*> i (*scope_p_); i.ok (); i++)
{
DOUT << i.key () << "= ";
-// i.val ()->print ();
-// urg
- DOUT << i.val ()->str () << "\n";
+ DOUT << i.val ()->str () << '\n';
}
DOUT << "}\n";
#endif
}
Lookup const *
-Paper_def::lookup_l ()
+Paper_def::lookup_l (int i) const
{
- assert (lookup_p_);
- return lookup_p_;
+ return (*lookup_p_assoc_p_)[i];
}
IMPLEMENT_IS_TYPE_B1 (Paper_def, Music_output_def);
@@ -209,7 +226,7 @@ Paper_def::TeX_output_settings_str () const
for (Assoc_iter<String,Identifier*> i (*scope_p_); i.ok (); i++)
s += String ("\\def\\mudelapaper") + i.key ()
+ "{" + i.val ()->str () + "}\n";
- s += lookup_p_->texsetting + "% (Tex id)\n";
+ s += *scope_p_->elem ("texsetting")->access_String ();
return s;
}
diff --git a/lily/parser.yy b/lily/parser.yy
index c585b7c934..4b9ec9fd2f 100644
--- a/lily/parser.yy
+++ b/lily/parser.yy
@@ -6,7 +6,7 @@
source file of the GNU LilyPond music typesetter
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <iostream.h>
@@ -21,10 +21,11 @@
#include "paper-def.hh"
#include "midi-def.hh"
#include "main.hh"
+#include "file-path.hh"
#include "keyword.hh"
#include "debug.hh"
#include "parseconstruct.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "identifier.hh"
#include "command-request.hh"
#include "musical-request.hh"
@@ -43,8 +44,8 @@
// mmm
-Mudela_version oldest_version ("0.1.15");
-Mudela_version version ("0.1.15");
+Mudela_version oldest_version ("1.0.0");
+Mudela_version version ("1.0.0");
// needed for bison.simple's malloc() and free()
@@ -136,6 +137,7 @@ yylex (YYSTYPE *s, void * v_l)
/* tokens which are not keywords */
+%token ACCIDENTALS
%token ALIAS
%token BAR
%token BEAMPLET
@@ -158,11 +160,12 @@ yylex (YYSTYPE *s, void * v_l)
%token IN_T
%token LYRIC
%token KEY
+%token MARK
+%token MUSIC
%token MUSICAL_PITCH
%token MELODIC
%token MIDI
-
-%token METER
+%token TIME_T
%token MM_T
%token MULTI
%token NOTENAMES
@@ -185,9 +188,8 @@ yylex (YYSTYPE *s, void * v_l)
%token TRANSPOSE
%token TEMPO
%token TYPE
-%token TEXID
+%token FONT
%token MEASURES
-%token TEXTSTYLE
%token TITLE
%token PROPERTY
%token VERSION
@@ -227,7 +229,7 @@ yylex (YYSTYPE *s, void * v_l)
%type <i> open_abbrev_parens
%type <i> open_plet_parens close_plet_parens
%type <i> sub_quotes sup_quotes
-%type <music> simple_element music_elt full_element lyrics_elt command_elt
+%type <music> simple_element request_chord command_element
%type <i> abbrev_type
%type <i> int unsigned
%type <i> script_dir
@@ -242,7 +244,7 @@ yylex (YYSTYPE *s, void * v_l)
%type <notereq> steno_notepitch
%type <pitch_arr> pitch_list
%type <midi> midi_block midi_body
-%type <moment> duration_length
+%type <duration> duration_length
%type <scalar> scalar
%type <music> Music transposed_music relative_music
@@ -278,8 +280,8 @@ yylex (YYSTYPE *s, void * v_l)
mudela: /* empty */
| mudela mudela_header {
- delete THIS->default_header_p_ ;
- THIS->default_header_p_ = $2;
+ delete header_global_p;
+ header_global_p = $2;
}
| mudela score_block {
score_global_array.push ($2);
@@ -295,10 +297,10 @@ check_version:
Mudela_version ver (*$2);
if (!((ver >= oldest_version) && (ver <= version))) {
if (THIS->ignore_version_b_) {
- THIS->here_input ().error ("Incorrect mudela version");
+ THIS->here_input ().error (_f ("incorrect mudela version: %s (%s, %s)", ver.str (), oldest_version.str (), version.str ()));
} else {
THIS->fatal_error_i_ = 1;
- THIS->parser_error ("Incorrect mudela version");
+ THIS->parser_error (_f ("incorrect mudela version: %s (%s, %s)", ver.str (), oldest_version.str (), version.str ()));
}
}
}
@@ -389,11 +391,6 @@ identifier_init:
| post_request {
$$ = new Request_identifier ($1, POST_REQUEST_IDENTIFIER);
}
-/* | melodic_request {
- $$ = new Request_identifier ($1, MELODIC_REQUEST_IDENTIFIER);
-
- }
- */
| explicit_duration {
$$ = new Duration_identifier ($1, DURATION_IDENTIFIER);
}
@@ -422,12 +419,14 @@ translator_spec:
translator_spec_body:
TRANS_IDENTIFIER {
- $$ = $1->translator ();
+ $$ = $1->access_Translator ();
$$-> set_spot (THIS->here_input ());
}
| TYPE STRING ';' {
- $$ = get_translator_l (*$2)->clone ();
- $$->set_spot (THIS->here_input ());
+ Translator* t = get_translator_l (*$2);
+ t = t->clone ();
+ t->set_spot (THIS->here_input ());
+ $$ = t;
delete $2;
}
| translator_spec_body STRING '=' scalar ';' {
@@ -456,13 +455,11 @@ score_block:
$$ = $4;
$$->set_spot (THIS->pop_spot ());
if (!$$->def_p_arr_.size ())
- $$->add (THIS->default_paper_p ());
+ $$->add_output (THIS->default_paper_p ());
/* handle error levels. */
$$->errorlevel_i_ = THIS->error_level_i_;
THIS->error_level_i_ = 0;
- if (!$$->header_p_ && THIS->default_header_p_)
- $$->header_p_ = new Header (*THIS->default_header_p_);
}
;
@@ -470,18 +467,18 @@ score_body: {
$$ = new Score;
}
| SCORE_IDENTIFIER {
- $$ = $1->score ();
+ $$ = $1->access_Score ();
}
| score_body mudela_header {
$$->header_p_ = $2;
}
| score_body Music {
if ($$->music_p_)
- $2->warning ("More than one music block");
+ $2->warning (_ ("More than one music block"));
$$->music_p_ = $2;
}
| score_body output_def {
- $$->add ($2);
+ $$->add_output ($2);
}
| score_body error {
@@ -527,7 +524,7 @@ paper_body:
$$ = p;
}
| PAPER_IDENTIFIER optional_semicolon {
- Paper_def *p = $1->paperdef ();
+ Paper_def *p = $1->access_Paper_def ();
THIS->lexer_p_->scope_l_arr_.push (p->scope_p_);
$$ = p;
}
@@ -535,24 +532,21 @@ paper_body:
$$->outfile_str_ = *$3;
delete $3;
}
- | paper_body symtables { $$->set ($2); }
+ | 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->translator ());
+ $$->assign_translator (*$2, id->access_Translator ());
delete id;
}
else
THIS->lexer_p_->set_identifier (*$2, id);
+ delete $2;
}
-/*
- | paper_body STRING '=' translator_spec {
- $$-> assign_translator (*$2, $4);
- delete $2;
- }
-*/
| paper_body SHAPE '=' shape_array ';' {
$$->shape_int_a_ = *$4;
delete $4;
@@ -567,7 +561,7 @@ real_primary:
$$ = $1;
}
| REAL_IDENTIFIER {
- Real *r_p = $1->real ();
+ Real *r_p = $1->access_Real ();
$$ = * r_p;
DOUT << "Lookup real: " << *r_p << "\n";
delete r_p;
@@ -644,10 +638,6 @@ tempo_request:
}
;
-/*
- MUSIC
-*/
-
Voice:
'{' Voice_body '}' {
$$ = $2;
@@ -662,10 +652,13 @@ Voice_body:
| Voice_body Music {
$$->add ($2);
}
+ | Voice_body error {
+ $$ = new Music_list;
+ }
;
Music:
- full_element { $$ = $1; }
+ request_chord { $$ = $1; }
| TYPE STRING Music {
$$ = $3;
$$->translator_type_str_ = *$2;
@@ -681,24 +674,28 @@ Music:
| Voice { $$ = $1; }
| Chord { $$ = $1; }
| transposed_music { $$ = $1; }
- | MUSIC_IDENTIFIER { $$ = $1->music (); }
+ | MUSIC_IDENTIFIER { $$ = $1->access_Music (); }
| MELODIC
{ THIS->lexer_p_->push_note_state (); }
Music
- { $$=$3; THIS->lexer_p_->pop_state (); }
+ { $$ = $3;
+ THIS->lexer_p_->pop_state ();
+ }
| LYRIC
{ THIS->lexer_p_->push_lyric_state (); }
Music
- { $$ = $3; THIS->lexer_p_->pop_state (); }
+ {
+ $$ = $3;
+ THIS->lexer_p_->pop_state ();
+ }
| property_def
| translator_change
| relative_music { $$ = $1; }
;
relative_music:
- RELATIVE absolute_musical_pitch Music
- {
+ RELATIVE absolute_musical_pitch Music {
$$ = new Relative_octave_music ($3, *$2);
delete $2;
}
@@ -739,28 +736,26 @@ scalar:
Chord:
'<' Chord_body '>' { $$ = $2; }
- | MULTI unsigned Chord {
- $$ = $3;
- $$->multi_level_i_=$2;
- }
;
Chord_body:
/**/ {
$$ = new Chord;
- $$-> multi_level_i_ = 1;
+ $$-> multi_level_i_ = 0;
$$->set_spot (THIS->here_input ());
}
| Chord_body Music {
$$->add ($2);
}
+ | Chord_body error {
+ $$ = new Chord;
+ }
;
transposed_music:
TRANSPOSE musical_pitch Music {
$$ = $3;
$$ -> transpose (*$2);
-
delete $2;
}
;
@@ -769,21 +764,18 @@ transposed_music:
/*
VOICE ELEMENTS
*/
-full_element:
+request_chord:
pre_requests simple_element post_requests {
THIS->add_requests ((Chord*)$2);//ugh
$$ = $2;
}
- | command_elt
- | voice_command ';' { $$ = 0; }
+ | command_element
;
-simple_element:
- music_elt
- | lyrics_elt
- ;
-command_elt:
+
+
+command_element:
command_req {
$$ = new Request_chord;
$$-> set_spot (THIS->here_input ());
@@ -803,7 +795,7 @@ abbrev_command_req:
$$ = new Barcheck_req;
}
| COMMAND_IDENTIFIER {
- $$ = $1->request ();
+ $$ = $1->access_Request ();
}
;
@@ -812,22 +804,28 @@ verbose_command_req:
$$ = new Bar_req (*$2);
delete $2;
}
+ | MARK STRING {
+ $$ = new Mark_req (*$2);
+ delete $2;
+ }
+ | MARK unsigned {
+ $$ = new Mark_req (to_str ($2));
+ }
+ | TIME_T unsigned '/' unsigned {
+ Time_signature_change_req *m = new Time_signature_change_req;
+ m->beats_i_ = $2;
+ m->one_beat_i_=$4;
+ $$ = m;
+ }
| PENALTY '=' int {
Break_req * b = new Break_req;
b->penalty_i_ = $3;
b-> set_spot (THIS->here_input ());
$$ = b;
}
- | METER unsigned '/' unsigned {
- Meter_change_req *m = new Meter_change_req;
- m->set ($2,$4);
- $$ = m;
- }
| SKIP duration_length {
Skip_req * skip_p = new Skip_req;
- skip_p->duration_.set_plet ($2->num (),
- $2->den ());
-
+ skip_p->duration_ = *$2;
delete $2;
$$ = skip_p;
}
@@ -838,16 +836,24 @@ verbose_command_req:
$$ = new Cadenza_req ($2);
}
| PARTIAL duration_length {
- $$ = new Partial_measure_req (*$2);
+ $$ = new Partial_measure_req ($2->length ());
delete $2;
}
| CLEF STRING {
$$ = new Clef_change_req (*$2);
delete $2;
}
- | KEY pitch_list {
+ | KEY NOTENAME_PITCH {
+ Key_change_req *key_p= new Key_change_req;
+ key_p->pitch_arr_.push(*$2);
+ key_p->ordinary_key_b_ = true;
+ $$ = key_p;
+ delete $2;
+ }
+ | ACCIDENTALS pitch_list {
Key_change_req *key_p= new Key_change_req;
key_p->pitch_arr_ = *$2;
+ key_p->ordinary_key_b_ = false;
$$ = key_p;
delete $2;
}
@@ -885,15 +891,19 @@ structured_post_request:
post_request:
POST_REQUEST_IDENTIFIER {
- $$ = (Request*)$1->request ();
+ $$ = (Request*)$1->access_Request ();
}
| dynamic_req {
$$ = $1;
}
| abbrev_type {
+#if 1 // re-instating
Abbreviation_req* a = new Abbreviation_req;
a->type_i_ = $1;
$$ = a;
+#else // and disabling just created ugly sticky abbrev_req
+ THIS->default_abbrev_i_ = $1;
+#endif
}
;
@@ -917,16 +927,17 @@ sub_quotes:
steno_musical_pitch:
NOTENAME_PITCH {
$$ = $1;
- $$->octave_i_ += THIS->default_octave_i_;
+ // $$->octave_i_ += THIS->default_octave_i_;
}
| NOTENAME_PITCH sup_quotes {
$$ = $1;
- $$->octave_i_ += $2 + THIS->default_octave_i_;
-
+ // $$->octave_i_ += THIS->default_octave_i_ + $2;
+ $$->octave_i_ += $2;
}
| NOTENAME_PITCH sub_quotes {
$$ = $1;
- $$->octave_i_ += THIS->default_octave_i_ - $2 ;
+ $$->octave_i_ += - $2;
+ // $$->octave_i_ += THIS->default_octave_i_ - $2;
}
;
@@ -996,22 +1007,19 @@ close_plet_parens:
$$ = MAEBTELP;
THIS->plet_.type_i_ = $2[1];
THIS->plet_.iso_i_ = $2[0];
- THIS->default_duration_.plet_.type_i_ = $2[1];
- THIS->default_duration_.plet_.iso_i_ = $2[0];
+ THIS->default_duration_.plet_ = THIS->plet_;
}
| TELP {
$$ = TELP;
THIS->plet_.type_i_ = 1;
THIS->plet_.iso_i_ = 1;
- THIS->default_duration_.plet_.iso_i_ = 1;
- THIS->default_duration_.plet_.type_i_ = 1;
+ THIS->default_duration_.plet_ = THIS->plet_;
}
| TELP plet_fraction {
$$ = TELP;
THIS->plet_.type_i_ = $2[1];
THIS->plet_.iso_i_ = $2[0];
- THIS->default_duration_.plet_.type_i_ = $2[1];
- THIS->default_duration_.plet_.iso_i_ = $2[0];
+ THIS->default_duration_.plet_ = THIS->plet_;
}
;
@@ -1038,9 +1046,9 @@ open_abbrev_parens:
'[' ':' unsigned {
$$ = '[';
if (!Duration::duration_type_b ($3))
- THIS->parser_error (String ("Not a duration: ") + $3);
+ THIS->parser_error (_f ("not a duration: %d", $3));
else if ($3 < 8)
- THIS->parser_error ("Can't abbreviate");
+ THIS->parser_error (_ ("can't abbreviate"));
else
THIS->set_abbrev_beam ($3);
}
@@ -1051,15 +1059,13 @@ open_plet_parens:
$$ = BEAMPLET;
THIS->plet_.type_i_ = $2[1];
THIS->plet_.iso_i_ = $2[0];
- THIS->default_duration_.plet_.type_i_ = $2[1];
- THIS->default_duration_.plet_.iso_i_ = $2[0];
+ THIS->default_duration_.plet_ = THIS->plet_;
}
| PLET plet_fraction {
$$ = PLET;
THIS->plet_.type_i_ = $2[1];
THIS->plet_.iso_i_ = $2[0];
- THIS->default_duration_.plet_.type_i_ = $2[1];
- THIS->default_duration_.plet_.iso_i_ = $2[0];
+ THIS->default_duration_.plet_ = THIS->plet_;
}
;
@@ -1106,7 +1112,7 @@ script_req:
gen_script_def:
text_def {
$$ = $1;
- ((Text_def*) $$)->align_i_ = CENTER; /* UGH */
+ ((Text_def*) $$)->align_dir_ = CENTER; /* UGH */
}
| mudela_script {
$$ = $1;
@@ -1114,7 +1120,7 @@ gen_script_def:
}
| finger {
$$ = $1;
- ((Text_def*)$$)->align_i_ = CENTER;
+ ((Text_def*)$$)->align_dir_ = RIGHT; /* UGH */
}
;
@@ -1124,7 +1130,6 @@ text_def:
$$ = t;
t->text_str_ = *$1;
delete $1;
- t->style_str_ = THIS->textstyle_str_;
$$->set_spot (THIS->here_input ());
}
;
@@ -1133,7 +1138,7 @@ finger:
DIGIT {
Text_def* t = new Text_def;
$$ = t;
- t->text_str_ = String ($1);
+ t->text_str_ = to_str ($1);
t->style_str_ = "finger";
$$->set_spot (THIS->here_input ());
}
@@ -1152,10 +1157,10 @@ script_abbreviation:
;
mudela_script:
- SCRIPT_IDENTIFIER { $$ = $1->script (); }
+ SCRIPT_IDENTIFIER { $$ = $1->access_General_script_def (true); }
| script_definition { $$ = $1; }
| script_abbreviation {
- $$ = THIS->lexer_p_->lookup_identifier (*$1)->script ();
+ $$ = THIS->lexer_p_->lookup_identifier (*$1)->access_General_script_def (true);
delete $1;
}
;
@@ -1181,26 +1186,13 @@ pre_requests:
absolute_musical_pitch:
steno_musical_pitch {
$$ = $1;
- $$->octave_i_ -= THIS->default_octave_i_;
- }
- ;
-voice_command:
- OCTAVE absolute_musical_pitch {
- THIS->default_octave_i_ = $2->octave_i_;
- delete $2;
- }
- | TEXTSTYLE STRING {
- THIS->textstyle_str_ = *$2;
- delete $2;
+ // $$->octave_i_ -= THIS->default_octave_i_;
}
;
duration_length:
- {
- $$ = new Moment (0,1);
- }
- | duration_length steno_duration {
- *$$ += $2->length ();
+ steno_duration {
+ $$ = $1;
}
;
@@ -1212,18 +1204,13 @@ dots:
entered_notemode_duration:
/* */ {
$$ = new Duration (THIS->default_duration_);
- // get sticky plet part too
- $$->set_plet (THIS->plet_.iso_i_, THIS->plet_.type_i_);
}
| dots {
$$ = new Duration (THIS->default_duration_);
- // get sticky plet part too
- $$->set_plet (THIS->plet_.iso_i_, THIS->plet_.type_i_);
$$->dots_i_ = $1;
}
| steno_duration {
THIS->set_last_duration ($1);
- $$ = $1;
}
;
@@ -1237,23 +1224,23 @@ steno_duration:
unsigned {
$$ = new Duration;
if (!Duration::duration_type_b ($1))
- THIS->parser_error ("Not a duration:" + String ($1));
+ THIS->parser_error (_f ("not a duration: %d", $1));
else {
$$->durlog_i_ = Duration_convert::i2_type ($1);
$$->set_plet (THIS->plet_.iso_i_, THIS->plet_.type_i_);
}
}
| DURATION_IDENTIFIER {
- $$ = $1->duration ();
+ $$ = $1->access_Duration ();
}
| steno_duration '.' {
$$->dots_i_ ++;
}
| steno_duration '*' unsigned {
- $$->plet_.iso_i_ = $3; /* ugh. should do *= */
+ $$->plet_.iso_i_ *= $3;
}
| steno_duration '/' unsigned {
- $$->plet_.type_i_ = $3; /* ugh. should do *= iso = */
+ $$->plet_.type_i_ *= $3;
}
;
@@ -1264,20 +1251,19 @@ abbrev_type:
}
| ':' unsigned {
if (!Duration::duration_type_b ($2))
- THIS->parser_error ("Not a duration:" + String ($2));
+ THIS->parser_error (_f ("not a duration: %d", $2));
else if ($2 < 8)
- THIS->parser_error ("Can't abbreviate");
+ THIS->parser_error (_ ("can't abbreviate"));
$$ = $2;
}
-
;
-music_elt:
+simple_element:
steno_notepitch notemode_duration {
if (!THIS->lexer_p_->note_state_b ())
- THIS->parser_error ("have to be in Note mode for notes");
+ THIS->parser_error (_ ("have to be in Note mode for notes"));
$1->set_duration (*$2);
int durlog_i = $2->durlog_i_;
$$ = THIS->get_note_element ($1, $2);
@@ -1297,16 +1283,14 @@ music_elt:
$$ = velt_p;
}
- ;
-
-lyrics_elt:
- text_def notemode_duration {
- /* this sux! text-def should be feature of lyric-engraver. */
+ | STRING notemode_duration {
if (!THIS->lexer_p_->lyric_state_b ())
- THIS->parser_error ("Have to be in Lyric mode for lyrics");
- $$ = THIS->get_word_element ($1, $2);
+ THIS->parser_error (_ ("have to be in Lyric mode for lyrics"));
+ $$ = THIS->get_word_element (*$1, $2);
+ delete $1;
+ }
+ ;
- };
/*
UTILITIES
@@ -1314,7 +1298,7 @@ lyrics_elt:
pitch_list: {
$$ = new Array<Musical_pitch>;
}
- | pitch_list NOTENAME_PITCH {
+ | pitch_list musical_pitch {
$$->push (*$2);
delete $2;
}
@@ -1336,7 +1320,7 @@ int:
$$ = -$2;
}
| INT_IDENTIFIER {
- int *i_p = $1->intid ();
+ int *i_p = $1->access_int ();
$$ = *i_p;
delete i_p;
}
@@ -1347,8 +1331,8 @@ string_primary:
$$ = $1;
}
| STRING_IDENTIFIER {
- String *s_p = $1->string ();
- // $$ = * r_p;
+ String *s_p = $1->access_String ();
+
$$ = s_p;
DOUT << "Lookup string: " << *s_p << "\n";
}
@@ -1387,10 +1371,14 @@ symtables_body:
$$ = new Lookup;
}
| IDENTIFIER {
- $$ = $1->lookup ();
+ $$ = $1->access_Lookup ();
}
- | symtables_body TEXID STRING {
- $$->texsetting = *$3;
+ | symtables_body FONT STRING {
+ $$->font_ = *$3;
+ $$->font_path_ = global_path.find (*$3);
+ if (!$$->font_path_.length_i ())
+ THIS->here_input ().error (_f("can't open file: `%s'", $3->ch_C()));
+
delete $3;
}
| symtables_body STRING '=' symtable {
diff --git a/lily/performance.cc b/lily/performance.cc
index 81e281d659..4332a23486 100644
--- a/lily/performance.cc
+++ b/lily/performance.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <time.h>
@@ -26,7 +26,7 @@ Performance::Performance ()
}
void
-Performance::add (Audio_column* p)
+Performance::add_column (Audio_column* p)
{
p->performance_l_ = this;
audio_column_p_list_.bottom().add (p);
@@ -73,9 +73,8 @@ Performance::output_header_track (Midi_stream& midi_stream_r)
Midi_text generate (Midi_text::TEXT, str);
midi_track.add (Moment (0), &generate);
- str = _("from musical definition: ");
+ str = _f ("from musical definition: %s", origin_str_);
- str += origin_str_;
Midi_text from (Midi_text::TEXT, str);
midi_track.add (Moment (0), &from);
@@ -96,7 +95,7 @@ Performance::add_staff (Audio_staff* l)
}
void
-Performance::add (Audio_element *p)
+Performance::add_element (Audio_element *p)
{
audio_elem_p_list_.bottom().add (p);
}
@@ -127,17 +126,19 @@ Performance::process()
{
out = default_outname_base_global;
+ if (out == "-")
+ out = "lelie";
int def = midi_l_->get_next_default_count ();
if (def)
{
- out += "-" + String(def);
+ out += "-" + to_str (def);
}
out += ".midi";
}
Midi_stream midi_stream (out);
- *mlog << _("MIDI output to ") << out<< " ..." << endl;
+ *mlog << _f ("MIDI output to %s...", out) << endl;
target_str_global_array.push (out);
output (midi_stream);
diff --git a/lily/performer-group-performer.cc b/lily/performer-group-performer.cc
index a33b967e43..510ff51e22 100644
--- a/lily/performer-group-performer.cc
+++ b/lily/performer-group-performer.cc
@@ -3,8 +3,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "performer-group-performer.hh"
diff --git a/lily/performer.cc b/lily/performer.cc
index b62f37ec07..aa24f97bd1 100644
--- a/lily/performer.cc
+++ b/lily/performer.cc
@@ -3,8 +3,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
diff --git a/lily/piano-brace.cc b/lily/piano-brace.cc
new file mode 100644
index 0000000000..0d0d6a1ff0
--- /dev/null
+++ b/lily/piano-brace.cc
@@ -0,0 +1,54 @@
+
+/*
+ span-score-bar.cc -- implement Span_score_bar
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "piano-brace.hh"
+#include "atom.hh"
+#include "paper-def.hh"
+#include "lookup.hh"
+#include "main.hh"
+
+Piano_brace::Piano_brace ()
+{
+ extra_move_left_f_ = 0.0;
+}
+
+Atom
+Piano_brace::get_bar_sym (Real dy) const
+{
+ Atom a = lookup_l ()->vbrace (dy);
+ a.translate_axis (-extra_move_left_f_, X_AXIS);
+
+
+ return a;
+}
+
+Interval
+Piano_brace::do_width() const
+{
+ return Interval (0,0);
+}
+
+void
+Piano_brace::do_post_processing ()
+{
+ Span_score_bar::do_post_processing();
+ Interval i = Span_score_bar::do_height ();
+ Real staffheight_f = paper ()->staffheight_f ();
+
+ // don't set braces that span only one staff
+ if (i.length () <= 2.0 * staffheight_f)
+ {
+ set_empty (true);
+ transparent_b_ = true;
+ }
+}
+
+IMPLEMENT_IS_TYPE_B1(Piano_brace, Span_score_bar);
+
+
diff --git a/lily/pitch-squash-grav.cc b/lily/pitch-squash-engraver.cc
index a11b61b29e..026027ed04 100644
--- a/lily/pitch-squash-grav.cc
+++ b/lily/pitch-squash-engraver.cc
@@ -3,19 +3,19 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "pitch-squash-grav.hh"
+#include "pitch-squash-engraver.hh"
#include "note-head.hh"
void
-Pitch_squash_engraver::acknowledge_element (Score_elem_info i)
+Pitch_squash_engraver::acknowledge_element (Score_element_info i)
{
if (i.elem_l_->is_type_b (Note_head::static_name ()))
{
- Note_head * nl = (Note_head*)i.elem_l_->item ();
+ Note_head * nl = (Note_head*)i.elem_l_->access_Item ();
nl->position_i_ =0;
}
}
diff --git a/lily/plet-engraver.cc b/lily/plet-engraver.cc
index d4fc9005de..391ec74d40 100644
--- a/lily/plet-engraver.cc
+++ b/lily/plet-engraver.cc
@@ -1,7 +1,7 @@
/*
plet-engraver.cc -- implement Plet_engraver
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "proto.hh"
@@ -25,7 +25,7 @@ Plet_engraver::Plet_engraver ()
}
void
-Plet_engraver::acknowledge_element (Score_elem_info i)
+Plet_engraver::acknowledge_element (Score_element_info i)
{
if (!i.elem_l_->is_type_b (Stem::static_name ()))
return;
@@ -35,20 +35,20 @@ Plet_engraver::acknowledge_element (Score_elem_info i)
return;
if (!plet_spanner_p_->stem_l_drul_[LEFT])
- plet_spanner_p_->set_stem (LEFT, (Stem*)i.elem_l_->item ());
+ plet_spanner_p_->set_stem (LEFT, (Stem*)i.elem_l_->access_Item ());
else
if (span_reqs_drul_[RIGHT] && !plet_spanner_p_->stem_l_drul_[RIGHT])
- plet_spanner_p_->set_stem (RIGHT, (Stem*)i.elem_l_->item());
+ plet_spanner_p_->set_stem (RIGHT, (Stem*)i.elem_l_->access_Item ());
}
bool
Plet_engraver::do_try_request (Request* req_l)
{
- Musical_req* mus_l = req_l->musical ();
+ Musical_req* mus_l = req_l->access_Musical_req ();
if (!mus_l)
return false;
- Beam_req* b = mus_l->beam ();
+ Beam_req* b = mus_l->access_Beam_req ();
if (b)
{
if (b->spantype)
@@ -59,7 +59,7 @@ Plet_engraver::do_try_request (Request* req_l)
return false;
}
- Plet_req* p = mus_l->plet ();
+ Plet_req* p = mus_l->access_Plet_req ();
if (!p)
return false;
@@ -80,7 +80,7 @@ Plet_engraver::do_removal_processing ()
{
if (plet_spanner_p_)
{
- span_reqs_drul_[LEFT]->warning (_("unterminated plet"));
+ span_reqs_drul_[LEFT]->warning (_ ("unterminated plet"));
plet_spanner_p_->unlink ();
delete plet_spanner_p_;
plet_spanner_p_ = 0;
@@ -95,9 +95,9 @@ Plet_engraver::do_process_requests ()
return;
plet_spanner_p_ = new Plet_spanner;
- plet_spanner_p_->tdef_p_->text_str_ = span_reqs_drul_[LEFT]->plet_i_;
+ plet_spanner_p_->tdef_p_->text_str_ = to_str (span_reqs_drul_[LEFT]->plet_i_);
- announce_element (Score_elem_info (plet_spanner_p_, span_reqs_drul_[LEFT]));
+ announce_element (Score_element_info (plet_spanner_p_, span_reqs_drul_[LEFT]));
}
void
@@ -117,8 +117,11 @@ Plet_engraver::do_pre_move_processing ()
if (plet_spanner_p_->visibility_i_)
typeset_element (plet_spanner_p_);
else
- plet_spanner_p_->unlink ();
-
+ {
+ plet_spanner_p_->unlink ();
+ delete plet_spanner_p_;
+ }
+
plet_spanner_p_ = 0;
span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
}
diff --git a/lily/plet-spanner.cc b/lily/plet-spanner.cc
index feeacc4db7..cf25798781 100644
--- a/lily/plet-spanner.cc
+++ b/lily/plet-spanner.cc
@@ -3,11 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "atom.hh"
-#include "boxes.hh"
+#include "box.hh"
#include "debug.hh"
#include "lookup.hh"
#include "molecule.hh"
@@ -31,7 +31,7 @@ Plet_spanner::Plet_spanner ()
visibility_i_ = 3;
tdef_p_ = new Text_def;
- tdef_p_->align_i_ = CENTER;
+ tdef_p_->align_dir_ = CENTER;
tdef_p_->style_str_ = "italic";
}
@@ -59,12 +59,12 @@ Plet_spanner::brew_molecule_p () const
w += (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]);
- Atom a = paper ()->lookup_l ()->plet (dy_f, w, dir_);
+ Atom a = lookup_l ()->plet (dy_f, w, dir_);
a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
if (visibility_i_ >= 2)
- mol_p->add (a);
+ mol_p->add_atom (a);
Real interline_f = paper ()->interline_f ();
Real numy_f = (dir_ > 0 ? 0 : -interline_f) + dir_ * interline_f / 2;
@@ -73,7 +73,7 @@ Plet_spanner::brew_molecule_p () const
dy_f_drul_[LEFT] + dy_f / 2 + numy_f));
if (visibility_i_ >= 1)
- mol_p->add (num);
+ mol_p->add_atom (num);
return mol_p;
}
@@ -82,7 +82,7 @@ void
Plet_spanner::do_add_processing ()
{
if (! (stem_l_drul_[LEFT] && stem_l_drul_[RIGHT]))
- warning (_ ("Lonely plet.. "));
+ warning (_ ("lonely plet"));
Direction d = LEFT;
Drul_array<Stem *> new_stem_drul = stem_l_drul_;
@@ -126,12 +126,12 @@ Plet_spanner::do_post_processing ()
}
void
-Plet_spanner::do_substitute_dependency (Score_elem* o, Score_elem* n)
+Plet_spanner::do_substitute_dependency (Score_element* o, Score_element* n)
{
- Stem* new_l = n ? (Stem*)n->item () : 0;
- if (o->item () == stem_l_drul_[LEFT])
+ Stem* new_l = n ? (Stem*)n->access_Item () : 0;
+ if (o->access_Item () == stem_l_drul_[LEFT])
stem_l_drul_[LEFT] = new_l;
- else if (o->item () == stem_l_drul_[RIGHT])
+ else if (o->access_Item () == stem_l_drul_[RIGHT])
stem_l_drul_[RIGHT] = new_l;
}
diff --git a/lily/plet-swallow-engraver.cc b/lily/plet-swallow-engraver.cc
index c139576158..0e98605b6c 100644
--- a/lily/plet-swallow-engraver.cc
+++ b/lily/plet-swallow-engraver.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "musical-request.hh"
@@ -15,7 +15,7 @@ ADD_THIS_TRANSLATOR(Plet_swallow_engraver);
bool
Plet_swallow_engraver::do_try_request (Request* req_l)
{
- if (req_l && req_l->musical () && req_l->musical ()->plet ())
+ if (req_l && req_l->access_Musical_req () && req_l->access_Musical_req ()->access_Plet_req ())
return true;
return false;
}
diff --git a/lily/priority-halign-grav.cc b/lily/priority-halign-engraver.cc
index 76fc2b8046..60300b18a1 100644
--- a/lily/priority-halign-grav.cc
+++ b/lily/priority-halign-engraver.cc
@@ -3,13 +3,13 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "bar.hh"
#include "break-align-item.hh"
-#include "priority-halign-grav.hh"
-#include "score-priority-grav.hh"
+#include "priority-halign-engraver.hh"
+#include "score-priority-engraver.hh"
Priority_horizontal_align_engraver::Priority_horizontal_align_engraver()
{
@@ -27,7 +27,7 @@ Priority_horizontal_align_engraver::do_pre_move_processing()
}
void
-Priority_horizontal_align_engraver::acknowledge_element (Score_elem_info i)
+Priority_horizontal_align_engraver::acknowledge_element (Score_element_info i)
{
Engraver* reg = i.origin_grav_l_arr_[0];
if (reg->is_type_b (Score_priority_engraver::static_name()))
@@ -36,13 +36,13 @@ Priority_horizontal_align_engraver::acknowledge_element (Score_elem_info i)
{
halign_p_ = new Break_align_item;
halign_p_->breakable_b_ = true;
- announce_element (Score_elem_info (halign_p_,0));
+ announce_element (Score_element_info (halign_p_,0));
}
- Item * it = i.elem_l_->item();
+ Item * it = i.elem_l_->access_Item ();
if (it->break_priority_i_ == 0)
halign_p_->center_l_ = it;
- halign_p_->add (it, it->break_priority_i_);
+ halign_p_->add_item (it, it->break_priority_i_);
}
}
diff --git a/lily/property-iterator.cc b/lily/property-iterator.cc
index 61a1b933c3..da30301901 100644
--- a/lily/property-iterator.cc
+++ b/lily/property-iterator.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "property-iterator.hh"
diff --git a/lily/ps-plet.cc b/lily/ps-plet.cc
index 8d08d22b2b..47819d2203 100644
--- a/lily/ps-plet.cc
+++ b/lily/ps-plet.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <math.h>
@@ -11,7 +11,7 @@
#include "misc.hh"
#include "lookup.hh"
#include "molecule.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "debug.hh"
#include "paper-def.hh"
#include "string-convert.hh"
diff --git a/lily/qlpsolve.cc b/lily/qlpsolve.cc
index 78e0704277..3a249a8a31 100644
--- a/lily/qlpsolve.cc
+++ b/lily/qlpsolve.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
TODO:
try fixed point arithmetic, to speed up lily.
@@ -22,13 +22,13 @@ Active_constraints::status() const
String s ("Active|Inactive [");
for (int i=0; i< active.size(); i++)
{
- s += String (active[i]) + " ";
+ s += to_str (active[i]) + " ";
}
s+="| ";
for (int i=0; i< inactive.size(); i++)
{
- s += String (inactive[i]) + " ";
+ s += to_str (inactive[i]) + " ";
}
s+="]";
@@ -70,78 +70,81 @@ Active_constraints::get_lagrange (Vector gradient)
}
void
-Active_constraints::add (int k)
+Active_constraints::add_constraint (int k)
{
// add indices
int cidx=inactive[k];
- active.push (cidx);
-
- inactive.swap (k,inactive.size()-1);
- inactive.pop();
Vector a (opt->cons_[cidx]);
// update of matrices
Vector Ha = H*a;
Real aHa = a*Ha;
Vector addrow (Ha.dim());
- if (abs (aHa) > EPS)
+ bool degenerate = (abs (aHa) < EPS);
+
+ if (degenerate)
{
+ warning (String ("Active_constraints::add ():")
+ + _("degenerate constraints"));
+ DOUT << "Ha = " << Ha.str () << '\n';
/*
a != 0, so if Ha = O(EPS), then
Ha * aH / aHa = O(EPS^2/EPS)
if H*a == 0, the constraints are dependent.
- */
- H -= Matrix (Ha/aHa , Ha);
-
+ */
+ degenerate_count_i_ ++;
+ }
+ if (!degenerate)
+ {
+ active.push (cidx);
+ inactive.swap (k,inactive.size()-1);
+ inactive.pop();
- /*
- sorry, don't know how to justify this. ..
- */
+ H -= Matrix (Ha/aHa , Ha);
+
addrow=Ha;
- addrow/= aHa;
+ addrow /= aHa;
A -= Matrix (A*a, addrow);
A.insert_row (addrow,A.rows());
- }else
- WARN << _("degenerate constraints");
+ }
}
void
-Active_constraints::drop (int k)
+Active_constraints::drop_constraint (int k)
{
int q=active.size()-1;
- // drop indices
- inactive.push (active[k]);
- active.swap (k,q);
- A.swap_rows (k,q);
- active.pop();
Vector a (A.row (q));
if (a.norm() > EPS)
{
+ // drop indices
+ inactive.push (active[k]);
+ active.swap (k,q);
+ A.swap_rows (k,q);
+ active.pop();
/*
*/
- Real q = a*opt->quad_*a;
- Matrix aaq (a,a/q);
+ Real aqa = a*opt->quad_*a;
+ Matrix aaq (a,a/aqa);
H += aaq;
A -= A*opt->quad_*aaq;
- }else
- WARN << _("degenerate constraints");
-#ifndef NDEBUG
- Vector rem_row (A.row (q));
- assert (rem_row.norm() < EPS);
-#endif
-
- A.delete_row (q);
+
+ A.delete_row (q);
+ }else {
+ degenerate_count_i_ ++;
+ warning (String ("Active_constraints::drop ():")
+ + _("degenerate constraints"));
+ }
}
Active_constraints::Active_constraints (Ineq_constrained_qp const *op)
- : A(0,op->dim()),
- H(op->dim()),
- opt (op)
+ : A(0,op->dim()),
+ H(op->dim()),
+ opt (op)
{
for (int i=0; i < op->cons_.size(); i++)
inactive.push (i);
@@ -152,6 +155,8 @@ Active_constraints::Active_constraints (Ineq_constrained_qp const *op)
*/
H=chol.inverse();
OK();
+
+ degenerate_count_i_ = 0;
}
/** Find the optimum which is in the planes generated by the active
diff --git a/lily/relative-octave-music.cc b/lily/relative-octave-music.cc
index 0b80d49c12..db24b85fc0 100644
--- a/lily/relative-octave-music.cc
+++ b/lily/relative-octave-music.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/request-iterator.cc b/lily/request-iterator.cc
index 19be49a8d3..81b7fd2686 100644
--- a/lily/request-iterator.cc
+++ b/lily/request-iterator.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "translator-group.hh"
@@ -53,6 +53,7 @@ Request_chord_iterator::do_print() const
DOUT << "duration: " << elt_duration_;
#endif
}
+
void
Request_chord_iterator::process_and_next (Moment mom)
{
@@ -64,8 +65,7 @@ Request_chord_iterator::process_and_next (Moment mom)
Request * req_l = (Request*)i.ptr();
bool gotcha = report_to_l()->try_request (req_l);
if (!gotcha)
- req_l->warning (_("Junking request: ") + String (req_l->name()));
-
+ req_l->warning (_f ("junking request: `%s\'", req_l->name()));
}
first_b_ = false;
}
diff --git a/lily/request.cc b/lily/request.cc
index 920cc79ca5..bf20a29075 100644
--- a/lily/request.cc
+++ b/lily/request.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "request.hh"
@@ -28,9 +28,9 @@ bool
Request::equal_b (Request *r) const
{
if (is_type_b (r->name()))
- return r->do_equal_b ((Request*)this);
+ return r->do_equal_b ((Request*)this);
if (r->is_type_b (name()))
- return do_equal_b (r);
+ return do_equal_b (r);
return false;
}
diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc
new file mode 100644
index 0000000000..d139313be2
--- /dev/null
+++ b/lily/rest-collision-engraver.cc
@@ -0,0 +1,52 @@
+/*
+ rest-collision-reg.cc -- implement Rest_collision_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "debug.hh"
+#include "rest-collision.hh"
+#include "rest-collision-engraver.hh"
+#include "collision.hh"
+#include "note-column.hh"
+
+
+IMPLEMENT_IS_TYPE_B1(Rest_collision_engraver, Engraver);
+ADD_THIS_TRANSLATOR(Rest_collision_engraver);
+
+Rest_collision_engraver::Rest_collision_engraver()
+{
+ rest_collision_p_ =0;
+}
+
+void
+Rest_collision_engraver::process_acknowledged ()
+{
+ if (rest_collision_p_ || note_column_l_arr_.size () < 2)
+ return;
+
+ rest_collision_p_ = new Rest_collision;
+ announce_element (Score_element_info (rest_collision_p_, 0));
+ for (int i=0; i< note_column_l_arr_.size (); i++)
+ rest_collision_p_->add_column (note_column_l_arr_[i]);
+}
+
+void
+Rest_collision_engraver::acknowledge_element (Score_element_info i)
+{
+ if (i.elem_l_->is_type_b (Note_column::static_name()))
+ note_column_l_arr_.push ((Note_column*)i.elem_l_->access_Item ());
+}
+
+void
+Rest_collision_engraver::do_pre_move_processing()
+{
+ if (rest_collision_p_)
+ {
+ typeset_element (rest_collision_p_);
+ rest_collision_p_ = 0;
+ }
+ note_column_l_arr_.clear ();
+}
diff --git a/lily/rest-collision-grav.cc b/lily/rest-collision-grav.cc
deleted file mode 100644
index 3729f28e7e..0000000000
--- a/lily/rest-collision-grav.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- rest-collision-reg.cc -- implement Rest_collision_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "debug.hh"
-#include "rest-collision.hh"
-#include "rest-collision-grav.hh"
-#include "collision.hh"
-#include "note-column.hh"
-
-
-IMPLEMENT_IS_TYPE_B1(Rest_collision_engraver, Engraver);
-ADD_THIS_TRANSLATOR(Rest_collision_engraver);
-
-Rest_collision_engraver::Rest_collision_engraver()
-{
- rest_collision_p_ =0;
-}
-
-void
-Rest_collision_engraver::acknowledge_element (Score_elem_info i)
-{
- if (i.elem_l_->is_type_b (Note_column::static_name()))
- {
- // what should i do, what should _engraver do?
- if (!rest_collision_p_)
- {
- rest_collision_p_ = new Rest_collision;
- announce_element (Score_elem_info (rest_collision_p_, 0));
- }
- rest_collision_p_->add ((Note_column*)i.elem_l_->item());
- }
-}
-
-void
-Rest_collision_engraver::do_pre_move_processing()
-{
- if (rest_collision_p_)
- {
- typeset_element (rest_collision_p_);
- rest_collision_p_ = 0;
- }
-}
diff --git a/lily/rest-collision.cc b/lily/rest-collision.cc
index 38f0a65db8..c8f0d3e789 100644
--- a/lily/rest-collision.cc
+++ b/lily/rest-collision.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "debug.hh"
@@ -18,7 +18,7 @@
IMPLEMENT_IS_TYPE_B1(Rest_collision,Item);
void
-Rest_collision::add (Note_column *nc_l)
+Rest_collision::add_column (Note_column *nc_l)
{
add_dependency (nc_l);
if (nc_l->rest_b ())
@@ -129,14 +129,14 @@ Rest_collision::do_print() const
}
void
-Rest_collision::do_substitute_dependency (Score_elem*o,Score_elem*n)
+Rest_collision::do_substitute_dependency (Score_element*o,Score_element*n)
{
- Item*o_l = o->item();
+ Item*o_l = o->access_Item ();
if (o_l&&o_l->is_type_b (Note_column::static_name ()))
{
- Note_column *n_l = n?(Note_column*)n->item():0;
+ Note_column *n_l = n?(Note_column*)n->access_Item ():0;
rest_l_arr_.substitute ((Note_column*)o_l, n_l);
ncol_l_arr_.substitute ((Note_column*)o_l, n_l);
}
diff --git a/lily/rest-grav.cc b/lily/rest-engraver.cc
index 5791c6bd66..96c40d75c2 100644
--- a/lily/rest-grav.cc
+++ b/lily/rest-engraver.cc
@@ -3,10 +3,10 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "rest-grav.hh"
+#include "rest-engraver.hh"
#include "musical-request.hh"
#include "dots.hh"
#include "rest.hh"
@@ -53,20 +53,20 @@ Rest_engraver::do_process_requests ()
{
dot_p_ = new Dots;
rest_p_->dots_l_ =dot_p_;
- announce_element (Score_elem_info (dot_p_,0));
+ announce_element (Score_element_info (dot_p_,0));
}
- announce_element (Score_elem_info (rest_p_, rest_req_l_));
+ announce_element (Score_element_info (rest_p_, rest_req_l_));
}
}
bool
Rest_engraver::do_try_request (Request *r)
{
- Musical_req *m = r->musical ();
- if (!m || !m->rest ())
+ Musical_req *m = r->access_Musical_req ();
+ if (!m || !m->access_Rest_req ())
return false;
- rest_req_l_ = m->rest (); // ugh
+ rest_req_l_ = m->access_Rest_req (); // ugh
return true;
}
diff --git a/lily/rest.cc b/lily/rest.cc
index e46f3f8673..dc13cb911f 100644
--- a/lily/rest.cc
+++ b/lily/rest.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "molecule.hh"
@@ -17,7 +17,7 @@
void
Rest::do_add_processing ()
{
- if (balltype_i_ != 0 && balltype_i_ != 1)
+ if (balltype_i_ > 1)
position_i_ -= 4;
else if (balltype_i_ == 0)
position_i_ += 2;
@@ -41,7 +41,7 @@ Rest::brew_molecule_p () const
bool streepjes_b = abs(position_i_) > staff_size_i_ /2 &&
(balltype_i_ == 0 || balltype_i_ == 1);
- Atom s(paper ()->lookup_l()->rest (balltype_i_, streepjes_b));
+ Atom s(lookup_l ()->rest (balltype_i_, streepjes_b));
Molecule * m = new Molecule ( Atom (s));
m->translate_axis (position_i_ * paper ()->internote_f (), Y_AXIS);
return m;
diff --git a/lily/rhythmic-column-engraver.cc b/lily/rhythmic-column-engraver.cc
new file mode 100644
index 0000000000..6d7fc6927b
--- /dev/null
+++ b/lily/rhythmic-column-engraver.cc
@@ -0,0 +1,120 @@
+/*
+ rhythmic-column-grav.cc -- implement Rhythmic_column_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "rhythmic-column-engraver.hh"
+#include "note-head.hh"
+#include "stem.hh"
+#include "note-column.hh"
+#include "script.hh"
+#include "dot-column.hh"
+
+Rhythmic_column_engraver::Rhythmic_column_engraver()
+{
+ stem_l_ =0;
+ ncol_p_=0;
+ dotcol_l_ =0;
+}
+
+
+void
+Rhythmic_column_engraver::process_acknowledged ()
+{
+ if (rhead_l_arr_.size ())
+ {
+ if (!ncol_p_)
+ {
+ ncol_p_ = new Note_column;
+ announce_element (Score_element_info (ncol_p_, 0));
+ }
+
+ for (int i=0; i < rhead_l_arr_.size (); i++)
+ {
+ ncol_p_->add_head (rhead_l_arr_[i]);
+ }
+ rhead_l_arr_.set_size (0);
+ }
+
+
+ if (ncol_p_)
+ {
+ if (dotcol_l_)
+ {
+ ncol_p_->set_dotcol (dotcol_l_);
+ }
+
+ if (stem_l_)
+ {
+ ncol_p_->set_stem (stem_l_);
+ stem_l_ = 0;
+ }
+
+ for (int i=0; i < script_l_arr_.size(); i++)
+ {
+ if (ncol_p_)
+ ncol_p_->add_script (script_l_arr_[i]);
+ }
+
+ script_l_arr_.clear();
+ }
+}
+
+void
+Rhythmic_column_engraver::acknowledge_element (Score_element_info i)
+{
+ Item * item = i.elem_l_->access_Item ();
+ if (!item)
+ return;
+ if (item->is_type_b (Script::static_name ())
+ && i.req_l_
+ && i.req_l_->access_Musical_req ())
+ {
+ script_l_arr_.push ((Script*)item);
+ }
+ else if (item->is_type_b (Stem::static_name()))
+ {
+ stem_l_ = (Stem*) item;
+ }
+ else if (item->is_type_b (Rhythmic_head::static_name ()))
+ {
+ rhead_l_arr_.push ((Rhythmic_head*)item);
+ }
+ else if (item->is_type_b (Dot_column::static_name ()))
+ {
+ dotcol_l_ = (Dot_column*) item;
+ }
+}
+
+void
+Rhythmic_column_engraver::do_pre_move_processing()
+{
+ if (ncol_p_)
+ {
+ if (! ncol_p_->h_shift_b_)
+ // egcs
+ ncol_p_->h_shift_b_ = get_property ("hshift").operator bool ();
+ if (! ncol_p_->dir_)
+ ncol_p_->dir_ =(Direction) int(get_property ("ydirection"));
+
+ typeset_element (ncol_p_);
+ ncol_p_ =0;
+ }
+}
+
+void
+Rhythmic_column_engraver::do_post_move_processing()
+{
+ script_l_arr_.clear();
+ dotcol_l_ =0;
+ stem_l_ =0;
+}
+
+
+
+
+IMPLEMENT_IS_TYPE_B1(Rhythmic_column_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Rhythmic_column_engraver);
diff --git a/lily/rhythmic-column-grav.cc b/lily/rhythmic-column-grav.cc
deleted file mode 100644
index e6d5b66c04..0000000000
--- a/lily/rhythmic-column-grav.cc
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- rhythmic-column-grav.cc -- implement Rhythmic_column_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "rhythmic-column-grav.hh"
-#include "note-head.hh"
-#include "stem.hh"
-#include "note-column.hh"
-#include "script.hh"
-#include "dot-column.hh"
-
-Rhythmic_column_engraver::Rhythmic_column_engraver()
-{
- stem_l_ =0;
- ncol_p_=0;
- dotcol_p_ =0;
-}
-
-
-void
-Rhythmic_column_engraver::acknowledge_element (Score_elem_info i)
-{
- if (i.elem_l_->is_type_b (Script::static_name ())
- && i.req_l_ && i.req_l_->musical ())
- {
- script_l_arr_.push ((Script*)i.elem_l_->item());
- }
- else if (i.elem_l_->is_type_b (Stem::static_name()))
- {
- stem_l_ = (Stem*) i.elem_l_->item();
- }
- else if (i.elem_l_->is_type_b (Rhythmic_head::static_name ()))
- {
- Rhythmic_head * r = (Rhythmic_head*)i.elem_l_->item ();
- if (!ncol_p_)
- {
- ncol_p_ = new Note_column;
- announce_element (Score_elem_info (ncol_p_, 0));
- }
- ncol_p_->add (r);
-
- if (r->dots_l_)
- {
- if (!dotcol_p_)
- {
- dotcol_p_ = new Dot_column;
- ncol_p_->set (dotcol_p_);
- announce_element (Score_elem_info (dotcol_p_, 0));
- }
- dotcol_p_->add (r);
- }
- }
-
- if (ncol_p_)
- {
- if (stem_l_&& !ncol_p_->stem_l_)
- ncol_p_->set (stem_l_);
-
- for (int i=0; i < script_l_arr_.size(); i++)
- {
- if (ncol_p_)
- ncol_p_->add (script_l_arr_[i]);
- }
-
- script_l_arr_.clear();
- }
-}
-
-void
-Rhythmic_column_engraver::do_pre_move_processing()
-{
- if (ncol_p_)
- {
- if (! ncol_p_->h_shift_b_)
- // egcs
- ncol_p_->h_shift_b_ = get_property ("hshift").operator bool ();
- if (! ncol_p_->dir_)
- ncol_p_->dir_ =(Direction) int(get_property ("ydirection"));
-
- typeset_element (ncol_p_);
- ncol_p_ =0;
- }
- if (dotcol_p_)
- {
- typeset_element (dotcol_p_);
- dotcol_p_ =0;
- }
-}
-
-void
-Rhythmic_column_engraver::do_post_move_processing()
-{
- script_l_arr_.clear();
- stem_l_ =0;
-}
-
-
-
-
-IMPLEMENT_IS_TYPE_B1(Rhythmic_column_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Rhythmic_column_engraver);
diff --git a/lily/rhythmic-head.cc b/lily/rhythmic-head.cc
index 99e2f52680..ab9e7396dc 100644
--- a/lily/rhythmic-head.cc
+++ b/lily/rhythmic-head.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "rhythmic-head.hh"
@@ -22,7 +22,7 @@ Rhythmic_head::do_add_processing ()
if (dots_i_ && !dots_l_)
{
Dots *d = new Dots;
- add (d);
+ add_dots (d);
pscore_l_->typeset_element (d);
axis_group_l_a_[Y_AXIS]->add_element (d);
axis_group_l_a_[X_AXIS]->add_element (d);
@@ -34,7 +34,7 @@ Rhythmic_head::do_add_processing ()
}
void
-Rhythmic_head::add (Dots *dot_l)
+Rhythmic_head::add_dots (Dots *dot_l)
{
dots_l_ = dot_l;
dot_l->add_dependency (this);
@@ -49,10 +49,10 @@ Rhythmic_head::Rhythmic_head ()
}
void
-Rhythmic_head::do_substitute_dependent (Score_elem*o,Score_elem*n)
+Rhythmic_head::do_substitute_dependent (Score_element*o,Score_element*n)
{
if (o == dots_l_)
- dots_l_ = n ? (Dots*)n->item () :0;
+ dots_l_ = n ? (Dots*)n->access_Item () :0;
}
IMPLEMENT_IS_TYPE_B1(Rhythmic_head, Item);
diff --git a/lily/rod.cc b/lily/rod.cc
index 6bbcbd6dcc..1b2ae4f824 100644
--- a/lily/rod.cc
+++ b/lily/rod.cc
@@ -3,14 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "rod.hh"
#include "p-col.hh"
#include "debug.hh"
#include "single-malt-grouping-item.hh"
-#include "dimen.hh"
+#include "dimension.hh"
Rod::Rod (Single_malt_grouping_item *l, Single_malt_grouping_item *r)
diff --git a/lily/scope.cc b/lily/scope.cc
index 52a185ee91..2e20a1b38d 100644
--- a/lily/scope.cc
+++ b/lily/scope.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -20,7 +20,7 @@ Scope::print () const
{
if (ai.val()->init_b_ == init_b)
{
- DOUT << ai.key() << '=';
+ DOUT << ai.key() << "=";
ai.val()->print ();
}
}
@@ -30,8 +30,8 @@ Scope::~Scope ()
{
for (Assoc_iter<String,Identifier*> ai (*this); ai.ok(); ai++)
{
- DOUT << "deleting: " << ai.key()<<'\n';
- delete ai.val();
+ DOUT << "deleting: " << ai.key() << '\n';
+ delete ai.val ();
}
}
diff --git a/lily/score-bar.cc b/lily/score-bar.cc
index 1882347664..d276f13102 100644
--- a/lily/score-bar.cc
+++ b/lily/score-bar.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
diff --git a/lily/score-column.cc b/lily/score-column.cc
index abe35406c0..6481709e27 100644
--- a/lily/score-column.cc
+++ b/lily/score-column.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "debug.hh"
@@ -22,7 +22,7 @@ void
Score_column::do_print() const
{
#ifndef NPRINT
- DOUT << "mus "<< musical_b_ <<" at " << when_<< '\n';
+ DOUT << "mus "<< musical_b_ << " at " << when_ << '\n';
if (break_penalty_i_ >= Break_req::FORCE)
DOUT << "Break forced";
@@ -52,8 +52,8 @@ Score_column::add_duration (Moment d)
{
if (!d)
{
- warning (_("Ignoring zero duration added to column at ")
- + when_.str ());
+ warning (_f ("ignoring zero duration added to column at %s",
+ when_.str ()));
return;
}
diff --git a/lily/score-elem-info.cc b/lily/score-elem-info.cc
deleted file mode 100644
index e86ca93860..0000000000
--- a/lily/score-elem-info.cc
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- score-elem-info.cc -- implement Score_elem_info
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "score-elem-info.hh"
-#include "request.hh"
-
-Score_elem_info::Score_elem_info (Score_elem*s_l, Request*r_l)
-{
- elem_l_ = s_l;
- req_l_ = r_l;
-}
-
-Score_elem_info::Score_elem_info()
-{
- elem_l_ = 0;
- req_l_ = 0;
-}
-
-
-
diff --git a/lily/score-element-info.cc b/lily/score-element-info.cc
new file mode 100644
index 0000000000..a0c6f68e85
--- /dev/null
+++ b/lily/score-element-info.cc
@@ -0,0 +1,25 @@
+/*
+ score-element-info.cc -- implement Score_element_info
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "score-element-info.hh"
+#include "request.hh"
+
+Score_element_info::Score_element_info (Score_element*s_l, Request*r_l)
+{
+ elem_l_ = s_l;
+ req_l_ = r_l;
+}
+
+Score_element_info::Score_element_info()
+{
+ elem_l_ = 0;
+ req_l_ = 0;
+}
+
+
+
diff --git a/lily/score-elem.cc b/lily/score-element.cc
index 929838a185..94b6da163f 100644
--- a/lily/score-elem.cc
+++ b/lily/score-element.cc
@@ -1,33 +1,41 @@
/*
- score-elem.cc -- implement Score_elem
+ score-elem.cc -- implement Score_element
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "outputter.hh"
+
+
+#include <string.h>
+
+#include "tex-outputter.hh"
#include "p-score.hh"
#include "paper-def.hh"
#include "lookup.hh"
#include "molecule.hh"
-#include "score-elem.hh"
+#include "score-element.hh"
#include "debug.hh"
#include "tex.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "spanner.hh"
-#include "scoreline.hh"
+#include "line-of-score.hh"
#include "item.hh"
#include "p-col.hh"
#include "molecule.hh"
+#include "misc.hh"
-Score_elem::Score_elem()
+#define PARANOID
+
+Score_element::Score_element()
{
transparent_b_ = false;
+ size_i_ = 0;
pscore_l_=0;
status_i_ = 0;
}
-Score_elem::Score_elem (Score_elem const&s)
+Score_element::Score_element (Score_element const&s)
: Directed_graph_node (s), Graphical_element (s)
{
/* called from derived ctor, so most info points to the same deps
@@ -38,34 +46,37 @@ Score_elem::Score_elem (Score_elem const&s)
transparent_b_ = s.transparent_b_;
status_i_ = s.status_i_;
pscore_l_ = s.pscore_l_;
+ size_i_ = s.size_i_;
}
-Score_elem::~Score_elem()
+
+
+
+Score_element::~Score_element()
{
assert (status_i_ >=0);
- status_i_ = -1;
}
-Score_elem*
-Score_elem::dependency (int i) const
+Score_element*
+Score_element::dependency (int i) const
{
- return (Score_elem*) get_out_edge_arr ()[i];
+ return (Score_element*) get_out_edge_arr ()[i];
}
int
-Score_elem::dependency_size () const
+Score_element::dependency_size () const
{
return get_out_edge_arr ().size ();
}
-Score_elem*
-Score_elem::dependent (int i) const
+Score_element*
+Score_element::dependent (int i) const
{
- return (Score_elem*) get_in_edge_arr()[i];
+ return (Score_element*) get_in_edge_arr()[i];
}
int
-Score_elem::dependent_size() const
+Score_element::dependent_size() const
{
return get_in_edge_arr().size ();
}
@@ -73,7 +84,7 @@ Score_elem::dependent_size() const
Interval
-Score_elem::do_width() const
+Score_element::do_width() const
{
Interval r;
@@ -85,7 +96,7 @@ Score_elem::do_width() const
}
Interval
-Score_elem::do_height() const
+Score_element::do_height() const
{
Interval r;
Molecule*m = brew_molecule_p();
@@ -99,14 +110,14 @@ Score_elem::do_height() const
STANDARD METHS
*/
void
-Score_elem::print() const
+Score_element::print() const
{
#ifndef NPRINT
DOUT << name() << "{\n";
DOUT << "dets: " << dependent_size() << "dependencies: " <<
dependency_size();
- Graphical_element::print ();
+ Graphical_element::do_print ();
do_print();
DOUT << "}\n";
@@ -115,15 +126,21 @@ Score_elem::print() const
Paper_def*
-Score_elem::paper() const
+Score_element::paper() const
{
assert (pscore_l_);
return pscore_l_->paper_l_;
}
+Lookup *
+Score_element::lookup_l () const
+{
+ return pscore_l_->paper_l_->lookup_l (size_i_);
+}
+
void
-Score_elem::add_processing()
+Score_element::add_processing()
{
if (status_i_)
return;
@@ -133,8 +150,8 @@ Score_elem::add_processing()
void
-Score_elem::calcalute_dependencies (int final, int busy,
- Score_elem_method_pointer funcptr)
+Score_element::calcalute_dependencies (int final, int busy,
+ Score_element_method_pointer funcptr)
{
if (status_i_ >= final)
return;
@@ -145,7 +162,7 @@ Score_elem::calcalute_dependencies (int final, int busy,
for (int i=0; i < dependency_size(); i++)
dependency (i)->calcalute_dependencies (final, busy, funcptr);
- Link_array<Score_elem> extra (get_extra_dependencies());
+ Link_array<Score_element> extra (get_extra_dependencies());
for (int i=0; i < extra.size(); i++)
extra[i]->calcalute_dependencies (final, busy, funcptr);
@@ -156,12 +173,13 @@ Score_elem::calcalute_dependencies (int final, int busy,
}
void
-Score_elem::do_brew_molecule ()
+Score_element::do_brew_molecule ()
{
if (transparent_b_)
return;
Molecule *output= brew_molecule_p ();
- pscore_l_->outputter_l_->output_molecule (output, absolute_offset ());
+ pscore_l_->outputter_l_->output_molecule (output, absolute_offset (), name());
+ delete output;
}
/*
@@ -171,68 +189,68 @@ Score_elem::do_brew_molecule ()
*/
void
-Score_elem::do_break_processing()
+Score_element::do_break_processing()
{
handle_broken_dependencies();
}
void
-Score_elem::do_post_processing()
+Score_element::do_post_processing()
{
}
void
-Score_elem::do_breakable_col_processing()
+Score_element::do_breakable_col_processing()
{
handle_prebroken_dependencies();
}
void
-Score_elem::do_pre_processing()
+Score_element::do_pre_processing()
{
}
void
-Score_elem::do_space_processing ()
+Score_element::do_space_processing ()
{
}
void
-Score_elem::do_add_processing()
+Score_element::do_add_processing()
{
}
void
-Score_elem::do_substitute_dependency (Score_elem*,Score_elem*)
+Score_element::do_substitute_dependency (Score_element*,Score_element*)
{
}
void
-Score_elem::do_substitute_dependent (Score_elem*,Score_elem*)
+Score_element::do_substitute_dependent (Score_element*,Score_element*)
{
}
void
-Score_elem::do_unlink()
+Score_element::do_unlink()
{
}
void
-Score_elem::do_junk_links()
+Score_element::do_junk_links()
{
}
-IMPLEMENT_IS_TYPE_B1(Score_elem, Graphical_element);
+IMPLEMENT_IS_TYPE_B1(Score_element, Graphical_element);
Molecule*
-Score_elem::brew_molecule_p() const
+Score_element::brew_molecule_p() const
{
- Atom a (paper()->lookup_l ()->fill (Box (Interval (0,0), Interval (0,0))));
+ Atom a (lookup_l ()->fill (Box (Interval (0,0), Interval (0,0))));
return new Molecule (a);
}
Line_of_score *
-Score_elem::line_l() const
+Score_element::line_l() const
{
return 0;
}
@@ -244,48 +262,48 @@ Score_elem::line_l() const
*/
void
-Score_elem::remove_dependency (Score_elem*e)
+Score_element::remove_dependency (Score_element*e)
{
remove_edge_out (e);
substitute_dependency (e, 0);
}
void
-Score_elem::add_dependency (Score_elem*e)
+Score_element::add_dependency (Score_element*e)
{
- Directed_graph_node::add (e);
+ Directed_graph_node::add_edge (e);
}
void
-Score_elem::substitute_dependency (Score_elem* old, Score_elem* new_l)
+Score_element::substitute_dependency (Score_element* old, Score_element* new_l)
{
do_substitute_dependency (old,new_l);
old->do_substitute_dependent (this, 0);
}
void
-Score_elem::handle_broken_dependencies()
+Score_element::handle_broken_dependencies()
{
Line_of_score *line = line_l();
if (!line)
return;
- Link_array<Score_elem> remove_us_arr;
+ Link_array<Score_element> remove_us_arr;
for (int i=0; i < dependency_size(); i++)
{
- Score_elem * elt = dependency (i);
+ Score_element * elt = dependency (i);
if (elt->line_l() != line)
{
- if (elt->spanner())
+ if (elt->access_Spanner ())
{
- Spanner * sp = elt->spanner();
+ Spanner * sp = elt->access_Spanner ();
Spanner * broken = sp->find_broken_piece (line);
substitute_dependency (sp, broken);
add_dependency (broken);
}
- else if (elt->item())
+ else if (elt->access_Item ())
{
- Item * my_item = elt->item()->find_prebroken_piece (line);
+ Item * my_item = elt->access_Item ()->find_prebroken_piece (line);
substitute_dependency (elt, my_item);
if (my_item)
@@ -315,18 +333,18 @@ Score_elem::handle_broken_dependencies()
How to let span (a derived class) know that this happened?
*/
void
-Score_elem::handle_prebroken_dependencies()
+Score_element::handle_prebroken_dependencies()
{
- Link_array<Score_elem> old_arr, new_arr;
+ Link_array<Score_element> old_arr, new_arr;
for (int i=0; i < dependency_size(); i++)
{
- Score_elem * elt = dependency (i);
- Item *it_l = elt->item();
+ Score_element * elt = dependency (i);
+ Item *it_l = elt->access_Item ();
if (it_l && it_l->breakable_b_)
- if (item())
+ if (access_Item ())
{
- Score_elem *new_l = it_l->find_prebroken_piece (item()->break_status_i_);
+ Score_element *new_l = it_l->find_prebroken_piece (access_Item ()->break_status_dir_);
if (new_l != elt)
{
new_arr.push (new_l);
@@ -349,7 +367,7 @@ Score_elem::handle_prebroken_dependencies()
void
-Score_elem::junk_links ()
+Score_element::junk_links ()
{
Directed_graph_node::junk_links();
Graphical_element::junk_links ();
@@ -357,7 +375,7 @@ Score_elem::junk_links ()
}
void
-Score_elem::unlink()
+Score_element::unlink()
{
do_unlink();
while (dependency_size())
@@ -369,24 +387,20 @@ Score_elem::unlink()
{
dependent (0)->remove_dependency (this);
}
- for (int j=0; j < 2; j++)
- if (axis_group_l_a_[j])
- axis_group_l_a_[j]->remove_element (this);
+ Graphical_element::unlink ();
}
-Link_array<Score_elem>
-Score_elem::get_extra_dependencies() const
+Link_array<Score_element>
+Score_element::get_extra_dependencies() const
{
- Link_array<Score_elem> empty;
+ Link_array<Score_element> empty;
return empty;
}
bool
-Score_elem::linked_b() const
+Score_element::linked_b() const
{
return get_extra_dependencies().size() ||
dependency_size();
}
-
-
diff --git a/lily/score-grav.cc b/lily/score-engraver.cc
index bbcaec2685..1df1ecd5f8 100644
--- a/lily/score-grav.cc
+++ b/lily/score-engraver.cc
@@ -3,14 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "super-elem.hh"
-#include "scoreline.hh"
+#include "super-element.hh"
+#include "line-of-score.hh"
#include "debug.hh"
#include "item.hh"
-#include "score-grav.hh"
+#include "score-engraver.hh"
#include "p-score.hh"
#include "musical-request.hh"
#include "score-column.hh"
@@ -78,7 +78,7 @@ Score_engraver::process()
}
void
-Score_engraver::announce_element (Score_elem_info info)
+Score_engraver::announce_element (Score_element_info info)
{
announce_info_arr_.push (info);
info.origin_grav_l_arr_.push (this);
@@ -103,8 +103,8 @@ Score_engraver::do_announces()
*/
if (announce_info_arr_[i].req_l_)
{
- Musical_req *m = announce_info_arr_[i].req_l_->musical();
- if (m && m->rhythmic())
+ Musical_req *m = announce_info_arr_[i].req_l_->access_Musical_req ();
+ if (m && m->access_Rhythmic_req ())
{
musical_column_l_->add_duration (m->duration());
}
@@ -115,7 +115,7 @@ Score_engraver::do_announces()
void
-Score_engraver::typeset_element (Score_elem *elem_p)
+Score_engraver::typeset_element (Score_element *elem_p)
{
elem_p_arr_.push(elem_p);
}
@@ -125,10 +125,10 @@ Score_engraver::typeset_all()
{
for (int i =0; i < elem_p_arr_.size(); i++)
{
- Score_elem * elem_p = elem_p_arr_[i];
- if (elem_p->spanner())
+ Score_element * elem_p = elem_p_arr_[i];
+ if (elem_p->access_Spanner ())
{
- Spanner *s = elem_p->spanner ();
+ Spanner *s = elem_p->access_Spanner ();
pscore_p_->typeset_unbroken_spanner (s);
@@ -142,13 +142,13 @@ Score_engraver::typeset_all()
if (!s->spanned_drul_[d])
{
s->set_bounds(d, command_column_l_);
- ::warning ("Unbound spanner (type " + String (s->name ()) + ")");
+ ::warning (_f ("Unbound spanner `%s\'", s->name ()));
}
} while (flip(&d) != LEFT);
}
else
{
- Item *item_p = elem_p->item();
+ Item *item_p = elem_p->access_Item ();
pscore_p_->typeset_element (item_p);
if (!item_p->axis_group_l_a_[X_AXIS]) {
if (item_p->breakable_b_)
@@ -157,7 +157,7 @@ Score_engraver::typeset_all()
musical_column_l_->add_element(item_p);
}
}
- scoreline_l_->add (elem_p);
+ scoreline_l_->add_element (elem_p);
}
elem_p_arr_.clear();
}
@@ -185,7 +185,7 @@ Score_engraver::set_columns (Score_column *new_command_l,
if (command_column_l_ && command_column_l_->linked_b())
{
pscore_p_->add_column (command_column_l_);
- scoreline_l_->add (command_column_l_);
+ scoreline_l_->add_element (command_column_l_);
}
else
{
@@ -200,7 +200,7 @@ Score_engraver::set_columns (Score_column *new_command_l,
if (musical_column_l_ && musical_column_l_->linked_b())
{
pscore_p_->add_column (musical_column_l_);
- scoreline_l_->add (musical_column_l_);
+ scoreline_l_->add_element (musical_column_l_);
}
else
{
@@ -242,13 +242,13 @@ Score_engraver::do_try_request (Request*r)
{
bool gotcha = Engraver_group_engraver::do_try_request (r);
- if (gotcha || !r->command ())
+ if (gotcha || !r->access_Command_req ())
return gotcha;
- Command_req * c = r->command ();
- if (c->linebreak ())
+ Command_req * c = r->access_Command_req ();
+ if (c->access_Break_req ())
{
- Break_req* b = (Break_req*)c->linebreak ();
+ Break_req* b = (Break_req*)c->access_Break_req ();
if (b->penalty_i_ <= Break_req::DISALLOW)
break_penalty_i_ = b->penalty_i_;
else if (b->penalty_i_ >= Break_req::FORCE)
diff --git a/lily/score-performer.cc b/lily/score-performer.cc
index 7d596f90b9..9e91c14b24 100644
--- a/lily/score-performer.cc
+++ b/lily/score-performer.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "score-performer.hh"
@@ -37,13 +37,13 @@ Score_performer::play (Audio_element * p)
{
if (p->is_type_b (Audio_item::static_name()))
{
- audio_column_l_->add ((Audio_item*)p);
+ audio_column_l_->add_audio_item ((Audio_item*)p);
}
else if (p->is_type_b (Audio_staff::static_name()))
{
performance_p_->add_staff ((Audio_staff*)p);
}
- performance_p_->add (p);
+ performance_p_->add_element (p);
}
void
@@ -51,7 +51,7 @@ Score_performer::prepare (Moment m)
{
Global_translator::prepare (m);
audio_column_l_ = new Audio_column (m);
- performance_p_->add (audio_column_l_);
+ performance_p_->add_column (audio_column_l_);
post_move_processing ();
}
diff --git a/lily/score-priority-grav.cc b/lily/score-priority-engraver.cc
index a0f44cb5ba..ea9ae79737 100644
--- a/lily/score-priority-grav.cc
+++ b/lily/score-priority-engraver.cc
@@ -3,12 +3,12 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "horizontal-group-item.hh"
-#include "score-priority-grav.hh"
+#include "score-priority-engraver.hh"
#include "item.hh"
#include "assoc-iter.hh"
#include "break-align-item.hh"
@@ -33,9 +33,9 @@ Score_priority_engraver::do_pre_move_processing()
}
void
-Score_priority_engraver::acknowledge_element (Score_elem_info inf)
+Score_priority_engraver::acknowledge_element (Score_element_info inf)
{
- Item * item_l = inf.elem_l_->item ();
+ Item * item_l = inf.elem_l_->access_Item ();
if (item_l && item_l->breakable_b_ && !item_l->empty_b ())
{
/*
@@ -51,7 +51,7 @@ Score_priority_engraver::acknowledge_element (Score_elem_info inf)
if (!align_p_assoc_.elt_b(priority))
{
hg = new Horizontal_group_item;
- announce_element (Score_elem_info (hg,0));
+ announce_element (Score_element_info (hg,0));
align_p_assoc_[priority] = hg;
hg->break_priority_i_ = priority;
hg->breakable_b_ = true;
@@ -59,7 +59,7 @@ Score_priority_engraver::acknowledge_element (Score_elem_info inf)
else
hg = align_p_assoc_[priority];
- Score_elem * unbound_elem = inf.elem_l_;
+ Score_element * unbound_elem = inf.elem_l_;
while (unbound_elem->axis_group_l_a_[X_AXIS])
{
@@ -68,7 +68,7 @@ Score_priority_engraver::acknowledge_element (Score_elem_info inf)
*/
if (unbound_elem->axis_group_l_a_[X_AXIS] == hg)
return;
- unbound_elem = unbound_elem->axis_group_l_a_[X_AXIS];
+ unbound_elem = unbound_elem->axis_group_l_a_[X_AXIS]->access_Score_element ();
}
hg->add_element (unbound_elem);
diff --git a/lily/score.cc b/lily/score.cc
index 8f97c31d76..e09cb71e72 100644
--- a/lily/score.cc
+++ b/lily/score.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "score.hh"
@@ -54,10 +54,10 @@ Score::run_translator (Music_output_def *odef_l)
Global_translator * trans_p = odef_l->get_global_translator_p();
if (!trans_p)
{
- non_fatal_error ("No toplevel translator.");
+ non_fatal_error (_("no toplevel translator"));
return ;
}
- *mlog << _("\nInterpreting music ...");
+ *mlog << '\n' << _("Interpreting music...") << flush;
trans_p->last_mom_ = music_p_->time_int().max ();
Music_iterator * iter = Music_iterator::static_get_iterator_p (music_p_,
@@ -67,7 +67,7 @@ Score::run_translator (Music_output_def *odef_l)
if (! iter->ok())
{
delete iter;
- warning (_("Need music in a score"));
+ warning (_("need music in a score"));
errorlevel_i_ =1;
return ;
}
@@ -81,19 +81,21 @@ Score::run_translator (Music_output_def *odef_l)
if (iter->ok())
{
w = iter->next_moment();
- DOUT << "proccing: " << w <<"\n";
+ DOUT << "proccing: " << w << '\n';
if (!monitor->silent_b ("walking"))
iter->print();
}
trans_p->modify_next (w);
trans_p->prepare (w);
+
if (!monitor->silent_b ("walking"))
trans_p->print();
iter->process_and_next (w);
trans_p->process();
}
+
delete iter;
trans_p->finish();
@@ -101,13 +103,12 @@ Score::run_translator (Music_output_def *odef_l)
if (errorlevel_i_)
{
// should we? hampers debugging.
- warning (_("Errors found, /*not processing score*/"));
+ warning (_ ("errors found, /*not processing score*/"));
}
Music_output * output = trans_p->get_output_p();
delete trans_p;
- *mlog << _(" (time: ") << String(timer.read (), "%.2f") << _(" seconds)");
-
+ *mlog << endl << _f ("time: %.2f seconds", timer.read ()) << flush;
output->header_l_ = header_p_;
output->origin_str_ = location_str();
@@ -148,7 +149,7 @@ Score::print() const
}
void
-Score::add (Music_output_def *pap_p)
+Score::add_output (Music_output_def *pap_p)
{
def_p_arr_.push(pap_p);
}
diff --git a/lily/scores.cc b/lily/scores.cc
index b481921c3a..7f257671ac 100644
--- a/lily/scores.cc
+++ b/lily/scores.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <fstream.h>
#include "main.hh"
@@ -22,6 +22,7 @@ Sources* source_global_l = 0;
Array<String> inclusion_global_array;
Array<String> target_str_global_array;
Link_array<Score> score_global_array;
+Header * header_global_p;
void write_dependency_file (String fn, Array<String> targets,
@@ -30,12 +31,12 @@ void write_dependency_file (String fn, Array<String> targets,
const int WRAPWIDTH = 65;
- cout << "Writing dependency file " << fn << " ...\n";
+ cout << _f ("writing dependency file: `%s\'...", fn) << '\n';
ofstream f (fn.ch_C ());
if (!f)
- warning ( _("Can't open dependency file `" + fn + "\'"));
+ warning (_f ("can't open file: `%s\'", fn));
- f << "# Automatically generated by " << get_version_str () << "\n";
+ f << "# Automatically generated by " << get_version_str () << '\n';
String out;
for (int i=0; i < targets.size (); i ++)
out += targets[i] + " ";
@@ -66,18 +67,15 @@ do_deps()
void
do_scores()
{
+ if (!header_global_p)
+ header_global_p = new Header;
for (int i=0; i < score_global_array.size(); i++)
{
Score* is_p = score_global_array[i];
- if (!is_p->header_p_)
- is_p->header_p_ = new Header;
-
-
- is_p->header_p_->lily_id_str_ = "Lily was here, " +
- get_version_number_str();
+
if (is_p->errorlevel_i_)
{
- is_p->warning (_("Score contains errors. Will not process it. "));
+ is_p->warning (_("score contains errors; will not process it"));
exit_status_i_ |= 1;
}
else
@@ -97,42 +95,33 @@ clear_scores ()
}
score_global_array.clear();
inclusion_global_array.clear ();
+ delete header_global_p ;
+ header_global_p =0;
}
-extern File_path path;
void
do_one_file (String init_str, String file_str)
{
- if (init_str.length_i () && path.find (init_str).empty_b ())
+ if (init_str.length_i () && global_path.find (init_str).empty_b ())
{
- warning (_("Can not find `") + init_str +"\'");
- return ;
+ warning (_f ("can't find file: `%s\'", init_str));
+ return;
}
- if (file_str.length_i () && path.find (file_str).empty_b ())
+ if ((file_str != "-") && global_path.find (file_str).empty_b ())
{
- warning (_("Can not find `") + file_str + "'");
- return ;
+ warning (_f ("can't find file: `%s\'", file_str));
+ return;
}
Sources sources;
source_global_l = &sources;
- source_global_l->set_path (&path);
+ source_global_l->set_path (&global_path);
{
My_lily_parser parser (source_global_l);
parser.set_version_check (version_ignore_global_b);
parser.parse_file (init_str, file_str);
-
- if (file_str.length_i () && file_str[0] != '-')
- {
- String a,b,c,d;
- split_path (file_str, a, b, c, d);
- default_outname_base_global = c;
- }
- else
- default_outname_base_global = "lelie";
-
if (parser.error_level_i_)
{
exit_status_i_ = 1;
@@ -143,3 +132,4 @@ do_one_file (String init_str, String file_str)
}
source_global_l = 0;
}
+
diff --git a/lily/script-column.cc b/lily/script-column.cc
index 7d11acf61e..f67907c869 100644
--- a/lily/script-column.cc
+++ b/lily/script-column.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "script-column.hh"
@@ -17,7 +17,7 @@ IMPLEMENT_IS_TYPE_B1(Script_column,Horizontal_vertical_group_item);
void
-Script_column::add (Script*s_l)
+Script_column::add_script (Script*s_l)
{
script_l_arr_.push (s_l);
add_dependency (s_l);
@@ -53,7 +53,7 @@ Script_column::do_pre_processing()
for (int i=0; i < script_l_arr_.size(); i++)
{
Script*s_l = script_l_arr_[i];
- placed_l_arr_a[idx (s_l->specs_l_->inside_b(),
+ placed_l_arr_a[idx (s_l->specs_p_->inside_b(),
s_l->dir_) ].push (s_l);
}
@@ -103,11 +103,11 @@ Script_column::add_support (Item*i_l)
}
void
-Script_column::do_substitute_dependency (Score_elem*o,Score_elem*n)
+Script_column::do_substitute_dependency (Score_element*o,Score_element*n)
{
- if (o->item())
+ if (o->access_Item ())
{
- script_l_arr_.substitute ((Script*)o->item(),(Script*) (n?n->item ():0));
- support_l_arr_.substitute (o->item(), (n?n->item ():0));
+ script_l_arr_.substitute ((Script*)o->access_Item (),(Script*) (n?n->access_Item ():0));
+ support_l_arr_.substitute (o->access_Item (), (n?n->access_Item ():0));
}
}
diff --git a/lily/script-def.cc b/lily/script-def.cc
index 5a9c3a65b3..05074c7107 100644
--- a/lily/script-def.cc
+++ b/lily/script-def.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "debug.hh"
@@ -78,7 +78,7 @@ Script_def::get_atom (Paper_def *p , Direction d) const
if (invertsym_b_)
preidx_str = (d < 0)? "d" : "u";
- return p->lookup_l()->script (preidx_str + symidx_str_);
+ return p->lookup_l(0)->script (preidx_str + symidx_str_);
}
diff --git a/lily/script-grav.cc b/lily/script-engraver.cc
index 7d281253fe..435e312729 100644
--- a/lily/script-grav.cc
+++ b/lily/script-engraver.cc
@@ -1,15 +1,17 @@
/*
script-reg.cc -- implement Script_engraver
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "script-grav.hh"
+#include "script-engraver.hh"
#include "script.hh"
#include "musical-request.hh"
#include "stem.hh"
#include "staff-sym.hh"
#include "general-script-def.hh"
+#include "text-def.hh"
+
Script_engraver::Script_engraver()
{
@@ -19,7 +21,7 @@ Script_engraver::Script_engraver()
bool
Script_engraver::do_try_request (Request *r_l)
{
- if (!r_l->musical() || ! r_l->musical ()->musicalscript ())
+ if (!r_l->access_Musical_req () || ! r_l->access_Musical_req ()->access_Musical_script_req ())
return false ;
for (int i=0; i < script_req_l_arr_.size(); i++)
@@ -27,7 +29,7 @@ Script_engraver::do_try_request (Request *r_l)
if (r_l->equal_b (script_req_l_arr_[i]))
return true;
}
- script_req_l_arr_.push (r_l->script());
+ script_req_l_arr_.push (r_l->access_Script_req ());
return true;
}
@@ -43,9 +45,9 @@ Script_engraver::do_process_requests()
Script_req* l=script_req_l_arr_[i];
Script *p =new Script;
p->dir_ = l->dir_;
- p->specs_l_ = l->scriptdef_p_;
+ p->specs_p_ = l->scriptdef_p_->clone ();
script_p_arr_.push (p);
- announce_element (Score_elem_info (p, l));
+ announce_element (Score_element_info (p, l));
}
}
@@ -56,9 +58,18 @@ Script_engraver::do_pre_move_processing()
for (int i=0; i < script_p_arr_.size(); i++)
{
Script*script_p = script_p_arr_[i];
- if (!script_p->specs_l_->inside_b())
+ if (!script_p->specs_p_->inside_b())
script_p->add_support (s_l);
+ if (script_p->specs_p_->is_type_b (Text_def::static_name ()))
+ {
+ Text_def * td_l = (Text_def*)script_p->specs_p_;
+ Scalar style = get_property ("textstyle");
+ if (style.to_bool ())
+ {
+ td_l->style_str_= style;
+ }
+ }
typeset_element (script_p);
}
script_p_arr_.clear();
diff --git a/lily/script.cc b/lily/script.cc
index 4014ed729c..76c9cbc02a 100644
--- a/lily/script.cc
+++ b/lily/script.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "script-def.hh"
#include "musical-request.hh"
@@ -14,20 +14,20 @@
#include "lookup.hh"
void
-Script::do_print() const
+Script::do_print () const
{
#ifndef NPRINT
- specs_l_->print();
+ specs_p_->print ();
#endif
}
void
-Script::do_substitute_dependency (Score_elem*o,Score_elem*n)
+Script::do_substitute_dependency (Score_element*o,Score_element*n)
{
Staff_side::do_substitute_dependency (o,n);
if (o == stem_l_)
{
- stem_l_ = n ? (Stem*)n->item() : 0;
+ stem_l_ = n ? (Stem*)n->access_Item () : 0;
}
}
@@ -39,78 +39,109 @@ Script::set_stem (Stem*st_l)
}
-Script::Script()
+Script::Script ()
{
- specs_l_ = 0;
+ axis_ = Y_AXIS;
+ specs_p_ = 0;
stem_l_ = 0;
+ postbreak_only_b_ = true;
dir_ = CENTER;
}
void
-Script::set_default_dir()
+Script::set_default_dir ()
{
- int s_i=specs_l_->rel_stem_dir();
+ int s_i=specs_p_->rel_stem_dir ();
if (s_i)
{
if (stem_l_)
- dir_ = Direction(stem_l_->dir_ * s_i);
+ dir_ = Direction (stem_l_->dir_ * s_i);
else
{
- specs_l_->warning (_("Script needs stem direction"));
+ specs_p_->warning (_ ("script needs stem direction"));
dir_ = DOWN;
}
}
else
{
- dir_ =specs_l_->staff_dir();
+ dir_ =specs_p_->staff_dir ();
}
assert (dir_);
}
Interval
-Script::do_width() const
+Script::do_width () const
{
- return specs_l_->get_atom (paper(), dir_).extent ().x ();
+ return specs_p_->get_atom (paper (), dir_).extent ().x ();
}
void
-Script::do_pre_processing()
+Script::do_pre_processing ()
{
- if (breakable_b_ && break_status_i() != 1)
+ Staff_side::do_pre_processing ();
+ if (breakable_b_ && postbreak_only_b_ && (break_status_dir () != RIGHT))
{
transparent_b_ = true;
set_empty (true);
}
+
+ if (axis_ == Y_AXIS && !dir_)
+ set_default_dir ();
+}
- if (!dir_)
- set_default_dir();
+Interval
+Script::symbol_height () const
+{
+ return specs_p_->get_atom (paper (), dir_).extent ().y ();
}
Interval
-Script::symbol_height() const
+Script::symbol_width () const
{
- return specs_l_->get_atom (paper(), dir_).extent ().y ();
+ return specs_p_->width (paper ());
}
Molecule*
-Script::brew_molecule_p() const
+Script::brew_molecule_p () const
{
- Real dx = paper()->note_width()/2;
-
- Molecule*out = new Molecule (specs_l_->get_atom (paper(), dir_));
- // ugh, staccato dots are not centred between stafflines (how?)?
- Real correct = - (Real)dir_ * 2.0 * paper ()->rule_thickness ();
- out->translate_axis (y_ + correct, Y_AXIS);
- out->translate_axis (dx, X_AXIS); // FIXME! ugh
- return out;
+ Real dx =0.;
+
+ Molecule*mol_p = new Molecule (specs_p_->get_atom (paper (), dir_));
+ /*
+ ugh, staccato dots are not centred between stafflines (how?)?
+ */
+ Real correct =0.0;
+ if (axis_ == Y_AXIS){
+ dx = paper ()->note_width ()/2;
+ correct = - (Real)dir_ * 2.0 * paper ()->rule_thickness ();
+ mol_p->translate_axis (dx, X_AXIS); // FIXME! ugh
+ }
+
+ mol_p->translate_axis (coordinate_offset_f_ + correct, axis_);
+
+ return mol_p;
}
-IMPLEMENT_IS_TYPE_B2(Script,Item,Staff_side);
+IMPLEMENT_IS_TYPE_B2 (Script,Item,Staff_side);
int
Script::compare (Script *const&l1, Script *const&l2)
{
- return l1->specs_l_->priority_i() - l2->specs_l_->priority_i ();
+ return l1->specs_p_->priority_i() - l2->specs_p_->priority_i ();
+}
+
+Script::~Script ()
+{
+ delete specs_p_;
+}
+
+Script::Script (Script const&s)
+ : Item (s), Staff_side(s)
+{
+ specs_p_ = s.specs_p_ ? s.specs_p_->clone (): 0;
+ stem_l_ =s.stem_l_;
+ postbreak_only_b_ = s.postbreak_only_b_;
}
+
diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc
index 7ff3fca481..cffc4ee276 100644
--- a/lily/separating-group-spanner.cc
+++ b/lily/separating-group-spanner.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -45,7 +45,6 @@ Separating_group_spanner::get_rods () const
r.distance_f_ += paper ()->interline_f () *1.5;
a.push (r);
}
-
}
return a;
@@ -61,13 +60,13 @@ Separating_group_spanner::add_spacing_unit (Single_malt_grouping_item*i)
IMPLEMENT_IS_TYPE_B1(Separating_group_spanner, Spanner);
void
-Separating_group_spanner::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Separating_group_spanner::do_substitute_dependency (Score_element*o, Score_element*n)
{
if (o->is_type_b (Single_malt_grouping_item::static_name ()))
{
Single_malt_grouping_item*ns = n ?
- (Single_malt_grouping_item*)n->item () : 0;
- spacing_unit_l_arr_.substitute ((Single_malt_grouping_item*)o->item (), ns);
+ (Single_malt_grouping_item*)n->access_Item () : 0;
+ spacing_unit_l_arr_.substitute ((Single_malt_grouping_item*)o->access_Item (), ns);
}
}
diff --git a/lily/separating-line-group-grav.cc b/lily/separating-line-group-engraver.cc
index 889c8db670..878bb1f1dc 100644
--- a/lily/separating-line-group-grav.cc
+++ b/lily/separating-line-group-engraver.cc
@@ -3,11 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "separating-line-group-grav.hh"
+#include "separating-line-group-engraver.hh"
#include "separating-group-spanner.hh"
#include "single-malt-grouping-item.hh"
#include "p-col.hh"
@@ -23,7 +23,7 @@ void
Separating_line_group_engraver::do_creation_processing ()
{
sep_span_p_ = new Separating_group_spanner;
- announce_element ( Score_elem_info (sep_span_p_, 0));
+ announce_element ( Score_element_info (sep_span_p_, 0));
sep_span_p_->set_bounds (LEFT, get_staff_info ().command_pcol_l ());
}
@@ -36,9 +36,9 @@ Separating_line_group_engraver::do_removal_processing ()
}
void
-Separating_line_group_engraver::acknowledge_element (Score_elem_info i)
+Separating_line_group_engraver::acknowledge_element (Score_element_info i)
{
- Item * it = i.elem_l_->item ();
+ Item * it = i.elem_l_->access_Item ();
if (it && !it->axis_group_l_a_[X_AXIS])
{
Single_malt_grouping_item *&p_ref_ (it->breakable_b_ ?
@@ -48,9 +48,9 @@ Separating_line_group_engraver::acknowledge_element (Score_elem_info i)
{
p_ref_ = new Single_malt_grouping_item;
p_ref_->breakable_b_ = it->breakable_b_;
- announce_element (Score_elem_info (p_ref_, 0));
+ announce_element (Score_element_info (p_ref_, 0));
}
- p_ref_->add (it);
+ p_ref_->add_item (it);
}
}
@@ -73,5 +73,5 @@ Separating_line_group_engraver::do_pre_move_processing ()
}
-IMPLEMENT_IS_TYPE_B1 (Separating_line_group_engraver, Line_group_engraver);
+IMPLEMENT_IS_TYPE_B1 (Separating_line_group_engraver, Engraver);
ADD_THIS_TRANSLATOR( Separating_line_group_engraver);
diff --git a/lily/single-malt-grouping-item.cc b/lily/single-malt-grouping-item.cc
index e9fe0a7398..284a494d7e 100644
--- a/lily/single-malt-grouping-item.cc
+++ b/lily/single-malt-grouping-item.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -18,7 +18,7 @@ Single_malt_grouping_item ::Single_malt_grouping_item()
}
void
-Single_malt_grouping_item::add (Item* i)
+Single_malt_grouping_item::add_item (Item* i)
{
assert (i);
item_l_arr_.push (i);
@@ -44,11 +44,11 @@ Single_malt_grouping_item::my_width () const
IMPLEMENT_IS_TYPE_B1(Single_malt_grouping_item, Item);
void
-Single_malt_grouping_item::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Single_malt_grouping_item::do_substitute_dependency (Score_element*o, Score_element*n)
{
- if (o->item ())
+ if (o->access_Item ())
{
- item_l_arr_.unordered_substitute (o->item (), n ? n->item () : 0);
+ item_l_arr_.unordered_substitute (o->access_Item (), n ? n->access_Item () : 0);
}
}
diff --git a/lily/slur-grav.cc b/lily/slur-engraver.cc
index 4076e2bb7c..5ccf0386f6 100644
--- a/lily/slur-grav.cc
+++ b/lily/slur-engraver.cc
@@ -1,13 +1,13 @@
/*
slur-grav.cc -- implement Slur_engraver
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "proto.hh"
#include "plist.hh"
#include "musical-request.hh"
-#include "slur-grav.hh"
+#include "slur-engraver.hh"
#include "slur.hh"
#include "debug.hh"
#include "note-column.hh"
@@ -15,24 +15,24 @@
bool
Slur_engraver::do_try_request (Request *req_l)
{
- Musical_req *mus_l = req_l->musical();
- if (!mus_l || !mus_l->slur())
+ Musical_req *mus_l = req_l->access_Musical_req ();
+ if (!mus_l || !mus_l->access_Slur_req ())
return false;
- new_slur_req_l_arr_.push (mus_l->slur());
+ new_slur_req_l_arr_.push (mus_l->access_Slur_req ());
return true;
}
void
-Slur_engraver::acknowledge_element (Score_elem_info info)
+Slur_engraver::acknowledge_element (Score_element_info info)
{
if (info.elem_l_->is_type_b (Note_column::static_name ()))
{
- Note_column *col_l =(Note_column*) info.elem_l_->item() ;// ugh
+ Note_column *col_l =(Note_column*) info.elem_l_->access_Item() ;// ugh
for (int i = 0; i < slur_l_stack_.size(); i++)
- slur_l_stack_[i]->add (col_l);
+ slur_l_stack_[i]->add_column (col_l);
for (int i = 0; i < end_slur_l_arr_.size(); i++)
- end_slur_l_arr_[i]->add (col_l);
+ end_slur_l_arr_[i]->add_column (col_l);
}
}
@@ -46,7 +46,7 @@ Slur_engraver::do_removal_processing ()
slur_l_stack_.clear ();
for (int i=0; i < requests_arr_.size(); i++)
{
- requests_arr_[i]->warning (_("unterminated slur"));
+ requests_arr_[i]->warning (_ ("unterminated slur"));
}
}
@@ -69,7 +69,7 @@ Slur_engraver::do_process_requests()
{
if (slur_l_stack_.empty())
- slur_req_l->warning (_("can't find slur to end"));
+ slur_req_l->warning (_f ("can't find both ends of %s", _("slur")));
else
{
end_slur_l_arr_.push (slur_l_stack_.pop());
@@ -86,7 +86,7 @@ Slur_engraver::do_process_requests()
s_p->dash_i_ = prop;
requests_arr_.push (slur_req_l);
start_slur_l_arr_.push (s_p);
- announce_element (Score_elem_info (s_p, slur_req_l));
+ announce_element (Score_element_info (s_p, slur_req_l));
}
}
for (int i=0; i < start_slur_l_arr_.size(); i++)
@@ -96,7 +96,15 @@ Slur_engraver::do_process_requests()
void
Slur_engraver::do_pre_move_processing()
{
- dir_ = (Direction) int(get_property ("ydirection"));
+ Scalar dir (get_property ("slurydirection"));
+ Scalar dir2 (get_property ("ydirection"));
+ if (!dir.length_i () && dir2.length_i ())
+ {
+ dir_ = (Direction) int(dir2);
+ }
+ else if (dir.length_i ())
+ dir_ = (Direction) int (dir);
+
for (int i = 0; i < end_slur_l_arr_.size(); i++)
{
if (dir_)
diff --git a/lily/slur.cc b/lily/slur.cc
index 53b495f911..14edd7b3e2 100644
--- a/lily/slur.cc
+++ b/lily/slur.cc
@@ -3,8 +3,8 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
- Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1996, 1997--1998, 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Jan Nieuwenhuizen <janneke@gnu.org>
*/
/*
@@ -24,7 +24,7 @@
#include "p-col.hh"
#include "molecule.hh"
#include "debug.hh"
-#include "boxes.hh"
+#include "box.hh"
#include "bezier.hh"
#include "encompass-info.hh"
#include "main.hh"
@@ -36,7 +36,7 @@ Slur::Slur ()
}
void
-Slur::add (Note_column*n)
+Slur::add_column (Note_column*n)
{
encompass_arr_.push (n);
add_dependency (n);
@@ -71,13 +71,13 @@ Slur::do_pre_processing ()
}
void
-Slur::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Slur::do_substitute_dependency (Score_element*o, Score_element*n)
{
int i;
- while ((i = encompass_arr_.find_i ((Note_column*)o->item ())) >=0)
+ while ((i = encompass_arr_.find_i ((Note_column*)o->access_Item ())) >=0)
{
if (n)
- encompass_arr_[i] = (Note_column*)n->item ();
+ encompass_arr_[i] = (Note_column*)n->access_Item ();
else
encompass_arr_.del (i);
}
@@ -239,11 +239,13 @@ Slur::get_encompass_offset_arr () const
Array<Offset> notes;
notes.push (Offset (0,0));
+// notes.push (left);
for (int i = first; i < last; i++)
{
Encompass_info info (encompass_arr_[i], dir_);
notes.push (info.o_ - left);
+// notes.push (info.o_ - left);
}
notes.push (d);
@@ -252,11 +254,13 @@ Slur::get_encompass_offset_arr () const
int n = last - first + 2;
Array<Offset> notes (n);
notes[0] = Offset (0,0);
+// notes[0] = left;
for (int i = first; i < last; i++)
{
Encompass_info info (encompass_arr_[i], dir_);
notes[i - first + 1] = info.o_ - left;
+// notes[i - first + 1] = info.o_;
}
notes[n - 1] = Offset (d);
diff --git a/lily/span-bar-grav.cc b/lily/span-bar-engraver.cc
index bacdcb3624..61898273c0 100644
--- a/lily/span-bar-grav.cc
+++ b/lily/span-bar-engraver.cc
@@ -3,11 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "span-bar.hh"
-#include "span-bar-grav.hh"
+#include "span-bar-engraver.hh"
#include "vertical-align-spanner.hh"
Span_bar_engraver::Span_bar_engraver()
@@ -34,25 +34,38 @@ Span_bar_engraver::do_removal_processing ()
}
void
-Span_bar_engraver::acknowledge_element (Score_elem_info i)
+Span_bar_engraver::acknowledge_element (Score_element_info i)
{
int depth = i.origin_grav_l_arr_.size();
if (depth > 1
&& i.elem_l_->is_type_b (Bar::static_name()))
{
- bar_l_arr_.push ((Bar*)i.elem_l_->item());
+ bar_l_arr_.push ((Bar*)i.elem_l_->access_Item ());
if (bar_l_arr_.size() >= 2 && !spanbar_p_)
+ /*
+ hmm, i do want a bracket with one staff some times, but not always
+ if (bar_l_arr_.size() >= 1 && !spanbar_p_)
+
+ --jcn
+ */
+
+ /*
+
+ use a property? get_property ("singleStaffBracket") ?
+
+ --hwn
+ */
{
spanbar_p_ = get_span_bar_p();
- announce_element (Score_elem_info (spanbar_p_,0));
+ announce_element (Score_element_info (spanbar_p_,0));
spanbar_p_-> type_str_ = bar_l_arr_[0]->type_str_;
}
}
else if (i.elem_l_->is_type_b (Vertical_align_spanner::static_name())
&& i.origin_grav_l_arr_.size() <= 2)
{
- valign_l_ = (Vertical_align_spanner*)i.elem_l_->spanner();
+ valign_l_ = (Vertical_align_spanner*)i.elem_l_->access_Spanner ();
}
}
@@ -62,8 +75,8 @@ Span_bar_engraver::do_pre_move_processing()
if (spanbar_p_)
{
for (int i=0; i < bar_l_arr_.size() ; i++)
- spanbar_p_->add (bar_l_arr_[i]);
- spanbar_p_->set (valign_l_);
+ spanbar_p_->add_bar (bar_l_arr_[i]);
+ spanbar_p_->set_align (valign_l_);
typeset_element (spanbar_p_);
spanbar_p_ =0;
}
diff --git a/lily/span-bar.cc b/lily/span-bar.cc
index e89b05352f..678853185b 100644
--- a/lily/span-bar.cc
+++ b/lily/span-bar.cc
@@ -3,52 +3,60 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "dimen.hh"
+#include "dimension.hh"
#include "span-bar.hh"
#include "lookup.hh"
#include "atom.hh"
#include "paper-def.hh"
#include "molecule.hh"
-#include "vertical-align-elem.hh"
+#include "align-element.hh"
void
-Span_bar::add (Bar*b)
+Span_bar::add_bar (Bar*b)
{
spanning_l_arr_.push (b);
add_dependency (b);
}
-
-
void
-Span_bar::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Span_bar::do_substitute_dependency (Score_element*o, Score_element*n)
{
spanning_l_arr_.unordered_substitute (o, n);
}
-
void
-Span_bar::set (Vertical_align_element *a)
+Span_bar::set_align (Align_element *a)
{
add_dependency (a);
}
-
Interval
-Span_bar::do_width() const
+Span_bar::do_width () const
{
- return paper()->lookup_l ()->bar (type_str_, 40 PT).dim_.x (); // ugh
+ return lookup_l ()->bar (type_str_, 40 PT).dim_.x (); // ugh
}
void
-Span_bar::do_pre_processing()
+Span_bar::do_pre_processing ()
{
Bar::do_pre_processing ();
- if (spanning_l_arr_.size() < 1)
+ evaluate_empty ();
+}
+
+void
+Span_bar::do_post_processing ()
+{
+ Bar::do_post_processing ();
+}
+
+void
+Span_bar::evaluate_empty ()
+{
+ if (spanning_l_arr_.size () < 1)
{
transparent_b_ = true;
set_empty (true);
@@ -66,40 +74,51 @@ Span_bar::do_pre_processing()
{
type_str_ = "|.";
}
+ else if (type_str_ == ":|:")
+ {
+ type_str_ = ".|.";
+ }
}
Atom
Span_bar::get_bar_sym (Real dy) const
{
- return paper()->lookup_l ()->bar (type_str_, dy);
+ if (dy < paper ()->staffheight_f () / 2)
+ return Atom ();
+
+ return lookup_l ()->bar (type_str_, dy);
}
-
Molecule*
-Span_bar::brew_molecule_p() const
+Span_bar::brew_molecule_p () const
{
Interval y_int;
- for (int i=0; i < spanning_l_arr_.size(); i++)
+ for (int i=0; i < spanning_l_arr_.size (); i++)
{
- Axis_group_element *common =
+ Graphical_axis_group *common =
common_group (spanning_l_arr_[i], Y_AXIS);
Real y = spanning_l_arr_[i]->relative_coordinate (common, Y_AXIS)
-relative_coordinate (common,Y_AXIS);
- y_int.unite (y + spanning_l_arr_[i]->height());
+ y_int.unite (y + spanning_l_arr_[i]->height ());
}
- Atom s = get_bar_sym (y_int.length());
+ Atom s = get_bar_sym (y_int.length ());
Molecule*output = new Molecule (Atom (s));
- output->translate_axis (y_int.center(), Y_AXIS);
+ output->translate_axis (y_int.center (), Y_AXIS);
return output;
}
+IMPLEMENT_IS_TYPE_B1 (Span_bar,Bar);
-IMPLEMENT_IS_TYPE_B1(Span_bar,Bar);
-
-Span_bar::Span_bar()
+Span_bar::Span_bar ()
{
type_str_ = "";
}
+
+Span_bar*
+Span_bar::access_Span_bar ()
+{
+ return this;
+}
diff --git a/lily/span-score-bar-grav.cc b/lily/span-score-bar-engraver.cc
index 8497cdc7c1..524d5b20ad 100644
--- a/lily/span-score-bar-grav.cc
+++ b/lily/span-score-bar-engraver.cc
@@ -4,11 +4,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "span-score-bar.hh"
-#include "span-score-bar-grav.hh"
+#include "piano-brace.hh"
+#include "staff-bracket.hh"
+#include "span-score-bar-engraver.hh"
+#include "paper-def.hh"
Span_bar*
@@ -18,7 +21,6 @@ Span_score_bar_engraver::get_span_bar_p () const
s->break_priority_i_ = -4;
return s;
-
}
@@ -43,16 +45,17 @@ Staff_group_bar_engraver::get_span_bar_p () const
}
void
-Staff_group_bar_engraver::acknowledge_element (Score_elem_info f)
+Staff_group_bar_engraver::acknowledge_element (Score_element_info i)
{
- Span_bar_engraver::acknowledge_element (f);
- if (f.elem_l_->is_type_b (Piano_brace::static_name ()))
+ Span_bar_engraver::acknowledge_element (i);
+ if (i.elem_l_->is_type_b (Piano_brace::static_name ()))
{
- // Piano_brace * brace = (Piano_brace*) f.elem_l_->item ()->bar ();
- // do something.
+ Span_bar* b = i.elem_l_->access_Span_bar ();
+ Piano_brace * piano_l = (Piano_brace*) b;
+ piano_l->extra_move_left_f_ = paper ()->interline_f (); // ugh
}
-
}
+
ADD_THIS_TRANSLATOR (Piano_bar_engraver);
ADD_THIS_TRANSLATOR (Staff_group_bar_engraver);
ADD_THIS_TRANSLATOR (Span_score_bar_engraver);
diff --git a/lily/span-score-bar.cc b/lily/span-score-bar.cc
index 0849f15c60..6952062a67 100644
--- a/lily/span-score-bar.cc
+++ b/lily/span-score-bar.cc
@@ -3,13 +3,14 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "span-score-bar.hh"
#include "atom.hh"
#include "paper-def.hh"
#include "lookup.hh"
+#include "main.hh"
Span_score_bar::Span_score_bar()
{
@@ -19,7 +20,7 @@ void
Score_bar::do_pre_processing ()
{
type_str_ = "|";
- if (break_status_i() != 1)
+ if (break_status_dir() != RIGHT)
{
set_empty (true);
transparent_b_ = true;
@@ -36,35 +37,6 @@ Span_score_bar::do_pre_processing()
// Span_bar::do_pre_processing();
}
-Atom
-Piano_brace::get_bar_sym (Real dy) const
-{
- return paper()->lookup_l ()->vbrace (dy);
-}
-
-Interval
-Piano_brace::do_width() const
-{
- return Interval (0,0);
-}
-
-Atom
-Staff_bracket::get_bar_sym (Real dy) const
-{
- Atom a = paper()->lookup_l ()->vbracket (dy);
- a.translate_axis (- 1.5 * a.extent ().x ().length (), X_AXIS);
- return a;
-}
-
-Interval
-Staff_bracket::do_width() const
-{
- return Interval (0,0);
-}
-
-
IMPLEMENT_IS_TYPE_B2(Span_score_bar, Span_bar, Score_bar);
-IMPLEMENT_IS_TYPE_B1(Piano_brace, Span_score_bar);
-IMPLEMENT_IS_TYPE_B1(Staff_bracket, Span_score_bar);
diff --git a/lily/spanner.cc b/lily/spanner.cc
index 839cf0d9b4..bc128bef42 100644
--- a/lily/spanner.cc
+++ b/lily/spanner.cc
@@ -3,24 +3,30 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "debug.hh"
#include "spanner.hh"
#include "p-col.hh"
#include "p-score.hh"
-#include "outputter.hh"
+#include "tex-outputter.hh"
+#include "molecule.hh"
-IMPLEMENT_IS_TYPE_B1(Spanner,Score_elem);
+IMPLEMENT_IS_TYPE_B1(Spanner,Score_element);
void
Spanner::do_print() const
{
#ifndef NPRINT
- DOUT << "Between col ";
+ DOUT << "Between " << spanned_drul_[LEFT]->name ()
+ << " and " << spanned_drul_[RIGHT]->name() << '\n';
if (broken_into_l_arr_.size())
- DOUT << "with broken pieces\n";
+ {
+ DOUT << "with broken pieces:\n";
+ for (int i=0; i < broken_into_l_arr_.size (); i++)
+ broken_into_l_arr_[i]->print ();
+ }
#endif
}
@@ -33,6 +39,11 @@ Spanner::break_into_pieces ()
Item * left = spanned_drul_[LEFT];
Item * right = spanned_drul_[RIGHT];
+ if (left == right)
+ {
+ warning (_ ("left spanpoint is right spanpoint\n"));
+ return;
+ }
Link_array<Item> break_cols = pscore_l_->broken_col_range (left,right);
Link_array<Spanner> broken_into_l_arr;
@@ -42,7 +53,7 @@ Spanner::break_into_pieces ()
for (int i=1; i < break_cols.size(); i++)
{
- Spanner* span_p = clone()->spanner ();
+ Spanner* span_p = clone()->access_Spanner ();
left = break_cols[i-1];
right = break_cols[i];
if (!right->line_l())
@@ -50,7 +61,7 @@ Spanner::break_into_pieces ()
if (!left->line_l())
left = left->find_prebroken_piece(RIGHT);
- assert (left&&right && left->line_l() == right->line_l());
+ assert (left&&right && left->line_l() == right->line_l());
span_p->set_bounds(LEFT,left);
span_p->set_bounds(RIGHT,right);
@@ -87,7 +98,7 @@ Spanner::set_bounds(Direction d, Item*i)
if (spanned_drul_[Direction(-d)] == spanned_drul_[d]
&& i)
- warning ("Spanner (" + String (name ()) + ") with equal left and right spanpoints.");
+ warning (_f ("Spanner `%s\' with equal left and right spanpoints", name ()));
}
void
@@ -105,8 +116,13 @@ Spanner::do_break_processing()
}
}
+Spanner*
+Spanner::access_Spanner ()
+{
+ return this;
+}
-Spanner::Spanner()
+Spanner::Spanner ()
{
spanned_drul_[LEFT]=0;
spanned_drul_[RIGHT]=0;
@@ -120,7 +136,8 @@ Spanner::do_brew_molecule ()
Molecule *output= brew_molecule_p ();
Offset left_off (spanned_drul_[LEFT]->absolute_coordinate(X_AXIS), 0);
Offset o = absolute_offset() + left_off;
- pscore_l_->outputter_l_->output_molecule (output, o);
+ pscore_l_->outputter_l_->output_molecule (output, o, name ());
+ delete output;
}
Interval
diff --git a/lily/spring-spacer.cc b/lily/spring-spacer.cc
index 2ce41ae76c..22ed79da20 100644
--- a/lily/spring-spacer.cc
+++ b/lily/spring-spacer.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998, 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -18,9 +18,8 @@
#include "pointer.tcc"
#include "score-column.hh"
#include "paper-def.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "colhpos.hh"
-#include "main.hh" // experimental_fietsers
Vector
Spring_spacer::default_solution() const
@@ -80,7 +79,7 @@ Spring_spacer::handle_loose_cols()
{
if (! connected.equiv (fixed[0], i))
{
- warning (_("unconnected column: ") + String (i));
+ warning (_f ("unconnected column: %d", i));
loosen_column (i);
}
}
@@ -133,7 +132,7 @@ Spring_spacer::position_loose_cols (Vector &sol_vec) const
int right_rank = (j<sol_vec.dim()) ? cols_[j].rank_i_ : sol_vec.dim ();
int d_r = right_rank - left_rank;
- Colinfo loose=loose_col_arr_[k++];
+ Column_info loose=loose_col_arr_[k++];
int r = loose.rank_i_ ;
assert (r > left_rank && r < right_rank);
@@ -165,9 +164,9 @@ Spring_spacer::check_constraints (Vector v) const
Real diff =v (other) - v (i) ;
if (COLFUDGE +diff < rods[j].distance_f_)
{
- DOUT << "i, other_i: " << i << " " << other << "\n";
- DOUT << "dist, minimal = " << diff <<" "
- << rods[j].distance_f_<<'\n';
+ DOUT << "i, other_i: " << i << " " << other << '\n';
+ DOUT << "dist, minimal = " << diff << " "
+ << rods[j].distance_f_ << '\n';
return false;
}
}
@@ -184,7 +183,7 @@ Spring_spacer::try_initial_solution() const
Vector v;
if (!try_initial_solution_and_tell (v))
{
- warning ("I'm too fat; call Oprah");
+ warning (_ ("I'm too fat; call Oprah"));
}
return v;
@@ -214,7 +213,7 @@ Spring_spacer::try_initial_solution_and_tell (Vector &v) const
initsol (i)=cols_[i].fixed_position();
if (initsol (i) < min_x )
{
- DOUT << "failing: init, min : " << initsol (i) << " " << min_x << "\n";
+ DOUT << "failing: init, min : " << initsol (i) << " " << min_x << '\n';
initsol (i) = min_x;
succeeded = false;
}
@@ -253,7 +252,7 @@ Spring_spacer::make_matrices (Matrix &quad, Vector &lin, Real &c) const
c += sqr (i->space_f_);
}
- // experimental
+
if (quad.dim() > 10)
quad.set_band();
@@ -301,7 +300,7 @@ Spring_spacer::calculate_energy_f (Vector solution) const
return e;
}
void
-Spring_spacer::lower_bound_solution (Col_hpositions*positions) const
+Spring_spacer::lower_bound_solution (Column_x_positions*positions) const
{
Mixed_qp lp (cols_.size());
make_matrices (lp.quad_,lp.lin_, lp.const_term_);
@@ -323,7 +322,7 @@ Spring_spacer::Spring_spacer ()
}
void
-Spring_spacer::solve (Col_hpositions*positions) const
+Spring_spacer::solve (Column_x_positions*positions) const
{
DOUT << "Spring_spacer::solve ()...";
@@ -342,7 +341,7 @@ Spring_spacer::solve (Col_hpositions*positions) const
positions->satisfies_constraints_b_ = check_constraints (solution_vec);
if (!positions->satisfies_constraints_b_)
{
- WARN << _("solution doesn't satisfy constraints.\n") ;
+ WARN << _ ("solution doesn't satisfy constraints") << '\n' ;
}
position_loose_cols (solution_vec);
positions->energy_f_ = calculate_energy_f (solution_vec);
@@ -362,7 +361,7 @@ Spring_spacer::solve (Col_hpositions*positions) const
void
Spring_spacer::add_column (Paper_column *col, bool fixed, Real fixpos)
{
- Colinfo c (col,(fixed)? &fixpos : 0);
+ Column_info c (col,(fixed)? &fixpos : 0);
int this_rank = cols_.size();
c.rank_i_ = this_rank;
@@ -407,7 +406,7 @@ Spring_spacer::error_pcol_l_arr() const
void
Spring_spacer::loosen_column (int i)
{
- Colinfo c=cols_.get (i);
+ Column_info c=cols_.get (i);
for (PCursor<Idealspacing*> j (ideal_p_list_.top()); j.ok (); j++)
{
if (j->left_i_ == i|| j->right_i_ == i)
@@ -433,7 +432,7 @@ Spring_spacer::print() const
#ifndef NPRINT
for (int i=0; i < cols_.size(); i++)
{
- DOUT << "col " << i<<' ';
+ DOUT << "col " << i << " ";
cols_[i].print();
}
for (PCursor<Idealspacing*> i (ideal_p_list_.top()); i.ok (); i++)
@@ -549,9 +548,13 @@ Spring_spacer::get_ruling_durations(Array<Moment> &shortest_playing_arr,
/**
generate springs between columns.
- TODO: This needs rethinking. Spacing should take optical
+ TODO: This needs rethinking.
+
+ * Spacing should take optical
effects into account
+ * Should be decentralised
+
The algorithm is taken from :
John S. Gourlay. ``Spacing a Line of Music,'' Technical Report
@@ -589,12 +592,15 @@ Spring_spacer::calc_idealspacing()
Moment delta_t = scol_l (i+1)->when() - scol_l (i)->when () ;
- Real k= paper_l()->arithmetic_constant (context_shortest_arr[i]);
+
/*
ugh should use shortest_playing distance
*/
if (delta_t)
- durational_distance = paper_l()->duration_to_dist (delta_t,k);
+ {
+ Real k= paper_l()->arithmetic_constant (context_shortest_arr[i]);
+ durational_distance = paper_l()->duration_to_dist (delta_t,k);
+ }
symbol_distance += -cols_[i+1].width_[LEFT];
@@ -614,14 +620,14 @@ Spring_spacer::calc_idealspacing()
Moment context_shortest = context_shortest_arr[i];
if (! shortest_playing_len)
{
- warning (_("Can't find a ruling note at ")
- +scol_l (i)->when().str ());
+ warning (_f ("can't find a ruling note at %s",
+ scol_l (i)->when().str ()));
shortest_playing_len = 1;
}
if (! context_shortest)
{
- warning(_("No minimum in measure at ")
- + scol_l (i)->when().str ());
+ warning (_f ("no minimum in measure at %s",
+ scol_l (i)->when().str ()));
context_shortest = 1;
}
Moment delta_t = scol_l (i+1)->when() - scol_l (i)->when ();
@@ -661,7 +667,7 @@ Spring_spacer::calc_idealspacing()
// fixed: probably should set minimum (rod/spring)?
cols_[i-1].width_[RIGHT] += interline_f;
// should adjust dist too?
- ideal_arr_[i-1] = ideal_arr_[i-1] >? interline_f;
+ ideal_arr_[i-1] = ideal_arr_[i-1] >? (2 * interline_f);
}
/*
diff --git a/lily/staff-bracket.cc b/lily/staff-bracket.cc
new file mode 100644
index 0000000000..b431eed339
--- /dev/null
+++ b/lily/staff-bracket.cc
@@ -0,0 +1,47 @@
+/*
+ span-score-bar.cc -- implement Span_score_bar
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "staff-bracket.hh"
+#include "atom.hh"
+#include "paper-def.hh"
+#include "lookup.hh"
+#include "main.hh"
+
+Atom
+Staff_bracket::get_bar_sym (Real dy) const
+{
+ Atom a = lookup_l ()->vbracket (dy);
+
+ a.translate_axis (- 1.33 * a.extent ().x ().length (), X_AXIS);
+ return a;
+}
+
+Interval
+Staff_bracket::do_width() const
+{
+ return Interval (0,0);
+}
+
+
+void
+Staff_bracket::do_post_processing ()
+{
+ Span_score_bar::do_post_processing();
+ Interval i = Span_score_bar::do_height ();
+ // don't set bracket that spans less than one staff
+ Real staffheight_f = paper ()->staffheight_f ();
+ if (i.length () < 0.5 * staffheight_f)
+ {
+ transparent_b_ = true;
+ set_empty (true);
+ }
+}
+
+IMPLEMENT_IS_TYPE_B1(Staff_bracket, Span_score_bar);
+
+
diff --git a/lily/staff-info.cc b/lily/staff-info.cc
index 1dbbd8407a..43140d7dcc 100644
--- a/lily/staff-info.cc
+++ b/lily/staff-info.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "proto.hh"
@@ -20,10 +20,8 @@ Staff_info::score_l()
Staff_info::Staff_info()
{
score_l_ =0;
- c0_position_i_l_ = 0;
time_C_ = 0;
rhythmic_C_ =0;
- break_allowed_b_ = 0;
}
Score_column*
diff --git a/lily/staff-performer.cc b/lily/staff-performer.cc
index 8bc8a049f9..e2786de70d 100644
--- a/lily/staff-performer.cc
+++ b/lily/staff-performer.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "staff-performer.hh"
@@ -77,7 +77,9 @@ String
Staff_performer::new_instrument_str ()
{
// mustn't ask Score for instrument: it will return piano!
- String str = get_property ("instrument");
+ String str = get_property ("midi_instrument");
+ if (!str.length_i ())
+ str = get_property ("instrument");
if (str == instrument_str_)
return "";
@@ -85,7 +87,7 @@ Staff_performer::new_instrument_str ()
return instrument_str_;
-/* ugh, but can't
+/* ugh, but can 't
if (properties_dict_.elt_b ("instrument"))
return properties_dict_["instrument"];
return "";
@@ -97,7 +99,7 @@ Staff_performer::play (Audio_element* p)
{
if (p->is_type_b (Audio_item::static_name ()))
{
- audio_staff_p_->add ( (Audio_item*)p);
+ audio_staff_p_->add_audio_item ( (Audio_item*)p);
}
Performer::play (p);
}
diff --git a/lily/staff-side.cc b/lily/staff-side.cc
index 7b99d06f99..ec82d64aad 100644
--- a/lily/staff-side.cc
+++ b/lily/staff-side.cc
@@ -3,12 +3,12 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "interval.hh"
#include "paper-def.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "staff-side.hh"
#include "staff-sym.hh"
#include "debug.hh"
@@ -16,37 +16,38 @@
Staff_side::Staff_side()
{
- y_=0;
+ coordinate_offset_f_=0;
sym_int_ = Interval (0,0);
+ padding_f_ = 0.0;
dir_ = CENTER;
+ axis_ = Y_AXIS;
}
Interval
-Staff_side::support_height() const
+Staff_side::support_extent() const
{
Interval y_int;
for (int i=0; i < support_l_arr_.size(); i++)
{
- Axis_group_element *common =
- common_group (support_l_arr_[i], Y_AXIS);
+ Graphical_axis_group *common =
+ common_group (support_l_arr_[i], axis_);
- Real y = support_l_arr_[i]->relative_coordinate (common, Y_AXIS)
- -relative_coordinate (common,Y_AXIS);
+ Real y = support_l_arr_[i]->relative_coordinate (common, axis_)
+ -relative_coordinate (common,axis_);
- y_int.unite (y + support_l_arr_[i]->height());
+ y_int.unite (y + support_l_arr_[i]->extent(axis_));
}
-
if (y_int.empty_b())
{
y_int = Interval (0,0);
}
- return y_int;
+ return Interval(y_int[LEFT] - padding_f_, y_int[RIGHT] + padding_f_);
}
void
-Staff_side::add_support (Score_elem*i)
+Staff_side::add_support (Score_element*i)
{
support_l_arr_.push (i);
add_dependency (i);
@@ -57,8 +58,8 @@ Staff_side::get_position_f () const
{
if (!dir_)
{
- warning (_("Staff_side::get_position_f(): "
- "somebody forgot to set my vertical direction, returning -20"));
+ warning (_ ("Staff_side::get_position_f(): "
+ "somebody forgot to set my direction, returning -20"));
return -20;
}
@@ -66,16 +67,16 @@ Staff_side::get_position_f () const
Real y = 0;
Real inter_f = paper()-> internote_f ();
- Interval v = support_height();
+ Interval v = support_extent();
// ugh, dim[y] = PT over here
y = v[dir_] + 1 * dir_ * inter_f;
- int y_i = (int)rint (y / inter_f);
+ int coordinate_offset_f_i = (int)rint (y / inter_f);
// ugh: 5 -> staff_lines
- if (abs (y_i) < 5)
+ if (axis_ == Y_AXIS && abs (coordinate_offset_f_i) < 5)
{
- if (!(abs (y_i) % 2))
+ if (!(abs (coordinate_offset_f_i) % 2))
y += (Real)dir_ * inter_f;
}
// else
@@ -90,20 +91,54 @@ Staff_side::symbol_height() const
return Interval (0,0);
}
+Interval
+Staff_side::symbol_width () const
+{
+ return Interval (0,0);
+}
+
void
-Staff_side::do_post_processing()
+Staff_side::do_pre_processing ()
+{
+ if (axis_== X_AXIS)
+ do_side_processing ();
+}
+
+void
+Staff_side::do_side_processing ()
{
- sym_int_ = symbol_height();
- y_ = get_position_f();
+ sym_int_ = symbol_extent();
+ coordinate_offset_f_ = get_position_f();
if (dir_)
- y_ += - sym_int_[-dir_];
+ coordinate_offset_f_ += - sym_int_[-dir_];
+
+}
+
+/*
+ ugh should use do_width (), do_height (), get_extent ()
+ */
+Interval
+Staff_side::symbol_extent () const
+{
+ if (axis_ == Y_AXIS)
+ return symbol_height ();
+ else
+ return symbol_width ();
+}
+
+
+void
+Staff_side::do_post_processing()
+{
+ if (axis_ == Y_AXIS)
+ do_side_processing ();
}
void
-Staff_side::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Staff_side::do_substitute_dependency (Score_element*o, Score_element*n)
{
support_l_arr_.unordered_substitute (o,n);
}
-IMPLEMENT_IS_TYPE_B1(Staff_side, Score_elem);
+IMPLEMENT_IS_TYPE_B1(Staff_side, Score_element);
diff --git a/lily/staff-sym-grav.cc b/lily/staff-sym-engraver.cc
index 2e09bb5777..37bb31cff3 100644
--- a/lily/staff-sym-grav.cc
+++ b/lily/staff-sym-engraver.cc
@@ -3,10 +3,10 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "staff-sym-grav.hh"
+#include "staff-sym-engraver.hh"
#include "staff-sym.hh"
#include "score.hh"
#include "p-col.hh"
@@ -33,7 +33,7 @@ Staff_sym_engraver::do_creation_processing()
{
span_p_ = new Staff_symbol;
span_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
- announce_element (Score_elem_info (span_p_, 0));
+ announce_element (Score_element_info (span_p_, 0));
}
void
diff --git a/lily/staff-sym.cc b/lily/staff-sym.cc
index d4b5f35eaf..d329e82185 100644
--- a/lily/staff-sym.cc
+++ b/lily/staff-sym.cc
@@ -3,14 +3,15 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "staff-sym.hh"
#include "lookup.hh"
#include "paper-def.hh"
#include "molecule.hh"
#include "debug.hh"
-#include "dimen.hh"
+#include "dimension.hh"
+#include "item.hh"
Staff_symbol::Staff_symbol ()
@@ -42,18 +43,25 @@ Staff_symbol::do_height() const
Molecule*
Staff_symbol::brew_molecule_p() const
{
+ Real w = width ().length ();
+ Real left_dx = -spanned_drul_[LEFT]->extent (X_AXIS)[LEFT];
+ Real right_dx = spanned_drul_[RIGHT]->extent (X_AXIS)[RIGHT];
+ // w += right_dx+ left_dx;
+
+
Paper_def * p = paper();
- Atom rule = p->lookup_l ()->rule_symbol (p->get_var ("rulethickness"),
- width ().length ());
+ Atom rule = lookup_l ()->rule_symbol (p->get_var ("rulethickness"),
+ w);
Real height = (no_lines_i_-1) * inter_note_f();
Molecule * m = new Molecule;
for (int i=0; i < no_lines_i_; i++)
{
Atom a (rule);
a.translate_axis (height - i * inter_note_f()*2, Y_AXIS);
- m->add (a);
+ m->add_molecule (a);
}
+ // m->translate_axis (-left_dx, X_AXIS);
return m;
}
diff --git a/lily/stem-grav.cc b/lily/stem-engraver.cc
index 01ba63ead4..8fa6d56761 100644
--- a/lily/stem-grav.cc
+++ b/lily/stem-engraver.cc
@@ -3,10 +3,10 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "stem-grav.hh"
+#include "stem-engraver.hh"
#include "note-head.hh"
#include "stem.hh"
#include "musical-request.hh"
@@ -34,14 +34,14 @@ Stem_engraver::do_creation_processing ()
}
void
-Stem_engraver::acknowledge_element(Score_elem_info i)
+Stem_engraver::acknowledge_element(Score_element_info i)
{
if (i.elem_l_->is_type_b (Rhythmic_head::static_name()))
{
- Rhythmic_head *h = (Rhythmic_head*) i.elem_l_->item();
+ Rhythmic_head *h = (Rhythmic_head*) i.elem_l_->access_Item ();
if (!stem_p_)
{
- Rhythmic_req * r = i.req_l_->musical()->rhythmic();
+ Rhythmic_req * r = i.req_l_->access_Musical_req ()->access_Rhythmic_req ();
stem_p_ = new Stem;
int durlog_i = r->duration_.durlog_i_;
stem_p_->flag_i_ = durlog_i;
@@ -49,19 +49,29 @@ Stem_engraver::acknowledge_element(Score_elem_info i)
if (abbrev_req_l_)
{
+ /*
+ suggests typing of:
+ c8:16 c: c: c:
+ hmm, which isn't so bad?
+ */
int t = abbrev_req_l_->type_i_;
if (!t)
t = default_abbrev_i_;
else
default_abbrev_i_ = t;
- abbrev_p_ = new Abbreviation;
- announce_element (Score_elem_info (abbrev_p_, abbrev_req_l_));
- abbrev_p_->abbrev_flags_i_ =intlog2 (t) - (durlog_i>? 2);
+ if (t)
+ {
+ abbrev_p_ = new Abbreviation;
+ announce_element (Score_element_info (abbrev_p_, abbrev_req_l_));
+ abbrev_p_->abbrev_flags_i_ =intlog2 (t) - (durlog_i>? 2);
+ }
}
- announce_element (Score_elem_info (stem_p_, r));
+
+ // must give the request, to preserve the rhythmic info.
+ announce_element (Score_element_info (stem_p_, r));
}
- stem_p_->add (h);
+ stem_p_->add_head (h);
}
}
@@ -93,11 +103,11 @@ Stem_engraver::do_pre_move_processing()
bool
Stem_engraver::do_try_request (Request* r)
{
- Musical_req* mus_l = r->musical ();
+ Musical_req* mus_l = r->access_Musical_req ();
if (!mus_l)
return false;
- Abbreviation_req* a = mus_l->abbrev ();
+ Abbreviation_req* a = mus_l->access_Abbreviation_req ();
if (!a)
return false;
diff --git a/lily/stem-info.cc b/lily/stem-info.cc
index 4251d294f9..535cc6f7d7 100644
--- a/lily/stem-info.cc
+++ b/lily/stem-info.cc
@@ -3,12 +3,12 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "proto.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "misc.hh"
#include "debug.hh"
#include "atom.hh"
@@ -68,6 +68,7 @@ Stem_info::Stem_info (Stem const *s)
Real min_stem2_f = s->paper ()->get_var ("beam_minimum_stem2");
Real ideal_stem1_f = s->paper ()->get_var ("beam_ideal_stem1");
Real ideal_stem2_f = s->paper ()->get_var ("beam_ideal_stem2");
+ Real shorten_f = s->paper ()->get_var ("forced_stem_shorten");
if (!beam_dir_ || (beam_dir_ == dir_))
{
@@ -86,6 +87,10 @@ Stem_info::Stem_info (Stem const *s)
miny_f_ += min_stem2_f;
}
+ // stems in unnatural (forced) direction are shortened
+ if (s->dir_ != s->get_default_dir ())
+ idealy_f_ -= shorten_f;
+
// lowest beam of (UP) beam must never be lower than second staffline
miny_f_ = miny_f_ >? (- 2 * internote_f - beam_f
+ (mult_i_ > 0) * beam_f + interbeam_f * (mult_i_ - 1));
diff --git a/lily/stem.cc b/lily/stem.cc
index d87ae71b92..454f6d7f7a 100644
--- a/lily/stem.cc
+++ b/lily/stem.cc
@@ -3,13 +3,13 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
TODO: This is way too hairy
*/
#include "stem.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "debug.hh"
#include "paper-def.hh"
#include "note-head.hh"
@@ -20,10 +20,12 @@
#include "beam.hh"
#include "rest.hh"
-const int STEMLEN = 7;
-
IMPLEMENT_IS_TYPE_B1 (Stem,Item);
+
+Stem::~Stem ()
+{
+}
Stem::Stem ()
{
/*
@@ -62,7 +64,7 @@ void
Stem::do_print () const
{
#ifndef NPRINT
- DOUT << "flag "<< flag_i_ ;
+ DOUT << "flag "<< flag_i_;
if (beam_l_)
DOUT << "beamed";
#endif
@@ -97,7 +99,7 @@ Stem::set_stemend (Real se)
{
// todo: margins
if (dir_ && dir_ * head_positions()[dir_] >= se*dir_)
- warning (_("Weird stem size; check for narrow beams"));
+ warning (_ ("weird stem size; check for narrow beams"));
yextent_drul_[dir_] = se;
@@ -111,7 +113,7 @@ Stem::type_i () const
}
void
-Stem::add (Rhythmic_head *n)
+Stem::add_head (Rhythmic_head *n)
{
n->add_dependency (this); // ?
if (n->is_type_b (Note_head::static_name ()))
@@ -132,7 +134,7 @@ Stem::invisible_b () const
}
int
-Stem::get_center_distance (Direction d)
+Stem::get_center_distance (Direction d) const
{
int staff_center = 0;
int distance = d*(head_positions()[d] - staff_center);
@@ -140,7 +142,7 @@ Stem::get_center_distance (Direction d)
}
Direction
-Stem::get_default_dir ()
+Stem::get_default_dir () const
{
return (get_center_distance (UP) >
get_center_distance (DOWN))
@@ -149,7 +151,7 @@ Stem::get_default_dir ()
}
Direction
-Stem::get_dir ()
+Stem::get_dir () const
{
return dir_;
}
@@ -163,18 +165,27 @@ Stem::set_default_dir ()
void
Stem::set_default_stemlen ()
{
- Real len = STEMLEN;
- Real dy = paper ()->interbeam_f (mult_i_);
+ /*
+ TODO
+ urg; this should be handled by Stem_info
+ */
+
+ Real length_f = paper ()->get_var ("stem_length");
+ Real shorten_f = paper ()->get_var ("forced_stem_shorten");
+ Real internote_f = paper ()->internote_f ();
+ length_f /= internote_f;
+ shorten_f /= internote_f;
+
+ Real len = length_f;
if (!dir_)
set_default_dir ();
-
- /* If the stem points in the "wrong" direction, it should be
- shortened, according to [Roush & Gourlay]. Their suggestion to knock off
- a whole staffspace is a bit drastical though.
- */
+ /*
+ stems in unnatural (forced) direction should be shortened,
+ accoding to [Roush & Gourlay]
+ */
else if (dir_ != get_default_dir ())
- len -= 1.0;
+ len -= shorten_f / internote_f;
if (flag_i_ >= 5)
len += 2.0;
@@ -184,13 +195,12 @@ Stem::set_default_stemlen ()
set_stemend ((dir_ > 0) ? head_positions()[BIGGER] + len :
head_positions()[SMALLER] - len);
-
if (dir_ * stem_end_f () < 0)
{
set_stemend (0);
}
}
-
+//xxx
void
Stem::set_default_extents ()
{
@@ -259,8 +269,7 @@ Stem::do_width () const
; // TODO!
else
{
- Paper_def*p= paper ();
- r = p->lookup_l ()->flag (flag_i_, dir_).dim_.x ();
+ r = lookup_l ()->flag (flag_i_, dir_).dim_.x ();
r += note_delta_f ();
}
return r;
@@ -275,9 +284,8 @@ Molecule*
Stem::brew_molecule_p () const
{
Molecule *mol_p =new Molecule;
- Paper_def *p =paper ();
Drul_array<Real> stem_y = yextent_drul_;
- Real dy = p->internote_f ();
+ Real dy = paper ()->internote_f ();
Real head_wid = 0;
@@ -287,16 +295,16 @@ Stem::brew_molecule_p () const
if (!invisible_b ())
{
- Atom ss =p->lookup_l ()->stem (stem_y[DOWN]*dy,
+ Atom ss =lookup_l ()->stem (stem_y[DOWN]*dy,
stem_y[UP]*dy);
- mol_p->add (Atom (ss));
+ mol_p->add_atom (ss);
}
- if (!beam_l_ &&abs (flag_i_) > 2)
+ if (!beam_l_ && abs (flag_i_) > 2)
{
- Atom fl = p->lookup_l ()->flag (flag_i_, dir_);
+ Atom fl = lookup_l ()->flag (flag_i_, dir_);
fl.translate_axis(stem_y[dir_]*dy, Y_AXIS);
- mol_p->add(fl);
+ mol_p->add_atom (fl);
}
if (head_l_arr_.size())
@@ -316,7 +324,12 @@ Stem::note_delta_f () const
Real rule_thick(paper ()->rule_thickness ());
Interval stem_wid(-rule_thick/2, rule_thick/2);
if (stem_xdir_ == CENTER)
+#define EGCS_ICE
+#ifndef EGCS_ICE
r = head_wid.center ();
+#else
+ r = (head_wid.min () + head_wid.max ()) / 2;
+#endif
else
r = head_wid[stem_xdir_] - stem_wid[stem_xdir_];
}
@@ -333,11 +346,10 @@ Stem::hpos_f () const
TODO: head_l_arr_/rest_l_arr_ in do_substitute_dependent ()
*/
void
- Stem::do_substitute_dependency (Score_elem*o,Score_elem*n)
+ Stem::do_substitute_dependency (Score_element*o,Score_element*n)
{
- Item * o_l = o->item ();
- Item * n_l = n? n->item () : 0;
+ Item * o_l = o->access_Item ();
+ Item * n_l = n? n->access_Item () : 0;
head_l_arr_.substitute ((Note_head*)o_l, (Note_head*)n_l);
rest_l_arr_.substitute ((Rest*)o_l, (Rest*)n_l);
}
-
diff --git a/lily/super-elem.cc b/lily/super-elem.cc
index ca153eb5da..fda20ea9ee 100644
--- a/lily/super-elem.cc
+++ b/lily/super-elem.cc
@@ -3,14 +3,14 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "super-elem.hh"
-#include "scoreline.hh"
+#include "super-element.hh"
+#include "line-of-score.hh"
#include "p-score.hh"
#include "string.hh"
-#include "outputter.hh"
+#include "tex-outputter.hh"
void
Super_elem::handle_broken_dependencies()
@@ -22,10 +22,10 @@ Super_elem::handle_broken_dependencies()
void
-Super_elem::do_substitute_dependency (Score_elem*o,Score_elem* n)
+Super_elem::do_substitute_dependency (Score_element*o,Score_element* n)
{
- if (line_of_score_l_ == o->spanner())
- line_of_score_l_ = n? (Line_of_score*) n->spanner() : 0;
+ if (line_of_score_l_ == o->access_Spanner ())
+ line_of_score_l_ = n? (Line_of_score*) n->access_Spanner () : 0;
}
Super_elem::Super_elem()
@@ -40,13 +40,13 @@ Super_elem::do_add_processing()
add_dependency (line_of_score_l_);
}
-IMPLEMENT_IS_TYPE_B1(Super_elem,Score_elem);
+IMPLEMENT_IS_TYPE_B1(Super_elem,Score_element);
/**
for administration of what was done already
*/
-enum Score_elem_status {
+enum Score_element_status {
ORPHAN=0, // not yet added to pstaff
VIRGIN, // added to pstaff
PREBROKEN,
@@ -66,34 +66,34 @@ enum Score_elem_status {
void
Super_elem::pre_processing ()
{
- calcalute_dependencies (PRECALCING, PRECALCED, &Score_elem::do_pre_processing);
+ calcalute_dependencies (PRECALCING, PRECALCED, &Score_element::do_pre_processing);
}
void
Super_elem::space_processing ()
{
- calcalute_dependencies (SPACING, SPACED, &Score_elem::do_space_processing);
+ calcalute_dependencies (SPACING, SPACED, &Score_element::do_space_processing);
}
/* for break processing, use only one status, because copies have to
have correct status. (Previously,
- Score_elem::handle_[pre]broken_dependencies assigned to status_i_
+ Score_element::handle_[pre]broken_dependencies assigned to status_i_
*/
void
Super_elem::breakable_col_processing ()
{
- calcalute_dependencies (PREBROKEN, PREBROKEN, &Score_elem::do_breakable_col_processing);
+ calcalute_dependencies (PREBROKEN, PREBROKEN, &Score_element::do_breakable_col_processing);
}
void
Super_elem::break_processing ()
{
- calcalute_dependencies (BROKEN, BROKEN, &Score_elem::do_break_processing);
+ calcalute_dependencies (BROKEN, BROKEN, &Score_element::do_break_processing);
}
void
Super_elem::post_processing ()
{
- calcalute_dependencies (POSTCALCING, POSTCALCED, &Score_elem::do_post_processing);
+ calcalute_dependencies (POSTCALCING, POSTCALCED, &Score_element::do_post_processing);
}
void
@@ -102,7 +102,7 @@ Super_elem::output_all ()
for (int i=0; i < lines_arr_.size(); i++)
{
pscore_l_->outputter_l_->start_line ();
- lines_arr_[i]->calcalute_dependencies (BREWING, BREWED, &Score_elem::do_brew_molecule);
+ lines_arr_[i]->calcalute_dependencies (BREWING, BREWED, &Score_element::do_brew_molecule);
pscore_l_->outputter_l_->stop_line ();
}
}
@@ -112,6 +112,6 @@ Super_elem::output_all ()
void
Super_elem::unlink_all ()
{
- calcalute_dependencies (UNLINKING, UNLINKED, &Score_elem::junk_links);
+ calcalute_dependencies (UNLINKING, UNLINKED, &Score_element::junk_links);
}
diff --git a/lily/swallow-grav.cc b/lily/swallow-engraver.cc
index 8c32a81a52..20a5130ba6 100644
--- a/lily/swallow-grav.cc
+++ b/lily/swallow-engraver.cc
@@ -3,9 +3,9 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "swallow-grav.hh"
+#include "swallow-engraver.hh"
IMPLEMENT_IS_TYPE_B1(Swallow_engraver,Engraver);
diff --git a/lily/swallow-perf.cc b/lily/swallow-perf.cc
index 5f2cbb2873..27b61ba4f1 100644
--- a/lily/swallow-perf.cc
+++ b/lily/swallow-perf.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "swallow-perf.hh"
diff --git a/lily/symtable.cc b/lily/symtable.cc
index 52ef9fefc0..5814d5294a 100644
--- a/lily/symtable.cc
+++ b/lily/symtable.cc
@@ -3,11 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "misc.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "debug.hh"
#include "real.hh"
#include "atom.hh"
@@ -41,10 +41,13 @@ Atom
Symtable::lookup (String s) const
{
if (elt_b (s))
- return (*this)[s];
+ {
+ Atom a (elem(s));
+ return a;
+ }
else
{
- warning ("Symtable `" + id_str+ _("\': unknown symbol `") +s+"'\n");
+ warning (_f ("Symtable `%s\': unknown symbol: `%s\'", id_str, s));
Atom sy;
return sy;
}
@@ -55,9 +58,9 @@ Symtables::operator()(String s)
{
if (!elt_b (s))
{
- error ("Symtable `" + s + _("\' unknown"));
+ error (_f ("Symtable `%s\' unknown", s));
/*
- We can't return, because we'll dump core anyway.
+ We can 't return, because we'll dump core anyway.
*/
return 0;
}
@@ -69,7 +72,7 @@ Symtables::print() const
{
for (Assoc_iter<String, Symtable*> i (*this); i.ok(); i++)
{
- DOUT << "table \'" << i.key() << "\' {\n";
+ DOUT << "table \'" << i.key () << "\' {\n";
i.val()->print ();
DOUT << "}\n";
}
@@ -79,7 +82,7 @@ Symtable::print() const
{
for (Assoc_iter<String, Atom> i (*this); i.ok(); i++)
{
- DOUT << "\'" << i.key() << "\'->" << i.val ().str () << "\n";
+ DOUT << "\'" << i.key() << "\'->" << i.val ().str () << '\n';
}
}
diff --git a/lily/template1.cc b/lily/template1.cc
index b4a5dbf209..9a5ac42160 100644
--- a/lily/template1.cc
+++ b/lily/template1.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "proto.hh"
@@ -20,6 +20,6 @@
#define IPLC_INSTANTIATE(a) POINTERLIST_INSTANTIATE(a)
-IPLC_INSTANTIATE(Score_elem);
+IPLC_INSTANTIATE(Score_element);
IPLC_INSTANTIATE(Spanner);
IPLC_INSTANTIATE(Idealspacing);
diff --git a/lily/template2.cc b/lily/template2.cc
index b9ea8f4ace..b60867333d 100644
--- a/lily/template2.cc
+++ b/lily/template2.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "line-spacer.hh"
diff --git a/lily/template3.cc b/lily/template3.cc
index 5191f663c5..eb9417c5e8 100644
--- a/lily/template3.cc
+++ b/lily/template3.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "atom.hh"
diff --git a/lily/template4.cc b/lily/template4.cc
index 8ff8142c7e..65f9617165 100644
--- a/lily/template4.cc
+++ b/lily/template4.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef __CYGWIN32__
diff --git a/lily/template5.cc b/lily/template5.cc
index 98b3dc89fd..ca2523d478 100644
--- a/lily/template5.cc
+++ b/lily/template5.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <limits.h>
diff --git a/lily/template7.cc b/lily/template7.cc
index c38954bf2d..e435c672a6 100644
--- a/lily/template7.cc
+++ b/lily/template7.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "proto.hh"
diff --git a/lily/template8.cc b/lily/template8.cc
index 2d24fce40a..9433757adc 100644
--- a/lily/template8.cc
+++ b/lily/template8.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "proto.hh"
diff --git a/lily/tex-beam.cc b/lily/tex-beam.cc
index f2d07eb855..002154acc4 100644
--- a/lily/tex-beam.cc
+++ b/lily/tex-beam.cc
@@ -1,9 +1,9 @@
/*
- tex-beam.cc -- implement Lookup::{beam_element, beam, rule_symbol}
+ tex-beam.cc -- implement Lookup::beam
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
/*
@@ -15,7 +15,7 @@
#include "molecule.hh"
#include "tex.hh"
#include "symtable.hh"
-#include "dimen.hh"
+#include "dimension.hh"
#include "debug.hh"
#include "lookup.hh"
#include "misc.hh"
@@ -55,7 +55,7 @@ Atom
Lookup::ps_beam (Real slope, Real width, Real thick) const
{
String ps = "\\embeddedps{\n";
- ps += String (width) + " "+ String (slope) + " " + String (thick)
+ ps += to_str (width) + " "+ to_str (slope) + " " + to_str (thick)
+ " draw_beam}";
Atom s;
diff --git a/lily/tex-outputter.cc b/lily/tex-outputter.cc
new file mode 100644
index 0000000000..67ea1fe0ab
--- /dev/null
+++ b/lily/tex-outputter.cc
@@ -0,0 +1,94 @@
+/*
+ tex-outputter.cc -- implement Tex_outputter
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "tex-outputter.hh"
+#include "tex-stream.hh"
+#include "molecule.hh"
+#include "atom.hh"
+#include "array.hh"
+#include "dimension.hh"
+#include "tex.hh"
+#include "string-convert.hh"
+#include "debug.hh"
+
+Tex_outputter::Tex_outputter (Tex_stream *s)
+{
+ outstream_l_ = s;
+}
+
+/*
+ 26 fonts ought to be enough for anyone.
+*/
+static String
+tex_font_command(int i)
+{
+ return "\\font" +String_convert::form_str ("%c", 'A' + i) ;
+}
+
+void
+Tex_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_ <<tex_font_command (i) << "\n";
+ return ;
+ }
+
+
+ font_arr_.push (fontname);
+ *outstream_l_ << "\\font" + tex_font_command (i) << "=" + fontname << "\n";
+ *outstream_l_<< tex_font_command (i);
+}
+
+void
+Tex_outputter::output_molecule (Molecule const*m, Offset o, char const *nm)
+{
+ 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;
+ }
+}
+
+
+void
+Tex_outputter::start_line ()
+{
+ *outstream_l_ << "\\hbox{%\n";
+}
+
+void
+Tex_outputter::stop_line ()
+{
+ *outstream_l_ << "}";
+ *outstream_l_ << "\\interscoreline";
+ current_font_ = "";
+ font_arr_.clear ();
+}
diff --git a/lily/tex-stream.cc b/lily/tex-stream.cc
index 91f26921b3..9866c231ad 100644
--- a/lily/tex-stream.cc
+++ b/lily/tex-stream.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -19,9 +19,13 @@ const int MAXLINELEN = 200;
Tex_stream::Tex_stream (String filename)
{
- os = new ofstream (filename.ch_C ());
+ 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 (_("can't open `") + filename+"\'");
+ error (_f ("can't open file: `%s\'", filename));
nest_level = 0;
line_len_i_ = 0;
outputting_comment=false;
@@ -30,17 +34,17 @@ Tex_stream::Tex_stream (String filename)
void
Tex_stream::header()
{
- *os << _("% Creator: ");
+ *os << _ ("% Creator: ");
if (no_timestamps_global_b)
*os << "GNU LilyPond\n";
else
- *os << get_version_str() << "\n";
- *os << _("% Automatically generated");
+ *os << get_version_str() << '\n';
+ *os << _ ("% Automatically generated");
if (no_timestamps_global_b)
*os << ".\n";
else
{
- *os << _(", at ");
+ *os << _ (", at ");
time_t t (time (0));
*os << ctime (&t) << "%\n";
}
@@ -51,7 +55,7 @@ Tex_stream::~Tex_stream()
*os << flush;
if (!*os)
{
- warning(_("error syncing file (disk full?)"));
+ warning(_ ("error syncing file (disk full?)"));
exit_status_i_ = 1;
}
delete os;
@@ -59,10 +63,9 @@ Tex_stream::~Tex_stream()
}
// print string. don't forget indent.
-Tex_stream &
-Tex_stream::operator<<(String s)
+Tex_stream&
+Tex_stream::operator << (Scalar s)
{
-
for (char const *cp = s.ch_C (); *cp; cp++)
{
if (outputting_comment)
@@ -118,6 +121,7 @@ void
Tex_stream::break_line()
{
*os << "%\n";
- *os << String (' ', nest_level);
+ *os << to_str (' ', nest_level);
line_len_i_ = 0;
}
+
diff --git a/lily/tex.cc b/lily/tex.cc
index 04f3e9cf4a..635b281aa6 100644
--- a/lily/tex.cc
+++ b/lily/tex.cc
@@ -3,13 +3,13 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "dimen.hh"
+#include "dimension.hh"
#include "tex.hh"
#include "atom.hh"
-#include "varray.hh"
+#include "array.hh"
String
vstrut (Real h)
diff --git a/lily/text-def.cc b/lily/text-def.cc
index 6fdf2542d2..faf0dae1c4 100644
--- a/lily/text-def.cc
+++ b/lily/text-def.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "debug.hh"
@@ -11,7 +11,7 @@
#include "paper-def.hh"
#include "molecule.hh"
#include "text-def.hh"
-#include "dimen.hh"
+#include "dimension.hh"
Direction
Text_def::staff_dir () const
@@ -28,7 +28,7 @@ Text_def::width (Paper_def * p) const
Real guess_width_f = text_str_.length_i() * a.dim_.x ().length (); // ugh
Interval i (0, guess_width_f);
- i += - (align_i_ + 1)* i.center();
+ i += - (align_dir_ + 1)* i.center();
return i;
}
@@ -36,13 +36,13 @@ void
Text_def::do_print() const
{
#ifndef NPRINT
- DOUT << "align " <<align_i_ << " `" << text_str_ << "'";
+ DOUT << "align " << align_dir_ << " `" << text_str_ << "'";
#endif
}
Text_def::Text_def()
{
- align_i_ = RIGHT;
+ align_dir_ = RIGHT;
style_str_ = "roman";
}
@@ -50,21 +50,26 @@ bool
Text_def::do_equal_b (General_script_def const *gdef) const
{
Text_def const *def= (Text_def*)gdef;
- return align_i_ == def->align_i_ && text_str_ == def->text_str_
+ return align_dir_ == def->align_dir_ && text_str_ == def->text_str_
&& style_str_ == def->style_str_;
}
Atom
Text_def::get_atom (Paper_def *p, Direction) const
{
- return p->lookup_l()->text (style_str_, text_str_, -align_i_);
+ Atom a= p->lookup_l(0)->text (style_str_, text_str_);
+
+ Real guess_width_f = text_str_.length_i() * a.dim_.x ().length (); // ugh
+ a.translate_axis (-(align_dir_ + 1)* guess_width_f/ 2, X_AXIS);
+
+ return a;
}
void
Text_def::print() const
{
DOUT << "Text `" << text_str_ << "\', style " <<
- style_str_ << "align " << align_i_ << '\n';
+ style_str_ << "align " << align_dir_ << '\n';
}
diff --git a/lily/text-item.cc b/lily/text-item.cc
index 6384ba2582..c23b63c9a5 100644
--- a/lily/text-item.cc
+++ b/lily/text-item.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -49,7 +49,7 @@ Text_item::get_position_f () const
return -20;
}
- Interval v = support_height ();
+ Interval v = support_extent ();
// add no extra: fingers should be just above note, no?
return v[dir_];
}
@@ -72,7 +72,8 @@ Text_item::brew_molecule_p () const
if (dir_<0) // should do something better anyway.
mol_p->translate_axis (-mol_p->extent ().y ().left , Y_AXIS);
- mol_p->translate_axis (y_, Y_AXIS);
+ mol_p->translate_axis (coordinate_offset_f_, Y_AXIS);
+
return mol_p;
}
diff --git a/lily/text-spanner.cc b/lily/text-spanner.cc
index 1e4a53b2fb..2bafc76723 100644
--- a/lily/text-spanner.cc
+++ b/lily/text-spanner.cc
@@ -3,11 +3,11 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "molecule.hh"
-#include "boxes.hh"
+#include "box.hh"
#include "text-spanner.hh"
#include "text-def.hh"
#include "debug.hh"
@@ -61,7 +61,7 @@ Text_spanner::brew_molecule_p() const
tsym.translate (text_off_);
Molecule*output = new Molecule;
- output->add (tsym);
+ output->add_atom (tsym);
return output;
}
@@ -78,10 +78,10 @@ Text_spanner::height() const
}
void
-Text_spanner::do_substitute_dependency (Score_elem* o, Score_elem*n)
+Text_spanner::do_substitute_dependency (Score_element* o, Score_element*n)
{
if (support_span_l_ == o)
- support_span_l_ = (Directional_spanner*) (n?n->spanner():0);
+ support_span_l_ = (Directional_spanner*) (n?n->access_Spanner ():0);
}
diff --git a/lily/tie-grav.cc b/lily/tie-engraver.cc
index ae9f6d2961..d6313a2856 100644
--- a/lily/tie-grav.cc
+++ b/lily/tie-engraver.cc
@@ -3,10 +3,13 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+
+ essentially obsolete.
*/
-#include "tie-grav.hh"
+#include "tie-engraver.hh"
#include "tie.hh"
#include "note-head.hh"
#include "musical-request.hh"
@@ -41,14 +44,14 @@ Tie_engraver::do_post_move_processing()
bool
Tie_engraver::do_try_request (Request*r)
{
- if (! (r->musical() && r->musical ()->tie ()))
+ if (! (r->access_Musical_req () && r->access_Musical_req ()->access_Tie_req ()))
return false;
if (req_l_)
{
return false;
}
- req_l_ = r->musical()->tie ();
+ req_l_ = r->access_Musical_req ()->access_Tie_req ();
end_mom_ = r->parent_music_l_->time_int().length ()
+ now_moment ();
return true;
@@ -57,33 +60,41 @@ Tie_engraver::do_try_request (Request*r)
void
Tie_engraver::do_process_requests()
{
- dir_ = (Direction) int (get_property ("ydirection"));
+ Scalar dir (get_property ("tieydirection"));
+ Scalar dir2 (get_property ("ydirection"));
+ if (!dir.length_i () && dir2.length_i ())
+ {
+ dir_ = (Direction) int(dir2);
+ }
+ else if (dir.length_i ())
+ dir_ = (Direction) int (dir);
+
if (req_l_ && ! tie_p_)
{
tie_p_ = new Tie;
- Scalar prop = get_property ("slurdash");
+ Scalar prop = get_property ("tiedash");
if (prop.isnum_b ())
tie_p_->dash_i_ = prop;
}
}
void
-Tie_engraver::acknowledge_element (Score_elem_info i)
+Tie_engraver::acknowledge_element (Score_element_info i)
{
if (i.elem_l_->is_type_b (Note_head::static_name ()))
{
if (tie_p_)
{
- tie_p_->set_head (LEFT, (Note_head*)i.elem_l_->item());
- melodic_req_l_ = i.req_l_->musical()->melodic ();
+ tie_p_->set_head (LEFT, (Note_head*)i.elem_l_->access_Item ());
+ melodic_req_l_ = i.req_l_->access_Musical_req ()->access_Melodic_req ();
}
if (end_tie_p_)
{
- end_tie_p_->set_head (RIGHT, (Note_head*)i.elem_l_->item());
+ end_tie_p_->set_head (RIGHT, (Note_head*)i.elem_l_->access_Item ());
if (!Melodic_req::compare (*end_melodic_req_l_, *melodic_req_l_))
end_tie_p_->same_pitch_b_ = true;
- announce_element (Score_elem_info (end_tie_p_,end_req_l_));
+ announce_element (Score_element_info (end_tie_p_,end_req_l_));
}
}
}
@@ -108,9 +119,10 @@ Tie_engraver::do_removal_processing ()
do_pre_move_processing ();
if (tie_p_)
{
- req_l_->warning (_("unended Tie"));
+ req_l_->warning (_ ("lonely tie"));
tie_p_->unlink ();
delete tie_p_;
+ tie_p_ =0;
}
}
diff --git a/lily/tie.cc b/lily/tie.cc
index c47d0831ac..cc36ab22c0 100644
--- a/lily/tie.cc
+++ b/lily/tie.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "paper-def.hh"
@@ -11,7 +11,6 @@
#include "note-head.hh"
#include "p-col.hh"
#include "debug.hh"
-#include "main.hh" // experimental features
IMPLEMENT_IS_TYPE_B1(Tie,Bow);
@@ -48,7 +47,7 @@ void
Tie::do_add_processing()
{
if (!(head_l_drul_[LEFT] && head_l_drul_[RIGHT]))
- warning (_("Lonely tie.. "));
+ warning (_ ("lonely tie"));
Direction d = LEFT;
Drul_array<Note_head *> new_head_drul = head_l_drul_;
@@ -103,9 +102,9 @@ Tie::do_post_processing()
dy_f_drul_[d] += dir_ * 0.25 * interline_f;
}
// tie attached to inner notehead
- else if (head_l_drul_[d])
+ else if (head_l_drul_[d] && d == LEFT)
{
- dx_f_drul_[d] += d*0.5 * notewidth;
+ dx_f_drul_[d] += -d * notewidth;
}
// uhm? loose end of tie // tie attached to stem
else
@@ -150,12 +149,12 @@ Tie::do_post_processing()
}
void
-Tie::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Tie::do_substitute_dependency (Score_element*o, Score_element*n)
{
- Note_head *new_l =n?(Note_head*)n->item():0;
- if (o->item() == head_l_drul_[LEFT])
+ Note_head *new_l =n?(Note_head*)n->access_Item ():0;
+ if (o->access_Item () == head_l_drul_[LEFT])
head_l_drul_[LEFT] = new_l;
- else if (o->item() == head_l_drul_[RIGHT])
+ else if (o->access_Item () == head_l_drul_[RIGHT])
head_l_drul_[RIGHT] = new_l;
}
diff --git a/lily/ties-engraver.cc b/lily/ties-engraver.cc
new file mode 100644
index 0000000000..8f9aa39777
--- /dev/null
+++ b/lily/ties-engraver.cc
@@ -0,0 +1,149 @@
+/*
+ tie-reg.cc -- implement Ties_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "ties-engraver.hh"
+#include "tie.hh"
+#include "note-head.hh"
+#include "musical-request.hh"
+#include "music-list.hh"
+
+Ties_engraver::Ties_engraver()
+{
+ req_l_ = end_req_l_ =0;
+ processed_ack_pass_i_ = 0;
+
+}
+
+void
+Ties_engraver::do_post_move_processing()
+{
+ processed_ack_pass_i_ =0;
+}
+
+bool
+Ties_engraver::do_try_request (Request*req)
+{
+ if (! req->access_Musical_req ())
+ return false;
+
+ Tie_req * r= req->access_Musical_req ()->access_Tie_req ();
+ if (!r)
+ return false;
+
+ req_l_ = r;
+ return true;
+}
+
+
+void
+Ties_engraver::acknowledge_element (Score_element_info i)
+{
+ if (!req_l_ && ! end_req_l_)
+ return;
+ if (i.elem_l_->is_type_b (Note_head::static_name ()))
+ {
+ Note_head * h = (Note_head*)i.elem_l_->access_Item ();
+ Melodic_req *m = i.req_l_->access_Musical_req ()->access_Melodic_req ();
+
+ head_mel_tuple_arr_.push (Head_melodic_tuple (h, m));
+ }
+}
+
+void
+Ties_engraver::process_acknowledged ()
+{
+ if (!head_mel_tuple_arr_.size () || processed_ack_pass_i_ ++)
+ return;
+
+ head_mel_tuple_arr_.sort (Head_melodic_tuple::compare);
+ if (req_l_ && !tie_p_arr_.size ())
+ {
+ for (int i=0; i < head_mel_tuple_arr_.size (); i++)
+ {
+ Tie* p = new Tie;
+ p->set_head (LEFT,head_mel_tuple_arr_[i].head_l_);
+ // announce_element (Score_element_info (p, req_l_));
+ tie_p_arr_.push (p);
+ }
+ }
+
+ if (end_req_l_)
+ {
+ for (int i=0; i < end_tie_p_arr_.size (); i++)
+ {
+ int j = i;
+ if (j >= head_mel_tuple_arr_.size ())
+ {
+ left_head_mel_tuple_arr_[i].mel_l_->warning (_( "Can't find a note head at the right to attach Tie"));
+ j = head_mel_tuple_arr_.size () -1;
+ }
+
+ Tie*p=end_tie_p_arr_[i];
+ p->set_head (RIGHT, head_mel_tuple_arr_[j].head_l_);
+ if (!Melodic_req::compare (*head_mel_tuple_arr_[j].mel_l_,
+ *left_head_mel_tuple_arr_[j].mel_l_))
+ p->same_pitch_b_ = true;
+ announce_element ( Score_element_info (p, end_req_l_));
+ }
+ }
+}
+
+
+void
+Ties_engraver::do_pre_move_processing()
+{
+ if (!head_mel_tuple_arr_.size ())
+ return;
+
+
+ for (int i =0; i < end_tie_p_arr_.size (); i++)
+ {
+ typeset_element (end_tie_p_arr_[i]);
+ }
+
+ end_tie_p_arr_ = tie_p_arr_;
+ left_head_mel_tuple_arr_ = head_mel_tuple_arr_;
+ end_req_l_ = req_l_;
+
+ req_l_ =0;
+ head_mel_tuple_arr_.clear ();
+ tie_p_arr_.clear ();
+}
+
+void
+Ties_engraver::do_removal_processing ()
+{
+}
+
+void
+Ties_engraver::do_process_requests ()
+{}
+
+
+IMPLEMENT_IS_TYPE_B1(Ties_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Ties_engraver);
+
+
+Head_melodic_tuple::Head_melodic_tuple ()
+{
+ head_l_ =0;
+ mel_l_ =0;
+}
+
+Head_melodic_tuple::Head_melodic_tuple (Note_head *h, Melodic_req*m)
+{
+ head_l_ = h;
+ mel_l_ = m;
+}
+
+int
+Head_melodic_tuple::compare (Head_melodic_tuple const&h1,
+ Head_melodic_tuple const &h2)
+{
+ return Melodic_req::compare (*h1.mel_l_, *h2.mel_l_);
+}
diff --git a/lily/time-description.cc b/lily/time-description.cc
index e2b87d0fee..22ab2d9acc 100644
--- a/lily/time-description.cc
+++ b/lily/time-description.cc
@@ -3,23 +3,23 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "time-description.hh"
#include "debug.hh"
String
-Time_description::str() const
+Time_description::str () const
{
String s ("Time_description { ");
if (cadenza_b_)
- s+=String (" (cadenza) ");
- s+= "at ";
- s+=when_;
- s+="\nmeter " + (whole_per_measure_/one_beat_).str () +":" +
+ s += String ("(") + _("cadenza") + ")";
+ s += "at ";
+ s += when_.str ();
+ s +="\ntime_signature " + (whole_per_measure_/one_beat_).str () +":" +
(Rational (Rational (1)/one_beat_)).str ();
- s+= "\nposition "+String (bars_i_) + ":"+ whole_in_measure_.str () +"\n}\n";
+ s += "\nposition " + to_str (bars_i_) + ":"+ whole_in_measure_.str () +"\n}\n";
return s;
}
@@ -27,7 +27,7 @@ void
Time_description::print() const
{
#ifndef NPRINT
- DOUT << str();
+ DOUT << str ();
#endif
}
void
@@ -81,7 +81,7 @@ Time_description::add (Moment dt)
}
void
-Time_description::set_meter (int l, int o)
+Time_description::set_time_signature (int l, int o)
{
assert (o);
one_beat_ = Rational (1)/Moment (o);
@@ -89,7 +89,7 @@ Time_description::set_meter (int l, int o)
}
bool
-Time_description::allow_meter_change_b()
+Time_description::allow_time_signature_change_b()
{
return!(whole_in_measure_);
}
@@ -103,9 +103,9 @@ String
Time_description::try_set_partial_str (Moment p) const
{
if (p<Rational (0))
- return (_("Partial must be non-negative"));
+ return (_ ("partial measure must be non-negative"));
if (p > whole_per_measure_)
- return (_("Partial measure too large"));
+ return (_ ("partial measure too large"));
return "";
}
diff --git a/lily/time-signature-engraver.cc b/lily/time-signature-engraver.cc
new file mode 100644
index 0000000000..75d803226b
--- /dev/null
+++ b/lily/time-signature-engraver.cc
@@ -0,0 +1,62 @@
+/*
+ time_signature-reg.cc -- implement Time_signature_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "time-signature-engraver.hh"
+#include "time-signature.hh"
+#include "command-request.hh"
+#include "timing-engraver.hh"
+#include "engraver-group.hh"
+
+Time_signature_engraver::Time_signature_engraver()
+{
+ time_signature_p_ =0;
+}
+
+void
+Time_signature_engraver::do_process_requests()
+{
+ Translator * result =
+ daddy_grav_l()->get_simple_translator (Timing_engraver::static_name());
+
+ if (!result)
+ {
+ warning (_ ("lost in time") + ": " + _ ("can't find")
+ + " Timing_translator");
+ return ;
+ }
+
+ Timing_engraver * timing_grav_l= (Timing_engraver*) result->engraver_l ();
+
+ Time_signature_change_req *req = timing_grav_l->time_signature_req_l();
+ if (req)
+ {
+ Array<Scalar> args;
+ args.push (req->beats_i_);
+ args.push (req->one_beat_i_);
+
+ time_signature_p_ = new Time_signature (args);
+ time_signature_p_->break_priority_i_ = 1; // ugh
+ }
+
+ if (time_signature_p_)
+ announce_element (Score_element_info (time_signature_p_, req));
+}
+
+void
+Time_signature_engraver::do_pre_move_processing()
+{
+ if (time_signature_p_)
+ {
+ typeset_element (time_signature_p_);
+ time_signature_p_ =0;
+ }
+}
+
+
+ADD_THIS_TRANSLATOR(Time_signature_engraver);
+IMPLEMENT_IS_TYPE_B1(Time_signature_engraver,Engraver);
diff --git a/lily/meter.cc b/lily/time-signature.cc
index 97df812358..e882c55582 100644
--- a/lily/meter.cc
+++ b/lily/time-signature.cc
@@ -1,23 +1,23 @@
#include "scalar.hh"
#include "molecule.hh"
-#include "meter.hh"
+#include "time-signature.hh"
#include "paper-def.hh"
#include "lookup.hh"
-Meter::Meter (Array<Scalar>a)
+Time_signature::Time_signature (Array<Scalar>a)
:args (a)
{
breakable_b_ = true;
}
Molecule*
-Meter::brew_molecule_p() const
+Time_signature::brew_molecule_p() const
{
- Atom s = paper()->lookup_l ()->meter (args);
+ Atom s = lookup_l ()->time_signature (args);
s.translate_axis (-s.extent()[Y_AXIS].center (), Y_AXIS);
return new Molecule (Atom (s));
}
-IMPLEMENT_IS_TYPE_B1(Meter,Item);
+IMPLEMENT_IS_TYPE_B1(Time_signature,Item);
diff --git a/lily/timing-grav.cc b/lily/timing-engraver.cc
index a994334fc2..dfe98a9d30 100644
--- a/lily/timing-grav.cc
+++ b/lily/timing-engraver.cc
@@ -3,12 +3,12 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "score-grav.hh"
-#include "timing-grav.hh"
+#include "score-engraver.hh"
+#include "timing-engraver.hh"
#include "command-request.hh"
-#include "score-elem-info.hh"
+#include "score-element-info.hh"
#include "multi-measure-rest.hh"
diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc
index ce04be40a9..6ab83a2ea9 100644
--- a/lily/timing-translator.cc
+++ b/lily/timing-translator.cc
@@ -1,10 +1,9 @@
-
/*
timing-translator.cc -- implement Timing_translator
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "timing-translator.hh"
@@ -21,8 +20,8 @@ Timing_translator::Timing_translator ()
bool
Timing_translator::do_try_request(Request*r)
{
- Command_req * c = r->command();
- if (!(c && c->timing()))
+ Command_req * c = r->access_Command_req ();
+ if (!(c && c->access_Timing_req ()))
return false;
for (int i=0; i < timing_req_l_arr_.size (); i++)
{
@@ -30,22 +29,22 @@ Timing_translator::do_try_request(Request*r)
return true;
if (timing_req_l_arr_[i]->name() == r->name())
{
- r->warning (_("conflicting timing request"));
+ r->warning (_ ("conflicting timing request"));
return false;
}
}
- timing_req_l_arr_.push(c->timing());
+ timing_req_l_arr_.push(c->access_Timing_req ());
return true;
}
-Meter_change_req*
-Timing_translator::meter_req_l() const
+Time_signature_change_req*
+Timing_translator::time_signature_req_l() const
{
- Meter_change_req *m_l=0;
+ Time_signature_change_req *m_l=0;
for (int i=0; !m_l && i < timing_req_l_arr_.size (); i++)
{
- m_l=timing_req_l_arr_[i]->meterchange();
+ m_l=timing_req_l_arr_[i]->access_Time_signature_change_req ();
}
return m_l;
}
@@ -56,23 +55,23 @@ Timing_translator::do_process_requests()
for (int i=0; i < timing_req_l_arr_.size (); i++)
{
Timing_req * tr_l = timing_req_l_arr_[i];
- Meter_change_req *m_l = tr_l->meterchange();
+ Time_signature_change_req *m_l = tr_l->access_Time_signature_change_req ();
if (m_l)
{
int b_i= m_l->beats_i_;
int o_i = m_l->one_beat_i_;
- if (! time_.allow_meter_change_b())
- tr_l->warning (_("Meter change not allowed here"));
+ if (! time_.allow_time_signature_change_b())
+ tr_l->warning (_ ("time signature change not allowed here"));
else
{
- time_.set_meter (b_i, o_i);
+ time_.set_time_signature (b_i, o_i);
default_grouping_ =
Rhythmic_grouping (MInterval (0,Moment (b_i, o_i)), b_i);
}
}
- else if (tr_l->partial())
+ else if (tr_l->access_Partial_measure_req ())
{
- Moment m = tr_l->partial()->duration_;
+ Moment m = tr_l->access_Partial_measure_req ()->duration_;
String error = time_.try_set_partial_str (m);
if (error.length_i ())
{
@@ -81,26 +80,27 @@ Timing_translator::do_process_requests()
else
time_.setpartial (m);
}
- else if (tr_l->barcheck())
+ else if (tr_l->access_Barcheck_req())
{
if (time_.whole_in_measure_)
{
- tr_l ->warning (_("Barcheck failed"));
+ tr_l ->warning (_f ("barcheck failed by: %s",
+ time_.whole_in_measure_.str ()));
time_.whole_in_measure_ = 0; // resync
time_.error_b_ = true;
}
}
- else if (tr_l->cadenza())
+ else if (tr_l->access_Cadenza_req ())
{
- time_.set_cadenza (tr_l->cadenza()->on_b_);
+ time_.set_cadenza (tr_l->access_Cadenza_req ()->on_b_);
}
- else if (tr_l->measuregrouping())
+ else if (tr_l->access_Measure_grouping_req ())
{
default_grouping_ =
- parse_grouping (tr_l->measuregrouping()->beat_i_arr_,
- tr_l->measuregrouping()->elt_length_arr_);
+ parse_grouping (tr_l->access_Measure_grouping_req ()->beat_i_arr_,
+ tr_l->access_Measure_grouping_req ()->elt_length_arr_);
}
}
diff --git a/lily/translation-property.cc b/lily/translation-property.cc
index a5bc9d4850..f4a9ab245e 100644
--- a/lily/translation-property.cc
+++ b/lily/translation-property.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "translation-property.hh"
@@ -15,6 +15,6 @@ void
Translation_property::do_print () const
{
#ifndef NPRINT
- DOUT << "." << var_str_ << " = " << String(value_);
+ DOUT << "." << var_str_ << " = " << value_;
#endif
}
diff --git a/lily/translator-ctors.cc b/lily/translator-ctors.cc
index 7a65215c81..1541b32722 100644
--- a/lily/translator-ctors.cc
+++ b/lily/translator-ctors.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "proto.hh"
@@ -12,6 +12,10 @@
#include "dictionary.hh"
#include "debug.hh"
+/*
+ should delete these after exit.
+ */
+
Dictionary<Translator*> *global_translator_dict_p=0;
void
@@ -28,10 +32,12 @@ get_translator_l (String s)
{
if (global_translator_dict_p->elt_b (s))
{
- return (*global_translator_dict_p)[s];
+// return (*global_translator_dict_p)[s];
+ Translator* t = (*global_translator_dict_p)[s];
+ return t;
}
- error (_("Unknown translator `") + s +"\'");
+ error (_f ("unknown translator `%s\'", s));
return 0;
}
diff --git a/lily/translator-group.cc b/lily/translator-group.cc
index 5846c2bb37..f1da4dbdf9 100644
--- a/lily/translator-group.cc
+++ b/lily/translator-group.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "music-output-def.hh"
@@ -146,7 +146,7 @@ Translator_group::find_create_translator_l (String n, String id)
ret = daddy_trans_l_->find_create_translator_l (n,id);
else
{
- warning (_("Can't find or create `") + n + _("' called `") + id + "'\n");
+ warning (_f ("can't find or create `%s\' called `%s\'", n, id));
ret =0;
}
return ret;
@@ -206,7 +206,7 @@ Translator_group::nongroup_l_arr () const
void
Translator_group::terminate_translator (Translator*r_l)
{
- DOUT << "Removing " << r_l->name() << " at " << now_moment () << "\n";
+ DOUT << "Removing " << r_l->name() << " at " << now_moment () << '\n';
r_l->removal_processing();
Translator * trans_p =remove_translator_p (r_l);
@@ -258,6 +258,11 @@ Translator_group::get_default_interpreter()
if (accepts_str_arr_.size())
{
Translator*t = output_def_l ()->find_translator_l (accepts_str_arr_[0]);
+ if (!t)
+ {
+ warning (_f ("can't find or create `%s\'", accepts_str_arr_[0]));
+ t = this;
+ }
Translator_group * g= t->clone ()->group_l ();
add (g);
@@ -302,7 +307,7 @@ Translator_group::do_print() const
{
if (id_str_.length_i ())
DOUT << "ID: " << id_str_ ;
- DOUT << " iterators: " << iterator_count_<< "\n";
+ DOUT << " iterators: " << iterator_count_<< '\n';
}
each (&Translator::print);
#endif
@@ -345,7 +350,7 @@ Translator_group::do_add_processing ()
{
Translator * t = output_def_l ()->find_translator_l (consists_str_arr_[i]);
if (!t)
- warning (_("Could not find `") +consists_str_arr_[i]+ "'");
+ warning (_f ("can't find `%s\'", consists_str_arr_[i]));
else
add (t->clone ());
}
diff --git a/lily/translator.cc b/lily/translator.cc
index ae5562579e..3f00ff928f 100644
--- a/lily/translator.cc
+++ b/lily/translator.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
@@ -78,7 +78,7 @@ Translator::print () const
DOUT << "type = " << type_str_;
for (Dictionary_iter<Scalar> i (properties_dict_); i.ok (); i++)
{
- DOUT << i.key () << "=" << i.val () <<"\n";
+ DOUT << i.key () << "=" << i.val () << '\n';
}
do_print ();
DOUT << "}\n";
diff --git a/lily/type-swallow-trans.cc b/lily/type-swallow-trans.cc
index bd85e40514..58dceb1b1d 100644
--- a/lily/type-swallow-trans.cc
+++ b/lily/type-swallow-trans.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "type-swallow-trans.hh"
diff --git a/lily/version.cc b/lily/version.cc
index 205e259b25..787f001831 100644
--- a/lily/version.cc
+++ b/lily/version.cc
@@ -1,21 +1,11 @@
#include "main.hh"
-
#include "string.hh"
char const * lily_version_sz();
-char const * lily_version_number_sz();
String
get_version_str()
{
String s = lily_version_sz();
- s+="/";
- s+=flower_version_sz();
- return s;
-}
-
-String
-get_version_number_str()
-{
- return lily_version_number_sz();
+ return s;
}
diff --git a/lily/vertical-align-elem.cc b/lily/vertical-align-elem.cc
deleted file mode 100644
index dbd8e4b8eb..0000000000
--- a/lily/vertical-align-elem.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- vertical-align-item.cc -- implement Vertical_align_elem
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "vertical-align-elem.hh"
-#include "interval.hh"
-
-void
-Vertical_align_element::add (Score_elem*el_l)
-{
- assert (! contains_b (el_l));
- elem_l_arr_.push (el_l);
- add_dependency (el_l);
-}
-
-void
-Vertical_align_element::do_substitute_dependency (Score_elem*o,Score_elem*n)
-{
- int i;
- while ((i = elem_l_arr_.find_i (o))>=0)
- if (n)
- elem_l_arr_[i] = n;
- else
- elem_l_arr_.del (i);
-}
-
-/**
- Align elements top to bottom.
- The first element has its top at y =0.0 afterwards
-
- TODO configurable, like Horizontal_align_item
- */
-void
-Vertical_align_element::do_post_processing()
-{
- Array<Interval> dims;
- for (int i=0; i < elem_l_arr_.size(); i++)
- {
- Interval y = elem_l_arr_[i]->height() ;
- if (y.empty_b())
- y = Interval (0,0);
-
- dims.push (y);
- }
-
- Real where_f=0;
- for (int i=0 ; i < elem_l_arr_.size(); i++)
- {
- elem_l_arr_[i]->translate_axis (- dims[i][1] - where_f, Y_AXIS);
- where_f += dims[i].length();
- }
-}
-
-bool
-Vertical_align_element::contains_b (Score_elem const *e) const
-{
- return elem_l_arr_.find_l (e);
-}
-
-Vertical_align_element::Vertical_align_element()
-{
- transparent_b_ = true;
- set_empty (true);
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Vertical_align_element, Score_elem);
-
diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc
new file mode 100644
index 0000000000..2f56e3b7b3
--- /dev/null
+++ b/lily/vertical-align-engraver.cc
@@ -0,0 +1,62 @@
+/*
+ vertical-align-grav.cc -- implement Vertical_align_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "p-col.hh"
+#include "vertical-align-engraver.hh"
+#include "vertical-align-spanner.hh"
+#include "vertical-group-spanner.hh"
+
+Vertical_align_engraver::Vertical_align_engraver()
+{
+ valign_p_ =0;
+}
+
+void
+Vertical_align_engraver::do_creation_processing()
+{
+ valign_p_ =new Vertical_align_spanner;
+ valign_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
+ announce_element (Score_element_info (valign_p_ , 0));
+}
+
+void
+Vertical_align_engraver::do_removal_processing()
+{
+ Scalar dist (get_property ("maxVerticalAlign"));
+ if (dist.length_i () && dist.isnum_b ())
+ {
+ valign_p_->threshold_interval_[BIGGER] = Real (dist);
+ }
+
+ dist = get_property ("minVerticalAlign");
+ if (dist.length_i () && dist.isnum_b ())
+ {
+ valign_p_->threshold_interval_[SMALLER] = Real (dist);
+ }
+
+ valign_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
+ typeset_element (valign_p_);
+ valign_p_ =0;
+}
+
+void
+Vertical_align_engraver::acknowledge_element (Score_element_info i)
+{
+ if (i.origin_grav_l_arr_.size() == 1 &&
+ i.elem_l_->is_type_b (Vertical_group_spanner::static_name()) &&
+ !i.elem_l_->axis_group_l_a_[Y_AXIS])
+ {
+ assert (!valign_p_->contains_b (i.elem_l_));
+
+ valign_p_->add_element (i.elem_l_);
+ }
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Vertical_align_engraver, Engraver);
+ADD_THIS_TRANSLATOR(Vertical_align_engraver);
diff --git a/lily/vertical-align-grav.cc b/lily/vertical-align-grav.cc
deleted file mode 100644
index 8024ab5a50..0000000000
--- a/lily/vertical-align-grav.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- vertical-align-grav.cc -- implement Vertical_align_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "p-col.hh"
-#include "vertical-align-grav.hh"
-#include "vertical-align-spanner.hh"
-#include "vertical-group-elem.hh"
-
-Vertical_align_engraver::Vertical_align_engraver()
-{
- valign_p_ =0;
-}
-
-void
-Vertical_align_engraver::do_creation_processing()
-{
- valign_p_ =new Vertical_align_spanner;
- valign_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
- announce_element (Score_elem_info (valign_p_ , 0));
-}
-
-void
-Vertical_align_engraver::do_removal_processing()
-{
- valign_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
- typeset_element (valign_p_);
- valign_p_ =0;
-}
-
-void
-Vertical_align_engraver::acknowledge_element (Score_elem_info i)
-{
- if (i.origin_grav_l_arr_.size() == 2 &&
- i.elem_l_->is_type_b (Vertical_group_element::static_name()) &&
- !i.elem_l_->axis_group_l_a_[Y_AXIS])
- {
- assert (!valign_p_->contains_b (i.elem_l_));
-
- valign_p_->add (i.elem_l_);
- }
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Vertical_align_engraver, Engraver);
-ADD_THIS_TRANSLATOR(Vertical_align_engraver);
diff --git a/lily/vertical-align-spanner.cc b/lily/vertical-align-spanner.cc
index cc8c0da9ab..f5b0095a2c 100644
--- a/lily/vertical-align-spanner.cc
+++ b/lily/vertical-align-spanner.cc
@@ -3,10 +3,21 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "vertical-align-spanner.hh"
-IMPLEMENT_IS_TYPE_B2(Vertical_align_spanner, Vertical_align_element, Spanner);
+IMPLEMENT_IS_TYPE_B2(Vertical_align_spanner, Align_element, Spanner);
+
+Vertical_align_spanner::Vertical_align_spanner ()
+{
+ axis_ = Y_AXIS;
+}
+
+void
+Vertical_align_spanner::do_print ()const
+{
+ Align_element::do_print () ;
+}
diff --git a/lily/vertical-group-elem.cc b/lily/vertical-group-elem.cc
index 79e22317e0..61c644676c 100644
--- a/lily/vertical-group-elem.cc
+++ b/lily/vertical-group-elem.cc
@@ -3,36 +3,24 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "vertical-group-elem.hh"
+#include "vertical-group-element.hh"
#include "interval.hh"
#include "item.hh"
#include "debug.hh"
-void
-Vertical_group_element::add_element (Graphical_element*e)
-{
- axis_admin_.add_element (e, this, Y_AXIS, Y_AXIS);
-}
-void
-Vertical_group_element::remove_element (Graphical_element*e)
+Vertical_group_element::Vertical_group_element()
+ : Axis_group_element (Y_AXIS,Y_AXIS)
{
- axis_admin_.remove_element (e, Y_AXIS, Y_AXIS);
}
-
Interval
Vertical_group_element::do_height() const
{
- return axis_admin_.extent (Y_AXIS);
-}
-void
-Vertical_group_element::remove_all()
-{
- axis_admin_.remove_all (Y_AXIS,Y_AXIS);
+ return Graphical_axis_group::extent (Y_AXIS);
}
IMPLEMENT_IS_TYPE_B1(Vertical_group_element, Axis_group_element);
diff --git a/lily/vertical-group-spanner.cc b/lily/vertical-group-spanner.cc
index c3a4c2a94c..2197db7fdd 100644
--- a/lily/vertical-group-spanner.cc
+++ b/lily/vertical-group-spanner.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "vertical-group-spanner.hh"
@@ -12,3 +12,8 @@
IMPLEMENT_IS_TYPE_B2(Vertical_group_spanner, Axis_group_spanner, Vertical_group_element);
+
+Vertical_group_spanner::Vertical_group_spanner ()
+{
+ axis1_ = axis2_ = Y_AXIS;
+}
diff --git a/lily/voice-iterator.cc b/lily/voice-iterator.cc
index 971b22a924..a640580afa 100644
--- a/lily/voice-iterator.cc
+++ b/lily/voice-iterator.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "translator-group.hh"
diff --git a/lily/warn.cc b/lily/warn.cc
index 33261d8f5a..24eecc759e 100644
--- a/lily/warn.cc
+++ b/lily/warn.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "proto.hh"
@@ -33,6 +33,6 @@ error_t (String const & s, Moment const & r)
void
error_t (String const & s, Time_description const &t_tdes)
{
- String e=s+ " (at t=" + String(t_tdes.bars_i_) + ": " + (t_tdes.whole_in_measure_).str () + ")\n";
+ String e=s+ " (at t=" + to_str (t_tdes.bars_i_) + ": " + (t_tdes.whole_in_measure_).str () + ")\n";
error (e);
}
diff --git a/lily/word-wrap.cc b/lily/word-wrap.cc
index d8c0804788..55c6837136 100644
--- a/lily/word-wrap.cc
+++ b/lily/word-wrap.cc
@@ -3,7 +3,7 @@
source file of the LilyPond music typesetter
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "word-wrap.hh"
@@ -21,13 +21,13 @@
similar to TeX's is in Gourlay_breaking
*/
-Array<Col_hpositions>
+Array<Column_x_positions>
Word_wrap::do_solve() const
{
problem_OK();
PCursor<Paper_column*> curcol (pscore_l_->col_p_list_.top());
- Array<Col_hpositions> breaking;
+ Array<Column_x_positions> breaking;
Line_of_cols breakpoints (find_breaks());
assert (breakpoints.size()>=2);
@@ -35,14 +35,14 @@ Word_wrap::do_solve() const
int line_no_i = 0;
while (break_idx_i < breakpoints.size() -1)
{
- Col_hpositions minimum;
- Col_hpositions current;
+ Column_x_positions minimum;
+ Column_x_positions current;
// do another line
line_no_i ++;
Paper_column *post = breakpoints[break_idx_i]->postbreak_l();
int start_break_idx = break_idx_i;
- current.add (post);
+ current.add_paper_column (post);
curcol++; // skip the breakable.
break_idx_i++;
@@ -52,10 +52,10 @@ Word_wrap::do_solve() const
// add another measure.
while (breakpoints[break_idx_i] != curcol.ptr())
{
- current.add (curcol);
+ current.add_paper_column (curcol);
curcol++;
}
- current.add (breakpoints[break_idx_i]->prebreak_l());
+ current.add_paper_column (breakpoints[break_idx_i]->prebreak_l());
current.spacer_l_ = generate_spacing_problem (current.cols,
pscore_l_->paper_l_->line_dimensions_int (line_no_i));
@@ -65,9 +65,9 @@ Word_wrap::do_solve() const
{
if (!minimum.cols.size())
{
- warning (_("Ugh, this measure is too long, breakpoint: ")
- + String (break_idx_i) +
- _(" (generating stupido solution)"));
+ warning (_ ("ugh, this measure is too long")
+ + ", " + _f ("breakpoint: %d", break_idx_i)
+ + "(" + _ ("generating stupido solution") + ")");
current.stupid_solution();
current.energy_f_ = - 1; // make sure we break out.
}
@@ -85,7 +85,7 @@ Word_wrap::do_solve() const
if (!current.satisfies_constraints_b_ && start_break_idx == break_idx_i - 1)
{
- warning ( _ ("I don't fit. Put me on Montignac"));
+ warning ( _ ("I don't fit; put me on Montignac"));
minimum = current;
break;
}
@@ -108,7 +108,7 @@ Word_wrap::do_solve() const
break_idx_i++;
}
- *mlog << "[" <<break_idx_i<<"]"<<flush;
+ *mlog << "[" << break_idx_i << "]" << flush;
breaking.push (minimum);
}
return breaking;
diff --git a/make/Docrules.make b/make/Docrules.make
index b8428e2e0c..4b1c2612a4 100644
--- a/make/Docrules.make
+++ b/make/Docrules.make
@@ -1,47 +1,3 @@
-# special rules for the documentation section.
-# There are too many to add to the general rules
-
-.SUFFIXES: .pod .1 $(DOTTEXT) .html
-
-pod2html=pod2html
-pod2groff=pod2man --center="LilyPond documentation" --section="0"\
- --release="LilyPond $(VERSION)" $< > $@
-
-$(outdir)/%.gif: %.xpm
- xpmtoppm $< | ppmtogif > $@
-
-$(outdir)/%.dvi: $(outdir)/%.mudtex
- latex '\nonstopmode \input $<'
- mv $(notdir $@) $(outdir)
-
-$(outdir)/%.mudtex: %.doc
- $(depth)/bin/out/mudela-book --outdir=$(outdir)/ --outname=$(notdir $@) $<
-
-$(outdir)/%$(DOTTEXT): $(outdir)/%.1
- troff -man -Tascii $< | grotty -b -u -o > $@
-
-# perl 5.003/4
-POD2HTML5004=$(POD2HTML) --noindex --infile $< --outfile=$@; sh $(depth)/bin/add-URLs.sh $@
-
-POD2HTML5003=$(POD2HTML) $< ; mv $(notdir $@) $(outdir)/
-
-# we'll set pod2html5004 to default (hopefully), for now,
-# because almost everybody has that version.
-# 5004's pod2hmtl is broken, though; you should use pod2html of 5003
-do_pod2html=$(POD2HTML5004)
-# do_pod2html=$(POD2HTML5003)
-
-$(outdir)/%.html: %.pod $(depth)/VERSION
- $(do_pod2html)
- add-html-footer $@
-
-$(outdir)/%.html: %.data $(depth)/VERSION
- table-to-html $< $@
- add-html-footer $@
-
-$(outdir)/%.5: %.pod
- $(pod2groff)
-
-$(outdir)/%.1: %.pod
- $(pod2groff)
+# Docrules.make
+include $(make-dir)/Mudela_rules.make
diff --git a/make/Executable.make b/make/Executable.make
deleted file mode 100644
index 69894dd1b3..0000000000
--- a/make/Executable.make
+++ /dev/null
@@ -1,15 +0,0 @@
-localinstall: installexe
-
-localuninstall: uninstallexe
-
-installexe: all
- $(INSTALL) -d $(bindir)
- for a in $(EXECUTABLES); do \
- $(INSTALL) -m 755 $(outdir)/$$a $(bindir); \
- done
-
-uninstallexe:
- for a in $(EXECUTABLES); do \
- rm -f $(bindir)/$$a; \
- done
-
diff --git a/make/Files.make b/make/Files.make
deleted file mode 100644
index 31cdf0e205..0000000000
--- a/make/Files.make
+++ /dev/null
@@ -1,36 +0,0 @@
-# list of c++ header files:
-#
-HHFILES = $(wildcard *.hh)
-#
-
-# list of c++ inline files:
-#
-INLFILES = $(wildcard *.icc)
-#
-
-# list of c++ template files:
-#
-
-TCCFILES = $(wildcard *.tcc)
-
-#
-# list of other source files:
-#
-
-EXTRA_SOURCE_FILES = $(wildcard *.yy *.ll)
-
-#
-PODFILES = $(wildcard *.pod)
-OUTPODFILES = $(addprefix $(outdir)/,$(PODFILES))
-
-
-CCFILES = $(wildcard *.cc)
-MAKEFILES = $(wildcard *.make)
-
-ALL_SOURCES=$(HHFILES) $(CCFILES) $(EXTRA_SOURCE_FILES) $(INLFILES) \
- $(TCCFILES) $(PODFILES) $(MAKEFILES)
-
-DEPFILES = $(wildcard $(depdir)/*.dep)
-
-
-all-tag-sources=$(CCFILES) $(HHFILES) $(TCCFILES)
diff --git a/make/Include.make b/make/Include.make
deleted file mode 100644
index 0416201c78..0000000000
--- a/make/Include.make
+++ /dev/null
@@ -1,18 +0,0 @@
-
-# project LilyPond -- the musical typesetter
-# title generic red tape for include/Makefile
-# file make/Include.make
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-
-# identify module:
-#
-
-
-include ./$(depth)/make/Variables.make
-include ./$(depth)/make/Version.make
-include ./$(depth)/make/Files.make
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
diff --git a/make/Initial.make b/make/Initial.make
deleted file mode 100644
index 32522907eb..0000000000
--- a/make/Initial.make
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# project LilyPond -- the musical typesetter
-# title initial makefile for lilypond
-# file make/Initial.make
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-#
-
-# subdir level:
-#
-depth = ..
-#
-
-# ugh
-NAME = dummy
-MAJOR_VERSION = $(TOPLEVEL_MAJOR_VERSION)
-MINOR_VERSION = $(TOPLEVEL_MINOR_VERSION)
-PATCH_LEVEL = $(TOPLEVEL_PATCH_LEVEL)
-# use to send patches, always empty for released version:
-MY_PATCH_LEVEL = $(TOPLEVEL_MY_PATCH_LEVEL)
-#
-
-# generic variables:
-#
-include ./$(depth)/make/Variables.make
-#
-
-
-# ugh
-# initdefault: $(CCDIR)/parser.cc $(CCDIR)/lexer.cc hdr/version.hh alldeps
-initdefault: dummydep
-# $(MAKE) -C ./$(depth)/lily $(outdir)/parser.cc
-
-# generic targets and rules:
-#
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-#
-
diff --git a/make/Install_outfiles.make b/make/Install_outfiles.make
deleted file mode 100644
index 19917088c6..0000000000
--- a/make/Install_outfiles.make
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-localinstall: localinstall-files
-
-localinstall-files: $(INSTALLATION_OUT_FILES)
- $(INSTALL) -d $(INSTALLATION_OUT_DIR)
- $(INSTALL) -m 644 $(INSTALLATION_OUT_FILES) $(INSTALLATION_OUT_DIR)
-
-localuninstall: localuninstall-files
-
-localuninstall-files:
- for i in $(notdir $(INSTALLATION_OUT_FILES)) ; do \
- rm -f $(INSTALLATION_OUT_DIR)/$$i; \
- done
- -rmdir $(INSTALLATION_OUT_DIR)
diff --git a/make/Install_outfiles.sub.make b/make/Install_outfiles.sub.make
deleted file mode 100644
index e89aba9ef4..0000000000
--- a/make/Install_outfiles.sub.make
+++ /dev/null
@@ -1,19 +0,0 @@
-
-# project LilyPond -- the musical typesetter
-# title generic red tape for include/Makefile
-# file make/Include.make
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-
-# identify module:
-#
-
-
-include $(depth)/make/Variables.make
-include $(depth)/make/Version.make
-include $(depth)/make/Files.make
-include $(depth)/make/Targets.make
-include $(depth)/make/Rules.make
-include $(depth)/make/Install_outfiles.make
diff --git a/make/Installfiles.make b/make/Installfiles.make
deleted file mode 100644
index 52ee9919be..0000000000
--- a/make/Installfiles.make
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-localinstall: localinstall-files
-
-localinstall-files:
- $(INSTALL) -d $(INSTALLATION_DIR)
- $(INSTALL) -m 644 $(INSTALLATION_FILES) $(INSTALLATION_DIR)
-
-localuninstall: localuninstall-files
-
-localuninstall-files:
- for i in $(INSTALLATION_FILES) ; do \
- rm -f $(INSTALLATION_DIR)/$$i; \
- done
- -rmdir $(INSTALLATION_DIR)
diff --git a/make/Lilypond.make b/make/Lilypond.make
new file mode 100644
index 0000000000..1452731b2d
--- /dev/null
+++ b/make/Lilypond.make
@@ -0,0 +1,6 @@
+
+export PATH:=$(topdir)/lily/out:$(topdir)/buildscripts/out:$(PATH)
+export MFINPUTS:=$(topdir)/mf/:.:$(MFINPUTS)::
+export TEXINPUTS:=$(topdir)/tex/:.:$(TEXINPUTS)::
+export LILYINCLUDE=$(topdir)/init:$(topdir)/mf/out
+
diff --git a/make/Makefile b/make/Makefile
index 764fcc5662..7514481657 100644
--- a/make/Makefile
+++ b/make/Makefile
@@ -1,62 +1,9 @@
-#
-# project LilyPond -- the musical typesetter
-# title zucht
# file make/Makefile
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-# ...your sort order here, or how to comment-out a comment
-# subdir level:
-#
depth = ..
-#
-# identify module:
-#
-SUBDIRS =
+include $(depth)/make/Stepmake.make
+BLURBS=BLURB COPERTINA FLAPTEKST
-# two outdir files are distributed, since they make sense to have without running
-# configure and make.
-
-LSMENTRY=$(outdir)/lilypond.lsm
-RPMSPEC=$(outdir)/lilypond.spec
-RPMRC=$(outdir)/rpmrc
-IN_FILES = $(wildcard *.in)
-EXTRA_DISTFILES = $(IN_FILES)
-OUT_DISTFILES= $(outdir)/lelievijver.lsm $(LSMENTRY) $(RPMSPEC)
-#
-
-# generic variables:
-#
-include ./$(depth)/make/Variables.make
-include ./$(depth)/make/Files.make
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-
-default: $(RPMSPEC) $(LSMENTRY) $(RPMRC)
-
-
-rpmdocs=BUGS TODO NEWS DEDICATION ANNOUNCE README
-rpmdvis=$(rpmmudocs:.doc=.dvi)
-rpmexamples= $(addprefix input/, $(notdir $(shell ls $(depth)/input/*.ly)))
-
-
-date = $(shell date '+%d%b%y'|tr a-z A-Z)
-sed-date=sed 's!@DATE@!${date}!g'
-sed-examples = sed 's!@EXAMPLE_LYS@!${rpmexamples} ${rpmmudocs}!g'
-sed-docs=sed 's!@TEXT_DOCS@!${rpmdocs}!g'
-sed-dottext=sed 's!@DOTTEXT@!${DOTTEXT}!g'
-sed-rootdir=sed 's!@LILYPOND_ROOTDIR@!${LILYPOND_ROOTDIR}!g'
-
-$(outdir)/%.spec: %.spec.in $(depth)/VERSION
- cat $< | $(sed-version) | $(sed-docs) | $(sed-examples) \
- | $(sed-dottext)> $@
-
-$(outdir)/%.lsm: %.lsm.in $(depth)/VERSION
- cat $< | $(sed-version) | $(sed-date) > $@
-
-$(outdir)/%: %.in
- cat $< | $(sed-rootdir) > $@
+include $(stepdir)/Makedir.shared.make
diff --git a/make/Mudela_rules.make b/make/Mudela_rules.make
new file mode 100644
index 0000000000..5a7d8ef670
--- /dev/null
+++ b/make/Mudela_rules.make
@@ -0,0 +1,11 @@
+# Mudela_rules.make
+
+.SUFFIXES: .doc .dvi .mudtex
+
+$(outdir)/%.dvi: $(outdir)/%.mudtex
+ latex '\nonstopmode \input $<'
+ mv $(notdir $@) $(outdir)
+
+$(outdir)/%.mudtex: %.doc
+ $(PYTHON) $(depth)/scripts/mudela-book.py --outdir=$(outdir)/ --outname=$(notdir $@) $<
+
diff --git a/make/Mutopia.make b/make/Mutopia.make
index 7a7a5ec6bf..db95a60b66 100644
--- a/make/Mutopia.make
+++ b/make/Mutopia.make
@@ -1,29 +1,41 @@
-# list of distribution files:
-#
+# make/Mutopia.make
-include $(depth)/make/Include.make
-LYFILES = $(wildcard *.ly)
-M4FILES = $(wildcard *.m4)
-DISTFILES = Makefile $(EXTRA_DISTFILES) $(LYFILES) $(wildcard *.m4)
+FLY_FILES = $(wildcard *.fly)
+LY_FILES = $(wildcard *.ly)
+M4_FILES = $(wildcard *.m4)
+LYM4_FILES = $(wildcard *.lym4)
+DIST_FILES = Makefile $(EXTRA_DIST_FILES) $(FLY_FILES) $(LY_FILES) $(M4_FILES) $(LYM4_FILES)
#
-OUTFILES = $(addprefix $(outdir)/,$(M4FILES:%.m4=%))
-
-all: $(OUTFILES)
+include $(depth)/make/Lilypond.make
+OUT_FILES = $(addprefix $(outdir)/,$(M4_FILES:%.m4=%)) \
+ $(addprefix $(outdir)/,$(LYM4_FILES:%.lym4=%.ly))
+all: $(OUT_FILES)
name-stem= $(notdir $(basename $<))
$(outdir)/%.gif: $(outdir)/%.ps
- sh $(depth)/bin/ps-to-gifs.sh $<
- mv $(name-stem)-page*.gif $(outdir)/
+ sh $(buildscripts)/ps-to-gifs.sh $<
+ -mv $(name-stem)-page*.gif $(outdir)/
touch $@
-$(outdir)/%.ly$(DOTTEXT): %.ly
+$(outdir)/%.ly.txt: %.ly
+ ln -f $< $@
+
+$(outdir)/%.fly.txt: %.fly
ln -f $< $@
+# don't junk intermediate .dvi files. They're easier to view than
+# .ps or .gif
+.PRECIOUS: $(outdir)/%.dvi
+
$(outdir)/%.dvi: %.ly
- ly2dvi -o $(outdir) $<
+ sh $(depth)/scripts/ly2dvi.sh -S $(topdir) -o $(outdir) $<
+ -mv $(basename $<).midi $(outdir)
+
+$(outdir)/%.dvi: %.fly
+ sh $(depth)/scripts/ly2dvi.sh -S $(topdir) -o $(outdir) $<
-mv $(basename $<).midi $(outdir)
diff --git a/make/Rules.make b/make/Rules.make
index f7f3d7fe4a..8ea9451bdc 100644
--- a/make/Rules.make
+++ b/make/Rules.make
@@ -1,60 +1,29 @@
-#
-# project LilyPond -- the musical typesetter
-# title generic make rules
+# title package specific rules
# file make/Rules.make
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-
-# this is supposed to clear all suffixes:
-.SUFFIXES:
-
-.SUFFIXES: .cc .o .hh .y .l .dep
-
-
-# compile rules:
-#
-$(outdir)/%.o: %.cc
- $(DO_CXX_COMPILE)
-
-$(outdir)/%.o: $(outdir)/%.cc
- $(DO_CXX_COMPILE)
-
-$(outdir)/%.cc: %.yy
- $(BISON) $<
- mv $<.tab.c $@
-
-$(outdir)/%.hh: %.yy
- $(BISON) -d $<
- mv $<.tab.h $@
- mv $<.tab.c $(outdir)/$(shell basename $@ .hh).cc
-
-$(outdir)/%.cc: %.ll
- $(FLEX) -Cfe -p -p -t $< > $@
-# could be faster:
-# $(FLEX) -8 -Cf -t $< > $@
-
-$(outdir)/%: %.m4
- $(M4) $< > $@
# urg
$(outdir)/%.ly: %.lym4
$(M4) $< | sed "s/\`/,/g" > $@
-# outdirs:
-#
-# ?$(outdir)/%.dep:
-%.dep:
- touch $@
+$(outdir)/%: %.in
+ rm -f $@
+ cat $< | $(sed-atfiles) | $(sed-atvariables) > $@
-%.gz: %
- gzip -c9 $< > $@
-$(depth)/%$(DOTTEXT): check-doc-deps
- rm -f $@
- ln `find ${depth}/Documentation -name ${@F} -print|head -1 ` $@
-$(outdir)/%.ps: $(outdir)/%.dvi
- dvips -o $@ $<
+include $(depth)/make/Substitute.make
+
+# $(depth)/make/$(outdir)/%.make: $(depth)/make/%.in
+# rm -f $@
+# echo "$(basename $(@F)) = \\" > $@
+# cat $< | $(sed-newline) | $(sed-endline) | $(sed-quotes) >> $@
+# echo >> $@
+# echo >> $@
+
+# HUH???
+$(outdir)/%.hh: $(doc-dir)/%.in
+ rm -f $@
+ echo '_(' > $@
+ cat $< | $(sed-quotes) | $(sed-newline) | $(sed-quote-line) >> $@
+ echo ');' >> $@
diff --git a/make/STATE-VECTOR b/make/STATE-VECTOR
new file mode 100644
index 0000000000..f6bbf4b1e3
--- /dev/null
+++ b/make/STATE-VECTOR
@@ -0,0 +1,60 @@
+0.1.76
+0.1.76.jcn1
+0.1.77
+0.1.77.uu1
+0.1.77.hwjc
+0.1.77.jcn1
+0.1.77.jcn2
+0.1.77.hwn1
+0.1.78
+0.1.78.hwn1
+0.1.78.jcn1
+0.1.78.jcn2
+0.1.79
+0.1.79.hwn1
+0.1.79.jcn2
+0.1.80
+0.1.80.jcn1
+0.1.80.eb1
+0.1.80.hwn1
+0.1.81
+0.1.81.jcn1
+0.1.81.jbr2
+0.1.81.jcn2
+0.1.81.jbr1
+0.1.81.jcn1
+0.1.81.hwn1
+0.1.81.hwn2
+0.1.82
+0.1.82.jcn1
+0.1.82.jcn2
+0.1.82.jcn3
+0.1.82.jcn4
+0.1.82.jcn5
+0.1.82.hwn1
+0.1.82.hwn2
+0.1.83
+0.1.83.hwn1
+0.1.83.jcn1
+0.1.83.uu1
+0.1.83.hwn1
+0.1.83.hwn2
+0.1.83.hwn3
+0.1.83.hwn4
+0.1.83.hwn5
+0.1.83.jcn4
+0.1.84
+0.1.84.jcn1
+0.1.84.hwn1
+0.1.84.jcn2
+0.1.84.hwn2
+0.1.84.jcn3
+0.1.84.hwn4
+0.1.85
+0.1.85.jcn1
+0.1.85.hwn1
+0.1.85.jcn2
+1.0.0
+1.0.0.hwn1
+1.0.0.hwn2
+1.0.1
diff --git a/make/Scripts.make b/make/Scripts.make
deleted file mode 100644
index 151afe16a2..0000000000
--- a/make/Scripts.make
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-PERL_SCRIPTS_IN = $(wildcard *.pl)
-PERL_SCRIPTS = $(addprefix $(outdir)/, $(PERL_SCRIPTS_IN:.pl=))
-SH_SCRIPTS_IN = $(wildcard *.sh)
-SH_SCRIPTS = $(addprefix $(outdir)/, $(SH_SCRIPTS_IN:.sh=))
-PYTHON_SCRIPTS_IN = $(wildcard *.py)
-PYTHON_SCRIPTS = $(addprefix $(outdir)/, $(PYTHON_SCRIPTS_IN:.py=))
-ALL_SCRIPTS_IN = $(SH_SCRIPTS_IN) $(PERL_SCRIPTS_IN) $(PYTHON_SCRIPTS_IN)
-EXTRA_DISTFILES += $(ALL_SCRIPTS_IN)
-
-all: $(PERL_SCRIPTS) $(PYTHON_SCRIPTS) $(SH_SCRIPTS)
-
-$(outdir)/%: %.pl
- sed 's!@PERL@!$(PERL)!' < $< > $@
- chmod 755 $@
-
-#FIXME. Check for bash?
-$(outdir)/%: %.sh
- sed 's!@SH@!$(SHELL)!' < $< > $@
- chmod 755 $@
-
-$(outdir)/%: %.py
- sed 's!@PYTHON@!$(PYTHON)!' < $< > $@
- chmod 755 $@
-
-
-
diff --git a/make/Stepmake.make b/make/Stepmake.make
new file mode 100644
index 0000000000..883b34e040
--- /dev/null
+++ b/make/Stepmake.make
@@ -0,0 +1,26 @@
+# make/Stepmake.make
+
+include $(depth)/make/Toplevel_version.make
+
+# Don't try to outsmart us, you puny computer!
+ifeq (0,${MAKELEVEL})
+ MAKE:=$(MAKE) --no-builtin-rules
+endif
+
+ifndef config
+ configuration=config
+else
+ configuration=config-$(config)
+endif
+
+include $(depth)/$(configuration).make
+
+stepdir = $(depth)/$(stepmake)/stepmake
+include $(stepdir)/Include.make
+
+# ugh.
+$(depth)/$(configuration).make: $(depth)/configure
+ @echo "**************************************"
+ @echo "configure changed! You should probably reconfigure manually."
+ @echo "**************************************"
+ (cd $(depth); ./config.status)
diff --git a/make/Substitute.make b/make/Substitute.make
new file mode 100644
index 0000000000..16389f92a1
--- /dev/null
+++ b/make/Substitute.make
@@ -0,0 +1,20 @@
+# make/Substitute.make
+
+sed-examples = sed 's!@EXAMPLE_LYS@!${rpmexamples} ${rpmmudocs}!g'
+sed-docs=sed 's!@TEXT_DOCS@!${rpmdocs}!g'
+
+ATVARIABLES = \
+ BASH\
+ DATE\
+ date\
+ DIR_DATADIR\
+ PACKAGE\
+ package\
+ PERL\
+ PYTHON\
+ SHELL\
+ TOPLEVEL_VERSION\
+ step-bindir\
+ abs-step-bindir\
+
+
diff --git a/make/Targets.make b/make/Targets.make
index 945587c0ff..1d7f67bb1c 100644
--- a/make/Targets.make
+++ b/make/Targets.make
@@ -1,246 +1,25 @@
-#
-# project LilyPond -- the musical typesetter
-# title generic make targets
+# title package specific targets
# file make/Targets.make
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-.PHONY : all clean config default dist doc doc++ dummy exe help html lib TAGS\
- check-flower-deps check-lib-deps check-doc-deps check-html-deps
-# target all:
-#
-all: default
- $(LOOP)
-# dependency list of executable:
-#
-
-$(EXECUTABLE): $(configheader) $(OFILES) $(outdir)/version.hh
-ifdef MODULE_LIBDEPS
- $(MAKE) $(MODULE_LIBDEPS)
-endif
-ifdef STABLEOBS
- $(DO_STRIP) $(STABLEOBS)
-endif
- $(LD_COMMAND) $(OFILES) $(LOADLIBES)
-
-exe: $(EXECUTABLE)
-
-
-# dependency list of library:
-#
-$(LIBRARY): $(configheader) $(OFILES)
- $(AR_COMMAND) $(OFILES)
- $(AR) ts $@ #silly irix
- $(RANLIB_COMMAND)
-
-$(SHAREDLIBRARY): $(configheader) $(OFILES) $(MODULE_LIBDEPS)
- $(LD_COMMAND) $(OFILES) -o $@.$(VERSION)
- rm -f $@
- ln -sf $(outdir)/$(LIB_PREFIX)$(NAME).so.$(VERSION) $@.$(MAJOR_VERSION)
- ln -sf $(LIB_PREFIX)$(NAME).so.$(VERSION) $@
-
-#
-lib: $(LIBRARY)
-#
-
-outdirs: outdir
- $(LOOP)
-
-outdir:
- -mkdir -p $(outdir)
-
-# be careful about deletion.
-clean: localclean
- -rm -f $(outdir)/*
- touch $(outdir)/dummy.dep
- $(LOOP)
-
-distclean: clean
- $(LOOP)
- $(MAKE) local-distclean
-
-maintainerclean:
- $(LOOP)
- $(MAKE) local-maintainerclean
- $(MAKE) local-distclean
-
-
-
-# configure:
-#
-config:
- ./$(depth)/configure
-#
-
-# dummydeps:
-#
-dummydep: $(DUMMYDEPS)
-#
-
-# value of $(OSTYPE) on windhoos...; "make $OSTYPE" if you use bash :-)
-#
-win32: windows32 # win/lose?
-#
-windows32:
- $(MAKE) -C . "CXX=g++ -D_WINDOWS32"
-#
-
-# xcompile to doze:
-#
-doze: dos
-dos:
- $(MAKE) -C . CXX="gcc-go32 -I/usr/i386-go32/include -I/usr/i386-go32/include/g++ -D_WINDOWS32 -Dcaddr_t=char* -DMAP_SHARED=0"
-#
-
-# target help:
-#
-help:
- @echo "Makefile for LilyPond $(TOPLEVEL_VERSION)"
- @echo "Usage:"
- @echo " $(MAKE) ["VARIABLE=value" ...] [target]"
- @echo
- @echo "targets:"
- @echo " all clean config dist distclean doc doc++"
- @echo " exe help lib TAGS"
- @echo " dos: xcomplile to dos"
- @echo " windows32: native cygnus-gnu compile"
-#
-
-doc:
-# $(MAKE) -C $(depth)/Documentation do-doc
- $(MAKE) -C $(depth)/Documentation all
-
-html: $(HTMLFILES)
-
-# ugh. should generate in out/
-dist:
- rm -rf $(distdir)
- -mkdir $(distdir)
- $(MAKE) localdist
- chmod -R a+r $(distdir)
- chmod a+x `find $(distdir) -type d -print`
-
- (cd ./$(depth)/$(outdir); $(TAR) cf - $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz)
-
-# should be trapped
- rm -rf $(distdir)/
-
-# ugh. should generate in out/
-dozedist: doosdist
-doosdist: check-mf-deps
- rm -rf $(distdir)
- -mkdir $(distdir)
- $(MAKE) localdist
- chmod -Rf a+rX $(distdir)
-# ugh, the ugly way, then
- rm -f $(distdir)/mf/$(outdir)/*.log
- # urg
- (cd $(distdir)/init; ln -s ../../../mf/out/*.ly .)
- (cd $(distdir)/tex; ln -s ../../../mf/out/*.tex .)
- (cd $(distdir); rm -rf $(NO_DOOS_DIST))
- ln $(lilyout)/lilypond $(distdir)/bin/lilypond.exe
- -strip -s $(distdir)/bin/lilypond.exe
- ln $(mi2muout)/mi2mu $(distdir)/bin/mi2mu.exe
- -strip -s $(distdir)/bin/mi2mu.exe
- (cd ./$(depth)/$(outdir); $(ZIP) $(DIST_NAME).exe.zip $(DIST_NAME))
-# should be trapped
- rm -rf $(distdir)/
-
-
-localdist: $(DISTFILES) $(OUT_DISTFILES)
- touch $(outdir)/dummy.dep; \
- mkdir $(distdir)/$(localdir)/out; \
- $(LN) $(DISTFILES) $(distdir)/$(localdir)
- $(LN) $(outdir)/dummy.dep $(OUT_DISTFILES) $(distdir)/$(localdir)/out
-ifdef SUBDIRS
- set -e; for i in $(SUBDIRS); do mkdir $(distdir)/$(localdir)/$$i; \
- $(MAKE) localdir=$(localdir)/$$i -C $$i localdist; done
-endif
-
-
-TAGS:$(all-tag-sources)
-ifdef all-tag-sources
- -etags -CT $(all-tag-sources) $(ERROR_LOG)
- -ctags -h ".h.hh.tcc.icc" $(all-tag-sources) $(ERROR_LOG)
-endif
- $(LOOP)
-
-
-# version stuff:
-#
-
-$(outdir)/version.hh: VERSION
- sh ./$(lily_bindir)/make-version.sh > $@
-
-
-# should this be in Rules?
-configure: configure.in aclocal.m4
- autoconf - < $<> $@
- chmod +x configure
-
-localclean:
-
-local-distclean:
-
-local-maintainerclean:
-
-install-strip:
- $(MAKE) INSTALL="$(INSTALL) -s" install
-
-install: localinstall
- $(LOOP)
-
-localinstall:
-
-uninstall: localuninstall
- $(LOOP)
-
-localuninstall:
-
-# specific stuff:
-#
-$(LIBFLOWER): check-flower-deps
-
-check-flower-deps:
- $(MAKE) -C $(depth)/flower/ default
-
-check-lib-deps: check-flower-deps
- $(MAKE) -C $(depth)/lib
-
-check-doc-deps:
- $(MAKE) -C $(depth)/Documentation
+check-dist-deps:
+ false
check-html-deps:
+ false
$(MAKE) -C $(depth)/Documentation html
-$(LIBLILY): dummy
- $(MAKE) ./$(outdir)/$(@F) -C $(depth)/lib
-
-
-# RedHat rpm package:
-#
-rpm: check-rpm-doc-deps
- -cp $(depth)/lilypond-$(TOPLEVEL_VERSION).tar.gz $(rpm-sources)
-# -cp $(wildcard $(depth)/Documentation/*.xpm) $(rpm-sources)
- -cp $(wildcard $(depth)/Documentation/$(outdir)/*.gif) $(rpm-sources)
- $(MAKE) -C $(make-dir) spec
- rpm -ba $(makeout)/lilypond.spec
-
-check-rpm-doc-deps:
- $(MAKE) -C $(depth)/Documentation gifs
check-mf-deps:
+ false
$(MAKE) -C $(depth)/mf
+check-texinfo-deps:
+ false
+ $(MAKE) -C $(depth)/Documentation texinfo
+ $(MAKE) -C $(depth)/Documentation/man texinfo
+
+# urg!
$(configheader): $(depth)/$(configuration).hh
cp $< $@
-WWW: local-WWW
- $(LOOP)
-
-ifneq ($(DEPFILES),)
-include $(DEPFILES)
-endif
diff --git a/make/Template.make b/make/Template.make
deleted file mode 100644
index 9da75f9071..0000000000
--- a/make/Template.make
+++ /dev/null
@@ -1,66 +0,0 @@
-# THIS IS A TEMPLATE FOR SUB-PROJECT MAKEFILES
-# should we make Include-dir and Stuff-dir templates too?
-#
-# project LilyPond -- the musical typesetter
-# title makefile for ...
-# file ../Makefile
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-#
-
-# subdir level:
-#
-depth = ..
-#
-
-# generic variables:
-#
-include ./$(depth)/make/Variables.make
-#
-
-# identify module:
-#
-NAME = ...
-MODULE_NAME =
-
-# descent order into subdirectories:
-#
-SUBDIRS =
-#
-
-# module compile settings: (not generally needed!)
-#
-EXTRA_CFLAGS =
-EXTRA_CXXFLAGS =
-EXTRA_LDFLAGS =
-#
-include ./$(depth)/make/Files.make
-
-# list of extra distribution files:
-# Makefile, C++ and pod are dist'ed automatically
-EXTRA_DISTFILES =
-
-# list of custom libraries:
-#
-CUSTOMLIBES = \
-
-LOADLIBES +=
-#
-
-# main target of this module:
-#
-default: $(EXECUTABLE)
-# default: $(LIBRARY)
-include ./$(depth)/make/Files.make
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-#
-
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-
-EXECUTABLES=
-# include $(depth)/make/Executable.make
-
diff --git a/make/Toplevel.make.in b/make/Toplevel.make.in
index efceff59cc..0784604257 100644
--- a/make/Toplevel.make.in
+++ b/make/Toplevel.make.in
@@ -1,91 +1,58 @@
# -*-Makefile-*-
-########################################################
-# project LilyPond -- the musical typesetter
-# title top level makefile for LilyPond
-# file Makefile
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
+# title specific top level makefile for LilyPond
# subdir level:
#
depth = .
#
-# identify module:
-#
-NAME = lilypond
-SUBDIRS = bin flower lib lily mf mi2mu debian\
- Documentation init input tex make mutopia test
-include VERSION
-#
-
# descent order into subdirectories:
#
-
-# list of distribution files:
+SUBDIRS = scripts buildscripts flower lib lily mf mi2mu po debian \
+ Documentation init input tex make mutopia test intl $(stepmake)
#
-SCRIPTS = configure configure.in aclocal.m4
-README_FILES = BUGS DEDICATION ANNOUNCE-0.1 ANNOUNCE \
- COPYING ONEWS NEWS README TODO \
- INSTALL$(DOTTEXT) AUTHORS$(DOTTEXT) PATCHES$(DOTTEXT)
-EXTRA_DISTFILES = config.make.in config.hh.in .dstreamrc mudela-mode.el vimrc VERSION $(README_FILES) $(SCRIPTS)
+SCRIPTS = configure aclocal.m4
+README_FILES = BUGS DEDICATION ANNOUNCE-0.1 ANNOUNCEMENT \
+ COPYING NEWS-0.1 NEWS-0.0 NEWS TODO
+README_TXT_FILES = README.txt AUTHORS.txt INSTALL.txt PATCHES.txt
+IN_FILES := $(wildcard *.in)
+EXTRA_DIST_FILES = dstreamrc mudela-mode.el vimrc VERSION $(README_FILES) $(SCRIPTS) $(IN_FILES)
+NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES)
-# generic targets and rules:
+# bootstrap stepmake:
#
-include ./$(depth)/make/Version.make
-include ./$(depth)/make/Variables.make
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-
+include $(depth)/make/Stepmake.make
#
-# override Variables.make:
-# do not dist ./Makefile (is copied from make/Toplevel.make)
-#
-DISTFILES := $(EXTRA_DISTFILES)
-
-
-localdist: configure
-
-local-distclean:
- rm -f config.hh config.make Makefile config.cache config.status config.log
+# list of distribution files:
+#
-local-maintainerclean:
- rm -f configure
-Makefile: make/Toplevel.make.in
- chmod +w $@
- echo '# WARNING WARNING WARNING WARNING' > $@
- echo '# do not edit! this is generated from make/Toplevel.make.in' >> $@
- cat $< >> $@
- chmod -w $@
+include $(stepdir)/Toplevel.make
-website:examples htmldoc
+aclocal.m4: $(stepdir)/../aclocal.m4
+ cp $< $@
-htmldoc:
- $(MAKE) CONFIGSUFFIX='www' local-WWW
- $(MAKE) CONFIGSUFFIX='www' -C Documentation WWW
- rm -f `find . -name \*.html~ -print`
- tar cfz $(outdir)/htmldoc.tar.gz `find Documentation -type d -name 'out-www' -print` out-www index.html
+website: examples htmldoc doc++
examples:
- $(MAKE) CONFIGSUFFIX='www' outdirs
$(MAKE) CONFIGSUFFIX='www' -C input WWW
$(MAKE) CONFIGSUFFIX='www' -C mutopia WWW
tar --exclude='*.dvi' --exclude='*.tex' --exclude='*.ps' -czf $(outdir)/examples.tar.gz `find input mutopia -type d -name 'out-www' -print`
-local-WWW: index.html
-index.html: Documentation/$(outdir)/topweb.html NEWS
- $(sed-version) < Documentation/$(outdir)/topweb.html > $@
- add-html-footer --news=NEWS $@
+localdist: do-top-doc
+
+$(package-icon):
+ $(MAKE) -C Documentation/pictures icon
+
+
+
+do-top-doc:
+ -$(MAKE) -C Documentation/topdocs/ README_TOP_FILES="$(README_TXT_FILES)" copy-to-top
+
+$(README_TXT_FILES): do-top-doc
-Documentation/$(outdir)/topweb.html:
- make -C Documentation/ html
-WWW-clean:
- $(MAKE) CONFIGSUFFIX='www' clean
diff --git a/make/Toplevel_version.make b/make/Toplevel_version.make
index 4e3ffb6c94..4a1e24e9e2 100644
--- a/make/Toplevel_version.make
+++ b/make/Toplevel_version.make
@@ -1,6 +1,7 @@
+# Toplevel_version.make
include $(depth)/VERSION
-TOPLEVEL_MAJOR_VERSION :=$(MAJOR_VERSION)
+TOPLEVEL_MAJOR_VERSION:=$(MAJOR_VERSION)
TOPLEVEL_MINOR_VERSION:=$(MINOR_VERSION)
TOPLEVEL_PATCH_LEVEL:=$(PATCH_LEVEL)
# use to send patches, always empty for released version:
diff --git a/make/User.make b/make/User.make
index 2e74e16170..598bc732fb 100644
--- a/make/User.make
+++ b/make/User.make
@@ -1,11 +1,5 @@
-#
-# project LilyPond -- the musical typesetter
# title user changeable settings
# file make/User.make
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
# will be split into CFLAGS/EXTRA_CFLAGS etc,
# so that defineable generically and per module
diff --git a/make/Variables.make b/make/Variables.make
index b2e75db9ef..82a5199a8c 100644
--- a/make/Variables.make
+++ b/make/Variables.make
@@ -1,8 +1,5 @@
-#
-# project LilyPond -- the musical typesetter
-# title generic variables
+# title package specific variables
# file make/Variables.make
-# abstract
#
# do not change this file for site-wide extensions; please use
# make/$(outdir)/Site.make;
@@ -10,52 +7,16 @@
# Any change in files in this directory (make/) would be distributed, if
# you do make dist
#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-
-# toplevel version info, might be handy?
-#
-include $(depth)/make/Toplevel_version.make
-
-
-# Don't try to outsmart us, you puny computer!
-ifeq (0,${MAKELEVEL})
- MAKE:=$(MAKE) --no-builtin-rules
-endif
-
-
-ifndef config
-configuration=config
-else
-configuration=config-$(config)
-endif
-
-include $(depth)/$(configuration).make
-
-# directory names:
-buildprefix=$(depth)
-
-ifdef CONFIGSUFFIX
-outdir=out-$(CONFIGSUFFIX)
-else
-outdir=out
-endif
# derived names
-lily_bindir = $(depth)/bin
-distdir = $(depth)/$(outdir)/$(DIST_NAME)
-depdir = $(outdir)
-
flowerout = $(buildprefix)/flower/$(outdir)
libout = $(buildprefix)/lib/$(outdir)
lilyout = $(buildprefix)/lily/$(outdir)
mi2muout = $(buildprefix)/mi2mu/$(outdir)
-makeout = $(buildprefix)/make/$(outdir)
-docout = $(buildprefix)/Documentation/$(outdir)
-binout = $(buildprefix)/bin/$(outdir)
-doc-dir = $(depth)/Documentation
+buildscripts = $(depth)/buildscripts
+
+
flower-dir = $(depth)/flower
lib-dir = $(depth)/lib
lily-dir = $(depth)/lily
@@ -64,60 +25,7 @@ make-dir = $(depth)/make
include-lib = $(depth)/lib/include
include-flower = $(depth)/flower/include
-
-rpm-sources = ${HOME}/rpms/SOURCES
-#
-
-configheader=$(outdir)/config.hh
-
-
-
-
-# user settings:
-#
-include $(depth)/make/User.make
-#
-#
-# need to be defined in local Makefiles:
-#
-FOOBAR =
-# the version:
-#
-ifneq ($(MY_PATCH_LEVEL),$(FOOBAR))
-VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL).$(MY_PATCH_LEVEL)
-else
-VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL)
-endif
-
-ifneq ($(TOPLEVEL_MY_PATCH_LEVEL),$(FOOBAR))
-TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL).$(TOPLEVEL_MY_PATCH_LEVEL)
-else
-TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL)
-endif
-#
-
-# ugh, but it gets hairy without extension..
-DOTTEXT=.txt
-
-# for rpmrc only
-LILYPOND_ROOTDIR=$(shell cd $(depth)/..; pwd)
-
-#
-# fix naming, use TOPLEVEL_ prefix _or_ MODULE?
-DIST_NAME = lilypond-$(TOPLEVEL_VERSION)
-# NO_DOOS_DIST = bin flower lib lily make mi2mu out
NO_DOOS_DIST = flower lib lily make mi2mu out
-#
-
-# list of object files:
-#
-SOURCE_FILES = $(CCFILES) $(EXTRA_SOURCE_FILES)
-OFILEC = $(SOURCE_FILES:.c=.o)
-OFILECC = $(OFILEC:.cc=.o)
-OFILEL = $(OFILECC:.ll=.o)
-OFILEY = $(OFILEL:.yy=.o)
-OFILES = $(addprefix $(outdir)/,$(OFILEY))
-#
# dummydeps
#
@@ -129,12 +37,6 @@ DUMMYDEPS=\
#
-# clean file lists:
-#
-ERROR_LOG = 2> /dev/null
-SILENT_LOG = 2>&1 > /dev/null
-date = $(shell date +%x)
-
# version stuff:
#
lily-version = $(lilyout)/version.hh
@@ -148,101 +50,43 @@ LIBFLOWER = $(flowerout)/$(LIB_PREFIX)flower$(LIB_SUFFIX)
LIBLILY = $(libout)/$(LIB_PREFIX)lily$(LIB_SUFFIX)
#
-# compile and link options:
-#
-ARFLAGS = ru
-CFLAGS = $(ICFLAGS) $(DEFINES) $(INCLUDES) $(USER_CFLAGS) $(EXTRA_CFLAGS)
-
-# added two warnings that are treated by cygwin32's gcc 2.7.2 as errors.
-# huh, but still, no warnings even provoced with linux's gcc 2.7.2.1?
-
-# -pipe makes it go faster, but is not supported on all platforms.
-# EXTRA_CXXFLAGS= -Wall -Winline -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
-EXTRA_CXXFLAGS= -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
-
-CXXFLAGS = $(CFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS) $(MODULE_CXXFLAGS)
-INCLUDES = -Iinclude -I$(outdir) -I$(include-lib) -I$(libout) -I$(include-flower) -I$(flowerout)
-CXX_OUTPUT_OPTION = $< -o $@
-LDFLAGS = $(ILDFLAGS) $(USER_LDFLAGS) $(EXTRA_LDFLAGS) $(MODULE_LDFLAGS) -L$(depth)/lib/$(outdir) -L$(depth)/flower/$(outdir)
-LOADLIBES = $(EXTRA_LIBES) $(MODULE_LIBES) -lstdc++ # need lg++ for win32, really!
-#
-
-# macro compiler:
-#
-M4 = m4
-#
-
-# librarian:
-#
-AR = ar
-AR_COMMAND = $(AR) $(ARFLAGS) $@
-#
-RANLIB_COMMAND=$(RANLIB) $@
-# compiler:
-#
-
-DO_CXX_COMPILE=$(DODEP)\
- $(CXX) -c $(CXXFLAGS) $(CXX_OUTPUT_OPTION)
-
-# linker:
-#
-LD = $(CXX)
-LD_COMMAND = $(LD) $(LDFLAGS) -o $@
-#
-
-# dependencies:
-#
-depfile = $(depdir)/$(subst .o,.dep,$(notdir $@))#
-DODEP=rm -f $(depfile); DEPENDENCIES_OUTPUT="$(depfile) $(outdir)/$(notdir $@)"
-#
-
-# utils:
-#
-#FLEX = flex
-#BISON = bison
-#
-
-# generic target names:
-#
-ifdef NAME
-EXECUTABLE = $(outdir)/$(NAME)$(EXE)
-else
-EXECUTABLE =
-endif
-
-EXECUTABLES = $(EXECUTABLE)
-LIB_PREFIX = lib
-
-ifndef LIB_SUFFIX
-LIB_SUFFIX = .a
-endif
-
-LIBRARY = $(outdir)/$(LIB_PREFIX)$(NAME).a
-SHAREDLIBRARY=$(outdir)/$(LIB_PREFIX)$(NAME).so
-#
+LILYPOND_INCLUDES = -I$(include-lib) -I$(libout) -I$(include-flower) -I$(flowerout)
+LILYPOND_LDFLAGS = -L$(depth)/lib/$(outdir) -L$(depth)/flower/$(outdir)
+LILYPOND_LIBES =
-#replace to do stripping of certain objects
-STRIPDEBUG=true
-DISTFILES=$(EXTRA_DISTFILES) Makefile $(ALL_SOURCES)
-DOCDIR=$(depth)/$(outdir)
+# should use to create .spec ?
-pod2groff=$(POD2MAN) --center="LilyPond documentation" --section="0"\
- --release="LilyPond $(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL)" $< > $@
+# installed by 'make installextradoc'
+EXTRA_DOC_FILES = \
+ ANNOUNCEMENT ANNOUNCE-0.1 AUTHORS.txt BUGS COPYING DEDICATION INSTALL.txt NEWS PATCHES.txt README.txt TODO \
+ Documentation/out/*.txt\
+ Documentation/tex/*.doc\
+ Documentation/tex/*.bib\
+ Documentation/pictures/out/lelie_logo.gif\
+ input\
+ mutopia\
+INSTALLED_EXTRA_DOC_FILES = $(addprefix $(prefix:/%=%)/doc/lilypond/, $(EXTRA_DOC_FILES))
-STRIP=strip --strip-debug
-ifdef stablecc
- STABLEOBS=$(addprefix $(outdir)/,$(stablecc:.cc=.o))
-endif
+# installed by 'make install'
+INSTALL_DIST_FILES = \
+ bin/convert-mudela\
+ bin/mudela-book\
+ bin/ly2dvi\
+ bin/lilypond$(DOTEXE)\
+ bin/mi2mu$(DOTEXE)\
+ info/lilypond.info\
+ man/man1/mi2mu.1\
+ man/man1/lilypond.1\
+ man/man1/mudela-book.1\
+ man/man1/ly2dvi.1\
+ man/man1/convert-mudela.1\
+ lib/texmf/texmf/tex/lilypond\
+ lib/texmf/texmf/fonts/source/public/lilypond\
+ share/lilypond/\
+ share/locale/*/LC_MESSAGES/lilypond.mo\
-# substitute $(STRIP) in Site.make if you want stripping
-DO_STRIP=true
-ifdef SUBDIRS
-LOOP=set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done
-else
-LOOP=
-endif
+INSTALLED_DIST_FILES = $(addprefix $(prefix:/%=%)/, $(INSTALL_DIST_FILES))
-sed-version= sed 's!@TOPLEVEL_VERSION@!${TOPLEVEL_VERSION}!g'
diff --git a/make/Version.make b/make/Version.make
deleted file mode 100644
index 35857ac257..0000000000
--- a/make/Version.make
+++ /dev/null
@@ -1,6 +0,0 @@
-
-MAJOR_VERSION = $(TOPLEVEL_MAJOR_VERSION)
-MINOR_VERSION = $(TOPLEVEL_MINOR_VERSION)
-PATCH_LEVEL = $(TOPLEVEL_PATCH_LEVEL)
-# use to send patches, always empty for released version:
-MY_PATCH_LEVEL = $(TOPLEVEL_MY_PATCH_LEVEL)
diff --git a/make/WWW.make b/make/WWW.make
deleted file mode 100644
index fcf0f113dc..0000000000
--- a/make/WWW.make
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-ly_examples=$(addprefix $(outdir)/, $(addsuffix .ly$(DOTTEXT), $(examples)))
-ps_examples=$(addprefix $(outdir)/, $(addsuffix .ps.gz, $(examples)))
-gif_examples=$(addprefix $(outdir)/, $(addsuffix .gif, $(examples)))
-
-
-html_subdirs=$(addprefix --subdirs ,$(SUBDIRS))
-
-
-local-WWW: $(ly_examples) $(ps_examples) $(gif_examples)
- (cd $(outdir); $(PYTHON) ../$(depth)/bin/mutopia-index.py --prefix=../ --suffix=/$(outdir) $(html_subdirs) $(examples))
- add-html-footer $(outdir)/index.html
-
diff --git a/make/lelievijver.lsm.in b/make/lelievijver.lsm.in
index 3046743385..2e25e2a863 100644
--- a/make/lelievijver.lsm.in
+++ b/make/lelievijver.lsm.in
@@ -2,22 +2,14 @@ Begin3
Titel: LilyPond
Versie: @TOPLEVEL_VERSION@
Inschrijf datum: @DATE@
-Beschrijving: LilyPond is de muziek typesetter van het GNU Project.
- Het programma genereert muziek in zichtbare of
- hoorbare vorm uit uit een muzikale definitie file:
- voor bladmuziek wordt typeset informatie naar een
- TeX file geschreven, voor een (mechanische) uitvoering
- wordt een MIDI file geschreven. Enkele kunstjes zijn
- verscheidene notenbalken, maatsoorten, sleutels,
- toonsoorten, teksten, krachtige invoer taal, cadensen,
- balken, boogjes, triolen.
+Beschrijving: @FLAPTEKST@
Trefwoorden: muziek typezetten midi notatie
Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
- jan@digicash.com (Jan Nieuwenhuizen)
-Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
+ janneke@gnu.org (Jan Nieuwenhuizen)
+Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
- 395k lilypond-@TOPLEVEL_VERSION@.tar.gz
+ 610k @package@-@TOPLEVEL_VERSION@.tar.gz
Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
- 395k lilypond-@TOPLEVEL_VERSION@.tar.gz
-Copi"eer politie: GPL
+ 610k @package@-@TOPLEVEL_VERSION@.tar.gz
+Copi-eer voorwaarden: GPL
End
diff --git a/make/lilypond.lsm.in b/make/lilypond.lsm.in
index 995cbd5d65..b7b4b25bce 100644
--- a/make/lilypond.lsm.in
+++ b/make/lilypond.lsm.in
@@ -2,21 +2,14 @@ Begin3
Title: LilyPond
Version: @TOPLEVEL_VERSION@
Entered-date: @DATE@
-Description: LilyPond is the GNU Project music typesetter. The program
- generates visual or auditive output from a music
- definition file: it can typeset formatted sheet music
- to a TeX file and play (mechanical) performances to a
- MIDI file. Features include multiple staffs, meters,
- clefs, keys, lyrics, versatile input-language,
- cadenzas, beams, slurs, triplets.
- It includes a nice font of musical symbols.
+Description: @BLURB@
Keywords: music notation typesetting midi fonts engraving
Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
- jan@digicash.com (Jan Nieuwenhuizen)
+ janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 570k lilypond-@TOPLEVEL_VERSION@.tar.gz
+ 730k @package@-@TOPLEVEL_VERSION@.tar.gz
Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
- 570k lilypond-@TOPLEVEL_VERSION@.tar.gz
+ 730k @package@-@TOPLEVEL_VERSION@.tar.gz
Copying-policy: GPL
End
diff --git a/make/lilypond.spec.in b/make/lilypond.spec.in
index 0400e189c9..44d76f6feb 100644
--- a/make/lilypond.spec.in
+++ b/make/lilypond.spec.in
@@ -7,55 +7,57 @@ Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-@TOPLEVEL_VERSIO
Summary: A program for typesetting music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
-Icon: lelie_icon.gif
-Buildroot: /tmp/lilypond-install
+Icon: @package@-icon.gif
+BuildRoot: /tmp/lilypond-install
Prereq: tetex
%description
-LilyPond is the GNU Project music typesetter. This program can print
-beautiful sheet music from a music
-definition file. It can also play a play (mechanical) performances to a
-MIDI file. Features include multiple staffs, meters,
-clefs, keys, lyrics, versatile input-language,
-cadenzas, beams, slurs, triplets.
-It includes a nice font of musical symbols.
-
+@BLURB@
%prep
%setup
%build
-./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared
+./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared --enable-tex-dir='${prefix}/lib/texmf/texmf/tex/generic' --enable-mf-dir='${prefix}/lib/texmf/texmf/fonts/source/'
make all
+make htmldoc
+
%install
rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc
+tar -C $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc -xzf out/htmldoc.tar.gz
+
strip lily/out/lilypond mi2mu/out/mi2mu
-make -C Documentation gifs
make prefix="$RPM_BUILD_ROOT/usr" install
%files
-%doc Documentation/out/*@DOTTEXT@
-%doc Documentation/tex/*.doc
-%doc Documentation/tex/*.bib
-%doc mutopia/*.ly
-%doc input/*.ly
-%doc Documentation/out/lelie_logo.gif
+
+%doc /tmp/lilypond-rpm-doc
+
+# hairy to hook it in (possibly non-existing) emacs
+%doc mudela-mode.el
+
+# this gets too messy...
+# %doc input/*.ly
+# verbatim include of input: list the directory without issuing a %dir
+
+%doc input
+
/usr/bin/convert-mudela
/usr/bin/mudela-book
/usr/bin/ly2dvi
/usr/bin/lilypond
/usr/bin/mi2mu
-# /usr/lib/libflower.so
/usr/man/man1/mi2mu.1
/usr/man/man1/lilypond.1
/usr/man/man1/mudela-book.1
/usr/man/man1/ly2dvi.1
/usr/man/man1/convert-mudela.1
-/usr/lib/texmf/texmf/tex/lilypond/
+/usr/lib/texmf/texmf/tex/generic/lilypond
/usr/lib/texmf/texmf/fonts/source/public/lilypond
/usr/share/lilypond/
+/usr/share/locale/*/LC_MESSAGES/lilypond.mo
%post
-
-ln -s /usr/lib/texmf/texmf/tex/lilypond /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
+## ln -s /usr/lib/texmf/texmf/tex/lilypond /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
texhash # takes some time...
-rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm'`
-
+touch /tmp/.lilypond-install
+rm `find /var/lib/texmf -name 'feta*pk -print' -or -name 'feta*tfm -print'` /tmp/.lilypond-install
diff --git a/make/out/dummy.dep b/make/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/make/out/dummy.dep
+++ /dev/null
diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm
index 4b0654edc5..7bf75efad3 100644
--- a/make/out/lelievijver.lsm
+++ b/make/out/lelievijver.lsm
@@ -1,23 +1,22 @@
Begin3
Titel: LilyPond
-Versie: 0.1.65
-Inschrijf datum: 15MAY98
-Beschrijving: LilyPond is de muziek typesetter van het GNU Project.
- Het programma genereert muziek in zichtbare of
- hoorbare vorm uit uit een muzikale definitie file:
- voor bladmuziek wordt typeset informatie naar een
- TeX file geschreven, voor een (mechanische) uitvoering
- wordt een MIDI file geschreven. Enkele kunstjes zijn
- verscheidene notenbalken, maatsoorten, sleutels,
- toonsoorten, teksten, krachtige invoer taal, cadensen,
- balken, boogjes, triolen.
+Versie: 1.0.1
+Inschrijf datum: 10AUG98
+Beschrijving:
+LilyPond is de muziekzetter van het GNU Project. Dit programma drukt
+prachtige bladmuziek volgens een muzikaal definitie bestand. Ook kan
+het een mechanische uitvoering afspelen naar een MIDI bestand.
+Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,
+sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,
+balken, boogjes, triolen, partituren, en uittreksels voor individuele
+partijen. Een fraaie set muziektekens is inbegrepen.
Trefwoorden: muziek typezetten midi notatie
Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
- jan@digicash.com (Jan Nieuwenhuizen)
-Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
+ janneke@gnu.org (Jan Nieuwenhuizen)
+Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
- 395k lilypond-0.1.65.tar.gz
+ 610k lilypond-1.0.1.tar.gz
Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
- 395k lilypond-0.1.65.tar.gz
-Copi"eer politie: GPL
+ 610k lilypond-1.0.1.tar.gz
+Copi-eer voorwaarden: GPL
End
diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm
index 7ba08ff8b5..72bc7aa147 100644
--- a/make/out/lilypond.lsm
+++ b/make/out/lilypond.lsm
@@ -1,22 +1,21 @@
Begin3
Title: LilyPond
-Version: 0.1.65
-Entered-date: 15MAY98
-Description: LilyPond is the GNU Project music typesetter. The program
- generates visual or auditive output from a music
- definition file: it can typeset formatted sheet music
- to a TeX file and play (mechanical) performances to a
- MIDI file. Features include multiple staffs, meters,
- clefs, keys, lyrics, versatile input-language,
- cadenzas, beams, slurs, triplets.
- It includes a nice font of musical symbols.
+Version: 1.0.1
+Entered-date: 10AUG98
+Description:
+LilyPond is the GNU Project music typesetter. This program can print
+beautiful sheet music from a music definition file. It can also play
+mechanical performances to a MIDI file. Features include multiple
+staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,
+beams, slurs, triplets, formatting scores, part extraction. It includes
+a nice font of musical symbols.
Keywords: music notation typesetting midi fonts engraving
Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
- jan@digicash.com (Jan Nieuwenhuizen)
+ janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 570k lilypond-0.1.65.tar.gz
+ 730k lilypond-1.0.1.tar.gz
Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
- 570k lilypond-0.1.65.tar.gz
+ 730k lilypond-1.0.1.tar.gz
Copying-policy: GPL
End
diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec
index accf15d04f..e55a3909fc 100644
--- a/make/out/lilypond.spec
+++ b/make/out/lilypond.spec
@@ -1,61 +1,69 @@
Name: lilypond
-Version: 0.1.65
+Version: 1.0.1
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-0.1.65.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-1.0.1.tar.gz
Summary: A program for typesetting music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
-Icon: lelie_icon.gif
-Buildroot: /tmp/lilypond-install
+Icon: lilypond-icon.gif
+BuildRoot: /tmp/lilypond-install
Prereq: tetex
%description
-LilyPond is the GNU Project music typesetter. This program can print
-beautiful sheet music from a music
-definition file. It can also play a play (mechanical) performances to a
-MIDI file. Features include multiple staffs, meters,
-clefs, keys, lyrics, versatile input-language,
-cadenzas, beams, slurs, triplets.
-It includes a nice font of musical symbols.
+LilyPond is the GNU Project music typesetter. This program can print
+beautiful sheet music from a music definition file. It can also play
+mechanical performances to a MIDI file. Features include multiple
+staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,
+beams, slurs, triplets, formatting scores, part extraction. It includes
+a nice font of musical symbols.
%prep
%setup
%build
-./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared
+./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared --enable-tex-dir='${prefix}/lib/texmf/texmf/tex/generic' --enable-mf-dir='${prefix}/lib/texmf/texmf/fonts/source/'
make all
+make htmldoc
+
%install
rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc
+tar -C $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc -xzf out/htmldoc.tar.gz
+
strip lily/out/lilypond mi2mu/out/mi2mu
-make -C Documentation gifs
make prefix="$RPM_BUILD_ROOT/usr" install
%files
-%doc Documentation/out/*.txt
-%doc Documentation/tex/*.doc
-%doc Documentation/tex/*.bib
-%doc mutopia/*.ly
-%doc input/*.ly
-%doc Documentation/out/lelie_logo.gif
+
+%doc /tmp/lilypond-rpm-doc
+
+# hairy to hook it in (possibly non-existing) emacs
+%doc mudela-mode.el
+
+# this gets too messy...
+# %doc input/*.ly
+# verbatim include of input: list the directory without issuing a %dir
+
+%doc input
+
/usr/bin/convert-mudela
/usr/bin/mudela-book
/usr/bin/ly2dvi
/usr/bin/lilypond
/usr/bin/mi2mu
-# /usr/lib/libflower.so
/usr/man/man1/mi2mu.1
/usr/man/man1/lilypond.1
/usr/man/man1/mudela-book.1
/usr/man/man1/ly2dvi.1
/usr/man/man1/convert-mudela.1
-/usr/lib/texmf/texmf/tex/lilypond/
+/usr/lib/texmf/texmf/tex/generic/lilypond
/usr/lib/texmf/texmf/fonts/source/public/lilypond
/usr/share/lilypond/
+/usr/share/locale/*/LC_MESSAGES/lilypond.mo
%post
-
-ln -s /usr/lib/texmf/texmf/tex/lilypond /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
+## ln -s /usr/lib/texmf/texmf/tex/lilypond /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
texhash # takes some time...
-rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm'`
-
+touch /tmp/.lilypond-install
+rm `find /var/lib/texmf -name 'feta*pk -print' -or -name 'feta*tfm -print'` /tmp/.lilypond-install
diff --git a/make/out/zlilypond-docs.spec b/make/out/zlilypond-docs.spec
new file mode 100644
index 0000000000..09ba175731
--- /dev/null
+++ b/make/out/zlilypond-docs.spec
@@ -0,0 +1,52 @@
+#
+# The weird name is to persuade RPM to use the other spec for building the
+# lilypond rpm from the tarball.
+#
+
+Name: lilypond-docs
+Version: 1.0.1
+Release: 1
+Copyright: GPL
+Group: Applications/Publishing
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-1.0.1.tar.gz
+Summary: A program for typesetting music (documentation)
+URL: http://www.cs.uu.nl/~hanwen/lilypond
+Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
+Icon: lelie_icon.gif
+BuildRoot: /tmp/lilypond-install
+BuildArchitectures: noarch
+
+
+%description
+
+LilyPond is the GNU Project music typesetter. This program can print
+beautiful sheet music from a music definition file. It can also play
+mechanical performances to a MIDI file. Features include multiple
+staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,
+beams, slurs, triplets, formatting scores, part extraction. It includes
+a nice font of musical symbols.
+
+This package contains the documentation in HTML and PS format.
+
+%prep
+%setup -T -n lilypond-1.0.1 -b0
+%build
+
+#
+# This is actually quite gross. You have to have a working (and up to date)
+# LilyPond and Yodl to build the documentation.
+#
+
+make htmldocs
+
+%install
+
+# ln /home/hanwen/usr/src/lilypond/out/htmldoc.tar.gz out/
+mkdir -p $RPM_BUILD_ROOT/usr/doc/lilypond-1.0.1
+tar -C $RPM_BUILD_ROOT/usr/doc/lilypond-1.0.1 -xzf out/htmldoc.tar.gz
+
+%files
+
+%doc /usr/doc/lilypond-1.0.1
+
+%post
diff --git a/make/rpmrc.in b/make/rpmrc.in
deleted file mode 100644
index 9c77a4e8b2..0000000000
--- a/make/rpmrc.in
+++ /dev/null
@@ -1,6 +0,0 @@
-sourcedir: @LILYPOND_ROOTDIR@/releases
-topdir: @LILYPOND_ROOTDIR@/redhat
-builddir: @LILYPOND_ROOTDIR@/redhat/BUILD
-rpmdir: @LILYPOND_ROOTDIR@/redhat/RPMS
-srcrpmdir: @LILYPOND_ROOTDIR@/redhat/SRPMS
-
diff --git a/make/zlilypond-docs.spec.in b/make/zlilypond-docs.spec.in
new file mode 100644
index 0000000000..9e893be195
--- /dev/null
+++ b/make/zlilypond-docs.spec.in
@@ -0,0 +1,46 @@
+#
+# The weird name is to persuade RPM to use the other spec for building the
+# lilypond rpm from the tarball.
+#
+
+Name: lilypond-docs
+Version: @TOPLEVEL_VERSION@
+Release: 1
+Copyright: GPL
+Group: Applications/Publishing
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz
+Summary: A program for typesetting music (documentation)
+URL: http://www.cs.uu.nl/~hanwen/lilypond
+Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
+Icon: lelie_icon.gif
+BuildRoot: /tmp/lilypond-install
+BuildArchitectures: noarch
+
+
+%description
+@BLURB@
+
+This package contains the documentation in HTML and PS format.
+
+%prep
+%setup -T -n lilypond-@TOPLEVEL_VERSION@ -b0
+%build
+
+#
+# This is actually quite gross. You have to have a working (and up to date)
+# LilyPond and Yodl to build the documentation.
+#
+
+make htmldocs
+
+%install
+
+# ln /home/hanwen/usr/src/lilypond/out/htmldoc.tar.gz out/
+mkdir -p $RPM_BUILD_ROOT/usr/doc/lilypond-@TOPLEVEL_VERSION@
+tar -C $RPM_BUILD_ROOT/usr/doc/lilypond-@TOPLEVEL_VERSION@ -xzf out/htmldoc.tar.gz
+
+%files
+
+%doc /usr/doc/lilypond-@TOPLEVEL_VERSION@
+
+%post
diff --git a/mf/Makefile b/mf/Makefile
index 940ab88ced..42c18fec88 100644
--- a/mf/Makefile
+++ b/mf/Makefile
@@ -1,62 +1,45 @@
# mf/Makefile
-# subdir level:
-#
depth = ..
-#
-#
-include ./$(depth)/make/Include.make
-#
-# list of distribution files:
+include $(depth)/make/Stepmake.make
+include $(stepdir)/Metafont.make
-TEXFILES = $(wildcard *.tex)
-MFFILES = $(wildcard *.mf)
-EXTRA_DISTFILES = TODO README $(MFFILES)
+TEX_FILES = $(wildcard *.tex)
+EXTRA_DIST_FILES += TODO README
-lyout = $(outdir)/
-texout = $(outdir)/
-
-FONT_FILES = $(wildcard *[0-9].mf)
FET_FILES = $(wildcard feta[0-9]*.mf)
-LYTABLES = $(addprefix $(lyout)/, $(FET_FILES:.mf=.ly))
-LOGFILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.log))
-TEXTABLES = $(addprefix $(texout)/, $(FET_FILES:.mf=.tex))
-
-default: $(LYTABLES) $(TEXTABLES) $(LOGFILES)
-
+LYTABLES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.ly))
+LOG_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.log))
+TEXTABLES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.tex))
+AFM_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.afm))
+ALL_GEN_FILES=$(LYTABLES) $(TEXTABLES) $(LOG_FILES) $(AFM_FILES)
+default: $(ALL_GEN_FILES)
-$(outdir)/%.dvi: %.mf
- mf $<
- gftodvi $(basename $<)
- mv $(basename $<).dvi $(outdir)
- rm $(basename $<).*gf
-$(outdir)/%.log: %.mf
- mf $<
- mv $(@F) $@
- rm $(basename $< ).*gf
+$(outdir)/%.afm $(outdir)/%.ly $(outdir)/%.tex $(outdir)/%.dep: $(outdir)/%.log
+ $(PYTHON) $(buildscripts)/mf-to-table.py --package=$(topdir) --outdir=$(outdir) --dep $(outdir)/$(<F:.log=.dep) --ly $(outdir)/$(<F:.log=.ly) --afm $(outdir)/$(<F:.log=.afm) --tex $(outdir)/$(<F:.log=.tex) $<
-$(lyout)/%.ly $(texout)/%.tex $(outdir)/%.dep: $(outdir)/%.log
- $(PYTHON) $(depth)/bin/mf-to-table.py --outdir=$(outdir) --dep $(outdir)/$(<F:.log=.dep) --ly $(lyout)/$(<F:.log=.ly) --tex $(texout)/$(<F:.log=.tex) $<
+TEXINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(TEXDIR)/lilypond depth=.. INSTALLATION_OUT_FILES="$(TEXTABLES)" -f $(stepdir)/Install_outfiles.sub.make $@
-lyouts:
+AFMINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir) INSTALLATION_OUT_FILES="$(AFM_FILES)" -f $(stepdir)/Install_outfiles.sub.make $@
-TEXINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(TEXDIR)/lilypond depth=.. INSTALLATION_OUT_FILES="$(TEXTABLES)" -f $(depth)/make/Install_outfiles.sub.make $@
+LYINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir) INSTALLATION_OUT_FILES="$(LYTABLES)" -f $(stepdir)/Install_outfiles.sub.make $@
-LYINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir)/lilypond INSTALLATION_OUT_FILES="$(LYTABLES)" -f $(depth)/make/Install_outfiles.sub.make $@
-
-localinstall:
+localinstall: $(ALL_GEN_FILES)
$(TEXINSTALL)
$(LYINSTALL)
+ $(AFMINSTALL)
localuninstall:
$(TEXINSTALL)
$(LYINSTALL)
+ $(AFMINSTALL)
INSTALLATION_DIR=$(MFDIR)/public/lilypond
-INSTALLATION_FILES=$(MFFILES)
+INSTALLATION_FILES=$(MF_FILES)
+
+include $(stepdir)/Installfiles.make
-include $(depth)/make/Installfiles.make
diff --git a/mf/Rules.make b/mf/Rules.make
deleted file mode 100644
index 7c7881c57b..0000000000
--- a/mf/Rules.make
+++ /dev/null
@@ -1,31 +0,0 @@
-
-$(top_builddir)/mf/%.dvi: %.mf
- mf $<
- gftodvi $(basename $<)
-# mv $(basename $<).dvi $(outdir)
-# rm $(basename $<).*gf
-
-$(top_builddir)/mf/%.log: %.mf
- mf $<
-# mv $(@F) $@
-# rm $(basename $< ).*gf
-
-$(lyout)/%.ly $(texout)/%.tex: $(top_builddir)/mf/%.log
- $(PYTHON) $(top_builddir)/bin/mf-to-table --ly $(lyout)/$(<F:.log=.ly) --tex $(texout)/$(<F:.log=.tex) $<
-
-$(MFDEPS): $(FONT_FILES)
-# do something silly to avoid barfs if python not installed.
- echo > $@
- $(PYTHON) $(top_builddir)/bin/mf-deps $^ >> $@
-
-# silly workaround for stupid TeXs
-systempks:
-# irix 5.3
-# MakeTeXPK feta16 300 300 magstep\(0.0\)
- set -e ; for a in $(FONT_FILES); do \
- MakeTeXPK `basename $$a .mf` 300 300 magstep\(0.0\) ; \
- mf "\mode=ljfour; input `basename $$a .mf`" ;\
-# mv -f `find . -name '*.tfm' -print -o -name '*gf' -print` out/ ; \
- mv -f `find . -name '*.tfm' -print -o -name '*gf' -print` ; \
- done
-
diff --git a/mf/TODO b/mf/TODO
index e93332e8b1..999e75eca3 100644
--- a/mf/TODO
+++ b/mf/TODO
@@ -7,8 +7,10 @@
- lo-res fixes.
- work out sizes of character fonts.
- more symbols
- * piano pedals,
+ * piano pedals: Ped/*
* maxima notehead
- * coda signs.
+ * coda signs: Segno, O+
+ * glissando, arpeggio
+ * lengthened trill
- 128th flags
- include important spacing dims in fetalog
diff --git a/mf/feta-autometric.mf b/mf/feta-autometric.mf
index 8d53d52150..c638935f85 100644
--- a/mf/feta-autometric.mf
+++ b/mf/feta-autometric.mf
@@ -4,7 +4,7 @@
% source file of the Feta (Font-En-Tja) pretty-but-neat music font
%
% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-% Jan Nieuwenhuizen <jan@digicash.com>
+% Jan Nieuwenhuizen <janneke@gnu.org>
%
% these macros help create ascii logging output
% to automate generation of lily tables and tex backend
diff --git a/mf/feta-beum.mf b/mf/feta-beum.mf
index 53c8cc4f24..7097d68d3c 100644
--- a/mf/feta-beum.mf
+++ b/mf/feta-beum.mf
@@ -3,7 +3,7 @@
%
% source file of LilyPond's pretty-but-neat music font
%
-% (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
%
mode_setup;
diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf
index 402de0420c..8a48d4bfc7 100644
--- a/mf/feta-bolletjes.mf
+++ b/mf/feta-bolletjes.mf
@@ -3,7 +3,7 @@
%
% source file of LilyPond's pretty-but-neat music font
%
-% (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
% & Han-Wen Nienhuys <hanwen@stack.nl>
%
diff --git a/mf/feta-brackets16.mf b/mf/feta-brackets16.mf
index 8231f1dc3e..9e2a79eee5 100644
--- a/mf/feta-brackets16.mf
+++ b/mf/feta-brackets16.mf
@@ -5,7 +5,7 @@
% source file of the Feta (Font-En-Tja) music font
%
% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-% Jan Nieuwenhuizen <jan@digicash.com>
+% Jan Nieuwenhuizen <janneke@gnu.org>
%
font_identifier:="feta-brackets16";
diff --git a/mf/feta-brackets20.mf b/mf/feta-brackets20.mf
index 2884ce5da7..fb409093d0 100644
--- a/mf/feta-brackets20.mf
+++ b/mf/feta-brackets20.mf
@@ -4,7 +4,7 @@
% source file of the Feta (Font-En-Tja) music font
%
% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-% Jan Nieuwenhuizen <jan@digicash.com>
+% Jan Nieuwenhuizen <janneke@gnu.org>
%
font_identifier:="feta-brackets20";
diff --git a/mf/feta-eindelijk.mf b/mf/feta-eindelijk.mf
index 7649ea0e8e..0670ea351b 100644
--- a/mf/feta-eindelijk.mf
+++ b/mf/feta-eindelijk.mf
@@ -1,8 +1,6 @@
% eindelijk.mf
% LilyPond's own rest(s)
-% todo breve/longa rests
-
fet_begingroup("rests");
@@ -85,6 +83,25 @@ fet_beginchar("half rest (outside staff)", "1o", "outsidehalfrest");
draw z5 .. z6;
fet_endchar;
+
+save breve_rest_y, breve_rest_x;
+
+breve_rest_y# = interline#;
+breve_rest_x# = 3/5 interline#;
+
+define_pixels(breve_rest_y, breve_rest_x);
+
+fet_beginchar("breve rest", "-1", "breverest");
+ set_char_box(0, breve_rest_x#, 0, breve_rest_y#);
+ draw_block ((0,0), (breve_rest_x, breve_rest_y));
+fet_endchar;
+
+fet_beginchar("longa rest", "-2", "longarest");
+ set_char_box(0, breve_rest_x#, breve_rest_y#, breve_rest_y#);
+ draw_block ((0,-breve_rest_y), (breve_rest_x, breve_rest_y));
+fet_endchar;
+
+
fet_beginchar("Quarter rest","2","quartrest");
save alpha;
alpha:=-50;
diff --git a/mf/feta-klef.mf b/mf/feta-klef.mf
index 2cf10ca788..cccaef43fd 100644
--- a/mf/feta-klef.mf
+++ b/mf/feta-klef.mf
@@ -4,7 +4,7 @@
% source file of the Feta (Font-En-Tja) music font
%
% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>,
-% Jan Nieuwenhuizen <jan@digicash.com>
+% Jan Nieuwenhuizen <janneke@gnu.org>
diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf
index 8b28f2a47b..7257a45277 100644
--- a/mf/feta-schrift.mf
+++ b/mf/feta-schrift.mf
@@ -5,7 +5,7 @@
% music font
%
% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-% Jan Nieuwenhuizen <jan@digicash.com>
+% Jan Nieuwenhuizen <janneke@gnu.org>
%
@@ -130,10 +130,10 @@ fet_endchar;
fet_beginchar("portato/single tenuto", "tenuto", "tenuto")
save thick;
- thick# = 1.2 stafflinethickness#;
+ thick# = 1.4 stafflinethickness#;
define_pixels(thick);
- set_char_box(.9 interline#, .9 interline#, thick#/2,thick#/2);
+ set_char_box(.6 interline#, .6 interline#, thick#/2,thick#/2);
pickup pencircle scaled thick;
lft x1 = -b;
rt x2 = w;
diff --git a/mf/feta-slag.mf b/mf/feta-slag.mf
index 7d8f1d52ac..292a5db899 100644
--- a/mf/feta-slag.mf
+++ b/mf/feta-slag.mf
@@ -4,7 +4,7 @@
% source file of the Feta (defintively not an abbreviation for Font-En-Tja)
% music font
%
-% (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
%
% this file is included by feta-scripts.mf
diff --git a/mf/feta-sleur.mf b/mf/feta-sleur.mf
index 24637e273d..01c1e1406b 100644
--- a/mf/feta-sleur.mf
+++ b/mf/feta-sleur.mf
@@ -3,7 +3,7 @@
%
% source file of LilyPond's pretty-but-neat music font
%
-% (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
% & Han-Wen Nienhuys <hanwen@stack.nl>
%
% see Documentation/fonts.tex
diff --git a/mf/out/dummy.dep b/mf/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/mf/out/dummy.dep
+++ /dev/null
diff --git a/mi2mu/Makefile b/mi2mu/Makefile
index 02509c2313..012024b932 100644
--- a/mi2mu/Makefile
+++ b/mi2mu/Makefile
@@ -1,72 +1,25 @@
-#
-# project LilyPond -- the musical typesetter
# title makefile for mi2mu
# file mi2mu/Makefile
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-#
-# subdir level:
-#
depth = ..
-#
NAME = mi2mu
MODULE_NAME = mi2mu
-# generic variables:
-#
-include ./$(depth)/make/Variables.make
-include ./$(depth)/make/Files.make
-#
-
-# identify module:
-#
-include $(mi2mu-dir)/VERSION
-build = $(mi2mu-dir)/$(outdir)/.build
-#
-
-# descent order into subdirectories:
-#
SUBDIRS = include
-#
-
-# to be remade each build:
-#
-VERSION_DEPENDENCY = $(mi2mu-version)
-#
+EXTRA_DIST_FILES += TODO
+MODULE_LIBS=$(depth)/lib $(depth)/flower
-
-# list of distribution files:
-#
-EXTRA_DISTFILES = VERSION TODO
-#
-
-# list of custom libraries:
-#
-MODULE_LIBDEPS=check-flower-deps check-lib-deps
-MODULE_LIBES=-llily -lflower
-#
-
-
-default: $(EXECUTABLE)
-
-#
-
-# generic targets and rules:
-#
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-#
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C++.make
+include $(stepdir)/Executable.make
# explicit dependencies: (how to do auto?)
#
midi-lexer.l: $(outdir)/midi-parser.hh
-$(outdir)/mi2mu-version.o: $(outdir)/version.hh
-EXECUTABLES=mi2mu
+$(outdir)/mi2mu-version.o: $(outdir)/version.hh
-include $(depth)/make/Executable.make
+VERSION: $(depth)/VERSION
+ cp $< $@
diff --git a/mi2mu/include/Makefile b/mi2mu/include/Makefile
index 1cfdc7b22a..b23f26fb30 100644
--- a/mi2mu/include/Makefile
+++ b/mi2mu/include/Makefile
@@ -1,17 +1,7 @@
# lib/include/Makefile
-# subdir level:
-#
depth = ../..
-#
-# identify module:
-#
-MODULE_NAME = lilypond
-#
-
-# generic stuff/Makefile
-#
-include ./$(depth)/make/Include.make
-#
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C++.make
diff --git a/mi2mu/include/mi2mu-global.hh b/mi2mu/include/mi2mu-global.hh
index 005870af7d..4ed873fb54 100644
--- a/mi2mu/include/mi2mu-global.hh
+++ b/mi2mu/include/mi2mu-global.hh
@@ -1,7 +1,7 @@
//
// mi2mu-global.hh -- declare global (sic) stuff for mi2mu
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#ifndef MI2MU_GLOBAL_HH
#define MI2MU_GLOBAL_HH
diff --git a/mi2mu/include/mi2mu-proto.hh b/mi2mu/include/mi2mu-proto.hh
index c5cc781671..d8ad1368e4 100644
--- a/mi2mu/include/mi2mu-proto.hh
+++ b/mi2mu/include/mi2mu-proto.hh
@@ -17,7 +17,7 @@ class Midi_track_parser;
class Mudela_stream;
class Mudela_item;
class Mudela_key;
-class Mudela_meter;
+class Mudela_time_signature;
class Mudela_note;
class Mudela_tempo;
class Mudela_text;
diff --git a/mi2mu/include/midi-parser.hh b/mi2mu/include/midi-parser.hh
index cc883e2a1b..6659fb42cd 100644
--- a/mi2mu/include/midi-parser.hh
+++ b/mi2mu/include/midi-parser.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
diff --git a/mi2mu/include/midi-score-parser.hh b/mi2mu/include/midi-score-parser.hh
index c13ea02727..0dc9823705 100644
--- a/mi2mu/include/midi-score-parser.hh
+++ b/mi2mu/include/midi-score-parser.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
diff --git a/mi2mu/include/midi-track-parser.hh b/mi2mu/include/midi-track-parser.hh
index 0115adecd5..3679ef6007 100644
--- a/mi2mu/include/midi-track-parser.hh
+++ b/mi2mu/include/midi-track-parser.hh
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
diff --git a/mi2mu/include/mudela-column.hh b/mi2mu/include/mudela-column.hh
index 24d5196308..b1ab97c24b 100644
--- a/mi2mu/include/mudela-column.hh
+++ b/mi2mu/include/mudela-column.hh
@@ -1,7 +1,7 @@
//
// mudela-column.hh -- declare Mudela_column
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#ifndef MUDELA_COLUMN_HH
#define MUDELA_COLUMN_HH
diff --git a/mi2mu/include/mudela-item.hh b/mi2mu/include/mudela-item.hh
index 76754ebc80..461d43b71a 100644
--- a/mi2mu/include/mudela-item.hh
+++ b/mi2mu/include/mudela-item.hh
@@ -1,7 +1,7 @@
//
// mudela-item.hh -- declare mudela_item
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#ifndef MUDELA_ITEM_HH
#define MUDELA_ITEM_HH
@@ -45,10 +45,10 @@ public:
int minor_i_;
};
-class Mudela_meter : public Mudela_item
+class Mudela_time_signature : public Mudela_item
{
public:
- Mudela_meter (int num_i, int den_i, int division_4_i, int count_32_i);
+ Mudela_time_signature (int num_i, int den_i, int division_4_i, int count_32_i);
Duration i2_dur (int time_i, int division_1_i);
int clocks_1_i();
@@ -108,7 +108,7 @@ public:
private:
int useconds_per_4_i_;
- Real seconds_per_1_f_;
+ Moment seconds_per_1_mom_;
};
class Mudela_text : public Mudela_item
diff --git a/mi2mu/include/mudela-score.hh b/mi2mu/include/mudela-score.hh
index d1102f0808..4d0992b35c 100644
--- a/mi2mu/include/mudela-score.hh
+++ b/mi2mu/include/mudela-score.hh
@@ -1,7 +1,7 @@
//
// mudela-score.hh -- declare Mudela_score
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#ifndef MUDELA_SCORE_HH
#define MUDELA_SCORE_HH
@@ -28,7 +28,7 @@ public:
// ugh
Mudela_key* mudela_key_l_;
- Mudela_meter* mudela_meter_l_;
+ Mudela_time_signature* mudela_time_signature_l_;
Mudela_tempo* mudela_tempo_l_;
private:
diff --git a/mi2mu/include/mudela-staff.hh b/mi2mu/include/mudela-staff.hh
index 6acb91b56a..4608e0859c 100644
--- a/mi2mu/include/mudela-staff.hh
+++ b/mi2mu/include/mudela-staff.hh
@@ -1,7 +1,7 @@
//
// mudela-staff.hh -- declare mudela_staff
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#ifndef MUDELA_STAFF_HH
#define MUDELA_STAFF_HH
@@ -27,7 +27,7 @@ public:
String instrument_str_;
String name_str_;
Mudela_key* mudela_key_l_;
- Mudela_meter* mudela_meter_l_;
+ Mudela_time_signature* mudela_time_signature_l_;
Mudela_tempo* mudela_tempo_l_;
int number_i_;
diff --git a/mi2mu/include/mudela-stream.hh b/mi2mu/include/mudela-stream.hh
index f353838ea6..6953a961cd 100644
--- a/mi2mu/include/mudela-stream.hh
+++ b/mi2mu/include/mudela-stream.hh
@@ -1,7 +1,7 @@
//
// mudela-stream.hh -- part of LilyPond
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
// should i be named Mudela_stream?
@@ -10,6 +10,7 @@
#include "mi2mu-proto.hh"
#include "string.hh"
+#include "scalar.hh"
/// Lily output
class Mudela_stream {
@@ -17,7 +18,7 @@ public:
Mudela_stream (String filename_str);
~Mudela_stream();
- Mudela_stream& operator << (String str);
+ Mudela_stream& operator << (Scalar s);
Mudela_stream& operator << (Mudela_item& mudela_item_r);
private:
diff --git a/mi2mu/include/mudela-voice.hh b/mi2mu/include/mudela-voice.hh
index ab4aef142d..28b4efcdb9 100644
--- a/mi2mu/include/mudela-voice.hh
+++ b/mi2mu/include/mudela-voice.hh
@@ -1,7 +1,7 @@
//
// mudela-voice.hh -- declare Mudela_voice
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#ifndef MUDELA_VOICE_HH
#define MUDELA_VOICE_HH
diff --git a/mi2mu/include/out/dummy.dep b/mi2mu/include/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/mi2mu/include/out/dummy.dep
+++ /dev/null
diff --git a/mi2mu/main.cc b/mi2mu/main.cc
index 3ae4f39905..20e1866a43 100644
--- a/mi2mu/main.cc
+++ b/mi2mu/main.cc
@@ -1,12 +1,14 @@
//
-// main.cc -- implement silly main() entry point
+// main.cc -- implement silly main () entry point
// should have Root class.
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#include <assert.h>
+#include <locale.h>
+#include "config.hh"
#include "string-convert.hh"
-#include "lgetopt.hh"
+#include "getopt-long.hh"
#include "file-path.hh"
#include "duration-convert.hh"
#include "source.hh"
@@ -15,7 +17,11 @@
#include "midi-score-parser.hh"
#include "mudela-item.hh"
#include "mudela-score.hh"
-//#include "version.hh"
+
+#if HAVE_GETTEXT
+#include <libintl.h>
+#endif
+
// ugh
String filename_str_g;
@@ -34,25 +40,55 @@ Verbose level_ver = NORMAL_ver;
void
usage()
{
- LOGOUT(NORMAL_ver) <<
- _("Usage: mi2mu [options] midi-file\n"
- "Translate midi-file to mudela\n"
- "\n"
- "Options:\n"
+ cout << _f ("Usage: %s [OPTION]... [FILE]", "mi2mu");
+ cout << '\n';
+ cout << _ ("Translate midi-file to mudela");
+ cout << '\n';
+ cout << '\n';
+ cout << _ ("Options:");
+ cout << '\n';
+ cout << _ (
" -b, --no-quantify write exact durations, e.g.: a4*385/384\n"
- " -d, --debug print lots of debugging stuff\n"
+ );
+ cout << _ (
+ " -D, --debug enable debugging output\n"
+ );
+ cout << _ (
" -h, --help this help\n"
+ );
+ cout << _ (
" -I, --include=DIR add DIR to search path\n"
+ );
+ cout << _ (
" -k, --key=ACC[:MINOR] set key: ACC +sharps/-flats; :1 minor\n"
+ );
+ cout << _ (
" -n, --no-silly assume no plets or double dots, smallest is 32\n"
+ );
+ cout << _ (
" -o, --output=FILE set FILE as default output\n"
+ );
+ cout << _ (
" -p, --no-plets assume no plets\n"
+ );
+ cout << _ (
" -q, --quiet be quiet\n"
+ );
+ cout << _ (
" -T, --no-timestamps don't timestamp the output\n"
+ );
+ cout << _ (
" -s, --smallest=N assume no shorter (reciprocal) durations than N\n"
+ );
+ cout << _ (
" -v, --verbose be verbose\n"
+ );
+ cout << _ (
" -w, --warranty show warranty and copyright\n"
- " -x, --no-double-dots assume no double dotted notes\n")
+ );
+ cout << _ (
+ " -x, --no-double-dots assume no double dotted notes\n"
+ );
;
}
@@ -65,37 +101,49 @@ identify()
void
notice()
{
- LOGOUT(NORMAL_ver) <<
- _("\n"
- "Mi2mu, translate midi to mudela.\n"
- "Copyright (C) 1997 by\n"
- " Jan Nieuwenhuizen <jan@digicash.com>\n"
- " Han-Wen Nienhuys <hanwen@stack.nl>\n"
- "\n"
- " This program is free software; you can redistribute it and/or\n"
- "modify it under the terms of the GNU General Public License version 2\n"
- "as published by the Free Software Foundation.\n"
- "\n"
- " This program is distributed in the hope that it will be useful,\n"
- "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
- "General Public License for more details.\n"
- "\n"
- " You should have received a copy (refer to the file COPYING) of the\n"
- "GNU General Public License along with this program; if not, write to\n"
- "the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
- "USA.\n");
+ LOGOUT(NORMAL_ver) << '\n';
+ LOGOUT(NORMAL_ver) << _ ("Mi2mu, translate midi to mudela");
+ LOGOUT(NORMAL_ver) << '\n';
+ LOGOUT(NORMAL_ver) << _f ("Copyright (c) %s by", "1997, 1998");
+ LOGOUT(NORMAL_ver) << '\n';
+ LOGOUT(NORMAL_ver) << " " + _ ("Han-Wen Nienhuys <hanwen@cs.uu.nl>") + "\n";
+ LOGOUT(NORMAL_ver) << " " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
+ LOGOUT(NORMAL_ver) << '\n';
+ LOGOUT(NORMAL_ver) << _ (
+ " This program is free software; you can redistribute it and/or\n"
+ "modify it under the terms of the GNU General Public License version 2\n"
+ "as published by the Free Software Foundation.\n"
+ "\n"
+ " This program is distributed in the hope that it will be useful,\n"
+ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
+ "General Public License for more details.\n"
+ "\n"
+ " You should have received a copy (refer to the file COPYING) of the\n"
+ "GNU General Public License along with this program; if not, write to\n"
+ "the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+ "USA.\n");
}
int
main (int argc_i, char* argv_sz_a[])
{
+
+#if HAVE_GETTEXT
+ setlocale (LC_ALL, "");
+// setlocale (LC_MESSAGES, "");
+ String name (PACKAGE);
+ name.to_lower ();
+ bindtextdomain (name.ch_C (), DIR_LOCALEDIR);
+ textdomain (name.ch_C ()) ;
+#endif
+
Mudela_key key (0, 0);
Long_option_init long_option_init_a[] =
{
{0, "no-quantify", 'b'},
- {0, "debug", 'd'},
+ {0, "debug", 'D'},
{0, "help", 'h'},
{1, "key", 'k'},
{0, "no-silly", 'n'},
@@ -118,7 +166,7 @@ main (int argc_i, char* argv_sz_a[])
case 'b':
Duration_convert::no_quantify_b_s = true;
break;
- case 'd':
+ case 'D':
level_ver = DEBUG_ver;
break;
case 'h':
@@ -135,7 +183,7 @@ main (int argc_i, char* argv_sz_a[])
int i = str.index_i (':');
i = (i >=0 ? i : str.length_i ());
key.accidentals_i_ = String_convert::dec2_i (str.left_str (i));
- key.minor_i_ = (int)(bool)String_convert::dec2_i (str.cut (i + 1,1));
+ key.minor_i_ = (int)(bool)String_convert::dec2_i (str.cut_str (i + 1,1));
break;
}
case 'n':
diff --git a/mi2mu/mi2mu-version.cc b/mi2mu/mi2mu-version.cc
index 55946e5470..113512d363 100644
--- a/mi2mu/mi2mu-version.cc
+++ b/mi2mu/mi2mu-version.cc
@@ -1,20 +1,20 @@
//
// version.cc -- implement inexpensive versioning
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#include <stdio.h>
#include "config.hh"
+#include "version.hh"
+#define VERSION_SZ MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL "." MY_PATCH_LEVEL
-// static char *s = "mi2mu " MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL MY_PATCH_LEVEL " #%d";
-//urg
-//static char *s = "mi2mu " TOPLEVEL_VERSION " #%d";
-static char *s = "mi2mu FIXME " ;
+static char *s = "mi2mu " VERSION_SZ;
const char *
mi2mu_version_sz()
-{ return s;
+{
+ return s;
}
diff --git a/mi2mu/midi-parser.cc b/mi2mu/midi-parser.cc
index ad8e020d26..eafd50c004 100644
--- a/mi2mu/midi-parser.cc
+++ b/mi2mu/midi-parser.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <assert.h>
@@ -61,7 +61,7 @@ Midi_parser::get_str (int n)
{
assert (n >= 0);
if (!n)
- warning (_("Zero length string encountered"));
+ warning (_ ("zero length string encountered"));
Byte const* p = forward_byte_L (n);
return String (p, n);
@@ -97,5 +97,5 @@ Midi_parser::message (String str)
void
Midi_parser::warning (String str)
{
- ::message (message (String (_("warning: ")) + str));
+ ::message (message (String (_ ("warning: ")) + str));
}
diff --git a/mi2mu/midi-score-parser.cc b/mi2mu/midi-score-parser.cc
index b0cac0c889..92eb74833e 100644
--- a/mi2mu/midi-score-parser.cc
+++ b/mi2mu/midi-score-parser.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include "moment.hh"
@@ -21,7 +21,7 @@ Midi_score_parser::open (String filename_str, Sources* sources_l)
{
info_l_->source_l_ = sources_l->get_file_l (filename_str);
if (!info_l_->source_l_)
- ::error (_("can't find: `") + filename_str + "'");
+ ::error (_f ("can't find file: `%s\'", filename_str));
info_l_->byte_L_ = (Byte const*)info_l_->source_l_->ch_C ();
// info_l_->end_byte_L_ = info_l_->byte_L_ + info_l_->source_l_->length_i ();
info_l_->end_byte_L_ = info_l_->byte_L_ + info_l_->source_l_->length_i () + 1;
@@ -42,12 +42,12 @@ Midi_score_parser::parse_header ()
{
String str = get_str (4);
if ( str != "MThd" )
- exit (_("MIDI header expected"));
+ exit (_ ("MIDI header expected"));
int length_i = get_i (4);
// is this signed?
if (length_i < 6)
- exit (_("Invalid header length"));
+ exit (_ ("Invalid header length"));
info_l_->format_i_ = get_i (2);
if (info_l_->format_i_ != 0 && info_l_->format_i_ != 1)
exit (_("Invalid midi format"));
@@ -56,7 +56,7 @@ Midi_score_parser::parse_header ()
exit (_("Invalid number of tracks"));
info_l_->division_1_i_ = get_i (2) * 4;
if (info_l_->division_1_i_ < 0)
- exit (_("Cannot handle non-metrical time"));
+ exit (_f ("can't handle %s", _ ("non-metrical time")));
// ugh
Duration::division_1_i_s = info_l_->division_1_i_;
forward_byte_L (length_i - 6);
@@ -82,7 +82,7 @@ Mudela_score*
Midi_score_parser::parse_score ()
{
int current_bar_i = 0;
- Mudela_meter m4 (4, 2, 24, 8);
+ Mudela_time_signature m4 (4, 2, 24, 8);
Moment bar4_mom = m4.bar_mom ();
Mudela_score* score_p = new Mudela_score( 1, 1, 1 );
@@ -92,7 +92,7 @@ Midi_score_parser::parse_score ()
for (int i = 0; i < info_l_->tracks_i_; i++)
tracks.push (new Midi_track_parser (info_l_, i));
- LOGOUT (NORMAL_ver) << _("Parsing...\n");
+ LOGOUT (NORMAL_ver) << _ ("Parsing...\n");
while (tracks.size ())
{
int i = find_earliest_i (tracks);
diff --git a/mi2mu/midi-track-parser.cc b/mi2mu/midi-track-parser.cc
index ffc3380da3..ff7d4453d4 100644
--- a/mi2mu/midi-track-parser.cc
+++ b/mi2mu/midi-track-parser.cc
@@ -3,7 +3,7 @@
source file of the GNU LilyPond music typesetter
- (c) 1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+ (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <assert.h>
@@ -60,16 +60,15 @@ Midi_track_parser::note_end (Mudela_column* col_l, int channel_i, int pitch_i, i
i->end_column_l_ = col_l;
// LOGOUT(DEBUG_ver) << "Note: " << pitch_i;
// LOGOUT(DEBUG_ver) << "; " << i->mudela_column_l_->at_mom_;
- // LOGOUT(DEBUG_ver) << ", " << i->end_column_l_->at_mom_ << "\n";
+ // LOGOUT(DEBUG_ver) << ", " << i->end_column_l_->at_mom_ << '\n';
i.remove_p();
return;
}
else
i++;
}
- warning (String (_("junking note-end event: "))
- + _(" channel = ") + String_convert::i2dec_str (channel_i, 0, ' ')
- + _(", pitch = ") + String_convert::i2dec_str (pitch_i, 0, ' '));
+ warning (_f ("junking note-end event: channel = %d, pitch = %d",
+ channel_i, pitch_i));
}
void
@@ -98,7 +97,7 @@ Midi_track_parser::parse (Mudela_column* col_l)
if (!eot())
return 0;
- // vangnet
+ // catch-all
note_end_all (col_l);
Mudela_staff* p = mudela_staff_p_;
@@ -123,11 +122,11 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
if (byte <= 0x5f)
{
if (running_byte_ <= 0x5f)
- exit (_("Invalid running status"));
+ exit (_ ("invalid running status"));
/*
'running status' rather means 'missing status'.
we'll just pretend we read the running status byte.
- */
+ */
byte = running_byte_;
}
else
@@ -137,7 +136,7 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
// DATA_ENTRY [\x60-\x79]
if ((byte >= 0x60) && (byte <= 0x79))
{
- next_byte ();
+ next_byte ();
}
// ALL_NOTES_OFF [\x7a-\x7f]
else if ((byte >= 0x7a) && (byte <= 0x7f))
@@ -165,7 +164,7 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
/*
sss: some broken devices encode NOTE_OFF as
NOTE_ON with zero volume
- */
+ */
if (dyn_i)
{
Mudela_note* p = new Mudela_note (col_l, channel_i, pitch_i, dyn_i);
@@ -250,11 +249,11 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
Mudela_text* p = new Mudela_text (t, str);
item_p = p;
if (t == Mudela_text::COPYRIGHT)
- mudela_staff_p_->copyright_str_ = p->text_str_;
+ mudela_staff_p_->copyright_str_ = p->text_str_;
else if (t == Mudela_text::TRACK_NAME)
- mudela_staff_p_->name_str_ = p->text_str_;
+ mudela_staff_p_->name_str_ = p->text_str_;
else if (t == Mudela_text::INSTRUMENT_NAME)
- mudela_staff_p_->instrument_str_ = p->text_str_;
+ mudela_staff_p_->instrument_str_ = p->text_str_;
}
// END_OF_TRACK [\x2f][\x00]
else
@@ -295,11 +294,11 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
int den_i = (int)next_byte ();
int clocks_4_i = (int)next_byte ();
int count_32_i = (int)next_byte ();
- Mudela_meter* p = new Mudela_meter ( num_i, den_i, clocks_4_i, count_32_i );
+ Mudela_time_signature* p = new Mudela_time_signature ( num_i, den_i, clocks_4_i, count_32_i );
item_p = p;
- info_l_->score_l_->mudela_meter_l_ = p;
+ info_l_->score_l_->mudela_time_signature_l_ = p;
info_l_->bar_mom_ = p->bar_mom ();
- mudela_staff_p_->mudela_meter_l_ = p;
+ mudela_staff_p_->mudela_time_signature_l_ = p;
}
// KEY [\x59][\x02]
else if ((byte == 0x59) && (next == 0x02))
@@ -324,12 +323,12 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
{
next_byte ();
next_byte ();
- warning (_("Unimplemented MIDI meta-event"));
+ warning (_ ("unimplemented MIDI meta-event"));
}
}
}
else
- exit (_("Invalid MIDI event"));
+ exit (_ ("invalid MIDI event"));
if (item_p)
item_p->mudela_column_l_ = col_l;
@@ -344,16 +343,16 @@ Midi_track_parser::parse_header ()
{
String str = get_str (4);
if ( str != "MTrk" )
- exit (_("MIDI track expected"));
+ exit (_ ("MIDI track expected"));
int length_i = get_i (4);
// is this signed?
if (length_i < 0)
- exit (_("Invalid track length"));
+ exit (_ ("invalid track length"));
assert (!track_info_p_);
track_info_p_ = new Midi_parser_info (*info_l_);
track_info_p_->end_byte_L_ = track_info_p_->byte_L_ + length_i;
forward_byte_L (length_i);
-// forward_byte_L (length_i-1);
+ // forward_byte_L (length_i-1);
info_l_ = track_info_p_;
}
diff --git a/mi2mu/mudela-column.cc b/mi2mu/mudela-column.cc
index a197fb8f15..5a00e88310 100644
--- a/mi2mu/mudela-column.cc
+++ b/mi2mu/mudela-column.cc
@@ -1,7 +1,7 @@
//
// mudela-column.cc -- implement Mudela_column
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#include "mudela-column.hh"
diff --git a/mi2mu/mudela-item.cc b/mi2mu/mudela-item.cc
index 136e03a7d6..053762502f 100644
--- a/mi2mu/mudela-item.cc
+++ b/mi2mu/mudela-item.cc
@@ -1,7 +1,7 @@
//
// mudela-item.cc -- implement Mudela_item
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#include <assert.h>
#include "mi2mu-global.hh"
@@ -36,7 +36,7 @@ Mudela_item::duration_mom ()
void
Mudela_item::output (Mudela_stream& mudela_stream_r)
{
- mudela_stream_r << str () << String (" ");
+ mudela_stream_r << str () << " ";
}
Mudela_key::Mudela_key (int accidentals_i, int minor_i)
@@ -51,17 +51,16 @@ Mudela_key::str ()
{
int key_i = 0;
if (accidentals_i_ >= 0)
- key_i = ((accidentals_i_ % 7)[ "cgdaebf" ] - 'a' - 2) % 7;
+ key_i = ((accidentals_i_ % 7)[ "cgdaebf" ] - 'a' - 2) % 7;
else
- key_i = ((-accidentals_i_ % 7)[ "cfbeadg" ] - 'a' - 2) % 7;
- String str = "\\key ";
- if (!minor_i_)
- str += String ((char) ((key_i + 2) % 7 + 'A'));
- else // heu, -2: should be - 1 1/2: A -> fis
- str += String ((char) ((key_i + 2 - 2) % 7 + 'a'));
- str = String ("% \"") + str
- + String ('"') + _("; % not supported yet\n");
- return str;
+ key_i = ((-accidentals_i_ % 7)[ "cfbeadg" ] - 'a' - 2) % 7;
+
+ String keyname = (1) // !minor_i_)
+ ? to_str ((char) ((key_i + 2) % 7 + 'A'))
+ : to_str ((char) ((key_i + 2 - 2) % 7 + 'a'));
+ // heu, -2: should be - 1 1/2: A -> fis
+
+ return String("\\key " + keyname + ";\n");
}
String
@@ -79,40 +78,40 @@ Mudela_key::notename_str (int pitch_i)
int accidental_i = accidentals_i_a[ (minor_i_ * 5 + pitch_i) % 12 ];
if (accidental_i && (accidentals_i_ < 0))
{
- accidental_i = - accidental_i;
- notename_i = (notename_i + 1) % 7;
+ accidental_i = - accidental_i;
+ notename_i = (notename_i + 1) % 7;
}
- String notename_str = (char) ( ((notename_i + 2) % 7) + 'a');
+ String notename_str = to_str ((char)(((notename_i + 2) % 7) + 'a'));
while (accidental_i-- > 0)
- notename_str += "is";
+ notename_str += "is";
accidental_i++;
while (accidental_i++ < 0)
- if ((notename_str == "a") || (notename_str == "e"))
- notename_str += "s";
- else
- notename_str += "es";
+ if ((notename_str == "a") || (notename_str == "e"))
+ notename_str += "s";
+ else
+ notename_str += "es";
accidental_i--;
- String de_octavate_str = String ('\'', (Mudela_note::c0_pitch_i_c_ + 11 - pitch_i) / 12);
- String octavate_str = String ('\'', (pitch_i - Mudela_note::c0_pitch_i_c_) / 12);
- return de_octavate_str + notename_str + octavate_str;
+ String de_octavate_str = to_str (',', (Mudela_note::c0_pitch_i_c_ + 11 - pitch_i) / 12);
+ String octavate_str = to_str ('\'', (pitch_i - Mudela_note::c0_pitch_i_c_) / 12);
+ return notename_str +de_octavate_str + octavate_str;
}
-Mudela_meter::Mudela_meter (int num_i, int den_i, int clocks_4_i, int count_32_i)
- : Mudela_item (0)
+Mudela_time_signature::Mudela_time_signature (int num_i, int den_i, int clocks_4_i, int count_32_i)
+ : Mudela_item (0)
{
sync_dur_.durlog_i_ = 3;
sync_f_ = 1.0;
if (count_32_i != 8)
- warning (String (_("#32 in quarter: ")) + String (count_32_i));
+ warning (_f ("#32 in quarter: %d", count_32_i));
num_i_ = num_i;
den_i_ = den_i;
clocks_1_i_ = clocks_4_i * 4;
}
Moment
-Mudela_meter::bar_mom ()
+Mudela_time_signature::bar_mom ()
{
Duration d;
d.durlog_i_ = den_i_;
@@ -120,43 +119,44 @@ Mudela_meter::bar_mom ()
}
int
-Mudela_meter::clocks_1_i ()
+Mudela_time_signature::clocks_1_i ()
{
return clocks_1_i_;
}
int
-Mudela_meter::den_i ()
+Mudela_time_signature::den_i ()
{
return den_i_;
}
int
-Mudela_meter::num_i ()
+Mudela_time_signature::num_i ()
{
return num_i_;
}
String
-Mudela_meter::str ()
+Mudela_time_signature::str ()
{
- String str = "\\meter "
- + String (num_i_) + "/" + String (1 << den_i_)
- + ";\n";
+ String str = "\\time "
+ + to_str (num_i_) + "/" + to_str (1 << den_i_)
+ + ";\n";
return str;
}
// statics Mudela_note
/*
- this switch can be used to write simple plets like
- c4*2/3
- as
- \plet 2/3; c4 \plet 1/1;
+ this switch can be used to write simple plets like
+ c4*2/3
+ as
+ \plet 2/3; c4 \plet 1/1;
*/
bool const Mudela_note::simple_plet_b_s = true;
-Mudela_note::Mudela_note (Mudela_column* mudela_column_l, int channel_i, int pitch_i, int dyn_i)
+Mudela_note::Mudela_note (Mudela_column* mudela_column_l,
+ int channel_i, int pitch_i, int dyn_i)
: Mudela_item (mudela_column_l)
{
// junk dynamics
@@ -186,7 +186,7 @@ Mudela_note::str ()
{
Duration dur = duration ();
if (dur.durlog_i_ < -10)
- return "";
+ return "";
String name_str
= mudela_column_l_->mudela_score_l_->mudela_key_l_->notename_str (pitch_i_);
@@ -197,10 +197,10 @@ Mudela_note::str ()
String str;
//ugh
if (dur.plet_b ())
- str += String ("\\[")
- + String_convert::i2dec_str (dur.plet_.iso_i_, 0, 0)
- + "/"
- + String_convert::i2dec_str (dur.plet_.type_i_, 0, 0);
+ str += String ("\\[")
+ + String_convert::i2dec_str (dur.plet_.iso_i_, 0, 0)
+ + "/"
+ + String_convert::i2dec_str (dur.plet_.type_i_, 0, 0);
str += name_str;
@@ -209,12 +209,12 @@ Mudela_note::str ()
str += Duration_convert::dur2_str (tmp);
if (dur.plet_b ())
- str += String (" \\]");
+ str += String (" \\]");
/*
- note of zero duration is nonsense,
- but let's output anyway for convenient debugging
- */
+ note of zero duration is nonsense,
+ but let's output anyway for convenient debugging
+ */
if (!duration_mom ())
return String ("\n% ") + str + "\n";
@@ -230,7 +230,7 @@ Mudela_skip::Mudela_skip (Mudela_column* mudela_column_l, Moment skip_mom)
Duration
Mudela_skip::duration ()
{
- return Duration_convert::mom2_dur (mom_);
+ return Duration_convert::mom2_dur (mom_);
}
Moment
@@ -243,11 +243,11 @@ String
Mudela_skip::str ()
{
if (!mom_)
- return String ("");
+ return String ("");
Duration dur = duration ();
if (dur.durlog_i_<-10)
- return "";
+ return "";
String str = "\\skip ";
str += Duration_convert::dur2_str (dur) + "; ";
@@ -256,17 +256,17 @@ Mudela_skip::str ()
}
Mudela_tempo::Mudela_tempo (int useconds_per_4_i)
- : Mudela_item (0)
+ : Mudela_item (0)
{
useconds_per_4_i_ = useconds_per_4_i;
- seconds_per_1_f_ = (Real)useconds_per_4_i_ * 4 / 1e6;
+ seconds_per_1_mom_ = Moment(useconds_per_4_i_ *4, 1e6);
}
String
Mudela_tempo::str ()
{
String str = "\\tempo 4=";
- str += String (get_tempo_i (Moment (1, 4)));
+ str += to_str (get_tempo_i (Moment (1, 4)));
str += ";\n";
return str;
}
@@ -280,11 +280,13 @@ Mudela_tempo::useconds_per_4_i ()
int
Mudela_tempo::get_tempo_i (Moment moment)
{
- return Moment (60) / moment / Moment (seconds_per_1_f_);
+ Moment m1 = Moment (60) / moment;
+ Moment m2 = seconds_per_1_mom_;
+ return m1 / m2;
}
Mudela_text::Mudela_text (Mudela_text::Type type, String text_str)
- : Mudela_item (0)
+ : Mudela_item (0)
{
type_ = type;
text_str_ = text_str;
@@ -294,8 +296,8 @@ String
Mudela_text::str ()
{
if (!text_str_.length_i ()
- || (text_str_.length_i () != (int)strlen (text_str_.ch_C ())))
- return "";
+ || (text_str_.length_i () != (int)strlen (text_str_.ch_C ())))
+ return "";
return "% " + text_str_ + "\n";
}
diff --git a/mi2mu/mudela-score.cc b/mi2mu/mudela-score.cc
index 3f8573c96f..92329cd74d 100644
--- a/mi2mu/mudela-score.cc
+++ b/mi2mu/mudela-score.cc
@@ -1,7 +1,7 @@
//
// mudela-score.cc -- implement Mudela_score
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#include <assert.h>
#include "moment.hh"
@@ -19,7 +19,7 @@
#include "cursor.tcc"
//static Mudela_key key_c (0, 0);
-static Mudela_meter meter_4 (4, 2, 24, 8);
+static Mudela_time_signature time_sig_4 (4, 2, 24, 8);
// useconds per 4: 250000 === 60 4 per minute
static Mudela_tempo tempo_60 (1000000);
@@ -31,7 +31,7 @@ Mudela_score::Mudela_score (int format_i, int tracks_i, int tempo_i)
column_l_array_.push (new Mudela_column (this, Moment (0)));
// mudela_key_l_ = &key_c;
mudela_key_l_ = 0;
- mudela_meter_l_ = &meter_4;
+ mudela_time_signature_l_ = &time_sig_4;
mudela_tempo_l_ = &tempo_60;
}
@@ -91,21 +91,29 @@ Mudela_score::find_column_l (Moment mom)
Mudela_column*
Mudela_score::get_column_l (Moment mom)
{
- if ( column_l_array_ [column_l_array_.size() - 1]->at_mom () > mom )
+ int i;
+ Mudela_column *c=0;
+ for (i=column_l_array_.size() - 1; !c && i >=0; i--)
{
- error (_("ugh"));
- exit (1);
+ if (column_l_array_ [i]->at_mom () == mom )
+ c = column_l_array_[i];
+ else if (column_l_array_[i]->at_mom () < mom)
+ break;
+ }
+ if (!c)
+ {
+ c = new Mudela_column (this, mom);
+ column_l_array_.insert (c, i+1);
}
- if ( column_l_array_[column_l_array_.size() - 1]->at_mom () < mom )
- column_l_array_.push (new Mudela_column (this, mom));
- return column_l_array_ [column_l_array_.size() - 1];
+ assert (c->at_mom () == mom);
+ return c;
}
void
Mudela_score::output (String filename_str)
{
- LOGOUT(NORMAL_ver) << _("Lily output to ") << filename_str << " ..." << endl;
+ LOGOUT(NORMAL_ver) << _f ("Lily output to %s...", filename_str) << endl;
// ugh, ugly midi type 1 fix
if ( (mudela_staff_p_list_.size() == 1) && !mudela_staff_p_list_.top()->number_i_)
@@ -115,23 +123,22 @@ Mudela_score::output (String filename_str)
Mudela_stream mudela_stream (filename_str);
for (PCursor<Mudela_staff*> i (mudela_staff_p_list_); i.ok(); i++)
{
- LOGOUT(NORMAL_ver) << _("track ") << track_i++ << ": " << flush;
+ LOGOUT(NORMAL_ver) << _ ("track ") << track_i++ << ": " << flush;
i->output (mudela_stream);
- mudela_stream << "\n";
+ mudela_stream << '\n';
LOGOUT(NORMAL_ver) << endl;
}
mudela_stream << "\\score{\n";
if (mudela_staff_p_list_.size() > 1)
- mudela_stream << "\\multi 3 < \\type Staff\n";
+ mudela_stream << "< \n";
for (PCursor<Mudela_staff*> i (mudela_staff_p_list_); i.ok(); i++)
{
if ( (mudela_staff_p_list_.size() != 1)
&& (i == mudela_staff_p_list_.top()))
continue;
- mudela_stream << "< \\melodic{ ";
- mudela_stream << "\\$" << i->id_str();
- mudela_stream << " } >\n";
+ mudela_stream << "\\type Staff = \"" << i->id_str() << "\" ";
+ mudela_stream << "\\$" << i->id_str() << "\n";
}
if (mudela_staff_p_list_.size() > 1)
mudela_stream << ">\n";
@@ -149,22 +156,22 @@ Mudela_score::output (String filename_str)
void
Mudela_score::process()
{
- LOGOUT(NORMAL_ver) << _("\nProcessing...") << endl;
+ LOGOUT(NORMAL_ver) << '\n' << _ ("Processing...") << endl;
LOGOUT(DEBUG_ver) << "columns\n";
// for (PCursor<Mudela_column*> i (mudela_column_p_list_); i.ok(); i++)
- // LOGOUT(DEBUG_ver) << "At: " << i->at_mom() << "\n";
+ // LOGOUT(DEBUG_ver) << "At: " << i->at_mom() << '\n';
settle_columns();
filter_tempo();
quantify_columns();
quantify_durations();
- LOGOUT(NORMAL_ver) << _("\nCreating voices...") << endl;
+ LOGOUT(NORMAL_ver) << '\n' << _ ("Creating voices...") << endl;
int track_i = 0;
for (PCursor<Mudela_staff*> i (mudela_staff_p_list_); i.ok(); i++)
{
- LOGOUT(NORMAL_ver) << _("track ") << track_i++ << ": " << flush;
+ LOGOUT(NORMAL_ver) << _ ("track ") << track_i++ << ": " << flush;
i->process();
LOGOUT(NORMAL_ver) << endl;
}
@@ -173,7 +180,7 @@ Mudela_score::process()
void
Mudela_score::filter_tempo()
{
- LOGOUT(NORMAL_ver) << _("\nNOT Filtering tempo...") << endl;
+ LOGOUT(NORMAL_ver) << '\n' << _ ("NOT Filtering tempo...") << endl;
}
void
@@ -182,14 +189,14 @@ Mudela_score::quantify_columns()
// ugh
if (Duration_convert::no_quantify_b_s)
{
- LOGOUT(NORMAL_ver) << _("\nNOT Quantifying columns...") << endl;
+ LOGOUT(NORMAL_ver) << '\n' << _("NOT Quantifying columns...") << endl;
return;
}
- LOGOUT(NORMAL_ver) << _("\nQuantifying columns...") << endl;
+ LOGOUT(NORMAL_ver) << '\n' << _("Quantifying columns...") << endl;
int current_bar_i = 0;
- Moment bar_mom = mudela_meter_l_->bar_mom();
+ Moment bar_mom = mudela_time_signature_l_->bar_mom();
int n = 5 >? Duration_convert::no_smaller_than_i_s;
n = Duration_convert::type2_i (n);
@@ -203,7 +210,7 @@ Mudela_score::quantify_columns()
int bar_i = (int) (column_l_array_ [i]->at_mom () / bar_mom) + 1;
if (bar_i > current_bar_i)
{
- LOGOUT (NORMAL_ver) << '[' << bar_i << ']' << flush;
+ LOGOUT (NORMAL_ver) << "[" << bar_i << "]" << flush;
current_bar_i = bar_i;
}
}
@@ -213,15 +220,15 @@ Mudela_score::quantify_columns()
void
Mudela_score::quantify_durations()
{
- // LOGOUT(NORMAL_ver) << "\nQuantifying durations..." << endl;
+ // LOGOUT(NORMAL_ver) << '\n' << "Quantifying durations..." << endl;
}
void
Mudela_score::settle_columns()
{
- // LOGOUT(NORMAL_ver) << "\nNOT Settling columns..." << endl;
+ // LOGOUT(NORMAL_ver) << '\n' << "NOT Settling columns..." << endl;
// return;
- LOGOUT(NORMAL_ver) << _("\nSettling columns...") << endl;
+ LOGOUT(NORMAL_ver) << '\n' << _("Settling columns...") << endl;
#if 0
assert (!column_l_array_.size());
diff --git a/mi2mu/mudela-staff.cc b/mi2mu/mudela-staff.cc
index 67fcaf4ab2..d6995e532a 100644
--- a/mi2mu/mudela-staff.cc
+++ b/mi2mu/mudela-staff.cc
@@ -1,7 +1,7 @@
//
// mudela-staff.cc -- implement Mudela_staff
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#include <assert.h>
#include <ctype.h>
@@ -26,7 +26,7 @@ Mudela_staff::Mudela_staff (int number_i, String copyright_str, String track_nam
instrument_str_ = instrument_str;
name_str_ = track_name_str;
mudela_key_l_ = 0;
- mudela_meter_l_ = 0;
+ mudela_time_signature_l_ = 0;
mudela_tempo_l_ = 0;
}
@@ -68,7 +68,7 @@ Mudela_staff::eat_voice (Link_list<Mudela_item*>& items)
}
else if (i.ok())
i++;
- LOGOUT(DEBUG_ver) << "mom: " << mom.str () << "\n";
+ LOGOUT(DEBUG_ver) << "mom: " << mom.str () << '\n';
}
}
@@ -88,7 +88,7 @@ Mudela_staff::name_str()
{
if (name_str_.length_i())
return name_str_;
- return String ("track") + String (number_i_);
+ return String ("track") + to_str (number_i_);
}
void
@@ -96,12 +96,12 @@ Mudela_staff::output (Mudela_stream& mudela_stream_r)
{
mudela_stream_r << "$" << id_str() << " = \\melodic";
mudela_stream_r << (mudela_voice_p_list_.size() > 1 ? "<" : "{");
- mudela_stream_r << "\n";
- mudela_stream_r << _("% midi copyright:") << copyright_str_ << "\n";
- mudela_stream_r << _("% instrument:") << instrument_str_ << "\n";
+ mudela_stream_r << '\n';
+ mudela_stream_r << _ ("% midi copyright:") << copyright_str_ << '\n';
+ mudela_stream_r << _ ("% instrument:") << instrument_str_ << '\n';
// don't use last duration mode
- mudela_stream_r << "\\duration 4;\n";
+ // mudela_stream_r << "\\duration 4;\n";
if (mudela_voice_p_list_.size() == 1)
mudela_voice_p_list_.top()->output (mudela_stream_r);
else
@@ -113,13 +113,13 @@ Mudela_staff::output (Mudela_stream& mudela_stream_r)
}
mudela_stream_r << (mudela_voice_p_list_.size() > 1 ? "\n>" : "\n}");
- mudela_stream_r << " % " << name_str() << "\n";
+ mudela_stream_r << " % " << name_str() << '\n';
}
void
Mudela_staff::output_mudela_begin_bar (Mudela_stream& mudela_stream_r, Moment now_mom, int bar_i)
{
- Moment bar_mom = mudela_meter_l_->bar_mom();
+ Moment bar_mom = mudela_time_signature_l_->bar_mom();
Moment into_bar_mom = now_mom - Moment (bar_i - 1) * bar_mom;
if (bar_i > 1)
{
@@ -129,7 +129,7 @@ Mudela_staff::output_mudela_begin_bar (Mudela_stream& mudela_stream_r, Moment no
mudela_stream_r << "% " << String_convert::i2dec_str (bar_i, 0, ' ');
if (into_bar_mom)
mudela_stream_r << ":" << Duration_convert::dur2_str (Duration_convert::mom2_dur (into_bar_mom));
- mudela_stream_r << "\n";
+ mudela_stream_r << '\n';
}
@@ -137,7 +137,7 @@ Mudela_staff::output_mudela_begin_bar (Mudela_stream& mudela_stream_r, Moment no
void
Mudela_staff::output_mudela_rest (Mudela_stream& mudela_stream_r, Moment begin_mom, Moment end_mom)
{
- Moment bar_mom = mudela_meter_l_->bar_mom();
+ Moment bar_mom = mudela_time_signature_l_->bar_mom();
Moment now_mom = begin_mom;
int begin_bar_i = (int) (now_mom / bar_mom) + 1;
@@ -229,7 +229,7 @@ Mudela_staff::process()
assert (mudela_score_l_g);
mudela_key_l_ = mudela_score_l_g->mudela_key_l_;
- mudela_meter_l_ = mudela_score_l_g->mudela_meter_l_;
+ mudela_time_signature_l_ = mudela_score_l_g->mudela_time_signature_l_;
mudela_tempo_l_ = mudela_score_l_g->mudela_tempo_l_;
Link_list<Mudela_item*> items;
diff --git a/mi2mu/mudela-stream.cc b/mi2mu/mudela-stream.cc
index 5fa339cb66..0f5ab11b8f 100644
--- a/mi2mu/mudela-stream.cc
+++ b/mi2mu/mudela-stream.cc
@@ -3,7 +3,7 @@
//
// source file of the LilyPond music typesetter
//
-// (c) 1997--1998, 1998 Jan Nieuwenhuizen <jan@digicash.com>
+// (c) 1997--1998, 1998 Jan Nieuwenhuizen <janneke@gnu.org>
#include <assert.h>
#include <time.h>
@@ -11,6 +11,7 @@
#include "mi2mu-global.hh"
#include "mudela-item.hh"
#include "mudela-stream.hh"
+#include "string-convert.hh"
extern String filename_str_g;
@@ -33,20 +34,20 @@ Mudela_stream::~Mudela_stream()
{
delete os_p_;
if (indent_i_)
- warning (_("lily indent level: ") + String (indent_i_));
+ warning (_f ("lily indent level: %d", indent_i_));
}
Mudela_stream&
-Mudela_stream::operator << (String str)
+Mudela_stream::operator << (Scalar s)
{
static String word_sep_str = "{} \t\n";
- while (str.length_i())
+ while (s.length_i())
{
- int i = str.index_any_i (word_sep_str) + 1;
+ int i = s.index_any_i (word_sep_str) + 1;
if (!i)
- i = str.length_i();
- String word = str.left_str (i);
- str = str.cut (i, str.length_i());
+ i = s.length_i();
+ String word = s.left_str (i);
+ s = s.cut_str (i, s.length_i());
output_wrapped (word);
}
return *this;
@@ -63,7 +64,7 @@ Mudela_stream::operator << (Mudela_item& mudela_item_r)
void
Mudela_stream::handle_pending_indent()
{
- *os_p_ << String ('\t', pending_indent_i_);
+ *os_p_ << String_convert::char_str ('\t', pending_indent_i_);
column_i_ += pending_indent_i_ * INDENT_i;
pending_indent_i_ = 0;
}
@@ -71,27 +72,27 @@ Mudela_stream::handle_pending_indent()
void
Mudela_stream::header()
{
- *os_p_ << _("% Creator: ");
+ *os_p_ << _ ("% Creator: ");
if (no_timestamps_b_g)
*os_p_ << "GNU LilyPond\n";
else
- *os_p_ << mi2mu_version_str() << "\n";
- *os_p_ << _("% Automatically generated");
+ *os_p_ << mi2mu_version_str() << '\n';
+ *os_p_ << _ ("% Automatically generated");
if (no_timestamps_b_g)
*os_p_ << ".\n";
else
{
- *os_p_ << _(", at ");
+ *os_p_ << _ (", at ");
time_t t (time (0));
*os_p_ << ctime (&t) << "%\n";
}
- *os_p_ << _("% from input file: ");
+ *os_p_ << _ ("% from input file: ");
// *os_p_ << midi_parser_l_g->filename_str_;
// ugh
*os_p_ << filename_str_g;
*os_p_ << "\n\n";
// ugh
- *os_p_ << "\\version \"0.1.11\";\n";
+ *os_p_ << "\\version \"1.0.0\";\n";
}
void
@@ -99,7 +100,7 @@ Mudela_stream::open()
{
os_p_ = new ofstream (filename_str_.ch_C ());
if (!*os_p_)
- error (_("can't open: `") + filename_str_ + "\'");
+ error (_f ("can't open file: `%s\'", filename_str_));
}
void
diff --git a/mi2mu/mudela-voice.cc b/mi2mu/mudela-voice.cc
index 6f91c8ff25..6f92d03f22 100644
--- a/mi2mu/mudela-voice.cc
+++ b/mi2mu/mudela-voice.cc
@@ -1,7 +1,7 @@
//
// mudela-voice.cc -- implement Mudela_voice
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#include "string-convert.hh"
#include "mi2mu-global.hh"
@@ -26,14 +26,14 @@ Moment
Mudela_voice::begin_mom()
{
return mudela_item_l_list_.size() ?
- mudela_item_l_list_.top()->at_mom() : Moment (0);
+ mudela_item_l_list_.top()->at_mom() : Moment (0);
}
Moment
Mudela_voice::end_mom()
{
return mudela_item_l_list_.size() ?
- mudela_item_l_list_.bottom()->at_mom() : Moment (0);
+ mudela_item_l_list_.bottom()->at_mom() : Moment (0);
}
static int const FAIRLY_LONG_VOICE_i = 6;
@@ -42,36 +42,36 @@ void
Mudela_voice::output (Mudela_stream& mudela_stream_r)
{
if (!mudela_item_l_list_.size())
- return;
+ return;
if (mudela_item_l_list_.size() > FAIRLY_LONG_VOICE_i)
- mudela_stream_r << "\n";
+ mudela_stream_r << '\n';
int current_bar_i = 0;
- Moment bar_mom = mudela_staff_l_->mudela_meter_l_->bar_mom();
+ Moment bar_mom = mudela_staff_l_->mudela_time_signature_l_->bar_mom();
for (PCursor<Mudela_item*> i (mudela_item_l_list_); i.ok(); i++)
{
- Moment at_mom = i->mudela_column_l_->at_mom();
- int bar_i = (int) (at_mom / bar_mom) + 1;
- if (bar_i > current_bar_i)
- {
- if (current_bar_i)
- {
- if (at_mom == Moment (bar_i - 1) * bar_mom)
- mudela_stream_r << "|";
- mudela_stream_r << "\n% ";
- mudela_stream_r << String_convert::i2dec_str (bar_i, 0, ' ');
- mudela_stream_r << "\n";
- }
- LOGOUT(NORMAL_ver) << '[' << bar_i << ']' << flush;
- current_bar_i = bar_i;
- }
+ Moment at_mom = i->mudela_column_l_->at_mom();
+ int bar_i = (int) (at_mom / bar_mom) + 1;
+ if (bar_i > current_bar_i)
+ {
+ if (current_bar_i)
+ {
+ if (at_mom == Moment (bar_i - 1) * bar_mom)
+ mudela_stream_r << "|";
+ mudela_stream_r << "\n% ";
+ mudela_stream_r << String_convert::i2dec_str (bar_i, 0, ' ');
+ mudela_stream_r << '\n';
+ }
+ LOGOUT(NORMAL_ver) << "[" << bar_i << "]" << flush;
+ current_bar_i = bar_i;
+ }
- mudela_stream_r << **i;
+ mudela_stream_r << **i;
}
if (mudela_item_l_list_.size() > FAIRLY_LONG_VOICE_i)
- mudela_stream_r << "\n";
+ mudela_stream_r << '\n';
}
diff --git a/mi2mu/out/dummy.dep b/mi2mu/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/mi2mu/out/dummy.dep
+++ /dev/null
diff --git a/mi2mu/template9.cc b/mi2mu/template9.cc
index 06d53f9ace..7d99a4b920 100644
--- a/mi2mu/template9.cc
+++ b/mi2mu/template9.cc
@@ -4,7 +4,7 @@
// liblily.a(template.o): In function `GLOBAL_$I$template.cc':
// template.cc:28: multiple definition of `global constructors keyed to template.cc'
//
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#include "proto.hh"
#include "list.hh"
diff --git a/mi2mu/version.cc b/mi2mu/version.cc
index 57299cd358..e9f2ed4e69 100644
--- a/mi2mu/version.cc
+++ b/mi2mu/version.cc
@@ -7,8 +7,7 @@ const char * mi2mu_version_sz();
String
mi2mu_version_str()
{
- return String (mi2mu_version_sz())
- + "/" + flower_version_sz()
- + " of " + __DATE__ + " " + __TIME__;
+ return String (mi2mu_version_sz ())
+ + " " + _("of") + " " + __DATE__ + " " + __TIME__;
}
diff --git a/mudela-mode.el b/mudela-mode.el
index f2c879d428..87a08060b1 100644
--- a/mudela-mode.el
+++ b/mudela-mode.el
@@ -32,14 +32,15 @@
(defconst mudela-font-lock-keywords
(let* ((keywords '(
- "accepts" "break" "bar" "cadenza" "clear" "clef" "cm" "consists" "contains"
- "duration" "absdynamic" "in" "translator" "type" "lyric" "key"
- "maininput" "melodic" "musical_pitch" "meter" "midi" "mm" "multi" "header"
- "notenames" "octave" "output" "partial" "paper" "plet" "property" "pt" "shape"
- "include"
- "score" "script" "skip" "staff" "table" "spandynamic" "symboltables"
- "tempo" "texid" "textstyle" "transpose" "version" "grouping"
- ))
+ "accepts" "accidentals" "break" "bar" "cadenza" "clear"
+ "clef" "cm" "consists" "contains" "duration" "absdynamic"
+ "in" "translator" "type" "lyric" "key" "maininput" "melodic"
+ "musical_pitch" "meter" "midi" "mm" "multi" "header"
+ "notenames" "octave" "output" "partial" "paper" "plet"
+ "property" "pt" "shape" "relative" "include" "score"
+ "script" "skip" "staff" "table" "spandynamic" "symboltables"
+ "tempo" "texid" "textstyle" "transpose" "version" "grouping"
+ ))
(kwregex (mapconcat (lambda (x) (concat "\\\\" x)) keywords "\\|")))
(list
@@ -198,7 +199,7 @@
(defconst mu-version "0.0.1"
"`mudela-mode' version number.")
-(defconst mu-help-address "hanwen@cs.ruu.nl"
+(defconst mu-help-address "hanwen@cs.uu.nl"
"Address accepting submission of bug reports.")
(defun mu-version ()
diff --git a/mutopia/Coriolan/Makefile b/mutopia/Coriolan/Makefile
index 46c807edd6..dc9e90a472 100644
--- a/mutopia/Coriolan/Makefile
+++ b/mutopia/Coriolan/Makefile
@@ -1,12 +1,13 @@
# mutopia/Makefile
-# subdir level:
-#
depth = ../..
-#
-# generic stuff/Makefile
-#
-include ./$(depth)/make/Mutopia.make
-#examples=coriolan oboi-part
-include $(depth)/make/WWW.make
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
+
+# do Coriolan if you have plenty RAM / CPU
+# examples=coriolan oboi-part viola-part
+examples= oboi-part viola-part
+
+include $(stepdir)/WWW.make
+
diff --git a/mutopia/Coriolan/bassi-part.ly b/mutopia/Coriolan/bassi-part.ly
new file mode 100644
index 0000000000..405f6d5169
--- /dev/null
+++ b/mutopia/Coriolan/bassi-part.ly
@@ -0,0 +1,32 @@
+\header{
+filename = "bassi-part.ly";
+% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description = "";
+composer = "Ludwig van Beethoven (1770-1827)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "violoncello.ly"
+\include "contrabasso.ly"
+
+$bassi = \type GrandStaff = bassi_group <
+ \$violoncello_staff
+ \$contrabasso_staff
+>
+
+
+$bassi = \type GrandStaff = bassi_group <
+ \$violoncello_staff
+ \$contrabasso_staff
+>
+
+\score{
+ \$bassi
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
+}
+
diff --git a/mutopia/Coriolan/clarinetti-part.ly b/mutopia/Coriolan/clarinetti-part.ly
index ff5f0c7282..0476375b81 100644
--- a/mutopia/Coriolan/clarinetti-part.ly
+++ b/mutopia/Coriolan/clarinetti-part.ly
@@ -1,19 +1,19 @@
-\header{
+header{
filename = "clarinetti-part.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
\include "global.ly"
\include "clarinetti.ly"
-\include "part-paper.ly"
\score{
\$clarinetti_staff
- \paper{}
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
}
diff --git a/mutopia/Coriolan/clarinetti.ly b/mutopia/Coriolan/clarinetti.ly
index 217842c7a1..08b129c6ed 100644
--- a/mutopia/Coriolan/clarinetti.ly
+++ b/mutopia/Coriolan/clarinetti.ly
@@ -2,27 +2,30 @@
filename = "clarinetti.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
\include "clarinetto-1.ly"
\include "clarinetto-2.ly"
$clarinetti_staff = \type Staff = clarinetti <
- \property Staff.instrument = "clarinet"
- \melodic<
-% ugh, key doesn't transpose along
-% \global
- \meter 4/4;
- \key bes;
- \transpose d \$clarinetto1
- \transpose d \$clarinetto2
+ \property Staff.midi_instrument = "clarinet"
+ \property Staff.instrument = "2 Clarinetti (B\\textflat)"
+ \property Staff.instr = "Cl. (B\\textflat)"
+ % urg: can't; only My_midi_lexer:<non-static> () parses pitch?
+ %\property Staff.transposing = "bes"
+ \property Staff.transposing = -3
+ \melodic \type Voice=one <
+ \time 4/4;
+ \key F;
+ \$clarinetto1
+ \$clarinetto2
>
>
diff --git a/mutopia/Coriolan/clarinetto-1.ly b/mutopia/Coriolan/clarinetto-1.ly
index d672bd826c..2eb3869b1a 100644
--- a/mutopia/Coriolan/clarinetto-1.ly
+++ b/mutopia/Coriolan/clarinetto-1.ly
@@ -2,22 +2,21 @@
filename = "clarinetto-1.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
-clarinetto1 = \melodic{
- \octave c';
- R1 *2 | c'4-.\ff r r2 | R1 *3 |
- d'4-. r r2 | R1 *3 |
- es'4-. r r2 | r1 |
- es'4-. r r2 | d'4-. r r2 |
- R1 *4 |
- as2\p_"\ \ \ cresc." ( g | )fis2. g4-.\f |
+clarinetto1 = \melodic \relative c {
+ R1 *2 | d''4-.\ff r r2 | R1 *3 | e4-. r r2 | R1 *3 |
+ f4-. r r2 | r1 | f4-. r r2 | e4-. r r2 | R1 *4 |
+ bes'2\p_"\ \ \ cresc." ( a |
+ %20
+ )gis2. a4-.\f | R1*13 | d1\ff % ~ |
+ %35
}
diff --git a/mutopia/Coriolan/clarinetto-2.ly b/mutopia/Coriolan/clarinetto-2.ly
index 285d7497ca..759cb2995f 100644
--- a/mutopia/Coriolan/clarinetto-2.ly
+++ b/mutopia/Coriolan/clarinetto-2.ly
@@ -2,29 +2,20 @@
filename = "clarinetto-2.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
-clarinetto2 = \melodic{
- \octave c';
-% koor: clarinetto-part.ly
-% lilypond: ../../current/lily/dynamic-grav.cc:58: void Dynamic_engraver::do_process_requests(): Assertion `!dynamic_p_' failed.
-% Aborted (core dumped)
-
-% huh?
-
-% r1 | r1 | as4-.\ff r r2 | r1 |
- R1 *2 | as4-. r r2 | R1 *3 |
- b4-. r r2 | R1 *3 |
- c'4-. r r2 | r1 |
- c'4-. r r2 | b4-. r r2 |
- R1 *5 |
- r2 r4 b,4-. |
+clarinetto2 = \melodic \relative c {
+ R1*2 bes''4-.\ff r r2 | R1*3 | cis4-. r r2 | R1 *3 |
+ d4-. r r2 | r1 | d4-. r r2 | cis4-. r r2 | R1 *5 |
+ %20
+ r2 r4 cis,4-. | R1*13 | g1\ff % ~ |
+ %35
}
diff --git a/mutopia/Coriolan/contrabasso-part.ly b/mutopia/Coriolan/contrabasso-part.ly
new file mode 100644
index 0000000000..e3cd408778
--- /dev/null
+++ b/mutopia/Coriolan/contrabasso-part.ly
@@ -0,0 +1,20 @@
+\header{
+filename = "contrabasso-part.ly";
+% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description = "";
+composer = "Ludwig van Beethoven (1770-1827)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "contrabasso.ly"
+
+\score{
+ \$contrabasso_staff
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
+}
+
diff --git a/mutopia/Coriolan/contrabasso.ly b/mutopia/Coriolan/contrabasso.ly
index c1229deec5..71f4ad500d 100644
--- a/mutopia/Coriolan/contrabasso.ly
+++ b/mutopia/Coriolan/contrabasso.ly
@@ -2,30 +2,151 @@
filename = "contrabasso.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
-contrabasso = \melodic{
- \octave c;
- c1\ff ~ | c | f,4-. r r2 | r1 |
- c1\ff ~ | c | f,4-. r r2 | r1 |
- c1\ff ~ | c | fis,4-. r r2 | r1 |
- g,4-. r r2 | g,4-. r r2 |
- c4\p r4 r2 | c4 r4 r2 | c4 r4 r2 | r1 |
- c'4.-"cresc." c'8 bes4. bes8 | as4. as8 g4\f r4 |
+contrabasso = \melodic \relative c {
+% \translator Staff=violoncello
+ \skip 1*21;
+% \translator Staff=contrabasso
+ bes4\p r4 r2 |
+ bes4 r4 r2 |
+ bes4 r4 r2 |
+ %25
+ R1 |
+ \skip 1*14;
+ fis2\sf r |
+ fis2\sf r |
+ f!2\sf r |
+ f2\sf r |
+ e2\sf r |
+ %45
+ es!2\sf r |
+ des2. es4\sf(|
+ )d2. es4\sf(|
+ )d2. es4\sf(|
+ )d2. es4\sf(|
+ % 50
+ )d4 r r2 |
+ R1
+ es'4\p r r r8 es(|
+ )as,4 r r r8 as(|
+ )g4 r r r8 g(|
+ )d'4 r r r8 d(|
+ )es4-"cresc." r r r8 es(|
+ )as,4 r r r8 as(|
+ )g4 r r r8 g(|
+ )d'4 r r r8 d(|
+ %60
+ )es4 r r r8 es(|
+ )as,4 r r r8 as(|
+ )g2\ff f | e c' |
+ f,4\p r r r8 f(|
+ %65
+ )bes4 r r r8 bes(|
+ )as4 r r r8 as(|
+ )e4 r r r8 e(|
+ )f4-"cresc." r r r8 f(|
+ )bes4 r r r8 bes(|
+ %70
+ )as2\ff g | fis d' |
+ g,4\p-"cresc." r r r8 g(|
+ )c4 r r r8 c(|
+ % )<b1\sf\> { s2 s4 \!s8}> |
+ )b1 |
+ %75
+ \skip 1*3; |
+ d4\pp r d r | d r d r | d r d-"cresc." r |
+ d r d r | d r d r | d r d r |
+ \skip 1*8; |
+ c4 r r2 | c4 r r2 | c4 r r2 | c4 r r2 |
+ \skip 1*6; |
+ g4\p r r2 | r2 r4 r8 fis\f |
+ g4 r r2 | r2 r4 r8 fis\f |
+ g4 r r2 |
+ R1*3 |
+ \skip 1*8; | g4\p r r2 |
+ % urg, this is *rest*, not skip:
+ % need own staff for rests, mustn't collapse to one cello staff!
+ %120 - 1
+ R1*21 |
+ % play with cello
+ \skip 1*4; |
+ f'4\p r r2 |
+ R1*3 |
+ \skip 1*10; |
+ b,2\sf r | b2\sf r | R1*3 |
+ bes2\ff r | bes2\sf r | R1*2 |
+ r2 r4 bes\ff( |
+ )as2. bes4\sf(|
+ )as2. bes4\sf(|
+ )as2. bes4\sf(|
+ )as2. c4\sf(|
+ )b2. c4\sf(|
+ )b2. c4\sf(|
+ )b2. c4\sf(|
+ )b2. c4\sf(|
+ )b4 r r2 | R1 |
+ c4\p r r r8 c(|
+ )f,4 r r r8 f(|
+ %180
+ )e4 r r r8 e(|
+ )b'4 r r r8 b(|
+ )c4-"cresc." r r r8 c(|
+ )f,4 r r r8 f(|
+ )e4 r r r8 e'(|
+ %185
+ )b4 r r r8 b(|
+ )c4 r r r8 c(|
+ )f,4 r r r8 f(|
+ )e2\ff d' | cis a |
+ %190
+ d4\p r r r8 d(|
+ )g,4 r r r8 g(|
+ )f4 r r r8 f(|
+ )cis'4 r r r8 cis(|
+ )d4-"cresc." r r r8 d(|
+ %195
+ )g,4 r r r8 g( |
+ )d2\ff e' | dis b |
+ e4\p r r r8 e(|
+ % )a4\< r r r8 a(|
+ %200
+ % g1 | <f {s2 s4 \!s8}> |
+ )a4 r r r8 a(|
+ %200
+ )g1 | f |
+ \skip 1*18; |
+ %220
+ f4 r r2 | f'4 r r2 | f4 r r2 | f4 r r2 |
+ \skip 1*6; |
+ c,4\p r r2 | r2 r4 r8 b\f |
+ c4 r r2 | r2 r4 r8 b\f |
+ c4 r r2 |
+ R1*3 |
+ \skip 1*59; |
+ r2 r4 f, | c' r r2 |
+ r2 r4 f, | c' r r2 | R1 |
+ f,4 r r2 | R1 |
+ c'4 r r2 | R1 |
+ f,4 r r2 | R1*3 | c'4\pp r r2 | R1 |
+ c4 r r2 |
+ c4 r r2 |
+ c4 r r2 |
}
$contrabasso_staff = \type Staff = contrabasso <
- \property Staff.instrument = "contrabass"
+ \property Staff.midi_instrument = "contrabass"
+ \property Staff.instrument = "Contrabasso"
+ \property Staff.instr = "Cb."
\clef "bass";
- \melodic<
- \global;
+ \melodic \type Voice=one<
+ \global
\$contrabasso
>
>
+
diff --git a/mutopia/Coriolan/coriolan.ly b/mutopia/Coriolan/coriolan.ly
index 0d584d34c3..7d11fd68a1 100644
--- a/mutopia/Coriolan/coriolan.ly
+++ b/mutopia/Coriolan/coriolan.ly
@@ -2,14 +2,12 @@
filename = "coriolan.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
\include "global.ly"
@@ -21,55 +19,64 @@ copyright = "public domain";
\include "oboi.ly"
\include "timpani.ly"
\include "trombe.ly"
-\include "viola.ly"
+\include "viola-1.ly"
+\include "viola-2.ly"
\include "violino-1.ly"
\include "violino-2.ly"
\include "violoncello.ly"
-legno = \type Staff_group = legno_group <
+legno = \type StaffGroup = legno_group <
\$flauti_staff
\$oboi_staff
\$clarinetti_staff
\$fagotti_staff
>
-koper = \type Staff_group = koper_group <
+koper = \type StaffGroup = koper_group <
\$corni_staff
\$trombe_staff
>
-$timpani_g = \type Staff_group = timpani_group <
+$timpani_g = \type StaffGroup = timpani_group <
\$timpani_staff
+ \type Staff = urgtimpany \melodic{ \skip 1*34; }
>
-$violini = \type Grand_staff = violini_group <
+$violini = \type GrandStaff = violini_group <
\$violino1_staff
\$violino2_staff
>
-$bassi = \type Grand_staff = violine_group <
+$violi = \type GrandStaff = violi_group <
+ \$viola1_staff
+ \$viola2_staff
+>
+
+$bassi = \type GrandStaff = bassi_group <
\$violoncello_staff
\$contrabasso_staff
>
-strijkers = \type Staff_group = strijkers_group <
+strijkers = \type StaffGroup = strijkers_group <
\$violini
- \$viola_staff
+ \$violi
\$bassi
>
+default_paper = \include "score-paper.ly"
\score{
<
- \textstyle "italic";
+ \property Score . textstyle = "italic"
\$legno
\$koper
\$timpani_g
\$strijkers
>
- \paper{}
- \midi{
- \tempo 4 = 160;
+ \paper{
+ % Give hara-kiri something to do...
+ linewidth = 130.0\mm;
}
+ \midi{ \tempo 4 = 160; }
}
diff --git a/mutopia/Coriolan/corni-part.ly b/mutopia/Coriolan/corni-part.ly
index 0a2eee6464..1f5fc1d3d1 100644
--- a/mutopia/Coriolan/corni-part.ly
+++ b/mutopia/Coriolan/corni-part.ly
@@ -2,20 +2,18 @@
filename = "corni-part.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
\include "global.ly"
\include "corni.ly"
-\include "part-paper.ly"
\score{
\$corni_staff
- \paper{}
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
}
diff --git a/mutopia/Coriolan/corni.ly b/mutopia/Coriolan/corni.ly
index 6d3ebdcfd3..b2f3c39fc1 100644
--- a/mutopia/Coriolan/corni.ly
+++ b/mutopia/Coriolan/corni.ly
@@ -2,26 +2,29 @@
filename = "corni.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
\include "corno-1.ly"
\include "corno-2.ly"
$corni_staff = \type Staff = corni <
- \property Staff.instrument = "french horn"
- \melodic<
-% ugh, key doesn't transpose along
-% \global
- \meter 4/4;
- \transpose a, \$corno1
- \transpose a, \$corno2
+ \property Staff.midi_instrument = "french horn"
+ \property Staff.instrument = "2 Corni (E\\textflat)"
+ \property Staff.instr = "Cor. (E\\textflat)"
+ % urg: can't; only My_midi_lexer:<non-static> () parses pitch?
+ %\property Staff.transposing = "es"
+ \property Staff.transposing = 3
+ \melodic \type Voice=corni <
+ \time 4/4;
+ \$corno1
+ \$corno2
>
>
diff --git a/mutopia/Coriolan/corno-1.ly b/mutopia/Coriolan/corno-1.ly
index 44b587ba71..1ddbd53db7 100644
--- a/mutopia/Coriolan/corno-1.ly
+++ b/mutopia/Coriolan/corno-1.ly
@@ -2,22 +2,21 @@
filename = "corno-1.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
-corno1 = \melodic{
- \octave c';
- R1 *2 | as'4-.\ff r r2 | R1 *3 |
- as'4-. r r2 | R1 *3 |
- es'4-. r r2 | r1 |
- g'4-. r r2 | g'4-. r r2 |
- R1 *5 |
- r2 r4 g'4-.\f |
+corno1 = \melodic \relative c {
+ R1 *2 | f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
+ c4-. r r2 | r1 | e4-. r r2 | e4-. r r2 | R1 *5 |
+ %20
+ r2 r4 g4-.\f | R1*6 | r4 g-.\f r2 | R1*2 |
+ % `a 2
+ r8 f\p_"\ \ \ cresc." f2 e4 | r8 f f2 e4 |
+ f4. e8 f4. e8 | f4. e8 f4. e8 | d,1\ff % ~ |
+ %35
}
diff --git a/mutopia/Coriolan/corno-2.ly b/mutopia/Coriolan/corno-2.ly
index c3545bbe47..2a02324d51 100644
--- a/mutopia/Coriolan/corno-2.ly
+++ b/mutopia/Coriolan/corno-2.ly
@@ -2,24 +2,24 @@
filename = "corno-2.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
-corno2 = \melodic{
- \octave c';
-% koor: corno-part.ly
-% r1 | r1 | f'4-.\ff r r2 | r1 |
- R1 *2 | f'4-. r r2 | R1 *3 |
- f'4-. r r2 | R1 *3 |
- es'4-. r r2 | r1 |
- g4-. r r2 | g4-. r r2 |
- R1 *5 |
- r2 r4 g4-. |
+corno2 = \melodic \relative c {
+ R1 *2 | d''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
+ c4-. r r2 | r1 | e,4-. r r2 | e4-. r r2 | R1 *5 |
+ %20
+ r2 r4 e4-.\f | R1*6 | r4 g-.\f r2 | R1*2 |
+ % `a 2
+ % urg, yes this is a-deux, but lily doesn't know about I. / a2 yet.
+% r8 f'\p_"\ \ \ cresc." f2 e4 | r8 f f2 e4 |
+% f4. e8 f4. e8 | f4. e8 f4. e8 |
+ R1*4 |
+ d1\ff % ~ |
+ %35
}
diff --git a/mutopia/Coriolan/fagotti-part.ly b/mutopia/Coriolan/fagotti-part.ly
index a786c65738..6d13a85fde 100644
--- a/mutopia/Coriolan/fagotti-part.ly
+++ b/mutopia/Coriolan/fagotti-part.ly
@@ -2,20 +2,20 @@
filename = "fagotti-part.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
\include "global.ly"
\include "fagotti.ly"
-\include "part-paper.ly"
\score{
\$fagotti_staff
- \paper{}
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
}
diff --git a/mutopia/Coriolan/fagotti.ly b/mutopia/Coriolan/fagotti.ly
index 288ba66834..4dd33f7f59 100644
--- a/mutopia/Coriolan/fagotti.ly
+++ b/mutopia/Coriolan/fagotti.ly
@@ -2,23 +2,25 @@
filename = "fagotti.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
\include "fagotto-1.ly"
\include "fagotto-2.ly"
$fagotti_staff = \type Staff = fagotti <
- \property Staff.instrument = "bassoon"
+ \property Staff.midi_instrument = "bassoon"
+ \property Staff.instrument = "2 Fagotti"
+ \property Staff.instr = "Fg."
\clef "bass";
- \melodic<
- \global;
+ \melodic \type Voice=fagotti <
+ \global
\$fagotto1
\$fagotto2
>
diff --git a/mutopia/Coriolan/fagotto-1.ly b/mutopia/Coriolan/fagotto-1.ly
index 92e38b17cd..c6bc7c80f8 100644
--- a/mutopia/Coriolan/fagotto-1.ly
+++ b/mutopia/Coriolan/fagotto-1.ly
@@ -2,22 +2,21 @@
filename = "fagotto-1.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
-fagotto1 = \melodic{
- \octave c;
- R1 *2 | as4-.\ff r r2 | R1 *3 |
- as4-. r r2 | R1 *3 |
- a4-. r r2 | r1 |
- c'4-. r r2 | b4-. r r2 |
- R1 *5 |
- r2 r4 g4-.\f |
+fagotto1 = \melodic \relative c {
+ R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
+ a4-. r r2 | r1 | c4-. r r2 | b4-. r r2 | R1 *5 |
+ %20
+ r2 r4 g4-.\f | R1*5 | ges'2\p_"\ \ \ cresc." f2 ~ | f4 e-.\f r2 |
+ R1 | f2\p()es | d1-"cresc." | d | d2 d | d d | c1\ff % ~ |
+ %35
}
diff --git a/mutopia/Coriolan/fagotto-2.ly b/mutopia/Coriolan/fagotto-2.ly
index 20a0cd83e7..c236e123fe 100644
--- a/mutopia/Coriolan/fagotto-2.ly
+++ b/mutopia/Coriolan/fagotto-2.ly
@@ -2,24 +2,19 @@
filename = "fagotto-2.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
-fagotto2 = \melodic{
- \octave c;
-% koor
-% r1 | r1 | f4-.\ff r r2 | r1 |
- R1 *2 | f4-. r r2 | R1 *3 |
- f4-. r r2 | R1 *3 |
- fis4-. r r2 | r1 |
- g4-. r r2 | g4-. r r2 |
- R1 *5 |
+fagotto2 = \melodic \relative c {
+ R1 *2 | f4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
+ fis4-. r r2 | r1 | g4-. r r2 | g4-. r r2 | R1 *5 |
+ %20
r2 r4 g,4-. |
+ R1*6 | r4 g'\f r2 | R1*5 | as1\ff %~ |
+ %35
}
diff --git a/mutopia/Coriolan/flauti-part.ly b/mutopia/Coriolan/flauti-part.ly
index 16750b154d..d0ff7a749b 100644
--- a/mutopia/Coriolan/flauti-part.ly
+++ b/mutopia/Coriolan/flauti-part.ly
@@ -2,21 +2,21 @@
filename = "flauti-part.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
\include "global.ly"
\include "flauti.ly"
-\include "part-paper.ly"
\score{
\$flauti_staff
- \paper{}
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
}
diff --git a/mutopia/Coriolan/flauti.ly b/mutopia/Coriolan/flauti.ly
index ae0d52352c..f829429dca 100644
--- a/mutopia/Coriolan/flauti.ly
+++ b/mutopia/Coriolan/flauti.ly
@@ -2,22 +2,24 @@
filename = "flauti.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
\include "flauto-1.ly"
\include "flauto-2.ly"
$flauti_staff = \type Staff = flauti <
- \property Staff.instrument = "flute"
- \melodic<
- \global;
+ \property Staff.midi_instrument = "flute"
+ \property Staff.instrument = "2 Flauti"
+ \property Staff.instr = "Fl."
+ \melodic \type Voice=flauti <
+ \global
\$flauto1
\$flauto2
>
diff --git a/mutopia/Coriolan/flauto-1.ly b/mutopia/Coriolan/flauto-1.ly
index 7d624cfddf..a6c7440b6b 100644
--- a/mutopia/Coriolan/flauto-1.ly
+++ b/mutopia/Coriolan/flauto-1.ly
@@ -2,22 +2,24 @@
filename = "flauto-1.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
-flauto1 = \melodic{
- \octave c'';
- R1 *2 | c'4-.\ff r r2 | R1 *3 |
- d'4-. r r2 | R1 *3 |
- es'4-. r r2 | r1 |
- g'4-. r r2 | b4-. r r2 |
- R1 *4 |
- r2 es'\p_"\ \ \ cresc." ( | )dis'2. es'4-.\f |
+flauto1 = \melodic \relative c {
+ R1 *2 | c'''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
+ es4-. r r2 | r1 | g4-. r r2 | b,4-. r r2 | R1 *4 |
+ r2 es\p_"\ \ \ cresc." ( |
+ %20
+ )dis2. es4-.\f |
+ R1*5 | r2 f\p_"\ \ \ cresc." ~ |
+ f4 e-.\f r2 | R1 | f2()es |
+ %30
+ d1-"cresc." | d1 |
+ d2 d2 | d2 d2 | f1\ff % ~
+ %35
}
diff --git a/mutopia/Coriolan/flauto-2.ly b/mutopia/Coriolan/flauto-2.ly
index 41ecf9fd8f..3132d85146 100644
--- a/mutopia/Coriolan/flauto-2.ly
+++ b/mutopia/Coriolan/flauto-2.ly
@@ -2,24 +2,19 @@
filename = "flauto-2.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
-flauto2 = \melodic{
- \octave c'';
-% koor
-% r1 | r1 | as4-.\ff r r2 | r1 |
- R1 *2 | as4-. r r2 | R1 *3 |
- b4-. r r2 | R1 *3 |
- c'4-. r r2 | r1 |
- es'4-. r r2 | d4-. r r2 |
- R1 *4 |
- r2 r2 | r2 r4 b4-. |
+flauto2 = \melodic \relative c {
+ R1 *2 | as'''4-.\ff r r2 | R1 *3 | b4-. r r2 | R1 *3 |
+ c4-. r r2 | r1 | es4-. r r2 | d,4-. r r2 | R1 *4 |
+ r2 r2 |
+ %20
+ r2 r4 b4-. | R1*6 | r4 c r2 | R1*5 | c1 % ~ |
+ %35
}
diff --git a/mutopia/Coriolan/global.ly b/mutopia/Coriolan/global.ly
index a339da0450..28f818a186 100644
--- a/mutopia/Coriolan/global.ly
+++ b/mutopia/Coriolan/global.ly
@@ -2,17 +2,18 @@
filename = "global.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
-global = \melodic{
- \meter 4/4;
- \key bes es as;
+global = \melodic {
+ \time 4/4;
+ \key es;
+ \skip 1*314;
}
diff --git a/mutopia/Coriolan/oboe-1.ly b/mutopia/Coriolan/oboe-1.ly
index ace20d4fac..2a04c174c4 100644
--- a/mutopia/Coriolan/oboe-1.ly
+++ b/mutopia/Coriolan/oboe-1.ly
@@ -2,22 +2,20 @@
filename = "oboe-1.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
-oboe1 = \melodic{
- \octave c'';
- R1 *2 | as4-.\ff r r2 | R1 *3 |
- as4-. r r2 | R1 *3 |
- a4-. r r2 | r1 |
- g4-. r r2 | g4-. r r2 |
- R1 *4 |
- as2\p_"\ \ \ cresc." ( g | )fis2. g4-.\f |
+oboe1 = \melodic \relative c'' {
+ R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
+ a4-. r r2 | r1 | g4-. r r2 | g4-. r r2 | R1 *4 |
+ as2\p_"\ \ \ cresc." ( g |
+ %20
+ )fis2. g4-.\f | R1*5 | ges2\p_"\ \ \ cresc." f ~ | f4 e\f r2 |
+ R1 | f2\p()es | d1-"cresc." | d | d2 d | d d | f1\ff % ~
+ %35
}
diff --git a/mutopia/Coriolan/oboe-2.ly b/mutopia/Coriolan/oboe-2.ly
index a674f75b44..1b47a5a167 100644
--- a/mutopia/Coriolan/oboe-2.ly
+++ b/mutopia/Coriolan/oboe-2.ly
@@ -2,24 +2,20 @@
filename = "oboe-2.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
-oboe2 = \melodic{
- \octave c'';
-% koor
-% r1 | r1 | f4-.\ff r r2 | r1 |
- R1 *2| f4-. r r2 | R1 *3 |
- f4-. r r2 | R1 *3 |
- es4-. r r2 | r1 |
- es4-. r r2 | b,4-. r r2 |
- R1 *5 |
- r2 r4 b,4-. |
+oboe2 = \melodic \relative c{
+ R1 *2| f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
+ es4-. r r2 | r1 | es4-. r r2 | b4-. r r2 | R1 *5 |
+ %20
+ r2 r4 b4-. | R1*6 | r4 bes\f r2 | R1*6 | c1\ff %~ |
+ %35
}
diff --git a/mutopia/Coriolan/oboi-part.ly b/mutopia/Coriolan/oboi-part.ly
index 247b88b643..7ee1996719 100644
--- a/mutopia/Coriolan/oboi-part.ly
+++ b/mutopia/Coriolan/oboi-part.ly
@@ -2,21 +2,21 @@
filename = "oboi-part.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
\include "global.ly"
\include "oboi.ly"
-\include "part-paper.ly"
\score{
\$oboi_staff
- \paper{}
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
}
diff --git a/mutopia/Coriolan/oboi.ly b/mutopia/Coriolan/oboi.ly
index 86ba75309c..9b8de116fa 100644
--- a/mutopia/Coriolan/oboi.ly
+++ b/mutopia/Coriolan/oboi.ly
@@ -2,22 +2,24 @@
filename = "oboi.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
\include "oboe-1.ly"
\include "oboe-2.ly"
$oboi_staff = \type Staff = oboi <
- \property Staff.instrument = "oboe"
- \melodic<
- \global;
+ \property Staff.midi_instrument = "oboe"
+ \property Staff.instrument = "2 Oboi"
+ \property Staff.instr = "Ob."
+ \melodic \type Voice=oboi <
+ \global
\$oboe1
\$oboe2
>
diff --git a/mutopia/Coriolan/out/dummy.dep b/mutopia/Coriolan/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/mutopia/Coriolan/out/dummy.dep
+++ /dev/null
diff --git a/mutopia/Coriolan/timpani.ly b/mutopia/Coriolan/timpani.ly
index ed2a4fb952..28075b3536 100644
--- a/mutopia/Coriolan/timpani.ly
+++ b/mutopia/Coriolan/timpani.ly
@@ -2,30 +2,32 @@
filename = "timpani.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
-timpani = \melodic{
- \octave c;
- R1 *2 | c4-.\ff r r2 | R1 *3 |
- c4-. r r2 | R1 *3 |
- c4-. r r2 | r1 |
- g,4-. r r2 | g,4-. r r2 |
- R1 *5 |
- r2 r4 g,4-. |
+timpani = \melodic \relative c {
+ R1 *2 | c4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
+ c4-. r r2 | r1 | g4-. r r2 | g4-. r r2 | R1 *5 |
+ %20
+ r2 r4 g4-. | R1*6 | r4 c-.\f r2 | R1*2 | r2 c4-.\p_"\ \ \ cresc." r |
+ r2 c4-. r | r2 c4-. r | c r c r | c1\ff-\trill |
+ %35
}
$timpani_staff = \type Staff = timpani <
- \property Staff.instrument = "timpani"
+ \property Staff.midi_instrument = "timpani"
+ \property Staff.instrument = "2 Timpani (C-G)"
+ \property Staff.instr = "Timp."
\clef "bass";
\melodic<
- \global;
+% \global
+ \time 4/4;
\$timpani
>
>
diff --git a/mutopia/Coriolan/trombe-part.ly b/mutopia/Coriolan/trombe-part.ly
index 2e33514bb0..ec77ec0d82 100644
--- a/mutopia/Coriolan/trombe-part.ly
+++ b/mutopia/Coriolan/trombe-part.ly
@@ -2,20 +2,20 @@
filename = "trombe-part.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
\include "global.ly"
\include "trombe.ly"
-\include "part-paper.ly"
\score{
\$trombe_staff
- \paper{}
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
}
diff --git a/mutopia/Coriolan/trombe.ly b/mutopia/Coriolan/trombe.ly
index c3c3d5d7e1..84b28bdfb5 100644
--- a/mutopia/Coriolan/trombe.ly
+++ b/mutopia/Coriolan/trombe.ly
@@ -2,22 +2,25 @@
filename = "trombe.ly";
% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
\include "trombo-1.ly"
\include "trombo-2.ly"
$trombe_staff = \type Staff = trombe <
- \melodic<
-% \global;
- \meter 4/4;
+ \property Staff.midi_instrument = "trumpet"
+ \property Staff.instrument = "2 Trombe (C)"
+ \property Staff.instr = "Tbe."
+ \melodic \type Voice=trombe <
+% \global
+ \time 4/4;
\$trombo1
\$trombo2
>
diff --git a/mutopia/Coriolan/trombo-1.ly b/mutopia/Coriolan/trombo-1.ly
index 05b11dc51d..c7501cf01a 100644
--- a/mutopia/Coriolan/trombo-1.ly
+++ b/mutopia/Coriolan/trombo-1.ly
@@ -2,22 +2,19 @@
filename = "trombo-1.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
-trombo1 = \melodic{
- \octave c';
- R1 *2 | c'4-.\ff r r2 | R1 *3 |
- c'4-. r r2 | R1 *3 |
- c'4-. r r2 | r1 |
- g4-. r r2 | g4-. r r2 |
- R1 *5 |
- r2 r4 g4-.\f |
+trombo1 = \melodic \relative c {
+ R1 *2 | c''4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
+ c4-. r r2 | r1 | g4-. r r2 | g4-. r r2 | R1 *5 |
+ %20
+ r2 r4 g4-.\f | R1*6 | r4 c-.\f r2 | R1*2 | r2 c4\p_"\ \ \ cresc." r |
+ r2 c4 r | r2 c4 r | c r c r | c1\ff % ~ |
+ %35
}
diff --git a/mutopia/Coriolan/trombo-2.ly b/mutopia/Coriolan/trombo-2.ly
index 923f42db93..561a701114 100644
--- a/mutopia/Coriolan/trombo-2.ly
+++ b/mutopia/Coriolan/trombo-2.ly
@@ -2,24 +2,19 @@
filename = "trombo-2.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
-trombo2 = \melodic{
- \octave c';
-% koor
-% r1 | r1 | c4-.\ff r r2 | r1 |
- R1 *2 | c4-. r r2 | R1 *3 |
- c4-. r r2 | R1 *3 |
- c4-. r r2 | r1 |
- g,4-. r r2 | g,4-. r r2 |
- R1 *5 |
- r2 r4 g,4-. |
+trombo2 = \melodic \relative c {
+ R1 *2 | c'4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
+ c4-. r r2 | r1 | g4-. r r2 | g4-. r r2 | R1 *5 |
+ %20
+ r2 r4 g4-.\f | R1*6 | r4 c-.\f r2 | R1*2 | r2 c4\p_"\ \ \ cresc." r |
+ r2 c4 r | r2 c4 r | c r c r | c1\ff % ~ |
+ %35
}
diff --git a/mutopia/Coriolan/viola-1.ly b/mutopia/Coriolan/viola-1.ly
new file mode 100644
index 0000000000..c639b503de
--- /dev/null
+++ b/mutopia/Coriolan/viola-1.ly
@@ -0,0 +1,304 @@
+\header{
+filename = "viola-1.ly";
+%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description = "";
+composer = "Ludwig van Beethoven (1770-1827)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+\version "1.0.0";
+
+viola1 = \melodic \relative c {
+ \type Voice=one
+ c'1\ff ~ | c | f,4-. r r2 | r1 |
+ % copied 3 bars from three back...
+ %5
+ c'1 ~ | c | f,4-. r r2 | r1 |
+ c'1 ~ | c | fis,4-. r r2 | r1 |
+ g'4-. r r2 | g4-. r r2 |
+ % copied from violino-1...
+ %15
+ [c,,8-.\p es-.] [es()d] [d-. g-.] g4-"ten." |
+ [c,8-. es-.] [es()d] [d-. g-.] g4-"ten." |
+ [c,8-. es-.] [es()d] [d-. as'-.] [as()g] |
+ [g8-. c-.] [c()b] [b-. f'-.] [f()es] |
+ es4.-"cresc." es8 d4. d8 |
+ %20
+ c4. c8 b4\f r4 |
+ R1 |
+ r4 [des,8\p()c][c-. f-.]f4-"ten." |
+ r4 [des8\p()c][c-. f-.]f4-"ten." |
+ r4 [des8\p()c][c-. ges'-.][ges()f] |
+ %25
+ [f-. bes-.][bes()a][a-. es'-.][es()des] | des4.-"cresc." des8 c4. c8 |
+ bes4 bes4-.\f r2 |
+ R1
+ % same rhythm as violins...
+ r8 c-.\p c4. c8-. c4~ | [c8-"cresc." c-.]c2.~ |
+ %30
+ [c8 c-.]c2.~ | [c8 c-.] c4. c8-. c4~ | [c8 c-.] c4. c8-. c4 |
+ [c16\ff c c c][c c c c]c2:16 |
+ %35
+ [c16 c c c][bes bes bes bes][as as as as][g g g g] |
+ g2:16 g: | g: g: | c: c: | e: f: |
+ %40
+ c2\sf [c,8-. es-.][es()d] |
+ c'2\sf [c,8-. es-.][es()d] |
+ b'2\f r8 [d,-. d()c] |
+ b'2\f r8 [d,-. d()c] |
+ b'2\f r8 [des,-. des()c] |
+ %45
+ a'2\sf [a8-. c-.][c()bes] |
+ r4 [a8-. c-.][c()bes] r4 |
+ r4 [a8-. c-.][c()bes] r4 |
+ r4 [a8-. c-.][c()bes] r4 |
+ r4 [a8-. c-.][c()bes][bes()a] |
+ %50
+ bes4 r r2 |
+ R1 |
+ es,4\p r r r8 es(|)as4 r r r8 as (|)g4 r r r8 g(|
+ %55
+ )d4 r r r8 d(|)es4 r-"cresc." r r8 es(|)as4 r r r8 as(|
+ )g4 r r r8 g(|)d4 r r r8 d(|
+ %60
+ )es4 r r r8 es(|)as4 r r r8 as | bes2:16 as: | g: e: |
+ f4\p r r r8 f(|
+ %65
+ )bes4 r r r8 bes(|)as4 r r r8 as(|)e4 r r r8 e(|
+ )f4-"cresc." r r r8 f(|)bes4 r r r8 bes |
+ %70
+ c2:\ff bes: | a: fis: | g4\p-"cresc." r r r8 g(|)c,4 r r r8 c |
+ [f8\sf(\>as f as][f g d)\!g] |
+ %75
+ r [es'\p(c)es] r [d(bes)d] | r [c(g)c] r [bes(g)bes] |
+ r [as(g)as] r [bes(g)bes] |
+ [d,-.\pp d'-.] es4. es8-. d4 ~ |
+ [d8 d-.] es4. es8-. d4 ~ |
+ %80
+ [d8-"cresc." d-.] es4. es8-. d4 ~ |
+ [d8 d-.] es4. es8-. d4 ~ |
+ [d8 d-.] es4. es8-. d4 ~ |
+ [d8 d-.] es4. es8-. d4 |
+ fis,2:\ff fis4: g: |
+ %85
+ d2: d: | fis: fis4: g: | c,: d: c: d: | b2: b4: c: | f': es: f: es: |
+ %90
+ b2: b4: c: | d: c: d: c: |
+ c,4 r8 c' c4\sf()des |
+ r r8 c c4\sf()des |
+ r r8 c c4\sf()des |
+ r r8 c c4\sf()des |
+ [c16 es es es]es4:[es16 fis fis fis]fis4: |
+ [b,16 d d d]d4:[bes16 e e e]e4: |
+ [as,16 c c c ]c4:[g16 c c c]c4: | [a16 c c c]c4:[g16 c c c]c4: |
+ %100
+ [c8 d,]d4. es8-. es4 ~ | [es8 c-.]c4. d8-. d4 |
+ % shared with cello from here on;
+ % except for some abbrevs below...
+ [g8\p bes cis d][es d bes g]|
+ [fis a cis d][es d a fis\f] |
+ [g bes cis\p d][es d bes g]
+ %105
+ [fis a cis d][es d a fis\f] |
+ [g bes cis\p d][f, a cis d] |
+ [es, g b c][d, g a bes] |
+ [c, es g a]r[d, fis g] |
+ r[c, es g][d fis a d] |
+ %110
+ % cello has eighth notes here...
+ [g,16 g bes bes][d d es es][f, f a a][cis cis d d] |
+ [es,8: g: b: c!:][d,: f: a: bes:] |
+ [c,: es: g: a:][cis,: e: g: bes:] |
+ [d,: g: bes: d:][d,: fis: a: d:] | d2: d:
+ %115
+ | d: d: | d: d: | d: d: |
+ % urg, 2 copied from 102
+ [g,8\p bes cis d][es d bes g]|
+ [fis a cis d][es d a fis] |
+ %120
+ [g bes c des][c des bes g]|[f as c des][c des as f]|
+ [e g b c][b c g e]|[f as b c][b c as f]|
+ [e g b c][b c g e]|
+ %125
+ [c e fis g][fis g e c]|[f as b c][des c as f]|
+ [e g b c][des c g e]|[f as c des][c des as f]|
+ [g bes d es][d es bes g]|[as-"cresc." c d es][f es c as]|
+ %131
+ [g bes d es][f es bes g]|
+ % shared with cellos until here
+ % shared with violino-2 from here on
+ [as as c es][f es c as]|[a c es f][ges f c a]|
+ [bes des f ges][as ges des bes]|
+ %135
+ [c es g as][bes as es c]|[des\p f a bes][c, es g as]|
+ [bes, des f ges][as, c e f]|[ges, bes d es][f, as c des]|
+ [es, ges bes des][as c es as,]|
+ %140
+ % shared with cello from here on;
+ % except cello has eighth notes
+ [des,16\f des f f][a a bes bes][c, c es es][g g as as]|
+ [bes8: des: f: ges:][as,: c: e: f:]|
+ [g,: bes: c: des:][f,: bes: c: des:]|
+ [e,: g: bes: des:][c,: e: g: c:]|
+ %shared with cello from here on
+ [f,8\p-"cresc." as c des][es, g b c]|[des, f a bes][c, es g as]|
+ % uhuh, still 'same as cello';
+ % but now rests for notes that viola cannot reach...
+ %145
+ r[des, e g]r[c, e f]|
+ % hmm, don't want to miss more than one note,
+ % take bes octave higher
+ r[bes des, f][c e g c]|
+ % cello has eight notes;
+ % viola has rest where can't reach
+ [f,:\ff as: c: des:][es,: g: b: c:]|[des,: f: a: bes:][c,: es: g: as:]|
+ %150
+ r[des,16 des][e e g g]r8[c,16 c][e e f f]|
+ r8[des16 des][f f g g][c, c e e][g g c c]|
+ f,1\ff ~ | f | f'4 r r2
+ R1
+ %155
+ f,1 ~ | f | d'2\sf [g,8-. bes-.][bes()as] |
+ es'2\sf [g,8-. bes-.][bes()as] |
+ % ugh, should be quoted and transposed...
+ %160
+ [f8-.\p as-.][as()f][g-. c-.][c()b] |
+ R1*2 |
+ g2\ff [es8-. g-.][g()f] |
+ g2\sf [es8-. g-.][g()f] |
+ %165
+ [e-. bes'-.][bes()as][g-. des'-.][des()c] |
+ R1*2 |
+ r4 [e,8-.\ff g-.][g()f] r4 |
+ r4 [e8-. g-.][g()f] r4 |
+ %170
+ r4 [e8-. g-.][g()f] r4 |
+ r4 [e8-. g-.][g()f][fis-.fis-.] |
+ g4 [fis8-.as-.][as()g] r4 |
+ r4 [fis8-.as-.][as()g] r4 |
+ r4 [fis8-.as-.][as()g] r4 |
+ %175
+ r4 [fis8-.as-.][as()g] c4\sf(|)b r r2 | R1
+ % ugh, should be quoted and transposed
+ c4\p r r r8 c8(|
+ )f4 r r r8 f8(|
+ %180
+ )e4 r r r8 e8(|
+ )b'4 r r r8 b8(|
+ )c4 r-"cresc." r r8 c,8(|
+ % copied
+ )f4 r r r8 f8(|
+ )e4 r r r8 e8(|
+ %185
+ )b'4 r r r8 b8(|
+ )c4 r r r8 c,8(|
+ )f4 r r r8 f8|
+ g2:16\ff f: | e: cis: |
+ %190
+ c,4\p r r r8 c8(|
+ )g'4 r r r8 g8(|
+ )f4 r r r8 f8(|
+ )cis4-"cresc." r r r8 cis8(|
+ )d4 r r r8 d8(|
+ %195
+ )g4 r r r8 g8|
+ % check
+ [a16\ff a' a a]a4: a2: | fis: dis: |
+ e,4\p r r r8 e8(|
+ )a4\< r r r8 a8(|
+ %200
+ [)g(g e g][e g e)g] |
+ % quote and transpose
+ [f(g f g][f g f)\!g] |
+ [c\f\>(c g)c]r[c(bes)\!c] |
+ r[c\p(as)c]r[c(g)c] |
+ r[c(f,)c']r[c(g)c] |
+ %205
+ r[c\p(as)c]r[c(a)c] |
+ [b-. g'-.] as4. as8-. g4 ~ |
+ [g8 g-.] as4. as8-. g4 ~ |
+ [g8 g-.-"cresc."] as4. as8-. g4 ~ |
+ [g8 g-.] as4. as8-. g4 ~ |
+ %210
+ [g8 g-.] as4. as8-. g4 ~ |
+ [g8 g-.] as4. as8-. g4 ~ |
+ b,2:16\ff b4: c: | g'2: g: |
+ %214
+ b,2:16\ff b4: c: | g'2: g: |
+ e2:16\ff e4: f: | b,: c: b: c: |
+ e2:16\ff e4: f: | b,: c: b: c: |
+ %220
+ r4 r8 es8 es4\sf()fes |
+ r4 r8 es8 es4\sf()fes |
+ r4 r8 es8 es4\sf()fes |
+ r4 r8 es8 es4\sf()fes |
+ [des16 des f f]des4: [b16 b d d]b4: |
+ %225
+ % check
+ [bes16 bes c c]bes4: [a16 a c c]a4: |
+ [f16 f b b]f4: [as16 as c c]as4: |
+ [as16 as d d]as4: [as16 as c c]as4: |
+ [g8 g]g4. as8 as4 ~ |
+ [as8 as]f4. f8 g4 |
+ %230
+ c\p r r2 | r r4 r8 b\f |
+ c4 r r2 | r r4 r8 b\f | c4 r r2 |
+ R1*3 |
+ [c,16c es es][g g as as][bes bes d d][fis fis g g] |
+ [as, as c c][e e f f][g, g bes bes][d d es es] |
+ %240
+ f,4 r r2 |
+ R1*11 |
+ c'4\p-"cresc." r r r8 c8(|
+ % check slur and oct
+ )f4 r r r8 f8 | % f,8 (|
+ es1 |
+ %255
+ ges\f | f\p | as\f | g\p
+ e2:16\f e: |
+ %260
+ [as,8\p-"cresc." f']f4. es8 es4 ~ |
+ [es8 as]as4. g8 g4 ~ |
+ [g8 f]f4. es8 es4 ~ |
+ [es8 as]as4. g8 g4 |
+ r r8 d\ff es4.\sf()d8 |
+ %265
+ r4 r8 d es4.\sf()d8 |
+ r4 r8 e f4.\sf()e8 |
+ r4 r8 e f4.\sf()e8 |
+ r4 r8 e g4.\sf()f8 |
+ r4 r8 f as4.\sf()g8 |
+ %270
+ g2:16-"sempre" g:\ff | g: g: | g: g: | g: g: |
+ [g8 b, c g][c b c g] |
+ %275
+ [c b c g][c b c g] |
+ c,1 ~ | c | f4-. r r2 | R1 |
+ c1 ~ | c | f4-. r r2 | R1 |
+ c1 ~ | c | fis4-. f-. r2 | R1 |
+ es4-. e-. r2 | f4-. g-. r2 |
+ %290
+ as4-"dim." r g r | R1 | c4\p r r2 | R1 |
+ g4-"pizz." r r2 | R1 | c,4 r r2 | R1*15 |
+ c4\pp r r2 |
+ c4 r r2 |
+ c4 r r2 |
+}
+
+% urg
+\include "viola-2.ly";
+
+
+% $viola1_staff = \type Staff = viola1 <
+$viola1_staff = \type Staff = violai <
+ \property Staff.midi_instrument = "viola"
+ \property Staff.instrument = "Viola"
+ \property Staff.instr = "Vla."
+ \clef "alto";
+ \melodic \type Voice=one <
+ \global
+ \$viola1
+ >
+>
+
diff --git a/mutopia/Coriolan/viola-2.ly b/mutopia/Coriolan/viola-2.ly
new file mode 100644
index 0000000000..31dc72611b
--- /dev/null
+++ b/mutopia/Coriolan/viola-2.ly
@@ -0,0 +1,44 @@
+\header{
+filename = "viola-2.ly";
+%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description = "";
+composer = "Ludwig van Beethoven (1770-1827)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+\version "1.0.0";
+
+viola2 = \melodic \relative c {
+ % starts on (actualy, most part is on) same staff as viola1
+ %urg, parse error
+%urg \translator Staff=viola1
+ \translator Staff=violai
+ \type Voice=one
+ c1 ~ | c | s1*2 |
+ % copied 3 bars from three back...
+ c ~ | c | s1*2 % |
+% \translator Staff=viola
+ c ~ | c | s1*2 |
+ g'4-. r r2 | g4-. r r2 |
+ %15
+ s1*14
+ % same as viola-1, octave lower
+ r8 c,-.\p c4. c8-. c4~ | [c8-"cresc." c-.]c2.~ |
+ [c8 c-.]c2.~ | [c8 c-.] c4. c8-. c4~ | [c8 c8-.] c4. c8-. c4 |
+ %35
+ [as'16\ff as a as][as as as as]as2:16 |
+}
+
+% $viola2_staff = \type Staff = viola_2 <
+$viola2_staff = \type Staff = violaii <
+ \property Staff.midi_instrument = "viola"
+ \property Staff.instrument = "Viola II"
+ \property Staff.instr = "Vla. II"
+ \clef "alto";
+ \melodic \type Voice=one<
+ \global
+ \$viola2
+ >
+>
+
diff --git a/mutopia/Coriolan/viola-part.ly b/mutopia/Coriolan/viola-part.ly
new file mode 100644
index 0000000000..5496e50ff5
--- /dev/null
+++ b/mutopia/Coriolan/viola-part.ly
@@ -0,0 +1,33 @@
+\header{
+filename = "viola-part.ly";
+% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description = "";
+composer = "Ludwig van Beethoven (1770-1827)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "viola-1.ly"
+\include "viola-2.ly"
+
+$viola_staff = \type Staff = violai <
+ \property Staff.midi_instrument = "viola"
+ \property Staff.instrument = "Viola"
+ \property Staff.instr = "Vla."
+ \clef "alto";
+ \melodic \type Voice=one <
+ \global
+ \$viola1
+ \$viola2
+ >
+>
+
+\score{
+ \$viola_staff
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
+}
+
diff --git a/mutopia/Coriolan/viola.ly b/mutopia/Coriolan/viola.ly
deleted file mode 100644
index e25c758c1b..0000000000
--- a/mutopia/Coriolan/viola.ly
+++ /dev/null
@@ -1,36 +0,0 @@
-\header{
-filename = "viola.ly";
-%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
-description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
-enteredby = "JCN";
-copyright = "public domain";
-
-
-}
-
-\version "0.1.14";
-
-viola = \melodic{
- \octave c;
- < { c'1\ff ~ | c' } { c ~ | c } > | f4-. r r2 | r1 |
- % copied 3 bars from three back...
- < { c'1 ~ | c' } { c ~ | c } > | f4-. r r2 | r1 |
- < { c'1 ~ | c' } { c ~ | c } > | fis4-. r r2 | r1 |
- < g4-. g'-. > r r2 | < g4-. g'-. > r r2 |
- % copied from violino-1...
- [c8-.\p es-.] [es()d] [d-. g-.] g4-"ten." |
- [c8-. es-.] [es()d] [d-. g-.] g4-"ten." |
- [c8-. es-.] [es()d] [d-. as-.] [as()g] |
- [g8-. c'-.] [c'()b] [b-. f'-.] [f'()es'] |
- es'4.-"cresc." es'8 d'4. d'8 | c'4. c'8 b4\f r4 |
-}
-
-$viola_staff = \type Staff = viola <
- \property Staff.instrument = "viola"
- \clef "alto";
- \melodic<
- \global;
- \$viola
- >
->
diff --git a/mutopia/Coriolan/violino-1-part.ly b/mutopia/Coriolan/violino-1-part.ly
new file mode 100644
index 0000000000..2ad314be9b
--- /dev/null
+++ b/mutopia/Coriolan/violino-1-part.ly
@@ -0,0 +1,20 @@
+\header{
+filename = "violino-1-part.ly";
+% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description = "";
+composer = "Ludwig van Beethoven (1770-1827)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "violino-1.ly"
+
+\score{
+ \$violino1_staff
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
+}
+
diff --git a/mutopia/Coriolan/violino-1.ly b/mutopia/Coriolan/violino-1.ly
index 4d675f24bd..1a3e2f393d 100644
--- a/mutopia/Coriolan/violino-1.ly
+++ b/mutopia/Coriolan/violino-1.ly
@@ -2,33 +2,282 @@
filename = "violino-1.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
-violino1 = \melodic{
- \octave c';
- c1\ff ~ | c | <as'4-. c'-. f-.> r r2 | r1 |
- c1 ~ | c | <d''4-. d'-. d-.> r r2 | r1 |
- c1 ~ | c | <es''4-. es'-.> r r2 | r1 |
- <g'4-. c'-. es-.> r r2 | <b4-. d-. g,-.> r r2 |
+violino1 = \melodic \relative c {
+ c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
+ c1 ~ | c | <d4-. d'-. d'-.> r r2 | R1 |
+ c1 ~ | c | <es'4-. es'-.> r r2 | R1 |
+ <es,4-. c'-. g'-.> r r2 | <g,4-. d'-. b'-.> r r2 |
[c8-.\p es-.] [es()d] [d-. g-.] g4-"ten." |
- [c8-. es-.] [es()d] [d-. g-.] g4-"ten." |
- [c8-. es-.] [es()d] [d-. as-.] [as()g] |
- [g8-. c'-.] [c'()b] [b-. f'-.] [f'()es'] |
- [es'8-.-"cresc." as'-.] as'4. g'8-. g'4 ~ |
- [g'8 fis'] fis'4 ~ fis' g'-.\f |
+ [c,8-. es-.] [es()d] [d-. g-.] g4-"ten." |
+ [c,8-. es-.] [es()d] [d-. as'-.] [as()g] |
+ [g8-. c-.] [c()b] [b-. f'-.] [f()es] |
+ [es8-.-"cresc." as-.] as4. g8-. g4 ~ |
+ %20
+ [g8 fis] fis4 ~ fis g-.\f |
+ R1 |
+ [bes,,!8\p-. des-.][des()c][c-. f-.]f4-"ten." |
+ [bes,!8\p-. des-.][des()c][c-. f-.]f4-"ten." |
+ [bes,!8\p-. des-.][des()c][c-. ges'-.][ges()f] |
+ %25
+ [f-. bes-.][bes()a][a-. es'-.][es()des]|
+ [des-.-"cresc." ges-.] ges4. f8-. f4~ | [f8 e-.]e4-.\f r2 |
+ R1 |
+ %29
+ r8 f-.\p f4. es8-. es4~ | [es8-"cresc." d-.]d2.~ |
+ [d8 d-.]d2.~ | [d8 d-.] d4. d8-. d4~ | [d8 d8-.] d4. d8-. d4 |
+ [f16\ff f f f][f f f f]f2:16 |
+ %35
+ [f16 f f f][es es es es][des des des des][c c c c] |
+ b2:16 c: | d!: es: | e: f: | g: as: |
+ %40
+ a2\sf [c,,8-. es-.][es()d] |
+ a''2\sf [c,,8-. es-.][es()d] |
+ as''!2\sf [b,,8-. d-.][d()c] |
+ as''2\sf [b,,8-. d-.][d()c] |
+ g''1\sf |
+ %45
+ ges\sf |
+ f2. ges4\sf(|
+ )f2. ges4\sf(|
+ )f2. ges4\sf(|
+ )f2. ges4\sf(|
+ %50
+ )f1\>~ |
+ f4 d( bes)\!as |
+ g2.\p( as4 | g f d ) bes | bes'2.( c4 |
+ %55
+ bes2 )as |
+ g4 <bes2-"cresc." bes'> <bes4 bes'~> |
+ <bes-"cresc." bes'> <bes2 bes'> <bes4 bes'~> |
+ <bes bes'> <bes2 bes'> <bes4 bes'~> |
+ <bes bes'> <bes2 bes'> <bes4 bes'> |
+ %60
+ bes'2:16 bes: | bes: bes: |
+ bes:\ff des: | c: bes: |
+ as2.\p( bes4 |
+ %65
+ as g e )c | c'2.( des4 | c2 ) bes |
+ [as16-"cresc." c c c][c c c c] c2:16 | c: c: |
+ %70
+ c:\ff es: | d: c: | bes2.\p-"cresc."( c4 | bes a fis ) d |
+ d'\sf\>( as g )\!f |
+ %75
+ r8[es\p(c)es]r[d(bes)d] | r[c(g)c]r[bes(g)bes] |
+ r[a(g)a]r[bes(g)bes]|[fis-.\pp a-.] a4. a8-. a4~|
+ [a8 a-.] a4. a8-. a4~|
+ %80
+ [a8 bes-.] bes4. bes8-. bes4~|
+ [bes8 bes-.] bes4. bes8-. bes4~|
+ [bes8 c-.] c4. c8-. c4~|
+ [c8 d-.] d4. d8-. d4~|
+ es2:16\ff es4: d: |
+ %85
+ fis: g: fis: g: |
+ es2: es4: d: |
+ fis: g: fis: g: |
+ as2: as4: g: |
+ b: c: b: c: |
+ %90
+ as2: as4: g: |
+ b: c: b: c: |
+ r8 es as,4\sf~as()g |
+ r8 es' as,4\sf~as()g |
+ r8 es' as,4\sf~as()g |
+ %95
+ r8 es' as,4\sf~as()g |
+ r8 es' as,4. fis8 es'4~ |
+ [es8 d] g,4. e8 d'4~ |
+ [d8 c] f,4. c'8 es,4 ~ |
+ [es8 c'] a4. c8 g4 ~ |
+ %100
+ [g8 fis] d,4. es8-. es4~ |
+ [es8 c-.] c4. d8-. d4 |
+ g, r8 es'' d4 r8 bes8 |
+ a4 r8 es' d4 r8 a\f |
+ bes4 r8 es8\p d4 r8 bes |
+ %105
+ a4 r8 es' d4 r8 a8\f | bes4 r8 es\p d4 r8 a |
+ g4 r8 c bes4 r8 f | es4 r8 a g4 r8 d | c4 r8 g' fis4 r8 c' |
+ %110
+ bes4\f r8 es' d4 r8 a |
+ g4 r8 c bes4 r8 f |
+ es4 r8 a g4 r8 cis,, |
+ d4 r8 g' d,4 r8 fis' |
+ bes,,4. g''8 g2 ~ |
+ %115
+ g4. bes8 bes2 ~ | bes4. g8 g4 r8 bes | bes4 r8 d d4 r8 g |
+ g4\p r8 es, d4 r8 bes | a4 r8 es' d4 r8 a |
+ %120
+ bes4 r8 es des4 r8 bes | as!4 r8 es' des4 r8 as | g4 r r2 |
+ r4 r8 es' des4 r8 as | g4 r r2 |
+ %125
+ r4 r8 c bes4 r8 e, |
+ as4 r8 des c4 r8 as |
+ g4 r8 des' c4 r8 g |
+ as4 r8 es' des4 r8 as |
+ bes4 r r2 |
+ %130
+ r4 r8 f'8-"cresc." es4 r8 c | bes4 r8 f' es4 r8 bes |
+ c4 r8 f es4 r8 c | c4 r r2 | r4 r8 as' ges4 r8 des |
+ %135
+ es4 r8 bes' as4 r8 es | f4\p r8 bes as4 r8 es |
+ des4 r8 ges f4 r8 c | bes4 r8 es des4 r8 as |
+ ges4 r8 des' c4 r8 ges' |
+ %140
+ f4\f r8 bes as4 r8 es | des4 r8 ges f4 r8 c |
+ bes4 r8 e f4 r8 bes, | bes4 r8 g'! es4 r8 bes' |
+ as4\p r8 des-"cresc." c4 r8 g |
+ %145
+ f4 r8 bes as4 r8 es | des4 r8 g f4 r8 c | bes4 r8 f' e4 r8 bes' |
+ as4\ff r8 des c4 r8 g | f4 r8 bes as4 r8 es |
+ %150
+ des4 r8 g f4 r8 c, | des4 r8 f' c,4 r8 e' |
+ f,1\ff ~ | f | des''4 r r2 |
+ %155
+ R1 |
+ f,,1 ~ | f |
+ <f'2\sf d'!> [f,8-. as-.][as()g] |
+ <f'2\sf d'> [f,8-. as-.][as()g] |
+ %160
+ [f8-.\p as-.][as()g] [g-. c-.][c()b] |
+ [b8-. es-.][es()d] [d-. g-.]g4-"ten." | R1 |
+ <des2\ff des'> [e,8-. g-.][g()f] |
+ <des'2\sf des'> [e,8-. g-.][g()f] |
+ %165
+ [e-.\p bes'-.][bes()as][g-.des'-.][des()c] |
+ [bes-. g'-.][g()f][e-. g-.]g4-"ten." |
+ r2 r4 des'4\ff (|
+ )c2. des4\sf(|
+ )c2. des4\sf(|
+ %170
+ )c2. des4\sf(|
+ )c2. es4\sf(|
+ )d2. es4\sf(|
+ )d2. es4\sf(|
+ )d2. es4\sf(|
+ %175
+ )d2. es4\sf(|
+ )d1\> ~ | d4( b g \!)f
+ e2.\p( f4 | e d b ) g |
+ %180
+ g'2.( a4 | g2 )f | e4 g2-"cresc." g4 ~ |
+ g g2 g4 ~ |
+ g g2 g4 ~ |
+ %185
+ g g2 g4 |
+ [g16 g g g][g g g g]g2:16 | g: g: | g:\ff bes: | a: g: |
+ %190
+ f2.\p( g4 | f e cis ) a | a'2.( bes4 | a2 ) g |
+ [f16-"cresc." a a a][a a a a]a2:16 |
+ %195
+ a2 a | a2:16\ff c: | b: a: | g2.\p( a4 | g\< fis dis ) b |
+ %200
+ b'1 ~ | \!b
+ [c8\f\>c,(g)c]r[c(bes)\!c] |
+ r[c\p(as)c]r[c(g)c] |
+ r[c(f,)c']r[c(g)c] |
+ %205
+ r[c(as)c]r[c(a)c] |
+ [b-. d-.]d4. d8-. d4 ~ |
+ [d8-. d-.]d4. d8-. d4 ~ |
+ [d8-. es-.]es4.-"cresc." es8-. es4 ~ |
+ [es8-. es-.]es4. es8-. es4 ~ |
+ %210
+ [es8-. f-.]f4. f8-. f4 ~ |
+ [f8-. g-.]g4. g8-. g4 |
+ as2:16\ff as4: g: | b,: c: b: c: |
+ as'2:16\ff as4: g: | b,: c: b: c: |
+ des'2:16\ff des4: c: | e,: f: e: f: |
+ des'2:16\ff des4: c: | e,: f: e: f: |
+ %220
+ r8 as des,4\sf ~ des()c |
+ r8 as' des,4\sf ~ des()c |
+ r8 as' des,4\sf ~ des()c |
+ r8 as' des,4\sf ~ des()c |
+ r8 as' des,4. b8 g'4 |
+ %225
+ r8 g c,4. a8 f'4 ~ |
+ [f8 f] b,4. f'8 as,4 ~ |
+ [as8 f'] d!4. f8 c4 ~ |
+ [c8 b] g,4. as8 as'4 ~ |
+ [as8 as] f4. f8 g4 |
+ %230
+ c,4\p r8 as' g4 r8 es |
+ d4\p r8 as' g4 r8 d\f |
+ es4\p r8 as\p g4 r8 es |
+ d4\p r8 as' g4 r8 d\f |
+ es4\p r8 as'\p g4 r8 d |
+ %235
+ c4 r8 f es4 r8 bes |
+ as4 r8 d c4 r8 g |
+ f4 r8 c' b4 r8 f' |
+ es4\f r8 as g4 r8 d |
+ c4\f r8 f es4 r8 bes |
+ %240
+ as4-. des-. r2 | R1*3 |
+ e2.\p( f4 | e d b ) g |
+ g'2.( a4 | g2 ) f |
+ es4 g2 g4 ~ |
+ g4 g2 g4 ~ |
+ %250
+ g4 g2 g4 ~ |
+ g4 g2 g4 ~ |
+ [g16-"cresc." g g g][g g g g]g2:16 |
+ g: g: | g: g: | as:\f as: | as:\p as: | bes:\f bes: | bes:\p bes: |
+ c:\f c: |
+ %260
+ r8 c-"cresc." c4. c8 c4 ~ |
+ [c8 c] c4. c8 c4 ~ |
+ [c8 c] c4. c8 c4 ~ |
+ [c8 c] c4. c8 c4 ~ |
+ c4.\ff <c8 c,> <c2\sf c,~> |
+ %265
+ <c4. c,> <c8 c,> <c2\sf c,~> |
+ <c4. c,> <c8 c,> <c2\sf c,~> |
+ <c4. c,> <c8 c,> <c2\sf c,~> |
+ <c4. c,> <c8 c,> <c2\sf c,> |
+ d4. d8 d2\sf |
+ %270
+ es4.-"sempre" b8\ff c4. as8 |
+ g4. as8 g4. f'8 |
+ es4. b8 c4. as8 |
+ g4. as8 g4. f'8 |
+ es4 r8 b8 c4 r8 b, |
+ %275
+ c4 r8 b,8 c4 r8 b |
+ c1 ~ | c | <f4 c' as'-.> r r2 | R1
+ c1 ~ | c | <d4 d' d'-.> r r2 | R1
+ c1 ~ | c | es''4-. b-. r2 | R1 |
+ c4-. g-. r2 | as4-. e-. r2 |
+ %290
+ f4-"dim." r d r | R1 | es!4\p r r2 | R1 | d,4-"pizz." r r2 |
+ %295
+ R1 | c1^"arco"-"sempre" ~ | c2-"pi\\`u piano" b2 |
+ c1 ~ | c2 b2 |
+ %300
+ c1 ~ | c | b ~ | b | c ~ |
+ %305
+ c | b ~ | b\> ~ | b ~ | \!b |
+ %310
+ c4\pp r r2 | R1 |
+ c4-"pizz." r r2 |
+ c4 r r2 |
+ c4 r r2 |
}
$violino1_staff = \type Staff = violino1 <
- \property Staff.instrument = "violin"
+ \property Staff.midi_instrument = "violin"
+ \property Staff.instrument = "Violino I"
+ \property Staff.instr = "Vl. I"
\melodic<
- \global;
+ \global
\$violino1
>
>
diff --git a/mutopia/Coriolan/violino-2-part.ly b/mutopia/Coriolan/violino-2-part.ly
new file mode 100644
index 0000000000..cc9a9a1c87
--- /dev/null
+++ b/mutopia/Coriolan/violino-2-part.ly
@@ -0,0 +1,20 @@
+\header{
+filename = "violino-2-part.ly";
+% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description = "";
+composer = "Ludwig van Beethoven (1770-1827)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "violino-2.ly"
+
+\score{
+ \$violino2_staff
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
+}
+
diff --git a/mutopia/Coriolan/violino-2.ly b/mutopia/Coriolan/violino-2.ly
index 8230edc6ff..de6fea2061 100644
--- a/mutopia/Coriolan/violino-2.ly
+++ b/mutopia/Coriolan/violino-2.ly
@@ -2,31 +2,302 @@
filename = "violino-2.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
-
-
}
-\version "0.1.14";
+\version "1.0.0";
-violino2 = \melodic{
- \octave c';
- c1\ff ~ | c | <as'4-. c'-. f-.> r r2 | r1 |
- c1 ~ | c | <as'4-. b-. d-.> r r2 | r1 |
- c1 ~ | c | <c''4-. es'-. fis-.> r r2 | r1 |
- <c'4-. es-. g,-.> r r2 | <b4-. d-. g,-.> r r2 |
+violino2 = \melodic \relative c {
+ c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
+ c1 ~ | c | <d4-. b'-. as'-.> r r2 | R1 |
+ c1 ~ | c | <fis4-. es'-. c'-.> r r2 | R1 |
+ %13
+ <g,4-. es'-. c'-.> r r2 | <g4-. d'-. b'-.> r r2 |
R1 *3 |
- r2 ['b8-.\p f-.] [f()es] |
+ r2 [b8-.\p f'-.] [f()es] |
[es8-. as-.] as4.-"cresc." g8-. g4 ~ |
+ %20
[g8 fis-.] fis4 ~ fis g-.\f |
+ R1*4 | r2
+ %25
+ [a,8-.\p es'-.][es()des] | [des-.-"cresc." ges-.]ges4. f8-. f4~ |
+ [f8 e-.]e4-.\f r2 | R1
+ %29
+ %copied... \transpose c \violino-1(29, 39)
+ r8 f-.\p f4. es8-. es4~ | [es8-"cresc." d-.]d2.~ |
+ [d8 d-.]d2.~ | [d8 d-.] d4. d8-. d4~ | [d8 d8-.] d4. d8-. d4 |
+ [f16\ff f f f][f f f f]f2:16 |
+ %35
+ [f16 f f f][es es es es][des des des des][c c c c] |
+ b2:16 c: | d!: es: | e: f: |
+ <g: c,:> <as: c,:> |
+ %40
+ a2\sf [c,8-. es-.][es()d] |
+ a'2\sf [c,8-. es-.][es()d] |
+ d2\sf [b8-. d-.][d()c] |
+ d2\sf [b8-. d-.][d()c] |
+ des2\sf [bes8-. d-.][d()c] |
+ %45
+ c2\sf [a8-. c-.][c()bes] |
+ r4[a8-. c-.][c()bes] r4 |
+ r4[a8-. c-.][c()bes] r4 |
+ r4[a8-. c-.][c()bes] r4 |
+ r4[a8-. c-.][c()bes][bes()a]|
+ %50
+ bes4 r r2 |
+ R1*5 |
+ g'2.\p-"cresc."( a4 | g f d ) bes | bes'2.( c4 | bes2 )as |
+ %60
+ [g16 bes bes bes][bes bes bes bes]bes2: |
+ %copied... \transpose c, violino-1(61,74)
+ bes: bes: |
+ bes:\ff des: | c: bes: |
+ as2.\p( bes4 |
+ %65
+ as g e )c | c'2.( des4 | c2 ) bes |
+ [as16-"cresc." c c c][c c c c] c2:16 | c: c: |
+ %70
+ c:\ff es: | d: c: | bes2.\p-"cresc."( c4 | bes a fis ) d |
+ d'\sf\>( as g )\!f |
+ %75
+ % nono, only looks like transpose
+ r8[c'\p(g)c]r[bes(g)bes] | r[g(es)g]r[g(d)g] |
+ r[g(es)g]r[g(e)g]|r8 fis-.\pp fis4. fis8-. fis4~|
+ % urg, can't copy: \transpose g \violino-1(75,91)
+ % a -> fis
+ % bes -> g
+ % c -> a
+ % d -> bes
+ [fis8 fis-.] fis4. fis8-. fis4~|
+ %80
+ [fis8 g-.] g4. g8-. g4~|
+ [g8 g-.] g4. g8-. g4~|
+ [g8 a-.] a4. a8-. a4~|
+ [a8 bes-.] bes4. bes8-. bes4|
+ % different
+ a2:16\ff a4: bes: | c: bes: c: bes: |
+ a2:16 a4: bes: | c: bes: c: bes: |
+ b2: b4: c: | f: es: f: es: |
+ %90
+ b2: b4: c: | f: es: f: es: |
+ % copied: \transpose c, \violino-1(92,95)
+ r8 es as,4\sf~as()g |
+ r8 es' as,4\sf~as()g |
+ r8 es' as,4\sf~as()g |
+ %95
+ r8 es' as,4\sf~as()g |
+ % transpose viola...
+ [es16 as as as]as4:16[fis16 a a a]a4:16 |
+ [d,16 g g g]g4:16[e16 g g g]g4:16 |
+ [c,16 f f f]f4:16[c16 es es es]es4:16 |
+ [c16 a' a a]a4:16[c,16 g' g g]g4:16 |
+ %100
+ [fis8 d]d4. es8 es4~|
+ [es8 c-.]c4. d8-. d4 |
+ g,\p r r2 |
+ r2 r4 r8 <d'\f a'> |
+ <d4 bes'> r r2 |
+ %105
+ r2 r4 r8 <d\f a'> |
+ <d4 bes'> r r r8 a'\p |
+ g4 r r r8 f |
+ es4 r r r8 d |
+ c4 r8 g fis4 r8 c' |
+ % looks lot like violino-1 110-113
+ %110
+ bes4\f r8 es d4 r8 a |
+ g4 r8 c bes4 r8 f |
+ es4 r8 a g4 r8 cis |
+ <[d16 s> <bes g'> <bes g'> <bes g']> <a4:16 fis':> <a2:16 fis':> |
+ <bes: g':> <bes: g':> |
+ <bes: g':> <bes: g':> |
+ <bes: g':> <bes: g':> |
+ <bes: g':> <bes: g':> |
+ <bes4\p g'> r r2 |
+ % copied... urg: *same* as violino-1(119,128)
+ % URG: or is this R1*10??
+ % should hara-kiri like viola-1/2...
+ a'4 r8 es' d4 r8 a |
+ %120
+ b4 r8 es des4 r8 bes | as!4 r8 es' des4 r8 as | g4 r r2 |
+ r4 r8 es' des4 r8 as | g4 r r2 |
+ %125
+ r4 r8 c bes4 r8 e, |
+ as4 r8 des c4 r8 as |
+ g4 r8 des' c4 r8 g |
+ as4 r8 es' des4 r8 as |
+ R1*3
+ %131
+ % copied from viola(131,140)
+ [as,8 as c es][f es c as]|[a c es f][ges f c a]|
+ [bes des f ges][as ges des bes]|
+ %135
+ [c es g as][bes as es c]|[des\p f a bes][c, es g as]|
+ % [bes, des f ges][as, c e f]|[ges, bes d es][f, as c des]|
+ % urg, copied, but nog ges, f, on violino!
+ [bes, des f ges][as, c e f]|r [bes, d es]r[as, c des]|
+ % [es, ges bes des][as c es as,]|
+ r[bes bes des][as c es ges]|
+ % copied: \transpose c \violino-1(140,149)
+ %140
+ f4\f r8 bes as4 r8 es | des4 r8 ges f4 r8 c |
+ bes4 r8 e f4 r8 bes, | bes4 r8 g'! es4 r8 bes' |
+ as4\p r8 des-"cresc." c4 r8 g |
+ %145
+ f4 r8 bes as4 r8 es | des4 r8 g f4 r8 c | bes4 r8 f' e4 r8 bes' |
+ as4\ff r8 des c4 r8 g | f4 r8 bes as4 r8 es |
+ % copied somewhat from violino-1(150,168)
+ %150
+ des4 r8 g f4 r8 c | des4 r8 f' c,4 r8 e' |
+ f,1\ff ~ | f | <f4 des'> r r2 |
+ %155
+ R1 |
+ f1 ~ | f |
+ <d2\sf d'!> [f8-. as-.][as()g] |
+ <d2\sf d'> [f8-. as-.][as()g] |
+ %160
+ R1 |
+ [b,8-. es-.][es()d] [d-. g-.]g4-"ten." | R1 |
+ <e2\ff des'> [e8-. g-.][g()f] |
+ <e2\sf des'> [e8-. g-.][g()f] |
+ %165
+ R1
+ [bes,8-.\p g'-.][g()f][e-. g-.]g4-"ten." |
+ R1 |
+ % copied \transpose c' viola(168, 175)
+ r4 [e8-.\ff g-.][g()f] r4 |
+ r4 [e8-. g-.][g()f] r4 |
+ %170
+ r4 [e8-. g-.][g()f] r4 |
+ r4 [e8-. g-.][g()f][fis-.fis-.] |
+ g4 [fis8-.as-.][as()g] r4 |
+ r4 [fis8-.as-.][as()g] r4 |
+ r4 [fis8-.as-.][as()g] r4 |
+ %175
+ r4 [fis8-.as-.][as()g] es'4\sf(|
+ % copied violino-1(176,201)
+ )d1\> ~ | d4( b g \!)f
+ e2.\p( f4 |
+ e d b ) g |
+ %180
+ g'2.( a4 | g2 )f |
+ e4 g2-"cresc." g4 ~ |
+ g g2 g4 ~ |
+ g g2 g4 ~ |
+ %185
+ g g2 g4 |
+ [g16 g g g][g g g g]g2:16 | g: g: | g:\ff bes: | a: g: |
+ %190
+ f2.\p( g4 | f e cis ) a | a'2.( bes4 | a2 ) g |
+ [f16-"cresc." a a a][a a a a]a2:16 |
+ %195
+ a2 a | a2:16\ff c: | b: a: | g2.\p( a4 | g\< fis dis ) b |
+ %200
+ b'1 ~ | \!b
+ % similar violino-1 only until 219
+ [c8\f\>g(c)g]r[bes(g)\!bes] |
+ r[as\p(f)as]r[g(es)g] |
+ r[f(c)f]r[g(es)g] |
+ %205
+ r[as(d,)as']r[a(es)a] |
+ [g-. b-.]b4. b8-. b4 ~ |
+ [b8-. b-.]b4. b8-. b4 ~ |
+ [b8-. c-.]c4.-"cresc." c8-. c4 ~ |
+ [c8-. c-.]c4. c8-. c4 ~ |
+ %210
+ [c8-. d-.]d4. d8-. d4 ~ |
+ [d8-. es-.]es4. es8-. es4 |
+ as,2:16\ff as4: g: | f: es: f: es: |
+ as2:16\ff as4: g: | f: es: f: es: |
+ des'2:16\ff des4: c: | bes: as: bes: as: |
+ des2:16\ff des4: c: | bes: as: bes: as: |
+ % copied violino-1(220, 223)
+ %220
+ r8 as des,4\sf ~ des()c |
+ r8 as' des,4\sf ~ des()c |
+ r8 as' des,4\sf ~ des()c |
+ r8 as' des,4\sf ~ des()c |
+ % looks lot like viola...
+ [f16 f as as]f4:16[d16 d g g]d4:|
+ %225
+ [c16 c g' g]c,4:16[c16 c f f]c4:|
+ [b16 b f' f]b,4:16[c16 c f f]c4:|
+ [d16 d f f]d4:16[c16 c f f]c4:|
+ [d8 g,] g'4. as8 as4 ~ |
+ [as8 as] f4. f8 g4 |
+ %230
+ c,4\p r r2 |
+ r2 r4 r8 <g\f d'> |
+ <g4 es'> r r2 |
+ r2 r4 r8 <g\f d'> |
+ <g4 es'> r r2 |
+ %235
+ R1*3 |
+ %copied violino-1(238,243)
+ es'4\f r8 as g4 r8 d |
+ c4\f r8 f es4 r8 bes |
+ %240
+ as4-. des-. r2 | R1*3 |
+ %245
+ [g,8\p( e' c e][g e c )g~] |
+ [g8( d' b d][g d b )g~] |
+ [g8( e' c e][g e c )g~] |
+ [g8( f' d f][g f d )g,~] |
+ [g8( es'! c es][g es c )g~] |
+ [g8( d' b d][g d b )g~] |
+ %250
+ [g8( es' c es][g es c )g~] |
+ [g8( f' d f][g f d )g,~] |
+ [g8( es' c es][g es c )g~] |
+ [g8( d' b d][g d b )g~] |
+ [g8( es' c es][g es c )g] |
+ %255
+ <c2:16\f es:> <c: es:> |
+ [as8\p( f' des f][as f des )as] |
+ <d2:16\f f:> <d: f:> |
+ [bes8\p( g' es g][bes g es )bes] |
+ <c2:16\f g':> <c: g':> |
+ %copied viola-1(260, 273)
+ %260
+ [f8\p-"cresc." f']f4. es8 es4 ~ |
+ [es8 as]as4. g8 g4 ~ |
+ [g8 f]f4. es8 es4 ~ |
+ [es8 as]as4. g8 g4 |
+ r r8 d\ff es4.\sf()d8 |
+ %265
+ r4 r8 d es4.\sf()d8 |
+ r4 r8 e f4.\sf()e8 |
+ r4 r8 e f4.\sf()e8 |
+ r4 r8 e g4.\sf()f8 |
+ r4 r8 f as4.\sf()g8 |
+ %270
+ g2:16-"sempre" g:\ff | g: g: | g: g: | g: g: |
+ g4. d8 es4. d,8 |
+ %275
+ es4 r8 b8 c4 r8 b |
+ c1 ~ | c | <f4 c' as'-.> r r2 | R1
+ c1 ~ | c | <d4 b' as'-.> r r2 | R1
+ c1 ~ | c | <c'4-. a'-.> <b-. as'-.> r2 | R1 |
+ <c4-. g'-.> <g-. c-.> r2 | as4-. <c,-. e-.> r2 |
+ %290
+ <c4 f-"dim."> r g' r | R1 | g4\p r r2 | R1 | b,4-"pizz." r r2 |
+ %295
+ R1 | c4 r r2 | R1*15 |
+ c4-"pizz." r r2 |
+ c4 r r2 |
+ c4 r r2 |
}
$violino2_staff = \type Staff = violino2 <
- \property Staff.instrument = "violin"
+ % MIDI hoort geeneens verschil tussen een
+ % eerste en tweede viool ;-)
+ \property Staff.midi_instrument = "violin"
+ \property Staff.instrument = "Violino II"
+ \property Staff.instr = "Vl. II"
\melodic<
- \global;
+ \global
\$violino2
>
>
diff --git a/mutopia/Coriolan/violoncello-part.ly b/mutopia/Coriolan/violoncello-part.ly
new file mode 100644
index 0000000000..bec6971a1a
--- /dev/null
+++ b/mutopia/Coriolan/violoncello-part.ly
@@ -0,0 +1,20 @@
+\header{
+filename = "violoncello-part.ly";
+% %title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description = "";
+composer = "Ludwig van Beethoven (1770-1827)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "violoncello.ly"
+
+\score{
+ \$violoncello_staff
+ \include "part-paper.ly"
+ \midi{ \tempo 4 = 160; }
+}
+
diff --git a/mutopia/Coriolan/violoncello.ly b/mutopia/Coriolan/violoncello.ly
index 4d994a1317..085b31dbf5 100644
--- a/mutopia/Coriolan/violoncello.ly
+++ b/mutopia/Coriolan/violoncello.ly
@@ -2,30 +2,311 @@
filename = "violoncello.ly";
%title = "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
description = "";
-composer = "Ludwig van Beethoven (1770-1792)";
+composer = "Ludwig van Beethoven (1770-1827)";
enteredby = "JCN";
copyright = "public domain";
}
-\version "0.1.14";
+\version "1.0.0";
-violoncello = \melodic{
- \octave c;
- c1\ff ~ | c | f,4-. r r2 | r1 |
- c1\ff ~ | c | f,4-. r r2 | r1 |
- c1\ff ~ | c | fis,4-. r r2 | r1 |
- g,4-. r r2 | g,4-. r r2 |
+violoncello = \melodic \relative c {
+ c1\ff ~ | c | f,4-. r r2 | r1 | c'1\ff ~ | c | f,4-. r r2 |
+ \property Staff.instr = "Vc. \& Cb."
+ r1 |
+ c'1\ff ~ | c | fis,4-. r r2 | r1 |
+ g4-. r r2 | g4-. r r2 |
c4\p r4 r2 | c4 r4 r2 | c4 r4 r2 | r1 |
- c'4.-"cresc." c'8 bes4. bes8 | as4. as8 g4\f r4 |
+ c'4.-"cresc." c8 bes4. bes8 |
+ %20
+ as4. as8 g4\f r4 |
+ R1 |
+ % 4 bars same as violino-1...
+ [bes,!8\p-. des-.][des()c][c-. f-.]f4-"ten." |
+ [bes,!8\p-. des-.][des()c][c-. f-.]f4-"ten." |
+ [bes,!8\p-. des-.][des()c][c-. ges'-.][ges()f] |
+ %25
+ [f-. bes-.][bes()a][a-. es'-.][es()des]|
+ bes4.-"cresc." bes8 as4. as8 | g4 g4-.\f r2 | R1
+ as4.\p as8 g4. g8 | f2.-"cresc" g4 | f2. g4 |
+ f4. g8 f4. g8 |
+ f4. g8 f4. g8 |
+ as1\ff ~ |
+ %35
+ as4(g f)es|
+ d4. r8 c4. r8 | b4. r8 c4. r8 | bes4. r8 as4. r8 | g4. r8 f4. r8 |
+ %40
+ fis2\sf [c'8-. es-.][es()d]
+ fis,2\sf [c'8-. es-.][es()d]
+ f,!2\sf [b8-. d-.][d()c]
+ f,2\sf [b8-. d-.][d()c]
+ e,2\sf [bes'!8-. des-.][des()c]
+ %45
+ es,!2\sf [a!8-. c-.][c()bes] |
+ d,4 [a'!8-. c-.][c()bes] es,4\sf(|
+ )d4 [a'!8-. c-.][c()bes] es,4\sf(|
+ )d4 [a'!8-. c-.][c()bes] es,4\sf(|
+ )d4 [a'!8-. c-.][c()bes] es,4\sf(|
+ %50
+ )d4 r r2 |
+ R1 |
+ [bes'8\p(g'es g][bes g es)bes~] |
+ [bes(f'd f][bes f d)bes~] |
+ [bes(g'es g][bes g es)bes~] |
+ %55
+ [bes(as'f as][bes as f)bes,~] |
+ [bes-"cresc."(g'es g][bes g es)bes~] |
+ [bes(f'd f][bes f d)bes~] |
+ [bes(g'es g][bes g es)bes~] |
+ [bes(as'f as][bes as f)bes,~] |
+ %60
+ [bes(g'es g][bes g es)bes~] |
+ [bes(f'd f][bes f d)as] |
+ g2\ff f | e c |
+ [f8\p(as'f as][c as f)c~] |
+ [c(g'e g][c g e)c~] |
+ [c(as'f as][c as f)c~] |
+ [c(bes'g bes][c bes g)c,~] |
+ [c(as'f as][c as f)c~] |
+ [c(g'e g][c g e)bes] |
+ %70
+ as2\ff g | fis d |
+ [g8\p-"cresc."(bes' g bes][d bes g)d~] |
+ [d8(a' fis a][d a fis)d] |
+ [f!8\sf\>(as f as][f g d)\!g] |
+ %75
+ c,4\p r d r | es r d r | c r cis r |
+ d\pp r8 d d4. d8 |
+ r4 r8 d d4. d8 |
+ %80
+ r4 r8 d d4.-"cresc." d8 |
+ r4 r8 d d4. d8 |
+ r4 r8 d d4. d8 |
+ r4 r8 d d4. d8 |
+ c'2.\ff()bes4 | a(g a)g|
+ c2.()bes4 | a(g a)g|
+ f!2.()es4 | d(c d)c|
+ %90
+ f2.()es4 | d(c d)c|
+ c r8 c' c4\sf()des|
+ r r8 c c4\sf()des|
+ r r8 c c4\sf()des|
+ %95
+ r r8 c c4\sf()des|
+ c,4. c'8 c,4. c'8 |
+ b,4. b'8 bes,4. bes'8 |
+ as,4. as'8 g,4. g'8 |
+ fis,4. fis'8 es4. es8 |
+ %100
+ d4 r8 d es4 r8 es |
+ c4 r8 c d4 r8 d |
+ % copied \transpose c, viola-1(102, 130)
+ % except for some abbrevs below...
+ [g8\p bes cis d][es d bes g]|
+ [fis a cis d][es d a fis\f] |
+ [g bes cis\p d][es d bes g]
+ %105
+ [fis a cis d][es d a fis\f] |
+ [g bes cis\p d][f, a cis d] |
+ [es, g b c][d, g a bes] |
+ % [c, es g a]r[d, fis g] |
+ [c, es g a][bes, d fis g] |
+ % r[c, es g][d fis a d] |
+ [a, c es g][d fis a d] |
+ %110
+ % cello has eighth notes here...
+ % [g,16 g bes bes][d d es es][f, f a a][cis cis d d] |
+ % see if this:8 neat trick works...
+ [g,:8 bes d es][f, a cis d] |
+ [es,8: g: b: c!:][d,: f: a: bes:] |
+ [c,: es: g: a:][cis,: e: g: bes:] |
+ [d,: g: bes: d:][d,: fis: a: d:] |
+ g,,2 ~ g4. g8 |
+ %115
+ g2 ~ g4. g8 |
+ g4. g8 g4 r8 g |
+ g4. g8 g4 r8 g |
+ % urg, 2 copied from 102
+ [g'8\p bes cis d][es d bes g]|
+ [fis a cis d][es d a fis] |
+ %120
+ [g bes c des][c des bes g]|[f as c des][c des as f]|
+ [e g b c][b c g e]|[f as b c][b c as f]|
+ [e g b c][b c g e]|
+ %125
+ [c e fis g][fis g e c]|[f as b c][des c as f]|
+ [e g b c][des c g e]|[f as c des][c des as f]|
+ [g bes d es][d es bes g]|[as-"cresc." c d es][f es c as]|
+ %131
+ [g bes d es][f es bes g]|
+ % shared with viola until here
+ as1 ( | a | bes | )c | des2\p( c | bes as | ges f | )es [as,8 c es as] |
+ %140
+ % copied from viola-1 (140,152)
+ % except cello has eighth notes
+ % [des,16\f des f f][a a bes bes][c, c es es][g g as as]|
+ [des,8\f f a bes][c, es g as]|
+ [bes,8:8 des: f: ges:][as,: c: e: f:]|
+ [g,: bes: c: des:][f,: bes: c: des:]|
+ [e,: g: bes: des:][c: e: g: c:]|
+ %shared with cello from here on
+ [f,8\p-"cresc." as c des][es, g b c]|[des, f a bes][c, es g as]|
+ % uhuh, still 'same as cello';
+ % but now rests for notes that viola cannot reach...
+ % r[des, e g]r[c, e f]|
+ [bes, des e g][as, c e f]|
+ % hmm, don't want to miss more than one note,
+ % take bes octave higher
+ % r[bes des, f][c e g c]|
+ [g, bes des f][c e g c]|
+ % cello has eight notes;
+ % viola has rest where can't reach
+ [f,:\ff as: c: des:][es,: g: b: c:]|
+ [des,: f: a: bes:][c,: es: g: as:]|
+ %150
+ % r[des,16 des][e e g g]r8[c,16 c][e e f f]|
+ [bes, des e g][as, c e f]|
+ % r8[des16 des][f f g g][c, c e e][g g c c]|
+ [bes, des f g][c, e g c]|
+ f,1\ff ~ | f | bes,4-. r r2
+ %155
+ R1 |
+ f'1\ff ~ | f |
+ b,2\sf [f'8-. as-.][as()g] |
+ b,2\sf [f'8-. as-.][as()g] |
+ %160
+ R1*3 |
+ bes,!2\ff [e8-. g-.][g()f] |
+ bes,2\sf [e8-. g-.][g()f] |
+ %165
+ R1*2 |
+ r2 r4 bes,\ff(|
+ )as4 [e'8-. g-.][g()f] bes,4\sf(|
+ )as4 [e'8-. g-.][g()f] bes,4\sf(|
+ %170
+ )as4 [e'8-. g-.][g()f] bes,4\sf(|
+ )as4 [e'8-. g-.][g()f][fis-. fis-.] |
+ g4 [fis8-. as-.][as()g] c,4\sf(|
+ )b4 [fis'8-. as-.][as()g] c,4\sf(|
+ )b4 [fis'8-. as-.][as()g] c,4\sf(|
+ %175
+ )b4 [fis'8-. as-.][as()g] c,4\sf(|
+ )b4 r r2 | R1 |
+ [g8\p(e' c d][g e c )g~] |
+ [g(d' b d][g d b )g~] |
+ %180
+ [g(e' c d][g e c )g~] |
+ [g(f' d f][g f d )g,~] |
+ [g-"cresc."(e' c d][g e c )g~] |
+ [g(d' b d][g d b )g~] |
+ [g(e' c d][g e c )g~] |
+ %185
+ [g(f' d f][g f d )g,~] |
+ [g(e' c d][g e c )g~] |
+ [g(d' b d][g d b )g~] |
+ e2\ff d' | cis a ~ |
+ %190
+ [a8( f' d f][a f d )a!~] |
+ [a( e' cis e][a e c )a!~] |
+ [a8( f' d f][a f d )a!~] |
+ [a( g' e g][a g e )a,!~] |
+ [a8-"cresc."( f' d f][a f d )a!~] |
+ %195
+ [a( e' cis e][a e c )g] |
+ f2\ff e | dis b'~ |
+ [b8\p( g' e g][b g e )b!~] |
+ [b8\<( fis' dis fis ][b fis dis )b!~] |
+ %200
+ [b8\p( g' e g][e g e )g] |
+ [f(g f g][f g f)\!g] |
+ es!4\fp r e r | f r g r | as r g r | f r fis r |
+ g r g r | g r g r | g r g-"cresc." r |
+ g r g r | g r g r | g r g r |
+ f2.\ff()es4 | d( c d )c |
+ f2.\ff()es4 | d( c d )c |
+ bes2.\ff()as4 | g( f g )f |
+ bes2.\ff()as4 | g( f g )f |
+ %220
+ r4 r8 f' f4\sf()ges |
+ r4 r8 f f4\sf()ges |
+ r4 r8 f f4\sf()ges |
+ r4 r8 f f4\sf()ges |
+ f4. f'8 f,4. f'8 |
+ %225
+ e,4. e'8 es,4. es'8 |
+ d,4. d'8 c,4. c'8 |
+ b,4. b'8 as,4. as'8 |
+ g,4 r8 g as4 r8 as |
+ f4 r8 f g4 r8 g |
+ %230
+ [c8\p es fis g][as g es c]|
+ [b d fis g][as g d b\f]|
+ [c es fis\p g][as g es c]|
+ [b d fis g][as g d b\f]|
+ [c es g\p as][bes, d fis g]|
+ %235
+ [as, c e f!][g, bes d es]|
+ [f, as c d][es g b c]|
+ [d, f as c][g, b d g]|
+ [c,\f e g as][bes, d fis g]|
+ [as, c e f!][g, bes d es]|
+ %240
+ f4 r r2 | R1*3 |
+ c4\p r r r8 c(|
+ )f4 r r r8 f(|
+ )e4 r r r8 e(|
+ )b4 r r r8 b(|
+ )c4 r r r8 c(|
+ %250
+ )f4 r r r8 f(|
+ )es4 r r r8 es(|
+ )b4 r r r8 b(|
+ )c4-"cresc." r r r8 c(|
+ )f4 r r r8 f,(|
+ )es1 | ges\f | f\p | as\f | g!\p |
+ %260
+ bes\f |
+ as4.\p-"cresc." as'8 g4. g8 | f4. f8 es4. es8 |
+ as4. as8 g4. g8 | f4. f8 es4. es8 |
+ %265
+ f,4.\ff f'8 f2\sf |
+ f,4. f'8 f2\sf |
+ g,4. g'8 g2\sf |
+ g,4. g'8 g2\sf |
+ as,4. as'8 as2\sf |
+ %270
+ a,4. a'8 a2\sf |
+ [c,8-"sempre" b c d][es\ff d es c]|
+ [b c d c][b c b g]|
+ [c8 b c d][es d es c]|
+ [b c d c][b c b g]|
+ [c b c g][c b c g]|
+ %275
+ [c b c g][c b c g]|
+ c1 ~ | c | f4-. r r2 | R1 |
+ c1 ~ | c | f4-. r r2 | R1 |
+ c1 ~ | c | fis4-. f-. r2 | R1
+ es4-. e-. r2 | f,4-. g-. r2 | as4-"dim." r b r | R1 | c4 r r2 R1 |
+ g4-"pizz." r r2 | R1 | c4 r r2 |
+ [c8-.-"arco" es-.][es()d][d-. as'-.][as()g] | R1
+ \[/3 c,4-"sempre pi\\`u piano" ( es c ~ \] \[/3 c as' )g \] |
+ r2 r4 c,( | es2. ) d4 | r2 r4 d( | as'2. )g4 ~ | g1 ( |
+ %305
+ es | )d( | )as'\> ~ | as ~ | as2.()\!g4 | c,\pp r r2 | R1 |
+ c4-"pizz." r r2 |
+ c4 r r2 |
+ c4 r r2 |
}
$violoncello_staff = \type Staff = violoncello <
- \property Staff.instrument = "cello"
+ \property Staff.midi_instrument = "cello"
+ \property Staff.instrument = "Violoncello"
+ \property Staff.instr = "Vc."
\clef "bass";
- \melodic<
- \global;
+ \melodic \type Voice=one<
+ \global
\$violoncello
>
>
+
diff --git a/mutopia/J.S.Bach/Makefile b/mutopia/J.S.Bach/Makefile
index 8512f242c7..2b734e09c6 100644
--- a/mutopia/J.S.Bach/Makefile
+++ b/mutopia/J.S.Bach/Makefile
@@ -1,22 +1,14 @@
# mutopia/J.S.Bach/Makefile
-# subdir level:
-#
depth = ../..
-#
-EXTRA_DISTFILES=preludes-3.lym4
+SUBDIRS = Petites-Preludes Solo-Cello-Suites
-# descent order into subdirectories:
-#
-SUBDIRS =
-#
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
-# generic stuff/Makefile
-#
-include ./$(depth)/make/Mutopia.make
-#
+EXTRA_DIST_FILES=
-examples=scsii-cello wtk1-fugue2 preludes-2
+examples=wtk1-fugue2
-include $(depth)/make/WWW.make
+include $(stepdir)/WWW.make
diff --git a/mutopia/J.S.Bach/Petites-Preludes/Makefile b/mutopia/J.S.Bach/Petites-Preludes/Makefile
new file mode 100644
index 0000000000..1a1020a879
--- /dev/null
+++ b/mutopia/J.S.Bach/Petites-Preludes/Makefile
@@ -0,0 +1,12 @@
+# mutopia/J.S.Bach/Petites-Preludes/Makefile
+
+depth = ../../..
+
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
+
+EXTRA_DIST_FILES=
+
+examples=preludes-2
+
+include $(stepdir)/WWW.make
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly
new file mode 100644
index 0000000000..0c111fa734
--- /dev/null
+++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly
@@ -0,0 +1,119 @@
+\header{
+filename = "preludes-1.ly";
+% mmm
+% title = "DOUZE PETITES PR\\'ELUDES";
+opus = "BWV 924";
+% piece = "\\numfont 1";
+piece = "1";
+% blz 1
+% Clavierb"uchlein f"ur W. Fr. Bach
+% Clav. W. Fr. Bach: 2-Praeambulum I
+% ca 1720
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+}
+
+\version "1.0.0";
+
+one = \melodic\relative c {
+ \property Voice . textstyle = "italic"
+ r16\p_"legato"\< [g''-1( c-3 )e-5] r [g,-1( c )e]
+ r [g,( c )d] r [b-1( d-2 \!)g-5] |
+ r\mf [a,( d-2 ) g-5] r [a,(\< d )f-4]
+ r [a,( d )e-3] r [c-1( e-2 \!)a-5] |
+ r\f [b, e a-5] r [b, e-3 g-5]
+ r [c,-1 e-3 f-4] r [g, d'-3 f-5] |
+ r [g,-"poco a poco dim." d'-4 e] r [g, c-2 e]
+ r [a,-1 c-3 d-4] r [e, b'-3 d-5] |
+ r [e, b' c-4] r [e, a-2 c]
+ r [f,-1 a-3 bes-4] r [c, g'-3 bes-5] |
+ r [c, g' a-4] r [c, f-2 a]
+ r [d, f-2 b-5] r [e, g-2 c-5] |
+ r\p [d, g c-5] r [d, g b-4]
+ r [c, g'-3 b-5] r [c, fis-2 a-4] |
+ r [b, d a'-5] r [b, d g-4]
+ r [a, c g'-5] r [a, c f!-4] |
+ % ugh arpeggio
+ <
+ { \voiceone f4 r s }
+ { \voicetwo <g,4 d'> r s }
+ >
+ \onevoice
+ % ugh beam across staffs slur starts at lower staff
+ r16 [g,-1( b d] |
+ \voiceone
+ )b s4 [g'16-1( b-2 d] )b s s s [f'-2 g-3 b-5 f-2] |
+ \onevoice
+ [e-1\f c'-5( g-3 f-2] [e-1 c'-5 g-3 e-2]
+ [)d c'-5( f,-3 e-2] [d-1 b'-5 f-3 d-2] |
+ [)c b'-5( e,-3 d-2] [c-1 a'-5 e-3 c-2]
+ [)b-1 a'-5( d,-3 c-2] [b-1 g'-5 d-3 b-2] |
+ [)a g'-5 c,-4 b] [a-"poco a poco dim." fis'-5 c-2 a-1]
+ [b-2 f' d-4 c] [b f' d-4 b-2] |
+ [g e' c-3 b] [a e'-5 c-3 a-1]
+ [fis-2 d' b-3 a] [g-1 d'-5 b-4 g-2] |
+ [e c'-5 a-4 g-3] [fis-2 c'-5 a-4 fis-2]
+ [d c'-5 b-4 a] [b-4 g-2 d'-5 f,-1] |
+ [g-4 e-2 f-1 d'-5] [c-4 b a g]
+ [f'-5 d-3 es-4 c-2] [fis,-1 es'-4 d-3 c-2] |
+ [b-1 d-5 b-3 g-1] [as-4-"cresc. e rall." f-2 g-3 d-1]
+ [es-2 fis-3 a-4 c-5]
+ <
+ { \voiceone r [c8 b16] }
+ { \voicetwo [d,8 f-2] }
+ >
+ \onevoice |
+ <c1\mf g e>
+ \bar "|.";
+}
+
+two = \melodic\relative c{
+ \property Voice . textstyle = "roman"
+ c4-5 e-3 g-\mordent^"(\\textsharp)" g,4 |
+ d'-\mordent-5 f-3 a-\mordent^"(\\textsharp)" a,4 |
+ e'-5 e'-\mordent-1 a,-4 b-\upprall |
+ c4 e,-4 fis gis-\downprall |
+ a4 c,-4 d e-\upprall |
+ f4-1 e d-3-\prall c |
+ g'-\mordent^"(\\textsharp)" g, g'-\mordent g, |
+ g'-\mordent g, g'-\mordent g, |
+ % ugh f should be at upper staff
+ g'-\mordent r r16 [g,-5( b-4 d] )f-1 s s s |
+ s [g-5( b-4 d-2] )f-1 s s s s \clef "violin"; [g-4 b-2 d-1]
+ s s s s \clef bass; |
+ <
+ { \voiceone g,,1 ~ g ~ g ~ g ~ g ~ g ~ g }
+ { \voicetwo g,1 ~ g ~ g ~ g ~ g ~ g ~ g }
+ >
+ <c,1 c,>
+ \bar "|.";
+}
+
+global = \melodic{
+ \time 4/4;
+}
+
+treble_staff = \type Staff = treble <
+ \global
+ \one
+>
+
+bass_staff = \type Staff = bass <
+% bass = Staff <
+ \clef "bass";
+ \global
+ \two
+>
+
+grand_staff = \type GrandStaff <
+ \treble_staff
+ \bass_staff
+>
+
+\score{
+ % Moderato
+ \grand_staff
+ \include "preludes-paper.ly";
+ \midi{ \tempo 4 = 80; }
+}
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly
new file mode 100644
index 0000000000..585f74e7c5
--- /dev/null
+++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly
@@ -0,0 +1,130 @@
+\header{
+filename = "preludes-2.ly";
+title = "2";
+opus = "BWV 939";
+% urg?? piece = "\\numfont 2";
+piece = "2";
+% blz 10
+%
+% Six Petits Pr eludes
+% Collection Johann Peter Kellner
+% ca 1703- 1707
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+}
+
+\version "1.0.0";
+one = \melodic\relative c{
+ \property Voice . textstyle = "italic"
+ r8\mf [c'-1( e-2 g-4] [e-2 c-1 bes'-5 g-3] |
+ [)a-4\< c,-1( f-2 a-4] [f c c'-5 a-3] |
+ [)b-4 g-1( b-2 d-4] [b-2 g f'-5 \!d-3] |
+ <
+ {\voiceone )e2-4\f r4 e-5 }
+ \type Voice = second {\voicetwo <c2 g > r4 <c g > }
+ >
+ \onevoice |
+ \type Staff <
+ { \voiceone d2-4 r4 d-4 }
+ \type Voice = second { \voicetwo <c2 a > r4 <c a > }
+ >
+ \onevoice |
+ \type Staff <
+ { \voiceone d8 }
+ \type Voice = second { \voicetwo <b 8 g > }
+ >
+ \onevoice
+ [g, 8-1\mf( b-2 d-4]
+ <
+ { \voiceone )b 4 e-5 }
+ \type Voice = second { \voicetwo g, 4 b }
+ >
+ \onevoice |
+ \type Staff <
+ { \voiceone c2 r4 < {c-5 ~ c8} {a 4 ~ a 8} > }
+ { \voicetwo c2 r4 e, 4 ~ e 8 }
+ >
+ \onevoice
+ [d,-1\p( fis-2 a-4] [fis-2 d-1 c'-5 a-3] |
+ [)b-4\< g-1( b-2 d-4] [ b-2 g-1 f'!-5 d-3] |
+ [)e-4 g,-1( c-2 e-4] [c-2 g g'-5 e-3] |
+ [)fis-4 a,-1( c-2 fis-4] [c a a'-5 \!fis-3] |
+ <
+ { \voiceone )g2-5\f }
+ \type Voice = second { \voicetwo <d2 b > }
+ >
+ \onevoice
+ r4 b4-2( |
+ [c,8-1 e-2 g c ] [g-2 e-1 bes'-4 g-2] |
+ [)a16->-3 g-2 f-1 e-3] [d c b !-3 a-2]
+ [b-3\< g-1 a b ] [c-1 d e \!f] |
+ g4-5\ff
+ \type Staff <
+ { \voiceone c,2-5 b 4-4 }
+ { \voicetwo g 2-2 d 4-1 }
+ >
+ \onevoice
+ \type Staff <
+ { \voiceone c1^5 }
+ { \voicetwo e, 1_1}
+ >
+ \onevoice
+ \bar "|.";
+}
+
+two = \melodic\relative c{
+ \type Staff <
+ { \voiceone c1 ~ | c ~ | c }
+ { \voicetwo c,1 ~ | c ~ | c }
+ >
+ \onevoice |
+ r8 [c-5( e-3 g-1] [e-3 c-5 c' e,-4] |
+ [)fis-3 d-5( fis-3 a-1] [fis-3 d-5 d' fis,-4] |
+ )g2-3 r4 g-2( |
+ [)a8 a,-5( c-4 e-2] [c-4 a-5 g' e-3] |
+ )fis2 r4 d-4 |
+ g-\mordent-"(\\textsharp)" g, 4 g'-\mordent g, |
+ % mordents in brackets...
+ g'-\mordent g, g'-\mordent g, |
+ g'-\mordent g, g'-\mordent g, |
+ [g'8 g,-5( b-4 d-2] [b-4 g-5 f'!-1 d-3] |
+ [)e-2 c-4 e-2 g-1] [e-3 c-5 c' e,-4] |
+ \property Voice . textstyle = "finger"
+ f1^"3\\_1" ~ |
+ [f8 d-3 e-2 c-4] g'4-1 g,^"5\\_2" |
+ <c1 c,1>
+ \bar "|.";
+}
+
+global = \melodic{
+ \time 4/4;
+}
+
+trebleStaff = \type Staff = treble <
+ \global
+ \one
+>
+
+bassStaff = \type Staff = bass <
+ \clef "bass";
+ \global
+ \two
+>
+
+grandStaff = \type GrandStaff <
+ \trebleStaff
+ \bassStaff
+>
+
+a4 = \paper{
+ linewidth= 193.\mm;
+}
+
+\score{
+ % Moderato
+ \grandStaff
+ \paper{ \a4 }
+ \midi{ \tempo 4 = 100; }
+}
+
diff --git a/mutopia/J.S.Bach/preludes-3.lym4 b/mutopia/J.S.Bach/Petites-Preludes/preludes-3.lym4
index 1b85a51033..0b25e9f283 100644
--- a/mutopia/J.S.Bach/preludes-3.lym4
+++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-3.lym4
@@ -21,8 +21,10 @@ enteredby = "jcn";
copyright = "public domain";
}
-one = \melodic{
- \octave c`;
+\version "1.0.0";
+
+
+one = \melodic \transpose c`` {
\textstyle "italic";
%# s(^c@ ^es@ ^g@ ^\p(\<@ ^\!@ ^)\!@ ^\>@)
t(c,es,g,^\p(\<@,\!,^)\!@,\>)
@@ -85,7 +87,6 @@ one = \melodic{
}
two = \melodic{
- \octave c;
\clef bass;
% c4 r [g8-.(\ped )es-.\*] |
c4 r [g8-.( )es-.] |
@@ -149,7 +150,7 @@ two = \melodic{
global = \melodic{
\meter 3/4;
- \key bes es as;
+ \key es;
}
treble_staff = \type Staff = treble <
@@ -164,7 +165,7 @@ bass_staff = \type Staff = bass <
\two
>
-grand_staff = \type Grand_staff <
+grand_staff = \type GrandStaff <
\treble_staff
\bass_staff
>
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly
new file mode 100644
index 0000000000..66e95430a0
--- /dev/null
+++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly
@@ -0,0 +1,207 @@
+\header{
+filename = "preludes-4.ly";
+title = "4";
+opus = "BWV 925";
+% piece = "\\numfont 4";
+piece = "4";
+% blz 8
+% Clavierb"uchlein f"ur W. Fr. Bach
+% Clav. W. Fr. Bach: 27-Praeludium ex d neutral
+% ca 1720
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+}
+\version "1.0.0";
+
+one = \melodic\relative c{
+ \property Voice . textstyle = "italic"
+ r16\p_"legato"
+ \property Voice . textstyle = "finger"
+ [d'-1( fis-3 d-1] [a'-2 b-3 cis-4 a-3]
+ [d-3 cis-2 d-1 e-2] [d-1 fis-3 e-2 d-1] |
+ \property Voice . textstyle = "finger"
+ \stemup
+ )cis4-2 fis-5 ~ [fis8 fis-4] e4-3 ~ |
+ e16\< \stemboth [a,16( cis a] [d-2 e fis d-1]
+ [g-3 fis g a-4] [g-3 b a \!g] |
+ \stemup
+ )fis4-"2\\_3" [e8-2 a-5] <fis4-4 d-2> <gis-5 e-3> |
+ %5
+ <a4-5( e> <fis-4 d-2> <[)g!16-5 d> fis-2 g-3 a-4]
+ \stemboth
+ [g-3 b a g] |
+ \property Voice . textstyle = "italic"
+ [fis_"dim." e fis-3 g] [fis-3 a-5 g fis]
+ \property Voice . textstyle = "finger"
+ e4-"2\\_5" ~ e16 [e,( fis g ] |
+ \property Voice . textstyle = "italic"
+ [a-4_"dim." g-1 a b] [a-2 c-4 b a]
+ [g-1 fis-2 g-3 a] [g-3 b a g] |
+ \stemup
+ )fis4\p
+ \skip 4*7; |
+ %10
+ \property Voice . textstyle = "finger"
+ d'4.\mf cis8-"4\\_5" ~ cis b4-5 a8-"4\\_5" ~ |
+ \property Voice . textstyle = "italic"
+ a g4-5 fis8-4 ~ [fis16 fis-4-"dim." e-3 d-2]
+ \property Voice . textstyle = "finger"
+ e4-"3\\_5" ~ |
+ [e16 e-5 d cis] d4-5 ~ [d16 d-5 cis b] cis4-5 |
+ \stemboth
+ [fis,16-1\p a-2 d-5\< c-4] [b-1 d-2 g-5 fis-4]
+ [d-1 b'-5 a g] [fis-2 e-1 d-4 \!c!-3] |
+ [b-2 d-1 g a] [fis8-\prall e16-4 d-3]
+ [d8. e16~] [e d8 cis16] |
+ %15
+ \stemup
+ r16 [d-1\< fis d] [g a b g-1] [c-3 b c d] [c e d-4 \!c] |
+ b4-5 a ~ [a8 g-5 ~] [g16 fis8-4 e16-3] |
+ [fis8-4 e-5~] [e d-5~] d4 cis-4 |
+ d2\p-"rall." ~ [d16 a-2( b-3 cis-4] )d4-5 |
+ \bar "|.";
+}
+
+two = \melodic\relative c{
+ \property Voice . textstyle = "finger"
+ fis4-1( e8-2 a4 a4 gis8-2 |
+ ) a8
+ \translator Staff=treble \stemdown
+ a'4 a8 b4.-"2\\_1" cis8 ~ |
+ cis8
+ \translator Staff=bass \stemup
+ a,8 ~ [a d] ~ d d4-> cis8 |
+ d8
+ \translator Staff=treble \stemdown
+ d'4-> cis8-1 ~ cis b4-1 b8 |
+ %5
+ r8 a4 a8
+ \translator Staff=bass \stemup
+ [g8-1( fis-2] )e4-1 ~ |
+ e4 d ~ [d16 d-1 cis-2 b-1] cis4-2 ~ |
+ [cis8 a-3] d4.-1 d4^> cis8-2 |
+ \translator Staff=treble \stemdown
+ d4 \stemboth r16 [b-1\< d-2 b~] <g'4-5 e-3 b>
+ r16 [cis,-1 e-2 \!cis~] |
+ <a'4-5 fis-3 cis> r16 [d,-1 fis-2 d~] <b'4-5 g-3 d>
+ r16 [fis-1 a fis~] |
+ %10
+ \stemdown
+ fis4 e d cis |
+ b a b4. b8 |
+ a4
+ \translator Staff=bass \stemup
+ r16 [b-3 fis-1 a-2] g4-1 r16 [a-3 e-1 g-2] |
+ \skip 1*1;
+ s16
+ \translator Staff=treble \stemdown
+ d'8.-1 ~ [d8 c] d4 [a8 g] |
+ %15
+ \translator Staff=bass \stemup
+ [fis'8 c-1] b4-1 \stemdown <a
+ \translator Staff=treble \stemdown
+ a'4.-2>
+ \stemdown
+ a'8~ |
+ [a g-3~] [g16 e fis8~] [fis16 d8.~] [d8. cis!16] |
+ \translator Staff=bass \stemup
+ <
+ % { \voiceone [d,8-2 a~] a4 }
+ { \voiceone [d8-2 a~] a4 }
+ % { \voicethree [a,8-1 g] [fis16-2 e-1 fis-2 d-1] }
+ { \voicethree [a8-1 g] [fis16-2 e-1 fis-2 d-1] }
+ >
+ \voiceone
+ [g-1 fis-2 g-1 a-2] [g-1 b-3 a-2 g-1 ~] |
+ [g g-1 fis-2 e-1] fis4-2 ~ fis2
+ \bar "|.";
+}
+
+three = \melodic\relative c{
+% \stemdown
+ d4-3 c-4 b e-3 |
+ a16 [a,-5\mf( cis-3 a-5] [d-2 e-1 fis-2 d-4]
+ [g-1 fis-3 g a] [g b a g] |
+ )fis4 fis e a-4 |
+ d16 \stemboth [d,-5\f( fis-3 d-5] [a'-2 b-1 cis-2 a-4]
+ [d-1 cis-3 d e] [d-4 fis-2 e-1 ) d] |
+ %5
+ [cis-3 b-4 cis-3 d-2] [c-4 e-2 d-3 c-4]
+ \stemdown b4-5 [cis8-4 b-3(] |
+ [a-4 )fis-5 b-2 a-3] [gis-4 e-5 a-3 g-4] |
+ fis4. d8-5 e4-5 a4-3 |
+ \stemboth
+ r16 [d,-4( fis-2 d-4] [)g8-.-1 g,-.-5]
+ r16 [e'-4( g-2 e-4] [)a8-. a,-.-5] |
+ r16 [fis'-4( a fis] [)b8-. b,-.] r16 [g'-4( b g] [)d'8-. d,-.] |
+ %10
+ r16 [d,16-5( fis-3 d] [a'-2 b-1 cis-2 a-4] [d b-5 d-3 b]
+ [fis'-2 g a-2 fis-4] |
+ )fis16 [g,( b g] [d'-2 e fis-2 d-4] [)g8-. g,-.] r16 [cis-4( e cis] |
+ [)fis8-. fis,-.] \stemdown r16 [b-4( d b] [)e8-. e,-.]
+ r16 [a-4 cis a] |
+ \stemboth
+ [d-1 e-3 fis-2 d-4] [g-1 fis-2 e-3 d-1] [cis!-3 a-5 b cis]
+ [d-2 e fis-2 d-4] |
+ [g8 e-3] \stemdown [a a,] [b8.-4 g16-5] a4-4 |
+ %15
+ [d8-5 a'-2~] [a g-3~] [g g-3] fis4-4 |
+ \stemup
+ r16 [g-2 b-1 g-3] [d'8.-1 c16-1] [b8.-2 bes16-3] [a8-1 g] |
+ \stemdown
+ r16 [a,-2 cis!-1 a'-2] [d,-1 e fis d] [e8-1 d-2] [e-1 a,-2] |
+ [d a-2~] [a16 a-2 b cis-2] d2 |
+}
+
+four = \melodic\relative c{
+ \skip 1*9;
+% \stemup
+% \property Voice.hshift = 1
+ %10
+ a''2 fis |
+ d s |
+% \property Voice.hshift = 0
+ \skip 1*2; |
+ s4
+ \translator Staff=bass \stemup
+ a4 ~ [a16 d,-2 g8-1] [fis e-1] |
+ %15
+ \stemdown
+ d1 ~ |
+ d ~ |
+ d, ~
+ d2 d2
+}
+
+global = \melodic{
+ \time 4/4;
+ \key D;
+}
+
+treble_staff = \type Staff = treble <
+ \global
+ { \voiceone \one }
+ { \voicefour \four }
+>
+
+bass_staff = \type Staff = bass <
+% bass = Staff <
+ \clef "bass";
+ \global
+% { \voiceone \two }
+ { \type Voice = bone \skip 1*0; \property Voice.ydirection = \up \two }
+ { \voicetwo \three }
+>
+
+grand_staff = \type GrandStaff <
+ \treble_staff
+ \bass_staff
+>
+
+\score{
+ % Allegretto
+ \grand_staff
+ \include "preludes-paper.ly";
+ \midi{ \tempo 4 = 70; }
+}
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly
new file mode 100644
index 0000000000..5a2d50f848
--- /dev/null
+++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly
@@ -0,0 +1,225 @@
+\header{
+filename = "preludes-5.ly";
+title = "5";
+% piece = "\\numfont 5";
+piece = "5";
+opus = "BWV 926";
+% blz 2
+% Clavierb"uchlein f"ur W. Fr. Bach
+% Clav. W. Fr. Bach: 4-Praeludium 2
+% ca 1720
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+}
+\version "1.0.0";
+
+
+one = \melodic\relative c{
+ \property Voice . textstyle = "italic"
+ [d'8-1\p a'-5-"legato" f-3 d-1 a'-5 f-3] |
+ [d-1 a'-5 f-3 d-1 a'-5 f-3] |
+ [d-1\< bes'-4 g-2 d-1 bes'-4 \!g-2] |
+ [d-1 bes'-4 g-2 d-1 bes'-5 g-3] |
+ %5
+ [cis,-1\mf g'-4 e-2 cis-1 g'-4 e-2] |
+ [cis-1 bes'-5 g-4 e-2 a-5 g-4] |
+ [f-3\< d-1 f-2 a-4 f-1 a-2] |
+ [d-5 a-1 d-2 f-4 d-1 \!f-2] |
+ [b\> f-3 e d c-3 b] |
+ %10
+ [a gis-3 fis e d'-5 \!b-2] |
+ <
+ {
+ \voiceone
+ \property Voice . textstyle = "roman"
+ c4-\mordent^"(\\textsharp)"\p r r |
+ c4-\mordent^"(\\textsharp)" r r
+ \property Voice . textstyle = "italic"
+ }
+ { \voicetwo a4 r r | a4 r r }
+ > |
+ \onevoice
+ [a'8\mf( es-3\> d c bes!-3 a] |
+ [g fis-3 e!-2 d-1 c'-4 \!a] |
+ %15
+ [)bes8-\mordent\p( d8-5 bes-3 g-1] )g'4 |
+ r8 [d-5( c bes a-\prall g] |
+ [)a-2 c-4( a f] ) f'4 |
+ r8 [c-5 bes a g-\prall f] |
+ [g-2 bes-4 a g f-1 e-2] |
+ %20
+ [f-3 d-1 f-2 a-3 d-5 g,-2] |
+ <
+ {
+ \voiceone
+ % ... textnatural
+ [cis8-\prall e8-5-"poco cresc." cis-3 a e' cis]
+ }
+ { \voicetwo a4 }
+ >
+ \onevoice
+ [a8 e'-5 cis a bes!-3 a] |
+ [g e'-5 cis-3 g e'-5 cis-3] |
+ [g-1 e'-5 cis g a-3 g] |
+ [f-"dim." d'-5 bes f d' bes] |
+ %25
+ [f d'-5 bes f d' bes] |
+ [fis-2-"dim." c'-5 a-3 fis-2 c'-5 a-3] |
+ [fis-2 c'-5 a-3 fis-2 c'-5 a-3] |
+ [bes-4 g-1 fis-2 g-3 d-1 g-2] |
+ [bes-4 g-2 d-1 bes'-5 g-3 d-1] |
+ %30
+ [e-2\p g-4 fis-3 g-1 bes-4 g-2] |
+ [es-1 bes'-4 g-2 es bes' g] |
+ [cis,-1 bes'-4 g-2 cis, bes' g] |
+ [cis,-1 bes'-4 g-2 cis,-1 a'-5 g-4] |
+ [f-3 a f d a'-5 f] |
+ %35
+ [d-1 a'-5 f-3 d-1 cis-2 d-1] |
+ [e-3\< g-5 e-3 bes-1 g'-5 e-3] |
+ [bes-1 g'-5 e-3 \!cis-2 a-1 g'-5] |
+ [f16-4\mf d-2 c-1 bes-3] \stemup a-2 s16 s8 s4 |
+% ugh
+% s1 |
+ s4 s4 s4 |
+ %40
+ s4 s16 [d16-1-"m.d." f-2 a-4] \stemdown [d,-2-"m.g." f a] \stemup d-1 |
+ \stemboth
+ [f a-4 f d] [f-4 d b d-5] [gis-2 b a gis,] |
+ <g'!4.-5\f e a,> a8-5
+ <
+ {
+ \voiceone
+ f4-4\> ~ | \![f8 e] [e32-4 f e8. ~] [e8 d-3]
+ }
+ { \voicetwo <d4 a> r4 cis-2 }
+ > |
+ \onevoice
+ [d8-4 c!-3 a-1 d-4 bes-2 g-1] |
+ %45
+ [c-5 a-3 fis-2 bes-4 g e ] |
+ [a-5 fis-"dim. e rall." d g-5 e cis-2] |
+ <
+ { \voiceone <fis2-.-5\p a,> }
+ { \voicetwo [d32( cis d8. ~] ) d2 }
+ > |
+ \bar "|.";
+}
+
+
+two = \melodic\relative c{
+ \clef "bass";
+% [d32( cis )d8.] r4 r |
+ d4-\mordent r r |
+ d,4 r r |
+ d'-\mordent r r |
+ d,4 r r |
+ d'-\mordent r r |
+% d r r |
+ d,4 r r |
+ [d'8-2 a-5 d-2 f-1 d-4 f-2] |
+ [a-1 f-4 a-2 d-1 a-2 d-1] |
+ gis,4-3 r r |
+ e-4( )gis-2 e |
+ [a8-4 e'-1 c-2 a-4 e'-1 c-2 ] |
+ [g!-5 es'-1 c-1 g-5 es'-1 c-1 ] |
+ fis,4-5 r r
+ d-4( ) fis d-5 |
+ \property Voice . textstyle = "roman"
+ g4-\mordent^"(\\textsharp)" r r8 f!8 |
+ \property Voice . textstyle = "italic"
+ e4-\prall r r |
+ f4-\mordent r r8 e |
+ d4 r8 [f-1 e d] |
+ [e-2 d-3 cis-4 e-1 d-2 cis-3] |
+ d4-2( )c! bes-4 |
+ a( )a' a, |
+ a( )a' a, |
+ a( )a' a, |
+ a( )a' a, |
+ bes r r |
+ bes-5( )bes' bes, |
+ a r r |
+ a-2( )d-1 d, |
+ g r r |
+ g( )g' g, |
+ g r r |
+ g( )g' g, |
+ a r r |
+ a( )a' a, |
+ a r r |
+ a( )a' a, |
+ cis, r r |
+ cis( )cis' cis, |
+ d-4 s16
+ \stemdown
+ [g'16-1-"m.g." f e] [f-2 a d,-3 f] |
+ a,
+ \stemup
+ [d-5-"m.d." c bes] a
+ \stemdown [g-2 f-"m.g." e] [d f-4 a-2 d-1] |
+ \stemup
+% [f-2\ped a]
+ [f-2-"Ped." a]
+ \stemdown
+% [d-4-"m.g." f-"cresc."] a s s8 s4\dep |
+ [d,-4-"m.g." f-"cresc."] a s s8 s4-"*" |
+ \stemboth
+% ugh whole rest has duration of one bar
+% r1 |
+ r4 r r |
+%{
+ ugh forget the 8 below:
+ [cis-3( e cis a] [d16-1 c bes a] |
+ and lily dumps koor
+lilypond: ../flower/include/varray.hh:116: struct Rhythmic_grouping *& Array<Rhythmic_grouping *>::elem(int) const: Assertion `i >=0&&i<size_ failed.
+Aborted (core dumped)
+%}
+ [cis,8-3( e cis a] [d16-1 c bes a] |
+ [)g8 g' a-2( g-3 a-1 a,] |
+ )d4-3 d'-1 d, |
+ d r r |
+ d,( )d' d, |
+ d2. |
+ \bar "|.";
+}
+
+global = \melodic{
+ \time 3/4;
+ \key F;
+}
+
+treble_staff = \type Staff = treble <
+ \global
+ \one
+>
+
+bass_staff = \type Staff = bass <
+% bass = Staff <
+ \clef "bass";
+ \global
+ \two
+>
+
+grand_staff = \type GrandStaff <
+ \treble_staff
+ \bass_staff
+>
+
+widea4 = \paper {
+ \paper_twenty
+% arithmetic_basicspace = 2.;
+% arithmetic_multiplier = 6.\pt;
+ arithmetic_basicspace = 2.;
+ arithmetic_multiplier = 8.\pt;
+ linewidth= 193.\mm;
+}
+
+\score{
+ % Moderato
+ \grand_staff
+ \paper{ \widea4 }
+ \midi{ \tempo 4 = 90; }
+}
+
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly
new file mode 100644
index 0000000000..feb7345d31
--- /dev/null
+++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly
@@ -0,0 +1,133 @@
+\header{
+filename = "preludes-6.ly";
+title = "6";
+% piece = "\\numfont 6";
+piece = "6";
+opus = "BWV 940";
+% blz 11
+% Six Petits Preludes
+% Collection Johann Peter Kellner
+% ca 1703 - 1707
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+}
+\version "1.0.0";
+
+
+one = \melodic\relative c{
+ \skip 1; |
+ \stemup
+ r4 d''2-5( cis4-4 |
+ \stemboth
+ [)d16-5\mf a'-4( g f] [e f-4 cis-2 d-1]
+ [e8.-\mordent f16] [d8.-\prall-1 cis16-3] |
+ \stemup
+ )cis4\> ~ [cis16 a \!d8 ~] d4 c-5 |
+ %5
+ b2-4 ~ b4 a-5 ~ |
+ [a16 a-5 \stemup g! f] g4-4\< ~ g f-3 ~ |
+ [\!f16 a g f] [e16 g8.-5 ~] [g16 g-5 f-4 e-3] [d-1 f8.-4 ~] |
+ [f16 f-3 e d] b'4 a-5 g-5 |
+ fis4-4 g r8\<-"rall." [g16-1( bes-2] \!e4-5 |
+ %10
+ \!)d1-5
+ \bar "|.";
+}
+
+two = \melodic\relative c{
+ r16\p [d''-5( c-4 bes-3] [a-2 bes-3 f-1 g-2]
+ [a8.-\mordent bes16-1] [g8.-\prall f16-1] |
+ \stemdown
+ )f2 e2 |
+ \translator Staff=bass \stemup
+ r4 a,-1 bes-2 b-1 |
+ \translator Staff=treble \stemdown
+ r16 [b'-3 a-1 g-2] [f8. f16-2] e2 ~ |
+ %5
+ e2 ~ e4 ~ [e16 e-2 f! d-1] |
+ s4 [e32 d e8.~] e4 d4 ~ |
+ d4. [cis16-2 d-1] cis4 d-1 ~ |
+ d8 r r16 [e-2 f d] r16 [e-2 f d] r [d-1 e-3 cis] |
+ r16 [e-3 d-1 c!-2] [bes! d8.] s4 r16\> [bes'-2 a-2 \!g-1] |
+ %10
+ fis1-2
+}
+
+three = \melodic\relative c{
+ \stemup
+ f2-1( e-2 |
+ \stemboth
+ [)d16 d'( c bes] [a-4 bes-2 f-5 g-4]
+ [a8.-\mordent bes16-2]
+ [g8.-\prall-4 f16-5] |
+ )f2-5 g4-4 gis |
+ a2-2 ~ [a16 a-1( g f] [e-4 f-2 c-5 d] |
+ %5
+ [e8.-\mordent f16] [d8.-\prall-4 c16-5] \stemboth )c4.-5 d8-4 |
+ \stemdown
+ e4 ~ [e16 f-2( e-3 d-4] [cis a b cis-3] [d-4 e-3 f-2 d-4] |
+ \property Voice . textstyle = "finger"
+ )bes!2-"5\\_4" a ~ |
+ a a |
+ d, cis'-5 |
+ %10
+ a'1-2
+ \bar "|.";
+}
+
+four = \melodic\relative c{
+ \stemdown
+ d2-3 cis-4 |
+ \skip 1*3; |
+ %5
+ \translator Staff=treble \stemup \property Voice.hshift = 1
+ a'4 gis-2 ~ [gis16 gis-3 fis e]
+ \skip 4*1;
+ \translator Staff=bass \stemdown \property Voice.hshift = 0
+ \stemup
+ b2-1 a-1 |
+ g a4. [gis16 a] |
+ gis2 <[g8 cis,> <f-3 d-1]> e4-2 |
+ d4. [fis16-3 g-2] r16 bes8.-1 ~ bes4 |
+ %10
+ \stemdown
+ d,1-5
+}
+
+global = \melodic{
+ \time 4/4;
+ \key F;
+}
+
+
+treble_staff = \type Staff = treble <
+ \global
+ \one
+ \two
+>
+
+bass_staff = \type Staff = bass <
+% bass = Staff <
+ \clef "bass";
+ \global
+ \three
+ \four
+>
+
+grand_staff = \type GrandStaff <
+ \treble_staff
+ \bass_staff
+>
+
+a4 = \paper{
+ linewidth = 193.\mm;
+}
+
+\score{
+ % Allegretto
+ \grand_staff
+ \paper{ \a4 }
+ \midi{ \tempo 4 = 40; }
+}
+
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-paper.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-paper.ly
new file mode 100644
index 0000000000..3a9a6790c3
--- /dev/null
+++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-paper.ly
@@ -0,0 +1,9 @@
+\paper{
+% linewidth= 193.\mm;
+ linewidth= 180.\mm;
+ gourlay_maxmeasures = 10.0;
+% arithmetic_basicspace = 3.;
+% arithmetic_multiplier = 6.\pt;
+ % for simple testing only!
+% castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn
+}
diff --git a/mutopia/J.S.Bach/preludes.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes.ly
index 406c08d9cf..6fd6068dcf 100644
--- a/mutopia/J.S.Bach/preludes.ly
+++ b/mutopia/J.S.Bach/Petites-Preludes/preludes.ly
@@ -1,7 +1,7 @@
\header{
filename = "preludes.ly";
% mmm
-title = "DOUZE PETITES PR\'ELUDES";
+title = "DOUZE PETITES PR\\'ELUDES";
% urg subtitle = "Clavierb\\"uchlein";
subtitle = "Clavierbuechlein";
composer = "Johann Sebastian Bach (1685-1750)";
@@ -11,7 +11,8 @@ copyright = "public domain";
\include "preludes-1.ly"
\include "preludes-2.ly"
-\include "preludes-3.ly"
+% urg, still broken
+% \include "preludes-3.ly"
\include "preludes-4.ly"
\include "preludes-5.ly"
\include "preludes-6.ly"
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/Makefile b/mutopia/J.S.Bach/Solo-Cello-Suites/Makefile
new file mode 100644
index 0000000000..5f925d1657
--- /dev/null
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/Makefile
@@ -0,0 +1,12 @@
+# mutopia/J.S.Bach/Solo-Cello-Suites/Makefile
+
+depth = ../../..
+
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
+
+EXTRA_DIST_FILES=
+
+examples=scsii-cello
+
+include $(stepdir)/WWW.make
diff --git a/mutopia/J.S.Bach/allemande-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-alto.ly
index 367ffc6e3f..e8fbc3bda3 100644
--- a/mutopia/J.S.Bach/allemande-alto.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-alto.ly
@@ -15,18 +15,13 @@ copyright = "public domain";
dotted slurs
%}
-\version "0.1.14";
-
-urg_urg = \melodic {
- \octave relative;
- \octave c';
-}
+\version "1.0.0";
\include "allemande-urtext.ly";
allemande_alto_global = \melodic{
- \meter 4/4;
- \key bes;
+ \time 4/4;
+ \key f;
\partial 16;
\clef alto;
\skip 1*11;
@@ -41,7 +36,7 @@ allemande_alto_scripts = \melodic{
}
allemande_alto_staff = \type Staff <
- \$allemande
+ \melodic \transpose c'' \$allemande
\$allemande_alto_global
\$allemande_alto_scripts
>
@@ -49,8 +44,6 @@ allemande_alto_staff = \type Staff <
\score{
\$allemande_alto_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 40;
- }
+ \midi{ \tempo 4 = 45; }
}
diff --git a/mutopia/J.S.Bach/allemande-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly
index 4cbd0ed098..114480452c 100644
--- a/mutopia/J.S.Bach/allemande-cello.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly
@@ -15,18 +15,13 @@ copyright = "public domain";
dotted slurs
%}
-\version "0.1.14";
-
-urg_urg = \melodic {
- \octave relative;
- \octave c;
-}
+\version "1.0.0";
\include "allemande-urtext.ly";
allemande_cello_global = \melodic{
- \meter 4/4;
- \key bes;
+ \time 4/4;
+ \key f;
\partial 16;
\clef bass;
\skip 1*11;
@@ -49,8 +44,6 @@ allemande_cello_staff = \type Staff <
\score{
\$allemande_cello_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 40;
- }
+ \midi{ \tempo 4 = 45; }
}
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly
new file mode 100644
index 0000000000..0b9c0fb9bb
--- /dev/null
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly
@@ -0,0 +1,100 @@
+% allemande-urtext.ly
+% belongs together with -cello.ly and -alto.ly
+% (who is going to make a -violin.ly?)
+
+%{
+Well, there are still some scripts in this "urtext".
+But merging melodic and scripts doen't work too well yet (see alto_scripts).
+%}
+
+n = { \slurnormal }
+d = { \slurdotted }
+comma = "\\sethuge\\ \\ ,";
+
+allemande_a = \melodic \relative c {
+ \voiceone a'16 |
+ [a8 bes16()a] \onevoice
+ [g()f e()d][d()cis d()e][a,8 \d bes16()g] |
+ [f( a )d f,] [e8 cis']\voiceone[d8. e16]\onevoice[f g a bes!] |
+ %3
+ \voiceone[c8 \n d16()es]\onevoice[d()c bes()a][c()bes a()g][d'8. f,16] |
+ [e( g )bes d][c()bes a()g]\n[bes()a g()f]
+ <[f8. a> <f16 a]> |
+ % urg fix
+ [b \n f( e )d][e \d cis'( d )cis]\voiceone[d8.( )e16]\onevoice
+ \n[f( e d)e] |
+ %6
+ [d( c b )c][b( a gis)a][gis8-\prall fis16()e][e' c( a )g] |
+ \voiceone [e' a, f d] [d f d b]\onevoice
+ [gis( b e )gis] \d [b( d c )b] |
+ %8
+ \n[c( a f )e][d( f e )d][gis8.-\trill()a16]\d[b d e,()d] |
+ % urg
+ [c( e a)d]\voiceone [b8.-\trill a16] a8 s4 s8 \onevoice |
+ %10
+ [d,!16 gis( a b a gis fis )e] \voiceone [e8 f16()e]\onevoice
+ [d()c b()a] |
+ \voiceone[d8 e16()f]\onevoice\d[e()d c()b]
+ \voiceone[d'16()b c()a] \onevoice [e8 gis] |
+ [a,8. cis16][e g!( f! )e][f( a )d gis,] a8.
+ %13
+ e16 \voiceone [e8. f16] \onevoice
+ \n[g!()e f()a]\n[cis,( d )e bes][a8.-\trill()g16] |
+ [f a'(f)d][g \n b,()cis a'][g(f e)d][fis d()es c(] |
+ %15
+ [)bes g'(a, )g][fis a d c'][bes(fis)g bes][d()a bes()g] |
+ [es(d)es g][c()a bes()g]\d[d(c)d g]\n[bes()fis g()es] |
+ %17
+ \n[c(bes)c bes'][a(c)es g,]\voiceone[fis8-\trill\d g16()a]\onevoice
+ [d,8 es16()c] |
+ [bes(d )g bes,][d,8 fis']\voiceone[g8. a16]\onevoice[bes d g, f] |
+ %19
+ \voiceone[e8.-\trill()f16]\onevoice [g()e c()bes]
+ \n[a()f' g,()f][e g'( a )bes] |
+ % :-(
+ % [bes( a g )f^\comma]
+ [bes( a g )f^"\\sethuge{\\ \\ '}"]
+ [a()e f()d][bes d(f)a][d()a bes()g] |
+ %21
+ [a,(\n)g'(\n cis())d][e()g, a()e][f()d bes()d]\d[gis, f'(e)d] |
+ % \n[d( cis b )a^\comma][c(a)fis d'][c a( b )d]
+ \n[d( cis b )a^"\\sethuge\\ \\ ,"]
+ [c(a)fis d'][c a( b )d]
+ [f!(d )gis, d'] |
+ %23
+ [cis(e g!)bes][e()a, bes()g][f()cis d()gis,][a8 cis!] |
+ % knee
+ \stemup [d,16 \stemboth d''(c!)a][bes!(g)e cis'][d a f d] d,8.
+}
+
+allemande_b = \melodic \relative c {
+ \voicetwo
+ s16 |
+ % <d'8 g' f'> s8 s2. |
+ <f8 g, d> s8 s2. |
+ s2 <a,8. d,> s16 s4 |
+ <fis'8 a, d,> s8 s2. |
+ s1 |
+ %5
+ s2 d8. s16 s4 |
+ s1 |
+ f!16 s16*3 b, s16*3 s2 |
+ s1 |
+ s4 e [dis8 ~ dis32 e( fis gis][a b c d! c b c )a] |
+ %10
+ s2 <a8 c,> s8 s4 |
+ <b8 gis,> s8 s4 <e,8 a,> s8 s4 |
+ s1 |
+ <cis'8 g,> s8 s2. |
+ %15
+ s1*3 |
+ s2 c,8 s8 s4 |
+ s2 g8. s16 s4 |
+ bes8.
+}
+
+allemande = \type Staff \melodic<
+ \$allemande_a
+ \$allemande_b
+>
+
diff --git a/mutopia/J.S.Bach/courante-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-alto.ly
index fbe6ba3018..8e7f0970be 100644
--- a/mutopia/J.S.Bach/courante-alto.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-alto.ly
@@ -15,25 +15,20 @@ copyright = "public domain";
dotted slurs
%}
-\version "0.1.14";
-
-urg_urg = \melodic {
- \octave relative;
- \octave c';
-}
+\version "1.0.0";
\include "courante-urtext.ly";
courante_alto_global = \melodic{
- \meter 3/4;
- \key bes;
+ \time 3/4;
+ \key f;
\partial 16;
\clef alto;
\skip 2.*15;
s2 s8.
\bar ":|:";
\skip 2.*15;
- s2 s8
+ s2 s8.
\bar ":|";
}
@@ -41,7 +36,7 @@ courante_alto_scripts = \melodic{
}
courante_alto_staff = \type Staff <
- \$courante
+ \melodic \transpose c' \$courante
\$courante_alto_global
\$courante_alto_scripts
>
@@ -49,8 +44,6 @@ courante_alto_staff = \type Staff <
\score{
\$courante_alto_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 40;
- }
+ \midi{ \tempo 4 = 55; }
}
diff --git a/mutopia/J.S.Bach/courante-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly
index c5711e940c..5909c0be7d 100644
--- a/mutopia/J.S.Bach/courante-cello.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly
@@ -15,25 +15,20 @@ copyright = "public domain";
dotted slurs
%}
-\version "0.1.14";
-
-urg_urg = \melodic {
- \octave relative;
- \octave c;
-}
+\version "1.0.0";
\include "courante-urtext.ly";
courante_cello_global = \melodic{
- \meter 3/4;
- \key bes;
+ \time 3/4;
+ \key f;
\partial 16;
\clef bass;
\skip 2.*15;
s2 s8.
\bar ":|:";
\skip 2.*15;
- s2 s8
+ s2 s8.
\bar ":|";
}
@@ -49,8 +44,6 @@ courante_cello_staff = \type Staff <
\score{
\$courante_cello_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 40;
- }
+ \midi{ \tempo 4 = 55; }
}
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly
new file mode 100644
index 0000000000..c04de2dac6
--- /dev/null
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly
@@ -0,0 +1,85 @@
+% courante-urtext.ly
+% belongs together with -cello.ly and -alto.ly
+% (who is going to make a -violin.ly?)
+
+%{
+Well, there are still some scripts in this "urtext".
+But merging melodic and scripts doen't work too well yet (see alto_scripts).
+%}
+
+n = { \slurnormal }
+d = { \slurdotted }
+
+courante_a = \melodic \relative c {
+ d'16 |
+ [d a f a] [d, f g a]\d[bes()a bes()g] |
+ \voiceone <g4 a> s4 \onevoice \d[g16()f g()e] |
+ % urg, a good case for mean-distance-beam-dir-algorithm!
+ [f()d e()c!]\n[bes(a)bes a'][g f e d] |
+ %4
+ % [cis e \n a,(\d(b][[cis d e f][)g )bes-- a e] |
+ [cis e \n a,(b][[cis d e f][)g bes-- a e] |
+ % [f a \n d,(\d( e][f g a bes][)c )bes-- d c] |
+ [f a \n d,( e][f g a bes][)c bes-- d c] |
+ \n\voiceone <c4~ f,> <[c16 f,> bes a g] \onevoice [f()es d()es] |
+ %7
+ [d bes(a)bes][d bes e! bes][f' bes, g' bes,] |
+ \d[e,( g )c d][e f g a][bes()a bes()g]|
+ \n[a f(e)f][a f bes f][c' f, d' f,] |
+ %10
+ [cis( e )a b][cis d e f][g()f g()e] |
+ [d,( a' )f' e]\n[d()c d()c][b()a b()a] |
+ \n[gis( a )b e,]\n[f()e f()d][e()c d()b] |
+ %13
+ \n[c a'( b c][b a gis)a][d, a' e a] |
+ [f a( b c][b a gis)a][f a e a] |
+ [dis, a'( b c][b a gis)a][e a e gis] |
+ [a e cis e][a, cis e gis] a8. e'16 |
+ %17
+ [e cis a cis][e, f g a][bes()g cis()g] |
+ \voiceone d'4 ~ [d16 a d e][f d a c!]\onevoice |
+ \n[b16 f(d)f]\d[g, d'(f)g][b f d' f,] |
+ %20
+ [e g c,(d][e f g a][)bes! d c g] |
+ \voiceone a s16*3 s4 s4
+ d, ~ [d16 e! f g] \onevoice [a bes c d] |
+ %23
+ [e, bes(a)g][a f' \n g,()f]\d[c()g' f' e] |
+ [f a( bes a][g f e )f][g e f d]|
+ [cis g' b, g'][a, g' b, g'][cis, g' a, g']|
+ %26
+ [f d f a][d a d e][f a, f d]|
+ [g, d'(g)a][bes g' a, f'][g, e' f, d']|
+ \n[cis(d)e cis][a cis bes cis][a cis g cis]|
+ %29
+ \n[f, d'(e f][e d cis)d][g, d' a d]|
+ \d[bes d(e f][e d cis)d][bes d a d]|
+ [gis, d'(e f][e d cis)d][a d a cis]|
+ [d a f a][d, f a, d]
+ d,8.
+}
+
+courante_b = \melodic \relative c {
+ \voicetwo
+ \stemdown
+ s16 |
+ s2. |
+ %2
+ \n cis4 ~ [cis16 d e f] s4 |
+ s2.*3 |
+ %6
+ { a,4 s2 }
+ s2.*11
+ %18
+ f'4 s s |
+ s2.*2
+ %21
+ [f16 c'(bes a][g f es d] [)es c' f, es] |
+ bes4 s s
+}
+
+courante = \type Staff \melodic<
+ \$courante_a
+ \$courante_b
+>
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-alto.ly
new file mode 100644
index 0000000000..784dea6b29
--- /dev/null
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-alto.ly
@@ -0,0 +1,50 @@
+\header{
+filename = "gigue-cello.ly";
+title = "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Pr\\'elude"; % duh
+% opus = "BWV 1008";
+opus = "";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents,
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "gigue-urtext.ly";
+
+gigue_cello_global = \melodic{
+ \time 3/8;
+ \key f;
+ \clef bass;
+ \partial 8
+ \skip 4.*31;
+ s4
+ \bar ":|:";
+ \skip 4.*44;
+ s4
+ \bar ":|";
+}
+
+gigue_cello_scripts = \melodic{
+}
+
+gigue_cello_staff = \type Staff <
+ \melodic \transpose c' \$gigue
+ \$gigue_cello_global
+ \$gigue_cello_scripts
+>
+
+\score{
+ \$gigue_cello_staff
+ \include "scs-paper.ly";
+%broken
+ \midi{ \tempo 4 = 60; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly
new file mode 100644
index 0000000000..70c72a36f6
--- /dev/null
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly
@@ -0,0 +1,49 @@
+\header{
+filename = "gigue-cello.ly";
+title = "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Pr\\'elude"; % duh
+% opus = "BWV 1008";
+opus = "";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents,
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "gigue-urtext.ly";
+
+gigue_cello_global = \melodic{
+ \time 3/8;
+ \key f;
+ \clef bass;
+ \partial 8;
+ \skip 4.*31;
+ s4
+ \bar ":|:";
+ \skip 4.*44;
+ s4
+ \bar ":|";
+}
+
+gigue_cello_scripts = \melodic{
+}
+
+gigue_cello_staff = \type Staff <
+ \$gigue
+ \$gigue_cello_global
+ \$gigue_cello_scripts
+>
+
+\score{
+ \$gigue_cello_staff
+ \include "scs-paper.ly";
+ \midi{ \tempo 4 = 60; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly
new file mode 100644
index 0000000000..100156c7d7
--- /dev/null
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly
@@ -0,0 +1,145 @@
+% gigue-urtext.ly
+% belongs together with -cello.ly and -alto.ly
+% (who is going to make a -violin.ly?)
+
+%{
+Well, there are still some scripts in this "urtext".
+But merging melodic and scripts doen't work too well yet (see alto_scripts).
+%}
+
+n = { \slurnormal }
+d = { \slurdotted }
+
+%
+% this must be redone a bit:
+%
+% * slurs/ties in two different threads (like beams): urtext, and additionals
+%
+
+% urg, Thread is gone, try Voice
+% gigue_notes = \type Thread = gigue \melodic \relative c {
+
+gigue_notes = \type Voice = gigue \melodic \relative c {
+ a'8 |
+ d,4 bes'8 | cis,4 g'8 | f16 e f g a8 |
+ d,4 d'8 | e,16(f)g8 bes | c,16(d)e8 c' | a16 g a bes c a |
+ %8
+ f4-\trill a8 | b,()g' cis, | d f16( c bes )a | g8()es' a, |
+ bes d16( a g )f | e!8()cis' bes' a g16( f e)d |
+ %15
+ %\voiceone e(f g e f)d \onevoice e8()a,\comma c''! |
+ \voiceone e(f g e f)d \onevoice e8()a,^"\\sethuge{\\ \\ '}" c'! |
+ \voiceone c16(d es c d)a bes8 r bes |
+ bes16(c d bes c)g a8 r a |
+ %21
+ b16()c d()b c()a | d()e f()d e()c | b()c d()b c()a | e'4 gis,8 |
+ a16()b c()a d()b |
+ a()b c()a d()b |
+ %27
+ a()b c()a d()b |
+ a()b c()a d()b |
+ f'8 e16()d c()b \onevoice |
+ e,, e''(d)c b()gis | a f(e)d e()cis | a4
+ %33
+ c'!8 |
+ f,4 d'8 | e,4 bes'8 | a16 g a bes c8 | f,4 a8 |
+ d,16(e)f d(c)b | g' a g f e d |
+ %39
+ e(d)e f(g)e | c4 e8 | fis16(g)a c, bes a |
+ bes(d)g bes, a g | fis(a)c es d c | bes(a)bes d g bes |
+ %45
+ as(g)as fis g es' | d,8 g fis | g16 es(d)c d()bes | g4 bes'8
+ % what about this?
+ \voiceone\stemdown e,!16(f)g e f d\onevoice
+ c(d e) c d bes | a(bes)c a bes g | f4 a'8
+ % what about this?
+ \voiceone\stemdown d,16(e)f d e c\onevoice bes(c)d bes c a
+ g16(a)bes g a f | e4 g'8
+ %57
+ a,16(b cis d)e g-. | f(g a cis )d f, | e(f g a)bes d,-. |
+ cis(d)e a, bes g
+ \voiceone
+ d'()e f()d g()e |
+ %62
+ d()e f()d g()e |
+ d()e f()d g()e |
+ d()e f()d g()e |
+ \onevoice
+ cis bes'(a g f)e | f, a' g f e cis |
+ %67
+ d bes a g a f | d a' d e f d |
+ \voiceone es()f g()es f()d | g()a bes()g a()f es()f g()es f()d |
+ %72
+ cis'4 \onevoice d16()c | bes(a g f e)d | cis(b a g f)e | d f a d f a |
+ d4
+}
+
+gigue_b = \melodic \relative c {
+ \voicetwo
+ s8
+ s4.*14
+ a4. | s d | [d8 g, d'] | e4. | [f8 f, f'] |
+ %21
+ [d d d] [d d d] [d d d] |
+ % one could type r here...
+ d4 s8 | <e c> s s | d s s | e s s | f s s | gis s4 |
+ s4. s s4
+ %33
+ s8
+ s4.*16
+ \stemup bes4 s8
+ s4. s s
+ a8 s4 \stemdown
+ s4.*7
+ <a,8 f> s s g s s a s s bes s s
+ s4.*4
+ [g8 g g] [g g g] [g g g]
+ %72
+ <g4 e'>
+}
+
+gb = \melodic { [s16 s s s s s] }
+
+% urg, Thread is gone, try Voice
+% gigue_beams = \type Thread = gigue \melodic{
+gigue_beams = \type Voice = gigue \melodic{
+ s8 |
+ s4. s4. \gb
+ s4. \gb \gb \gb
+ %8
+ s4.
+ \gb \gb \gb \gb \gb
+ %14
+ \gb \gb \gb \gb s4.
+ %19
+ \gb s4. \gb \gb \gb
+ %24
+ s4.
+ \gb \gb \gb \gb \gb \gb \gb
+ s4 s8
+ %33
+ s4. s4.
+ \gb s4. \gb \gb
+ %39
+ \gb s4.
+ \gb \gb \gb \gb \gb \gb \gb
+ %48
+ s4. \gb \gb \gb
+ s4. \gb \gb \gb s4.
+ \gb \gb \gb \gb \gb
+ \gb \gb \gb \gb \gb
+ \gb \gb \gb \gb \gb
+ s4 [s16 s]
+ \gb \gb \gb
+}
+
+gigue_a = \type Voice \melodic<
+ \$gigue_notes
+ \$gigue_beams
+>
+
+gigue = \melodic<
+ \$gigue_a
+ \$gigue_b
+>
+
diff --git a/mutopia/J.S.Bach/menuetto-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-alto.ly
index b7b80936f9..96ed306a9f 100644
--- a/mutopia/J.S.Bach/menuetto-alto.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-alto.ly
@@ -17,18 +17,13 @@ copyright = "public domain";
dotted slurs
%}
-\version "0.1.14";
-
-urg_urg = \melodic {
- \octave relative;
- \octave c';
-}
+\version "1.0.0";
\include "menuetto-urtext.ly";
menuetto_i_alto_global = \melodic{
- \meter 3/4;
- \key bes;
+ \time 3/4;
+ \key f;
\clef alto;
\skip 2.*8;
\bar ":|:";
@@ -58,7 +53,7 @@ menuetto_i_alto_scripts = \melodic{
}
menuetto_i_alto_staff = \type Staff <
- \$menuetto_i
+ \melodic \transpose c' \$menuetto_i
\$menuetto_i_alto_global
% \$menuetto_i_alto_scripts
>
@@ -66,14 +61,12 @@ menuetto_i_alto_staff = \type Staff <
\score{
\$menuetto_i_alto_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 120;
- }
+ \midi{ \tempo 4 = 110; }
}
menuetto_ii_alto_global = \melodic{
- \meter 3/4;
- \key fis cis;
+ \time 3/4;
+ \key D;
\clef alto;
\skip 2.*8;
\bar ":|:";
@@ -85,19 +78,18 @@ menuetto_ii_alto_global = \melodic{
}
menuetto_ii_alto_staff = \type Staff <
- \$menuetto_ii
+ \melodic \transpose c' \$menuetto_ii
\$menuetto_ii_alto_global
% \$menuetto_ii_alto_scripts
>
\header{
piece = "Menuetto II";
+opus = "";
}
\score{
\$menuetto_ii_alto_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 120;
- }
+ \midi{ \tempo 4 = 130; }
}
diff --git a/mutopia/J.S.Bach/menuetto-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly
index 2916b99fd5..5d5f9c4d0d 100644
--- a/mutopia/J.S.Bach/menuetto-cello.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly
@@ -16,18 +16,13 @@ copyright = "public domain";
dotted slurs
%}
-\version "0.1.14";
-
-urg_urg = \melodic {
- \octave relative;
- \octave c;
-}
+\version "1.0.0";
\include "menuetto-urtext.ly";
menuetto_i_cello_global = \melodic{
- \meter 3/4;
- \key bes;
+ \time 3/4;
+ \key f;
\clef bass;
\skip 2.*8;
\bar ":|:";
@@ -67,14 +62,12 @@ menuetto_i_cello_staff = \type Staff <
\score{
\$menuetto_i_cello_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 120;
- }
+ \midi{ \tempo 4 = 110; }
}
menuetto_ii_cello_global = \melodic{
- \meter 3/4;
- \key fis cis;
+ \time 3/4;
+ \key D;
\clef bass;
\skip 2.*8;
\bar ":|:";
@@ -93,12 +86,11 @@ menuetto_ii_cello_staff = \type Staff <
\header{
piece = "Menuetto II";
+opus = "";
}
\score{
\$menuetto_ii_cello_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 120;
- }
+ \midi{ \tempo 4 = 130; }
}
diff --git a/mutopia/J.S.Bach/menuetto-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly
index 2940d61faf..67e2f44128 100644
--- a/mutopia/J.S.Bach/menuetto-urtext.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly
@@ -4,20 +4,19 @@
%{
Well, there are still some scripts in this "urtext".
-But merging music and scripts doen't work too well yet (see alto_scripts).
+But merging melodic and scripts doen't work too well yet (see alto_scripts).
%}
-menuetto_i_a = \melodic{
-% \octave relative;
- <d,2\f f a> bes4 |
+menuetto_i_a = \melodic \relative c {
+ <d2\f f a> bes'4 |
[bes8 a bes g] a4 |
- <bes,4 d> g [f8 e] |
+ <d,4 bes> g [f8 e] |
[f8( e )d cis b a] |
- <d2 f a> bes!4 |
+ <d2 f a> bes'!4 |
[bes8 a bes g] c!4 |
%7
- <f, a> <bes, f' d'> <g,, g' e'> |
- <a,,2. e' cis'> |
+ <a f> <d f, bes,> <e g, g,> |
+ <cis2. e, a,> |
<a2\f e'> [d8( e16 )f] |
\slurdotted
[e8( d cis )e a,()g] |
@@ -25,28 +24,26 @@ menuetto_i_a = \melodic{
[g'8( f e )f d() c] |
%13
bes2 c4 |
- [a8 g a f] <bes,4 e' d'> |
- <a,, f' c'> [bes8 a g a] |
+ [a8 g a f] <d'4 e, bes> |
+ <c f, a,> [bes8 a g a] |
[f8( e )f a g bes] |
- <fis2^\trill a> bes4 |
+ <a2^\trill fis> bes4 |
[c8 bes c a] fis4^\trill |
%19
% dispute
% <bes,4 g' d'> <c, g' c> <[d,8 bes'(> )a] |
- <bes,4 g' d'> <c,, g' c> [bes8()a] |
+ <d'4 g, bes,> <c g c,> [bes8()a] |
[c8( bes a )bes g()bes] |
d4 ~ cis d |
[g,8 f g e] f4 |
- [g,8 g'] <a,4. { e'^\trill ~ d8 }> |
- <d,2. a' d> |
- \octave c;
+ [g,8 g'] <{e4.^\trill ~ d8 } a4.> |
+ <d2. a d,> |
}
-menuetto_i_b = \melodic{
-% \octave relative;
+menuetto_i_b = \melodic \relative c {
\slurdotted
\skip 2.*1; |
- <c8 e> \skip 8*5; |
+ <e8 c> \skip 8*5; |
\skip 2.*1; |
a,8 \skip 8*5; |
\skip 2.*1; |
@@ -61,12 +58,11 @@ menuetto_i_b = \melodic{
\skip 2.*3; |
es8 \skip 8*3; d4 |
\skip 4*2; d4 |
- <d8 g> \skip 8*5; |
+ <d8 g,> \skip 8*5; |
% dispute
% g2 f4 |
g4 \skip 4*1; f4 |
cis8 \skip 8*3; d4 |
- \octave c;
}
% UGH, fix this like in sarabande
@@ -109,28 +105,28 @@ menuetto_i_b_voice_urg_urg = \melodic<
\$menuetto_i_b
>
-menuetto_i = \type Voice \melodic<
+menuetto_i = \type Staff \melodic<
{ \$menuetto_i_a_voice_urg_urg }
{ \$menuetto_i_b_voice_urg_urg }
>
-menuetto_ii = \melodic{
+menuetto_ii = \melodic \relative c {
\slurdotted
- fis'4^\trill [d8( e fis )g] |
- a4 fis,, a'' |
- [g,,8()b] e4 g |
+ fis4^\trill [d8( e fis )g] |
+ a4 fis, a' |
+ [g,8()b] e4 g |
\slurnormal
[d8( cis )b cis a g] |
% ugh, forcing knee
% Lily's not yet smart enough to decide for herself.
\stemup [fis \stemboth d''( cis b a )g] |
- [b( g a fis e )d] |
+ [b( a g fis e )d] |
%7
[cis d] g4 [fis8( g16 )a] |
<\stemdown a,2. \stemup e'> |
\stemboth
- cis'4^\prall [e8( d cis )b] |
- cis4 g,, cis'' |
+ cis4^\prall [e8( d cis )b] |
+ cis4 g, cis' |
[fis,8()a] d4 fis |
[b,8()a g()fis \slurdotted g()b] |
\slurnormal
diff --git a/mutopia/J.S.Bach/prelude-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-alto.ly
index 4f8ae5ff32..2219165c5e 100644
--- a/mutopia/J.S.Bach/prelude-alto.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-alto.ly
@@ -3,7 +3,8 @@ filename = "prelude-alto.ly";
title = "Solo Cello Suites";
subtitle = "Suite II";
piece = "Pr\\'elude"; % duh
-% opus = "BWV 1008";
+opus = "BWV 1008";
+% opus = "";
composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
@@ -14,18 +15,13 @@ copyright = "public domain";
dotted slurs
%}
-\version "0.1.14";
-
-urg_urg = \melodic {
- \octave relative;
- \octave c';
-}
+\version "1.0.0";
\include "prelude-urtext.ly";
prelude_alto_global = \melodic{
- \meter 3/4;
- \key bes;
+ \time 3/4;
+ \key f;
\clef alto;
\skip 2.*63;
\bar "|.";
@@ -35,7 +31,7 @@ prelude_alto_scripts = \melodic{
}
prelude_alto_staff = \type Staff <
- \$prelude
+ \melodic \transpose c' \$prelude
\$prelude_alto_global
\$prelude_alto_scripts
>
@@ -43,8 +39,6 @@ prelude_alto_staff = \type Staff <
\score{
\$prelude_alto_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 40;
- }
+ \midi{ \tempo 4 = 40; }
}
diff --git a/mutopia/J.S.Bach/prelude-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly
index a8df6f36ef..d872e5ccb8 100644
--- a/mutopia/J.S.Bach/prelude-cello.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly
@@ -3,7 +3,8 @@ filename = "prelude-cello.ly";
title = "Solo Cello Suites";
subtitle = "Suite II";
piece = "Pr\\'elude"; % duh
-% opus = "BWV 1008";
+opus = "BWV 1008";
+% opus = "";
composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
@@ -14,18 +15,13 @@ copyright = "public domain";
dotted slurs
%}
-\version "0.1.14";
-
-urg_urg = \melodic {
- \octave relative;
- \octave c;
-}
+\version "1.0.0";
\include "prelude-urtext.ly";
prelude_cello_global = \melodic{
- \meter 3/4;
- \key bes;
+ \time 3/4;
+ \key f;
\clef bass;
\skip 2.*63;
\bar "|.";
@@ -43,8 +39,6 @@ prelude_cello_staff = \type Staff <
\score{
\$prelude_cello_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 40;
- }
+ \midi{ \tempo 4 = 40; }
}
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly
new file mode 100644
index 0000000000..f93032b967
--- /dev/null
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly
@@ -0,0 +1,365 @@
+% prelude-urtext.ly
+% belongs together with -cello.ly and -alto.ly
+% who is going to make a -violin.ly?
+
+%{
+Well, there are still some scripts in this "urtext".
+But merging melodic and scripts doen't work too well yet see alto_scripts .
+%}
+
+% urg, Thread is gone, try Voice
+% prelude_notes = \type Thread = prelude \melodic \relative c {
+prelude_notes = \type Voice = prelude \melodic \relative c {
+ d8 f a4 ~ a16 f e d |
+ cis e g a bes4 ~ bes16 a g f |
+ e g bes cis e8. bes16 a16 g f e |
+ f g a f d8 c! bes a |
+ %5
+ bes16 d f a d8. c16 bes a g f |
+ e g bes d c a bes g f e g bes, |
+ a c e g c8. bes16 a g f e |
+ d f a c bes g a f e f a f |
+ %9
+ g, bes d f bes8. a16 g f e g |
+ a, c e g c a e g f a d, es |
+ d a bes d g bes a c bes g d' f, |
+ %12
+ e b c e g d e c bes g e' bes |
+ f8 a c4 ~ c16 bes a g |
+ fis a bes c d, c' bes a fis' es d c |
+ bes a g bes d4 ~ d16 c bes a |
+ %16
+ gis b c d e, d' c b gis' f e d |
+ c b a c f e f gis a f d c |
+ b d gis b d8. c16 b a gis a |
+ %19
+ c, e a c e8. c16 b a gis a |
+ d, f a d f8. e16 d c b d |
+ e, d' c b a c b a d, b' a gis |
+ %22
+ c, a' g! f cis g' f e d f e d |
+ gis, d' e f b f e d gis, d' c b |
+ a b c e a b c a e c a g! |
+ % 25
+ % B"arenreiter and Chester say "c bes c"
+ fis a c d es8. d16 c bes c a' |
+ bes, a bes d g, es' f g a, g' f es |
+ d c d f bes, g' a bes cis, bes' a g |
+ % 28
+ f e f a d, bes' c! d e,! d' c bes |
+ a g a c f, d' e f g, f' e d |
+ cis g f e a, e' f g cis bes! a g |
+ %31
+ f g a cis d a g f a f e d |
+ gis d e f a, f' e d gis f! e d |
+ cis b cis e a e cis e a, g'! f e |
+ %34
+ f e f a d a f a d, c'! bes a |
+ g f g cis e cis g cis a, g' f e |
+ d a' d e f d a f d c'! bes a |
+ %37
+ g a bes d, es f g a bes g es' g, |
+ f g a cis, d e! f g a f d' f, |
+ e f g bes, a b cis d e bes g' bes, |
+ %40
+ cis,8 a' g'4 ~ g16 bes a g |
+ f e d e f d a' f d' a f d |
+ gis,8 f' d'4 ~ d16 f e d |
+ cis b a b cis a d a e' a, f' a, |
+ %44
+ g' e cis e a, cis e f g f g e |
+ f d cis d a cis d e f e f d |
+ e cis b cis a b cis d e d e cis |
+ %47
+ d b a b f gis b cis d cis d b |
+ \voiceone <cis4^\fermata e,> \onevoice r r |
+ bes16 g fis g es g d g es g bes d, |
+ cis-- e! g a bes8. a16 g fis g e' |
+ %51
+ f,! d' bes g a f e g f d cis e |
+ d bes a g fis-- a c! es d c bes a |
+ bes g fis g es g d g es g bes d, |
+ %54
+ \voiceone g'8. f16
+ e!16 d cis b a g f e \onevoice |
+ d-- a' d e f e d c! bes! a g f |
+ e-- a cis e g f e d cis b a g |
+ f a d f a d, f a d bes! c! a |
+ g, d' g a bes g fis g es' g, d' g, |
+ \voiceone <cis2. g> | <d f,> | <d e,> | <cis e,> | <d f,>
+}
+
+prelude_b = \melodic \relative c {
+ \voicetwo
+ s2.*47
+ %48
+ g4 s2 |
+ s2.*5
+ %54
+ <cis,4 bes'> s2 |
+ s2.*4
+ a'2. a a a <a d,>
+}
+
+% pat1 = \melodic { [s8 s]s4[s16 s s s] }
+pat1 = \melodic { [s16 s s s]s4[s16 s s s] }
+pat2 = \melodic { [s16 s s s][s8.s16][s s s s] }
+pat3 = \melodic { [s16 s s s][s8 s s s] }
+
+% of course, i just type pat1, and add the \ and the silly $ later
+% urg, Thread is gone, try Voice
+% prelude_beams = \type Thread = prelude \melodic{
+prelude_beams = \type Voice = prelude \melodic{
+ \$pat1
+ \$pat1
+ \$pat2
+ \$pat3
+ %5
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %10
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat1
+ \$pat2
+ %15
+ \$pat1
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %20
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %25
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %30
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %35
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %40
+ \$pat1
+ \$pat2
+ \$pat1
+ \$pat2
+ \$pat2
+ %45
+ \$pat2
+ \$pat2
+ \$pat2
+ s2.
+ \$pat2
+ %50
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %55
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+}
+
+%{
+properties, urg!
+fig1 = \melodic{ s16( s s )s }
+fig2 = \melodic{ s16( s ) s s }
+fig3 = \melodic{ s16 s( s )s }
+fig4 = \melodic{ s16( s s s s s s )s }
+fig5 = \melodic{ s8.()s16 }
+%}
+
+fig1 = \melodic{ \slurnormal s16( s s )s }
+fig2 = \melodic{ \slurnormal s16( s ) s s }
+fig3 = \melodic{ s16 \slurnormal s( s )s }
+fig4 = \melodic{ \slurnormal s16( s s s s s s )s }
+fig5 = \melodic{ \slurnormal s8.()s16 }
+
+% of course, i just type fig1, and add the \ and the silly $ later
+% urg, Thread is gone, try Voice
+% prelude_slurs = \type Thread = prelude \melodic{
+prelude_slurs = \type Voice = prelude \melodic{
+ s4 s4 \$fig3 |
+ \$fig1 s4 \$fig3 |
+ \$fig1 s4 \$fig3 |
+ \$fig1 s8( s s )s |
+ %5
+ \$fig3 s2 |
+ s2. |
+ s2 \$fig1 |
+ s2 \$fig1 |
+ s2 \$fig1 |
+ %10
+ \$fig3 \$fig3 \$fig1 |
+ \$fig3 \$fig3 s4 |
+ \$fig3 s2 |
+ s4 s4 \$fig3 |
+ \$fig3 \$fig3 \$fig3 |
+ %15
+ s4 s s16 s s8 |
+ \$fig3 \$fig3 s4 |
+ s2. |
+ \$fig1 s4 \$fig1 |
+ s2 \$fig1 |
+ %20
+ \$fig1 s4 \$fig1 |
+ s4 \$fig3 \$fig3 |
+ \$fig3 \$fig3 \$fig3 |
+ s2 \$fig1 |
+ s2. |
+ %25
+ \$fig3 s4 \$fig1 |
+ \$fig2 \$fig3 \$fig3 |
+ \$fig2 \$fig3 \$fig3 |
+ \$fig2 \$fig3 s4 |
+ \$fig2 \$fig3 \$fig3 |
+ %30
+ \$fig3 \$fig3 \$fig1 |
+ \$fig2 \$fig3 \$fig3 |
+ s2. |
+ s4 \$fig3 \$fig3 |
+ \$fig2 \$fig3 \$fig3 |
+ %35
+ \$fig2 s2 |
+ s2. |
+ s2. |
+ s2. |
+ s2. |
+ %40
+ s4 s4 \$fig3 |
+ \$fig1 s2 |
+ s2 \$fig3 |
+ \$fig2 s2 |
+ s2. |
+ %45
+ s2. |
+ s4 \$fig2 s4 |
+ \$fig3 \$fig2 s4 |
+ s2. |
+ \$fig3 s2 |
+ %50
+ \$fig3 s4 \$fig2 |
+ s2. |
+ s4 \$fig3 s4 |
+ s2 \$fig2 |
+% s8()s \$fig4 |
+% s8.()s16 \$fig4 |
+ \$fig5 \$fig4 |
+ %55
+ \$fig3 \$fig4 |
+ \$fig3 \$fig4 |
+ \$fig3 \$fig3 s4 |
+ s4 \$fig3 s4 |
+}
+
+fig1 = \melodic{ \slurdotted s16( s s )s }
+fig2 = \melodic{ \slurdotted s16( s ) s s }
+fig3 = \melodic{ s16 \slurdotted s( s )s }
+fig4 = \melodic{ \slurdotted s16( s s s s s s )s }
+fig5 = \melodic{ \slurdotted s8.()s16 }
+fig6 = \melodic{ \slurdotted s16()s \slurdotted s()s }
+
+% urg, Thread is gone, try Voice
+% prelude_suggested_slurs = \type Thread = prelude \melodic{
+prelude_suggested_slurs = \type Voice = prelude \melodic{
+ \slurdotted
+ s2. |
+ s2. |
+ s4 \$fig5 s4 |
+ s2. |
+ %5
+ s4 \$fig5 \$fig1 |
+ \$fig1 \$fig1 \$fig2 |
+ s4 \$fig5 s4 |
+ \$fig1 \$fig1 s4 |
+ \$fig2 \$fig5 s4 |
+ %10
+ s2. |
+ s2 \$fig2 |
+ s4 \$fig3 \$fig2 |
+ s2. |
+ s2. |
+ %15
+ \$fig2 s4 \$fig3 |
+ s2 \$fig3 |
+ \$fig1 \$fig1 \$fig1 |
+ s4 \$fig5 s4 |
+ \$fig1 \$fig5 s4 |
+ %20
+ s4 \$fig5 s4 |
+ \$fig3 s2 |
+ s2. |
+ \$fig3 \$fig3 s4 |
+ \$fig1 \$fig1 \$fig1 |
+ %25
+ s4 \$fig5 s4 |
+ s2. |
+ s2. |
+ s2 \$fig3 |
+ s2. |
+ %30
+ s2. |
+ s2. |
+ \$fig3 \$fig3 \$fig2 |
+ \$fig2 s2 |
+ s2. |
+ %35
+ s4 \$fig3 \$fig3 |
+ s2 \$fig3 |
+ s2. |
+ \$fig2 s2 |
+ \$fig2 s2 |
+ %40
+ s2. |
+ s2. |
+ s2. |
+ s2. |
+ % check !
+ \$fig3 \$fig2 s4 |
+ %45
+ \$fig3 \$fig2 s4 |
+ % check!
+ \$fig3 s2 |
+ s2. |
+ s2. |
+ s2 \$fig2 |
+ %50
+ \$fig1 \$fig5 s4 |
+ s4 \$fig6 \$fig6 |
+ \$fig3 \$fig1 \$fig1 |
+ \$fig3 s2 |
+}
+
+prelude_a = \type Voice \melodic<
+ \$prelude_notes
+ \$prelude_beams
+ \$prelude_slurs
+ \$prelude_suggested_slurs
+>
+
+prelude = \melodic<
+ \$prelude_a
+ \$prelude_b
+>
+
diff --git a/mutopia/J.S.Bach/sarabande-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-alto.ly
index 00f03caf40..b39274e169 100644
--- a/mutopia/J.S.Bach/sarabande-alto.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-alto.ly
@@ -15,18 +15,13 @@ copyright = "public domain";
dotted slurs
%}
-\version "0.1.14";
-
-urg_urg = \melodic {
- \octave relative;
- \octave c';
-}
+\version "1.0.0";
\include "sarabande-urtext.ly";
sarabande_alto_global = \melodic{
- \meter 3/4;
- \key bes;
+ \time 3/4;
+ \key f;
\clef alto;
\skip 2.*12;
\bar ":|:";
@@ -38,7 +33,7 @@ sarabande_alto_scripts = \melodic{
}
sarabande_alto_staff = \type Staff <
- \$sarabande
+ \melodic \transpose c' \$sarabande
\$sarabande_alto_global
\$sarabande_alto_scripts
>
@@ -46,8 +41,6 @@ sarabande_alto_staff = \type Staff <
\score{
\$sarabande_alto_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 40;
- }
+ \midi{ \tempo 4 = 40; }
}
diff --git a/mutopia/J.S.Bach/sarabande-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly
index 444600fa79..4a8002713e 100644
--- a/mutopia/J.S.Bach/sarabande-cello.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly
@@ -15,18 +15,13 @@ copyright = "public domain";
dotted slurs
%}
-\version "0.1.14";
-
-urg_urg = \melodic {
- \octave relative;
- \octave c;
-}
+\version "1.0.0";
\include "sarabande-urtext.ly";
sarabande_cello_global = \melodic{
- \meter 3/4;
- \key bes;
+ \time 3/4;
+ \key f;
\clef bass;
\skip 2.*12;
\bar ":|:";
@@ -46,8 +41,6 @@ sarabande_cello_staff = \type Staff <
\score{
\$sarabande_cello_staff
\include "scs-paper.ly";
- \midi{
- \tempo 4 = 40;
- }
+ \midi{ \tempo 4 = 40; }
}
diff --git a/mutopia/J.S.Bach/sarabande-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly
index cdf66f028b..00db06b77e 100644
--- a/mutopia/J.S.Bach/sarabande-urtext.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly
@@ -4,36 +4,39 @@
%{
Well, there are still some scripts in this "urtext".
-But merging music and scripts doen't work too well yet (see alto_scripts).
+But merging melodic and scripts doen't work too well yet (see alto_scripts).
%}
n = { \slurnormal }
d = { \slurdotted }
-sarabande_a = \melodic{
-% \octave relative;
- \voiceone \d[d,8.()e16] e4.-\trill([d16 )e] |
+%
+% ugh, the non-shortened beamstems of voice in forced direction
+% look ugly here!
+sarabande_a = \melodic \relative c {
+ \voiceone \d[d8.()e16] e4.-\trill([d16 )e] |
f4. \onevoice [e8(d)c] |
[bes g']\n[f e16(f][g a bes)d,] |
cis4.-\trill\d[b8(a)g] |
% copy bar 1, half bar 2
- \voiceone \d[d'8.()e16] e4.-\trill([d16 )e] |
+ \voiceone \d[d'8.()e16] f4.-\trill([d16 )e] |
%5
- f'4. \onevoice [d8(d)e] |
+ f4. \onevoice [d8(e)f] |
\n[g bes16()a][c()bes a()g][d'8 f,] |
\voiceone e4.-\trill \onevoice \d[d8(c)bes] |
+ %8
\voiceone \n[f' g16()a] a4. [g16()f] |
- [g8 a16()bes]a4. [c16()d]|
+ [g8 a16()bes]bes4. [c16()d]|
% 11
- \onevoice \d [e,8()f][c,, g'][f'()e] |
+ \onevoice \d [e,8()f][c, g'][f'()e] |
f4 f,2 |
- \voiceone a''4 \d a4.-\trill()bes8 |
+ \voiceone a'4 \d a4.-\trill()bes8 |
[c bes16()a] \onevoice [fis8.-\trill()es16][d8()c] |
[bes g'][a, fis'][es'()d] |
%16
\voiceone bes4.-\trill \onevoice [a8(g)f!] |
- [g bes,()a f'(g)a] |
- [d, as,()g es'(f)g]|
+ [e bes()a f'(g)a] |
+ [d, as()g es'(f)g]|
[cis, bes'][a g16()f][e!8 f16()d] |
[cis8 e16()a][a,8. g'16]\n[f8()e] |
%21
@@ -46,42 +49,45 @@ sarabande_a = \melodic{
\d[b(cis d )cis] d4. \n[e16()f] |
\onevoice [d(cis)d f,] [a,8 e']\d[d'()cis] |
d4 d,,2 |
- \octave c';
}
-sarabande_b = \melodic{
-% \octave relative;
+sarabande_b = \melodic \relative c {
\voicetwo
% dispute
-% d4 a,2 |
+% d4 a2 |
% this avoids the clash bug
- d8. s16 a,2 |
- <d,4. a'> s8*3 |
+ d8. s16 a2 |
+ <a4. d,> s8*3 |
s2.*2
-% d4 a,2 |
- d8. s16 a,2 |
- <d,4. a'> s8*3 |
+ %5
+%disp
+% <a4 f> a2 |
+ <a8. f> s16 a2 |
+ <a4. d,> s8*3 |
s2. |
- <c,4. g'> s8*3 |
+ % 8
+ <g4. c,> s8*3 |
a4 <bes4. d> r8 |
+ %10
bes4 <g2 f'> |
s2.*2 |
- \d[f8()es] e4. r8 |
+ \d[f'8()es] es4. r8 |
d4 s2 |
+ %15
s2. |
- <g,4. d'> s8*3 |
+ <d4. g,> s8*3 |
s2.*4 |
+ %21
bes4 g2 |
- g4 <cis,4. bes'> s8 |
- <f,8 a d'> r r g, a4 |
+ g4 <bes4. cis,> s8 |
+ <d8 a f> r r g, a4 |
s2. |
f'4 fis4. s8 |
- <g,4 d'> gis'4. s8 |
- \octave c,;
+ <d4 g,> gis4. s8 |
}
-sarabande = \type Voice \melodic<
+sarabande = \type Staff \melodic<
\$sarabande_a
\$sarabande_b
>
diff --git a/mutopia/J.S.Bach/scs-paper.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly
index d9722237bc..d9722237bc 100644
--- a/mutopia/J.S.Bach/scs-paper.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly
diff --git a/mutopia/J.S.Bach/scsii-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-alto.ly
index e0ba58142c..e0ba58142c 100644
--- a/mutopia/J.S.Bach/scsii-alto.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-alto.ly
diff --git a/mutopia/J.S.Bach/scsii-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly
index 8434573408..8434573408 100644
--- a/mutopia/J.S.Bach/scsii-cello.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly
diff --git a/mutopia/J.S.Bach/solo-cello-suite-ii.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly
index a9c1e2eca9..da308e05bc 100644
--- a/mutopia/J.S.Bach/solo-cello-suite-ii.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly
@@ -22,4 +22,4 @@ vi = "gigue-" + \instrument + ".ly";
\include \iii;
\include \iv;
\include \v;
-% \include \vi;
+\include \vi;
diff --git a/mutopia/J.S.Bach/allemande-urtext.ly b/mutopia/J.S.Bach/allemande-urtext.ly
deleted file mode 100644
index 2b1631b41c..0000000000
--- a/mutopia/J.S.Bach/allemande-urtext.ly
+++ /dev/null
@@ -1,102 +0,0 @@
-% allemande-urtext.ly
-% belongs together with -cello.ly and -alto.ly
-% (who is going to make a -violin.ly?)
-
-%{
-Well, there are still some scripts in this "urtext".
-But merging music and scripts doen't work too well yet (see alto_scripts).
-%}
-
-n = { \slurnormal }
-d = { \slurdotted }
-comma = "\\sethuge,";
-
-allemande_a = \melodic{
- \voiceone a,16 |
- [a8 bes16()a] \onevoice
- [g()f e()d][d()cis d()e][g,8 \d bes16()g] |
- [f( a )d f,] [e8 cis']\voiceone[d8. e16]\onevoice[f g a bes!] |
- %3
- \voiceone[c8 \n d16()es]\onevoice[d()c bes()a][c()bes a()g][d'8. f,16] |
- [e( g )bes d][c()bes a()g]\n[bes()a g()f]
- <[f8. a> <f16 a]> |
- % urg fix
- [b \n f,( e )d][e \d cis'( d )cis]\voiceone[d'8.( )e16]\onevoice
- \n[f( e d)e] |
- %6
- [d( c b )c][b( a gis)a][g8-\prall fis16()e][e' c( a )g] |
- \voiceone [e' a, f d] [d f d b]\onevoice
- [fis( b e )gis] \d [b( d c )b] |
- %8
- \n[c( a f )d][d( f e )d][gis'8.-\trill()a16]\d[b d e,()d] |
- % urg
- % check [c( e a')d']\voiceone [b8.-\trill a16] a8 \onevoice |
- [c( e a')d']\voiceone [b8.-\trill a16] a8 s4 s8 \onevoice |
- %10
- [d,!16 gis'( a b a gis fis )e] \voiceone [d8 f16()e]\onevoice
- [d()c b!()a] |
- \voiceone[d'8 e16()f]\onevoice\d[e()d c()b]
- \voiceone[d''16()b c()a] \onevoice [e8 gis] |
- [a,8. cis16][e g!( f! )e][f( a )d gis,] a8.
- %13
- e,16 \voiceone [e8. f16] \onevoice
- \n[g!()e fis()a]\n[cis,( d )e bes,][a8.-\trill()g16] |
- [f a''(f)d][g' \n b,()cis a'][g(f e)d][fis d()es c(] |
- %15
- [)bes g'(a, )g][fis a d c'][bes(fis,)g bes][d()a bes()g] |
- [es(d)es g][c()a bes()g]\d[d,(c)d g]\n[bes()fis, g()es] |
- %17
- \n[c(bes)c bes'][a(c)es g,]\voiceone[fis8-\trill\d g16()a]\onevoice
- [d,8 es16()c] |
- [bes(d )g bes,][d,8 fis][g8. a16][bes d g, f] |
- %19
- \voiceone[e'8.-\trill()f16]\onevoice [g()e c()bes]
- \n[a()f' g,()f][e g''( a )bes] |
- % :-(
- % [bes( a g )f^\comma]
- [bes( a g )f^"\\sethuge{\\ '}"]
- [a()e, f()d][bes d(f)a][d'()a bes()g] |
- %21
- [a,(\n)g'(\n cis'())d][e()g, a()es,][f()d bes()d]\d[gis, f'(e)d] |
- % \n[d( cis b )a^\comma][c(a)fis d'][c a( b )d]
- \n[d( cis b )a^"\\sethuge\\ ,"]
- [c(a)fis d'][c a( b )d]
- [f!(d )gis, d'] |
- %23
- [cis(e g!)bes][e'()a, bes()g][f()cis, d()gis,][a8 cis!] |
- % knee
- \stemup [d,16 \stemboth d''(c!)a][bes!(g)e cis'][d a f d] d,8.
- \octave c';
-}
-
-allemande_b = \melodic{
- \voicetwo
- s16 |
- <d,8 g' f'> s8 s2. |
- s2 <d,,8. a'> s16 s4 |
- <d,8 a' fis'> s8 s2. |
- s1 |
- s2 d,,8. s16 s4 |
- s1 |
- f''!16 s16*3 b, s16*3 s2 |
- s1 |
- s4 e [dis,8 ~ dis32 e( fis gis][a b c d! c b c )a] |
- s2 <c,8 a'> s8 s4 |
- % check <gis,,8 bes''> s8 s4 <a,,8 e'> s8. s16 |
- <gis,,8 bes''> s8 s4 <a,,8 e'> s8 s4 |
- s1 |
- % check
-% s16
- <g,8 cis''> s8 s2. |
- s1*3 |
- s2 c,,8 s8 s4 |
- s2 g,8. s16 s4 |
- bes'8.
- \octave c;
-}
-
-allemande = \type Voice \melodic<
- \$allemande_a
- \$allemande_b
->
-
diff --git a/mutopia/J.S.Bach/courante-urtext.ly b/mutopia/J.S.Bach/courante-urtext.ly
deleted file mode 100644
index 21b6b4d1ee..0000000000
--- a/mutopia/J.S.Bach/courante-urtext.ly
+++ /dev/null
@@ -1,69 +0,0 @@
-% courante-urtext.ly
-% belongs together with -cello.ly and -alto.ly
-% (who is going to make a -violin.ly?)
-
-%{
-Well, there are still some scripts in this "urtext".
-But merging music and scripts doen't work too well yet (see alto_scripts).
-%}
-
-n = { \slurnormal }
-d = { \slurdotted }
-
-% write as two voices? see allemande/sarabande
-courante = \melodic{
- d'16 |
- [d a f a] [d, f g a]\d[bes()a bes()g] |
- <\voiceone g4 a {\voicetwo \n cis, ~ [cis16 d e f]}>
- \onevoice \d[g()f g()e] |
- [f()d e()c!]\n[bes(a)bes a'][g f e d] |
- %4
- % [cis e \n a,(\d(b][[cis d e f][)g )bes-- a e] |
- [cis e \n a,(b][[cis d e f][)g bes-- a e] |
- % [f a \n d,(\d( e][f g a bes][)c )bes-- d c] |
- [f a \n d,( e][f g a bes][)c bes-- d c] |
- \n<{\voicetwo <g,,4 {f'~ f16}>} {\voiceone c'4 ~ [c16 bes a g]}>
- \onevoice [f()es d()es] |
- %7
- [d bes(a)bes][d bes e'! bes,][f' bes, g' bes,] |
- \d[e,( g )c' d][e f g a][bes()a bes()g]|
- \n[a f(e)f][a f bes f,][c' f, d' f,] |
- %10
- [cis,( e )a' b][cis d e f][g()f g()e] |
- [d,,( f' )d' e]\n[d()c d()c][b()a b()a] |
- \n[gis( a )b e,]\n[f()e f()d][e()c d()b] |
- %13
- \n[c a'( b c][b a gis)a][d, a' e, a'] |
- [f a( b c][b a gis)a][f a e, a'] |
- [dis, a'( b c][b a gis)a][e, a' e, g] |
- [a e, cis e][a, cis e gis] a8.
- %17
- e'16 |
- [e cis a cis][e, f g a][bes()g cis'()g,] |
- <\voicetwo f4 {\voiceone d' ~ \stemdown[d16 a d e] }>
- |
- \n[b f,(d)f]\d[g, d'(f)g][b f, d' f,] |
- %20
- [e g c,(d][e f g a][)bes! d c g,] |
- <\voiceone a {\voicetwo [f c'(bes a][g f es d]
- [)es c' f, es]}> |
- <\voicetwo bes,4 {\voiceone d ~ [d16 e! f g]}>
- \onevoice
- [a bes c d] |
- %23
- [e, bes,(a)g][a f' \n g,()f]\d[c,()g' f' e] |
- [f a( bes a][g f e )f][g e f d]|
- [cis g' b, g'][a, g' b, g'][cis, g' a, g']|
- %26
- [f d f a][d a, d' e][f a, f d]|
- [g, d'(g)a][bes g' a, f'][g, e' f, d']|
- \n[cis(d)e cis][a cis bes cis][a cis g, cis']|
- %29
- \n[f, d'(e f][e d cis)d][g, d' a d]|
- \d[bes d(e f][e d cis)d][bes d a d]|
- [gis, d'(e f][e d cis)d][a d a cis]|
- [d a f a][d, f a, d]
- d,8.
- \octave c';
-}
-
diff --git a/mutopia/J.S.Bach/out/dummy.dep b/mutopia/J.S.Bach/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/mutopia/J.S.Bach/out/dummy.dep
+++ /dev/null
diff --git a/mutopia/J.S.Bach/prelude-urtext.ly b/mutopia/J.S.Bach/prelude-urtext.ly
deleted file mode 100644
index 33c6433024..0000000000
--- a/mutopia/J.S.Bach/prelude-urtext.ly
+++ /dev/null
@@ -1,117 +0,0 @@
-% prelude-urtext.ly
-% belongs together with -cello.ly and -alto.ly
-% (who is going to make a -violin.ly?)
-
-%{
-Well, there are still some scripts in this "urtext".
-But merging music and scripts doen't work too well yet (see alto_scripts).
-%}
-
-n = { \slurnormal }
-d = { \slurdotted }
-
-%
-% this must be redone a bit:
-%
-% * two voices: see allemande/sarabande
-% * beams in different beam-thread: see first few bars
-% * slurs/ties in two different threads: urtext, and additionals
-%
-
-%prelude_notes = \melodic{
-prelude_notes = \type Thread = prelude \melodic{
- d,8 f a4 ~ a16 f( e )d |
- cis( e g )a bes4 ~ bes16 a( g )f |
-
- [e( g a )cis] \d [e8.() bes,16] \n [a16( g f )e] |
- [f( g a )f] [d8( c! bes )a] |
- %5
- [bes16 d( f )a] \d [d8.()c16] [bes( a g )f] |
- [e( g bes )d] [c( a bes )g] [f( e )g bes,] |
- \n [a c( e )g] \d [c8.()bes16] \n [a( g f )e] |
- \d [d( f a )c] [bes( g a )f] \n [e( f a )f] |
- %9
- \d [g, bes( d )f] [bes8.() a16] \n [g( f e )g] |
- [a, c( e )g] [c a( e )g] [f( a )d, es] |
- [d a( bes )d] [g bes( a )c] \d [bes( g )d' f,] |
- %12
- \n[e b( c )e] \d[g d( e )c] [bes( g )e' bes,] |
- [f8 a] \n c4 ~ [c16 bes( a )g] |
- [fis a( bes )c] [d, c'( bes )a] [fis' es( d )c] |
- \d [bes( a )g bes] \n d4 ~ [d16 \d c( bes )a] |
- %16
- \n[gis b( c )d] [e, d'( c )b] [gis' \d f ( e )d] |
- [c( b a )c] [f( e f )gis] [a( f d )c] |
- \n [b( d gis' )b] \d[d8.()c16] \n[b( a gis )a] |
- %19
- \d [c,( e a )c] [e8.()c16] \n [b( a gis )a] |
- [d,( f a )d] \d[f8.()e16] \n[d( c b )d] |
- \d[e, d'( c )b] \n[a c( b )a] [d, b'( a )gis] |
- %22
- [c, a'( g!)f] [cis g,( f )e] [d f( e )d] |
- [gis' \d d'( e )f] [b' f,( e )d] [gis,\n d'( c )b] |
- \d[a( b c )e] [a( b c )a] [e( c a )g!] |
- % 25
- % B"arenreiter and Chester say "c bes c"
- [fis \n a( c )d] \d[es8.()d16] \n[c( bes )c a'] |
- [bes,( a )bes d] [g, es'( f )g] [a, g'( f )es] |
- [d( c )d f] [bes, g'( a )bes] [cis, bes'( a )g] |
- % 28
- [f( e )f a] [d, bes'( c! )d] [e,! \d d'( c )bes] |
- \n[a( g )a c] [f, d'( e )f] [g, f'( e )d ] |
- [cis g,( f )e] [a, e'( f )g] [cis'( bes! )a g] |
- %31
- [f( g )a cis] [d a( g )f] [a f( e )d] |
- \d[gis' d,( e )f] [ a, f'( e )d] [gis'( f! )e d ] |
- [cis( b )cis e] [a \n e( cis )e] [a, g'!( f )e] |
- %34
- [f( e )f a] [d a( f )a] \n[d, c'!( bes )a] |
- [g( f )g cis'] [e \d cis( g, )cis'] [a,, g'( f )e ] |
- [d a' d e] [f d a f] [d c'!( bes )a] |
- %37
- \n[g( a )bes d,] [es f g a] [bes g es' g,] |
- \d[f( g )a cis,][ d e! f g][a f d' f,] |
- [e( f )g bes,][a b cis d] \d[e bes, g' bes,] |
- %40
- [cis,8 a'] \n g'4 ~ [g16 bes( a )g] |
- [f( e d )e] [f d a' f] [d' a f d] |
- [gis,8 f'] d'4 [d16 f( e )d] |
- [cis( b )a b][cis a d a][e' a, f' a,] |
- %44
- [g' \d e( cis )e][a,( cis )e f][g f g e] |
- [f d( cis )d][a( cis )d e][f e f d] |
- [e cis( b )cis]\n[a( b )cis d][e d e cis] |
- %47
- [d \n b( a )b][f,(gis )b cis][d cis d b] |
- <{\voiceone <d,4^\fermata cis'>}{\voicetwo g,,}>\onevoice r r |
- [bes''16 g( fis)g][es g d g]\d[es( g)bes d,] |
- [cis--( \n e!( g ))a]\d[bes8.()a16]\n[g( fis )g e'] |
- %51
- [f,! d' bes g]\d[a()f e()g][f()d cis()e] |
- [d bes( a )g][fis--( \n a( c! ))es]\d[d( c bes )a] |
- [bes g( fis )g][es g d g]\n[es( g )bes d,] |
- %54
- <\voicetwo cis4 bes' {\voiceone [g'8.( )f16] }>
- \n[e!( d cis b][a g f )e] \onevoice |
- \d[d--( \n a'( d ))e][f( e d c!][bes! a g )f] |
- \d[e--( \n a( cis ))e][g( f e d][cis b a )g] |
- [f a( d )f][a d,( f )a][d bes! c! a] |
- [g,, \d d'( g )a][bes \n g( fis)g][es' g, d' g,] |
- <{\voiceone <g2. cis'> | <f,2. d'> | <e, d'> | <e, cis'> | <f, d' > | }
- {\voicetwo a,,2. a a a <d, a'>}>
- \octave c';
-}
-
-prelude_beam1 = \melodic { [s8 s]s4[s16 s s s] }
-prelude_beam2 = \melodic { [s16 s s s]s4[s16 s s s] }
-
-prelude_beams = \type Thread = prelude \melodic{
- \$prelude_beam1
- \$prelude_beam2
-}
-
-prelude = \type Voice \melodic<
- \$prelude_notes
- \$prelude_beams
->
-
diff --git a/mutopia/J.S.Bach/preludes-1.ly b/mutopia/J.S.Bach/preludes-1.ly
deleted file mode 100644
index 9bb0f07040..0000000000
--- a/mutopia/J.S.Bach/preludes-1.ly
+++ /dev/null
@@ -1,125 +0,0 @@
-\header{
-filename = "preludes-1.ly";
-% mmm
-title = "DOUZE PETITES PR\'ELUDES";
-opus = "BWV 924";
-% piece = "\\numfont 1";
-piece = "1";
-% blz 1
-% Clavierb"uchlein f"ur W. Fr. Bach
-% Clav. W. Fr. Bach: 2-Praeambulum I
-% ca 1720
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "jcn";
-copyright = "public domain";
-}
-
-one = \melodic{
- \octave c'';
- \textstyle "italic";
- r16\p_"legato"\< [g,-1( c-3 )e-5] r [g,-1( c )e]
- r [g,( c )d] r [b,-1( d-2 \!)g-5] |
- r\mf [a,( d-2 ) g-5] r [a,(\< d )f-4]
- r [a,( d )e-3] r [c-1( e-2 \!)a-5] |
- r\f [b, e a-5] r [b, e-3 g-5]
- r [c-1 e-3 f-4] r [g, d-3 f-5] |
- r [g,-"poco a poco dim." d-4 e] r [g, c-2 e]
- r [a,-1 c-3 d-4] r [e, b,-3 d-5] |
- r [e, b, c-4] r [e, a,-2 c]
- r [f,-1 a,-3 bes,-4] r [c, g,-3 bes,-5] |
- r [c, g, a,-4] r [c, f,-2 a,]
- r [d, f,-2 b,-5] r [e, g,-2 c-5] |
- r\p [d, g, c-5] r [d, g, b,-4]
- r [c, g,-3 b,-5] r [c, fis,-2 a,-4] |
- r [b,, d, a,-5] r [b,, d, g,-4]
- r [a,, c, g,-5] r [a,, c, f,!-4] |
- % ugh, arpeggio
- <
- { \voiceone f,4 r s }
- { \voicetwo <g,,4 d,> r s }
- >
- \onevoice
- % ugh beam across staffs, slur starts at lower staff
- r16 [g,,-1( b,, d,] |
- \voiceone
- )b,, s4 [g,16-1( b,-2 d] )b, s s s [f-2 g-3 b-5 f-2] |
- \onevoice
- [e-1\f c'-5( g-3 f-2] [e-1 c'-5 g-3 e-2]
- [)d c'-5( f-3 e-2] [d-1 b-5 f-3 d-2] |
- [)c b-5( e-3 d-2] [c-1 a-5 e-3 c-2]
- [)b,-1 a-5( d-3 c-2] [b,-1 g-5 d-3 b,-2] |
- [)a, g-5 c-4 b,] [a,-"poco a poco dim." fis-5 c-2 a,-1]
- [b,-2 f d-4 c] [b, f d-4 b,-2] |
- [g, e c-3 b,] [a, e-5 c-3 a,-1]
- [fis,-2 d b,-3 a,] [g,-1 d-5 b,-4 g,-2] |
- [e, c-5 a,-4 g,-3] [fis,-2 c-5 a,-4 fis,-2]
- [d, c-5 b,-4 a,] [b,-4 g,-2 d-5 f,-1] |
- [g,-4 e,-2 f,-1 d-5] [c-4 b, a, g,]
- [f-5 d-3 es-4 c-2] [fis,-1 es-4 d-3 c-2] |
- [b,-1 d-5 b,-3 g,-1] [as,-4-"cresc. e rall." f,-2 g,-3 d,-1]
- [es,-2 fis,-3 a,-4 c-5]
- <
- { \voiceone r [c8 b,16] }
- { \voicetwo [d,8 f,-2] }
- >
- \onevoice |
- <c1\mf g, e,>
- \bar "|.";
-}
-
-two = \melodic{
- \octave c;
- \textstyle "roman";
- c4-5 e-3 g-\mordent^"(\\textsharp)" g,4 |
- d-\mordent-5 f-3 a-\mordent^"(\\textsharp)" a,4 |
- e-5 e'-\mordent-1 a-4 b-\upprall |
- c'4 e-4 fis gis-\downprall |
- a4 c-4 d e-\upprall |
- f4-1 e d-3-\prall c |
- g-\mordent^"(\\textsharp)" g, g-\mordent g, |
- g-\mordent g, g-\mordent g, |
- % ugh, f should be at upper staff
- g-\mordent r r16 [g,-5( b,-4 d] )f-1 s s s |
-% s [g-5( b-4 d'-2] )f'-1 s s s s \clef violin; [g'-4 b'-2 d''-1]
- % huh, can't violin anymore (see BUGS)
- s [g-5( b-4 d'-2] )f'-1 s s s s [g'-4 b'-2 d''-1]
- s s s s \clef bass; |
- <
- { \voiceone g1 ~ g ~ g ~ g ~ g ~ g ~ g }
- { \voicetwo g,1 ~ g, ~ g, ~ g, ~ g, ~ g, ~ g, }
- >
- <c1 c,>
- \bar "|.";
-}
-
-global = \melodic{
- \meter 4/4;
-}
-
-treble_staff = \type Staff = treble <
- \global
- \one
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
- \clef "bass";
- \global
- \two
->
-
-grand_staff = \type Grand_staff <
- \treble_staff
- \bass_staff
->
-
-a4 = \paper{
- linewidth= 193.\mm;
-}
-
-\score{
- % Moderato
- \grand_staff
- \paper{ \a4 }
- \midi{ \tempo 4 = 80; }
-}
diff --git a/mutopia/J.S.Bach/preludes-2.ly b/mutopia/J.S.Bach/preludes-2.ly
deleted file mode 100644
index 8f4dca4506..0000000000
--- a/mutopia/J.S.Bach/preludes-2.ly
+++ /dev/null
@@ -1,132 +0,0 @@
-\header{
-filename = "preludes-2.ly";
-title = "2";
-opus = "BWV 939";
-% urg?? piece = "\\numfont 2";
-piece = "2";
-% blz 10
-%
-% Six Petits Pr'eludes
-% Collection Johann Peter Kellner
-% ca 1703 - 1707
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "jcn";
-copyright = "public domain";
-}
-
-one = \melodic{
- \octave c'';
- \textstyle "italic";
- r8\mf [c,-1( e,-2 g,-4] [e,-2 c,-1 bes,-5 g,-3] |
- [)a,-4\< c,-1( f,-2 a,-4] [f, c, c-5 a,-3] |
- [)b,-4 g,-1( b,-2 d-4] [b,-2 g, f-5 \!d-3] |
- <
- {\voiceone )e2-4\f r4 e-5 }
- {\voicetwo <c2 g,> r4 <c g,> }
- >
- \onevoice |
- <
- { \voiceone d2-4 r4 d-4 }
- { \voicetwo <c2 a,> r4 <c a,> }
- >
- \onevoice |
- <
- { \voiceone d8 }
- { \voicetwo <b,8 g,> }
- >
- \onevoice
- [g,8-1\mf( b,-2 d-4]
- <
- { \voiceone )b,4 e-5 }
- { \voicetwo g,4 b, }
- >
- \onevoice |
- <
- { \voiceone c2 r4 < {c-5 ~ c8} {a,4 ~ a,8} > }
- { \voicetwo c2 r4 e,4 ~ e,8 }
- >
- \onevoice
- [d,-1\p( fis,-2 a,-4] [fis,-2 d,-1 c-5 a,-3] |
- [)b,-4\< g,-1( b,-2 d-4] [ b,-2 g,-1 f!-5 d-3] |
- [)e-4 g,-1( c-2 e-4] [c-2 g, g-5 e-3] |
- [)fis-4 a,-1( c-2 fis-4] [c a, a-5 \!fis-3] |
- <
- { \voiceone )g2-5\f }
- { \voicetwo <d2 b,> }
- >
- \onevoice
- r4 b4-2( |
- [c8-1 e-2 g c'] [g-2 e-1 bes-4 g-2] |
- [)a16->-3 g-2 f-1 e-3] [d c b,!-3 a,-2]
- [b,-3\< g,-1 a, b,] [c-1 d e \!f] |
- g4-5\ff
- <
- { \voiceone c2-5 b,4-4 }
- { \voicetwo g,2-2 d,4-1 }
- >
- \onevoice
- <
- { \voiceone c1^5 }
- { \voicetwo e,1_1}
- >
- \onevoice
- \bar "|.";
-}
-
-two = \melodic{
- \octave c;
- <
- { \voiceone c1 ~ | c ~ | c }
- { \voicetwo c,1 ~ | c, ~ | c, }
- >
- \onevoice |
- r8 [c-5( e-3 g-1] [e-3 c-5 c' e-4] |
- [)fis-3 d-5( fis-3 a-1] [fis-3 d-5 d' fis-4] |
- )g2-3 r4 g-2( |
- [)a8 a,-5( c-4 e-2] [c-4 a,-5 g e-3] |
- )fis2 r4 d-4 |
- g-\mordent-"(\\textsharp)" g,4 g-\mordent g, |
- % mordents in brackets...
- g-\mordent g, g-\mordent g, |
- g-\mordent g, g-\mordent g, |
- [g8 g,-5( b,-4 d-2] [b,-4 g,-5 f!-1 d-3] |
- [)e-2 c-4 e-2 g-1] [e-3 c-5 c' e-4] |
- \textstyle "finger";
- f1^"3\\_1" ~ |
- [f8 d-3 e-2 c-4] g4-1 g,^"5\\_2" |
- <c1 c,1>
- \bar "|.";
-}
-
-global = \melodic{
- \meter 4/4;
-}
-
-treble_staff = \type Staff = treble <
- \global
- \one
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
- \clef "bass";
- \global
- \two
->
-
-grand_staff = \type Grand_staff <
- \treble_staff
- \bass_staff
->
-
-a4 = \paper{
- linewidth= 193.\mm;
-}
-
-\score{
- % Moderato
- \grand_staff
- \paper{ \a4 }
- \midi{ \tempo 4 = 100; }
-}
-
diff --git a/mutopia/J.S.Bach/preludes-4.ly b/mutopia/J.S.Bach/preludes-4.ly
deleted file mode 100644
index 7ebf40661f..0000000000
--- a/mutopia/J.S.Bach/preludes-4.ly
+++ /dev/null
@@ -1,209 +0,0 @@
-\header{
-filename = "preludes-4.ly";
-title = "4";
-opus = "BWV 925";
-% piece = "\\numfont 4";
-piece = "4";
-% blz 8
-% Clavierb"uchlein f"ur W. Fr. Bach
-% Clav. W. Fr. Bach: 27-Praeludium ex d neutral
-% ca 1720
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "jcn";
-copyright = "public domain";
-}
-
-one = \melodic{
- \octave c'';
- \textstyle "italic";
- r16\p_"legato"
- \textstyle "finger";
- [d,-1( fis,-3 d,-1] [a,-2 b,-3 cis-4 a,-3]
- [d-3 cis-2 d-1 e-2] [d-1 fis-3 e-2 d-1] |
- \textstyle "finger";
- \stemup
- )cis4-2 fis-5 ~ [fis8 fis-4] e4-3 ~ |
- e16\< \stemboth [a,16( cis a,] [d-2 e fis d-1]
- [g-3 fis g a-4] [g-3 b a \!g] |
- \stemup
- )fis4-"2\\_3" [e8-2 a-5] <fis4-4 d-2> <gis-5 e-3> |
- <a4-5( e> <fis-4 d-2> <[)g!16-5 d> fis-2 g-3 a-4]
- \stemboth
- [g-3 b a g] |
- \textstyle "italic";
- [fis_"dim." e fis-3 g] [fis-3 a-5 g fis]
- \textstyle "finger";
- e4-"2\\_5" ~ e16 [e,( fis, g, ] |
- \textstyle "italic";
- [a,-4_"dim." g,-1 a, b,] [a,-2 c-4 b, a,]
- [g,-1 fis,-2 g,-3 a,] [g,-3 b, a, g,] |
- \stemup
- )fis,4\p
- \skip 4*7; |
- \textstyle "finger";
- d4.\mf cis8-"4\\_5" ~ cis b,4-5 a,8-"4\\_5" ~ |
- \textstyle "italic";
- a, g,4-5 fis,8-4 ~ [fis,16 fis,-4-"dim." e,-3 d,-2]
- \textstyle "finger";
- e,4-"3\\_5" ~ |
- [e,16 e,-5 d, cis,] d,4-5 ~ [d,16 d,-5 cis, b,,] cis,4-5 |
- \stemboth
- [fis,,16-1\p a,,-2 d,-5\< c,-4] [b,,-1 d,-2 g,-5 fis,-4]
- [d,-1 b,-5 a, g,] [fis,-2 e,-1 d,-4 \!c,!-3] |
- [b,,-2 d,-1 g, a,] [fis,8-\prall e,16-4 d,-3]
- [d,8. e,16~] [e, d,8 cis,16] |
- \stemup
- r16 [d,-1\< fis, d,] [g, a, b, g,-1] [c-3 b, c d] [c e d-4 \!c] |
- b,4-5 a, ~ [a,8 g,-5 ~] [g,16 fis,8-4 e,16-3] |
- [fis,8-4 e,-5~] [e, d,-5~] d,4 cis,-4 |
- d,2\p-"rall." ~ [d,16 a,,-2( b,,-3 cis,-4] )d,4-5 |
- \bar "|.";
-}
-
-two = \melodic{
- \octave c;
- \textstyle "finger";
-% ugh: koor
-% \translator Staff=bass \octave c; \stemup
-% \stemup
- fis4-1( e8-2 a4 a4 gis8-2 |
- ) a8
- \translator Staff=treble \octave c''; \stemdown
- a,4 a,8 b,4.-"2\\_1" cis8 ~ |
- cis8
- \translator Staff=bass \octave c; \stemup
- a8 ~ [a d'] ~ d' d'4-> cis'8 |
- d'8
- \translator Staff=treble \octave c''; \stemdown
- d4-> cis8-1 ~ cis b,4-1 b,8 |
- r8 a,4 a,8
- \translator Staff=bass \octave c; \stemup
- [g'8-1( fis'-2] )e'4-1 ~ |
- e'4 d' ~ [d'16 d'-1 cis'-2 b-1] cis'4-2 ~ |
- [cis'8 a-3] d'4.-1 d'4^> cis'8-2 |
- \translator Staff=treble \octave c''; \stemdown
- d,4
- \stemboth
- r16 [b,,-1\< d,-2 b,,~] <g,4-5 e,-3 b,,>
- r16 [cis,-1 e,-2 \!cis,~] |
- <a,4-5 fis,-3 cis,> r16 [d,-1 fis,-2 d,~] <b,4-5 g,-3 d,>
- r16 [fis,-1 a, fis,~] |
- \stemdown
- fis,4 e, d, cis, |
- b,, a,, b,,4. b,,8 |
- a,,4
- \translator Staff=bass \octave c; \stemup
- r16 [b-3 fis-1 a-2] g4-1 r16 [a-3 e-1 g-2] |
- \skip 4*4; \skip 16*1;
- \translator Staff=treble \octave c''; \stemdown
- d,8.-1 ~ [d,8 c,] d,4 [a,,8 g,,] |
- \translator Staff=bass \octave c; \stemup
- [fis'8 c'-1] b4-1 \stemdown <a
- \translator Staff=treble \octave c''; \stemdown
- a,,4.-2>
- \stemdown
- a,8~ |
- [a, g,-3~] [g,16 e, fis,8~] [fis,16 d,8.~] [d,8. cis,!16] |
- \translator Staff=bass \octave c; \stemup
-% <[d'8-2 a-1> <a~ g]> <a4 [fis16-2> e-1 fis-2 d-1]
- <
- { \voiceone [d'8-2 a~] a4 }
- { \voicethree [a8-1 g] [fis16-2 e-1 fis-2 d-1] }
- >
- \voiceone
- [g-1 fis-2 g-1 a-2] [g-1 b-3 a-2 g-1 ~] |
- [g g-1 fis-2 e-1] fis4-2 ~ fis2
- \bar "|.";
-}
-
-three = \melodic{
- \octave c;
-% \stemdown
- d4-3 c-4 b, e-3 |
- a16 [a,-5\mf( cis-3 a,-5] [d-2 e-1 fis-2 d-4]
- [g-1 fis-3 g a] [g b a g] |
- )fis4 fis e a-4 |
- d'16 \stemboth [d-5\f( fis-3 d-5] [a-2 b-1 cis'-2 a-4]
- [d'-1 cis'-3 d' e'] [d'-4 fis'-2 e'-1 ) d'] |
- [cis'-3 b-4 cis'-3 d'-2] [c'-4 e'-2 d'-3 c'-4]
- \stemdown b4-5 [cis'8-4 b-3(] |
- [a-4 )fis-5 b-2 a-3] [gis-4 e-5 a-3 g-4] |
- fis4. d8-5 e4-5 a4-3 |
- \stemboth
- r16 [d-4( fis-2 d-4] [)g8-.-1 g,-.-5]
- r16 [e-4( g-2 e-4] [)a8-. a,-.-5] |
- r16 [fis-4( a fis] [)b8-. b,-.] r16 [g-4( b g] [)d'8-. d-.] |
- r16 [d,16-5( fis,-3 d,] [a,-2 b,-1 cis-2 a,-4] [d b,-5 d-3 b,]
- [fis-2 g a-2 fis-4] |
- )fis16 [g,( b, g,] [d-2 e fis-2 d-4] [)g8-. g,-.] r16 [cis-4( e cis] |
- [)fis8-. fis,-.] \stemdown r16 [b,-4( d b,] [)e8-. e,-.]
- r16 [a,-4 cis a,] |
- \stemboth
- [d-1 e-3 fis-2 d-4] [g-1 fis-2 e-3 d-1] [cis!-3 a,-5 b, cis]
- [d-2 e fis-2 d-4] |
- [g8 e-3] \stemdown [a a,] [b,8.-4 g,16-5] a,4-4 |
- [d8-5 a-2~] [a g-3~] [g g-3] fis4-4 |
- \stemup
- r16 [g-2 b-1 g-3] [d'8.-1 c'16-1] [b8.-2 bes16-3] [a8-1 g] |
- \stemdown
- r16 [a,-2 cis!-1 a-2] [d-1 e fis d] [e8-1 d-2] [e-1 a,-2] |
- [d a,-2~] [a,16 a,-2 b, cis-2] d2 |
-}
-
-four = \melodic{
- \skip 4*36;
- \octave c';
-% \stemup
-% \property Voice.hshift = 1
- a2 fis |
- d
-% \property Voice.hshift = 0
- \skip 4*11;
- \translator Staff=bass \octave c; \stemup
- a4 ~ [a16 d-2 g8-1] [fis e-1] |
- \stemdown
- d1 ~ |
- d ~ |
- d, ~
- d,2 d,2
-}
-
-global = \melodic{
- \meter 4/4;
- \key fis cis;
-}
-
-treble_staff = \type Staff = treble <
- \global
- { \voiceone \one }
- { \voicefour \four }
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
- \clef "bass";
- \global
-% { \voiceone \two }
- { \type Voice = bone \skip 1*0; \property Voice.ydirection = \up \two }
- { \voicetwo \three }
->
-
-grand_staff = \type Grand_staff <
- \treble_staff
- \bass_staff
->
-
-widea4 = \paper{
- linewidth= 193.\mm;
-% arithmetic_basicspace = 2.;
-% arithmetic_multiplier = 6.\pt;
- arithmetic_basicspace = 3.;
- arithmetic_multiplier = 6.\pt;
-}
-
-\score{
- % Allegretto
- \grand_staff
- \paper{ \widea4 }
- \midi{ \tempo 4 = 70; }
-}
diff --git a/mutopia/J.S.Bach/preludes-5.ly b/mutopia/J.S.Bach/preludes-5.ly
deleted file mode 100644
index 2584662853..0000000000
--- a/mutopia/J.S.Bach/preludes-5.ly
+++ /dev/null
@@ -1,216 +0,0 @@
-\header{
-filename = "preludes-5.ly";
-title = "5";
-% piece = "\\numfont 5";
-piece = "5";
-opus = "BWV 926";
-% blz 2
-% Clavierb"uchlein f"ur W. Fr. Bach
-% Clav. W. Fr. Bach: 4-Praeludium 2
-% ca 1720
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "jcn";
-copyright = "public domain";
-}
-
-one = \melodic{
- \octave c';
- \textstyle "italic";
- [d8-1\p a-5-"legato" f-3 d-1 a-5 f-3] |
- [d-1 a-5 f-3 d-1 a-5 f-3] |
- [d-1\< bes-4 g-2 d-1 bes-4 \!g-2] |
- [d-1 bes-4 g-2 d-1 bes-5 g-3] |
- [cis-1\mf g-4 e-2 cis-1 g-4 e-2] |
- [cis-1 bes-5 g-4 e-2 a-5 g-4] |
- [f-3\< d-1 f-2 a-4 f-1 a-2] |
- [d'-5 a-1 d'-2 f'-4 d'-1 \!f'-2] |
- [b'\> f'-3 e' d' c'-3 b] |
- [a gis-3 fis e d'-5 \!b-2] |
- <
- {
- \voiceone
- \textstyle "roman";
- c'4-\mordent^"(\\textsharp)"\p r r |
- c'4-\mordent^"(\\textsharp)" r r
- \textstyle "italic";
- }
- { \voicetwo a4 r r | a4 r r }
- > |
- \onevoice
- [a'8\mf( es'-3\> d' c' bes!-3 a] |
- [g fis-3 e!-2 d-1 c'-4 \!a] |
- [)bes8-\mordent\p( d'8-5 bes-3 g-1] )g'4 |
- r8 [d'-5( c' bes a-\prall g] |
- [)a-2 c'-4( a f] ) f'4 |
- r8 [c'-5 bes a g-\prall f] |
- [g-2 bes-4 a g f-1 e-2] |
- [f-3 d-1 f-2 a-3 d'-5 g-2] |
- <
- {
- \voiceone
- % ... textnatural
- [cis'8-\prall e'8-5-"poco cresc." cis'-3 a e' cis']
- }
- { \voicetwo a4 }
- >
- \onevoice
- [a8 e'-5 cis' a bes!-3 a] |
- [g e'-5 cis'-3 g e'-5 cis'-3] |
- [g-1 e'-5 cis' g a-3 g] |
- [f-"dim." d'-5 bes f d' bes] |
- [f d'-5 bes f d' bes] |
- [fis-2-"dim." c'-5 a-3 fis-2 c'-5 a-3] |
- [fis-2 c'-5 a-3 fis-2 c'-5 a-3] |
- [bes-4 g-1 fis-2 g-3 d-1 g-2] |
- [bes-4 g-2 d-1 bes-5 g-3 d-1] |
- [e-2\p g-4 fis-3 g-1 bes-4 g-2] |
- [es-1 bes-4 g-2 es bes g] |
- [cis-1 bes-4 g-2 cis bes g] |
- [cis-1 bes-4 g-2 cis-1 a-5 g-4] |
- [f-3 a f d a-5 f] |
- [d-1 a-5 f-3 d-1 cis-2 d-1] |
- [e-3\< g-5 e-3 bes,-1 g-5 e-3] |
- [bes,-1 g-5 e-3 \!cis-2 a,-1 g-5] |
- [f16-4\mf d-2 c-1 bes,-3] \stemup a,-2 s16 s8 s4 |
-% ugh
-% s1 |
- s4 s4 s4 |
- s4 s16 [d16-1-"m.d." f-2 a-4] \stemdown [d-2-"m.g." f a] \stemup d'-1 |
- \stemboth
- [f' a'-4 f' d'] [f'-4 d' b d'-5] [gis-2 b a gis] |
- <g'!4.-5\f e' a> a'8-5
- <
- {
- \voiceone
- f'4-4\> ~ | \![f'8 e'] [e'32-4 f' e'8. ~] [e'8 d'-3]
- }
- { \voicetwo <d'4 a> r4 cis'-2 }
- > |
- \onevoice
- [d'8-4 c'!-3 a-1 d'-4 bes-2 g-1] |
- [c'-5 a-3 fis-2 bes-4 g e ] |
- [a-5 fis-"dim. e rall." d g-5 e cis-2] |
- <
- { \voiceone <fis2-.-5\p a,> }
- { \voicetwo [d32( cis d8. ~] ) d2 }
- > |
- \bar "|.";
-}
-
-
-two = \melodic{
- \clef "bass";
- \octave c;
-% [d32( cis )d8.] r4 r |
- d4-\mordent r r |
- d,4 r r |
- d-\mordent r r |
- d,4 r r |
- d-\mordent r r |
-% d r r |
- d,4 r r |
- [d8-2 a,-5 d-2 f-1 d-4 f-2] |
- [a-1 f-4 a-2 d'-1 a-2 d'-1] |
- gis4-3 r r |
- e-4( )gis-2 e |
- [a8-4 e'-1 c'-2 a-4 e'-1 c'-2 ] |
- [g!-5 es'-1 c'-1 g-5 es'-1 c'-1 ] |
- fis4-5 r r
- d-4( ) fis d-5 |
- \textstyle "roman";
- g4-\mordent^"(\\textsharp)" r r8 f!8 |
- \textstyle "italic";
- e4-\prall r r |
- f4-\mordent r r8 e |
- d4 r8 [f-1 e d] |
- [e-2 d-3 cis-4 e-1 d-2 cis-3] |
- d4-2( )c! bes,-4 |
- a,( )a a, |
- a,( )a a, |
- a,( )a a, |
- a,( )a a, |
- bes, r r |
- bes,-5( )bes bes, |
- a, r r |
- a,-2( )d-1 d, |
- g, r r |
- g,( )g g, |
- g, r r |
- g,( )g g, |
- a, r r |
- a,( )a a, |
- a, r r |
- a,( )a a, |
- cis, r r |
- cis,( )cis cis, |
- d,-4 s16
- \stemdown
- [g16-1-"m.g." f e] [f-2 a d-3 f] |
- a,
- \stemup
- [d-5-"m.d." c bes,] a,
- \stemdown [g,-2 f,-"m.g." e,] [d, f,-4 a,-2 d-1] |
- \stemup
-% [f-2\ped a]
- [f-2-"Ped." a]
- \stemdown
-% [d-4-"m.g." f-"cresc."] a s s8 s4\dep |
- [d-4-"m.g." f-"cresc."] a s s8 s4-"*" |
- \stemboth
-% ugh, whole rest has duration of one bar
-% r1 |
- r4 r r |
-%{
- ugh, forget,' the 8 below:
- [cis-3( e cis a,] [d16-1 c bes, a,] |
- and lily dumps koor
-lilypond: ../flower/include/varray.hh:116: struct Rhythmic_grouping *& Array<Rhythmic_grouping *>::elem(int) const: Assertion `i >=0&&i<size_' failed.
-Aborted (core dumped)
-%}
- [cis8-3( e cis a,] [d16-1 c bes, a,] |
- [)g,8 g a-2( g-3 a-1 a,] |
- )d4-3 d'-1 d |
- d r r |
- d,( )d d, |
- d,2. |
- \bar "|.";
-}
-
-global = \melodic{
- \meter 3/4;
- \key bes;
-}
-
-treble_staff = \type Staff = treble <
- \global
- \one
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
- \clef "bass";
- \global
- \two
->
-
-grand_staff = \type Grand_staff <
- \treble_staff
- \bass_staff
->
-
-widea4 = \paper {
- \paper_twenty
-% arithmetic_basicspace = 2.;
-% arithmetic_multiplier = 6.\pt;
- arithmetic_basicspace = 2.;
- arithmetic_multiplier = 8.\pt;
- linewidth= 193.\mm;
-}
-
-\score{
- % Moderato
- \grand_staff
- \paper{ \widea4 }
- \midi{ \tempo 4 = 90; }
-}
-
diff --git a/mutopia/J.S.Bach/preludes-6.ly b/mutopia/J.S.Bach/preludes-6.ly
deleted file mode 100644
index 2a23c20d43..0000000000
--- a/mutopia/J.S.Bach/preludes-6.ly
+++ /dev/null
@@ -1,127 +0,0 @@
-\header{
-filename = "preludes-6.ly";
-title = "6";
-% piece = "\\numfont 5";
-piece = "5";
-opus = "BWV 940";
-% blz 11
-% Six Petits Pr'eludes
-% Collection Johann Peter Kellner
-% ca 1703 - 1707
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "jcn";
-copyright = "public domain";
-}
-
-one = \melodic{
- \octave c';
- \skip 4*4; |
- \stemup
- r4 d'2-5( cis'4-4 |
- \stemboth
- [)d'16-5\mf a'-4( g' f'] [e' f'-4 cis'-2 d'-1]
- [e'32-3 d' e'8 f'16] [d'8.-1 cis'16-3] |
- \stemup
- )cis'4\> ~ [cis'16 a \!d'8 ~] d'4 c'-5 |
- b2-4 ~ b4 a-5 ~ |
- [a16 a-5 \stemup g! f] g4-4\< ~ g f-3 ~ |
- [\!f16 a g f] [e16 g8.-5 ~] [g16 g-5 f-4 e-3] [d-1 f8.-4 ~] |
- [f16 f-3 e d] b4 a-5 g-5 |
- fis4-4 g r8\<-"rall." [g16-1( bes-2] \!e'4-5 |
- \!)d'1-5
- \bar "|.";
-}
-
-two = \melodic{
- \octave c';
- r16\p [d'-5( c'-4 bes-3] [a-2 bes-3 f-1 g-2]
- [a32-3 g a8 bes16-1] [g8. f16-1] |
- \stemdown
- )f2 e2 |
- \translator Staff=bass \octave c; \stemup
- r4 a-1 bes-2 b-1 |
- \translator Staff=treble \octave c'; \stemdown
- r16 [b-3 a-1 g-2] [f8. f16-2] e2 ~ |
- e2 ~ e4 ~ [e16 e-2 f! d-1] |
- s4 [e32 d e8.~] e4 d4 ~ |
- d4. [cis16-2 d-1] cis4 d-1 ~ |
- d8 r r16 [e-2 f d] r16 [e-2 f d] r [d-1 e-3 cis] |
- r16 [e-3 d-1 c!-2] [bes,! d8.] s4 r16\> [bes-2 a-2 \!g-1] |
- fis1-2
-}
-
-three = \melodic{
- \octave c;
- \stemup
- f2-1( e-2 |
- \stemboth
- [)d16 d'( c' bes] [a-4 bes-2 f-5 g-4]
- [a32 g a8 bes16-2]
- [g8.-4 f16-5] |
- )f2-5 g4-4 gis |
- a2-2 ~ [a16 a-1( g f] [e-4 f-2 c-5 d] |
- [e32 d e8 f16] [d8.-4 c16-5] \stemboth )c4.-5 d8-4 |
- \stemdown
- e4 ~ [e16 f-2( e-3 d-4] [cis a, b, cis-3] [d-4 e-3 f-2 d-4] |
- \textstyle "finger";
- )bes,!2-"5\\_4" a, ~ |
- a, a, |
- d, cis-5 |
- a1-2
- \bar "|.";
-}
-
-four = \melodic{
- \octave c;
- \stemdown
- d2-3 cis-4 |
- \skip 4*12;
- \translator Staff=treble \octave c'; \stemup \property Voice.hshift = 1
- a4 gis-2 ~ [gis16 gis-3 fis e]
- \skip 4*1;
- \translator Staff=bass \octave c; \stemdown \property Voice.hshift = 0
- \stemup
- b2-1 a-1 |
- g a4. [gis16 a] |
- gis2 <[g8 cis> <f-3 d-1]> e4-2 |
- d4. [fis16-3 g-2] r16 bes8.-1 ~ bes4 |
- \stemdown
- d1-5
-}
-
-global = \melodic{
- \meter 4/4;
- \key bes;
-}
-
-
-treble_staff = \type Staff = treble <
- \global
- \one
- \two
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
- \clef "bass";
- \global
- \three
- \four
->
-
-grand_staff = \type Grand_staff <
- \treble_staff
- \bass_staff
->
-
-a4 = \paper{
- linewidth = 193.\mm;
-}
-
-\score{
- % Allegretto
- \grand_staff
- \paper{ \a4 }
- \midi{ \tempo 4 = 40; }
-}
-
diff --git a/mutopia/J.S.Bach/wtk1-fugue1.ly b/mutopia/J.S.Bach/wtk1-fugue1.ly
index 1fab56068f..630abd5978 100644
--- a/mutopia/J.S.Bach/wtk1-fugue1.ly
+++ b/mutopia/J.S.Bach/wtk1-fugue1.ly
@@ -11,197 +11,193 @@ copyright = "Public Domain";
%{
%}
-\version "0.1.14";
+\version "1.0.0";
global =
- \melodic {
- \meter 4/4; % should be \meter C
- }
-
+ \melodic {
+ \time 4/4; % should be \time C
+ }
+
tenor =
- \melodic {
- \clef "violin";
- \octave c';
+ \melodic \relative c' {
+ \clef "violin";
- \stemdown
- r8 [c8 d e] [f. g32 f] [e8 a] |
- [d g] ~ [g16 a g f] [e f e d] [c d c b,] |
- [a,8 fis] g4 ~ [g8 fis16 e] [f8 d] |
- [g f! e d] c r r g ~ |
+ \stemdown
+ r8 [c8 d e] [f. g32 f] [e8 a] |
+ [d, g] ~ [g16 a g f] [e f e d] [c d c b ] |
+ [a 8 fis'] g4 ~ [g8 fis16 e] [f8 d] |
+ [g f! e d] c r r g' ~ |
%% 5
- [g f16 e] f4 ~ [f16 f e8] d4 |
- [c8 f] r16 [g f e] [f8 d] g4 ~ |
+ [g f16 e] f4 ~ [f16 f e8] d4 |
+ [c8 f] r16 [g f e] [f8 d] g4 ~ |
g4 r4 r2 |
r1 |
- r8 [g8 a b] [c'. d'32 c'] [b8 e']
+ r8 [g8 a b] [c . d 32 c ] [b8 e ]
%% 10
- [a d'] ~ [d'16 e' d' c'] b8 r8 r d |
- [e fis] [g. a32 g] [fis8 b e a] ~ |
+ [a, d ] ~ [d 16 e d c ] b8 r8 r d, |
+ [e fis] [g. a32 g] [fis8 b e, a] ~ |
[a16 b a gis] [fis8 f!] [e d] ~ [d16 e fis gis] |
[a gis a b] [gis fis gis a] b8 r8 r4 |
- r8 [c8 d e] \stemup [f. g32 f] [e8 a] |
+ r8 [c,8 d e] \stemup [f. g32 f] [e8 a] |
%% 15
- [d g] ~ [g16 a g f] e8 \stemdown [e fis g] ~ |
+ [d, g] ~ [g16 a g f] e8 \stemdown [e fis g] ~ |
[g8 fis] [gis8 a] ~ [a g! a b] |
\stemboth
- [c'. d'32 c'] [b8 e'] [a d'] ~ [d'16 e' d' c'] |
- [b8 g' cis' d'] [e' cis' d' e' ] |
- \stemdown a8 r8 r e [fis g] \stemboth [a. b32 a] |
+ [c . d 32 c ] [b8 e ] [a, d ] ~ [d 16 e d c ] |
+ [b8 g' cis, d ] [e cis d e ] |
+ \stemdown a,8 r8 r e [fis g] \stemboth [a. b32 a] |
%% 20
- [g8 c' fis b] ~ [b16 c' b a] \stemdown [g fis e d] \stemboth |
- e4 \stemdown d ~ [d16 a g f!] [e g f! a] |
- g4 ~ [g16 a bes8] c'4 [d'8 g] |
+ [g8 c fis, b] ~ [b16 c b a] \stemdown [g fis e d] \stemboth |
+ e4 \stemdown d ~ [d16 a' g f!] [e g f! a] |
+ g4 ~ [g16 a bes8] c 4 [d 8 g,] |
\stemboth g4. f8 ~ [f e] d4 |
\stemdown e8 a4 g8 ~ [g8 f g a] |
%% 25
- [bes8. c'32 b] [a8 d'] [g c'] ~ [c'16 d' c' bes] |
+ [bes8. c 32 b] [a8 d ] [g, c ] ~ [c 16 d c bes] |
[a bes a g] [f g f e] d4 ~ [d8. g16] |
- a4 r16 [f'16 d'8] e'2 |
- }
+ a4 r16 [f' 16 d 8] e 2 |
+ }
soprane =
- \melodic {
- \octave c';
- \stemup
- r1 |
- r2 r8 [g8 a b] |
- [c'. d'32 c'] [b8 e'] [a d'] ~ [d'16 e' d' c'] |
- [b g a b] [c' b c' d'] [e' d' e' fis'] [g'8 b] |
+ \melodic \relative c' {
+
+ \stemup
+ r1 |
+ r2 r8 [g'8 a b] |
+ [c . d 32 c ] [b8 e ] [a, d ] ~ [d 16 e d c ] |
+ [b g a b] [c b c d ] [e d e fis ] [g 8 b,] |
%% 5
- [c' a] [d'16 c' b a] [g8. g16] [f e f g] |
- [a g a b] c'2 b4 |
- \octave c'';
+ [c a] [d 16 c b a] [g8. g16] [f e f g] |
+ [a g a b] c 2 b4 |
r8 [c8 d e] [f. g32 f] [e8 a] |
- [d g] ~ [g16 a g f] [e8 a] ~ [a16 b a g] |
+ [d, g] ~ [g16 a g f] [e8 a] ~ [a16 b a g] |
f2 [e8. fis16] g4 ~
%% 10
- g4 fis [g16 f! e d] [c d c b,] |
- [a,16 c b, a,] g,8 r8 r16 [c16 b, a,] [gis,8 e] |
- [d c16 b,16] [a, gis, a, b,] [c fis, a, gis,] [b,8 a,16 b,]
- [c8 f e d] ~ [d c16 b,] [b,8. a,16] |
- a,4 r4 r2 |
+ g4 fis [g16 f! e d] [c d c b ] |
+ [a 16 c b a ] g 8 r8 r16 [c16 b a ] [gis 8 e'] |
+ [d c16 b 16] [a gis a b ] [c fis, a gis ] [b 8 a 16 b ]
+ [c8 f e d] ~ [d c16 b ] [b 8. a 16] |
+ a 4 r4 r2 |
%% 15
- r2 r8 [g,8 a, b,] |
- [c8. d32 c] [b,8 c] [d e] [f!. g32 f!] |
- [e8 a d g] ~ [g16 a g f] [e8 a] |
- [d8 bes] [a g16 f] [g f g e] [f g g f32 g] |
- [a16 cis d g] [e8. d16] d8 r8 r4 |
+ r2 r8 [g 8 a b ] |
+ [c8. d32 c] [b 8 c] [d e] [f!. g32 f!] |
+ [e8 a d, g] ~ [g16 a g f] [e8 a] |
+ [d,8 bes'] [a g16 f] [g f g e] [f g g f32 g] |
+ [a16 cis, d g] [e8. d16] d8 r8 r4 |
%% 20
- r2 r4 r8 g, |
- [a, b,] [c. d32 c] [b,8 e a, d] ~ |
- [e16 e d c] [b, c d e] [f g a g] [f e d c] |
- b,4 [c8 d] g, c4 b,8 |
- c4 [b,8 bes,8] a, d4 c8 |
+ r2 r4 r8 g, |
+ [a b ] [c. d32 c] [b 8 e a, d] ~ |
+ [e16 e d c] [b c d e] [f g a g] [f e d c] |
+ b 4 [c,8 d] g c4 b 8 |
+ c4 [b 8 bes 8] a d4 c8 |
%% 25
[d8 e] f4 ~ [f16 a g f] [e f e d] |
- c2 r16 [g,32 a, b,!16 c] [d e f8] ~ |
- [f32 c d e f16 g] [a8. b16] <g2 c'2> |
- }
+ c2 r16 [g 32 a b !16 c] [d e f8] ~ |
+ [f32 c d e f16 g] [a8. b16] <g2 c 2> |
+ }
alt =
- \melodic {
- \clef "bass";
- \octave c;
+ \melodic \relative c {
+ \clef "bass";
+
\stemup
r1 |
r |
r |
- r8 [g8 a b] [c'. d'32 c'] [b8 e'] |
+ r8 [g'8 a b] [c . d 32 c ] [b8 e ] |
%% 5
- [a d'] ~ [d'16 e' d' c'] [b8 c' ~ c' bes8] |
- [a d' g c'] r16 [a16 b c'] d'4 |
- g4 r8 g8 [a b] [c'. d'32 c'] |
- [b8 e' a d'] ~ [d'16 e' d' c'!] [b!8 e'] ~ |
- e'4 d'4 [c'16 b c' a] [e' d' c' b] |
+ [a, d ] ~ [d 16 e d c ] [b8 c ~ c bes8] |
+ [a d g, c ] r16 [a16 b c ] d 4 |
+ g,4 r8 g8 [a b] [c . d 32 c ] |
+ [b8 e a, d ] ~ [d 16 e d c !] [b!8 e ] ~ |
+ e 4 d 4 [c 16 b c a] [e' d c b] |
%% 10
- [c'16 a b c'] [d' c' b a] g4 r4 |
+ [c 16 a b c ] [d c b a] g4 r4 |
r1 |
- r8 [e8 fis gis] [a. b32 a] [gis8 c'] |
- [fis b] ~ [b16 c' b a] gis8 a4 gis8 |
- a4 r8 g8 [a b] c'. [d'32 c'] |
+ r8 [e8 fis gis] [a. b32 a] [gis8 c ] |
+ [fis, b] ~ [b16 c b a] gis8 a4 gis8 |
+ a4 r8 g8 [a b] c . [d 32 c ] |
%% 15
- [b8 e' a d'] ~ [d' g] d'4 |
- [c'8 a] e'4 d'8 r8 r4 |
- r8 [a8 b cis'] [d'. e'32 d'] [c'!8 f'] |
- [b8 e'] ~ [e'16 f' e' d'] cis'8 r8 r4 |
- r8 [a8 b cis'] [d'. e'32 d'] [c'!8 fis'] |
+ [b8 e a, d ] ~ [d' g,] d 4 |
+ [c 8 a] e' 4 d 8 r8 r4 |
+ r8 [a8 b cis ] [d . e 32 d ] [c !8 f ] |
+ [b,8 e ] ~ [e 16 f e d ] cis 8 r8 r4 |
+ r8 [a8 b cis ] [d . e 32 d ] [c !8 fis ] |
%% 20
- [b e'] ~ [e'16 fis' e' d'] c'2 ~ |
- [c'16 d' c' b] [a g a fis] [g8 b c' d'] |
- [e'. f'32 e'] [d'8 g'] [c' f'] ~ [f'16 g' f' e'] |
- d'4 [e'8 d'] ~ [d' g] g4 ~
- [g8 c d e] [f. g32 f] [e8 a] |
+ [b, e ] ~ [e 16 fis e d ] c 2 ~ |
+ [c 16 d c b] [a g a fis] [g8 b c d ] |
+ [e . f 32 e ] [d 8 g ] [c, f ] ~ [f 16 g f e ] |
+ d 4 [e 8 d ] ~ [d g,] g4 ~
+ [g8 c, d e] [f. g32 f] [e8 a] |
%% 25
- [d g] ~ [g16 a g f] [e d e f] [g a bes g] |
- [a e f g] [a b c' a] b2 |
- c'1 |
- }
+ [d, g] ~ [g16 a g f] [e d e f] [g a bes g] |
+ [a e f g] [a b c a] b2 |
+ c 1 |
+ }
bass =
- \melodic {
- \clef "bass";
- \octave c;
+ \melodic \relative c {
+ \clef "bass";
+
\stemdown
- r1 |
+ r1 |
r |
r |
r |
%% 5
r2 r8 [c8 d e] |
- [f. g32 f] [e8 a] [d g] ~ [g16 a g f] |
- [e f e d] [c d c b,] [a,8 d a fis] |
- [g16 a bes g] [cis8 d] a4 e4 |
- [a16 b c' d'] [c' b a g] c'8 r8 r4 |
+ [f. g32 f] [e8 a] [d, g] ~ [g16 a g f] |
+ [e f e d] [c d c b ] [a' 8 d a fis] |
+ [g16 a bes g] [cis,8 d] a'4 e4 |
+ [a16 b c d ] [c b a g] c 8 r8 r4 |
%% 10
- r2 r8 [g,8 a, b,] |
- [c. d32 c] [b,8 e] [a, d] ~ [d16 e d c] |
- b,8 e4 d8 c f!4 e8 ~ |
+ r2 r8 [g, 8 a b ] |
+ [c. d32 c] [b 8 e] [a, d] ~ [d16 e d c] |
+ b 8 e4 d8 c f!4 e8 ~ |
e d4 e8 [f! e16 d] e4 |
- a,4 r4 r2 |
+ a, 4 r4 r2 |
%% 15
- r8 [g,8 a, b,] [c. d32 c] [b,8 e] |
- [a,8 d] ~ [d16 e d c] [b,8 bes, a, g'] |
- [a,8 fis g e] d4 [e8 f!] |
- [g8. a32 g] [f8 bes] [e a] ~ [a16 bes a g] |
- [f e f d] [g8 a] d2 ~ |
+ r8 [g 8 a b ] [c. d32 c] [b 8 e] |
+ [a, 8 d] ~ [d16 e d c] [b 8 bes a g'' ] |
+ [a,, 8 fis' g e] d4 [e8 f!] |
+ [g8. a32 g] [f8 bes] [e, a] ~ [a16 bes a g] |
+ [f e f d] [g8 a] d,2 ~ |
%% 20
- [d16 e d c] [b, a, g, fis,] [e,8 e fis g] ~ |
+ [d16 e d c] [b a g fis ] [e' 8 e fis g] ~ |
[g a16 g16] [fis8 d] g2 ~ |
- g2 a4 [b8 c'] |
- [f16 a g f] [e d c b,] [c d e f] [g8 g,] |
+ g2 a4 [b8 c ] |
+ [f,16 a g f] [e d c b ] [c d e f] [g8 g, ] |
c1 ~ |
%% 25
c1 ~ |
c1 ~ |
c1 |
- }
+ }
-
+
\score {
- \melodic \type Grand_staff <
- \multi 2 <
- \global
- \soprane
- \tenor
- >
- \multi 2 <
- \global
- \alt
- \bass
- >
- >
+ \melodic \type GrandStaff <
+ \type Staff = one <
+ \global
+ \soprane
+ \tenor
+ >
+ \type Staff = two <
+ \global
+ \alt
+ \bass
+ >
+ >
- \paper{
+ \paper{
gourlay_maxmeasures =5.;
-% castingalgorithme = \Wordwrap
- }
- \midi {
- \tempo 4 = 84;
- }
+ castingalgorithme = \Wordwrap
+ }
+% \midi { \tempo 4 = 84; }
}
% EOF
diff --git a/mutopia/J.S.Bach/wtk1-fugue2.ly b/mutopia/J.S.Bach/wtk1-fugue2.ly
index aa4418b718..1cc7e167be 100644
--- a/mutopia/J.S.Bach/wtk1-fugue2.ly
+++ b/mutopia/J.S.Bach/wtk1-fugue2.ly
@@ -13,160 +13,157 @@
Tested Features: stem direction, multivoice, forced accidentals.
%}
-\version "0.1.14";
+\version "1.0.0";
\include "nederlands.ly" % for correct parsing of note names
global = \melodic {
- \meter 4/4;
- \key bes es as;
+ \time 4/4;
+ \accidentals bes es as;
\skip 1*31;
\bar "|."; |
}
-dux = \melodic {
+dux = \melodic \relative c'' {
\clef violin;
- \octave c';
\stemdown
- r8 [c'16 b] [c'8 g] [as c'16 b] [c'8 d'] |
- [g c'16 b] [c'8 d'] [f16 g] as4 [g16 f] |
- [es c' b a] [g f! es d] [c8 es' d' c'] |
- [bes a bes c'] [fis g a fis] |
-%% 5
- g4 r16 [c d es] [f g as8~] [as16 d es f] |
- [g a bes8] ~ [bes16 es f g] [as g f es] [d8 c'16 b!] |
+ r8 [c16 b] [c8 g] [as c16 b] [c8 d ] |
+ [g, c16 b] [c8 d ] [f,16 g] as4 [g16 f] |
+ [es c' b a] [g f! es d] [c8 es' d c ] |
+ [bes a bes c ] [fis, g a fis] |
+%%5
+ g4 r16 [c, d es] [f g as8~] [as16 d, es f] |
+ [g a bes8] ~ [bes16 es, f g] [as g f es] [d8 c'16 b!] |
% forced accident!
- c'4 r4 r8 [f' es' d'] |
+ c4 r4 r8 [f es d ] |
r8 [as g f] [g f16 es] [f8 d] |
- g4 r8 b [c' c'16 b] [c'8 g] |
-%% 10
+ g4 r8 b [c c16 b] [c8 g] |
+%%10
as4 r8 a [bes bes16 a] [bes8 f] |
g4 r8 g [as as g f] |
- \translator Staff = bass \stemup \octave c;
- r8 [as bes c'] r8 [as16 g] [as8 f8] |
- [bes8 c' bes as] [bes g f es] |
- [f des' c' bes] [c' as g f] |
-%% 15
+ \translator Staff = bass \stemup
+ r8 [as, bes c ] r8 [as16 g] [as8 f8] |
+ [bes8 c bes as] [bes g f es] |
+ [f des' c bes] [c as g f] |
+%%15
g8
- \translator Staff = treble \stemdown \octave c';
- [g16 fis] [g8 c] [es g16 fis!] [g8 a] |
- [d g16 fis] [g8 a!] [c16 d] es4 [d16 c] | % forced accident!
- bes,8 r8 r16 [d e fis] [g a bes8] ~ [bes16 e f g] |
- [a bes c'8] ~ [c'16 fis16 g a] [bes8 es!16 d] [es8 g,] |
- [as, f16 es] [f8 a,8] [bes, g16 f] [g8 b,] |
-%% 20
- [c16 f es d] [c Bes! As G] [F8 as g f] |
- [es d es f] [B c d B] |
+ \translator Staff = treble \stemdown
+ [g'16 fis] [g8 c,] [es g16 fis!] [g8 a] |
+ [d, g16 fis] [g8 a!] [c,16 d] es4 [d16 c] | % forced accident!
+ bes8 r8 r16 [d e fis] [g a bes8] ~ [bes16 e, f g] |
+ [a bes c8] ~ [c16 fis,16 g a] [bes8 es,!16 d] [es8 g, ] |
+ [as f'16 es] [f8 a,8] [bes g'16 f] [g8 b, ] |
+%%20
+ [c16 f es d] [c bes! as g] [f8 as' g f] |
+ [es d es f] [b, c d b] |
c4 r8 e8 [f f16 e] [f8 c] |
- d4 r8 d8 [es8 es16 d] [es8 Bes] |
+ d4 r8 d8 [es8 es16 d] [es8 bes] |
c2 ~ [c8 d16 es] [f es f d] |
-%% 25
- B8 r8 r B c r r es |
+%%25
+ b8 r8 r b c r r es |
d r r f ~ f r r f |
[es as g f] [es d es f] |
- [B c d B] [B c] r c |
- [f16 d es c] ~ [c8 B] c4 r8 e |
-%% 30
+ [b, c d b] [b c] r c |
+ [f16 d es c] ~ [c8 b] c4 r8 e |
+%%30
f4 r8 f [f es16 d] [es8 <f as]> |
- <B d> r <B d> r <G2 c> |
+ <b, d> r <b d> r <g2 c> |
}
-comes = \melodic {
- \octave c'';
+comes = \melodic \relative c'' {
\stemup
r1 |
r1 |
- r8 [g16 fis] [g8 c] [es g16 fis] [g8 a] |
- [d8 g16 fis] [g8 a] [c16 d] es4 [d16 c] |
-%% 5
- [bes,8 es16 d] [es8 g,8] [as, f16 es] [f8 a,]
- [bes,8 g16 f] [g8 b,] [c8 d16 es] f4 ~ |
- [f8 es16 d] [c16 bes,! as, g,] [f,8 as g f]
- [es d es f] [b, c d b,] |
- [c g16 fis] [g8 d] es4 r8 e8 |
-%% 10
+ r8 [g'16 fis] [g8 c,] [es g16 fis] [g8 a] |
+ [d,8 g16 fis] [g8 a] [c,16 d] es4 [d16 c] |
+%%5
+ [bes8 es16 d] [es8 g,8] [as f'16 es] [f8 a, ]
+ [bes8 g'16 f] [g8 b, ] [c8 d16 es] f4 ~ |
+ [f8 es16 d] [c16 bes ! as g ] [f8 as' g f]
+ [es d es f] [b, c d b ] |
+ [c g'16 fis] [g8 d] es4 r8 e8 |
+%%10
[f f16 e] [f8 c8] d4 r8 d |
- [es8 es16 d] [es8 bes,] [c es16 d] [es8 f] |
- \stemboth [bes, es16 d] [es8 f] [as,16 bes,] c4 [bes,16 as,] |
- [G16 Es F G] [As Bes c d] [es d c d] [es f g a] |
- [bes F G As] [Bes c d e] [f es d es] [ f g a b] |
-%% 15
- \stemup [c'8 b16 a] [g f! es d] [c8 es d c] |
- [Bes A Bes c] [Fis! G A Fis] | % forced accident
- [G8 d16 c] d8 r8 r8 [e16 d] e8 r8 |
- r [fis16 e] fis8 r r [G16 F] G8 r8 |
- r8 [A16 G] A8 r r [B16 A] B8 r |
-%% 20
- r8 [c16 b,] [c8 g,] [As c16 b,] [c8 d] |
- [G c16 B] [c8 d] [F16 G] As4 [G16 F] |
- [Es8 c16 B] [c8 G] As4 r8 A |
- [Bes8 Bes16 A] [Bes8 F8] g,4 r8 G ~ |
- [G As16 Bes] [c B c As] F2 ~ |
-%% 25
- [F8 d16 c] [d8 F] [Es es16 d] [es8 G] |
- [F f16 es] [f8 As] [G16 f es d] [c B A G] |
- [c8 f es d] r [As G F] |
- [G F16 Es] [F8 D] [As G] r A |
- [B c] [F16 Es D C] C8 [c16 B] [c8 G] |
-%% 30
- [As c16 B] [c8 <d b,! as,!]> [G8 c16 B] [c8 d] |
- [F16 G] As4 [G16 F] E2 |
+ [es8 es16 d] [es8 bes ] [c es16 d] [es8 f] |
+ \stemboth [bes, es16 d] [es8 f] [as,16 bes ] c4 [bes16 as ] |
+ [g16 es f g] [as bes c d] [es d c d] [es f g a] |
+ [bes f, g as] [bes c d e] [f es d es] [ f g a b] |
+%%15
+ \stemup [c8 b16 a] [g f! es d] [c8 es d c] |
+ [bes a bes c] [fis,! g a fis] | % forced accident
+ [g8 d'16 c] d8 r8 r8 [e16 d] e8 r8 |
+ r [fis16 e] fis8 r r [g,16 f] g8 r8 |
+ r8 [a16 g] a8 r r [b16 a] b8 r |
+%%20
+ r8 [c16 b ] [c8 g ] [as c16 b ] [c8 d] |
+ [g, c16 b] [c8 d] [f,16 g] as4 [g16 f] |
+ [es8 c'16 b] [c8 g] as4 r8 a |
+ [bes8 bes16 a] [bes8 f8] g4 r8 g ~ |
+ [g as16 bes] [c b c as] f2 ~ |
+%%25
+ [f8 d'16 c] [d8 f,] [es es'16 d] [es8 g,] |
+ [f f'16 es] [f8 as,] [g16 f' es d] [c b a g] |
+ [c8 f es d] r [as g f] |
+ [g f16 es] [f8 d] [as' g] r a |
+ [b c] [f,16 es d c] c8 [c'16 b] [c8 g] |
+%%30
+ [as c16 b] [c8 <d b ! as !]> [g,8 c16 b] [c8 d] |
+ [f,16 g] as4 [g16 f] e2 |
}
-bassdux = \melodic {
+bassdux = \melodic \relative c' {
\clef bass;
- \octave c';
r1 |
r |
r |
r |
-%% 5
+%%5
r |
r1 |
- r8 [c16 B] [c8 G] [As c16 B] [c8 d] |
- [G c16 B] [c8 d] [F16 G] As4 [G16 F] |
- \octave c; [es c' b a] [g f es d] [c d es d] [c Bes! As! G] |
+ r8 [c16 b] [c8 g] [as c16 b] [c8 d] |
+ [g, c16 b] [c8 d] [f,16 g] as4 [g16 f] |
+ [es c' b a] [g f es d] [c d es d] [c bes! as! g] |
% -> \classic_accidentals
-%% 10
- [F bes as g] [f es d c] [Bes c d c] [Bes As G F] |
- [Es as g f] [es des c Bes] [As8 c' bes as] |
- [g8 f g as] [d es f d] |
+%%10
+ [f bes' as g] [f es d c] [bes c d c] [bes as g f] |
+ [es as' g f] [es des c bes] [as8 c' bes as] |
+ [g8 f g as] [d, es f d] |
[es as g f] [g es d c] |
- [d bes as g] [as f es d!] |
-%% 15
- es8 r8 r4 r8 [c Bes A] |
- r [es d c] [d c16 Bes] [c8 d] |
- [G8 bes16 a] [bes8 d] [es c'16 bes] [c'8 e] |
- [f d'16 c'] [d'8 fis] g4 r16 [G A B] |
- [c16 d es8~] [es16 A Bes c] [d es f8~] [f16 b, c d] |
-%% 20
- es8 r r e [f F Es! D] | % -> \classic_accidentals
- r [As G F] [G F16 Es] [F8 G] |
- [c16 d es d] [c Bes As G] [F bes as g] [f es d c] |
- [Bes c d c] [Bes As G F] [Es as g f] [es d c Bes] |
- [As Bes c Bes] [As G F Es] [D g f es] [d c B A] |
-%% 25
- G4 r4 r16 [G A B] [c d es f] |
- [g f as g] [f es d c] [B8 c16 B] [c8 G] |
- [As c16 B] [c8 d] [G c16 B] [c8 d] |
- [F16 G] As4 [G16 F] Es4 r8 es |
- [d c g G]
-%% 30
- \multi 2 <
+ [d bes' as g] [as f es d!] |
+%%15
+ es8 r8 r4 r8 [c bes a] |
+ r [es' d c] [d c16 bes] [c8 d] |
+ [g,8 bes'16 a] [bes8 d,] [es c'16 bes] [c8 e,] |
+ [f d'16 c ] [d8 fis,] g4 r16 [g, a b] |
+ [c16 d es8~] [es16 a, bes c] [d es f8~] [f16 b, c d] |
+%%20
+ es8 r r e [f f, es! d] | % -> \classic_accidentals
+ r [as' g f] [g f16 es] [f8 g] |
+ [c16 d es d] [c bes as g] [f bes' as g] [f es d c] |
+ [bes c d c] [bes as g f] [es as' g f] [es d c bes] |
+ [as bes c bes] [as g f es] [d g' f es] [d c b a] |
+%%25
+ g4 r4 r16 [g a b] [c d es f] |
+ [g f as g] [f es d c] [b8 c16 b] [c8 g] |
+ [as c16 b] [c8 d] [g, c16 b] [c8 d] |
+ [f16 g] as4 [g16 f] es4 r8 es |
+ [d c g g]
+%%30
+ \type Staff <
{ \stemup c2 ~ | c1 ~ | c1 }
- { \stemdown C2 ~ | C1 ~ | C1 }
+ { \stemdown c,2 ~ | c1 ~ | c1 }
>
}
\score {
- \type Grand_staff <
+ \type GrandStaff <
\type Staff = treble <
\global
\dux
@@ -179,11 +176,13 @@ bassdux = \melodic {
>
\paper {
- gourlay_maxmeasures = 5.;
+ gourlay_maxmeasures =5.;
+% castingalgorithm = \Wordwrap;
+
}
\midi {
- \tempo 4 = 84;
+ \tempo 4 =84;
}
}
diff --git a/mutopia/J.S.Bach/wtk1-prelude1.ly b/mutopia/J.S.Bach/wtk1-prelude1.ly
index 368602e9f7..2cb87d2913 100644
--- a/mutopia/J.S.Bach/wtk1-prelude1.ly
+++ b/mutopia/J.S.Bach/wtk1-prelude1.ly
@@ -8,22 +8,21 @@ enteredby = "Shay Rojansky";
copyright = "Public Domain";
}
-\version "0.1.14";
+\version "1.0.0";
global =
\melodic {
- \meter 4/4; % should be \meter C
+ \time 4/4; % should be \time C
}
% should do programmable input.
soprane =
- \melodic {
+ \melodic \transpose c'' {
\clef "violin";
- \octave c';
- \multi 2 <
+ \type Staff <
% Real soprane
{\stemup
r8 [g16 c'] [e' g c' e'] r8 [g16 c'] [e' g c' e'] |
@@ -81,7 +80,7 @@ soprane =
bass =
\melodic {
\clef "bass";
- \octave c;
+
\stemdown
c'2 c' |
@@ -94,7 +93,7 @@ bass =
b b |
a a |
%% 10
- \multi 2 <
+ \type Staff <
% Alt
{\stemup
r16 a8. ~ a4 r16 a8. ~ a4 |
@@ -162,7 +161,7 @@ bass =
\score {
- \melodic \type Grand_staff <
+ \melodic \type GrandStaff <
<
\global
\soprane
diff --git a/mutopia/J.S.Bach/wtk1-prelude2.ly.m4 b/mutopia/J.S.Bach/wtk1-prelude2.ly.m4
index 98f6c8a309..8d8eb6f5d0 100644
--- a/mutopia/J.S.Bach/wtk1-prelude2.ly.m4
+++ b/mutopia/J.S.Bach/wtk1-prelude2.ly.m4
@@ -12,8 +12,7 @@ define(handymeasure, `intromeasure(translit($*,` ', `,'))')
-trebleIntro=\melodic {
-\octave c';
+trebleIntro=\melodic \transpose c'' {
handymeasure(c' es d c)
handymeasure(as f e c)
handymeasure(b f es d)
@@ -40,7 +39,6 @@ handymeasure(as c B d)
}
bassIntro = \melodic {
-\octave c;
handymeasure(c g f es)
handymeasure(c as g f)
handymeasure(c as g f)
@@ -71,7 +69,6 @@ handymeasure(G es d f)
middlepiece = \melodic
{
- \octave c;
\stemdown
[G B d]
\stemup f [as f ef] [b f d' b'] [as f e f] |
@@ -79,10 +76,9 @@ middlepiece = \melodic
\stemup g [c' g fis g ] [es' c' g' es'] [c' as g as]|
\stemdown [G A fis]
\translator Staff=treble
- \stemsboth \octave c';
- c [es c B c] [fis c a fis] [es c B c] |
+ \stemsboth \transpose c'' { c [es c B c] [fis c a fis] [es c B c] }
}
-}
+
diff --git a/mutopia/Makefile b/mutopia/Makefile
index 7728ec9abb..f788a82724 100644
--- a/mutopia/Makefile
+++ b/mutopia/Makefile
@@ -1,21 +1,16 @@
# mutopia/Makefile
-# subdir level:
-#
depth = ..
-#
-# descent order into subdirectories:
-#
SUBDIRS = J.S.Bach Coriolan W.A.Mozart
-EXTRA_DISTFILES += TODO
+
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
+
+EXTRA_DIST_FILES += TODO
examples=standchen gallina
-#
-# generic stuff/Makefile
-#
-include $(depth)/make/Mutopia.make
-include $(depth)/make/WWW.make
+include $(stepdir)/WWW.make
diff --git a/mutopia/TODO b/mutopia/TODO
index 7239bc104c..5b6b806a81 100644
--- a/mutopia/TODO
+++ b/mutopia/TODO
@@ -1,3 +1,4 @@
- more composers > 70y +
- (more) free composers
- - beethoven's coriolan
+ - Beethoven's Coriolan: brass and woodwind
+ - more Cello Suites
diff --git a/mutopia/W.A.Mozart/Makefile b/mutopia/W.A.Mozart/Makefile
index 3eafd9f141..92a284a431 100644
--- a/mutopia/W.A.Mozart/Makefile
+++ b/mutopia/W.A.Mozart/Makefile
@@ -1,21 +1,10 @@
+# mutopia/W.A.Mozart
-# subdir level:
-#
depth = ../..
-#
-EXTRA_DISTFILES=
-
-# descent order into subdirectories:
-#
-SUBDIRS =
-#
-
-# generic stuff/Makefile
-#
-include ./$(depth)/make/Mutopia.make
-#
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
examples=cadenza
-include $(depth)/make/WWW.make
+include $(stepdir)/WWW.make
diff --git a/mutopia/W.A.Mozart/cadenza.ly b/mutopia/W.A.Mozart/cadenza.ly
index 8fcf3f08d7..431214056a 100644
--- a/mutopia/W.A.Mozart/cadenza.ly
+++ b/mutopia/W.A.Mozart/cadenza.ly
@@ -13,7 +13,7 @@ Tested Features: cadenza mode
Ugh.. Wish we had grace notes.... It adds another dimension to this
piece of music. %}
-\version "0.1.14";
+\version "1.0.0";
cad = \melodic \relative c' {
diff --git a/mutopia/W.A.Mozart/horn-concerto-3.ly b/mutopia/W.A.Mozart/horn-concerto-3.ly
index 18998066bc..a4a6998269 100644
--- a/mutopia/W.A.Mozart/horn-concerto-3.ly
+++ b/mutopia/W.A.Mozart/horn-concerto-3.ly
@@ -1,12 +1,28 @@
+\header{
+title = "Konzert Nr. 3 Es dur"
+subtitle = "f\\\"ur Horn und Orchester";
+description = "Third horn concerto, for horn in Es";
+composer = "W. A. Mozart (1756-1792)";
+enteredby = "HWN";
+opus = "K.V. 447";
+copyright = "public domain";
+}
-\version "0.1.14";
+\version "1.0.0";
allegro =
\melodic
\relative c'
{
-
+ \time 4/4;
+ \partial 4;
+ R1*4
+ c'2^"tutti" g
+ c, r
+ R1*1
+ r8 [g' g g] [g g e c]
+ g4 g, r2
R1*18
r2 r4 g'4 |
e'4. () c8 [f (d c )b ]
@@ -61,7 +77,7 @@ allegro =
d
c
c,
- e''
+ e'
e,
c'2 [b8( a gis )a]
[gis8 e gis b ] e4 r |
@@ -133,8 +149,8 @@ allegro =
romanze = \melodic \relative c' {
- \key bes;
- \meter 2/2;
+ \key F;
+ \time 2/2;
c'4.() f8 a,4 a
[bes8( c d bes] )g4 r8 g
a r bes r c r [d()bes]
@@ -157,7 +173,7 @@ romanze = \melodic \relative c' {
% mark B
c1\f
R1*9
- f''4.(\p )d8 b4 r8 g
+ f'4.(\p )d8 b4 r8 g
g'4.() e8 c4 r8 cis |
d4(~ [d16 e d )e] [f8 () d f() d]
c2()b4 r
@@ -220,7 +236,7 @@ rondo = \melodic \relative c'
{
\partial 8;
g'8 |
- \meter 6/8;
+ \time 6/8;
\grouping 8*3 8*3;
\rondotheme
@@ -342,11 +358,14 @@ rondo = \melodic \relative c'
c4 r8 c4 r8
c4 r8 r4 r8
}
+
+default_paper = \include "part-paper.ly"
+
\score
{
- { \property Score.SkipBars = 1
- \allegro
- }
+ \allegro
+ \paper{ }
+ \midi{ \tempo 4=90; }
}
\score
@@ -354,14 +373,15 @@ rondo = \melodic \relative c'
{ \property Score.SkipBars = 1
\romanze
}
+ \paper{ \tempo 4 = 70; }
+ \midi{}
}
\score
{
- { \property Score.SkipBars = 1
- \rondo
- }
+ \rondo
+
\paper{
-% castingalgorithm =\Wordwrap;
+ \tempo 4 = 100;
}
\midi{}
}
diff --git a/mutopia/W.A.Mozart/out/dummy.dep b/mutopia/W.A.Mozart/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/mutopia/W.A.Mozart/out/dummy.dep
+++ /dev/null
diff --git a/mutopia/gallina.ly b/mutopia/gallina.ly
index 916a86c6be..5d97250b00 100644
--- a/mutopia/gallina.ly
+++ b/mutopia/gallina.ly
@@ -1,11 +1,13 @@
\header{
-title = "La Gallina a 2 violini";
+title = "La Gallina à 2 violini";
date = "1637";
source = "the manuscript of Canzoni overo Sonate Concertate "
"libro terzo, opera duodecima ";
composer = "Tarquinio Merula (1594/95-1665)";
enteredby = "Mats Bengtsson";
copyright = "Public Domain ";
+subtitle = "from Canzoni overo Sonate Concertate libro terzo, "
+ "opera duodecima 1637";
}
@@ -43,149 +45,147 @@ Voice engraver by uncommenting the lines in the paper
definition below. --MB
%}
-\version "0.1.15";
+\version "1.0.0";
-vi1=\melodic{
- \meter 4/4;
- \octave c'';
+vi1=\melodic \relative c'' {
+ \time 4/4;
- [d8 d d d] d4 [A16 B c A] |
- [B8 G ][ G G16 A][ B8 G ][ G G16 A] |
- [B8 G ][ G A16 B] c4 B |
- [A8 D] G2 Fis4 |
- G2 r2 |
+ [d8 d d d] d4 [a16 b c a] |
+ [b8 g ][ g g16 a][ b8 g ][ g g16 a] |
+ [b8 g ][ g a16 b] c4 b |
+ [a8 d,] g2 fis4 |
+ g2 r2 |
r1 |
- [d8 d d d] d4 [A16 B c A] |
- [B8 G ][ G G16 A][ B8 G ][ G G16 A] |
- [B8 G ][ G A16 B][ c8 e d c] |
- [B G] c2 B4 |
+ [d'8 d d d] d4 [a16 b c a] |
+ [b8 g ][ g g16 a][ b8 g ][ g g16 a] |
+ [b8 g ][ g a16 b][ c8 e d c] |
+ [b g] c2 b4 |
c2 r |
r1 |
- [g8 g g g] g4 [d16 e f d] |
+ [g'8 g g g] g4 [d16 e f d] |
[e8 c ][ c c16 d][ e8 c ][ c c16 d] |
[e8 c ][ c d16 e] f4 e |
- [d8 G] c2 B4 |
- [c8 G ][ G G16 A] B4 G |
- r8 G [G G16 A] B4 G |
- r8 [E16 Fis ][ G8 G] [ Fis! G G Fis!] |
- G2 r |
+ [d8 g,] c2 b4 |
+ [c8 g ][ g g16 a] b4 g |
+ r8 g [g g16 a] b4 g |
+ r8 [e16 fis ][ g8 g] [ fis! g g fis!] |
+ g2 r |
r1 |
- r16 [d c B ][ A G Fis E] [D8 d ][ d d16 c] |
- [B8 d ][ d d16 c][ B8 d ][ d d16 e] |
+ r16 [d' c b ][ a g fis e] [d8 d' ][ d d16 c] |
+ [b8 d ][ d d16 c][ b8 d ][ d d16 e] |
fis4 g2 fis!4 |
- r16 [g f e ][ d c B A][ G8 g ][ g g16 f] |
+ r16 [g f e ][ d c b a][ g8 g' ][ g g16 f] |
[e8 g ][ g g16 f][ e8 g ][ g g16 a] |
- b4 c'2 b4 |
- [c'8 g ][ g g16 f] e4 d |
+ b4 c2 b4 |
+ [c8 g ][ g g16 f] e4 d |
r8 g [g g16 f] e4 d |
- r8 [d16 A ][ B8 B16 c] A2 |
- B1 |
- \meter 3/2;
+ r8 [d16 a ][ b8 b16 c] a2 |
+ b1 |
+ \time 3/2;
\tempo 2=140;
r4 d d d d d |
e1. |
r4 c c c c c |
d1. |
- r4 [d8 c] B4 [c8 d] G4 [A8 B] |
- E1. |
- r4 [e8 d] cis4 [d8 e] A4[ B8 cis!] |
- Fis1. |
- r4 d d d d d |
- e [e8 d] c4 [d8 e] A4 [B8 c] |
- Fis4 [fis8 e] d4 [e8 fis!] B4 [c8 d] |
- G4 g g g g g |
- a4 [c'8 b] a4 [b8 c'] f4 [g8 a] |
- d4 g g g g g |
- a [d8 c] B4 [c8 d] A2 |
- \meter 4/4;
+ r4 [d8 c] b4 [c8 d] g,4 [a8 b] |
+ e,1. |
+ r4 [e'8 d] cis4 [d8 e] a,4[ b8 cis!] |
+ fis,1. |
+ r4 d' d d d d |
+ e [e8 d] c4 [d8 e] a,4 [b8 c] |
+ fis,4 [fis'8 e] d4 [e8 fis!] b,4 [c8 d] |
+ g,4 g' g g g g |
+ a4 [c8 b] a4 [b8 c] f,4 [g8 a] |
+ d,4 g g g g g |
+ a [d,8 c] b4 [c8 d] a2 |
+ \time 4/4;
\tempo 4=80;
- B1 |
- [d8 d d d] d4 [A16 B ][ c A] |
- [B8 G ][ G G16 A] [B8 G ][ G G16 A] |
- [B8 G] c2 B4 |
+ b1 |
+ [d8 d d d] d4 [a16 b c a] |
+ [b8 g ][ g g16 a] [b8 g ][ g g16 a] |
+ [b8 g] c2 b4 |
c2 r |
- [g8 g g g] g4 [d16 e f d] |
- [e8 G ][ G G16 A] [B8 d ][ d d16 e] |
+ [g'8 g g g] g4 [d16 e f d] |
+ [e8 g, ][ g g16 a] [b8 d ][ d d16 e] |
fis4 g2 fis!4 |
- r16 [g f e ][ d c B A] [G8 g ][ g g16 f] |
+ r16 [g f e ][ d c b a] [g8 g' ][ g g16 f] |
e2 r8 d [d d16 e] |
- [fis a g fis ][ e d c B] [A8 d ][ d d16 e] |
+ [fis a g fis ][ e d c b] [a8 d ][ d d16 e] |
fis4 g2 fis!4 |
\cadenza 1;
g\breve
\bar "|.";
}
-vi2=\melodic{
- \meter 4/4;
- \octave c'';
+vi2=\melodic \relative c'' {
+ \time 4/4;
r1 | r | r |
- [d8 d d d] d4 [A16 B c A] |
- [B8 G ][ G G16 A] [B8 G ][ G G16 A] |
- [B8 G ][ G A16 B] c4 B |
- [A8 D] G2 Fis4 |
- G2 r2 |
+ [d8 d d d] d4 [a16 b c a] |
+ [b8 g ][ g g16 a] [b8 g ][ g g16 a] |
+ [b8 g ][ g a16 b] c4 b |
+ [a8 d,] g2 fis4 |
+ g2 r2 |
r1 |
- [g8 g g g] g4 [d16 e f d] |
+ [g'8 g g g] g4 [d16 e f d] |
[e8 c ][ c c16 d] [e8 c ][ c c16 d] |
[e8 c ][ c d16 e] f4 e |
- [d8 G] c2 B4 |
+ [d8 g,] c2 b4 |
c2 r |
r1 |
- [g8 g g g] g4 [d16 e f d] |
- e2 r8 G [G G16 A] |
- B4 G r8 G [G A16 B] |
- c4 B A2 |
- G r16 [d c B ][ A G Fis E] |
- [D8 d ][ d d16 c] [B8 d ][ d d16 e] |
+ [g'8 g g g] g4 [d16 e f d] |
+ e2 r8 g, [g g16 a] |
+ b4 g r8 g [g a16 b] |
+ c4 b a2 |
+ g r16 [d' c b ][ a g fis e] |
+ [d8 d' ][ d d16 c] [b8 d ][ d d16 e] |
fis4 g g4. fis!8 |
g2 r |
- r16 [d c B ][ A G Fis E] [D8 d ][ d d16 c] |
- B4 c2 B4 |
- c d G2 |
- r16 [g f e ][ d c B A] [G8 g ][ g g16 f] |
+ r16 [d c b ][ a g fis e] [d8 d' ][ d d16 c] |
+ b4 c2 b4 |
+ c d g,2 |
+ r16 [g' f e ][ d c b a] [g8 g' ][ g g16 f] |
e4 d r8 g [g g16 f] |
- e4 d r8 [c16 G ][ B8 B16 c] |
- A4 G2 Fis4 |
- G1 |
- \meter 3/2;
+ e4 d r8 [c16 g ][ b8 b16 c] |
+ a4 g2 fis4 |
+ g1 |
+ \time 3/2;
r1. |
- r4 [g8 f] e4 [f8 g] c4 [d8 e] |
- A1. |
- r4 [a8 g] fis4 [g8 a] d4 [e8 fis!] |
- B1. |
- r4 g g g g g |
+ r4 [g'8 f] e4 [f8 g] c,4 [d8 e] |
+ a,1. |
+ r4 [a'8 g] fis4 [g8 a] d,4 [e8 fis!] |
+ b,1. |
+ r4 g' g g g g |
a1. |
r4 a a a a a |
- b [d8 c] B4 [c8 d] G4 [A8 B] |
- E4 [g8 f] e4 [f8 g] c4 [d8 e] |
- A4 [a8 g] fis4 [g8 a] d4 [e8 fis!] |
- B4 [b8 a] g4 [a8 b] e4 [fis8 g] |
- c4 A A A A A |
- B [d8 c] B4 [c8 d] D4 E |
- Fis2 G Fis! |
- \meter 4/4;
- G1 |
+ b [d,8 c] b4 [c8 d] g,4 [a8 b] |
+ e,4 [g'8 f] e4 [f8 g] c,4 [d8 e] |
+ a,4 [a'8 g] fis4 [g8 a] d,4 [e8 fis!] |
+ b,4 [b'8 a] g4 [a8 b] e,4 [fis8 g] |
+ c,4 a a a a a |
+ b [d8 c] b4 [c8 d] d,4 e |
+ fis2 g fis! |
+ \time 4/4;
+ g1 |
r1 | r1 |
- [g8 g g g] g4 [d16 e f d] |
- [e8 c ][ c c16 d] [e8 G ][ G G16 A] |
- [B8 G] c2 B4 |
+ [g'8 g g g] g4 [d16 e f d] |
+ [e8 c ][ c c16 d] [e8 g, ][ g g16 a] |
+ [b8 g] c2 b4 |
c2 r |
- r16 [d c B ][ A G Fis E] [D8 d ][ d d16 c] |
- B4 c2 B4 |
- [c8 G ][ G G16 A] [B d c B ][ A G Fis E] |
- [D8 d ][ d d16 e] [fis16 a g fis ][ e d c B] |
- [A d c B ][ A G Fis E] D4 d |
+ r16 [d c b ][ a g fis e] [d8 d' ][ d d16 c] |
+ b4 c2 b4 |
+ [c8 g ][ g g16 a] [b d c b ][ a g fis e] |
+ [d8 d' ][ d d16 e] [fis16 a g fis ][ e d c b] |
+ [a d c b ][ a g fis e] d4 d' |
\cadenza 1;
- B\breve
+ b\breve
\bar "|.";
}
-bc=\melodic{
+
+bc=\melodic\transpose c'{
\clef "bass";
- \meter 4/4;
- \octave c;
+ \time 4/4;
G2 d^"4 3" | G1 |
g2 c4 G | d1^"3 4 3" |
@@ -203,7 +203,7 @@ bc=\melodic{
G1^"3 4 3" | c4 B c g |
c B c G | d1^"3 4 3" |
G1 |
- \meter 3/2;
+ \time 3/2;
g1. | c |
f | d^"\\textsharp" |
g | c |
@@ -212,7 +212,7 @@ bc=\melodic{
d^"\\textsharp" | e |
f | g1 B2 |
d1.^"3 4 3" |
- \meter 4/4;
+ \time 4/4;
G1 |
g2 fis | g G |
g1^"3 4 3" | c |
@@ -226,7 +226,7 @@ bc=\melodic{
}
\score{
- \type Staff_group <
+ \type StaffGroup <
\vi1
\vi2
\bc
diff --git a/mutopia/los-toros-oboe.ly b/mutopia/los-toros-oboe.ly
index e89abf35e7..48fed8cf12 100644
--- a/mutopia/los-toros-oboe.ly
+++ b/mutopia/los-toros-oboe.ly
@@ -8,7 +8,7 @@ enteredby = "jcn";
copyright = "public domain";
latexheaders= "headers";
}
-\version "0.1.15";
+\version "1.0.0";
%{
Silly latex file dropped; use ly2dvi
@@ -30,16 +30,16 @@ Converted to relative octave from los-toros-oboe.ly:
hoboonestart = \melodic
\relative c'{
% ugh: cant copy: allegro/primo tempo
- \textstyle "large";
+ \property Voice . textstyle = "large"
[es''16-.^"Allegro" es-. es-. es-.] [es8-. d-.] |
- \textstyle "italic";
+ \property Voice . textstyle = "italic"
}
hobooneintro = \melodic \relative c'{
-% \textstyle "roman";
+% \property Voice . textstyle = "roman"
% [es''16-.-"Allegro" es-. es-. es-.] [es8-. d-.] |
-% \textstyle "italic";
+% \property Voice . textstyle = "italic"
[f''8.-> es16(] [)d8 c-.] |
[bes16( c d es] [)d8 c-.] |
[bes-. as->~] [as16( g f g] |
@@ -107,18 +107,18 @@ hoboonemid = \melodic \relative c'{
[d16-. d-. d-. d-.] [d8.-. es16->] |
[d16 d d d] [d8 es16-.] r16-\fermata^"court"^"tr\\`es" |
% Un peu plus lent.
- \textstyle "bold";
+ \property Voice . textstyle = "bold"
% ugh
-% d4(\<^"Un peu plus lent" \textstyle "italic; _"tr\\`es \\'el\\'egant"
+% d4(\<^"Un peu plus lent" \property Voice . textstyle = "italic _"tr\\`es \\'el\\'egant"
% d4(\^"Un peu plus lent et \\'el\\'egant"<
- \textstyle "italic";
+ \property Voice . textstyle = "italic"
d4(\<
[e8 \!fis8] |
% [)b-. a-.] [g16( fis e )d] |
- \textstyle "bold";
- [)b-.^"Un peu plus lent et \\'el\\'egant" a-.] [''g16( fis' e )d] |
- \textstyle "italic";
+ \property Voice . textstyle = "bold"
+ [)b-.^"Un peu plus lent et \\'el\\'egant" a-.] [g,,16( fis' e )d] |
+ \property Voice . textstyle = "italic"
[d( c b\< c] [)\!fis'8-. e-.] |
d,,4-> ~ [d16 e( fis g] |
[a b\< d fis] [)\!a8-. g-.] |
@@ -154,9 +154,9 @@ hoboonemid = \melodic \relative c'{
hoboonesecondstart = \melodic \relative c'{
% ugh: cant copy: allegro/primo tempo
- \textstyle "large";
+ \property Voice . textstyle = "large"
[es''16-.\ff^"Tempo 1$^o$" es-. es-. es-.] [es8-. d-.] |
- \textstyle "italic";
+ \property Voice . textstyle = "italic"
}
@@ -195,7 +195,7 @@ hoboonelast = \melodic \relative c'{
[bes'16-.\ff bes-. bes-. bes-.] [bes8-. ces16->] r16^"court"-\fermata |
% ugh: eight measures rest (ugh: r1 -> four beats...)
% eiht measures rest..
- \textstyle "bold";
+ \property Voice . textstyle = "bold"
% r2^"Un peu plus lent et \\'el\\'egant"
R2*8
% r4 r8\p bes |
@@ -203,14 +203,14 @@ hoboonelast = \melodic \relative c'{
r8\p bes,, |
% g2->^"Un peu plus lent et \\'el\\'egant" ~ |
g2-> ~ |
- \textstyle "italic";
+ \property Voice . textstyle = "italic"
g8 r r c |
c2-> ~ |
c8 r r bes'\f |
[bes8.->\f g16-.] [es16-. bes-. g-. as-.] |
[bes-.-"dim." c-. d-. f-.] [es8-. c-.] |
d2-> ~ |
- [d16-"dim."( es f g] [)'as8 as-.] |
+ [d16-"dim."( es f g] [)as,8 as-.] |
[ces8.->\p( )bes16-.] bes4 ~ |
[bes16( c! d f] [)es8 g,-.] |
[g8.->( )as16] as4 ~ |
@@ -233,9 +233,9 @@ hoboonelast = \melodic \relative c'{
g8-. r f4-> ~ |
[f8 es-. ces8.-. as16-.] |
% `a deux
- \textstyle "large";
+ \property Voice . textstyle = "large"
[ces8.->^"Plus vite" bes16-.(] [a bes es d] |
- \textstyle "italic";
+ \property Voice . textstyle = "italic"
[)c!8.-> bes16] [a( bes es )d] |
[c->( bes es )d] [c->( bes es )d] |
% same measure
@@ -244,9 +244,9 @@ hoboonelast = \melodic \relative c'{
[g )f d( es] [f g as a] |
[c )bes bes,( c] [d es f g] |
[as g f g] [as bes c d] |
- \textstyle "large";
+ \property Voice . textstyle = "large"
[)es-.^"Tempo 1$^o$" g,-. g-. g-.] [g8-. g-.] |
- \textstyle "italic";
+ \property Voice . textstyle = "italic"
bes4.-> g8-. |
gis2->( |
)as! |
@@ -261,9 +261,9 @@ hoboonelast = \melodic \relative c'{
g4.-> g8-. |
es4.-> es8-. |
bes4.-> bes8-. |
- \textstyle "large";
+ \property Voice . textstyle = "large"
g'4.->^"Presto" g8-. |
- \textstyle "italic";
+ \property Voice . textstyle = "italic"
es4.-> es8-. |
[bes-. bes-. es-. g-.] |
[bes-. bes,-. es-. g-.] |
@@ -282,13 +282,13 @@ hoboone = \melodic {
}
global = \melodic{
- \key bes es as;
- \meter 2/4;
+ \key es;
+ \time 2/4;
\skip 4*110;
- \key fis; |
+ \key g; |
\bar "||";
\skip 4*58;
- \key bes es as; |
+ \key es; |
\bar "||";
\skip 4*220;
\bar "|.";
diff --git a/mutopia/out/dummy.dep b/mutopia/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/mutopia/out/dummy.dep
+++ /dev/null
diff --git a/mutopia/standchen-16.ly b/mutopia/standchen-16.ly
index 8e03c6e663..9454dfede0 100644
--- a/mutopia/standchen-16.ly
+++ b/mutopia/standchen-16.ly
@@ -9,6 +9,6 @@ description = "A schubert song in 16 pt";
copyright = "public domain";
}
-\version "0.1.15";
+\version "1.0.0";
\include "standchen.ly"
diff --git a/mutopia/standchen-20.ly b/mutopia/standchen-20.ly
index 1eb5190776..ea129b36c3 100644
--- a/mutopia/standchen-20.ly
+++ b/mutopia/standchen-20.ly
@@ -9,7 +9,7 @@ copyright = "public domain";
description = "A schubert song in 20 pt";
}
-\version "0.1.15";
+\version "1.0.0";
% fool make-website
% \include "standchen.ly";
diff --git a/mutopia/standchen.ly b/mutopia/standchen.ly
index 2400bf28d6..64f5e71d68 100644
--- a/mutopia/standchen.ly
+++ b/mutopia/standchen.ly
@@ -1,7 +1,7 @@
\header{
filename = "standchen.ly";
title = "St\"andchen";
-subtitle = "(Serenade)\\\``Leise flehen meine Lieder''";
+subtitle = "(Serenade)\\\``Leise flehen meine Lieder";
opus = "D. 957 No. 4";
composer = "Franz Schubert (1797-1828)"
"Text by Ludwig Rellstab (1799-1860)";
@@ -10,68 +10,65 @@ copyright = "public domain";
}
%{
- Tested Features@ multivoice, accents, lyrics, chords, piano music,
+ Tested Features@ multivoice accents lyrics chords piano music
multiple \paper{}s in one \score
%}
-\version "0.1.15";
+\version "1.0.0";
-$vocal_verse1 = \melodic{
- \octave c';
-
+$vocal_verse1 = \melodic\relative c{
% ugh: treble/bass
% \clef treble;
% \clef violin;
- [/3 g8( )as] g \] c'4. g8 |
- [/3 f8( )g] f \] c'4 f8 r |
+ [/3 g''8( )as] g \] c4. g8 |
+ [/3 f8( )g] f \] c'4 f,8 r |
g4.-> f8 [/3 f( )es] d \] |
es2 r4 |
% ugh: a whole should be a measure
%r1 |
- r2. |
- r2. |
- [/3 g8( )as] g \] es'4. g8 |
- [/3 f8( )g] f \] d'4. c'8 |
+ R2. |
+ R2. |
+ [/3 g8( )as] g \] es'4. g,8 |
+ [/3 f8( )g] f \] d'4. c8 |
bes4. as8 [/3 as( )g] f \] |
g2 r4 |
- r2. |
- r2. |
- g8. b16 es'4. d'8 |
- c'8. g16 es4. c8 |
+ R2. |
+ R2. |
+ g8. b16 es4. d8 |
+ c8. g16 es4. c8 |
% [/3 as\grace( bes ] )
- [/3 as8( )g] as \] c'4. as8 |
+ [/3 as'8( )g] as \] c4. as8 |
g2. |
%[/3 f\grace( g] )
[/3 f8( )e] f \] as4. f8 |
es!2. |
- g8. b16 es'4. d'8 |
- c'8. g16 e4. c8 |
+ g8. b16 es4. d8 |
+ c8. g16 e4. c8 |
% [/3 a\grace( b] )
- [/3 a!8( ) gis] a \] c'4. a8 |
+ [/3 a'!8( ) gis] a \] c4. a8 |
g!2. |
% [/3 a\grace( b] )
- [/3 d'8\f cis'] d' \] f'4. b8 |
- c'!2. |
+ [/3 d'8\f cis] d \] f4. b,8 |
+ c!2. |
}
-$vocal_through = \melodic{
- \octave c';
- g8. g16 b8. b16 d'8. d16 |
+$vocal_through = \melodic\relative c{
+ g''8. g16 b8. b16 d8. d,16 |
c'4 b r |
- g4. b8 d'8. c'16 |
+ g4. b8 d8. c16 |
b2 r4 |
- e'4. d'8 [/3 d'( )c'] b \] |
- a8. b16 c'4-> a8 r |
- r2. |
- r2. |
+ e4. d8 [/3 d( )c] b \] |
+ a8. b16 c4-> a8 r |
+ R2. |
+ R2. |
% 4 bars copied from end verse 1
% [/3 a\grace( b] )
- [/3 a!8( ) gis] a \] c'4. a8 |
+ [/3 a!8( ) gis] a \] c4. a8 |
g!2. |
% [/3 a\grace( b] )
- [/3 d'8\f cis'] d' \] f'4. b8 |
- c'!2. ~ |
- c'4 r c' |
+ [/3 d'8\f cis] d \] f4. b,8 |
+ c!2. ~ |
+ c4 r c |
as2. |
g |
es2 r4 |
@@ -87,8 +84,8 @@ $lyric_verse1 = \lyric{
_ _ _ |
% 11
\[/3 In4 den8 \] stil-4. len8 |
- \[/3 Hainr4 her-8 \] nie-4. der,8 |
- Lieb4. chen,8 \[/3 komm4 zu8 \] |
+ \[/3 Hainr4 her-8 \] nie-4. der8 |
+ Lieb4. chen8 \[/3 komm4 zu8 \] |
mir!2 _4 |
_4 _ _ |
_ _ _ |
@@ -102,9 +99,9 @@ $lyric_verse1 = \lyric{
% 23
Des8. Ver-16 r\"a-4. ters8 |
feind-8. lich16 Lau-4. schen8 |
- \[/3 F\"urch-4 te,8 \] Hol-4. de,8 |
- nicht,2. |
- \[/3 f\"urch-4 te,8 \] Hol-4. de,8 |
+ \[/3 F\"urch-4 te8 \] Hol-4. de8 |
+ nicht2. |
+ \[/3 f\"urch-4 te8 \] Hol-4. de8 |
nicht.2. |
}
@@ -113,7 +110,7 @@ $lyric_verse2 = \lyric{
\[/3 H\"orst4 die8 \] Nach-4. ti-8
\[/3 gal-4 len8 \] schla-4 gen?8 _8
Ach!4. sie8 \[/3 fleh-4 en8 \]
- dich,2 _4
+ dich2 _4
_4 _ _
_4_ _
@@ -127,11 +124,11 @@ $lyric_verse2 = \lyric{
% 17
Sie-8. ver-16 stehn4. des8
- Bus-8. ens16 Seh-4. nen,8
+ Bus-8. ens16 Seh-4. nen8
\[/3 Ken-4 nen8 \] Lieb-4. es-8
- schmerz,2.
+ schmerz2.
\[/3 Ken-4 nen8 \] Lieb-4. es-8
- schmerz,2.
+ schmerz2.
% 23
R\"uh-8. ren16 mit4. den8
@@ -145,14 +142,14 @@ $lyric_verse2 = \lyric{
$lyric_through = \lyric{
% 37
La\ss8. auch16 dir8. die16 Brust8. be-16 |
- we-4 gen, _ |
- Lieb-4. chen,8 h\"o-8. re16 |
+ we-4 gen _ |
+ Lieb-4. chen8 h\"o-8. re16 |
mich!2 _4 |
- Be-8. bend16 harr'4 ich8 _8 |
+ Be-8. bend16 harr4 ich8 _8 |
dir8. ent-16 ge-4 gen!8 _8 |
- \[/3 Komm,4 be-8 \] gl\"u4. cke8 |
+ \[/3 Komm4 be-8 \] gl\"u4. cke8 |
mich!2. |
- \[/3 Komm,4 be-8 \] gl\"u4. cke8 |
+ \[/3 Komm4 be-8 \] gl\"u4. cke8 |
mich!2. |
_2 be-4 |
gl\"u-2. |
@@ -160,189 +157,195 @@ $lyric_through = \lyric{
mich!2 _4 |
}
-$treble_intro = \melodic{
- \octave c';
+$treble_intro = \melodic\relative c{
\clef violin;
- % ugh: i'd like to type this!
- %r8\pp [<g,-. c-.> <c-. es-.> <g,-. c-.> <c-. es-.> <g,-. c-.>] |
- r8\pp <[g,-. c-.> <c-. es-.> <g,-. c-.> <c-. es-.> <g,-. c-.]> |
- r8 <[as,-. c-.> <c-. es-.> <as,-. c-.> <c-. es-.> <as,-. c-.]> |
- r8 <[as,-. c-.> <c-. d-.> <as,-. c-.> <c-. d-.> <as,-. c-.]> |
- r8 <[g,-. b,-.> <b,-. d-.> <g,-. b,-.> <b,-. d-.> <g,-. b,-.]> |
+ % ugh: id like to type this!
+ %r8\pp [<g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.>] |
+ r8\pp <[g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.]> |
+ r8 <[as-. c-.> <c-. es-.> <as-. c-.> <c-. es-.> <as-. c-.]> |
+ r8 <[as-. c-.> <c-. d-.> <as-. c-.> <c-. d-.> <as-. c-.]> |
+ r8 <[g-. b-.> <b-. d-.> <g-. b-.> <b-. d-.> <g-. b-.]> |
\break
-
}
-$treble_verse1 = \melodic{
- \octave c';
+$treble_verse1 = \melodic\relative c{
% \clef violin;
- r8 <[g, c> <c es> <g, c> <c es> <g, c]> |
- r8 <[f, c> <c d> <f, c> <c d> <f, c]> |
- r8 <[f, g, b,> <g, b, d> <f, g, b,> <g, b, d> <f, g, b,]> |
- r8 <[es, g, c> <g, c es> <es, g, c> <g, c es> <es, g, c]> |
- <g'4.( b> <)f'8 d'> <[/3 f' d'> <es' c'> <d' b]1/1> |
- <c'2. es'> |
- r8 <[g, c> <c es> <g, c> <c es> <g, c]> |
- r8 <[f, c> <c d> <f, c> <c d> <f, c]> |
- r8 <[f, as, bes,> <as, bes, d> <f, g, bes,> <g, bes, d> <f, g, bes,]> |
- r8 <[es, g, bes,> <g, bes, es> <es, g, bes,> <g, bes, es]>
- <{ es'( | )bes4. as8}{ c'( | )d4.( )f8 } >
+ %5
+ r8 <[g' c> <c es> <g c> <c es> <g c]> |
+ r8 <[f c'> <c' d> <f, c'> <c' d> <f, c']> |
+ r8 <[f g b> <g b d> <f g b> <g b d> <f g b]> |
+ r8 <[es g c> <g c es> <es g c> <g c es> <es g c]> |
+ <g''4.( b,> <)f8 d> <[/3 f d> <es c> <d b]1/1> |
+ %10
+ <c2. es> |
+ r8 <[g, c> <c es> <g c> <c es> <g c]> |
+ r8 <[f c'> <c' d> <f, c'> <c' d> <f, c']> |
+ r8 <[f as bes> <as bes d> <f g bes> <g bes d> <f g bes]> |
+ r8 <[es g bes> <g bes es> <es g bes> <g bes es]>
+ <{ es''( | )bes4. as8}{ c( | )d,4.( )f8 } >
< [/3 f as> <es g> <d f]1/1> |
+ %16
<es2. g> |
- r8 <[f, g,> <g, b,> <f, g,> <g, b,> <f, g,]> |
- r8 <[es, g,> <g, c> <es, g,> <g, c> <es, g,]> |
- r8\pp <[es, as, c> <as, c es> <es, as, c> <as, c es> <es, as, c]> |
- r8 <[es, g, bes,> <g, bes, es,> <es, g, bes,> <g, bes, es,> <es, g, bes,]> |
+ r8 <[f, g> <g b> <f g> <g b> <f g]> |
+ r8 <[es g> <g c> <es g> <g c> <es g]> |
+ r8\pp <[es as c> <as c es> <es as c> <as c es> <es as c]> |
+ %20
+ r8 <[es g bes> <g bes es> <es g bes> <g bes es> <es g bes]> |
% [/3 as\grace( bes )
- [/3 as8(( g )as]1/1 c'4.-> ) as8 |
+ [/3 as'8(( g )as]1/1 c4.-> ) as8 |
g2. |
- r8 <[f, g,> <g, b,> <f, g,> <g, b,> <f, g,]> |
- r8 <[e, g,> <g, c> <e, g,> <g, c> <e, g,]> |
- r8 <[f, a, c> <a, c f> <f, a, c> <a, c f> <f, a, c]> |
- r8 <[e, g, c> <g, c e> <e, g, c> <g, c e> <e, g, c]> |
- <{[/3 f'8\f( e' f']1/1 a'4. )f'8 } {\[/3 f e f \] a4. f8 } > |
+ r8 <[f, g> <g b> <f g> <g b> <f g]> |
+ r8 <[e g> <g c> <e g> <g c> <e g]> |
+ r8 <[f a c> <a c f> <f a c> <a c f> <f a c]> |
+ r8 <[e g c> <g c e> <e g c> <g c e> <e g c]> |
+ <{[/3 f8\f( e f]1/1 a4. )f8 } {\[/3 f' e f \] a4. f8 } > |
<e2 e'> r4 |
}
-$treble_eentje = \melodic{
- \octave c';
- <f2\mf as!(> <[as8.->( c'> <)f16 )as]> |
+$treble_eentje = \melodic\relative c{
+ <f'2\mf as!(> <[as8.->( c> <)f16 )as]> |
<e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
- <f4. g> <[b,8-. g-.(> <d-. g-.> <f-. )g-.]> |
+ <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.]> |
<e2 g\pp> <e4 g> |
- <f2\mf a(> <[a8.( c'> <)f16 )a]> |
+ <f2\mf a(> <[a8.( c> <)f16 )a]> |
<e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
- <f4. g> <[b,8-. g-.(> <d-. g-.> <f-. )g-.]> |
+ <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.]> |
+ %60
<e2. g> |
}
-$treble_through = \melodic{
- \octave c';
- r2. |
+$treble_through = \melodic\relative c{
+ %61
+ R2. |
% lily: 221: warning: Junking request: Span_dynamic_req: the \>
- <[g,8.\< g> <g,16 g> <b,8. b> <\! b,16\> b16> <d8. d'> <d16 d']> |
- % lily: 222: warning: Can't find cresc to end.
- < { c4( )b, } { c'4( )b } > \!r |
+ <[g'8.\< g'> <g16 g'> <b8. b'> <\! b16\> b'16> <d8. d'> <d16 d']> |
+ % lily: 222: warning: Cant find cresc to end.
+ < { c4( )b } { c'4( )b } > \!r |
% ugh
-% <g,4. g> <b,8 b> <[d8.-> d'->> c'16] |
- <g,4. g> <b,8 b> [d'8.-> c'16] |
-% ugh, ugh: connecting chords
- < { d2.\f( )a2} { e2. ~ e2 } { b2. c2 }> r4 |
+% <g4. g> <b8 b> <[d8.-> d->> c16] |
+ <g4. g'> <b8 b'> [d'8.-> c16] |
+% ugh ugh: connecting chords
+ %65
+ < { d,2.\f( )a'2} { e2. ~ e2 } { b'2. c,2 }> r4 |
<
{
\voiceone
- [a8. b16] c'4->( )a8 r |
- [a8. b16] c'4->( )a8 r |
+ [a8. b16] c4->( )a8 r |
+ [a8. b16] c4->( )a8 r |
}
{
\voicetwo
- <d4\f f> <d2 f> |
+ <d,4\f f> <d2 f> |
<c!4\f es> <c2 es> |
}
>
% 4 bars copied from end verse1
- r8 <[f,\p a, c> <a, c f> <f, a, c> <a, c f> <f, a, c]> |
- r8 <[e, g, c> <g, c e> <e, g, c> <g, c e> <e, g, c]> |
- <{[/3 f'8\f( e' f']1/1 a'4. )f'8 } {\[/3 f e f \] a4. f8 } > |
- <e2 e'> r4 |
+ r8 <[f,\p a c> <a c f> <f a c> <a c f> <f a c]> |
+ %70
+ r8 <[e g c> <g c e> <e g c> <g c e> <e g c]> |
+ <{[/3 f8\f( e f]1/1 a4. )f8 } {\[/3 f' e f \] a4. f8 } > |
+ <e'2 e'> r4 |
<es2 es'> r4 |
<d2 d'> r4 |
- <b,2 b> r4 |
+ %75
+ <b2 b'> r4 |
<c2 c'> <e4\pp g> |
% four copied from begin eentje
- <f2\mf as!(> <[as8.->( c'> <)f16 )as]> |
+ <f2\mf as!(> <[as8.->( c> <)f16 )as]> |
<e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
- <f4. g> <[b,8-. g-.(> <d-. g-.> <f-. )g-.]> |
- \textstyle "italic";
+ <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.]> |
+ %80
+ \property Voice . textstyle = "italic"
<e2._"dim." g> |
- <g,2. e g> |
- <g,2.-\fermata e g> |
+ <g,2. e' g> |
+ <g2.-\fermata e' g> |
}
-$bass_intro = \melodic{
- \octave c;
+$bass_intro = \melodic\relative c{
\clef bass;
- <c,2 c> r4 |
- <as,,2 as,> r4 |
- <f,,2 f,> r4 |
- <g,,2 g,> r4 |
+ <c,2 c'> r4 |
+ <as2 as'> r4 |
+ <f2 f'> r4 |
+ <g2 g'> r4 |
}
-$bass_verse1 = \melodic{
- \octave c;
+$bass_verse1 = \melodic\relative c{
% \clef bass;
- <c,2 c> r4 |
- <as,,2 as,> r4 |
- <g,,2 g,> r4 |
- <c,2 c> r4 |
- <g,,8 g,> <[g d'> <d' f'> <g d'> <d' f'> <g d']> |
- <c,8 c> <[g c'> <c' es'> <g c'> <c' es'> <g c']> |
- <c,2 c> r4 |
- <as,,2 as,> r4 |
- <bes,,2 bes,> r4 |
- <es,,2 es,> r4 |
- bes,,8 <[bes, f> <f bes> <bes, f> <f bes> <bes, f]> |
- es,,8 <[bes, es> <es g> <bes, es> <es g> <bes, es]> |
- <g,,2 g,> r4 |
- <c,2 c> r4 |
- <as,,2 as,> r4 |
- <es,,2 es,> r4 |
- <bes,,8 bes,> <[f bes> <bes d'> <f bes> <bes d'> <f bes]> |
- <es,,8 es,> <[es g bes> <g bes es'> <es g bes> <g bes es'> <es g bes]> |
- <g,,2 g,> r4 |
- <c,2 c> r4 |
- <f,,2 f,> r4 |
- <c,2 c> r4 |
- <g,,8 g,> <[d g> <g b> <d g> <g b> <d g]> |
- c,8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
+ <c,2 c'> r4 |
+ <as2 as'> r4 |
+ <g2 g'> r4 |
+ <c2 c'> r4 |
+ <g8 g'> <[g'' d'> <d' f> <g, d'> <d' f> <g, d']> |
+ <c,,8 c'> <[g'' c> <c es> <g c> <c es> <g c]> |
+ <c,,2 c'> r4 |
+ <as2 as'> r4 |
+ <bes2 bes'> r4 |
+ <es,2 es'> r4 |
+ bes'8 <[bes' f'> <f' bes> <bes, f'> <f' bes> <bes, f']> |
+ es,,8 <[bes'' es> <es g> <bes es> <es g> <bes es]> |
+ <g,2 g'> r4 |
+ <c2 c'> r4 |
+ <as2 as'> r4 |
+ <es2 es'> r4 |
+ <bes'8 bes'> <[f'' bes> <bes d> <f bes> <bes d> <f bes]> |
+ <es,,8 es'> <[es'' g bes> <g bes es> <es g bes> <g bes es> <es g bes]> |
+ <g,,2 g'> r4 |
+ <c2 c'> r4 |
+ <f,2 f'> r4 |
+ <c'2 c'> r4 |
+ <g8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
+ c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g]> |
}
-$bass_eentje = \melodic{
- \octave c;
- <c,8 c> <[c f as!> <f as c'> <c f as> <f as c'> <c f as]> |
- c,8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
- <g,,8 g,> <[d g> <g b> <d g> <g b> <d g]> |
- c,8 <[e g> <g c'> <e g> <g c'> <e g]> |
- <c,8 c> <[c f a> <f a c'> <c f a> <f a c'> <c f a]> |
- c,8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
- <g,,8 g,> <[d g> <g b> <d g> <g b> <d g]> |
- c,8 <[e g> <g c'> <e g> <g c'> <e g]> |
+$bass_eentje = \melodic\relative c{
+ <c,8 c'> <[c' f as!> <f as c> <c f as> <f as c> <c f as]> |
+ c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g]> |
+ <g,8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
+ c,8 <[e' g> <g c> <e g> <g c> <e g]> |
+ <c,8 c'> <[c' f a> <f a c> <c f a> <f a c> <c f a]> |
+ c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g]> |
+ <g,8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
+ c,8 <[e' g> <g c> <e g> <g c> <e g]> |
}
-$bass_through = \melodic{
- \octave c;
- <g,,8 g,> <[g, b, d> <b, d f> <g, b, d> <as,!-> b-> d->> <b, d f]> |
- <g,,8 g,> <[g, d> <d f> <g, d> <as,-> b-> d->> <b, d f]> |
+$bass_through = \melodic\relative c{
+ %61
+ <g,8 g'> <[g' b d> <b d f> <g b d> <as!-> b-> d->> <b d, f]> |
+ <g,8 g'> <[g' d'> <d' f> <g, d'> <as-> b'-> d,->> <b d f]> |
% copied
- <g,,8 g,> <[g, d> <d f> <g, d> <as,-> b-> d->> <b, d f]> |
- <g,,8 g,> <[g, d e> <d f> <g, d> <gis,-> b,-> d->> <b, d f]> |
- <gis,,8 gis,> <[d e> <e b> <d e> <e b> <d e]> |
- <a,,8 a,> <[c e> <e a> <c e> <e a> <c e]> |
- <a,,8 a,> <[a, d f> <d f a> <a, d f> <d f a> <a, d f]> |
- <a,,8 a,> <[a, c e> <c e a> <a, c e> <c e a> <a, c e]> |
+ <g,8 g'> <[g' d'> <d' f> <g, d'> <as-> b'-> d,->> <b d f]> |
+ <g,8 g'> <[g' d' e> <d' f> <g, d'> <gis-> b-> d->> <b d f]> |
+ %65
+ <gis,8 gis'> <[d'' e> <e b'> <d e> <e b'> <d e]> |
+ <a,8 a'> <[c' e> <e a> <c e> <e a> <c e]> |
+ <a,8 a'> <[a' d f> <d f a> <a d f> <d f a> <a d f]> |
+ <a,8 a'> <[a' c e> <c e a> <a c e> <c e a> <a c e]> |
% 4 bars copied from end verse1
- <f,,2 f,> r4 |
- <c,2 c> r4 |
- <g,,8 g,> <[d g> <g b> <d g> <g b> <d g]> |
- c,8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
-
- <c,8 c> <[c es! g> <es g c'> <c es! g> <es g c'> <c es! g]> |
- <f,,8 f,> <[d f> <f as!> <d f> <f as!> <d f]> |
- <g,,8 g,> <[d f> <f g> <d f> <f g> <d f]> |
- c,8 <[c e> <e g> <c e> <e g> <c e]> |
- c,8 <[c f> <f as> <c f> <f as> <c f]> |
- c,8 <[c e> <e g> <c e> <e g> <c e]> |
- g,,8 <[g, d> <d f> <g, d> <d f> <g, d]> |
+ <f,2 f'> r4 |
+ %70
+ <c'2 c'> r4 |
+ <g8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
+ c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g]> |
+
+ <c,8 c'> <[c' es! g> <es g c> <c es! g> <es g c> <c es! g]> |
+ <f,,8 f'> <[d'' f> <f as!> <d f> <f as!> <d f]> |
+ %75
+ <g,,8 g'> <[d'' f> <f g> <d f> <f g> <d f]> |
+ c,8 <[c' e> <e g> <c e> <e g> <c e]> |
+ c,8 <[c' f> <f as> <c f> <f as> <c f]> |
+ c,8 <[c' e> <e g> <c e> <e g> <c e]> |
+ g,8 <[g' d'> <d' f> <g, d'> <d' f> <g, d']> |
% copied from two bars back
- c,8 <[c e> <e g> <c e> <e g> <c e]> |
- c,8 <[c e> <e g> <c e> <e g> <c e]> |
- <c,2._\fermata g, c> |
+ %80
+ c,8 <[c' e> <e g> <c e> <e g> <c e]> |
+ c,8 <[c' e> <e g> <c e> <e g> <c e]> |
+ <c,2._\fermata g' c> |
}
global = \melodic{
- \meter 3/4;
- \key bes es as;
+ \time 3/4;
+ \key es;
\skip 4 * 12;
\break
\skip 4 * 234;
@@ -357,8 +360,8 @@ $lyric_four = \lyric{
_ _ _
}
-lyrics = \melodic{
- \meter 3/4;
+lyrics = {
+ \time 3/4;
% \skip 4 * 12;
\$lyric_four
\$lyric_verse1
@@ -387,7 +390,6 @@ $vocal_staff = \type Staff = vocal<
\$vocals
>
-% treble = \melodic{
treble = {
\$treble_intro
\$treble_verse1
@@ -401,7 +403,7 @@ $treble_staff = \type Staff = treble<
\treble
>
-bass = \melodic{
+bass = {
\$bass_intro
\$bass_verse1
\$bass_eentje
@@ -414,23 +416,18 @@ $bass_staff = \type Staff = bass<
\bass
>
-$grand_staff = \type Grand_staff<
+$grand_staff = \type GrandStaff<
\$treble_staff
\$bass_staff
>
-a4 = \paper{
- linewidth= 193.\mm;
- \include "score-bar-numbering.ly";
-}
-
\score{
<
\$vocal_staff
\$lyric_staff
\$grand_staff
>
- \paper{ \a4 }
+ \include "score-paper.ly";
\midi{
\tempo 4 = 54;
}
diff --git a/out/dummy.dep b/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/out/dummy.dep
+++ /dev/null
diff --git a/po/Makefile b/po/Makefile
new file mode 100644
index 0000000000..d951b5a320
--- /dev/null
+++ b/po/Makefile
@@ -0,0 +1,32 @@
+# title makefile for po
+# file po/Makefile
+
+depth = ..
+
+NAME = lilypond
+MODULE_NAME = po
+
+PO_FILES = $(wildcard *.po)
+MO_FILES = $(addprefix $(outdir)/, $(PO_FILES:.po=.mo))
+HELP_CATALOGS = $(PO_FILES:%.po=%)
+CATALOGS = $(HELP_CATALOGS:lilypond=)
+EXTRA_DIST_FILES = TODO $(PO_FILES)
+
+include $(depth)/make/Stepmake.make
+include $(stepdir)/Po_rules.make
+
+default: $(MO_FILES)
+
+localinstall: $(MO_FILES)
+ for i in $(CATALOGS); do \
+ $(INSTALL) -d $(localedir)/$$i/LC_MESSAGES; \
+ $(INSTALL) -m 644 $(outdir)/$$i.mo \
+ $(localedir)/$$i/LC_MESSAGES/$(package).mo; \
+ done
+
+localuninstall:
+ for i in $(CATALOGS); do \
+ rm -f $(localedir)/$$i/LC_MESSAGES/$(package).mo; \
+ rmdir $(localedir)/$$i/LC_MESSAGES; \
+ done
+
diff --git a/po/TODO b/po/TODO
new file mode 100644
index 0000000000..b854f34607
--- /dev/null
+++ b/po/TODO
@@ -0,0 +1,63 @@
+ISSUES -- please read this before doing too much real translating...
+
+ * encapsulate locale strings in _( ) or _f ( )
+ * fix/standardise messages
+ - it's silly to translate wrong strings
+ - no leading/trailing punctuation in strings: e.g.
+ _ ("foo found") iso _ ("foo found.), _ ("foo found.\n), ...
+ - no leading/trailing whitespace in strings
+
+ - Think about translation issues.
+ In a lot of cases,it's better to translate a whole message
+ the english grammar mustn't be imposed on the transator.
+ So, iso
+ _ ("stem at") + moment.str () + _("doen't fit in beam")
+ have
+ _f ("stem at %s doen't fit in beam", moment.str ())
+ ?
+
+ Otoh:
+ en: can't open: `foo.ly'
+ nl: kan `foo.ly' niet openen (1)
+ kan niet openen: `foo.ly'* (2)
+ niet te openen: `foo.ly'* (3)
+
+ The first nl message, although gramatically and stylish correct,
+ is not friendly for parsing by humans (even if they speak dutch).
+ I guess we'd prefer something like (2) or (3)...
+
+ - don't modularise too much; a lot of words cannot be translated
+ without context.
+ it's probably safe to treat most occurences of words like
+ stem, beam, crescendo as separately translatable words.
+
+ * don't! translate/gettextify:
+ - debug strings
+ - output (ps) strings
+
+TODO
+ * native speakers (naïeve sprekerds) that make/take care of {it,..}.po
+ * concurrently update Documentation/tex/computer.data
+ * convince xgettext my name is <janneke@gnu.org> iso
+ <fred@botervlieg.flower> :-)
+ * create user-friendly input format for multiple languages?
+
+SOLVED/HOWTO
+ * because i never install LilyPond, i made these links:
+
+ ln -s $LILYPOND_SOURCEDIR/po/out/nl.mo
+ /usr/share/locale/nl/LC_MESSAGES/lilypond.mo
+ ln -s $LILYPOND_SOURCEDIR/po/out/it.mo
+ /usr/share/locale/it/LC_MESSAGES/lilypond.mo
+
+ then simply type, e.g.
+
+ LANG=nl lilypond -h
+
+ * (howto?) avoid keep translating for moving target
+ - make po-update
+ - mv po/out/*.po po (manually!)
+ - edit po/*.po
+ - make -C po
+ - make show-po-update LANGUAGE=xx
+
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000000..d8ac69d178
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,891 @@
+msgid ""
+msgstr ""
+"Date: 1998-05-30 00:17:12+0200\n"
+"From: <tdemunni@sybase.com>\n"
+"Content-Type: text/plain; charset=\n"
+"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po/out --add-comments --keyword=_ --keyword=_f\n"
+"Files: bow.cc int.cc\n"
+
+#: data-file.cc:52
+msgid "EOF in a string"
+msgstr "EOF in una corda"
+
+#: data-file.cc:121 input.cc:86 midi-parser.cc:100 warn.cc:21
+msgid "warning: "
+msgstr "attentione: "
+
+#: dstream.cc:159
+msgid "Not enough fields in Dstream init."
+msgstr ""
+
+#: flower-debug.cc:17
+msgid "Debug output disabled. Compiled with NPRINT."
+msgstr ""
+
+#: lgetopt.cc:103
+msgid "option `%s' requires an argument"
+msgstr "opzione `%s' chiede un argumento"
+
+#: lgetopt.cc:107
+msgid "option `%s' doesn't allow an argument"
+msgstr "opzione `%s' non permette un argumento"
+
+#: lgetopt.cc:111
+msgid "unrecognized option: `%s'"
+msgstr "opzione non riconosciuto `%s'"
+
+#: lgetopt.cc:117
+msgid "invalid argument `%s' to option `%s'"
+msgstr "argumento non valide `%s' all'opzione `%s'"
+
+#: text-stream.cc:8
+msgid "<stdin>"
+msgstr ""
+
+#: mapped-file-storage.cc:87 midi-stream.cc:77 mudela-stream.cc:102 parser.yy:1378 scores.cc:37 simple-file-storage.cc:44 tex-stream.cc:28 text-stream.cc:21
+msgid "can't open file: `%s'"
+msgstr "non posso aprire il documento: `%s'"
+
+#: input.cc:91 warn.cc:7 warn.cc:15
+msgid "error: "
+msgstr "errore: "
+
+#: input.cc:97
+msgid "Non fatal error: "
+msgstr "Errore non fatale: "
+
+#: input.cc:105 source-file.cc:62 source-file.cc:155
+msgid "position unknown"
+msgstr "posizione sconosciuto"
+
+#: mapped-file-storage.cc:65
+msgid "map_fd: "
+msgstr ""
+
+#: mapped-file-storage.cc:74
+msgid "can't map file"
+msgstr "non posso mappare il documento"
+
+#: mapped-file-storage.cc:109
+msgid "vm_deallocate: "
+msgstr ""
+
+#: simple-file-storage.cc:56
+msgid "Huh? got %d, expected %d characters"
+msgstr "Come? ce ne ho %d, ho aspettato %d carattere"
+
+#: abbreviation-beam-engraver.cc:76 beam-grav.cc:90
+msgid "unterminated beam"
+msgstr ""
+
+#: afm.cc:114
+msgid "can't find character called `%s'"
+msgstr ""
+
+#: atom.cc:31
+msgid "ridiculous dimension: %s, %s"
+msgstr "dimensione da ridere: %s, %s"
+
+#: beam-grav.cc:106
+msgid "Stem must have Rhythmic structure."
+msgstr ""
+
+#: beam-grav.cc:113
+msgid "stem doesn't fit in beam"
+msgstr ""
+
+#: beam-grav.cc:124
+msgid "please fix me"
+msgstr "aggiustami per favore"
+
+#: beam-grav.cc:125
+msgid "stem at %s doesn't fit in beam"
+msgstr ""
+
+#: beam.cc:117
+msgid "beam with less than two stems"
+msgstr ""
+
+#. when all too short, normal stems win..
+#: beam.cc:562
+msgid "weird beam shift, check your knees"
+msgstr ""
+
+#: break.cc:25
+msgid "0 lines"
+msgstr "0 linee"
+
+#: break.cc:27
+msgid "1 line (of %.0f columns)"
+msgstr "1 linea (da %.0f colonne)"
+
+#: break.cc:29
+msgid "%d lines (with an average of %.1f columns)"
+msgstr "%d linee (con una media di %.f colonne)"
+
+#: break.cc:159
+msgid "score does not have any columns"
+msgstr ""
+
+#: break.cc:183
+msgid "approximated: %s"
+msgstr "approssimato: %s:"
+
+#: break.cc:185
+msgid "calculated exactly: %s"
+msgstr "calcolato esattamente: %s"
+
+#: break.cc:186 score.cc:111
+msgid "time: %.2f seconds"
+msgstr "durata: %.2f secondi"
+
+#: change-iterator.cc:25
+msgid "can't change `%s' to `%s'"
+msgstr ""
+
+#: clef-grav.cc:137
+msgid "unknown clef type "
+msgstr ""
+
+#: collision.cc:62
+msgid "No stem direction set. Ignoring column in clash."
+msgstr ""
+
+#: collision.cc:75
+msgid "Too many clashing notecolumns. Ignoring them."
+msgstr ""
+
+#: command-request.cc:209
+msgid "don't know how handle empty keys"
+msgstr ""
+
+#: crescendo.cc:47
+msgid "crescendo"
+msgstr ""
+
+#: crescendo.cc:47 lookup.cc:338 lookup.cc:371 lookup.cc:389
+msgid "too small"
+msgstr ""
+
+#: debug.cc:56
+msgid "Floating point exception"
+msgstr ""
+
+#: debug.cc:140
+msgid "can't set mem-checking"
+msgstr ""
+
+#: dimen.cc:31
+msgid "unknown length unit: `%s'"
+msgstr ""
+
+#: dimen.cc:40
+msgid "NaN"
+msgstr ""
+
+#: dynamic-grav.cc:85 slur-grav.cc:72
+msgid "can't find both ends of %s"
+msgstr ""
+
+#: dynamic-grav.cc:86
+msgid "cresc"
+msgstr ""
+
+#: dynamic-grav.cc:162
+msgid "unended crescendo"
+msgstr ""
+
+#: identifier.cc:49
+msgid "Wrong identifier type: "
+msgstr ""
+
+#: identifier.cc:50
+msgid "%s expected"
+msgstr "%s aspettato"
+
+#: includable-lexer.cc:38 midi-score-parser.cc:24 scores.cc:108 scores.cc:113
+msgid "can't find file: `%s'"
+msgstr ""
+
+#: ineq-constrained-qp.cc:167
+msgid "Ineq_constrained_qp::solve (): Constraint off by %f"
+msgstr ""
+
+#: ineq-constrained-qp.cc:222
+msgid "didn't converge!"
+msgstr ""
+
+#: ineq-constrained-qp.cc:224
+msgid "Too much degeneracy. "
+msgstr ""
+
+#: key-grav.cc:109
+msgid "No key name: assuming `C'"
+msgstr ""
+
+#: local-key-grav.cc:34
+msgid "out of tune"
+msgstr ""
+
+#: local-key-grav.cc:34 meter-grav.cc:28
+msgid "can't find"
+msgstr ""
+
+#: lookup.cc:337 lookup.cc:343
+msgid "piano brace"
+msgstr ""
+
+#: lookup.cc:344 lookup.cc:395
+msgid "too big"
+msgstr ""
+
+#: lookup.cc:370 lookup.cc:388 lookup.cc:394
+msgid "bracket"
+msgstr ""
+
+#: main.cc:65
+msgid "Usage: %s [OPTION]... [FILE]..."
+msgstr "Uso: %s [OPZIONE]... [DOCUMENTO]..."
+
+#: main.cc:66
+msgid "Typeset music and or play MIDI from FILE or <stdin>"
+msgstr "Stampa partitura oppure suona MIDI dal FILE o <stdin>"
+
+#: main.cc:48 main.cc:69
+msgid "Options:"
+msgstr "Opzioni: "
+
+#: main.cc:72
+msgid " -a, --about about LilyPond\n"
+msgstr " -a, --about cos'è LilyPond\n"
+
+#: main.cc:54 main.cc:75
+msgid " -D, --debug enable debugging output\n"
+msgstr ""
+
+#: main.cc:78
+msgid " -d, --dependencies write Makefile dependencies for every input file\n"
+msgstr ""
+
+#: main.cc:60 main.cc:81
+msgid " -I, --include=DIR add DIR to search path\n"
+msgstr " -I, --include=DIR add DIR to search path\n"
+
+#: main.cc:84
+msgid " -i, --init=FILE use FILE as init file\n"
+msgstr " -i, --init=DOC usa DOC come documento iniziale\n"
+
+#: main.cc:57 main.cc:87
+msgid " -h, --help this help\n"
+msgstr " -h, --help questo sostegno\n"
+
+#: main.cc:90
+msgid " -M, --no-paper produce midi output only\n"
+msgstr " -M, --no-paper produce solo output midi\n"
+
+#: main.cc:93
+msgid " -o, --output=FILE set FILE as default output base\n"
+msgstr ""
+
+#: main.cc:96
+msgid " -Q, --find-fourths show all intervals greater than a fourth\n"
+msgstr ""
+
+#: main.cc:99
+msgid " -t, --test switch on experimental features\n"
+msgstr " -t, --test usa truchi sperimentali\n"
+
+#: main.cc:78 main.cc:102
+msgid " -T, --no-timestamps don't timestamp the output\n"
+msgstr ""
+
+#: main.cc:105
+msgid " -V, --ignore-version ignore mudela version\n"
+msgstr ""
+
+#: main.cc:87 main.cc:108
+msgid " -w, --warranty show warranty and copyright\n"
+msgstr ""
+
+#: main.cc:111
+msgid "GNU LilyPond was compiled with the following settings:"
+msgstr ""
+
+#: main.cc:139
+msgid "GNU LilyPond is Free software, see --warranty"
+msgstr ""
+
+#: main.cc:107 main.cc:142 main.cc:155
+msgid "Copyright (c) %s by"
+msgstr ""
+
+#: main.cc:109 main.cc:144 main.cc:157
+msgid "Han-Wen Nienhuys <hanwen@cs.uu.nl>"
+msgstr ""
+
+#: main.cc:110 main.cc:145 main.cc:158
+msgid "Jan Nieuwenhuizen <janneke@gnu.org>"
+msgstr ""
+
+#: main.cc:153
+msgid "GNU LilyPond -- The GNU Project music typesetter"
+msgstr "GNU LilyPond -- Il tipografo musicale del progetto GNU"
+
+#: main.cc:113 main.cc:161
+msgid ""
+" This program is free software; you can redistribute it and/or\n"
+"modify it under the terms of the GNU General Public License version 2\n"
+"as published by the Free Software Foundation.\n"
+"\n"
+" This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+" You should have received a copy (refer to the file COPYING) of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+"USA.\n"
+msgstr ""
+
+#: meter-grav.cc:28
+msgid "lost in time"
+msgstr ""
+
+#: midi-item.cc:364
+msgid "unconventional key: flats: %d, sharps: %d"
+msgstr ""
+
+#: midi-item.cc:410
+msgid "silly duration"
+msgstr ""
+
+#: midi-item.cc:424
+msgid "silly pitch"
+msgstr ""
+
+#: midi-stream.cc:29 tex-stream.cc:58
+msgid "error syncing file (disk full?)"
+msgstr ""
+
+#: musical-pitch.cc:145
+msgid "Interval greater than quart, relative: %s"
+msgstr ""
+
+#: musical-request.cc:93
+msgid "transposition by %s makes accidental larger than two"
+msgstr ""
+
+#: musical-request.cc:439
+msgid "never heard of dynamic scale `\\%s', assuming %s"
+msgstr ""
+
+#: my-lily-lexer.cc:120
+msgid "redeclaration of `\\%s'"
+msgstr ""
+
+#: my-lily-lexer.cc:149
+msgid "error at EOF: %s"
+msgstr ""
+
+#: my-lily-parser.cc:62
+msgid "Parsing..."
+msgstr "Analizzare..."
+
+#: my-lily-parser.cc:71
+msgid "braces don't match"
+msgstr ""
+
+#: p-score.cc:178
+msgid "Can't solve this casting problem exactly; revert to Word_wrap"
+msgstr ""
+
+#: p-score.cc:197
+msgid "Preprocessing elements..."
+msgstr "Preprocessare elementi..."
+
+#: p-score.cc:201
+msgid "Calculating column positions..."
+msgstr "Calcolare posizioni di colonne..."
+
+#: p-score.cc:205
+msgid "Postprocessing elements..."
+msgstr "Postprocessare elementi..."
+
+#: p-score.cc:231
+msgid "TeX output to %s..."
+msgstr "Prodotto di TeX verso %s..."
+
+#: p-score.cc:245
+msgid "% outputting Score, defined at: "
+msgstr ""
+
+#: paper-def.cc:61
+msgid "unknown paper variable: `%s'"
+msgstr ""
+
+#: paper-def.cc:65
+msgid "not a real variable"
+msgstr ""
+
+#. perhaps multiple text events?
+#: performance.cc:54
+msgid "Creator: "
+msgstr ""
+
+#: performance.cc:63
+msgid "Automatically generated"
+msgstr ""
+
+#: mudela-stream.cc:84 performance.cc:68 tex-stream.cc:47
+msgid ", at "
+msgstr ""
+
+#: performance.cc:76
+msgid "from musical definition: %s"
+msgstr ""
+
+#: performance.cc:141
+msgid "MIDI output to %s..."
+msgstr "Prodotto di MIDI verso %s..."
+
+#: plet-engraver.cc:83
+msgid "unterminated plet"
+msgstr ""
+
+#: plet-spanner.cc:85
+msgid "lonely plet"
+msgstr ""
+
+#: qlpsolve.cc:88 qlpsolve.cc:139
+msgid "degenerate constraints"
+msgstr ""
+
+#: request-iterator.cc:68
+msgid "junking request: `%s'"
+msgstr ""
+
+#: score-column.cc:55
+msgid "ignoring zero duration added to column at %s"
+msgstr ""
+
+#: score-grav.cc:145
+msgid "Unbound spanner `%s'"
+msgstr ""
+
+#: score.cc:57
+msgid "no toplevel translator"
+msgstr ""
+
+#: score.cc:60
+msgid "Interpreting music..."
+msgstr "Interpretare musica..."
+
+#: score.cc:70
+msgid "need music in a score"
+msgstr ""
+
+#. should we? hampers debugging.
+#: score.cc:106
+msgid "errors found, /*not processing score*/"
+msgstr ""
+
+#: scores.cc:34
+msgid "writing dependency file: `%s'..."
+msgstr ""
+
+#: scores.cc:78
+msgid "score contains errors; will not process it"
+msgstr ""
+
+#: script.cc:60
+msgid "script needs stem direction"
+msgstr ""
+
+#: slur-grav.cc:49
+msgid "unterminated slur"
+msgstr ""
+
+#: slur-grav.cc:72
+msgid "slur"
+msgstr ""
+
+#: spanner.cc:44
+msgid "left spanpoint is right spanpoint\n"
+msgstr ""
+
+#: spanner.cc:101
+msgid "Spanner `%s' with equal left and right spanpoints"
+msgstr ""
+
+#: spring-spacer.cc:82
+msgid "unconnected column: %d"
+msgstr ""
+
+#: spring-spacer.cc:186
+msgid "I'm too fat; call Oprah"
+msgstr ""
+
+#: spring-spacer.cc:344
+msgid "solution doesn't satisfy constraints"
+msgstr ""
+
+#: spring-spacer.cc:623
+msgid "can't find a ruling note at %s"
+msgstr ""
+
+#: spring-spacer.cc:629
+msgid "no minimum in measure at %s"
+msgstr ""
+
+#: staff-side.cc:61
+msgid "Staff_side::get_position_f(): somebody forgot to set my direction, returning -20"
+msgstr ""
+
+#: stem.cc:102
+msgid "weird stem size; check for narrow beams"
+msgstr ""
+
+#: symtable.cc:50
+msgid "Symtable `%s': unknown symbol: `%s'"
+msgstr ""
+
+#: symtable.cc:61
+msgid "Symtable `%s' unknown"
+msgstr ""
+
+#: mudela-stream.cc:74 tex-stream.cc:37
+msgid "% Creator: "
+msgstr ""
+
+#: mudela-stream.cc:79 tex-stream.cc:42
+msgid "% Automatically generated"
+msgstr ""
+
+#: text-item.cc:47
+msgid "Text_item::get_position_f(): somebody forgot to set my vertical direction, returning -20"
+msgstr ""
+
+#: tie-grav.cc:114 tie.cc:50
+msgid "lonely tie"
+msgstr ""
+
+#: ties-grav.cc:82
+msgid "Can't find a note head at the right to attach Tie"
+msgstr ""
+
+#: time-description.cc:17
+msgid "cadenza"
+msgstr ""
+
+#: time-description.cc:106
+msgid "partial measure must be non-negative"
+msgstr ""
+
+#: time-description.cc:108
+msgid "partial measure too large"
+msgstr ""
+
+#: timing-translator.cc:32
+msgid "conflicting timing request"
+msgstr ""
+
+#: timing-translator.cc:64
+msgid "meter change not allowed here"
+msgstr ""
+
+#: timing-translator.cc:87
+msgid "barcheck failed by: %s"
+msgstr ""
+
+#: translator-ctors.cc:40
+msgid "unknown translator `%s'"
+msgstr ""
+
+#: translator-group.cc:149
+msgid "can't find or create `%s' called `%s'"
+msgstr ""
+
+#: translator-group.cc:263
+msgid "can't find or create `%s'"
+msgstr ""
+
+#: translator-group.cc:353
+msgid "can't find `%s'"
+msgstr ""
+
+#: word-wrap.cc:68
+msgid "ugh, this measure is too long"
+msgstr ""
+
+#: word-wrap.cc:69
+msgid "breakpoint: %d"
+msgstr ""
+
+#: word-wrap.cc:70
+msgid "generating stupido solution"
+msgstr ""
+
+#: word-wrap.cc:88
+msgid "I don't fit; put me on Montignac"
+msgstr ""
+
+#: parser.yy:300 parser.yy:303
+msgid "incorrect mudela version: %s (%s, %s)"
+msgstr ""
+
+#: parser.yy:477
+msgid "More than one music block"
+msgstr ""
+
+#: parser.yy:1047 parser.yy:1225 parser.yy:1252
+msgid "not a duration: %d"
+msgstr ""
+
+#: parser.yy:1049 parser.yy:1254
+msgid "can't abbreviate"
+msgstr ""
+
+#: parser.yy:1264
+msgid "have to be in Note mode for notes"
+msgstr ""
+
+#: parser.yy:1286
+msgid "have to be in Lyric mode for lyrics"
+msgstr ""
+
+#: lexer.ll:125
+msgid "EOF found inside a comment"
+msgstr ""
+
+#: lexer.ll:163
+msgid "undefined identifier: `%s'"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:168
+msgid "missing end quote"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:191 lexer.ll:195
+msgid "white expected"
+msgstr ""
+
+#: lexer.ll:342
+msgid "illegal character: `%c'"
+msgstr ""
+
+#: lexer.ll:392
+msgid "unknown escaped string: `\\%s'"
+msgstr ""
+
+#: out/BLURB.hh:2
+msgid ""
+"LilyPond is the GNU Project music typesetter. This program can print\n"
+"beautiful sheet music from a music definition file. It can also play\n"
+"mechanical performances to a MIDI file. Features include multiple\n"
+"staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,\n"
+"beams, slurs, triplets, formatting scores, part extraction. It includes\n"
+"a nice font of musical symbols.\n"
+msgstr ""
+"LilyPond \350 il tipografo musicale del progetto GNU. Questo programma e\n"
+"fatto per stampare bella partitura da un documento definito per musica.\n"
+"Pu\362 anche sonare le prestazioni meccaniche ad un documento MIDI. Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenzas, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione della parte. Una seria completa di\n"
+"caratteri musicali \350 compresa.\n"
+
+#: out/COPERTINA.hh:2
+msgid ""
+"LilyPond \350 il tipografo musicale del progetto GNU. Questo programma \350\n"
+"fatto per stampare belle partiture da un documento definito per musica.\n"
+"Pu\362 anche suonare le prestazioni meccaniche ad un documento MIDI. Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione delle parte. \310 compresa una seria \n"
+"completa di caratteri musicali.\n"
+msgstr ""
+
+#: out/FLAPTEKST.hh:2
+msgid ""
+"LilyPond is de muziekzetter van het GNU Project. Dit programma drukt\n"
+"prachtige bladmuziek volgens een muzikaal definitie bestand. Ook kan\n"
+"het een mechanische uitvoering afspelen naar een MIDI bestand.\n"
+"Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en uittreksels voor individuele \n"
+"partijen. Een fraaie set muziektekens is inbegrepen.\n"
+msgstr ""
+
+#: main.cc:43
+msgid "Usage: %s [OPTION]... [FILE]"
+msgstr ""
+
+#: main.cc:45
+msgid "Translate midi-file to mudela"
+msgstr ""
+
+#: main.cc:51
+msgid " -b, --no-quantify write exact durations, e.g.: a4*385/384\n"
+msgstr ""
+
+#: main.cc:63
+msgid " -k, --key=ACC[:MINOR] set key: ACC +sharps/-flats; :1 minor\n"
+msgstr ""
+
+#: main.cc:66
+msgid " -n, --no-silly assume no plets or double dots, smallest is 32\n"
+msgstr ""
+
+#: main.cc:69
+msgid " -o, --output=FILE set FILE as default output\n"
+msgstr ""
+
+#: main.cc:72
+msgid " -p, --no-plets assume no plets\n"
+msgstr ""
+
+#: main.cc:75
+msgid " -q, --quiet be quiet\n"
+msgstr ""
+
+#: main.cc:81
+msgid " -s, --smallest=N assume no shorter (reciprocal) durations than N\n"
+msgstr ""
+
+#: main.cc:84
+msgid " -v, --verbose be verbose\n"
+msgstr ""
+
+#: main.cc:90
+msgid " -x, --no-double-dots assume no double dotted notes\n"
+msgstr ""
+
+#: main.cc:105
+msgid "Mi2mu, translate midi to mudela"
+msgstr ""
+
+#: midi-parser.cc:64
+msgid "zero length string encountered"
+msgstr ""
+
+#: midi-score-parser.cc:45
+msgid "MIDI header expected"
+msgstr ""
+
+#. is this signed?
+#: midi-score-parser.cc:50
+msgid "Invalid header length"
+msgstr ""
+
+#: midi-score-parser.cc:53
+msgid "Invalid midi format"
+msgstr ""
+
+#: midi-score-parser.cc:56
+msgid "Invalid number of tracks"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "can't handle %s"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "non-metrical time"
+msgstr ""
+
+#: midi-score-parser.cc:95
+msgid "Parsing...\n"
+msgstr ""
+
+#: midi-track-parser.cc:70
+msgid "junking note-end event: channel = %d, pitch = %d"
+msgstr ""
+
+#: midi-track-parser.cc:125
+msgid "invalid running status"
+msgstr ""
+
+#: midi-track-parser.cc:326
+msgid "unimplemented MIDI meta-event"
+msgstr ""
+
+#: midi-track-parser.cc:331
+msgid "invalid MIDI event"
+msgstr ""
+
+#: midi-track-parser.cc:346
+msgid "MIDI track expected"
+msgstr ""
+
+#: midi-track-parser.cc:351
+msgid "invalid track length"
+msgstr ""
+
+#. heu, -2: should be - 1 1/2: A -> fis
+#: mudela-item.cc:62
+msgid "%% \"%s\"; %% not supported yet"
+msgstr ""
+
+#: mudela-item.cc:107
+msgid "#32 in quarter: %d"
+msgstr ""
+
+#: mudela-score.cc:96
+msgid "ugh"
+msgstr ""
+
+#: mudela-score.cc:108
+msgid "Lily output to %s..."
+msgstr ""
+
+#: mudela-score.cc:118 mudela-score.cc:167
+msgid "track "
+msgstr ""
+
+#: mudela-score.cc:152
+msgid "Processing..."
+msgstr ""
+
+#: mudela-score.cc:163
+msgid "Creating voices..."
+msgstr ""
+
+#: mudela-score.cc:176
+msgid "NOT Filtering tempo..."
+msgstr ""
+
+#: mudela-score.cc:185
+msgid "NOT Quantifying columns..."
+msgstr ""
+
+#: mudela-score.cc:189
+msgid "Quantifying columns..."
+msgstr ""
+
+#. return;
+#: mudela-score.cc:224
+msgid "Settling columns..."
+msgstr ""
+
+#: mudela-staff.cc:100
+msgid "% midi copyright:"
+msgstr ""
+
+#: mudela-staff.cc:101
+msgid "% instrument:"
+msgstr ""
+
+#: mudela-stream.cc:36
+msgid "lily indent level: %d"
+msgstr ""
+
+#: mudela-stream.cc:88
+msgid "% from input file: "
+msgstr ""
+
+#: version.cc:12
+msgid "of"
+msgstr ""
diff --git a/po/lilypond.po b/po/lilypond.po
new file mode 100644
index 0000000000..2352a8568b
--- /dev/null
+++ b/po/lilypond.po
@@ -0,0 +1,884 @@
+msgid ""
+msgstr ""
+"Date: 1998-07-21 09:44:01+0200\n"
+"From: <fred@botervlieg.flower>\n"
+"Content-Type: text/plain; charset=\n"
+"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po/out --add-comments --keyword=_ --keyword=_f\n"
+"Files: config.h gettext.h gettextP.h hash-string.h libgettext.h bindtextdom.c dcgettext.c dgettext.c finddomain.c gettext.c intl-compat.c loadmsgcat.c localealias.c textdomain.c\n"
+
+#: data-file.cc:52
+msgid "EOF in a string"
+msgstr ""
+
+#: data-file.cc:121 input.cc:86 midi-parser.cc:100 warn.cc:21
+msgid "warning: "
+msgstr ""
+
+#: dstream.cc:159
+msgid "Not enough fields in Dstream init."
+msgstr ""
+
+#: flower-debug.cc:17
+msgid "Debug output disabled. Compiled with NPRINT."
+msgstr ""
+
+#: lgetopt.cc:103
+msgid "option `%s' requires an argument"
+msgstr ""
+
+#: lgetopt.cc:107
+msgid "option `%s' doesn't allow an argument"
+msgstr ""
+
+#: lgetopt.cc:111
+msgid "unrecognized option: `%s'"
+msgstr ""
+
+#: lgetopt.cc:117
+msgid "invalid argument `%s' to option `%s'"
+msgstr ""
+
+#: text-stream.cc:8
+msgid "<stdin>"
+msgstr ""
+
+#: mapped-file-storage.cc:87 midi-stream.cc:77 mudela-stream.cc:102 parser.yy:1378 scores.cc:37 simple-file-storage.cc:44 tex-stream.cc:28 text-stream.cc:21
+msgid "can't open file: `%s'"
+msgstr ""
+
+#: input.cc:91 warn.cc:7 warn.cc:15
+msgid "error: "
+msgstr ""
+
+#: input.cc:97
+msgid "Non fatal error: "
+msgstr ""
+
+#: input.cc:105 source-file.cc:62 source-file.cc:155
+msgid "position unknown"
+msgstr ""
+
+#: mapped-file-storage.cc:65
+msgid "map_fd: "
+msgstr ""
+
+#: mapped-file-storage.cc:74
+msgid "can't map file"
+msgstr ""
+
+#: mapped-file-storage.cc:109
+msgid "vm_deallocate: "
+msgstr ""
+
+#: simple-file-storage.cc:56
+msgid "Huh? got %d, expected %d characters"
+msgstr ""
+
+#: abbreviation-beam-engraver.cc:76 beam-grav.cc:90
+msgid "unterminated beam"
+msgstr ""
+
+#: afm.cc:114
+msgid "can't find character called `%s'"
+msgstr ""
+
+#: atom.cc:31
+msgid "ridiculous dimension: %s, %s"
+msgstr ""
+
+#: beam-grav.cc:106
+msgid "Stem must have Rhythmic structure."
+msgstr ""
+
+#: beam-grav.cc:113
+msgid "stem doesn't fit in beam"
+msgstr ""
+
+#: beam-grav.cc:124
+msgid "please fix me"
+msgstr ""
+
+#: beam-grav.cc:125
+msgid "stem at %s doesn't fit in beam"
+msgstr ""
+
+#: beam.cc:117
+msgid "beam with less than two stems"
+msgstr ""
+
+#. when all too short, normal stems win..
+#: beam.cc:562
+msgid "weird beam shift, check your knees"
+msgstr ""
+
+#: break.cc:25
+msgid "0 lines"
+msgstr ""
+
+#: break.cc:27
+msgid "1 line (of %.0f columns)"
+msgstr ""
+
+#: break.cc:29
+msgid "%d lines (with an average of %.1f columns)"
+msgstr ""
+
+#: break.cc:159
+msgid "score does not have any columns"
+msgstr ""
+
+#: break.cc:183
+msgid "approximated: %s"
+msgstr ""
+
+#: break.cc:185
+msgid "calculated exactly: %s"
+msgstr ""
+
+#: break.cc:186 score.cc:111
+msgid "time: %.2f seconds"
+msgstr ""
+
+#: change-iterator.cc:25
+msgid "can't change `%s' to `%s'"
+msgstr ""
+
+#: clef-grav.cc:137
+msgid "unknown clef type "
+msgstr ""
+
+#: collision.cc:62
+msgid "No stem direction set. Ignoring column in clash."
+msgstr ""
+
+#: collision.cc:75
+msgid "Too many clashing notecolumns. Ignoring them."
+msgstr ""
+
+#: command-request.cc:209
+msgid "don't know how handle empty keys"
+msgstr ""
+
+#: crescendo.cc:47
+msgid "crescendo"
+msgstr ""
+
+#: crescendo.cc:47 lookup.cc:338 lookup.cc:371 lookup.cc:389
+msgid "too small"
+msgstr ""
+
+#: debug.cc:56
+msgid "Floating point exception"
+msgstr ""
+
+#: debug.cc:140
+msgid "can't set mem-checking"
+msgstr ""
+
+#: dimen.cc:31
+msgid "unknown length unit: `%s'"
+msgstr ""
+
+#: dimen.cc:40
+msgid "NaN"
+msgstr ""
+
+#: dynamic-grav.cc:85 slur-grav.cc:72
+msgid "can't find both ends of %s"
+msgstr ""
+
+#: dynamic-grav.cc:86
+msgid "cresc"
+msgstr ""
+
+#: dynamic-grav.cc:162
+msgid "unended crescendo"
+msgstr ""
+
+#: identifier.cc:49
+msgid "Wrong identifier type: "
+msgstr ""
+
+#: identifier.cc:50
+msgid "%s expected"
+msgstr ""
+
+#: includable-lexer.cc:38 midi-score-parser.cc:24 scores.cc:108 scores.cc:113
+msgid "can't find file: `%s'"
+msgstr ""
+
+#: ineq-constrained-qp.cc:167
+msgid "Ineq_constrained_qp::solve (): Constraint off by %f"
+msgstr ""
+
+#: ineq-constrained-qp.cc:222
+msgid "didn't converge!"
+msgstr ""
+
+#: ineq-constrained-qp.cc:224
+msgid "Too much degeneracy. "
+msgstr ""
+
+#: key-grav.cc:109
+msgid "No key name: assuming `C'"
+msgstr ""
+
+#: local-key-grav.cc:34
+msgid "out of tune"
+msgstr ""
+
+#: local-key-grav.cc:34 meter-grav.cc:28
+msgid "can't find"
+msgstr ""
+
+#: lookup.cc:337 lookup.cc:343
+msgid "piano brace"
+msgstr ""
+
+#: lookup.cc:344 lookup.cc:395
+msgid "too big"
+msgstr ""
+
+#: lookup.cc:370 lookup.cc:388 lookup.cc:394
+msgid "bracket"
+msgstr ""
+
+#: main.cc:65
+msgid "Usage: %s [OPTION]... [FILE]..."
+msgstr ""
+
+#: main.cc:66
+msgid "Typeset music and or play MIDI from FILE or <stdin>"
+msgstr ""
+
+#: main.cc:48 main.cc:69
+msgid "Options:"
+msgstr ""
+
+#: main.cc:72
+msgid " -a, --about about LilyPond\n"
+msgstr ""
+
+#: main.cc:54 main.cc:75
+msgid " -D, --debug enable debugging output\n"
+msgstr ""
+
+#: main.cc:78
+msgid " -d, --dependencies write Makefile dependencies for every input file\n"
+msgstr ""
+
+#: main.cc:60 main.cc:81
+msgid " -I, --include=DIR add DIR to search path\n"
+msgstr ""
+
+#: main.cc:84
+msgid " -i, --init=FILE use FILE as init file\n"
+msgstr ""
+
+#: main.cc:57 main.cc:87
+msgid " -h, --help this help\n"
+msgstr ""
+
+#: main.cc:90
+msgid " -M, --no-paper produce midi output only\n"
+msgstr ""
+
+#: main.cc:93
+msgid " -o, --output=FILE set FILE as default output base\n"
+msgstr ""
+
+#: main.cc:96
+msgid " -Q, --find-fourths show all intervals greater than a fourth\n"
+msgstr ""
+
+#: main.cc:99
+msgid " -t, --test switch on experimental features\n"
+msgstr ""
+
+#: main.cc:78 main.cc:102
+msgid " -T, --no-timestamps don't timestamp the output\n"
+msgstr ""
+
+#: main.cc:105
+msgid " -V, --ignore-version ignore mudela version\n"
+msgstr ""
+
+#: main.cc:87 main.cc:108
+msgid " -w, --warranty show warranty and copyright\n"
+msgstr ""
+
+#: main.cc:111
+msgid "GNU LilyPond was compiled with the following settings:"
+msgstr ""
+
+#: main.cc:139
+msgid "GNU LilyPond is Free software, see --warranty"
+msgstr ""
+
+#: main.cc:107 main.cc:142 main.cc:155
+msgid "Copyright (c) %s by"
+msgstr ""
+
+#: main.cc:109 main.cc:144 main.cc:157
+msgid "Han-Wen Nienhuys <hanwen@cs.uu.nl>"
+msgstr ""
+
+#: main.cc:110 main.cc:145 main.cc:158
+msgid "Jan Nieuwenhuizen <janneke@gnu.org>"
+msgstr ""
+
+#: main.cc:153
+msgid "GNU LilyPond -- The GNU Project music typesetter"
+msgstr ""
+
+#: main.cc:113 main.cc:161
+msgid ""
+" This program is free software; you can redistribute it and/or\n"
+"modify it under the terms of the GNU General Public License version 2\n"
+"as published by the Free Software Foundation.\n"
+"\n"
+" This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+" You should have received a copy (refer to the file COPYING) of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+"USA.\n"
+msgstr ""
+
+#: meter-grav.cc:28
+msgid "lost in time"
+msgstr ""
+
+#: midi-item.cc:364
+msgid "unconventional key: flats: %d, sharps: %d"
+msgstr ""
+
+#: midi-item.cc:410
+msgid "silly duration"
+msgstr ""
+
+#: midi-item.cc:424
+msgid "silly pitch"
+msgstr ""
+
+#: midi-stream.cc:29 tex-stream.cc:58
+msgid "error syncing file (disk full?)"
+msgstr ""
+
+#: musical-pitch.cc:145
+msgid "Interval greater than quart, relative: %s"
+msgstr ""
+
+#: musical-request.cc:93
+msgid "transposition by %s makes accidental larger than two"
+msgstr ""
+
+#: musical-request.cc:439
+msgid "never heard of dynamic scale `\\%s', assuming %s"
+msgstr ""
+
+#: my-lily-lexer.cc:120
+msgid "redeclaration of `\\%s'"
+msgstr ""
+
+#: my-lily-lexer.cc:149
+msgid "error at EOF: %s"
+msgstr ""
+
+#: my-lily-parser.cc:62
+msgid "Parsing..."
+msgstr ""
+
+#: my-lily-parser.cc:71
+msgid "braces don't match"
+msgstr ""
+
+#: p-score.cc:178
+msgid "Can't solve this casting problem exactly; revert to Word_wrap"
+msgstr ""
+
+#: p-score.cc:197
+msgid "Preprocessing elements..."
+msgstr ""
+
+#: p-score.cc:201
+msgid "Calculating column positions..."
+msgstr ""
+
+#: p-score.cc:205
+msgid "Postprocessing elements..."
+msgstr ""
+
+#: p-score.cc:231
+msgid "TeX output to %s..."
+msgstr ""
+
+#: p-score.cc:245
+msgid "% outputting Score, defined at: "
+msgstr ""
+
+#: paper-def.cc:61
+msgid "unknown paper variable: `%s'"
+msgstr ""
+
+#: paper-def.cc:65
+msgid "not a real variable"
+msgstr ""
+
+#. perhaps multiple text events?
+#: performance.cc:54
+msgid "Creator: "
+msgstr ""
+
+#: performance.cc:63
+msgid "Automatically generated"
+msgstr ""
+
+#: mudela-stream.cc:84 performance.cc:68 tex-stream.cc:47
+msgid ", at "
+msgstr ""
+
+#: performance.cc:76
+msgid "from musical definition: %s"
+msgstr ""
+
+#: performance.cc:141
+msgid "MIDI output to %s..."
+msgstr ""
+
+#: plet-engraver.cc:83
+msgid "unterminated plet"
+msgstr ""
+
+#: plet-spanner.cc:85
+msgid "lonely plet"
+msgstr ""
+
+#: qlpsolve.cc:88 qlpsolve.cc:139
+msgid "degenerate constraints"
+msgstr ""
+
+#: request-iterator.cc:68
+msgid "junking request: `%s'"
+msgstr ""
+
+#: score-column.cc:55
+msgid "ignoring zero duration added to column at %s"
+msgstr ""
+
+#: score-grav.cc:145
+msgid "Unbound spanner `%s'"
+msgstr ""
+
+#: score.cc:57
+msgid "no toplevel translator"
+msgstr ""
+
+#: score.cc:60
+msgid "Interpreting music..."
+msgstr ""
+
+#: score.cc:70
+msgid "need music in a score"
+msgstr ""
+
+#. should we? hampers debugging.
+#: score.cc:106
+msgid "errors found, /*not processing score*/"
+msgstr ""
+
+#: scores.cc:34
+msgid "writing dependency file: `%s'..."
+msgstr ""
+
+#: scores.cc:78
+msgid "score contains errors; will not process it"
+msgstr ""
+
+#: script.cc:60
+msgid "script needs stem direction"
+msgstr ""
+
+#: slur-grav.cc:49
+msgid "unterminated slur"
+msgstr ""
+
+#: slur-grav.cc:72
+msgid "slur"
+msgstr ""
+
+#: spanner.cc:44
+msgid "left spanpoint is right spanpoint\n"
+msgstr ""
+
+#: spanner.cc:101
+msgid "Spanner `%s' with equal left and right spanpoints"
+msgstr ""
+
+#: spring-spacer.cc:82
+msgid "unconnected column: %d"
+msgstr ""
+
+#: spring-spacer.cc:186
+msgid "I'm too fat; call Oprah"
+msgstr ""
+
+#: spring-spacer.cc:344
+msgid "solution doesn't satisfy constraints"
+msgstr ""
+
+#: spring-spacer.cc:623
+msgid "can't find a ruling note at %s"
+msgstr ""
+
+#: spring-spacer.cc:629
+msgid "no minimum in measure at %s"
+msgstr ""
+
+#: staff-side.cc:61
+msgid "Staff_side::get_position_f(): somebody forgot to set my direction, returning -20"
+msgstr ""
+
+#: stem.cc:102
+msgid "weird stem size; check for narrow beams"
+msgstr ""
+
+#: symtable.cc:50
+msgid "Symtable `%s': unknown symbol: `%s'"
+msgstr ""
+
+#: symtable.cc:61
+msgid "Symtable `%s' unknown"
+msgstr ""
+
+#: mudela-stream.cc:74 tex-stream.cc:37
+msgid "% Creator: "
+msgstr ""
+
+#: mudela-stream.cc:79 tex-stream.cc:42
+msgid "% Automatically generated"
+msgstr ""
+
+#: text-item.cc:47
+msgid "Text_item::get_position_f(): somebody forgot to set my vertical direction, returning -20"
+msgstr ""
+
+#: tie-grav.cc:114 tie.cc:50
+msgid "lonely tie"
+msgstr ""
+
+#: ties-grav.cc:82
+msgid "Can't find a note head at the right to attach Tie"
+msgstr ""
+
+#: time-description.cc:17
+msgid "cadenza"
+msgstr ""
+
+#: time-description.cc:106
+msgid "partial measure must be non-negative"
+msgstr ""
+
+#: time-description.cc:108
+msgid "partial measure too large"
+msgstr ""
+
+#: timing-translator.cc:32
+msgid "conflicting timing request"
+msgstr ""
+
+#: timing-translator.cc:64
+msgid "meter change not allowed here"
+msgstr ""
+
+#: timing-translator.cc:87
+msgid "barcheck failed by: %s"
+msgstr ""
+
+#: translator-ctors.cc:40
+msgid "unknown translator `%s'"
+msgstr ""
+
+#: translator-group.cc:149
+msgid "can't find or create `%s' called `%s'"
+msgstr ""
+
+#: translator-group.cc:263
+msgid "can't find or create `%s'"
+msgstr ""
+
+#: translator-group.cc:353
+msgid "can't find `%s'"
+msgstr ""
+
+#: word-wrap.cc:68
+msgid "ugh, this measure is too long"
+msgstr ""
+
+#: word-wrap.cc:69
+msgid "breakpoint: %d"
+msgstr ""
+
+#: word-wrap.cc:70
+msgid "generating stupido solution"
+msgstr ""
+
+#: word-wrap.cc:88
+msgid "I don't fit; put me on Montignac"
+msgstr ""
+
+#: parser.yy:300 parser.yy:303
+msgid "incorrect mudela version: %s (%s, %s)"
+msgstr ""
+
+#: parser.yy:477
+msgid "More than one music block"
+msgstr ""
+
+#: parser.yy:1047 parser.yy:1225 parser.yy:1252
+msgid "not a duration: %d"
+msgstr ""
+
+#: parser.yy:1049 parser.yy:1254
+msgid "can't abbreviate"
+msgstr ""
+
+#: parser.yy:1264
+msgid "have to be in Note mode for notes"
+msgstr ""
+
+#: parser.yy:1286
+msgid "have to be in Lyric mode for lyrics"
+msgstr ""
+
+#: lexer.ll:125
+msgid "EOF found inside a comment"
+msgstr ""
+
+#: lexer.ll:163
+msgid "undefined identifier: `%s'"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:168
+msgid "missing end quote"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:191 lexer.ll:195
+msgid "white expected"
+msgstr ""
+
+#: lexer.ll:342
+msgid "illegal character: `%c'"
+msgstr ""
+
+#: lexer.ll:392
+msgid "unknown escaped string: `\\%s'"
+msgstr ""
+
+#: out/BLURB.hh:2
+msgid ""
+"LilyPond is the GNU Project music typesetter. This program can print\n"
+"beautiful sheet music from a music definition file. It can also play\n"
+"mechanical performances to a MIDI file. Features include multiple\n"
+"staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,\n"
+"beams, slurs, triplets, formatting scores, part extraction. It includes\n"
+"a nice font of musical symbols.\n"
+msgstr ""
+
+#: out/COPERTINA.hh:2
+msgid ""
+"LilyPond \350 il tipografo musicale del progetto GNU. Questo programma \350\n"
+"fatto per stampare belle partiture da un documento definito per musica.\n"
+"Pu\362 anche suonare le prestazioni meccaniche ad un documento MIDI. Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione delle parte. \310 compresa una seria \n"
+"completa di caratteri musicali.\n"
+msgstr ""
+
+#: out/FLAPTEKST.hh:2
+msgid ""
+"LilyPond is de muziekzetter van het GNU Project. Dit programma drukt\n"
+"prachtige bladmuziek volgens een muzikaal definitie bestand. Ook kan\n"
+"het een mechanische uitvoering afspelen naar een MIDI bestand.\n"
+"Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en uittreksels voor individuele \n"
+"partijen. Een fraaie set muziektekens is inbegrepen.\n"
+msgstr ""
+
+#: main.cc:43
+msgid "Usage: %s [OPTION]... [FILE]"
+msgstr ""
+
+#: main.cc:45
+msgid "Translate midi-file to mudela"
+msgstr ""
+
+#: main.cc:51
+msgid " -b, --no-quantify write exact durations, e.g.: a4*385/384\n"
+msgstr ""
+
+#: main.cc:63
+msgid " -k, --key=ACC[:MINOR] set key: ACC +sharps/-flats; :1 minor\n"
+msgstr ""
+
+#: main.cc:66
+msgid " -n, --no-silly assume no plets or double dots, smallest is 32\n"
+msgstr ""
+
+#: main.cc:69
+msgid " -o, --output=FILE set FILE as default output\n"
+msgstr ""
+
+#: main.cc:72
+msgid " -p, --no-plets assume no plets\n"
+msgstr ""
+
+#: main.cc:75
+msgid " -q, --quiet be quiet\n"
+msgstr ""
+
+#: main.cc:81
+msgid " -s, --smallest=N assume no shorter (reciprocal) durations than N\n"
+msgstr ""
+
+#: main.cc:84
+msgid " -v, --verbose be verbose\n"
+msgstr ""
+
+#: main.cc:90
+msgid " -x, --no-double-dots assume no double dotted notes\n"
+msgstr ""
+
+#: main.cc:105
+msgid "Mi2mu, translate midi to mudela"
+msgstr ""
+
+#: midi-parser.cc:64
+msgid "zero length string encountered"
+msgstr ""
+
+#: midi-score-parser.cc:45
+msgid "MIDI header expected"
+msgstr ""
+
+#. is this signed?
+#: midi-score-parser.cc:50
+msgid "Invalid header length"
+msgstr ""
+
+#: midi-score-parser.cc:53
+msgid "Invalid midi format"
+msgstr ""
+
+#: midi-score-parser.cc:56
+msgid "Invalid number of tracks"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "can't handle %s"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "non-metrical time"
+msgstr ""
+
+#: midi-score-parser.cc:95
+msgid "Parsing...\n"
+msgstr ""
+
+#: midi-track-parser.cc:70
+msgid "junking note-end event: channel = %d, pitch = %d"
+msgstr ""
+
+#: midi-track-parser.cc:125
+msgid "invalid running status"
+msgstr ""
+
+#: midi-track-parser.cc:326
+msgid "unimplemented MIDI meta-event"
+msgstr ""
+
+#: midi-track-parser.cc:331
+msgid "invalid MIDI event"
+msgstr ""
+
+#: midi-track-parser.cc:346
+msgid "MIDI track expected"
+msgstr ""
+
+#: midi-track-parser.cc:351
+msgid "invalid track length"
+msgstr ""
+
+#. heu, -2: should be - 1 1/2: A -> fis
+#: mudela-item.cc:62
+msgid "%% \"%s\"; %% not supported yet"
+msgstr ""
+
+#: mudela-item.cc:107
+msgid "#32 in quarter: %d"
+msgstr ""
+
+#: mudela-score.cc:96
+msgid "ugh"
+msgstr ""
+
+#: mudela-score.cc:108
+msgid "Lily output to %s..."
+msgstr ""
+
+#: mudela-score.cc:118 mudela-score.cc:167
+msgid "track "
+msgstr ""
+
+#: mudela-score.cc:152
+msgid "Processing..."
+msgstr ""
+
+#: mudela-score.cc:163
+msgid "Creating voices..."
+msgstr ""
+
+#: mudela-score.cc:176
+msgid "NOT Filtering tempo..."
+msgstr ""
+
+#: mudela-score.cc:185
+msgid "NOT Quantifying columns..."
+msgstr ""
+
+#: mudela-score.cc:189
+msgid "Quantifying columns..."
+msgstr ""
+
+#. return;
+#: mudela-score.cc:224
+msgid "Settling columns..."
+msgstr ""
+
+#: mudela-staff.cc:100
+msgid "% midi copyright:"
+msgstr ""
+
+#: mudela-staff.cc:101
+msgid "% instrument:"
+msgstr ""
+
+#: mudela-stream.cc:36
+msgid "lily indent level: %d"
+msgstr ""
+
+#: mudela-stream.cc:88
+msgid "% from input file: "
+msgstr ""
+
+#: version.cc:12
+msgid "of"
+msgstr ""
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000000..85fb726c2d
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,905 @@
+msgid ""
+msgstr ""
+"Date: 1998-05-26 11:26:28+0200\n"
+"From: <janneke@gnu.org>\n"
+"Content-Type: text/plain; charset=\n"
+"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po --add-comments --keyword=_\n"
+"Files: bow.cc int.cc\n"
+
+#: data-file.cc:52
+msgid "EOF in a string"
+msgstr "EOF in een string"
+
+#: data-file.cc:121 input.cc:86 midi-parser.cc:100 warn.cc:21
+msgid "warning: "
+msgstr "waarschuwing: "
+
+#: dstream.cc:159
+msgid "Not enough fields in Dstream init."
+msgstr "Onvoldoende velden in Dstream init."
+
+#: flower-debug.cc:17
+msgid "Debug output disabled. Compiled with NPRINT."
+msgstr "Ontluis berichten zijn uitgeschakeld. Vertaald met NPRINT."
+
+#: lgetopt.cc:103
+msgid "option `%s' requires an argument"
+msgstr "optie `%s' vereist een argument"
+
+#: lgetopt.cc:107
+msgid "option `%s' doesn't allow an argument"
+msgstr "optie `%s' staat geen argument toe"
+
+#: lgetopt.cc:111
+msgid "unrecognized option: `%s'"
+msgstr "onbekende optie: `%s'"
+
+#: lgetopt.cc:117
+msgid "invalid argument `%s' to option `%s'"
+msgstr "onjuist argument: `%s' voor optie `%s'"
+
+#: text-stream.cc:8
+msgid "<stdin>"
+msgstr ""
+
+#: mapped-file-storage.cc:87 midi-stream.cc:77 mudela-stream.cc:102 parser.yy:1378 scores.cc:37 simple-file-storage.cc:44 tex-stream.cc:28 text-stream.cc:21
+msgid "can't open file: `%s'"
+msgstr "kan bestand niet openen: `%s'"
+
+#: input.cc:91 warn.cc:7 warn.cc:15
+msgid "error: "
+msgstr "fout: "
+
+#: input.cc:97
+msgid "Non fatal error: "
+msgstr "Niet noodlottige fout: "
+
+#: input.cc:105 source-file.cc:62 source-file.cc:155
+msgid "position unknown"
+msgstr "positie onbekend"
+
+#: mapped-file-storage.cc:65
+msgid "map_fd: "
+msgstr ""
+
+#: mapped-file-storage.cc:74
+msgid "can't map file"
+msgstr "kan bestand niet inkaarten"
+
+#: mapped-file-storage.cc:109
+msgid "vm_deallocate: "
+msgstr ""
+
+#: simple-file-storage.cc:56
+msgid "Huh? got %d, expected %d characters"
+msgstr "Huh? kreeg %d, verwachtte %d tekens"
+
+#: abbreviation-beam-engraver.cc:76 beam-grav.cc:90
+msgid "unterminated beam"
+msgstr "onafgesloten balk"
+
+#: afm.cc:114
+msgid "can't find character called `%s'"
+msgstr ""
+
+#: atom.cc:31
+msgid "ridiculous dimension: %s, %s"
+msgstr "belachelijke dimensie: %s, %s"
+
+#: beam-grav.cc:106
+msgid "Stem must have Rhythmic structure."
+msgstr ""
+
+#: beam-grav.cc:113
+msgid "stem doesn't fit in beam"
+msgstr "stok past niet in balk"
+
+#: beam-grav.cc:124
+msgid "please fix me"
+msgstr "repareer mij alsjeblieft"
+
+#: beam-grav.cc:125
+msgid "stem at %s doesn't fit in beam"
+msgstr "stok op %s past niet in balk"
+
+#: beam.cc:117
+msgid "beam with less than two stems"
+msgstr "balk met minder dan twee stokken"
+
+#. when all too short, normal stems win..
+#: beam.cc:562
+msgid "weird beam shift, check your knees"
+msgstr "vreemde balk verplaatsing, controleer uw knie-en"
+
+#: break.cc:25
+msgid "0 lines"
+msgstr "0 regels"
+
+#: break.cc:27
+msgid "1 line (of %.0f columns)"
+msgstr "1 regel (van %.0f kolommen)"
+
+#: break.cc:29
+msgid "%d lines (with an average of %.1f columns)"
+msgstr "%d regels (van gemiddeld %.1f kolommen)"
+
+#: break.cc:159
+msgid "score does not have any columns"
+msgstr "partituur heeft geen enkele kolom"
+
+#: break.cc:183
+msgid "approximated: %s"
+msgstr "geschat: %s"
+
+#: break.cc:185
+msgid "calculated exactly: %s"
+msgstr "exact berekend: %s"
+
+#: break.cc:186 score.cc:111
+msgid "time: %.2f seconds"
+msgstr "duur: %.2f seconden"
+
+#: change-iterator.cc:25
+msgid "can't change `%s' to `%s'"
+msgstr "kan `%s' niet in `%s' veranderen"
+
+#: clef-grav.cc:137
+msgid "unknown clef type "
+msgstr "onbekende sleutel"
+
+#: collision.cc:62
+msgid "No stem direction set. Ignoring column in clash."
+msgstr "Geen stokrichting gezet. Negeer kolom in botsing."
+
+#: collision.cc:75
+msgid "Too many clashing notecolumns. Ignoring them."
+msgstr "Te veel botsende nootkolommen. Ik negeer ze."
+
+#: command-request.cc:209
+msgid "don't know how handle empty keys"
+msgstr ""
+
+#: crescendo.cc:47
+msgid "crescendo"
+msgstr ""
+
+#: crescendo.cc:47 lookup.cc:338 lookup.cc:371 lookup.cc:389
+msgid "too small"
+msgstr "te klein"
+
+#: debug.cc:56
+msgid "Floating point exception"
+msgstr "Drijvende komma uitzondering"
+
+#: debug.cc:140
+msgid "can't set mem-checking"
+msgstr ""
+
+#: dimen.cc:31
+msgid "unknown length unit: `%s'"
+msgstr ""
+
+#: dimen.cc:40
+msgid "NaN"
+msgstr "NaN"
+
+#: dynamic-grav.cc:85 slur-grav.cc:72
+msgid "can't find both ends of %s"
+msgstr "kan uiteinden van %s niet beide vinden"
+
+#: dynamic-grav.cc:86
+msgid "cresc"
+msgstr ""
+
+#: dynamic-grav.cc:162
+msgid "unended crescendo"
+msgstr "niet beeindigd crescendo"
+
+#: identifier.cc:49
+msgid "Wrong identifier type: "
+msgstr ""
+
+#: identifier.cc:50
+msgid "%s expected"
+msgstr "%s verwacht"
+
+#: includable-lexer.cc:38 midi-score-parser.cc:24 scores.cc:108 scores.cc:113
+msgid "can't find file: `%s'"
+msgstr "kan bestand niet vinden: `%s'"
+
+#: ineq-constrained-qp.cc:167
+msgid "Ineq_constrained_qp::solve (): Constraint off by %f"
+msgstr "Ineq_constrained_qp::solve (): voorwaarde zit er %f naast"
+
+#: ineq-constrained-qp.cc:222
+msgid "didn't converge!"
+msgstr "ik convederde niet!"
+
+#: ineq-constrained-qp.cc:224
+msgid "Too much degeneracy. "
+msgstr ""
+
+#: key-grav.cc:109
+msgid "No key name: assuming `C'"
+msgstr ""
+
+#: local-key-grav.cc:34
+msgid "out of tune"
+msgstr "vals"
+
+#: local-key-grav.cc:34 meter-grav.cc:28
+msgid "can't find"
+msgstr "kan niet vinden"
+
+#: lookup.cc:337 lookup.cc:343
+msgid "piano brace"
+msgstr "piano accolade"
+
+#: lookup.cc:344 lookup.cc:395
+msgid "too big"
+msgstr "te groot"
+
+#: lookup.cc:370 lookup.cc:388 lookup.cc:394
+msgid "bracket"
+msgstr "haak"
+
+#: main.cc:65
+msgid "Usage: %s [OPTION]... [FILE]..."
+msgstr "Gebruik: %s [OPTIE]... [BESTAND]..."
+
+#: main.cc:66
+msgid "Typeset music and or play MIDI from FILE or <stdin>"
+msgstr "Zet muziek en of speel MIDI van FILE of <stdin>"
+
+#: main.cc:48 main.cc:69
+msgid "Options:"
+msgstr "Opties:"
+
+#: main.cc:72
+msgid " -a, --about about LilyPond\n"
+msgstr " -a, --about over LilyPond\n"
+
+#: main.cc:54 main.cc:75
+msgid " -D, --debug enable debugging output\n"
+msgstr " -D, --debug toon ontluis berichten\n"
+
+#: main.cc:78
+msgid " -d, --dependencies write Makefile dependencies for every input file\n"
+msgstr " -d, --dependencies schrijf Makefile afhankelijkheden voor elk\n"
+" invoerbestand\n"
+
+#: main.cc:60 main.cc:81
+msgid " -I, --include=DIR add DIR to search path\n"
+msgstr " -I, --include=INDEX voeg INDEX toe aan zoekpad\n"
+
+#: main.cc:84
+msgid " -i, --init=FILE use FILE as init file\n"
+msgstr " -i, --init=BESTAND gebruik BESTAND voor initialisatiebestand\n"
+
+#: main.cc:57 main.cc:87
+msgid " -h, --help this help\n"
+msgstr " -h, --help deze hulp\n"
+
+#: main.cc:90
+msgid " -M, --no-paper produce midi output only\n"
+msgstr " -M, --no-paper produceer alleen midi uitvoer\n"
+
+#: main.cc:93
+msgid " -o, --output=FILE set FILE as default output base\n"
+msgstr ""
+
+#: main.cc:96
+msgid " -Q, --find-fourths show all intervals greater than a fourth\n"
+msgstr " -Q, --find-fourths toon alle intervallen groter dan een kwart\n"
+
+#: main.cc:99
+msgid " -t, --test switch on experimental features\n"
+msgstr " -t, --test doe experimentele kunstjes\n"
+
+#: main.cc:78 main.cc:102
+msgid " -T, --no-timestamps don't timestamp the output\n"
+msgstr " -T, --no-timestamps zet geen tijdstempel in de uitvoer\n"
+
+#: main.cc:105
+msgid " -V, --ignore-version ignore mudela version\n"
+msgstr " -V, --ignore-version negeer mudela versie\n"
+
+#: main.cc:87 main.cc:108
+msgid " -w, --warranty show warranty and copyright\n"
+msgstr " -w, --warranty toon garantie en copyright\n"
+
+#: main.cc:111
+msgid "GNU LilyPond was compiled with the following settings:"
+msgstr "GNU LilyPond is vertaald met de volgende instellingen:"
+
+#: main.cc:139
+msgid "GNU LilyPond is Free software, see --warranty"
+msgstr "GNU LilyPond is Vrij bedenksel, zie --warranty"
+
+#: main.cc:107 main.cc:142 main.cc:155
+msgid "Copyright (c) %s by"
+msgstr "Copyright (c) %s "
+
+#: main.cc:109 main.cc:144 main.cc:157
+msgid "Han-Wen Nienhuys <hanwen@cs.uu.nl>"
+msgstr ""
+
+#: main.cc:110 main.cc:145 main.cc:158
+msgid "Jan Nieuwenhuizen <janneke@gnu.org>"
+msgstr ""
+
+#: main.cc:153
+msgid "GNU LilyPond -- The GNU Project music typesetter"
+msgstr "GNU LilyPond -- De Muziekzetter van het GNU Project"
+
+#: main.cc:113 main.cc:161
+msgid ""
+" This program is free software; you can redistribute it and/or\n"
+"modify it under the terms of the GNU General Public License version 2\n"
+"as published by the Free Software Foundation.\n"
+"\n"
+" This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+" You should have received a copy (refer to the file COPYING) of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+"USA.\n"
+msgstr ""
+" Dit programma is vrij bedenksel; u mag het verspreiden en/of\n"
+"veranderen onder de voorwaarden van de GNU Algemene Openbare Licentie\n"
+"versie 2, zoals gepubliceerd door de Free Software Foundation.\n"
+"\n"
+" Dit programma wordt verspreid in de hoop dat het nuttig zal zijn,\n"
+"maar ZONDER ENIGE GARANTIE; zelfs zonder de impliciete garantie voor\n"
+"het UITBATEN of als zijnde GESCHIKT VOOR EEN BEPAALD DOEL. Zie de GNU\n"
+"Algemene Openbare Licentie voor details.\n"
+"\n"
+" Als het goed is, heeft u bij dit programma een copie (zie het bestand\n"
+"COPYING) ontvangen van de GNU Algemene Openbare Licentie; zoniet, schrijf\n"
+"dan naar de Free Software Foundation, Inc., 675 Mass Ave, Cambridge, \n"
+"MA 02139, USA.\n"
+
+#: meter-grav.cc:28
+msgid "lost in time"
+msgstr "hoe laat is het"
+
+#: midi-item.cc:364
+msgid "unconventional key: flats: %d, sharps: %d"
+msgstr "vreemde toonsoort: %d mollen, %d kruizen"
+
+#: midi-item.cc:410
+msgid "silly duration"
+msgstr ""
+
+#: midi-item.cc:424
+msgid "silly pitch"
+msgstr ""
+
+#: midi-stream.cc:29 tex-stream.cc:58
+msgid "error syncing file (disk full?)"
+msgstr "kan file niet wegschrijven (disk vol?)"
+
+#: musical-pitch.cc:145
+msgid "Interval greater than quart, relative: %s"
+msgstr "Interval groter dan kwart, relatief: %s"
+
+#: musical-request.cc:93
+msgid "transposition by %s makes accidental larger than two"
+msgstr "transpositie van %s geeft tripel kruizen/mollen "
+
+#: musical-request.cc:439
+msgid "never heard of dynamic scale `\\%s', assuming %s"
+msgstr "zo hard kan ik niet `\\%s', ik doe gewoon %s"
+
+#: my-lily-lexer.cc:120
+msgid "redeclaration of `\\%s'"
+msgstr "`\\%s' wordt opnieuw gedeclareerd"
+
+#: my-lily-lexer.cc:149
+msgid "error at EOF: %s"
+msgstr "fout aan het einde van file: %s"
+
+#: my-lily-parser.cc:62
+msgid "Parsing..."
+msgstr "Ontleden..."
+
+#: my-lily-parser.cc:71
+msgid "braces don't match"
+msgstr "haakjes passen niet"
+
+#: p-score.cc:178
+msgid "Can't solve this casting problem exactly; revert to Word_wrap"
+msgstr "Kan breekprobleem niet exact oplossen; verval naar Word_wrap"
+
+#: p-score.cc:197
+msgid "Preprocessing elements..."
+msgstr "Voorbewerken van elementen..."
+
+#: p-score.cc:201
+msgid "Calculating column positions..."
+msgstr "Berekenen van kolomposities..."
+
+#: p-score.cc:205
+msgid "Postprocessing elements..."
+msgstr "Nabewerken van elementen..."
+
+#: p-score.cc:231
+msgid "TeX output to %s..."
+msgstr "TeX uitvoer naar %s..."
+
+#: p-score.cc:245
+msgid "% outputting Score, defined at: "
+msgstr ""
+
+#: paper-def.cc:61
+msgid "unknown paper variable: `%s'"
+msgstr "onbekende \\paper variabele"
+
+#: paper-def.cc:65
+msgid "not a real variable"
+msgstr "variabele is geen reeal getal"
+
+#. perhaps multiple text events?
+#: performance.cc:54
+msgid "Creator: "
+msgstr "Schepper: "
+
+#: performance.cc:63
+msgid "Automatically generated"
+msgstr "Automatisch gegenerederd"
+
+#: mudela-stream.cc:84 performance.cc:68 tex-stream.cc:47
+msgid ", at "
+msgstr ", bij "
+
+#: performance.cc:76
+msgid "from musical definition: %s"
+msgstr "van muzikale definitie: %s"
+
+#: performance.cc:141
+msgid "MIDI output to %s..."
+msgstr "MIDI uitvoer naar %s..."
+
+#: plet-engraver.cc:83
+msgid "unterminated plet"
+msgstr "onsterfelijke -ool"
+
+#: plet-spanner.cc:85
+msgid "lonely plet"
+msgstr "eenzame -ool"
+
+#: qlpsolve.cc:88 qlpsolve.cc:139
+msgid "degenerate constraints"
+msgstr "voorwaarde is gedegenerederd"
+
+#: request-iterator.cc:68
+msgid "junking request: `%s'"
+msgstr "schroot verzoek: `%s'"
+
+#: score-column.cc:55
+msgid "ignoring zero duration added to column at %s"
+msgstr ""
+
+#: score-grav.cc:145
+msgid "Unbound spanner `%s'"
+msgstr "Vrijgezelle spanner `%s'"
+
+#: score.cc:57
+msgid "no toplevel translator"
+msgstr ""
+
+#: score.cc:60
+msgid "Interpreting music..."
+msgstr "Vertolken van muziek..."
+
+#: score.cc:70
+msgid "need music in a score"
+msgstr "zonder muziek geen partituur"
+
+#. should we? hampers debugging.
+#: score.cc:106
+msgid "errors found, /*not processing score*/"
+msgstr ""
+
+#: scores.cc:34
+msgid "writing dependency file: `%s'..."
+msgstr ""
+
+#: scores.cc:78
+msgid "score contains errors; will not process it"
+msgstr ""
+
+#: script.cc:60
+msgid "script needs stem direction"
+msgstr "schrift benodigt stokrichting"
+
+#: slur-grav.cc:49
+msgid "unterminated slur"
+msgstr "onsterfelijke boog"
+
+#: slur-grav.cc:72
+msgid "slur"
+msgstr ""
+
+#: spanner.cc:44
+msgid "left spanpoint is right spanpoint\n"
+msgstr ""
+
+#: spanner.cc:101
+msgid "Spanner `%s' with equal left and right spanpoints"
+msgstr ""
+
+#: spring-spacer.cc:82
+msgid "unconnected column: %d"
+msgstr ""
+
+#: spring-spacer.cc:186
+msgid "I'm too fat; call Oprah"
+msgstr ""
+
+#: spring-spacer.cc:344
+msgid "solution doesn't satisfy constraints"
+msgstr ""
+
+#: spring-spacer.cc:623
+msgid "can't find a ruling note at %s"
+msgstr ""
+
+#: spring-spacer.cc:629
+msgid "no minimum in measure at %s"
+msgstr ""
+
+#: staff-side.cc:61
+msgid "Staff_side::get_position_f(): somebody forgot to set my direction, returning -20"
+msgstr ""
+
+#: stem.cc:102
+msgid "weird stem size; check for narrow beams"
+msgstr "vreemde stoklengte; controleer op krappe balken"
+
+#: symtable.cc:50
+msgid "Symtable `%s': unknown symbol: `%s'"
+msgstr ""
+
+#: symtable.cc:61
+msgid "Symtable `%s' unknown"
+msgstr ""
+
+#: mudela-stream.cc:74 tex-stream.cc:37
+msgid "% Creator: "
+msgstr ""
+
+#: mudela-stream.cc:79 tex-stream.cc:42
+msgid "% Automatically generated"
+msgstr ""
+
+#: text-item.cc:47
+msgid "Text_item::get_position_f(): somebody forgot to set my vertical direction, returning -20"
+msgstr ""
+
+#: tie-grav.cc:114 tie.cc:50
+msgid "lonely tie"
+msgstr ""
+
+#: ties-grav.cc:82
+msgid "Can't find a note head at the right to attach Tie"
+msgstr ""
+
+#: time-description.cc:17
+msgid "cadenza"
+msgstr "cadens"
+
+#: time-description.cc:106
+msgid "partial measure must be non-negative"
+msgstr ""
+
+#: time-description.cc:108
+msgid "partial measure too large"
+msgstr ""
+
+#: timing-translator.cc:32
+msgid "conflicting timing request"
+msgstr ""
+
+#: timing-translator.cc:64
+msgid "meter change not allowed here"
+msgstr "maatwisseling is hier niet geoorloofd"
+
+#: timing-translator.cc:87
+msgid "barcheck failed by: %s"
+msgstr "misplaatste maatstreep: %s"
+
+#: translator-ctors.cc:40
+msgid "unknown translator `%s'"
+msgstr ""
+
+#: translator-group.cc:149
+msgid "can't find or create `%s' called `%s'"
+msgstr ""
+
+#: translator-group.cc:263
+msgid "can't find or create `%s'"
+msgstr ""
+
+#: translator-group.cc:353
+msgid "can't find `%s'"
+msgstr "kan niet vinden `%s'"
+
+#: word-wrap.cc:68
+msgid "ugh, this measure is too long"
+msgstr "ugh, deze maat is te lang"
+
+#: word-wrap.cc:69
+msgid "breakpoint: %d"
+msgstr ""
+
+#: word-wrap.cc:70
+msgid "generating stupido solution"
+msgstr ""
+
+#: word-wrap.cc:88
+msgid "I don't fit; put me on Montignac"
+msgstr "Ik ben te dik."
+
+#: parser.yy:300 parser.yy:303
+msgid "incorrect mudela version: %s (%s, %s)"
+msgstr "verkeerde mudela versie: %s (%s, %s)"
+
+#: parser.yy:477
+msgid "More than one music block"
+msgstr ""
+
+#: parser.yy:1047 parser.yy:1225 parser.yy:1252
+msgid "not a duration: %d"
+msgstr "is geen duur: %d"
+
+#: parser.yy:1049 parser.yy:1254
+msgid "can't abbreviate"
+msgstr ""
+
+#: parser.yy:1264
+msgid "have to be in Note mode for notes"
+msgstr ""
+
+#: parser.yy:1286
+msgid "have to be in Lyric mode for lyrics"
+msgstr ""
+
+#: lexer.ll:125
+msgid "EOF found inside a comment"
+msgstr ""
+
+#: lexer.ll:163
+msgid "undefined identifier: `%s'"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:168
+msgid "missing end quote"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:191 lexer.ll:195
+msgid "white expected"
+msgstr ""
+
+#: lexer.ll:342
+msgid "illegal character: `%c'"
+msgstr ""
+
+#: lexer.ll:392
+msgid "unknown escaped string: `\\%s'"
+msgstr ""
+
+#: out/BLURB.hh:2
+msgid ""
+"LilyPond is the GNU Project music typesetter. This program can print\n"
+"beautiful sheet music from a music definition file. It can also play\n"
+"mechanical performances to a MIDI file. Features include multiple\n"
+"staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,\n"
+"beams, slurs, triplets, formatting scores, part extraction. It includes\n"
+"a nice font of musical symbols.\n"
+msgstr ""
+"LilyPond is de muziekzetter van het GNU Project. Dit programma drukt\n"
+"prachtige bladmuziek volgens een muzikaal definitie bestand. Ook kan\n"
+"het een mechanische uitvoering afspelen naar een MIDI bestand.\n"
+"Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en losse partijen. Een fraaie set\n"
+"muziektekens is inbegrepen.\n"
+
+#: out/COPERTINA.hh:2
+msgid ""
+"LilyPond \350 il tipografo musicale del progetto GNU. Questo programma \350\n"
+"fatto per stampare belle partiture da un documento definito per musica.\n"
+"Pu\362 anche suonare le prestazioni meccaniche ad un documento MIDI. Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione delle parte. \310 compresa una seria \n"
+"completa di caratteri musicali.\n"
+msgstr ""
+
+#: out/FLAPTEKST.hh:2
+msgid ""
+"LilyPond is de muziekzetter van het GNU Project. Dit programma drukt\n"
+"prachtige bladmuziek volgens een muzikaal definitie bestand. Ook kan\n"
+"het een mechanische uitvoering afspelen naar een MIDI bestand.\n"
+"Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en uittreksels voor individuele \n"
+"partijen. Een fraaie set muziektekens is inbegrepen.\n"
+msgstr ""
+
+#: main.cc:43
+msgid "Usage: %s [OPTION]... [FILE]"
+msgstr ""
+
+#: main.cc:45
+msgid "Translate midi-file to mudela"
+msgstr ""
+
+#: main.cc:51
+msgid " -b, --no-quantify write exact durations, e.g.: a4*385/384\n"
+msgstr ""
+
+#: main.cc:63
+msgid " -k, --key=ACC[:MINOR] set key: ACC +sharps/-flats; :1 minor\n"
+msgstr ""
+
+#: main.cc:66
+msgid " -n, --no-silly assume no plets or double dots, smallest is 32\n"
+msgstr ""
+
+#: main.cc:69
+msgid " -o, --output=FILE set FILE as default output\n"
+msgstr " -o, --output=BESTAND zet BESTAND als verval uitvoer\n"
+
+#: main.cc:72
+msgid " -p, --no-plets assume no plets\n"
+msgstr ""
+
+#: main.cc:75
+msgid " -q, --quiet be quiet\n"
+msgstr ""
+
+#: main.cc:81
+msgid " -s, --smallest=N assume no shorter (reciprocal) durations than N\n"
+msgstr ""
+
+#: main.cc:84
+msgid " -v, --verbose be verbose\n"
+msgstr ""
+
+#: main.cc:90
+msgid " -x, --no-double-dots assume no double dotted notes\n"
+msgstr ""
+
+#: main.cc:105
+msgid "Mi2mu, translate midi to mudela"
+msgstr ""
+
+#: midi-parser.cc:64
+msgid "zero length string encountered"
+msgstr ""
+
+#: midi-score-parser.cc:45
+msgid "MIDI header expected"
+msgstr ""
+
+#. is this signed?
+#: midi-score-parser.cc:50
+msgid "Invalid header length"
+msgstr ""
+
+#: midi-score-parser.cc:53
+msgid "Invalid midi format"
+msgstr ""
+
+#: midi-score-parser.cc:56
+msgid "Invalid number of tracks"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "can't handle %s"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "non-metrical time"
+msgstr ""
+
+#: midi-score-parser.cc:95
+msgid "Parsing...\n"
+msgstr ""
+
+#: midi-track-parser.cc:70
+msgid "junking note-end event: channel = %d, pitch = %d"
+msgstr ""
+
+#: midi-track-parser.cc:125
+msgid "invalid running status"
+msgstr ""
+
+#: midi-track-parser.cc:326
+msgid "unimplemented MIDI meta-event"
+msgstr ""
+
+#: midi-track-parser.cc:331
+msgid "invalid MIDI event"
+msgstr ""
+
+#: midi-track-parser.cc:346
+msgid "MIDI track expected"
+msgstr ""
+
+#: midi-track-parser.cc:351
+msgid "invalid track length"
+msgstr ""
+
+#. heu, -2: should be - 1 1/2: A -> fis
+#: mudela-item.cc:62
+msgid "%% \"%s\"; %% not supported yet"
+msgstr ""
+
+#: mudela-item.cc:107
+msgid "#32 in quarter: %d"
+msgstr ""
+
+#: mudela-score.cc:96
+msgid "ugh"
+msgstr ""
+
+#: mudela-score.cc:108
+msgid "Lily output to %s..."
+msgstr ""
+
+#: mudela-score.cc:118 mudela-score.cc:167
+msgid "track "
+msgstr ""
+
+#: mudela-score.cc:152
+msgid "Processing..."
+msgstr ""
+
+#: mudela-score.cc:163
+msgid "Creating voices..."
+msgstr ""
+
+#: mudela-score.cc:176
+msgid "NOT Filtering tempo..."
+msgstr ""
+
+#: mudela-score.cc:185
+msgid "NOT Quantifying columns..."
+msgstr ""
+
+#: mudela-score.cc:189
+msgid "Quantifying columns..."
+msgstr ""
+
+#. return;
+#: mudela-score.cc:224
+msgid "Settling columns..."
+msgstr ""
+
+#: mudela-staff.cc:100
+msgid "% midi copyright:"
+msgstr ""
+
+#: mudela-staff.cc:101
+msgid "% instrument:"
+msgstr ""
+
+#: mudela-stream.cc:36
+msgid "lily indent level: %d"
+msgstr ""
+
+#: mudela-stream.cc:88
+msgid "% from input file: "
+msgstr ""
+
+#: version.cc:12
+msgid "of"
+msgstr "van"
diff --git a/scripts/Makefile b/scripts/Makefile
new file mode 100644
index 0000000000..17ce13c80c
--- /dev/null
+++ b/scripts/Makefile
@@ -0,0 +1,15 @@
+# bin/Makefile
+
+depth = ..
+
+include $(depth)/make/Stepmake.make
+
+
+include $(stepdir)/Scripts.make
+
+# want release, make-patch too!
+SEXECUTABLES=convert-mudela mudela-book ly2dvi
+
+include $(stepdir)/Executable.make
+
+
diff --git a/scripts/convert-mudela.py b/scripts/convert-mudela.py
new file mode 100644
index 0000000000..4872dd69f9
--- /dev/null
+++ b/scripts/convert-mudela.py
@@ -0,0 +1,264 @@
+#!@PYTHON@
+
+# convert-mudela.py -- convertor for mudela versions
+#
+# source file of the GNU LilyPond music typesetter
+#
+# (c) 1998
+
+# TODO
+# use -f and -t for -s output
+
+# NEWS
+# 0.2
+# - rewrite in python
+
+program_name = 'convert-mudela'
+version = '0.2'
+
+
+
+import os
+import sys
+import __main__
+import getopt
+from string import *
+import regex
+import regsub
+import time
+mudela_version_re_str ='\\\\version *\"\(.*\)\"'
+mudela_version_re = regex.compile(mudela_version_re_str)
+
+def program_id ():
+ return '%s version %s' %(program_name, version);
+
+def identify ():
+ sys.stdout.write (program_id () + '\n')
+
+def gulp_file(f):
+ try:
+ i = open(f)
+ i.seek (0, 2)
+ n = i.tell ()
+ i.seek (0,0)
+ except:
+ print 'can\'t open file: ' + f + '\n'
+ return ''
+ s = i.read (n)
+ if len (s) <= 0:
+ print 'gulped empty file: ' + f + '\n'
+ i.close ()
+ return s
+
+
+def str_to_tuple (s):
+ return tuple (map (atoi, split (s,'.')))
+
+def tup_to_str (t):
+ return join (map (lambda x: '%s' % x, list (t)), '.')
+
+def version_cmp (t1, t2):
+ for x in [0,1,2]:
+ if t1[x] - t2[x]:
+ return t1[x] - t2[x]
+ return 0
+
+
+def guess_mudela_version(filename):
+ s = gulp_file (filename)
+ if mudela_version_re.search(s) <> -1:
+ return mudela_version_re.group(1)
+ else:
+ return ''
+
+def help ():
+ sys.stdout.write (
+ ("Usage: %s [OPTION]... [FILE]...\n"
+ + "Try to convert to newer mudela-versions\n"
+ + "Options:\n"
+ + " -h, --help print this help\n"
+ + ' -e, --edit in place edit\n'
+ + ' -f, --from=VERSION start from version\n'
+ + ' -s, --show-rules print out all rules.\n'
+ + ' -t, --to=VERSION target version\n') % program_name)
+ sys.exit (0)
+
+class FatalConversionError:
+ pass
+
+conversions = []
+
+def show_rules (file):
+ for x in conversions:
+ file.write ('%s: %s\n' % (tup_to_str (x[0]), x[2]))
+
+############################
+
+if 1: # need new a namespace
+ def conv (lines):
+ found =0
+ for x in lines:
+ if regex.search ('\\\\octave', x) <> -1:
+ found = 1
+ break
+ if found:
+ sys.stderr.write ('\nNot smart enough to convert \\octave\n')
+ raise FatalConversionError()
+ return lines
+
+
+ conversions.append (
+ ((0,1,19), conv, 'deprecated \\octave; can\'t convert automatically'))
+
+
+if 1: # need new a namespace
+ def conv (lines):
+ newlines = []
+ for x in lines:
+ x = regsub.gsub ('\\\\textstyle\\([^;]+\\);',
+ '\\\\property Lyrics . textstyle = \\1', x)
+ x = regsub.gsub ('\\\\key\\([^;]+\\);', '\\\\accidentals \\1;', x)
+ newlines.append (x)
+ return newlines
+
+
+ conversions.append (
+ ((0,1,20), conv, 'deprecated \\textstyle, new \key syntax'))
+
+
+if 1: # need new a namespace
+ def conv (lines):
+ newlines = []
+ for x in lines:
+ x = regsub.gsub ('\\\\musical_pitch',
+ '\\\\musicalpitch',x)
+ x = regsub.gsub ('\\\\meter',
+ '\\\\time',x)
+ newlines.append (x)
+ return newlines
+
+
+ conversions.append (
+ ((0,1,21), conv, '\\musical_pitch -> \\musicalpitch, '+
+ '\\meter -> \\time\n'))
+
+if 1: # need new a namespace
+ def conv (lines):
+ return lines
+
+ conversions.append (
+ ((1,0,0), conv, '0.1.21 -> 1.0.0 '))
+
+
+
+############################
+
+def get_conversions (from_version, to_version):
+ def version_b (v, f = from_version, t = to_version):
+ return version_cmp (v[0], f) > 0 and version_cmp (v[0], t) <= 0
+ return filter (version_b, conversions)
+
+
+def latest_version ():
+ return conversions[-1][0]
+
+def do_conversion (infile, from_version, outfile, to_version):
+
+ conv_list = get_conversions (from_version, to_version)
+
+ sys.stderr.write ('Applying conversions: ')
+ lines = infile.readlines();
+ last_conversion = ()
+ try:
+ for x in conv_list:
+ sys.stderr.write (tup_to_str (x[0]) + ', ')
+ lines = x[1] (lines)
+ last_conversion = x[0]
+
+ sys.stderr.write ('\n')
+
+ except FatalConversionError:
+ sys.stderr.write ('Error while converting; I won\'t convert any further')
+
+ for x in lines:
+ if last_conversion:
+ x = regsub.sub (mudela_version_re_str, '\\version \"%s\"' % tup_to_str (last_conversion), x)
+ outfile.write(x)
+
+class UnknownVersion:
+ pass
+
+def do_one_file (infile_name):
+ outfile_name = ''
+ if __main__.edit:
+ outfile_name = infile_name + '.NEW'
+ elif __main__.outfile_name:
+ outfile_name = __main__.outfile_name
+
+ if __main__.from_version:
+ from_version = __main__.from_version
+ else:
+ guess = guess_mudela_version (infile_name)
+ if not guess:
+ raise UnknownVersion()
+ from_version = str_to_tuple (guess)
+
+ if __main__.to_version:
+ to_version = __main__.to_version
+ else:
+ to_version = latest_version ()
+
+
+ if infile_name:
+ infile = open (infile_name,'r')
+ else:
+ infile = sys.stdin
+
+ if outfile_name:
+ outfile = open (outfile_name, 'w')
+ else:
+ outfile = sys.stdout
+
+
+ do_conversion (infile, from_version, outfile, to_version)
+
+ if __main__.edit:
+ os.rename (infile_name, infile_name + '~')
+ os.rename (infile_name + '.NEW', infile_name)
+
+
+edit = 0
+to_version = ()
+from_version = ()
+outfile_name = ''
+
+identify ()
+(options, files) = getopt.getopt (
+ sys.argv[1:], 'f:t:seh', ['show-rules', 'help', 'edit', 'from', 'to'])
+
+for opt in options:
+ o = opt[0]
+ a = opt[1]
+ if o== '--help' or o == '-h':
+ help ()
+ elif o== '--from' or o=='-f':
+ from_version = str_to_tuple (a)
+ elif o== '--to' or o=='-t':
+ to_version = str_to_tuple (a)
+ elif o== '--edit' or o == '-e':
+ edit = 1
+ elif o== '--show-rules' or o == '-s':
+ show_rules (sys.stdout)
+ sys.exit(0)
+ else:
+ print o
+ raise getopt.error
+
+
+for f in files:
+ if f == '-':
+ f = ''
+ try:
+ do_one_file (f)
+ except UnknownVersion:
+ pass
diff --git a/bin/ly2dvi.sh b/scripts/ly2dvi.sh
index 447f29e371..07226c8932 100755..100644
--- a/bin/ly2dvi.sh
+++ b/scripts/ly2dvi.sh
@@ -10,7 +10,7 @@
# Original LaTeX file made by Mats Bengtsson, 17/8 1997
#
-VERSION="0.11.hwn1"
+VERSION="0.12"
NAME=ly2dvi.sh
IDENTIFICATION="$NAME $VERSION"
NOW=`date`
@@ -21,6 +21,29 @@ echo "$IDENTIFICATION" 1>&2
# NEWS
+# 0.12
+# - -S/--sourcedir switch
+#
+
+#
+#0.11.jcn3
+# - mudelaDefs fixes, (thanks PC)
+#0.11.jcn2
+# - pass -I, --include to Lily
+# - bf: split $LILYINCLUDE and try all dirs
+# - bf: geometry left/top
+#
+#0.11.pc
+# - fix backslash gobbling, reduce number of separate processes used
+# - require readable rc files, allow rc file in /usr/local/share/lilypond/lilyrc
+# - use latex path, not tex path
+# - Don't override if kpsepath returns non-NULL
+# - Don't clobber x.tex if it wasn't created by ly2dvi
+#
+#
+#0.11.jcn1
+# - find .fly files too
+#
#0.11.hwn1
# - height vs heigth
# - robustification: give \nonstopmode as LaTeX arg; no hanging if no TeX file.
@@ -188,18 +211,20 @@ cleanup() {
done
fi
}
+
#
# print usage
#
help() {
cat << EOF
Generate dvi file from mudela or lilypond output
-Usage: $0 [options] file[s]
+Usage: $0 [OPTION]... [FILE]...
Options:
- -D,--debug set debug mode
+ -D,--debug increase verbosity
-F,--headers= name of additional LaTeX headers file
-H,--Height= set paper height (points) (see manual page)
+ -I,--include=DIR add DIR to search path of LilyPond
-K,--keeplilypond keep lilypond output files
-L,--landscape set landscape orientation
-N,--nonumber switch off page numbering
@@ -212,29 +237,23 @@ Options:
-o,--output= set output directory
-p,--papersize= give LaTeX papersize (eg. a4)
-s,--separate run all files separately through LaTeX
+ -S,--sourcedir set sourcedir
files may be (a mix of) input to or output from lilypond(1)
EOF
}
+
+
#
-# Trap function (cleanup)
-#
-trap cleanup 0 9 15
-#
-# Various defaults
+# SVr4 echo swallows backslashes, and there's no way to turn it off.
+# Therefore use Echo whenever backslashes may be important.
+# printf is in the posix.2 standard -- which means it's in
+# all modern shells.
#
-[ -z "$TMP" ] && TMP=/tmp
-if [ ! -d $TMP ]
-then
- $debug_echo $IDENTIFICATION": temporary directory "$TMP" not found, set to /tmp"
- TMP=/tmp
-fi
-LOGFILE=$TMP/lilylog.$$ # Logfile for lilypond
-PAPERSIZE=a4 # Default papersize name
-PWIDTH=597 # Default paperwidth
-PHEIGHT=845 # Default paperheight
-PNUM="%" # Page numbering on
-LILYOPTS="" # Options to lilypond
+Echo() {
+ printf "%s\n" "$@"
+}
+
#
setPaperZize() {
case "$PAPERSIZE" in
@@ -374,44 +393,75 @@ case "$PAPERSIZE" in
;;
esac
}
+
+doRcFiles()
+{
#
# RC-files ?
#
-for D in /usr/local/share/ /etc/ $HOME/. ./.
+for D in /usr/local/share/ /usr/local/share/lilypond/ /etc/ $HOME/. ./.
do
RCfile=$D"lilyrc"
- [ -f $RCfile ] && . $RCfile
+ [ -r $RCfile ] && . $RCfile
done
fORI=$ORIENTATION
fLNG=$LANGUAGE
fPSZ=$PAPERSIZE
fLHF=$LATEXHF
unset ORIENTATION LANGUAGE PAPERSIZE LATEXHF
-#
-# Keywords defined in titledefs.tex
+}
+
+
+
+#
+# Trap function (cleanup)
+#
+
+
+
+trap cleanup 0 9 15
+
+
+
+#
+# Various defaults
#
-TF=`kpsewhich -n tex tex titledefs.tex`
-if [ -n $TF ]
+[ -z "$TMP" ] && TMP=/tmp
+if [ ! -d $TMP ]
then
- TF=/usr/lib/texmf/tex/lilypond/titledefs.tex
+ $debug_echo $IDENTIFICATION": temporary directory "$TMP" not found, set to /tmp"
+ TMP=/tmp
fi
+LOGFILE=$TMP/lilylog.$$ # Logfile for lilypond
+PAPERSIZE=a4 # Default papersize name
+PWIDTH=597 # Default paperwidth
+PHEIGHT=845 # Default paperheight
+PNUM="%" # Page numbering on
+LILYOPTS="" # Options to lilypond
+SOURCEDIR=""
+LILYPOND_EXECUTABLE=lilypond
+doRcFiles
+
+
+
+# Keywords defined in titledefs.tex
+#
+TF="`kpsewhich -n latex tex titledefs.tex`"
MU_DEF=""
-if [ -f $TF ]
+if [ -r "${TF:=/usr/local/share/texmf/tex/lilypond/titledefs.tex}" ]
then
- MU_DEF=`egrep "^.newcommand...mudela" $TF | \\
- sed -e 's/^.newcommand...//' -e 's/\\}.*$//'`
+ MU_DEF=`sed -n -e 's/.*newcommand\*{.\(mudela[^}]*\)}.*$/\1/p' "$TF"`
fi
-if [ -z "$MU_DEF" ]
-then
- MU_DEF="mudelatitle mudelasubtitle mudelacomposer \
- mudelaopus mudelaarranger mudelapiece mudelainstrument"
-fi
+: "${MU_DEF:=mudelatitle mudelasubtitle mudelacomposer \
+ mudelameter mudelaopus mudelaarranger mudelapiece \
+ mudelapoet mudelainstrument \
+ }"
#
# debugging
#
-debug_echo=true
+debug_echo=:
#
# All files in one LaTeX run
#
@@ -421,7 +471,7 @@ SEPFILE=N
#
# "x:" x takes argument
#
-switches="DF:H:KLNO:W:dhkl:o:p:s\?"
+switches="DF:H:I:KLNO:W:dhkl:o:p:S:s\?"
options=""
#
# ugh, "\-" is a hack to support long options
@@ -442,6 +492,10 @@ do
H )
PHEIGHT=$OPTARG
;;
+ I )
+ LILYOPTS="$LILYOPTS -I $OPTARG"
+ LILYINCLUDE="$LILYINCLUDE:$OPTARG"
+ ;;
K )
KEEP_LILY_OUTPUT=Y
;;
@@ -479,6 +533,9 @@ do
s )
SEPFILE=Y
;;
+ S )
+ SOURCEDIR=$OPTARG
+ ;;
\? )
help;
exit -1
@@ -488,25 +545,30 @@ do
$debug_echo "long option: \`$OPTARG'"
case "$OPTARG" in
He*|-He*)
- PHEIGHT=`echo $OPTARG | sed -e s/"^.*="//`
+ PHEIGHT"`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"=
;;
W*|-W*)
- PWIDTH=`echo $OPTARG | sed -e s/"^.*="//`
+ PWIDTH="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
;;
dep*|-dep*)
- LILYOPTS=$LILYOPTS" -d"
+ LILYOPTS="$LILYOPTS -d"
;;
d*|-d*)
[ $debug_echo = echo ] && set -x
debug_echo=echo
;;
hea*|-hea*)
- LATEXHF=`echo $OPTARG | sed -e s/"^.*="//`
+ LATEXHF="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
;;
h*|-h*)
help;
exit 0
;;
+ i*|-i*)
+ dir="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
+ LILYOPTS="$LILYOPTS --include=$dir"
+ LILYINCLUDE="$LILYINCLUDE:$dir"
+ ;;
keepli*|-keepli*)
KEEP_LILY_OUTPUT=Y
;;
@@ -517,25 +579,28 @@ do
ORIENTATION=landscape
;;
lang*|-lang*)
- LANGUAGE=`echo $OPTARG | sed -e s/"^.*="//`
+ LANGUAGE="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
;;
n*|-n*)
PNUM="\pagestyle{empty}"
;;
or*|-or*)
- ORIENTATION=`echo $OPTARG | sed -e s/"^.*="//`
+ ORIENTATION="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
;;
ou*|-ou*)
- OUTPUTDIR=`echo $OPTARG | sed -e s/"^.*="//`
+ OUTPUTDIR="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
;;
p*|-p*)
- PAPERSIZE=`echo $OPTARG | sed -e s/"^.*="//`
+ PAPERSIZE="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
;;
- s*|-s*)
+ separa*|-sep*)
SEPFILE=Y
;;
+ sourcedir*|-sourcedir*)
+ SOURCEDIR=$OPTARG
+ ;;
*|-*)
- echo $0": illegal option -- "$OPTARG;
+ echo "$0: illegal option -- \"$OPTARG\""
help;
exit -1
;;
@@ -543,15 +608,32 @@ do
esac
done
shift `expr $OPTIND - 1`
+
+if [ "$SOURCEDIR" != "" ]; then
+# apparently MakeTeXTFM can't handle relative dirs
+ SOURCEDIR=`cd $SOURCEDIR; pwd`
+ export LILYINCLUDE="$SOURCEDIR/init:$SOURCEDIR/mf/out:$LILYINCLUDE"
+ export TEXINPUTS="$SOURCEDIR/tex:$TEXINPUTS:"
+ export MFINPUTS="$SOURCEDIR/mf:$MFINPUTS:"
+ export LILYPOND_EXECUTABLE="$SOURCEDIR/lily/out/lilypond"
+
+ set|grep MF
+ set|grep TEXIN
+fi
+
#
# Input file name
#
if [ "$1" = "" ]
then
help
- $debug_echo $IDENTIFICATION": No input file name given"
+ $debug_echo "$IDENTIFICATION: No input file name given"
exit 1
fi
+# regexp_quote -- quote a string as a regular expression for egrep or sed
+regexp_quote(){
+ Echo "$@" | sed 's/\([]\[\.*?+^$]\)/\\\1/g'
+}
#
#
mudelaDefs(){
@@ -559,36 +641,28 @@ mudelaDefs(){
#
for L in $MU_DEF
do
- SS=$1
- # LL=`egrep '^\\\\def.'$L'{' $OF`
- LL=`egrep '^\\\\def.'$L'{' $File`
- if [ "$LL" = "" ]
- then
- LL=`egrep '^\\\\def.'$L'{' $OF`
- fi
- if [ "$LL" != "" ]
- then
- ##{
- LLL=`echo $LL | sed -e 's/}.*$//' -e 's/.*{//'`
- ##}{
- if [ "$LLL" != "" ]
- then
- echo "$SS\\"$L'{'$LLL'}%' >> $LatF
- fi
- fi
+ for F in "$File" "$OF"
+ do
+ LL=`sed -n 's/\\\\def\\\\'"$L"'{\([^}]*\)}.*$/\1/p' "$F"`
+ [ "$LL" ] && {
+ Echo "$1\\"$L'{'"$LL"'}%' >> $LatF
+ break
+ }
+ done
done
}
+#
startFile(){
#
# LaTeX file name
#
-BN=`basename $File .tex`
-FN=$BN.$$
+BN=`basename "$File" .tex`
+FN="$BN.$$"
if [ "$KEEP_LY2DVI_OUTPUT" != "Y" ]
then
- LatF=$TMP/$FN.tex
+ LatF="$TMP/$FN.tex"
else
- LatF=$FN.tex
+ LatF="$FN.tex"
fi
#
# Find:
@@ -604,54 +678,54 @@ eval `sed -n \\
-e 's/\\\\def\\\\mudelapaperlinewidth{\([^}]*\).*$/TWN=\1;/p' \\
-e 's/\\\\def\\\\mudelapapertextheight{\([^}]*\).*$/THN=\1;/p' \\
-e 's/\\\\def\\\\mudelapapersize{\([^}]*\).*$/fPSZ=\1;/p' \\
- $File`
+ "$File"`
#
if [ -z "$LATEXHF" ]
then
- LATEXHF=$fLHF
+ LATEXHF="$fLHF"
fi
LLHF="%"
if [ -n "$LATEXHF" ]
then
- [ -f $LATEXHF ] && LLHF="\input{$LATEXHF}"
+ [ -f "$LATEXHF" ] && LLHF="\input{$LATEXHF}"
fi
#
if [ -z "$PAPERSIZE" ]
then
- PAPERSIZE=$fPSZ
+ PAPERSIZE="$fPSZ"
fi
if [ -n "$PAPERSIZE" ]
then
setPaperZize
- PAPEROPT=$PAPERSIZE
+ PAPEROPT="$PAPERSIZE"
fi
#
if [ -z "$ORIENTATION" ]
then
- ORIENTATION=$fORI
+ ORIENTATION="$fORI"
fi
if [ -n "$ORIENTATION" ]
then
if [ -z "$PAPEROPT" ]
then
- PAPEROPT=$ORIENTATION
+ PAPEROPT="$ORIENTATION"
else
- PAPEROPT=$PAPEROPT,$ORIENTATION
+ PAPEROPT="$PAPEROPT,$ORIENTATION"
fi
fi
#
if [ -n "$PAPEROPT" ]
then
- PAPER="["$PAPEROPT"]"
+ PAPER="[$PAPEROPT]"
fi
#
if [ -z "$LANGUAGE" ]
then
- LANGUAGE=$fLNG
+ LANGUAGE="$fLNG"
fi
if [ -n "$LANGUAGE" ]
then
- LLNG="\usepackage["$LANGUAGE"]{babel}"
+ LLNG="\usepackage[$LANGUAGE]{babel}"
else
LLNG="%"
fi
@@ -661,8 +735,8 @@ fi
#
if [ -n "$TWN" ]
then
- TW=$TWN
- case $TW in
+ TW="$TWN"
+ case "$TW" in
*mm)
;;
*cm)
@@ -670,13 +744,13 @@ then
*pt)
;;
*)
- TW=$TW"pt"
+ TW="${TW}pt"
;;
esac
- $debug_echo "Text width = "$TW
+ $debug_echo "Text width = $TW"
fi
-TWp=`echo $TW | sed -e 's/\..*$//'`
-PWp=$PWIDTH
+TWp=`Echo $TW | sed -e 's/\..*$//'`
+PWp="$PWIDTH"
#
# Find textheight
#
@@ -691,24 +765,22 @@ then
*pt)
;;
*)
- TH=$TH"pt"
+ TH="${TH}pt"
;;
esac
- $debug_echo "Text height = "$TH
+ $debug_echo "Text height = $TH"
fi
-THp=`echo $TH | sed -e 's/\..*$//'`
-PHp=$PHEIGHT
+THp="`echo $TH | sed -e 's/\..*$//'`"
+PHp="$PHEIGHT"
if [ "$ORIENTATION" = "landscape" ]
then
- PWp=$PHEIGHT
- PHp=$PWIDTH
+ PWp="$PHEIGHT"
+ PHp="$PWIDTH"
fi
-HMARG=`expr $PWp - $TWp`
-HMARG=`expr $HMARG / 2`"pt"
-$debug_echo "Text left = "$HMARG
-VMARG=`expr $PHp - $THp`
-VMARG=`expr $VMARG / 2`"pt"
-$debug_echo "Text top = "$VMARG
+HMARG="`expr '(' $PWp - $TWp ')' / 2`"pt
+$debug_echo "Text left = $HMARG"
+VMARG="`expr '(' $PHp - $THp ')' / 2`"pt
+$debug_echo "Text top = $VMARG"
#
# Geometry: /var/lib/texmf/latex/geometry/geometry.dvi
#
@@ -730,11 +802,7 @@ $PNUM
%\addtolength{\topmargin}{-1cm}
%\setlength{\textwidth}{$TW}
%\setlength{\textheight}{$TH}
-%\geometry{width=$TW, left=$HMARG, top=1cm}
-%\geometry{width=$TW, left=$HMARG}
-%\geometry{height=$TH, top=$VMARG}
-% \geometry{body={$PWp pt, $PHp pt}, width=$TW, top=$HMARG, height=$TH, top=$VMARG}
-\geometry{width=$TW, top=$HMARG, height=$TH, top=$VMARG}
+\geometry{width=$TW, left=$HMARG, height=$TH, top=$VMARG}
\input lilyponddefs
\input titledefs
$LLHF
@@ -750,6 +818,8 @@ nextFile(){
cat << EOF >> $LatF
\def\theopus{}%
\def\thepiece{}%
+\def\mudelaopus{}%
+\def\mudelapiece{}%
EOF
mudelaDefs "\\def"
cat << EOF >> $LatF
@@ -775,11 +845,10 @@ latex '\nonstopmode \input '$LatF || exit 5
#
if [ -f $FN.dvi ]
then
- RESULT=$BN.dvi
+ RESULT="$BN.dvi"
[ -n "$OUTPUTDIR" ] && RESULT="$OUTPUTDIR/$RESULT"
- cp $FN.dvi $RESULT || exit 5
-
+ cp "$FN.dvi" "$RESULT" || exit 5
fi
#
# Output some info
@@ -794,12 +863,16 @@ EOF
# ugh. GF is side-effect.
findInput() {
# should check for LILYINCLUDE
- for lypath in "." `echo $LILYINCLUDE| sed 's/:/ /g'`
+ OIFS="$IFS"
+ IFS=':'
+ x=`echo $LILYINCLUDE | sed "s!:! !g"`
+ IFS="$OIFS"
+ for lypath in . $x
do
if [ -f "$lypath/$1" ]
then
GF="$lypath/$1"
- return
+ return
fi
if [ -f "$lypath/$1.ly" ]
@@ -807,9 +880,14 @@ findInput() {
GF="$lypath/$1.ly"
return
fi
+ if [ -f "$lypath/$1.fly" ]
+ then
+ GF="$lypath/$1.fly"
+ return
+ fi
done
- $debug_echo $IDENTIFICATION": Input file "$GF" not found"
- echo $NAME": Input file "$GF" not found" 1>&2
+ $debug_echo "$IDENTIFICATION: Input file \"$GF\" not found"
+ echo "$NAME: Input file \"$GF\" not found" 1>&2
exit 2
}
#
@@ -818,7 +896,7 @@ findInput() {
LILY_OUTPUT_FILES=
-for GF in $*
+for GF
do
findInput $GF
@@ -846,12 +924,12 @@ do
then
$debug_echo $IDENTIFICATION": Mudela file not found."
TW=15.5cm
- TH=25cm
+ TH=25.0cm
fi
else
$debug_echo $IDENTIFICATION": Mudela file name not found."
TW=15.5cm
- TH=25cm
+ TH=25.0cm
fi
else
#
@@ -865,10 +943,10 @@ do
#
$debug_echo "lilypond "$LILYOPTS $IF
- lilypond $LILYOPTS $IF 2>&1 | tee $LOGFILE
- OF=`egrep '^TeX output to ' $LOGFILE | \\
- sed -e 's/TeX output to//' -e 's/\.\.\.//'`
- $debug_echo "==> "$OF
+ $LILYPOND_EXECUTABLE $LILYOPTS $IF 2>&1 | tee $LOGFILE
+ OF="`sed -n -e 's/TeX output to \([^\.]*\.tex\)\.\.\.$/\1/p' $LOGFILE`"
+ $debug_echo "==> $OF"
+ LILY_OUTPUT_FILES="$LILY_OUTPUT_FILES $OF"
STATUS=`egrep -i "error|segmentation|abort" $LOGFILE`
echo $STATUS
if [ ! -z "$STATUS" ]
@@ -885,9 +963,9 @@ do
#
# Check if output file is generated
#
- if [ ! -f $File ]
+ if [ ! -f "$File" ]
then
- $debug_echo $IDENTIFICATION": hmm, I could not find the output file "$File
+ $debug_echo "$IDENTIFICATION: hmm, I could not find the output file $File"
exit 4
fi
#
@@ -895,7 +973,7 @@ do
#
if [ -z "$FFile" ]
then
- FFile=$File
+ FFile="$File"
startFile
else
nextFile
@@ -908,7 +986,6 @@ EOF
FFile=""
endFile
fi
- LILY_OUTPUT_FILES="$LILY_OUTPUT_FILES $OF"
done
done
if [ $SEPFILE = N ]
diff --git a/scripts/mudela-book.py b/scripts/mudela-book.py
new file mode 100644
index 0000000000..ce491b816e
--- /dev/null
+++ b/scripts/mudela-book.py
@@ -0,0 +1,246 @@
+
+# python version of mudela-book. WIP.
+
+# TODO: center option
+
+# log:
+
+# 0.3:
+# rewrite in Python.
+
+import os
+import string
+import regex
+import getopt
+import sys
+import regsub
+
+outdir = 'out/'
+program_version = '0.3'
+
+
+
+
+def file_exist_b(name):
+ try:
+ f = open(name)
+ except IOError:
+ return 0
+ f.close ()
+ return 1
+
+class CompileStatus:
+ pass
+
+def file_mtime (name):
+ return os.stat (name)[8] #mod time
+
+def compile (command, infile, outfile):
+ indate = file_mtime (infile)
+ try:
+ outdate = file_mtime (outfile)
+ recompile = indate > outdate
+
+ except os.error:
+ recompile = 1
+
+ if recompile:
+ sys.stderr.write ('invoking `%s\'\n' % command)
+
+ status = os.system (command)
+ if status:
+ raise CompileStatus
+
+
+class Mudela_output:
+ def __init__ (self):
+ self.basename = ''
+ self.fragment = 0
+ self.size = 16
+
+ def open (self, basename):
+ self.basename = basename
+ self.temp_file = "%s/%s" %(outdir, 'mudela-temp.ly')
+ self.file = open (self.temp_file, 'w')
+ self.file.write ('\\include \"paper%d.ly\"\n' % self.size)
+ if self.size == 16:
+ s = 'sixteen'
+ else:
+ s = 'twenty'
+
+ self.file.write ('default_paper = \\paper { \\paper_%s\n linewidth = -15.\\cm; }\n' % s)
+
+ if self.fragment:
+ self.file.write ('\\score { \\melodic { ')
+
+ def write (self,s):
+ self.file.write (s)
+
+ def close (self):
+ if self.fragment:
+ self.file.write (
+ '}\n \\paper { linewidth = -1.0\\cm;\n' +
+ 'castingalgorithm = \\Wordwrap; } }\n')
+
+
+ self.file.close ()
+
+ inf=self.basename + '.ly'
+ outf = self.basename + '.tex'
+ if not file_exist_b (inf):
+ status = 1
+ else:
+# print 'invoking %s' %('diff %s %s' % (self.temp_file, inf))
+ status = os.system ('diff -q %s %s' % (self.temp_file, inf))
+# print 'status %d' % status
+
+ if status:
+ os.rename (self.temp_file, inf)
+
+ compile ('lilypond -o %s %s'% (self.basename, inf), inf, outf)
+# os.rename (self.basename + '.tex', outdir +)
+
+
+
+class Tex_output:
+ def __init__ (self, name):
+ self.output_fn = '%s/%s' % (outdir, name)
+ self.mudela = 0
+ self.file = open (self.output_fn , 'w')
+ self.verbatim = 0
+ def open_mudela (self, basename):
+
+ self.mudela_basename =basename
+ if self.verbatim:
+ self.file.write ('\\begin{verbatim}\n')
+ self.mudela = 1
+
+ def write (self, s):
+ self.file.write (s)
+
+ def write_mudela (self, s):
+ if self.verbatim:
+ self.file.write (s)
+
+ def close_mudela (self):
+ if self.verbatim:
+ self.file.write ('\\end{verbatim}\n')
+ self.verbatim = 0
+
+ self.file.write (
+ '\\preMudelaExample\\input %s\n\postMudelaExample' %(self.mudela_basename))
+ self.mudela = 0
+
+
+
+
+
+begin_mudela_re = regex.compile ('^ *\\\\begin{mudela}')
+begin_mudela_opts_re = regex.compile ('^ *\\\\begin{mudela}\[\(.*\)\]')
+end_mudela_re = regex.compile ('^ *\\\\end{mudela}')
+section_re = regex.compile ('\\\\section')
+chapter_re = regex.compile ('\\\\chapter')
+
+
+class Tex_input:
+ def __init__ (self, name, outname):
+ self.infile = open (name)
+ self.outname = outname
+ self.chapter = 0
+ self.section = 0
+ self.fine_count =0
+ self.mudtex = Tex_output (self.outname)
+ self.mudela = None
+ def set_sections (self, l):
+ if section_re.search (l) <> -1:
+ self.section = self.section + 1
+ if chapter_re.search (l) <> -1:
+ self.section = 0
+ self.chapter = self.chapter + 1
+
+
+ def gulp_mudela (self):
+ pass
+
+ def gen_basename (self):
+ return '%s/%s-%d.%d.%d' % (outdir, self.outname,self.chapter,self.section,self.fine_count)
+ def do_it(self):
+ lines = self.infile.readlines ()
+ for line in lines:
+ if begin_mudela_re.search (line) <> -1:
+ if begin_mudela_opts_re.search (line) <> -1:
+ opts = begin_mudela_opts_re.group (1)
+ else:
+ opts = ''
+ optlist = string.split (opts, ',')
+ self.mudela = Mudela_output ()
+ if 'fragment' in optlist:
+ self.mudela.fragment = 1
+ if '16pt' in optlist:
+ self.mudela.size = 16
+ if '20pt' in optlist:
+ self.mudela.size = 20
+
+ if 'verbatim' in optlist:
+ self.mudtex.verbatim = 1
+
+ b = self.gen_basename ()
+ self.mudtex.open_mudela (b)
+ self.mudela.open (b)
+
+
+ continue
+ elif end_mudela_re.search (line) <> -1:
+ self.mudela.close ()
+ self.mudtex.close_mudela ()
+ self.mudela = None
+ self.fine_count = self.fine_count + 1
+ continue
+
+ if self.mudela:
+ self.mudela.write (line)
+ self.mudtex.write_mudela (line)
+ else:
+ self.mudtex.write (line)
+ self.set_sections(line)
+ del self.mudtex
+
+
+def help():
+ sys.stdout.write("Usage: mudela-book [options] FILE\n"
+ + "Generate hybrid LaTeX input from Latex + mudela"
+ + "Options:\n"
+ + " -h, --help print this help\n"
+ + " -d, --outdir=DIR prefix directory\n"
+ + " -o, --outname=FILE prefix for filenames\n"
+ )
+ sys.exit (0)
+
+
+
+sys.stderr.write ('This is %s version %s\n' % ('mudela-book', program_version))
+
+outname = ''
+(options, files) = getopt.getopt(
+ sys.argv[1:], 'hd:o:', [ 'outdir=', 'outname=', 'help'])
+for opt in options:
+ o = opt[0]
+ a = opt[1]
+ if o == '--outname' or o == '-o':
+ outname = a
+ if o == '--outdir' or o == '-d':
+ outdir = a
+ if o == '--help' or o == '-h':
+ help ()
+
+
+for f in files:
+ my_outname = outname
+ if not my_outname:
+ my_outname = regsub.sub ('\\(.*\\)\\.doc', '\\1', f)
+
+ inp = Tex_input (f, my_outname)
+ inp.do_it ()
+
+
+
diff --git a/stepmake/AUTHORS.txt b/stepmake/AUTHORS.txt
new file mode 100644
index 0000000000..ba6e0f27cd
--- /dev/null
+++ b/stepmake/AUTHORS.txt
@@ -0,0 +1,24 @@
+
+NAME
+
+AUTHORS - who did what on StepMake?
+
+DESCRIPTION
+
+This file lists authors of StepMake, and what they wrote.
+
+AUTHORS
+
+o Jan Nieuwenhuizen <janneke@gnu.org>,
+ http://www.digicash.com/~jan
+
+ Main author.
+o Han-Wen Nienhuys <hanwen@cs.uu.nl>,
+ http://www.cs.uu.nl/people/hanwen
+
+ Main author.
+
+CONTRIBUTORS
+
+o Jeffrey B. Reed <daboys@bga.com>,
+ Windows-nt fixes.
diff --git a/stepmake/Documentation/Makefile b/stepmake/Documentation/Makefile
new file mode 100644
index 0000000000..0c43e2f1a8
--- /dev/null
+++ b/stepmake/Documentation/Makefile
@@ -0,0 +1,24 @@
+# Documentation/Makefile
+
+depth = ..
+
+include $(depth)/make/Stepmake.make
+
+OUTTXT_FILES = $(OUTYO_FILES:.yo=.txt) $(OUTIN_FILES:.yo=.txt)
+EXTRA_DIST_FILES =
+SUBDIRS=topdocs
+
+
+include $(stepdir)/Documentation.vars.make
+include $(stepdir)/Documentation_rules.make
+
+default: do-doc
+
+do-doc: $(OUTTXT_FILES)
+
+# ugh
+check-doc-deps: do-doc
+ true
+
+doc: do-doc
+
diff --git a/stepmake/Documentation/automake.yo b/stepmake/Documentation/automake.yo
new file mode 100644
index 0000000000..12e768341f
--- /dev/null
+++ b/stepmake/Documentation/automake.yo
@@ -0,0 +1,124 @@
+article(Automake -- Urgh!)(HWN and JCN)()
+
+sect(Introduction)
+
+Every once in a while, we get comments on our `non-standard' (non GNU
+compliant) configuration/compilation system. In this document, we try
+to explain why we built our own system. We focus on Automake, but of
+course writing complex file(Makefile.in)s without generating them
+automatically is an even more deadly sin in our opinion.
+
+
+sect(What's wrong with Automake?)
+
+We have tried to use Automake and found it to be inadequate for our
+needs for several reasons. On the surface the shortcomings to
+Automake may seem bugs or "not-yet-completed" features. However, file(make)
+itself is broken, and any tool built on top of file(make) is broken as well.
+
+
+sect(Irritations)
+
+We'll start with the superficial irritations first:
+itemize(
+it() there is no intrinsic support for wildcarding; Adding
+support for wildcarding adds yet another layer to a top-heavy system.
+
+This may sound silly, but for a fast moving project, with 1250
+sourcefiles, one does not want to administer a list of filenames by
+hand: files are created, deleted and moved very often, and wildcarding
+prevents that distributions miss files.
+
+
+it() Automake tries to cater for every taste of file(make). But anyone
+who does more than the trivial code(configure; make install) has to
+install Automake and GNU make anyway (for example, you need GCC and
+GNU Make for dependency tracking).
+
+Automake's universal make support is good for tools that have to be
+highly portable, but you have pay in ease of use and speed while
+developing. This means that it is counterproductive to use Automake
+for non-essential programs that are under (heavy) development.
+
+
+it()
+Support for filetypes in built in to Automake, and cannot be added on
+the fly: Automake is very much targeted at standard GNU packages that
+are written in C (or C++) and come with info-pages. If you want to
+add dependencies from TeX() or METAFONT files you are out of luck.
+Ditto if you have weird file types (.pod), weird programming
+languages, etc.
+
+There are as many file types as there are languages and compilers.
+Extending Automake to support all these languages is error-prone, and
+creates nasty version dependencies between an Automake-using package
+and Automake itself. A package should be able to supply its own
+specific rules and targets.
+
+it() Dependency handling is unreliable in our experience. On
+several occasions we had unexplainable errors, that went away after
+doing a code(make distclean), and recompile.
+
+it() It is slower, much slower than a tailored solution. This
+diffence in speed can be as large as 800%. (On JCNs machine a
+code(make dist) takes 17 minutes in stead of 2) for every distribution
+made; this constitutes 45 minutes of irritation on an average hacking-night.
+
+it() For a large project, a specialised file(Makefile) system costs
+relatively little extra effort. The extra effort pays itself back in
+speed and control.
+
+it() The file(Makefile)s, file(Makefile.in)s, and extensions
+constitute a huge amount of state. We found it hard to reproduce bugs
+in Automake (Strictly spoken they aren't bugs, as we haven't diagnosed
+because we couldn't reproduce them.) )
+
+sect(Fundamental problems)
+
+Many of the fundamental problems can be traced back to flaws in make:
+
+itemize(
+it() make is not standardised. The only decent implementation is
+GNU make, and GNU make is not widespread enough to require GNU make for
+compiling GNU tools.
+
+it() make does not have enough meta-ness: one cannot manipulate
+dependencies and rules in make: they cannot be put in variables,
+mapped at lists, etc.
+
+(In our tailor made compilation system, we worked around this
+non-feature by using generic include files as a stopgap function
+call.)
+
+
+
+it() code(VPATH) is a broken concept: programs should not try to be
+intelligent on their own; being intelligent is something the
+programmer should do. make should do exactly as it is told, and make
+should enable easy formulation of these commands.
+)
+
+Automake tries to solve these problems by building on top of this
+broken tool: an extra layer of complexity is added, with
+self-modifying Makefiles, and different Makefile versions for
+maintainer and user.
+
+
+sect(Conclusions)
+
+We could be called `cheap' for complaining about the above points,
+while not even filing decent bugreports. The reality is that we
+ourselves are busy and that we don't find it amusing to hunt for and
+fix bugs in a fix (Automake) for a broken tool (make).
+
+It should also be emphasised that we still think that Automake is a
+good tool: it is excellent for small projects, and reasonable for big
+projects that are fully "standard." However, for LilyPond, with its
+many sourcefiles and many different filetypes we found it unwieldy.
+
+We hope that some day a better replacement for make comes along, so
+that the gruesomeness of make and friends may die in oblivion. (*)
+
+(*) I personally would like to enter a Makefile as functional program,
+whose execution caches function results on the disk as files. But I
+shan't bother you further with my vaporware thoughts..
diff --git a/stepmake/Documentation/layout.yo b/stepmake/Documentation/layout.yo
new file mode 100644
index 0000000000..5f30475bf7
--- /dev/null
+++ b/stepmake/Documentation/layout.yo
@@ -0,0 +1,20 @@
+verb(
+ doos/ # gnu/windows32 build and binary releases
+ harmonia -> harmonia-x.y.z
+ harmonia-x.y.z/
+ lilypond -> lilypond-x.y.z # symlink to development directory
+ lilypond-x.y.z/ # current development
+ patches/ # patches between different releases
+ RedHat/BUILD # RedHat build and binary releases
+ RedHat/RPMS
+ RedHat/SPECS
+ releases/ # .tar.gz releases
+ test/ # tarballs and diffs from current version
+ yodl -> yodl-1.30.17
+ yodl-1.30.17
+)
+with prefix file($HOME/usr/src)
+and (for building rpms only) in file($HOME/.rpmrc):
+verb(
+ topdir: /home/fred/usr/src/RedHat
+)
diff --git a/stepmake/Documentation/topdocs/AUTHORS.yo b/stepmake/Documentation/topdocs/AUTHORS.yo
new file mode 100644
index 0000000000..e14f5d0a10
--- /dev/null
+++ b/stepmake/Documentation/topdocs/AUTHORS.yo
@@ -0,0 +1,27 @@
+nsect(NAME)
+
+AUTHORS - who did what on StepMake?
+
+nsect(DESCRIPTION)
+
+This file lists authors of StepMake, and what they wrote.
+
+nsect(AUTHORS)
+itemize(
+it()nemail(Jan Nieuwenhuizen)(janneke@gnu.org),
+ lurl(http://www.digicash.com/~jan)
+ nl()
+ Main author.
+it()nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl),
+ lurl(http://www.cs.uu.nl/people/hanwen)
+ nl()
+ Main author.
+)
+
+nsect(CONTRIBUTORS)
+
+itemize(
+it()nemail(Jeffrey B. Reed)(daboys@bga.com),
+ Windows-nt fixes.
+)
+
diff --git a/stepmake/Documentation/topdocs/BLURB.in b/stepmake/Documentation/topdocs/BLURB.in
new file mode 100644
index 0000000000..7af77f056d
--- /dev/null
+++ b/stepmake/Documentation/topdocs/BLURB.in
@@ -0,0 +1,6 @@
+StepMake is a drop-in package that takes care of generic Makefile and
+packaging/distribution issues. It enables you to write only the simplest of
+Makefile snippets, while providing a series powerful make targets. Features
+include speed, wildcarding, out/ dir build, stateless Makefiles and package
+clustering. It includes some handy scripts for making (package-)diffs and
+patches, making binary distributions etc.
diff --git a/stepmake/Documentation/topdocs/INSTALL.yo b/stepmake/Documentation/topdocs/INSTALL.yo
new file mode 100644
index 0000000000..4060944c42
--- /dev/null
+++ b/stepmake/Documentation/topdocs/INSTALL.yo
@@ -0,0 +1,162 @@
+nsect(NAME)
+
+INSTALL - installing StepMake
+
+nsect(DESCRIPTION)
+
+This page documents installation and usage of StepMake
+
+nsect(ABSTRACT)
+
+verbinclude(BLURB.in)
+
+To use StepMake with your package, you do something remotely like:
+verb(
+ tar xzf releases/stepmake-0.1.23
+ cd package-x.x.x/ # package to be StepMake-ised
+ ./../stepmake-0.1.23/bin/stepmakeise.sh
+)
+You'll have to customize at least the files:
+verb(
+ ./VERSION .
+ ./configure.in
+)
+to your package's needs. You might want to take a look at:
+verb(
+ ./make/Toplevel.make.in
+ ./config.hh.in
+ ./config.make.in
+)
+
+Also, you should put a Makefile in every subdirectory of your
+package. These makefiles generally are quite simple, e.g. this
+is a the makefile for an include directory of LilyPond:
+verb(
+ # lily/include/Makefile
+
+ depth = ../..
+ include $(depth)/make/Stepmake.make
+)
+
+it will identify all code(.h, .hh, ...) files and take care of distributing
+them.
+
+There's a file(make/Template.make) that you can use as an example.
+See also the Makefiles in the LilyPond or Yodl package.
+
+
+Once included in your package, StepMake (or in fact, any
+StepMake-ised package) behaves as a normal subdirectory;
+make commands such as 'make dist' recurse into the stepmake tree
+(For a list of available targets, type code(make help) after
+configuring).
+Stepmake (and any changes made) will be distributed with the main
+pacakage. However, StepMake doesn't lose its independency, change
+to the stepmake directory, and it'll behave as a main package.
+You shouldn't version directory names of subpackages, otherwise
+you'll see that package twice in each patch when you upgrade.
+
+nsect(PREREQUISITES)
+
+To use StepMake with a package you need:
+
+itemize(
+it()A GNU system: StepMake is known to work on these GNU systems: Linux
+ (PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and Solaris.
+ If you have the Cygnus WINDOWS32 port of the GNU utils, it will even
+ work in Windows NT/95, but we don't promise to support it.
+it()GNU make
+it()GNU autoconf
+)
+
+nsect(RECOMMENDED)
+
+Although not strictly necessary, these are recommended to have.
+
+itemize(
+it()Python
+it()Yodl. All documentation will be in Yodl. (1.22.jcn3)
+it()GNU find
+)
+
+nsect(INTERNALS)
+COMMENT(Hmm, started-out as an email...)
+
+Over time, we put a lot of effort in the configure, make, distribute
+system (CMDS) for LilyPond. Some months ago, we realised it was not
+standard GNU --- we require GNU make for building, and Python for extra
+scripting. In an effort to be more GNU, we tried automake, but after two
+weeks we realised the costs were too high for us and we reverted to our
+own system (see file(automake.urgh)). Not long after that i was confronted
+with two other packages that lacked a decent CMDS. I realised that Lily's
+would be perfect, it's modular and easy. The only problem was to make a
+clean cut between generic and Lily specific stuff. The result was
+StepMake: a bunch of generic makefiles, found in:
+verb(
+ stepmake/stepmake/*.make
+)
+eneric helper scripts:
+verb(
+ stepmake/bin/*.sh
+ stepmake/bin/*.py
+)
+and modular configure functions:
+verb(
+ stepmake/configure.in
+ stepmake/aclocal.m4
+ stepmake/config.hh.in
+ stepmake/config.make.in
+)
+
+Of course, every package has its own configure- and make peculiarities.
+The best way to create the configure scripts is to copy them from
+nop(stepmake)footnote(Actually, stepmake/bin/stepmakeise.sh will do
+that for you.) into you package's toplevel directory. For most
+packages, you'll only have to comment in/out some functions in
+file(configure.in).
+
+Package specific makefiles go in:
+verb(
+ make/Targets.make
+ make/Rulese.make
+ make/Substitute.make
+)
+and are included by the generic StepMake makefiles.
+
+nsect(MAINTAINING)
+
+If you want to make and manage (binary) distributions, create and apply
+patches, you'll need some framework that's outside of the package's
+sourcetree.
+For a number of simple maintenance tasks, StepMake will therefore assume
+the following directory structure:
+
+includefile(../layout.yo)
+
+Check and update the layout with the command:
+verb(
+ ./stepmake/bin/stepdirs.sh
+)
+
+nsect(SEE ALSO)
+
+code(../PATCHES.txt)
+
+nsect(CONFIGURING)
+
+Stepmake comes with a number of precooked configure functions for
+general needs, such as AC_STEPMAKE_COMPILE for simple C development
+and AC_STEPMAKE_CXX for C++.
+
+See configure.in and comment in/out the functions that your package
+needs. For specific needs, you can write your own autoconf code,
+see code(info autoconf).
+
+nsect(AUTHORS)
+
+nemail(Jan Nieuwenhuizen)(janneke@gnu.org)
+
+nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl)
+
+Have fun!
+
diff --git a/stepmake/Documentation/topdocs/Makefile b/stepmake/Documentation/topdocs/Makefile
new file mode 100644
index 0000000000..64f14835a2
--- /dev/null
+++ b/stepmake/Documentation/topdocs/Makefile
@@ -0,0 +1,35 @@
+# Documentation/topdocs/Makefile
+
+depth = ../..
+
+SUBDIRS=
+BLURBS=BLURB #COPERTINA FLAPTEKST
+AT_FILES = $(BLURBS) #
+at-dir = $(doc-dir)/
+at-ext = .in
+
+include $(depth)/make/Stepmake.make
+
+
+default: do-doc
+
+BLURBS=BLURB COPERTINA FLAPTEKST
+# INFO_FILES = $(outdir)/$(package).info
+
+include $(stepdir)/Documentation.shared.make
+
+# urg
+$(outdir)/%.html: %.yo
+ $(YODL2HTML) -doutdir=$(outdir) --live-data=3 -o $@.in $<
+ $(sed-version) < $@.in > $@
+ rm -f $@.in
+ $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=index.html --news=$(depth)/NEWS $@
+
+local-WWW:
+ -cp $(outdir)/*gif $(outdir)/index.html $(depth) # don't fail if not making website
+
+
+TO_TOP_FILES=$(addprefix $(outdir)/, $(README_TOP_FILES))
+copy-to-top:
+ $(foreach i, $(TO_TOP_FILES), \
+ cp $(i) $(depth)/ && ) true
diff --git a/stepmake/INSTALL.txt b/stepmake/INSTALL.txt
new file mode 100644
index 0000000000..c856e2e008
--- /dev/null
+++ b/stepmake/INSTALL.txt
@@ -0,0 +1,20 @@
+
+
+
+NAME
+
+
+INSTALL - installing StepMake
+
+
+
+DESCRIPTION
+
+
+This page documents installation and usage of StepMake
+
+
+
+ABSTRACT
+
+
diff --git a/stepmake/NEWS b/stepmake/NEWS
new file mode 100644
index 0000000000..f837a4f572
--- /dev/null
+++ b/stepmake/NEWS
@@ -0,0 +1,246 @@
+pl 41
+ - standard naming: _FILES
+ - use install-sh
+ - junked most check-X-deps
+ - standard naming: dir/out/library.a
+ - split C++ / C stuff in separate files. Moved out of default stuff
+ - automake.yo updates
+ - fake-yodl.sh
+
+pl 40
+ - bf's: texinfo
+ - bf's: package-zip.sh for bash-2.0
+ - typo package-diff
+
+pl 39
+ - disabled toplevel index
+
+pl 38
+ - bf's: topweb, Documentation
+ - bf: ls-latex
+
+pl 37
+ - bf's: add-html-footer (ok, i've been reading /.)
+
+pl 36.hwn1
+ - Metafont.make
+ - use := assignment for shell & wildcard stuff
+
+pl 36
+ - bf: Executable.make install
+
+pl 35
+ - bf: Po_rules
+ - grand foreach hack (HWN)
+
+pl 34
+ - stepmake/*shared.make
+
+pl 33
+ - make dist fix
+ - yodl/lily website fixes
+
+pl 32
+ - DEPTH: enable fixing of 'yodl using yodl'
+ - bf's: package-diff: --dir-*
+
+pl 31.hwn1
+ - bf ls-latex.py; added format
+
+pl 31
+ - fixed make-flags
+ - fixup package-diff and added to-dir, from-dir
+
+pl 30.hwn2
+ -
+
+pl 30.hwn1
+ - doc++ target
+ - make -> $(MAKE)
+
+pl 30
+ - add-html-footer: html/body/title
+
+pl 29.hwn1
+ - automake.urgh -> automake.yo
+
+pl 29
+ - counter fix
+
+pl 28
+ - mini fix voor soladeris (HWN)
+ - add-html-footer fixes
+ - dropped pl
+
+pl 27
+ - irix fixes(?) (HWN)
+
+pl 26.jcn3
+ - update.py: try at stupid advice
+ - bf: ls-latex .yo author
+ - bf: Excutable.make install
+
+pl 26.jcn2
+ - no changes
+
+pl 26.hwn1
+ - no changes; just testin' make update
+
+pl 26.jcn1
+ - no changes
+
+pl 26
+ - make apply
+ - package-to.diff.gz
+ - package-from-to.diff.gz with state-vector
+ - state vector
+
+pl 25
+ - bf: add-html-footer.py: version_str iso tuple
+ - typo: Executable.make
+ - for 2latex: yodl2latex of yodl-1.30.0.pre9
+ - package depth 'detected' by configure (kinda ugh)
+ - fixes (HWN)
+
+pl 24
+ - binary releases:
+ * make deb
+ * dpkg 1.4.0.23.2
+ * debhelper 0.96
+ * /usr/bin/db_*: remove -p from install options (urg)
+ * make rpm
+ * make zip
+ - debian fixes
+ - SEXECUTABLES / EXECUTABLES (JBR)
+ - fixed package-zip.sh (again?)
+ - bf's: make zip
+ - some doco
+ - bf: STRIPFILES
+ - rpm from tarball in $(depth)/$(outdir)
+ - dropped lilypython, pythonblurb
+ - bf's: flower.py/packagepython.py/package-diff.py
+
+
+pl 23.hwn2
+ - add mailaddress to package-diff, beautifications
+
+pl 23.hwn1
+ - release.py: check make dist retval
+ - revamped rpm stuff.
+ - bf abs-step-bindir
+
+
+pl 23
+ - relaxed 'error' to '-echo' for non-vital utilities
+ - table-to-html.py
+ - bin/stepdirs.sh
+ - bin/stepmakeise.sh
+ - --package-ised
+ - windows-nt fixes (JBR)
+
+pl 22
+ - new zip stuff
+
+pl 21
+ - packagepythonified add-html-footer, ls-latex
+ - packagepython (dankje lieverd)
+ - LD
+ - bf: don't diff .pyc
+ - yodl2 -> YODL2
+ - AC_STEPMAKE_YODL
+ - vars: GCC/TROFF/LD
+
+pl 20
+ - bf: ls-latex: .yo author + title
+ - htmldoc fix
+ - ls-latex
+ - add-html-footer
+ - po stuff
+ - latex + bibtex
+ - latex2yodl fixes
+
+pl 19
+ - add htmlfooter to all yodl chapter files
+ - .latex for latex files
+ - tex2html -> latex2html.sh
+
+pl 18
+ - package-zet.sh
+ - cleaned-out configure -> aclocal.m4
+ - (step)make targets:
+ * diff
+ * help
+ * rpm
+ * zip
+ - tex2yodl.pl helper
+ - patches are now called $package-$TOPLEVEL_VERSION.diff
+ - fixed @FILE@ and @VAR@ substitute
+ - bf: DO_CXX_COMPILE
+
+pl 17
+ - C rules :-)
+ - bf's Template.make
+
+pl 16
+ - more lily macros -> generic stepmake
+ - dropped POD configuration
+ - used it
+ - pod2yodl: one time conversion helper
+
+pl 15
+ - fixes: texi2man
+
+pl 14
+ - text2html
+
+pl 13
+ - texinfo support
+ - removed mudela rules
+
+pl 12
+ - irix patch
+
+pl 11
+ - 'urg comment' by wendy
+ - python fixes
+
+pl 10
+ - more from lily
+ - sed-stuff
+
+pl 9
+ - configure fix for irix tr
+ - bf: Install_*.make
+ - bf: PACKAGE_ ROOTDIR
+
+pl 8
+ - some python stuff from lily
+
+pl 7
+ - PACKAGE_NAME
+ - BLURB
+ - INSTALL doco
+ - Documentation/
+
+pl 6
+ - bf: include makedir/Rules.make too
+ - Documentation/automake.urgh
+
+pl 5
+ - allow chained make-dist
+
+pl 4
+ - DOTTEXT->.txt
+
+pl 3
+ - included more Lily makefiles
+
+pl 2
+ - dropped $(package) in makefile names
+ - moved stepmake makes to stepmake/
+
+pl 1
+ - preparing for verbatim include
+
+pl 0
+ - shared between lilypond-0.1.69 lilyx-0.1.0
diff --git a/stepmake/README b/stepmake/README
new file mode 100644
index 0000000000..22375a6104
--- /dev/null
+++ b/stepmake/README
@@ -0,0 +1,18 @@
+StepMake
+
+This is a simple generic make package.
+It is being used by LilyPond and Harmonia
+(and StepMake itself, of course)
+
+You're looking at her embryonal state -- things are *supposed*
+to be broken.
+
+Fixes/patches/suggestions appreciated.
+
+StepMake is Free Software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+version 2 as published by the Free Software Foundation.
+
+Jan Nieuwenhuizen <janneke@gnu.org>
+ftp://pcnov095.win.tue.nl/pub/lilypond/development
+
diff --git a/stepmake/TODO b/stepmake/TODO
new file mode 100644
index 0000000000..a6c1c38b98
--- /dev/null
+++ b/stepmake/TODO
@@ -0,0 +1,23 @@
+ * urg, fix flower.py dirname, tarball etc. (package-diff, release)
+
+ * (re-)enable use outside of make system, e.g.
+
+ - /usr/bin/make-patch for direct use on tarballs
+
+ * drop silly 'package' prefixes
+
+ * all perl scripts to python
+
+ * more doco
+ - Variable names of StepMake, e.g. 'depth', 'EXTRA_DISTFILES' etc.
+ - AC_STEPMAKE calls
+
+ * template package
+
+ * move bin stuff from LilyPond to stepmake
+
+ * shared lib (use libtool)
+
+ * fix autoconf, allowing aclocal.m4 to be included only once
+ (if possible from stepmake/bin)
+
diff --git a/stepmake/VERSION b/stepmake/VERSION
new file mode 100644
index 0000000000..89e1366795
--- /dev/null
+++ b/stepmake/VERSION
@@ -0,0 +1,9 @@
+PACKAGE_NAME=StepMake
+MAJOR_VERSION=0
+MINOR_VERSION=1
+PATCH_LEVEL=41
+MY_PATCH_LEVEL=
+
+# use the above to send patches, always empty for released version:
+# please don't move these comments up; the patch should fail if
+# the previous version was wrong.
diff --git a/stepmake/aclocal.m4 b/stepmake/aclocal.m4
new file mode 100644
index 0000000000..0f54b68df8
--- /dev/null
+++ b/stepmake/aclocal.m4
@@ -0,0 +1,653 @@
+dnl aclocal.m4 -*-shell-script-*-
+dnl StepMake subroutines for configure.in
+
+AC_DEFUN(AC_STEPMAKE_COMPILE, [
+ # -O is necessary to get inlining
+ OPTIMIZE="-O"
+ checking_b=yes
+ optimise_b=tja
+ profile_b=no
+ debug_b=yes
+
+ AC_ARG_ENABLE(checking,
+ [ enable-checking set runtime checks (assert calls). Default: on],
+ [checking_b=$enableval] )
+
+ # actually, the default is: tja='-O' to get inlining...
+ # off=''
+ AC_ARG_ENABLE(optimise,
+ [ enable-optimise use maximal speed optimisations. Default: off],
+ [optimise_b=$enableval])
+
+ AC_ARG_ENABLE(profiling,
+ [ enable-profiling compile with gprof support. Default: off],
+ [profile_b=$enableval])
+
+ AC_ARG_ENABLE(debugging,
+ [ enable-debugging set debug info. Default: on],
+ [debug_b=$enableval])
+
+ AC_ARG_ENABLE(mingw-prefix,
+ [ enable-mingw-prefix=DIR set the mingw32 directory (standalone windows32 exes)],
+ [MINGWPREFIX=$enableval],
+ [MINGWPREFIX=no])
+
+ if test "$printing_b" = no; then
+ # ugh
+ AC_DEFINE(NPRINT)
+ DEFINES="$DEFINES -DNPRINT"
+ fi
+
+ if test "$checking_b" = no; then
+ # ugh
+ AC_DEFINE(NDEBUG)
+ DEFINES="$DEFINES -DNDEBUG"
+ fi
+
+ if test "$optimise_b" = yes; then
+ DEFINES="$DEFINES -finline-functions"
+ OPTIMIZE="-O2"
+ fi
+
+ if test "$optimise_b" = no; then
+ OPTIMIZE=""
+ fi
+
+ if test $profile_b = yes; then
+ EXTRA_LIBES="-pg"
+ DEFINES="$DEFINES -pg"
+ fi
+
+ if test $debug_b = yes; then
+ DEFINES="$DEFINES -g"
+ fi
+
+ # however, C++ support in mingw32 v 0.1.4 is still flaky
+ if test x$MINGWPREFIX != xno; then
+ ICFLAGS="-I$MINGWPREFIX/include"
+ ILDFLAGS="-$MINGWPREFIX/lib"
+ fi
+
+ AC_PROG_CC
+ LD='$(CC)'
+ AC_SUBST(LD)
+
+ CPPFLAGS=${CPPFLAGS:-""}
+ AC_SUBST(CPPFLAGS)
+ AC_SUBST(LDFLAGS)
+ AC_SUBST(ICFLAGS)
+ AC_SUBST(ILDFLAGS)
+ AC_SUBST(DEFINES)
+ AC_SUBST(EXTRA_LIBES)
+])
+
+AC_DEFUN(AC_STEPMAKE_CXX, [
+ AC_LANG_CPLUSPLUS
+ AC_PROG_CXX
+
+ AC_CHECK_HEADER(FlexLexer.h, true,
+ AC_STEPMAKE_WARN(can"\'"t find flex header. Please install Flex headers correctly))
+
+ CXXFLAGS="$DEFINES $OPTIMIZE"
+ LDFLAGS=$EXTRA_LIBES
+
+ AC_SUBST(CXXFLAGS)
+ AC_SUBST(CXX)
+ LD='$(CXX)'
+ AC_SUBST(LD)
+])
+
+AC_DEFUN(AC_STEPMAKE_CXXTEMPLATE, [
+ AC_CACHE_CHECK([whether explicit instantiation is needed],
+ lily_cv_need_explicit_instantiation,
+ AC_TRY_LINK([
+ template <class T> struct foo { static int baz; };
+ template <class T> int foo<T>::baz = 1;
+ ], [ return foo<int>::baz; ],
+ lily_cv_need_explicit_instantiation=no,
+ lily_cv_need_explicit_instantiation=yes))
+ if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then
+ AC_DEFINE(NEED_EXPLICIT_INSTANTIATION)
+ fi
+])
+
+AC_DEFUN(AC_STEPMAKE_DATADIR, [
+ if test "$datadir" = "\${prefix}/share"; then
+ datadir='${prefix}/share/'$package
+ fi
+ DIR_DATADIR=${datadir}
+ presome=${prefix}
+ if test "$prefix" = "NONE"; then
+ presome=${ac_default_prefix}
+ fi
+ DIR_DATADIR=`echo ${DIR_DATADIR} | sed "s!\\\${prefix}!$presome!"`
+ AC_SUBST(datadir)
+ AC_SUBST(DIR_DATADIR)
+ AC_DEFINE_UNQUOTED(DIR_DATADIR, "${DIR_DATADIR}")
+])
+
+AC_DEFUN(AC_STEPMAKE_END, [
+ AC_OUTPUT($CONFIGFILE.make:config.make.in)
+
+ rm -f Makefile
+ cp make/Toplevel.make.in ./Makefile
+ chmod 444 Makefile
+])
+
+AC_DEFUN(AC_STEPMAKE_GXX, [
+ # ugh autoconf
+ changequote(<<, >>)dnl
+ if $CXX --version | grep '2\.[78]' > /dev/null ||
+ $CXX --version | grep 'egcs' > /dev/null
+ changequote([, ])dnl
+ then
+ true
+ else
+ AC_STEPMAKE_WARN(can't find g++ 2.7, 2.8 or egcs)
+ fi
+])
+
+AC_DEFUN(AC_STEPMAKE_INIT, [
+
+ . $srcdir/VERSION
+ FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+ if test x$MY_PATCH_LEVEL != x; then
+ FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL
+ fi
+
+ # urg: don't "fix" this: irix doesn't know about [:lower:] and [:upper:]
+ changequote(<<, >>)dnl
+ PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'`
+ package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
+ changequote([, ])dnl
+
+ if test "x$PACKAGE" = "xSTEPMAKE"; then
+ echo Stepmake package!
+ (cd stepmake; rm -f stepmake; ln -s ../stepmake .)
+ (cd stepmake; rm -f bin; ln -s ../bin .)
+ AC_CONFIG_AUX_DIR(bin)
+ else
+ echo Package: $PACKAGE
+ AC_CONFIG_AUX_DIR(stepmake/bin)
+ fi
+
+ AC_SUBST(package)
+ AC_SUBST(PACKAGE)
+ AC_SUBST(PACKAGE_NAME)
+ AC_DEFINE_UNQUOTED(PACKAGE, "${PACKAGE_NAME}")
+ AC_DEFINE_UNQUOTED(TOPLEVEL_VERSION, "${FULL_VERSION}")
+
+ package_depth=`dirname $cache_file`
+ AC_SUBST(package_depth)
+
+ AUTOGENERATE="This file was automatically generated by configure"
+ AC_SUBST(AUTOGENERATE)
+ absolute_builddir="`pwd`"
+ AC_SUBST(absolute_builddir)
+
+ # No versioning on directory names of sub-packages
+ stepmake=stepmake
+ AC_SUBST(stepmake)
+
+ CONFIGSUFFIX=
+ AC_ARG_ENABLE(config,
+ [ enable-config=FILE put configure settings in config-FILE.make],
+ [CONFIGSUFFIX=$enableval])
+
+ if test "$CONFIGSUFFIX" != "" ; then
+ CONFIGFILE=config-$CONFIGSUFFIX
+ else
+ CONFIGFILE=config
+ fi
+ AC_SUBST(CONFIGSUFFIX)
+
+ AC_CANONICAL_HOST
+ AC_CHECK_PROGS(MAKE, make, error)
+ AC_CHECK_PROGS(FIND, find, error)
+
+
+dnl system supplied INSTALL is unsafe; use our own install.
+dnl AC_PROG_INSTALL
+dnl if test "$INSTALL" = "bin/install-sh"; then
+dnl export INSTALL="\$\(depth\)/bin/install-sh"
+dnl fi
+
+ AC_CHECK_PROGS(TAR, tar, error)
+ AC_CHECK_PROGS(BASH, bash, /bin/sh)
+
+ AC_PATH_PROG(PYTHON, python, -echo no python)
+ AC_SUBST(PYTHON)
+
+
+ AC_CHECK_SEARCH_RESULT($MAKE, GNU make, You should install GNU make)
+ if test $MAKE != "error" ; then
+ $MAKE -v| grep GNU > /dev/null
+ if test "$?" = 1
+ then
+ AC_STEPMAKE_WARN(Please install *GNU* make)
+ fi
+ fi
+
+ AC_CHECK_SEARCH_RESULT($PYTHON, python, You should install Python)
+
+ if test "x$OSTYPE" = "xcygwin32" || test "x$OSTYPE" = "xWindows_NT"; then
+ LN=cp # hard link does not work under cygnus-nt (yet?)
+ ZIP="zip -r -9" #
+ DOTEXE=.exe
+ else
+ LN=ln
+ ZIP="zip -r -9"
+ fi
+ AC_SUBST(DOTEXE)
+ AC_SUBST(ZIP)
+ AC_SUBST(LN)
+
+ AC_STEPMAKE_DATADIR
+])
+
+AC_DEFUN(AC_STEPMAKE_LEXYACC, [
+ # ugh, automake: we want (and check for) bison
+ AC_PROG_YACC
+ # ugh, automake: we want (and check for) flex
+ # AC_PROG_LEX
+ # urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack...
+
+ # AC_DECL_YYTEXT
+ # ugh, ugh
+ ac_cv_prog_lex_root=lex.yy
+
+ AC_CHECK_PROGS(BISON, bison, error)
+ AC_CHECK_PROGS(FLEX, flex, error)
+ AC_CHECK_SEARCH_RESULT($BISON, bison, Please install Bison, 1.25 or better)
+ AC_CHECK_SEARCH_RESULT($FLEX, flex, Please install Flex, 2.5 or better)
+
+ if test $BISON != "error"; then
+ bison_version=`$BISON --version| sed 's/^.*version 1.//g' `
+ if test $bison_version -lt 25; then
+ AC_STEPMAKE_WARN(Your bison is a bit old (1.$bison_version). You might have to install 1.25)
+ fi
+ fi
+
+ AC_SUBST(BISON)
+ AC_SUBST(FLEX)
+])
+
+AC_DEFUN(AC_STEPMAKE_LIB, [
+ AC_CHECK_PROGS(AR, ar, error)
+ AC_PROG_RANLIB
+
+ AC_SUBST(AR)
+ AC_SUBST(RANLIB)
+])
+
+AC_DEFUN(AC_STEPMAKE_LIBTOOL, [
+ # libtool.info ...
+ # **Never** try to set library version numbers so that they correspond
+ # to the release number of your package. This is an abuse that only
+ # fosters misunderstanding of the purpose of library versions.
+
+ REVISION=$PATCH_LEVEL
+ # CURRENT=$MINOR_VERSION
+ CURRENT=`expr $MINOR_VERSION + 1`
+ # AGE=$(expr $MAJOR_VERSION + 1)
+ AGE=$MAJOR_VERSION
+ AC_SUBST(CURRENT)
+ AC_SUBST(REVISION)
+ AC_SUBST(AGE)
+])
+
+AC_DEFUN(AC_STEPMAKE_LOCALE, [
+ lang=English
+ ALL_LINGUAS="en nl"
+
+ # with/enable ??
+ AC_ARG_WITH(localedir,
+ [ with-localedir=LOCALE use LOCALE as locale dir. Default: PREFIX/share/locale ],
+ localedir=$with_localedir,
+ localedir='${prefix}/share/locale')
+
+ AC_ARG_WITH(lang,
+ [ with-lang=LANG use LANG as language to emit messages],
+ language=$with_lang,
+ language=English)
+
+ AC_MSG_CHECKING(language)
+ case "$language" in
+ En* | en* | Am* | am* | US* | us*)
+ lang=English;;
+ NL | nl | Du* | du* | Ned* | ned*)
+ lang=Dutch;;
+ "")
+ lang=English;;
+ *)
+ lang=unknown;;
+ esac
+ AC_MSG_RESULT($lang)
+
+ if test "$lang" = "unknown" ; then
+ AC_STEPMAKE_WARN($language not supported; available are: $ALL_LINGUAS)
+ fi
+
+])
+
+AC_DEFUN(AC_STEPMAKE_GETTEXT, [
+ DIR_LOCALEDIR=${localedir}
+ presome=${prefix}
+ if test "$prefix" = "NONE"; then
+ presome=${ac_default_prefix}
+ fi
+ DIR_LOCALEDIR=`echo ${DIR_LOCALEDIR} | sed "s!\\\${prefix}!$presome!"`
+ AC_SUBST(localedir)
+ AC_SUBST(DIR_LOCALEDIR)
+ AC_DEFINE_UNQUOTED(DIR_LOCALEDIR, "${DIR_LOCALEDIR}")
+
+ AC_CHECK_LIB(intl, gettext)
+ AC_CHECK_FUNCS(gettext)
+])
+
+AC_DEFUN(AC_STEPMAKE_MAN, [
+ AC_CHECK_PROGS(TROFF, troff, -echo no troff)
+])
+
+AC_DEFUN(AC_STEPMAKE_MSGFMT, [
+ AC_CHECK_PROGS(MSGFMT, msgfmt, -echo no msgfmt)
+ AC_MSG_CHECKING(whether msgfmt accepts -o)
+ msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`"
+ if test "$msgfmt_output" = ""; then
+ AC_MSG_RESULT(yes)
+ else
+ # urg
+ MSGFMT="touch $@; echo "
+ AC_MSG_RESULT(no)
+ AC_STEPMAKE_WARN(please install msgfmt from GNU gettext)
+ fi
+])
+
+AC_DEFUN(AC_STEPMAKE_TEXMF, [
+ AC_ARG_ENABLE(tex-prefix,
+ [ enable-tex-prefix=DIR set the tex-directory to find TeX subdirectories. (default: PREFIX)],
+ [TEXPREFIX=$enableval],
+ [TEXPREFIX=auto] )
+
+ AC_ARG_ENABLE(tex-dir,
+ [ enable-tex-dir=DIR set the directory to put $PACKAGE_NAME TeX files in. ],
+ [TEXDIR=$enableval],
+ [TEXDIR=auto] )
+
+ AC_ARG_ENABLE(mf-dir,
+ [ enable-mf-dir=DIR set the directory to put $PACKAGE_NAME MetaFont files in. ],
+ [MFDIR=$enableval],
+ [MFDIR=auto])
+
+ if test "x$TEXPREFIX" = xauto ; then
+ AC_TEX_PREFIX(TEXPREFIX)
+ else
+ find_texprefix=$TEXPREFIX
+ fi
+
+ if test "x$MFDIR" = xauto; then
+ AC_MF_SUBDIR(MFDIR)
+ fi
+
+ if test "x$TEXDIR" = xauto ; then
+ AC_TEX_SUBDIR(TEXDIR)
+ fi
+
+ AC_SUBST(TEXPREFIX)
+ AC_SUBST(TEXDIR)
+ AC_SUBST(MFDIR)
+])
+
+AC_DEFUN(AC_STEPMAKE_WARN, [
+ AC_MSG_WARN($1)
+ warn_b=yes
+])
+
+AC_DEFUN(AC_STEPMAKE_YODL, [
+ if test "x$YODL" = "x"; then
+ AC_CHECK_PROGS(YODL, yodl, -echo no yodl)
+ AC_CHECK_PROGS(YODL2HTML, yodl2html, -echo no yodl)
+ AC_CHECK_PROGS(YODL2LATEX, yodl2latex, )
+ AC_CHECK_PROGS(YODL2MAN, yodl2man, -echo no yodl)
+ AC_CHECK_PROGS(YODL2TEXINFO, yodl2texinfo, -echo no yodl)
+ AC_CHECK_PROGS(YODL2TXT, yodl2txt, -echo no yodl)
+ else
+ AC_SUBST(YODL)
+ AC_SUBST(YODL2HTML)
+ AC_SUBST(YODL2LATEX)
+ AC_SUBST(YODL2MAN)
+ AC_SUBST(YODL2TEXINFO)
+ AC_SUBST(YODL2TXT)
+ export YODL YODL2HTML YODL2LATEX YODL2MAN YODL2TEXINFO YODL2TXT
+ fi
+])
+
+dnl should cache result.
+dnl should look in $prefix first.
+dnl should probably assume TDS
+
+AC_DEFUN(AC_TEX_PREFIX, [
+
+
+ AC_MSG_CHECKING(TeX/MF root dir directory)
+
+ find_root_prefix="$prefix"
+
+
+ test "x$find_root_prefix" = xNONE && find_root_prefix="$ac_default_prefix"
+ find_texpostfix="";
+ for postfix in "/lib/tex/" "/lib/texmf" "/lib" "/tex" "/texmf"; do
+ find_texprefix="$find_root_prefix$postfix"
+ if test -d $find_texprefix; then
+ find_texpostfix=$postfix
+ break;
+ fi
+ done
+
+ if test "x$find_texpostfix" = x; then
+ find_texpostfix='/lib/texmf/tex'
+ AC_STEPMAKE_WARN(Cannot determine the TeX-directory. Please use --enable-tex-prefix)
+ fi
+
+ find_texprefix="$find_root_prefix/$find_texpostfix"
+
+ # only assign if variablename not empty
+ if test x != "x[$]$1"; then
+ $1='${prefix}'/"$find_texpostfix"
+ fi
+ AC_MSG_RESULT($find_texprefix)
+
+])
+
+
+# find a directory inside a prefix,
+# $1 the prefix (expanded version)
+# $2 variable to assign
+# $3 the directory name
+# $4 description
+AC_DEFUN(AC_FIND_DIR_IN_PREFIX, [
+
+ AC_MSG_CHECKING($4 directory)
+ find_dirdir=`(cd $1;
+ $FIND ./ -type d -a -name $3 -print |sort|head -1|sed 's#^\./##')`
+
+
+ if test "x$find_dirdir" = x; then
+ find_dirdir="/$3";
+ AC_STEPMAKE_WARN(Cannot determine $4 subdirectory. Please set from command-line)
+ true
+ fi
+ $2=$find_dirdir
+ AC_MSG_RESULT($1/$find_dirdir)
+])
+
+# ugh. this is hopeless
+AC_DEFUN(AC_KPSE_TEX_DIR, [
+ kpse_paths=`(kpsepath -n latex tex; kpsepath -n tex tex) | sed 's/:/ /g' | tr ' ' '\012' |sort | uniq -d`
+ kpse_syspaths=`echo $kpse_paths | grep '!'| sed 's/!//g'`
+ echo $kpse_paths
+ if test -w "$kpse_syspaths";
+ then
+ dir=`echo $kpse_syspaths | head -1`
+ else
+ dir=`echo $kpse_paths | grep -v '!'| head -1`
+ fi
+ if test "$prefix" = "NONE"; then
+ local_prefix=$ac_default_prefix
+ local_prefix_quote='${prefix}'
+
+ else
+ local_prefix=$prefix
+ local_prefix_quote=$prefix
+ fi
+ echo $local_prefix_quote = $local_prefix
+ echo $dir
+ echo $dir | sed 's!'$local_prefix'!\$local_prefix_quote!g'
+])
+
+AC_DEFUN(AC_TEX_SUBDIR, [
+dnl AC_REQUIRE([AC_TEX_PREFIX])
+ AC_FIND_DIR_IN_PREFIX($find_texprefix, $1, tex,TeX input)
+ $1="$TEXPREFIX/$$1"
+])
+
+AC_DEFUN(AC_MF_SUBDIR, [
+dnl AC_REQUIRE([AC_TEX_PREFIX])
+ AC_FIND_DIR_IN_PREFIX($find_texprefix, $1, source, MF input)
+ $1="$TEXPREFIX/$$1"
+])
+
+AC_DEFUN(AC_CHECK_SEARCH_RESULT, [
+ result="`echo \"$1\" | grep echo`"
+ if test "x$1" = "xerror" -o "x$result" != "x"; then
+ AC_STEPMAKE_WARN(can\'t find $2. $3)
+ fi
+])
+
+# Configure paths for GTK+
+# Owen Taylor 97-11-3
+
+dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+dnl
+AC_DEFUN(AM_PATH_GTK,
+[dnl
+dnl Get the cflags and libraries from the gtk-config script
+dnl
+ AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
+ min_gtk_version=ifelse([$1], ,0.99.7,$1)
+ AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
+ no_gtk=""
+ if test "$GTK_CONFIG" != "no" ; then
+ GTK_CFLAGS=`$GTK_CONFIG --cflags`
+ GTK_LIBS=`$GTK_CONFIG --libs`
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CFLAGS="$CFLAGS $GTK_CFLAGS"
+ CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
+ LIBS="$LIBS $GTK_LIBS"
+dnl
+dnl Now check if the installed GTK is sufficiently new. (Also sanity
+dnl checks the results of gtk-config to some extent
+dnl
+ AC_TRY_RUN([
+#include <gtk/gtk.h>
+#include <stdio.h>
+
+int
+main ()
+{
+ int major, minor, micro;
+
+ if (sscanf("$min_gtk_version", "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_gtk_version");
+ exit(1);
+ }
+
+ return !((gtk_major_version > major) ||
+ ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+ ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)));
+}
+],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ LIBS="$ac_save_LIBS"
+ else
+ no_gtk=yes
+ fi
+ if test "x$no_gtk" = x ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ GTK_CFLAGS=""
+ GTK_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
+ AC_SUBST(CXXFLAGS)
+ AC_SUBST(GTK_CFLAGS)
+ AC_SUBST(GTK_LIBS)
+])
+
+
+# Configure paths for GTK--
+# Jan Nieuwenhuizen 98-06-3
+
+dnl AM_PATH_GTK__([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for GTK--, and define GTK___CFLAGS and GTK___LIBS
+dnl
+AC_DEFUN(AM_PATH_GTK__,
+[dnl
+dnl Get the cflags and libraries from the gtk__-config script
+dnl
+ min_gtk___version=ifelse([$1], ,0.9.4,$1)
+ AC_MSG_CHECKING(for GTK-- - version >= $min_gtk___version)
+ no_gtk__=""
+ if test "$GTK_CONFIG" != "no" ; then
+ GTK___CFLAGS=`$GTK_CONFIG --cflags`
+ GTK_LIBS=`$GTK_CONFIG --libs`
+ GTK___LIBS="$GTK_LIBS -lgtkmm"
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CFLAGS="$CFLAGS $GTK___CFLAGS"
+ CXXFLAGS="$CXXFLAGS $GTK___CFLAGS"
+ LIBS="$LIBS $GTK___LIBS"
+dnl
+dnl Now check if the installed GTK__ is sufficiently new. (Also sanity
+dnl checks the results of gtk__-config to some extent
+dnl
+ AC_TRY_RUN([
+#include <gtk--.h>
+#include <stdio.h>
+
+int
+main ()
+{
+ // urg
+ return 0;
+}
+],, no_gtk__=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ LIBS="$ac_save_LIBS"
+ else
+ no_gtk__=yes
+ fi
+ if test "x$no_gtk__" = x ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ GTK___CFLAGS=""
+ GTK___LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ CXXFLAGS="$CXXFLAGS $GTK___CFLAGS"
+ AC_SUBST(CXXFLAGS)
+ AC_SUBST(GTK___CFLAGS)
+ AC_SUBST(GTK___LIBS)
+])
+
diff --git a/stepmake/bin/Makefile b/stepmake/bin/Makefile
new file mode 100644
index 0000000000..5ef2288376
--- /dev/null
+++ b/stepmake/bin/Makefile
@@ -0,0 +1,10 @@
+# bin/Makefile
+
+depth = ..
+
+include $(depth)/make/Stepmake.make
+
+EXTRA_DIST_FILES = install-sh config.sub config.guess
+
+include $(stepdir)/Scripts.make
+
diff --git a/stepmake/bin/add-html-footer.py b/stepmake/bin/add-html-footer.py
new file mode 100644
index 0000000000..e8a858a0c9
--- /dev/null
+++ b/stepmake/bin/add-html-footer.py
@@ -0,0 +1,134 @@
+#!@PYTHON@
+
+"""
+Print a nice footer. add the top of the NEWS file (up to the ********)
+"""
+
+program_name = 'add-html-footer'
+version = '0.1'
+
+import sys
+import os
+from string import *
+import getopt
+import __main__
+
+fullname = "unknown"
+news_file = ''
+
+index_file=''
+banner_file = ''
+news_file=''
+news =''
+(options, files) = getopt.getopt(sys.argv[1:], 'hp:', ['help', 'news=', 'index=', 'package='])
+
+def help ():
+ sys.stdout.write ("Usage: add-html-footer [OPTION]... HTML-FILE\n"
+ "Add a nice footer, add the top of the NEWS file (up to the ********)\n\n"
+ + "Options:\n"
+ + " -h, --help print this help\n"
+ + " -p, --package=DIR specify package\n"
+ )
+ sys.exit (0)
+
+for opt in options:
+ o = opt[0]
+ a = opt[1]
+ if o == '--news':
+ news_file = a
+ elif o == '--index':
+ index_file = a
+ elif o == '-h' or o == '--help':
+ help ()
+ elif o == '-p' or o == '--package':
+ topdir = a
+
+sys.path.append (topdir + '/stepmake/bin')
+from packagepython import *
+package = Package (topdir)
+packager = Packager ()
+
+def set_vars():
+ os.environ["CONFIGSUFFIX"] = 'www';
+ if os.name == 'nt':
+ import ntpwd
+ pw = ntpwd.getpwname(os.environ['USERNAME'])
+ else:
+ import pwd
+ pw = pwd.getpwuid (os.getuid());
+
+ __main__.fullname=pw[4]
+
+set_vars ()
+
+backstr = '\n<hr>Please take me <a href=%s>back to the index</a>\n\
+of ' + package.Name + '\n'
+builtstr = '\n<hr><font size=-1>\n\
+This page was built from ' + package.name + '-%s by <p>\n\
+<address><br>%s &lt<a href=mailto:%s>%s</a>&gt</address>\n\
+<p></font>'
+
+def footstr(index):
+ s = backstr % index
+ s = s + builtstr % (version_tuple_to_str (package.version), fullname,
+ packager.mail, packager.mail)
+ return s
+
+banner = footstr (index_file)
+banner_id = '<! banner_id >'
+
+
+if news_file:
+ news = gulp_file (news_file)
+ i = regex.search ('^\*\*', news)
+ news = news[:i]
+
+def check_tag (tag, sub, s, bottom):
+ tag = lower (tag)
+ TAG = upper (tag)
+ s = regsub.sub (tag, TAG, s)
+ i = regex.search (TAG, s)
+ if i < 0:
+ if bottom:
+ s = s + sub + '\n'
+ else:
+ s = sub + '\n' + s
+ return s
+
+for f in files:
+ s = gulp_file (f)
+
+ if news_file:
+ s = regsub.sub ('top_of_NEWS', '<XMP>\n'+ news + '\n</XMP>\n', s)
+
+ s = check_tag ('<body', '', s, 0)
+ if regex.search ('<BODY', s) == -1:
+ s = '<BODY>\n' + s
+ s = regsub.sub ('<BODY>', '<BODY BGCOLOR=WHITE><FONT COLOR=BLACK>', s)
+ if regex.search (banner_id, s) == -1:
+ s = regsub.sub ('</body>', '</BODY>', s)
+ s = regsub.sub ('</BODY>', banner_id + banner + '</BODY>', s)
+ else:
+ s = check_tag ('</body>', '</BODY>', s, 1)
+
+ title = '<HEAD><TITLE>' \
+ + package.Name + ' -- ' + os.path.basename (os.path.splitext(f)[0]) \
+ + '</TITLE></HEAD>'
+ s = check_tag ('<title>', title, s, 0)
+
+ s = check_tag ('<html>', '<HTML>', s, 0)
+ s = check_tag ('</html>', '</HTML>', s, 1)
+
+ #urg
+ if regex.search ('@COUNTER_REF@', s) != -1:
+ counter = ''
+ try:
+ counter = os.environ[package.NAME + '_COUNTERPATH']
+ counter = '<hr><img src="' + counter + '">\n'
+ except:
+ pass
+ s = regsub.gsub ('@COUNTER_REF@', counter, s)
+
+ dump_file (f, s)
+
+
diff --git a/bin/config.guess b/stepmake/bin/config.guess
index 413ed41c0f..413ed41c0f 100755
--- a/bin/config.guess
+++ b/stepmake/bin/config.guess
diff --git a/bin/config.sub b/stepmake/bin/config.sub
index 213a6d47d6..213a6d47d6 100755
--- a/bin/config.sub
+++ b/stepmake/bin/config.sub
diff --git a/stepmake/bin/fake-yodl.sh b/stepmake/bin/fake-yodl.sh
new file mode 100644
index 0000000000..f28f6025e4
--- /dev/null
+++ b/stepmake/bin/fake-yodl.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+IDENTIFICATION=fake-yodl.sh
+
+OUTPUT='/dev/null'
+
+while getopts ':d:o:' OPT;
+do
+case $OPT in
+o)
+ OUTPUT=$OPTARG
+ ;;
+*)
+ ;;
+ esac
+done
+
+
+
+shift `expr $OPTIND - 1`
+#
+# Input file name
+#
+if [ "$1" = "" ]
+then
+ echo "$IDENTIFICATION: No input file name given"
+ exit 1
+fi
+
+echo Faking Yodl: copying $1 to $OUTPUT
+
+
+cp $1 $OUTPUT
diff --git a/bin/flower.py b/stepmake/bin/flower.py
index 768a56eb61..b105098ed3 100755
--- a/bin/flower.py
+++ b/stepmake/bin/flower.py
@@ -9,6 +9,7 @@
#
import sys
+from string import *
class File:
"""silly wrapper for Python file object."""
@@ -68,6 +69,7 @@ def my_find(patterns, dir = os.curdir):
list = list + found
return list
+
def multiple_find(pats, dirnames):
from find import find
l = []
diff --git a/stepmake/bin/install-dot-exe.sh b/stepmake/bin/install-dot-exe.sh
new file mode 100755
index 0000000000..c4128c5ed8
--- /dev/null
+++ b/stepmake/bin/install-dot-exe.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+# install-dot-exe.sh -- add .exe for cygnus gnu-windows
+# hack for doos install; cygnus should support rpm
+
+realinstall=install
+
+args=''
+while [ $# -ne 0 ]
+do
+ case $1 in
+ -*) args="$args $1"
+ ;;
+
+ *) if [ -f $1.exe ]; then
+ args="$args $1.exe"
+ else
+ args="$args $1"
+ fi
+ ;;
+ esac
+ shift
+done
+
+$realinstall $args
diff --git a/stepmake/bin/install-layout.sh b/stepmake/bin/install-layout.sh
new file mode 100644
index 0000000000..4e54a99564
--- /dev/null
+++ b/stepmake/bin/install-layout.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+# install-layout.sh --- build an installation layout
+#
+prefix=$HOME/usr
+dirs='bin src/patches src/releases lib/texmf/tex lib/texmf/mf/source/public'
+
+for i in $dirs; do
+ if [ ! -e $prefix/$i ]; then
+ echo +mkdir -p $prefix/$i
+ mkdir -p $prefix/$i
+ fi
+done
diff --git a/bin/install-sh b/stepmake/bin/install-sh
index 398f7f861e..398f7f861e 100755
--- a/bin/install-sh
+++ b/stepmake/bin/install-sh
diff --git a/stepmake/bin/latex2yodl.sh b/stepmake/bin/latex2yodl.sh
new file mode 100644
index 0000000000..42be94db2b
--- /dev/null
+++ b/stepmake/bin/latex2yodl.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+# latex2yodl.sh -- one time convert helper
+
+if test $# -lt 1
+then
+ echo "Usage: latex2yodl FILE...";
+ exit 2
+fi
+for i in $*
+do
+ echo $i
+ base=`basename $base .latex`
+ base=`basename $base .tex`
+ base=`basename $i .doc`
+ yo=$base.yo
+ rm -f $yo
+ perl -pe '
+ s/([a-zA-Z][a-zA-Z]*)\~/bind($1)/g;
+ s/%(.*)/COMMENT($1)/g;
+ s/\$\^{([^}]*)}$/ sups($1)/g;
+ s/\$\_{([^}]*)}$/ subs($1)/g;
+ s/\$\^(.)$/ sups($1)/g;
+ s/\$\_(.)$/ subs($1)/g;
+ s/\\appendix/appendix()/g;
+ s/\\footnote{([^}]*)}/ footnote($1)/g;
+ s/\\cite{([^}]*)}/ cite($1)/g;
+ s/(\\marginpar{[^}]*})/latexcommand($1)/g;
+ s/\\chapter *{([^}]*)}/chapter($1)/g;
+ s/\\chapter *\* *{([^}]*)}/nchapter($1)/g;
+ s/\\section *{([^}]*)}/sect($1)/g;
+ s/\\section *\* *{([^}]*)}/nsect($1)/g;
+ s/\\subsection *{([^}]*)}/subsect($1)/g;
+ s/\\subsection *\* *{([^}]*)}/nsubsect($1)/g;
+ s/\\begin{itemize}.*/itemize(/g;
+ s/\\item *{([^}]*)}/dit($1)/g;
+ s/\\item *[[]([^]]*)[]]/dit($1)/g;
+ s/\\item */it()/g;
+ s/\\(caption{[^}]*})/latexcommand(XXX$1)/g;
+ s/\\(begin{figure}.*)/latexcommand(XXX$1)/g;
+ s/\\(end{figure}.*)/latexcommand(XXX$1\n)/g;
+ s/\\begin{mudela}[[]([^]]*)[]]/mudela($1)(/g;
+ s/\\begin{mudela}.*/mudela()(/g;
+ s/\\end{mudela}/)/g;
+ s/\\(begin{table}.*)/latexcommand(XXX$1)/g;
+ s/\\(end{table}.*)/latexcommand(XXX$1)/g;
+ s/\\begin{tabular}{(.*)}/table(ncol)($1)(/g;
+ s/\\begin{verbatim}.*/verb(/g;
+ s/\\begin{([^}]*)}/$1(/g;
+ s/\\end{([^}]*)}/)/g;
+ s/{\\em ([^}]*)}/em($1)/g;
+ s/\\emph{([^}]*)}/em($1)/g;
+ s/\\ref{([^}]*)}/ref($1)/g;
+ s/\\texttt{([^}]*)}/code($1)/g;
+ s/\\file{([^}]*)}/file($1)/g;
+ s/\\label{([^}]*)}/label($1)/g;
+ s/\\verb[+]([^+]*)[+]/code($1)/g;
+ s/\\verb[|]([^|]*)[|]/code($1)/g;
+ s/XXX/\\/g;
+ ' $i > $yo
+done
+
diff --git a/stepmake/bin/ls-latex.py b/stepmake/bin/ls-latex.py
new file mode 100644
index 0000000000..e1995fc4cf
--- /dev/null
+++ b/stepmake/bin/ls-latex.py
@@ -0,0 +1,204 @@
+#!@PYTHON@
+
+# name isn't really appropriate now ...
+
+name = 'ls-latex'
+version = '0.1'
+
+import sys
+import os
+from string import *
+
+import __main__
+import glob
+import regex
+
+latex_author_re = regex.compile('\\author{\([^}]+\)}')
+latex_title_re = regex.compile('\\title{\([^}]+\)}')
+
+class Latex_head:
+ def __init__ (self):
+ self.author = ''
+ self.title = ''
+ self.date = ''
+ self.format = ''
+
+
+def read_latex_header (fn):
+ s = gulp_file (fn)
+ i = regex.search( '\\\\begin{document}', s)
+
+ if i < 0:
+ sys.stderr.write( 'Huh? empty file?')
+ s = '\\author{(unknown)}\\title{(unknown)}'
+
+ s = s[:i]
+ s = regsub.gsub('%.*$', '', s)
+ s = regsub.gsub('\n', ' ', s)
+
+ header = Latex_head()
+ header.filename= fn;
+
+ if latex_author_re.search (s) == -1 :
+ sys.stderr.write( 'huh? No author?')
+ header.author = 'unknown'
+ else:
+ header.author = latex_author_re.group (1)
+ if latex_title_re.search (s) == -1:
+ sys.stderr.write( 'huh? No title?')
+ header.title = 'unknown'
+ else:
+ header.title = latex_title_re.group (1)
+ header.outfile = fn
+ header.outfile = regsub.gsub ('\.latex$', '.ps.gz', header.outfile)
+ header.outfile = regsub.gsub ('\.tex$', '.ps.gz', header.outfile)
+ header.outfile = regsub.gsub ('\.doc$', '.ps.gz', header.outfile)
+ header.format = 'gzipped postscript'
+ return header
+
+
+bib_author_re = regex.compile('% *AUTHOR *= *\(.*\)$')
+bib_title_re = regex.compile('% *TITLE *= *\(.*\)$')
+
+def bib_header (fn):
+ s = gulp_file (fn)
+ if bib_author_re.search (s) == -1 :
+ sys.stderr.write ('gulped file: ' + fn + '\n')
+ raise 'huh?'
+
+ header = Latex_head()
+ header.filename= fn;
+ header.author = bib_author_re.group (1)
+ if bib_title_re.search (s) == -1:
+ sys.stderr.write ('gulped file: ' + fn + '\n')
+ raise 'huh?'
+ header.title = bib_title_re.group (1)
+ header.outfile = regsub.gsub ( '\.bib$', '.html' , fn)
+ header.format = 'HTML'
+ return header
+
+
+def read_pod_header (fn):
+ header = Latex_head ()
+ s = gulp_file (fn)
+ i = regex.search( '[^\n \t]', s)
+ s = s[i:]
+ i = regex.search( '\n\n', s)
+ s = s[i+2:]
+ if i < 0:
+ sys.stderr.write ('gulped file: ' + fn + '\n')
+ raise 'huh?'
+ i = regex.search( '\n\n', s)
+ header.title = s[:i]
+ header.filename = fn
+ header.outfile = regsub.gsub ('\.pod$', '.html', fn)
+ return header
+
+def read_texinfo_header (fn):
+ header = Latex_head ()
+ s = gulp_file (fn)
+ i = regex.search( '@node ', s)
+ s = s[i+5:]
+ i = regex.search( ',', s)
+ if i < 0:
+ sys.stderr.write ('gulped file: ' + fn + '\n')
+ raise 'huh?'
+ header.title = s[:i]
+ header.filename = fn
+ header.outfile = regsub.gsub ('\.texinfo$', '.html', fn)
+ header.format = 'HTML'
+ return header
+
+# urg
+# should make a 'next_parens'
+yo_article_re = regex.compile('article(\\([^)]*\\))[ \t\n]*(\\([^)]*\\))')
+yo_report_re = regex.compile('report(\\([^)]*\\))[\t\n ]*(\\([^)]*\\))')
+yo_sect_re = regex.compile('sect(\\([^)]*\\))')
+yo_chap_re = regex.compile('sect(\\([^)]*\\))')
+
+def read_yo_header (fn):
+ header = Latex_head ()
+ s = gulp_file (fn)
+ if 0:
+ pass
+ elif yo_report_re.search (s) <> -1:
+ header.author = yo_report_re.group(2)
+ header.title = yo_report_re.group(1)
+ elif yo_article_re.search (s) <> -1:
+ header.author = yo_article_re.group(2)
+ header.title = yo_article_re.group(1)
+ elif yo_chap_re.search (s) <> -1:
+ header.title = yo_chap_re.group (1)
+ elif yo_sect_re.search (s) <> -1:
+ header.title = yo_sect_re.group (1)
+ header.filename = fn
+ header.outfile = regsub.gsub ('\.yo$', '.html', fn)
+ header.format = 'HTML'
+ return header
+
+
+def print_html_head (l,o,h):
+ pre =o
+
+ l.write ('<li><a href=%s>%s (%s)</a>' % (pre + h.outfile, h.title, h.format ))
+ if h.author:
+ l.write ('<p>by %s</p>' % h.author)
+ l.write ('</li>\n')
+
+def help ():
+ sys.stdout.write ("Usage: ls-latex [OPTION]... FILE...\n"
+ "Generate html index file for FILE...\n\n"
+ + "Options:\n"
+ + " -h, --help print this help\n"
+ + " -p, --package=DIR specify package\n"
+ )
+ sys.exit (0)
+
+import getopt
+
+(options, files) = getopt.getopt(sys.argv[1:],
+ 'e:hp:', ['help', 'prefix=', 'package=', 'title='])
+
+tex = ''
+output =''
+pre = ''
+title = ''
+for opt in options:
+ o = opt[0]
+ a = opt[1]
+ if o == '--prefix':
+ pre = a
+ elif o == '--title':
+ title = a
+ elif o == '-h' or o == '--help':
+ help ()
+ elif o == '-p' or o == '--package':
+ topdir = a
+
+sys.path.append (topdir + '/stepmake/bin')
+from packagepython import *
+package = Package (topdir)
+packager = Packager ()
+
+l = sys.stdout
+
+l.write ('<html><title>%s</title><h1> %s</h1><ul>\n' % (title, title))
+
+
+for x in files:
+ if regex.search ('\\.bib$', x) <> -1:
+ head = bib_header (x)
+ elif regex.search ('\\.pod$', x) <> -1:
+ head = read_pod_header (x)
+ elif regex.search ('\\.texinfo$', x) <> -1:
+ head = read_texinfo_header (x)
+ elif regex.search ('\\.yo$', x) <> -1:
+ head = read_yo_header (x)
+ else:
+ head = read_latex_header (x)
+ if head.title == '':
+ head.title = head.filename
+ print_html_head (l, pre, head)
+
+l.write ('</ul></html>')
+
diff --git a/bin/make-version.sh b/stepmake/bin/make-version.sh
index 3be14353cb..3be14353cb 100755
--- a/bin/make-version.sh
+++ b/stepmake/bin/make-version.sh
diff --git a/stepmake/bin/ntpwd.py b/stepmake/bin/ntpwd.py
new file mode 100644
index 0000000000..a656a8dc4f
--- /dev/null
+++ b/stepmake/bin/ntpwd.py
@@ -0,0 +1,29 @@
+"""Winnt access into /etc/passwd via account name"""
+
+import sys
+import string
+
+def getpwname( name, pwfile='/etc/passwd' ):
+ "Get password record that matches the specified name"
+ try:
+ _fd = open( pwfile, 'r' )
+ except:
+ sys.stderr.write("Error unable to locate" + pwfile + "\n")
+ sys.stderr.write("Consult gnu-win32 command mkpasswd\n")
+ sys.exit(1)
+
+ _data = _fd.read()
+ _fd.close()
+
+ for _line in string.split(_data, '\n'):
+ _record=string.split( _line, ':' );
+ if _record[0] == name:
+ return _record
+ return ()
+
+def _test():
+ pw = getpwname( 'jeff' )
+ print pw[4]
+
+if __name__ == '__main__':
+ _test()
diff --git a/stepmake/bin/package-diff.py b/stepmake/bin/package-diff.py
new file mode 100644
index 0000000000..dfbbebc988
--- /dev/null
+++ b/stepmake/bin/package-diff.py
@@ -0,0 +1,282 @@
+#!@PYTHON@
+
+name = 'package-diff'
+version = '0.62'
+
+import sys
+import os
+from string import *
+import getopt
+import pipes
+
+def program_id ():
+ return name + ' ' + version;
+
+
+def mailaddress():
+ try:
+ return os.environ['MAILADDRESS']
+ except KeyError:
+ return '(address unknown)'
+
+
+def identify ():
+ sys.stdout.write (program_id () + '\n')
+
+class Flags:
+ def __init__ (self):
+ self.to_version = 0
+ self.from_version = 0
+ self.package = 0
+
+flags = Flags ()
+
+def help ():
+ sys.stdout.write (
+ 'Generate a patch to go to current version\n'
+ ' -f, --from=FROM old is FROM\n'
+ ' -h, --help print this help\n'
+ ' -p, --package=DIR specify package\n'
+ ' -r, --release diff against latest release\n'
+ ' -t, --to=TO to version TO\n'
+ ' -F, --dir-from=FROM diff from directory FROM\n'
+ ' -T, --dir-to=TO diff to directory TO\n'
+ )
+
+def untar (fn):
+ # os.system ('pwd');
+ sys.stderr.write ('untarring ' + fn + '\n')
+ os.system ('gzip --quiet -dc ' + fn + '| tar xf - ')
+ sys.stderr.flush ()
+
+def remove_automatic (dirnames):
+ files = []
+ # urg, again?
+ from flower import *
+ files = files + multiple_find (pats, dirnames)
+
+ for f in files:
+ os.remove (f)
+
+def dirname (v):
+ # urg, again?
+ from packagepython import *
+ return flags.package.name + '-' + version_tuple_to_str (v)
+
+def tarball(v):
+ return dirname (v) + '.tar.gz'
+
+def released_tarball(v):
+ return flags.package.release_dir + tarball (v)
+
+
+def remove_configure (dir):
+ os.chdir (dir)
+ # ugh
+ os.system ('rm -f *.ly')
+
+ # should do 'make distclean ?'
+ os.system ('rm -rf debian/out')
+ os.system ('rm -f Makefile config.cache config.h config.hh config.log config.make config.status')
+ os.system ('rm -f stepmake/Makefile stepmake/config.hh stepmake/config.log stepmake/config.make')
+
+ # ugh: symlinks
+ os.system ('rm -f stepmake/stepmake/stepmake')
+ os.system ('rm -f stepmake/stepmake/bin')
+
+
+# ugh, how to get rid of .tex files generated by lily?
+pats = ['.dstreamrc', 'configure', '*.diff', '*.diff.gz', '*.lsm', '*.pyc', '*.spec', '*.txt']
+
+header = 'Generated by %s using %s,\
+\nFrom = %s, To = %s\n\
+\n\
+usage \n\
+\n\
+ cd %s-source-dir; patch -E -p1 < %s\n\
+\n\
+Patches do not contain automatically generated files \n\
+or (urg) empty directories, \n\
+i.e., you should rerun autoconf, configure \n\
+and possibly make outdirs.\n\n'
+
+def makediff (fromdir, todir, patch_name):
+
+ # urg, again?
+ from packagepython import *
+
+ remove_automatic ([fromdir, todir])
+
+ # ugh
+ remove_configure (fromdir)
+ remove_configure (todir)
+ os.chdir (todir)
+
+ fromname = fromdir
+ toname = todir
+ if os.path.dirname (fromname) == os.path.dirname (toname):
+ fromname = os.path.basename (fromname)
+ toname = os.path.basename (toname)
+ fromdir = '../' + fromname
+
+ f = open (patch_name, 'w')
+ f.write (header %
+ (mailaddress (), program_id (), fromname, toname,
+ flags.package.name, os.path.basename (patch_name)))
+
+ # write state vector
+ f.write ('--state\n')
+ state_vec = gulp_file ('make/STATE-VECTOR')
+ from_str = version_tuple_to_str (flags.from_version)
+ to_str = version_tuple_to_str (flags.to_version)
+ i = regex.search (from_str, state_vec)
+ if i == -1:
+ f.write (from_str + '\n')
+ else:
+ state_vec = state_vec[i:]
+ i = regex.search (to_str, state_vec)
+ if i == -1:
+ f.write (to_str + '\n')
+ else:
+ i = i + len (version_tuple_to_str (flags.to_version)) + 1
+ state_vec = state_vec[:i]
+ f.write (state_vec)
+ f.write ('++state\n')
+ f.close ()
+
+ sys.stderr.write ('diffing to %s... ' % patch_name)
+ os.system ('pwd')
+ print ('diff -urN %s . >> %s' % (fromdir, patch_name))
+ os.system ('diff -urN %s . >> %s' % (fromdir, patch_name))
+ os.system ('gzip --quiet -9f %s' % patch_name)
+
+def main ():
+ os.environ['GZIP'] = '-q'
+ identify ()
+ print 'argv: ' + join (sys.argv[2:])
+ (options, files) = getopt.getopt (sys.argv[1:],
+ 'hF:f:o:p:rT:t:', ['from=', 'dir-from=', 'dir-to=', 'help', 'output=', 'package=', 'release', 'to='])
+
+ patch_name = ''
+ from_src = ''
+ to_src = ''
+ release=0
+ from_version=0
+ to_version=0
+ for opt in options:
+ o = opt[0]
+ a = opt[1]
+ if o == '--from' or o == '-f':
+ from_version = a
+ elif o == '--to' or o == '-t':
+ to_version = a
+ elif o == '--dir-from' or o == '-F':
+ from_src = a;
+ elif o == '--dir-to' or o == '-T':
+ to_src = a;
+ elif o == '--help' or o == '-h':
+ help ()
+ return 0;
+ elif o == '--output' or o == '-o':
+ patch_name = os.path.join (os.getcwd (), a)
+ elif o == '-p' or o == '--package':
+ topdir = a
+ elif o == '--release' or o == '-r':
+ release=1
+ else:
+ raise getopt.error
+
+ sys.path.append (topdir + '/stepmake/bin')
+ from packagepython import *
+ package = Package (topdir)
+ flags.package = package
+ packager = Packager ()
+ from flower import *
+
+ if from_src:
+ from_package = Package (from_src)
+ flags.from_version = from_package.version
+ if from_version:
+ flags.from_version = version_str_to_tuple (from_version)
+ from_src = ''
+
+ if to_src:
+ to_package = Package (to_src)
+ flags.to_version = to_package.version
+ if to_version:
+ flags.to_version = version_str_to_tuple (to_version)
+ to_src = ''
+
+ if not flags.to_version:
+ flags.to_version = package.version
+
+ if not flags.from_version:
+ flags.from_version = prev_version (flags.to_version)
+
+ # urg
+ if release:
+ flags.from_version = (flags.from_version[0],
+ flags.from_version[1], flags.from_version[2], '');
+
+ import tempfile
+ prev_cwd = os.getcwd ();
+
+ os.system ('rm -rf /tmp/package-diff')
+ try:
+ os.mkdir ('/tmp/package-diff')
+ except:
+ pass
+
+ from_diff = dirname (flags.from_version)
+ to_diff = dirname (flags.to_version)
+ if to_diff == from_diff:
+ if from_src:
+ from_diff = from_diff + '.src'
+ elif to_src:
+ to_diff = to_diff + '.src'
+ else:
+ sys.stderr.write (name + ': nothing to do: to == from == ' + from_diff + '\n')
+ sys.exit (1)
+
+ if not patch_name:
+ pn = to_diff + '.diff'
+ patch_name = os.path.join (os.getcwd (), pn)
+
+ from_diff = '/tmp/package-diff/' + from_diff
+ to_diff = '/tmp/package-diff/' + to_diff
+
+ if not from_src:
+ os.chdir ('/tmp/package-diff')
+ untar (released_tarball (flags.from_version))
+ os.chdir (prev_cwd)
+ else:
+ sys.stderr.write ('copying ' + from_src + ' to ' + from_diff + '\n')
+ # os.system ('cp -pr %s %s' % (srcdir, from_diff))
+ os.system ('mkdir -p %s '% (from_diff))
+ os.chdir (from_src)
+ os.system ('tar cf - --exclude out --exclude out-www . \
+ | tar -xf - -C %s' % from_diff)
+
+
+ if not to_src:
+ os.chdir ('/tmp/package-diff')
+ untar (released_tarball (flags.to_version))
+ os.chdir (prev_cwd)
+ else:
+ sys.stderr.write ('copying ' + to_src + ' to ' + to_diff + '\n')
+ os.system ('mkdir -p %s '% (to_diff))
+ # os.system ('cp -pr %s %s' (to_src, to_diff))%
+ os.chdir (to_src)
+ os.system ('tar -cf - --exclude out --exclude out-www . \
+ . | tar -xf - -C %s ' % to_diff)
+
+ os.chdir (to_diff)
+ makediff (from_diff, to_diff, patch_name)
+
+ os.chdir ('/tmp/package-diff')
+ sys.stderr.write ('cleaning ... ')
+ os.system ('rm -fr %s %s' % (from_diff, to_diff))
+ sys.stderr.write ('\n')
+ os.chdir (prev_cwd)
+
+main ()
diff --git a/stepmake/bin/package-zet.sh b/stepmake/bin/package-zet.sh
new file mode 100755
index 0000000000..9c8cf8ecd1
--- /dev/null
+++ b/stepmake/bin/package-zet.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# package-zet.sh --- help configure a StepMake package's sourcetree
+# normally invoked by a script like:
+#
+# zet-pack.sh ( e.g.: ". bin/zet-lily.sh")
+#
+PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'`
+package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
+#
+# You should set ${PACKAGE}_SOURCEDIR to the latest unpacked source dir,
+# it will default to:
+#
+# $sources/$package (e.g.: LILYPOND_SOURCEDIR=/home/fred/usr/src/lilypond)
+#
+
+
+PACKAGE_SOURCEDIR=`eval echo '\$'${PACKAGE}_SOURCEDIR`
+if [ "x$PACKAGE_SOURCEDIR" = "x" ]; then
+ eval ${PACKAGE}_SOURCEDIR="$prefix/src/$package"
+ export ${PACKAGE}_SOURCEDIR
+ PACKAGE_SOURCEDIR=`eval echo '\$'${PACKAGE}_SOURCEDIR`
+fi
+#
+# and create links to here, if necessary
+#
+if [ ! -r $sources ]; then
+ (cd ..; ln -s `pwd` $sources)
+fi
+#
+sourcetree=`basename \`pwd\``
+(cd ..; rm -f $package 2>&1 > /dev/null)
+(cd ..; ln -s $sourcetree $package)
+#
+mkdir -p $prefix/bin
+result=`echo $PATH | grep "$HOME/usr/bin"`
+if [ "x$result" = "x" ];then
+ PATH=$PATH:$HOME/usr/bin
+fi
+result=`echo $PATH | grep "$sources/$package/bin"`
+if [ "x$result" = "x" ];then
+ PATH=$PATH:$sources/$package/bin
+fi
diff --git a/stepmake/bin/package-zip.sh b/stepmake/bin/package-zip.sh
new file mode 100644
index 0000000000..f8c800118a
--- /dev/null
+++ b/stepmake/bin/package-zip.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+# package-zip.sh --- make a windoze distribution
+
+set -x
+
+if [ $# -lt 2 ]; then
+ echo "Usage: package-zip.sh PACKAGE_SOURCEDIR FILE..."
+ exit 2
+fi
+
+topdir=$1
+shift
+. $topdir/VERSION
+
+VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+if [ "x$MY_PATCH_LEVEL" != "x" ]; then
+ VERSION=$VERSION.$MY_PATCH_LEVEL
+fi
+
+package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
+name=$package-$VERSION
+ZIP="zip -r -9"
+builddir="/tmp/$package-doos"
+
+{ cd $topdir/..; PACKAGE_ROOTDIR=`pwd`; export PACKAGE_ROOTDIR; }
+
+zip="$PACKAGE_ROOTDIR/doos/zip/$name.exe.zip"
+
+
+if [ ! -e $PACKAGE_ROOTDIR/doos/zip ]; then
+ doo mkdir -p $PACKAGE_ROOTDIR/doos/zip
+fi
+
+set -x
+
+cd $PACKAGE_ROOTDIR/doos || exit 1
+
+rm -rf $package-*
+
+tar xzf $PACKAGE_ROOTDIR/releases/$name.tar.gz || exit 1
+cd $name
+
+export PATH=/usr/doos/bin:$PATH
+./configure --host=i386-pc-linux --target=i386-pc-cygwin32 --prefix=/usr --enable-debugging --enable-printing --enable-checking
+
+make
+rm -rf $builddir
+make prefix="$builddir/usr" DOTEXE=.exe install
+make prefix="$builddir/usr" installextradoc
+
+rm -f $zip
+(cd $builddir; $ZIP $zip $*)
+# urg
+true "Wrote: $zip"
+
+# huh?
+# ln out/$name.exe.zip $zip
+
diff --git a/stepmake/bin/packagepython.py b/stepmake/bin/packagepython.py
new file mode 100755
index 0000000000..68c7abdc67
--- /dev/null
+++ b/stepmake/bin/packagepython.py
@@ -0,0 +1,173 @@
+#!/usr/bin/python
+
+# packagepython.py -- implement general StepMake-wide python stuff
+#
+# source file of the GNU LilyPond music typesetter
+#
+# (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+# Jan Nieuwenhuizen <janneke@gnu.org>
+
+import regex
+import regsub
+from string import *
+# from flower import *
+import sys
+import os
+import getopt
+
+make_assign_re = regex.compile('^\([A-Z_]*\)=\(.*\)$')
+
+def read_makefile (fn):
+ file = open (fn)
+ lines = file.readlines()
+
+ mi = pa = mj = 0
+ mp = ''
+
+ make_dict = {}
+ for l in lines:
+ if make_assign_re.search(l) <> -1:
+ nm = make_assign_re.group(1)
+ val = make_assign_re.group(2)
+ make_dict[nm] = val
+ return make_dict
+
+class Package:
+ def __init__ (self, dirname):
+ dict = read_makefile (dirname + '/VERSION')
+ version_list = []
+ for x in [ 'MAJOR_VERSION', 'MINOR_VERSION', 'PATCH_LEVEL']:
+ version_list.append (atoi (dict[x]))
+ version_list.append (dict['MY_PATCH_LEVEL'])
+ self.topdir = dirname
+ self.groupdir = self.topdir + '/..'
+ self.patch_dir = self.groupdir + '/patches/'
+ self.release_dir = self.groupdir + '/releases/'
+ self.test_dir = self.groupdir + '/test/'
+ self.version = tuple(version_list)
+ self.Name = dict['PACKAGE_NAME']
+ self.name = lower (self.Name)
+ if self.name == 'lilypond':
+ self.nickname = 'lelie'
+ else:
+ self.nickname = self.name
+ self.NAME = upper (self.Name)
+
+
+class Packager:
+ def __init__ (self):
+ try:
+ m= os.environ['MAILADDRESS']
+ except KeyError:
+ m= '(address unknown)'
+ self.mail= m
+
+
+def full_version_tup(tup):
+ t = [0,0,0,'']
+ for i in range (4):
+ try:
+ t[i] = tup[i]
+ except IndexError:
+ break
+ return tuple(t)
+
+def split_my_patchlevel(str):
+ return (regsub.sub('[0-9]*$', '', str),
+ atoi(regsub.sub('[^0-9]*', '', str)))
+
+
+def next_version(tup):
+ l = list(full_version_tup (tup))
+ t3name=t3num=''
+ if l[3]:
+ (t3name,t3num)= split_my_patchlevel (l[3])
+ if t3num:
+ t3num = '%d' % (t3num + 1)
+ else:
+ t3num = t3name =''
+ else:
+ l[2] = l[2] +1
+
+ return tuple(l[0:3] + [t3name + t3num])
+
+def prev_version(tup):
+ l = list(full_version_tup (tup))
+ t3name=t3num=''
+ if l[3]:
+ (t3name,t3num)= split_my_patchlevel (l[3])
+ if t3num and t3num - 1 > 0:
+ t3num = '%d' %(t3num - 1)
+ else:
+ t3num = t3name =''
+
+ else:
+ l[2] = l[2] -1
+
+ return tuple(l[0:3] + [t3name + t3num])
+
+def version_tuple_to_str(tup):
+ tup = full_version_tup (tup)
+ if tup[3]:
+ my = '.' + tup[3]
+ else:
+ my = ''
+ return ('%d.%d.%d' % tup[0:3]) + my
+
+def version_str_to_tuple(str):
+ t = split(str, '.')
+ try:
+ mypatch = t[3]
+ except IndexError:
+ mypatch = ''
+ return (atoi(t[0]), atoi(t[1]), atoi(t[2]), mypatch)
+
+def version_compare (tupl, tupr):
+ tupl = full_version_tup (tupl)
+ tupr = full_version_tup (tupr)
+ for i in (0,1,2):
+ if tupl[i] - tupr[i]: return tupl[i] - tupr[i]
+ if tupl[3] and tupr[3]:
+ lname = regsub.sub('[0-9]*$', '', tupl[3])
+ lnum = atoi(regsub.sub('[^0-9]*', '', tupl[3]))
+ rname = regsub.sub('[0-9]*$', '', tupr[3])
+ rnum = atoi(regsub.sub('[^0-9]*', '', tupr[3]))
+ if lname != rname:
+ raise 'ambiguous'
+ return sign (lnum - rnum)
+ if tupl[3]:
+ return 1
+ else:
+ return -1
+
+
+if __name__ == '__main__':
+ p = Package ('.')
+ v= p.version
+ print v, prev_version(v), next_version(v)
+ pv=(0,1,1,'jcn4')
+ print version_tuple_to_str(pv), prev_version(pv), next_version(pv)
+ print version_tuple_to_str((0,1,1,''))
+ print full_version_tup ((0,1))
+
+
+def dump_file(f, s):
+ i = open(f, 'w')
+ i.write(s)
+ i.close ()
+
+def gulp_file(f):
+ try:
+ i = open(f)
+ i.seek (0, 2)
+ n = i.tell ()
+ i.seek (0,0)
+ except:
+ sys.stderr.write( 'can\'t open file %s\n ' % f)
+ return ''
+ s = i.read (n)
+ if len (s) <= 0:
+ sys.stderr.write( 'gulped empty file: %s\n'% f)
+ return s
+
+
diff --git a/stepmake/bin/pod2yodl.sh b/stepmake/bin/pod2yodl.sh
new file mode 100644
index 0000000000..a94937ee8f
--- /dev/null
+++ b/stepmake/bin/pod2yodl.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+# pod2yodl.sh -- one time convert helper
+
+if test $# -lt 1
+then
+ echo "Usage: pod2yodl FILE...";
+ exit 2
+fi
+for i in $*
+do
+ echo $i
+ base=`basename $i .in`
+ base=`basename $base .pod`
+ yo=$base.yo
+ rm -f $yo
+ perl -pe '
+ s/=head1 *(.*)/nsect($1)/g;
+ s/=head2 *(.*)/nsubsect($1)/g;
+ s/=head3 *(.*)/nsubsubsect($1)/g;
+ s/=over.*(.*)/itemize(/g;
+ s/=item *\*/it()/g;
+ s/=item *(.*)/dit($1)/g;
+ s/=back.*/)/g;
+ s/=begin.*//g;
+ s/=end.*//g;
+ s/C<([^>]*)>/code($1)/g;
+ s/F<([^>]*)>/file($1)/g;
+ s/B<([^>]*)>/bf($1)/g;
+ s/I<([^>]*)>/em($1)/g;
+ s/<[Aa] *[Hh][Rr][Ee][Ff]=\"*([^>\"])\"([^<]*)<\/[Aa]>/ url($2)($1)/g;
+ s/<[Aa] *[Hh][Rr][Ee][Ff]=\"*([^>\"])\"([^<]*)/ url($2)($1)/g;
+ s/<[Aa] *[Hh][Rr][Ee][Ff]=\"*([^>\"])\"/ url()($1)/g;
+ s/.*<\/[Aa]>/($1)/g;
+ s/<(.*@.*)>/email($1)/g;
+ s/(http:\/\/[^ ]*)/ lurl($1)/g;
+ s/(ftp:\/\/[^ ]*)/ lurl($1)/g;
+ s/@([A-Z_]*)@/verbinclude($1.in)/g;
+ ' $i > $yo
+done
+
diff --git a/stepmake/bin/release.py b/stepmake/bin/release.py
new file mode 100755
index 0000000000..6397ceb70c
--- /dev/null
+++ b/stepmake/bin/release.py
@@ -0,0 +1,74 @@
+#!@PYTHON@
+# release.py
+
+name = 'release'
+version = '0.1'
+
+import os
+import sys
+import getopt
+
+(options, files) = getopt.getopt(sys.argv[1:], 'hp:', ['help', 'package='])
+
+def help ():
+ sys.stdout.write ("Usage: release [OPTION]...\n"
+ "Make a tarball and patch and combined ../test/updeet\n\n"
+ + "Options:\n"
+ + " -h, --help print this help\n"
+ + " -p, --package=DIR specify package\n"
+ )
+ sys.exit (0)
+
+for opt in options:
+ o = opt[0]
+ a = opt[1]
+ if o == '-h' or o == '--help':
+ help ()
+ elif o == '-p' or o == '--package':
+ topdir = a
+
+sys.path.append (topdir + '/stepmake/bin')
+from packagepython import *
+package = Package (topdir)
+packager = Packager ()
+from flower import *
+
+os.chdir(package.topdir)
+status =os.system('make dist')
+if status:
+ raise 'make dist failed'
+
+cur_ver = package.version
+# urg?
+# print tarball(cur_ver)
+barbaal=package.name + '-' + version_tuple_to_str (cur_ver) + '.tar.gz'
+print barbaal
+# os.rename('out/' + tarball(cur_ver), released_tarball(cur_ver))
+# hmmm
+os.remove(package.release_dir + barbaal)
+os.link('out/' + barbaal, package.release_dir + barbaal)
+os.chdir(package.test_dir)
+os.system('set -x; rm ' + package.test_dir + package.name + '*gz')
+# os.link(released_tarball(cur_ver), tarball(cur_ver))
+os.link(package.release_dir + barbaal, barbaal)
+
+# not a module, but a script (JCN)
+# makepatch.main()
+
+# Module wherefore aren't thou Script
+# A Rose by any other name would be as blonde. --HWN
+
+# urg
+# os.system('@PYTHON@ ' + package.topdir + '/stepmake/bin/package-diff.py --package=' + topdir)
+os.system('python ' + package.topdir + '/stepmake/bin/package-diff.py --package=' + topdir)
+
+pn = package.name + '-%s' % version_tuple_to_str(cur_ver)
+pn = pn + '.diff'
+pn = pn + '.gz'
+rel_pn = package.patch_dir + pn
+
+os.rename(pn, rel_pn)
+os.link(rel_pn, pn)
+
+os.system('tar cf ' + package.nickname + ' *gz')
+
diff --git a/stepmake/bin/show-latest.sh b/stepmake/bin/show-latest.sh
new file mode 100644
index 0000000000..731efad9a3
--- /dev/null
+++ b/stepmake/bin/show-latest.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# show-latest.sh --- show latest lily
+
+# @PERL@ @step-bindir@/out/show-latest.pl --package=@package@ $*
+# urg
+#@step-bindir@/out/show-latest --the-package=@package@ $*
+if [ $# -lt 1 ]; then
+ print="-p"
+fi
+@abs-step-bindir@/out/package-latest --the-package=@package@ $* $print
+
diff --git a/stepmake/bin/stepdirs.sh b/stepmake/bin/stepdirs.sh
new file mode 100755
index 0000000000..fbda8e9b3c
--- /dev/null
+++ b/stepmake/bin/stepdirs.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+# stepdirs.sh
+
+help () {
+ echo "Usage: stepmake/bin/stepdirs.sh"
+}
+
+if [ $# -ne 0 ]; then
+ help
+ exit 2
+fi
+
+if [ ! -r stepmake ]; then
+ help
+ exit 2
+fi
+
+if [ -r VERSION ]; then
+ . ./VERSION
+ if [ "x$PACKAGE_NAME" = "xStepMake" ]; then
+ help
+ exit 2
+ fi
+fi
+
+dirs="RedHat doos patches releases test"
+
+echo -n "Checking StepMake layout..."
+for i in $dirs; do
+ if [ ! -r ../$i ]; then
+ missing="$missing ../$i"
+ fi
+done
+
+if [ "x$missing" = "x" ]; then
+ echo ok
+ exit 0
+fi
+
+echo
+
+echo "Creating missing directories:"
+for i in $missing; do
+ (set -x; mkdir $i)
+done
+
+echo done
diff --git a/stepmake/bin/stepmakeise.sh b/stepmake/bin/stepmakeise.sh
new file mode 100755
index 0000000000..2fdb05c744
--- /dev/null
+++ b/stepmake/bin/stepmakeise.sh
@@ -0,0 +1,105 @@
+#!/bin/sh
+# stepmakeise.sh
+
+help () {
+ cat <<EOF
+Usage: ../stepmake-x.x.x/bin/stepmakeise.sh
+Include or update package's StepMake.
+EOF
+}
+
+name=`basename $0`
+reldir=../releases
+stepbin=`dirname $0`
+
+if [ $# -ne 0 ]; then
+ help
+ exit 2
+fi
+
+value ()
+{
+ expression=`echo $1 | sed 's/\./ \\\\\* 100 + /g'`
+ # urg? $1=`expr $expression`
+ urg=/tmp/stepmakeise.$$
+ echo expr $expression > $urg
+ echo `. $urg`
+ rm -f $urg
+}
+
+if [ -r stepmake ]; then
+ . ./stepmake/VERSION
+ if [ "x$PACKAGE_NAME" != "xStepMake" ]; then
+ echo "$name: huh 1?"
+ exit 1
+ fi
+ echo "Stepmake found"
+ echo -n "Checking version..."
+ VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+ # urg
+ version=$VERSION
+ if [ "$MY_PATCH_LEVEL" != "" ]; then
+ VERSION=$VERSION.$MY_PATCH_LEVEL
+ fi
+ echo " $version"
+else
+ VERSION="0.0.0"
+ version=$VERSION
+fi
+
+if [ true ]; then
+ # urg
+ echo -n "Checking latest..."
+ if [ ! -r $reldir ]; then
+ echo "$name: huh 2?"
+ exit 1
+ fi
+ LATEST=`cd $reldir; ls -t1 stepmake-*.tar.gz | head -1 | sed 's!stepmake-!!' | sed 's!.tar.gz!!'`
+ # urg
+ latest=`echo $LATEST | sed 's/\.[a-zA-Z][a-zA-Z]*[0-9]*$//'`
+ latest_val=`value $latest`
+ echo " $latest"
+ version_val=`value $version`
+ if [ $latest_val -le $version_val ]; then
+ echo "relax, StepMake is up to date"
+ exit 0
+ fi
+ echo -n "Updating StepMake..."
+ (set +x; rm -rf stepmake; tar xzf $reldir/stepmake-$LATEST.tar.gz; mv stepmake-$LATEST stepmake)
+ echo "ok"
+fi
+
+if [ -r VERSION ]; then
+ echo "$name: warning: VERSION found: not stepmakeising"
+ echo "You should rerun configure"
+ rm -f Makefile
+ exit 0
+fi
+
+files="VERSION make aclocal.in configure.in config.hh.in config.make.in"
+for i in $files; do
+ if [ -r $i ]; then
+ echo "$name: can't stepmakise: $i already present"
+ exit 1
+ fi
+done
+
+echo -n "Stepmakeising..."
+for i in $files; do
+ cp -prv stepmake/$i .
+done
+
+cat <<EOF
+ok
+Please edit the folowing files to your package's needs:
+
+ VERSION
+ configure.in
+
+and look at:
+
+ make/Toplevel.make.in
+ config.hh.in
+ config.make.in
+EOF
+
diff --git a/stepmake/bin/tar-docxx.sh b/stepmake/bin/tar-docxx.sh
new file mode 100644
index 0000000000..9d20383a20
--- /dev/null
+++ b/stepmake/bin/tar-docxx.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+cwd=`pwd`
+
+if [ "$1" = "" ]; then
+ echo usage tar-docxx TARBALL
+ exit 2
+else
+ TARBALL=$1
+fi
+
+
+# mail-address
+if [ "$MAILADDRESS" != "" ]; then
+ echo mail address is $MAILADDRESS
+else
+ echo "mail-address:6: warning: \$MAILADDRESS undefined" > /dev/stderr
+ echo $USER@`hostname`
+fi
+
+
+if [ ! -e $TARBALL ]; then
+ echo $TARBALL does not exist
+ exit 2
+fi
+
+TARBALLBASE=`basename $TARBALL`
+
+TAROUTDIR=/tmp/tar-docxx
+rm -rf $TAROUTDIR
+mkdir -p $TAROUTDIR
+echo untarring ...
+tar -C $TAROUTDIR -zxf $TARBALL '*cc' '*.c' '*.hh' '*.h'
+
+cd $TAROUTDIR
+DATE=`date`
+
+cat << EOF > banner.html
+ This program documentation comes from $TARBALLBASE. It was generated by
+ $USERNAME &lt<a href="mail:$MAILADDRESS">$MAILADDRESS</a>&gt on $DATE
+EOF
+
+mkdir docxx;
+echo doc++ ...
+doc++ -pSf -B banner.html -d docxx `find -type f`
+echo tarring ...
+tar -czf $cwd/progdocs.tar.gz docxx/
+
+rm -rf $TAROUTDIR
diff --git a/stepmake/bin/template.py b/stepmake/bin/template.py
new file mode 100644
index 0000000000..d98efed96a
--- /dev/null
+++ b/stepmake/bin/template.py
@@ -0,0 +1,60 @@
+#!@PYTHON@
+
+# template.py --
+#
+# source file of the GNU LilyPond music typesetter
+#
+# (c) 1998
+
+program_name = 'template'
+version = '0.1'
+
+import os
+import sys
+
+sys.path.append ('@abs-step-bindir@')
+sys.path.append (os.environ['HOME'] + '/usr/src/lilypond/stepmake/bin')
+
+import getopt
+from string import *
+import regex
+import regsub
+import time
+
+def program_id ():
+ return program_name + ' version ' + version;
+
+def identify ():
+ sys.stdout.write (program_id () + '\n')
+
+def help ():
+ sys.stdout.write ("Usage: %s [OPTION]... [FILE]...\n"
+ "I'm not a program, use me as a template to create one\n\n"
+ + "Options:\n"
+ + " -h, --help print this help\n"
+ + " -p, --package=DIR specify package\n"
+ % (program_name)
+ )
+ sys.exit (0)
+
+identify ()
+(options, files) = getopt.getopt (
+ sys.argv[1:], 'hp:', ['help', 'package='])
+for opt in options:
+ o = opt[0]
+ a = opt[1]
+ if o == '--help' or o == '-h':
+ help ()
+ elif o == '-p' or o == '--package':
+ topdir = a
+ else:
+ print o
+ raise getopt.error
+
+sys.path.append (topdir + '/stepmake/bin')
+from packagepython import *
+package = Package (topdir)
+packager = Packager ()
+
+from flower import *
+
diff --git a/stepmake/bin/texi2man.sh b/stepmake/bin/texi2man.sh
new file mode 100644
index 0000000000..58144a0c6a
--- /dev/null
+++ b/stepmake/bin/texi2man.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+# texi2man.sh
+
+if [ $# -ne 2 ]; then
+ echo "Usage: texi2man TEXINFO-FILE MAN-FILENAME"
+ exit 2
+fi
+
+date=`date +%d/%b/%y`
+#urg
+package_name=LilyPond
+#urg urg
+version=0.1.71
+
+infile=$1
+outfile=$2
+name=`basename $1 .texinfo`
+name=`basename $name .texi`
+name=`echo $name | tr '[A-Z]' '[a-z]'`
+NAME=`echo $name | tr '[a-z]' '[A-Z]'`
+
+echo .TH\ $NAME\ 1\ \"$date\" "$package_name Documentation" >$outfile
+
+NEWLINE="
+"
+cat $infile |
+#urg, wish we could fix texi2roff :-(
+sed 's!.*\\input .*texinfo.*!!' |
+sed 's!^@chapter.*!@section NAME!' |
+# sed 's!^@node *[Ii]nvoking.*!@section SYNOPSIS!' |
+sed 's!^@node.*!!' |
+# perl -pe "{s/\@node ([^,]*).*/\@section /;\$i=\$1; \$i=~tr [a-z] [A-Z]; chop; \$_.=\$i . \"\n\";}" |
+perl -pe "{s/\@section (.*)/\@section /;\$i=\$1; \$i=~tr [a-z] [A-Z]; chop; \$_.=\$i . \"\n\";}" |
+sed 's!^@subsection .*!!' |
+sed 's!^@c *@texi2man@!@!' |
+perl -pe "s/\@url{([^}]*)}/\$1/" |
+perl -pe "s/\@email{([^},]*)}/<\$1>/" |
+perl -pe "s/\@email{([^},]*),([^}]*)}/\$2, <\$1>/" |
+sed "s!DESCRIPTION!& NEWLINE\
+This manual page was automatically generated from $infile by $0. For more details, please refer to the info pages: NEWLINE\
+ info $name NEWLINE\
+!" |
+sed "s!NEWLINE!\\$NEWLINE!g" |
+# debugging:
+tee $infile.texi2roff |
+texi2roff -ms |
+sed 's!^\.ds __ !.SH !' |
+# /\&\n(H1.\n(H2 \*(__
+sed 's!.*(H1.*!!' |
+cat >> $outfile
+
diff --git a/stepmake/bin/text2html.sh b/stepmake/bin/text2html.sh
new file mode 100644
index 0000000000..0547aaeb8d
--- /dev/null
+++ b/stepmake/bin/text2html.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+# text2html.sh
+
+if [ $# -ne 2 ]; then
+ echo "Usage: text2html TEXT-FILE HTML-FILENAME"
+ exit 2
+fi
+
+infile=$1
+outfile=$2
+rm -f $outfile
+echo "<body>" > $outfile
+echo "<xmp>" >> $outfile
+cat $infile >> $outfile
+echo "</xmp>" >> $outfile
+echo "</body>" >> $outfile
+
diff --git a/stepmake/bin/zet-step.sh b/stepmake/bin/zet-step.sh
new file mode 100755
index 0000000000..b45e937d3d
--- /dev/null
+++ b/stepmake/bin/zet-step.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+# zet-step.sh --- configure StepMake sourcetree
+# nice in first character unique name
+#
+export PACKAGE_NAME=StepMake
+prefix=$HOME/usr
+#
+#
+. ./stepmake/bin/package-zet.sh
+#
+# The package root dir looks like this:
+#
+# <SEE INSTALL.txt>
+#
+# ln -sf $STEPMAKEL_SOURCEDIR/src/stepmake/out/step $prefix/bin/step
+
+./configure --prefix=$prefix
+
diff --git a/stepmake/config.hh.in b/stepmake/config.hh.in
new file mode 100644
index 0000000000..1efa897fc2
--- /dev/null
+++ b/stepmake/config.hh.in
@@ -0,0 +1,14 @@
+/* @configure_input@ */
+
+/* Hmm */
+#define PACKAGE "@package@"
+
+/* Toplevel version */
+#define TOPLEVEL_VERSION "@TOPLEVEL_VERSION@"
+
+/* default init and input dir */
+#define DIR_DATADIR "@DIR_DATADIR@"
+
+/* default locale dir */
+#define DIR_LOCALEDIR "@DIR_LOCALEDIR@"
+
diff --git a/stepmake/config.make.in b/stepmake/config.make.in
new file mode 100644
index 0000000000..23f15f87a2
--- /dev/null
+++ b/stepmake/config.make.in
@@ -0,0 +1,59 @@
+# -*-Makefile-*-
+
+# @configure_input@
+
+package-depth = @package_depth@
+
+INSTALL = @INSTALL@
+USER_CXXFLAGS = @CXXFLAGS@ @CPPFLAGS@
+USER_LDFLAGS =
+
+CC = @CC@
+CXX = @CXX@
+GCC = @GCC@
+LD = @LD@
+PACKAGE = @PACKAGE@
+package = @package@
+PACKAGE_NAME = @PACKAGE_NAME@
+stepmake = @stepmake@
+CONFIGSUFFIX = @CONFIGSUFFIX@
+MAKEINFO = @MAKEINFO@
+ICFLAGS = @ICFLAGS@
+ILDFLAGS = @ILDFLAGS@
+libdir = @libdir@
+prefix = @prefix@
+TEXPREFIX = @TEXPREFIX@
+TEXDIR = @TEXDIR@
+MFDIR = @MFDIR@
+mandir = @mandir@
+infodir = @infodir@
+exec_prefix = @exec_prefix@
+bindir = @bindir@
+includedir = @includedir@
+datadir = @datadir@
+localedir = @localedir@
+EXTRA_LIBES = @EXTRA_LIBES@ @LIBS@
+RANLIB = @RANLIB@
+DEFS = @DEFS@
+#SET_MAKE = @SET_MAKE@
+DEFINES = @DEFS@ @DEFINES@
+COMPILEINFO = @COMPILEINFO@
+DOTEXE = @DOTEXE@
+BASH = @BASH@
+BISON = @BISON@
+FIND = @FIND@
+FLEX = @FLEX@
+LN = @LN@
+MSGFMT = @MSGFMT@
+PERL = @PERL@
+PYTHON = @PYTHON@
+TAR= @TAR@
+TROFF = @TROFF@
+YODL= @YODL@
+YODL2HTML= @YODL2HTML@
+YODL2LATEX= @YODL2LATEX@
+YODL2MAN= @YODL2MAN@
+YODL2TEXINFO= @YODL2TEXINFO@
+YODL2TXT= @YODL2TXT@
+ZIP = @ZIP@
+
diff --git a/stepmake/configure b/stepmake/configure
new file mode 100755
index 0000000000..d77a257f2a
--- /dev/null
+++ b/stepmake/configure
@@ -0,0 +1,1585 @@
+#! /bin/sh
+
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.12
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Defaults:
+ac_help=
+ac_default_prefix=/usr/local
+# Any additions from configure.in:
+ac_help="$ac_help
+ enable-config=FILE put configure settings in config-FILE.make"
+ac_help="$ac_help
+ with-localedir=LOCALE use LOCALE as locale dir. Default: PREFIX/share/locale "
+ac_help="$ac_help
+ with-lang=LANG use LANG as language to emit messages"
+
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+build=NONE
+cache_file=./config.cache
+exec_prefix=NONE
+host=NONE
+no_create=
+nonopt=NONE
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+target=NONE
+verbose=
+x_includes=NONE
+x_libraries=NONE
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Initialize some other variables.
+subdirs=
+MFLAGS= MAKEFLAGS=
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
+
+ac_prev=
+for ac_option
+do
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ case "$ac_option" in
+ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) ac_optarg= ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case "$ac_option" in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir="$ac_optarg" ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build="$ac_optarg" ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file="$ac_optarg" ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir="$ac_optarg" ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ eval "enable_${ac_feature}=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix="$ac_optarg" ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he)
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+ --cache-file=FILE cache test results in FILE
+ --help print this message
+ --no-create do not create output files
+ --quiet, --silent do not print \`checking...' messages
+ --version print the version of autoconf that created configure
+Directory and file names:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [same as prefix]
+ --bindir=DIR user executables in DIR [EPREFIX/bin]
+ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
+ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data in DIR
+ [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data in DIR
+ [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
+ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
+ --includedir=DIR C header files in DIR [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
+ --infodir=DIR info documentation in DIR [PREFIX/info]
+ --mandir=DIR man documentation in DIR [PREFIX/man]
+ --srcdir=DIR find the sources in DIR [configure dir or ..]
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM
+ run sed PROGRAM on installed program names
+EOF
+ cat << EOF
+Host type:
+ --build=BUILD configure for building on BUILD [BUILD=HOST]
+ --host=HOST configure for HOST [guessed]
+ --target=TARGET configure for TARGET [TARGET=HOST]
+Features and packages:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --x-includes=DIR X include files are in DIR
+ --x-libraries=DIR X library files are in DIR
+EOF
+ if test -n "$ac_help"; then
+ echo "--enable and --with options recognized:$ac_help"
+ fi
+ exit 0 ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host="$ac_optarg" ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir="$ac_optarg" ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir="$ac_optarg" ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir="$ac_optarg" ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir="$ac_optarg" ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir="$ac_optarg" ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir="$ac_optarg" ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir="$ac_optarg" ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix="$ac_optarg" ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix="$ac_optarg" ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix="$ac_optarg" ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name="$ac_optarg" ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir="$ac_optarg" ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir="$ac_optarg" ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site="$ac_optarg" ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir="$ac_optarg" ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir="$ac_optarg" ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target="$ac_optarg" ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers)
+ echo "configure generated by autoconf version 2.12"
+ exit 0 ;;
+
+ -with-* | --with-*)
+ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_${ac_package}='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ eval "with_${ac_package}=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes="$ac_optarg" ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries="$ac_optarg" ;;
+
+ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+ ;;
+
+ *)
+ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+ echo "configure: warning: $ac_option: invalid host type" 1>&2
+ fi
+ if test "x$nonopt" != xNONE; then
+ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+ fi
+ nonopt="$ac_option"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+fi
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+ exec 6>/dev/null
+else
+ exec 6>&1
+fi
+exec 5>./config.log
+
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
+do
+ case "$ac_arg" in
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c) ;;
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+ esac
+done
+
+# NLS nuisances.
+# Only set these to C if already set. These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+ac_unique_file=make/stepmake.lsm.in
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_prog=$0
+ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+ else
+ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+ fi
+fi
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ echo "loading site script $ac_site_file"
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ echo "loading cache $cache_file"
+ . $cache_file
+else
+ echo "creating cache $cache_file"
+ > $cache_file
+fi
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+ ac_n= ac_c='
+' ac_t=' '
+ else
+ ac_n=-n ac_c= ac_t=
+ fi
+else
+ ac_n= ac_c='\c' ac_t=
+fi
+
+
+
+
+# Bootstrap StepMake configure
+
+
+ . $srcdir/VERSION
+ FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+ if test x$MY_PATCH_LEVEL != x; then
+ FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL
+ fi
+
+ # urg: don't "fix" this: irix doesn't know about [:lower:] and [:upper:]
+ PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'`
+ package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
+
+ if test "x$PACKAGE" = "xSTEPMAKE"; then
+ echo Stepmake package!
+ (cd stepmake; rm -f stepmake; ln -s ../stepmake .)
+ (cd stepmake; rm -f bin; ln -s ../bin .)
+ ac_aux_dir=
+for ac_dir in bin $srcdir/bin; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { echo "configure: error: can not find install-sh or install.sh in bin $srcdir/bin" 1>&2; exit 1; }
+fi
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+
+ else
+ echo Package: $PACKAGE
+ ac_aux_dir=
+for ac_dir in stepmake/bin $srcdir/stepmake/bin; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { echo "configure: error: can not find install-sh or install.sh in stepmake/bin $srcdir/stepmake/bin" 1>&2; exit 1; }
+fi
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+
+ fi
+
+
+
+
+ cat >> confdefs.h <<EOF
+#define PACKAGE "${PACKAGE_NAME}"
+EOF
+
+ cat >> confdefs.h <<EOF
+#define TOPLEVEL_VERSION "${FULL_VERSION}"
+EOF
+
+
+ package_depth=`dirname $cache_file`
+
+
+ AUTOGENERATE="This file was automatically generated by configure"
+
+ absolute_builddir="`pwd`"
+
+
+ # No versioning on directory names of sub-packages
+ stepmake=stepmake
+
+
+ CONFIGSUFFIX=
+ # Check whether --enable-config or --disable-config was given.
+if test "${enable_config+set}" = set; then
+ enableval="$enable_config"
+ CONFIGSUFFIX=$enableval
+fi
+
+
+ if test "$CONFIGSUFFIX" != "" ; then
+ CONFIGFILE=config-$CONFIGSUFFIX
+ else
+ CONFIGFILE=config
+ fi
+
+
+
+# Make sure we can run config.sub.
+if $ac_config_sub sun4 >/dev/null 2>&1; then :
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking host system type""... $ac_c" 1>&6
+echo "configure:635: checking host system type" >&5
+
+host_alias=$host
+case "$host_alias" in
+NONE)
+ case $nonopt in
+ NONE)
+ if host_alias=`$ac_config_guess`; then :
+ else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+ fi ;;
+ *) host_alias=$nonopt ;;
+ esac ;;
+esac
+
+host=`$ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
+
+ for ac_prog in make
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:660: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$MAKE"; then
+ ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_MAKE="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+MAKE="$ac_cv_prog_MAKE"
+if test -n "$MAKE"; then
+ echo "$ac_t""$MAKE" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$MAKE" && break
+done
+test -n "$MAKE" || MAKE="error"
+
+ for ac_prog in find
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:694: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$FIND"; then
+ ac_cv_prog_FIND="$FIND" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_FIND="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+FIND="$ac_cv_prog_FIND"
+if test -n "$FIND"; then
+ echo "$ac_t""$FIND" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$FIND" && break
+done
+test -n "$FIND" || FIND="error"
+
+
+
+
+ for ac_prog in tar
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:731: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$TAR"; then
+ ac_cv_prog_TAR="$TAR" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_TAR="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+TAR="$ac_cv_prog_TAR"
+if test -n "$TAR"; then
+ echo "$ac_t""$TAR" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$TAR" && break
+done
+test -n "$TAR" || TAR="error"
+
+ for ac_prog in bash
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:765: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_BASH'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$BASH"; then
+ ac_cv_prog_BASH="$BASH" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_BASH="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+BASH="$ac_cv_prog_BASH"
+if test -n "$BASH"; then
+ echo "$ac_t""$BASH" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$BASH" && break
+done
+test -n "$BASH" || BASH="/bin/sh"
+
+
+ # Extract the first word of "python", so it can be a program name with args.
+set dummy python; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:798: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ case "$PYTHON" in
+ /*)
+ ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_path_PYTHON="$ac_dir/$ac_word"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON="-echo no python"
+ ;;
+esac
+fi
+PYTHON="$ac_cv_path_PYTHON"
+if test -n "$PYTHON"; then
+ echo "$ac_t""$PYTHON" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
+
+
+
+ result="`echo \"$MAKE\" | grep echo`"
+ if test "x$MAKE" = "xerror" -o "x$result" != "x"; then
+
+ echo "configure: warning: can\'t find GNU make. You should install GNU make" 1>&2
+ warn_b=yes
+
+ fi
+
+ if test $MAKE != "error" ; then
+ $MAKE -v| grep GNU > /dev/null
+ if test "$?" = 1
+ then
+
+ echo "configure: warning: Please install *GNU* make" 1>&2
+ warn_b=yes
+
+ fi
+ fi
+
+
+ result="`echo \"$PYTHON\" | grep echo`"
+ if test "x$PYTHON" = "xerror" -o "x$result" != "x"; then
+
+ echo "configure: warning: can\'t find python. You should install Python" 1>&2
+ warn_b=yes
+
+ fi
+
+
+ if test "x$OSTYPE" = "xcygwin32" || test "x$OSTYPE" = "xWindows_NT"; then
+ LN=cp # hard link does not work under cygnus-nt (yet?)
+ ZIP="zip -r -9" #
+ DOTEXE=.exe
+ else
+ LN=ln
+ ZIP="zip -r -9"
+ fi
+
+
+
+
+
+ if test "$datadir" = "\${prefix}/share"; then
+ datadir='${prefix}/share/'$package
+ fi
+ DIR_DATADIR=${datadir}
+ presome=${prefix}
+ if test "$prefix" = "NONE"; then
+ presome=${ac_default_prefix}
+ fi
+ DIR_DATADIR=`echo ${DIR_DATADIR} | sed "s!\\\${prefix}!$presome!"`
+
+
+ cat >> confdefs.h <<EOF
+#define DIR_DATADIR "${DIR_DATADIR}"
+EOF
+
+
+
+
+# For all packages except the StepMake package itself
+# AC_CONFIG_SUBDIRS(stepmake)
+
+# Uncomment the configuration options your package needs.
+# AC_STEPMAKE_COMPILE
+# AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h)
+# AC_STEPMAKE_CXX
+# AC_STEPMAKE_GXX
+# AC_STEPMAKE_CXXTEMPLATE
+# AC_STEPMAKE_LEXYACC
+# AC_STEPMAKE_LIB
+# AC_STEPMAKE_LIBTOOL
+
+ lang=English
+ ALL_LINGUAS="en nl"
+
+ # with/enable ??
+ # Check whether --with-localedir or --without-localedir was given.
+if test "${with_localedir+set}" = set; then
+ withval="$with_localedir"
+ localedir=$with_localedir
+else
+ localedir='${prefix}/share/locale'
+fi
+
+
+ # Check whether --with-lang or --without-lang was given.
+if test "${with_lang+set}" = set; then
+ withval="$with_lang"
+ language=$with_lang
+else
+ language=English
+fi
+
+
+ echo $ac_n "checking language""... $ac_c" 1>&6
+echo "configure:927: checking language" >&5
+ case "$language" in
+ En* | en* | Am* | am* | US* | us*)
+ lang=English;;
+ NL | nl | Du* | du* | Ned* | ned*)
+ lang=Dutch;;
+ "")
+ lang=English;;
+ *)
+ lang=unknown;;
+ esac
+ echo "$ac_t""$lang" 1>&6
+
+ if test "$lang" = "unknown" ; then
+
+ echo "configure: warning: $language not supported; available are: $ALL_LINGUAS" 1>&2
+ warn_b=yes
+
+ fi
+
+
+# AC_STEPMAKE_GETTEXT
+# AC_STEPMAKE_MAN
+# AC_STEPMAKE_MSGFMT
+# AC_STEPMAKE_TEXMF
+
+ if test "x$YODL" = "x"; then
+ for ac_prog in yodl
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:959: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$YODL"; then
+ ac_cv_prog_YODL="$YODL" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_YODL="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+YODL="$ac_cv_prog_YODL"
+if test -n "$YODL"; then
+ echo "$ac_t""$YODL" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$YODL" && break
+done
+test -n "$YODL" || YODL="-echo no yodl"
+
+ for ac_prog in yodl2html
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:993: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL2HTML'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$YODL2HTML"; then
+ ac_cv_prog_YODL2HTML="$YODL2HTML" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_YODL2HTML="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+YODL2HTML="$ac_cv_prog_YODL2HTML"
+if test -n "$YODL2HTML"; then
+ echo "$ac_t""$YODL2HTML" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$YODL2HTML" && break
+done
+test -n "$YODL2HTML" || YODL2HTML="-echo no yodl"
+
+ for ac_prog in yodl2latex
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1027: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL2LATEX'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$YODL2LATEX"; then
+ ac_cv_prog_YODL2LATEX="$YODL2LATEX" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_YODL2LATEX="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+YODL2LATEX="$ac_cv_prog_YODL2LATEX"
+if test -n "$YODL2LATEX"; then
+ echo "$ac_t""$YODL2LATEX" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$YODL2LATEX" && break
+done
+
+ for ac_prog in yodl2man
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1060: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL2MAN'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$YODL2MAN"; then
+ ac_cv_prog_YODL2MAN="$YODL2MAN" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_YODL2MAN="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+YODL2MAN="$ac_cv_prog_YODL2MAN"
+if test -n "$YODL2MAN"; then
+ echo "$ac_t""$YODL2MAN" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$YODL2MAN" && break
+done
+test -n "$YODL2MAN" || YODL2MAN="-echo no yodl"
+
+ for ac_prog in yodl2texinfo
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1094: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL2TEXINFO'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$YODL2TEXINFO"; then
+ ac_cv_prog_YODL2TEXINFO="$YODL2TEXINFO" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_YODL2TEXINFO="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+YODL2TEXINFO="$ac_cv_prog_YODL2TEXINFO"
+if test -n "$YODL2TEXINFO"; then
+ echo "$ac_t""$YODL2TEXINFO" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$YODL2TEXINFO" && break
+done
+test -n "$YODL2TEXINFO" || YODL2TEXINFO="-echo no yodl"
+
+ for ac_prog in yodl2txt
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1128: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_YODL2TXT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$YODL2TXT"; then
+ ac_cv_prog_YODL2TXT="$YODL2TXT" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_YODL2TXT="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+YODL2TXT="$ac_cv_prog_YODL2TXT"
+if test -n "$YODL2TXT"; then
+ echo "$ac_t""$YODL2TXT" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$YODL2TXT" && break
+done
+test -n "$YODL2TXT" || YODL2TXT="-echo no yodl"
+
+ else
+
+
+
+
+
+
+ export YODL YODL2HTML YODL2LATEX YODL2MAN YODL2TEXINFO YODL2TXT
+ fi
+
+
+# AM_PATH_GTK(1.0.0,,AC_MSG_ERROR([please install proper version of gtk]))
+# AM_PATH_GTK__(0.9.4,,AC_MSG_ERROR([please install proper version of gtk--]))
+
+for ac_prog in makeinfo
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1176: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$MAKEINFO"; then
+ ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_MAKEINFO="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+MAKEINFO="$ac_cv_prog_MAKEINFO"
+if test -n "$MAKEINFO"; then
+ echo "$ac_t""$MAKEINFO" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$MAKEINFO" && break
+done
+test -n "$MAKEINFO" || MAKEINFO="error"
+
+# AC_CHECK_SEARCH_RESULT($YODL2TEXINFO, yodl,
+# You should install Yodl 1.30.pre6 or better)
+
+
+ trap '' 1 2 15
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs. It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already. You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+ case `(ac_space=' '; set) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote substitution
+ # turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ -e "s/'/'\\\\''/g" \
+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+ ;;
+ esac >> confcache
+if cmp -s $cache_file confcache; then
+ :
+else
+ if test -w $cache_file; then
+ echo "updating cache $cache_file"
+ cat confcache > $cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
+fi
+
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+DEFS=-DHAVE_CONFIG_H
+
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+
+echo creating $CONFIG_STATUS
+rm -f $CONFIG_STATUS
+cat > $CONFIG_STATUS <<EOF
+#! /bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+do
+ case "\$ac_option" in
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+ echo "$CONFIG_STATUS generated by autoconf version 2.12"
+ exit 0 ;;
+ -help | --help | --hel | --he | --h)
+ echo "\$ac_cs_usage"; exit 0 ;;
+ *) echo "\$ac_cs_usage"; exit 1 ;;
+ esac
+done
+
+ac_given_srcdir=$srcdir
+
+trap 'rm -fr `echo "$CONFIGFILE.make:config.make.in $CONFIGFILE.hh:config.hh.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+# Protect against being on the right side of a sed subst in config.status.
+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
+$ac_vpsub
+$extrasub
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@bindir@%$bindir%g
+s%@sbindir@%$sbindir%g
+s%@libexecdir@%$libexecdir%g
+s%@datadir@%$datadir%g
+s%@sysconfdir@%$sysconfdir%g
+s%@sharedstatedir@%$sharedstatedir%g
+s%@localstatedir@%$localstatedir%g
+s%@libdir@%$libdir%g
+s%@includedir@%$includedir%g
+s%@oldincludedir@%$oldincludedir%g
+s%@infodir@%$infodir%g
+s%@mandir@%$mandir%g
+s%@package@%$package%g
+s%@PACKAGE@%$PACKAGE%g
+s%@PACKAGE_NAME@%$PACKAGE_NAME%g
+s%@package_depth@%$package_depth%g
+s%@AUTOGENERATE@%$AUTOGENERATE%g
+s%@absolute_builddir@%$absolute_builddir%g
+s%@stepmake@%$stepmake%g
+s%@CONFIGSUFFIX@%$CONFIGSUFFIX%g
+s%@host@%$host%g
+s%@host_alias@%$host_alias%g
+s%@host_cpu@%$host_cpu%g
+s%@host_vendor@%$host_vendor%g
+s%@host_os@%$host_os%g
+s%@MAKE@%$MAKE%g
+s%@FIND@%$FIND%g
+s%@TAR@%$TAR%g
+s%@BASH@%$BASH%g
+s%@PYTHON@%$PYTHON%g
+s%@DOTEXE@%$DOTEXE%g
+s%@ZIP@%$ZIP%g
+s%@LN@%$LN%g
+s%@DIR_DATADIR@%$DIR_DATADIR%g
+s%@YODL@%$YODL%g
+s%@YODL2HTML@%$YODL2HTML%g
+s%@YODL2LATEX@%$YODL2LATEX%g
+s%@YODL2MAN@%$YODL2MAN%g
+s%@YODL2TEXINFO@%$YODL2TEXINFO%g
+s%@YODL2TXT@%$YODL2TXT%g
+s%@MAKEINFO@%$MAKEINFO%g
+
+CEOF
+EOF
+
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+ else
+ sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+ fi
+ if test ! -s conftest.s$ac_file; then
+ ac_more_lines=false
+ rm -f conftest.s$ac_file
+ else
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f conftest.s$ac_file"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+ fi
+ ac_file=`expr $ac_file + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_cmds`
+ fi
+done
+if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+fi
+EOF
+
+cat >> $CONFIG_STATUS <<EOF
+
+CONFIG_FILES=\${CONFIG_FILES-"$CONFIGFILE.make:config.make.in"}
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
+ esac
+
+ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+ else
+ ac_dir_suffix= ac_dots=
+ fi
+
+ case "$ac_given_srcdir" in
+ .) srcdir=.
+ if test -z "$ac_dots"; then top_srcdir=.
+ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+ *) # Relative path.
+ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+ top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+
+ echo creating "$ac_file"
+ rm -f "$ac_file"
+ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+ case "$ac_file" in
+ *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+ *) ac_comsub= ;;
+ esac
+
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+rm -f conftest.s*
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='\([ ]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+if test "${CONFIG_HEADERS+set}" != set; then
+EOF
+cat >> $CONFIG_STATUS <<EOF
+ CONFIG_HEADERS="$CONFIGFILE.hh:config.hh.in"
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
+ esac
+
+ echo creating $ac_file
+
+ rm -f conftest.frag conftest.in conftest.out
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ cat $ac_file_inputs > conftest.in
+
+EOF
+
+# Transform confdefs.h into a sed script conftest.vals that substitutes
+# the proper values into config.h.in to produce config.h. And first:
+# Protect against being on the right side of a sed subst in config.status.
+# Protect against being in an unquoted here document in config.status.
+rm -f conftest.vals
+cat > conftest.hdr <<\EOF
+s/[\\&%]/\\&/g
+s%[\\$`]%\\&%g
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%ac_d%ac_u%gp
+s%ac_u%ac_e%gp
+EOF
+sed -n -f conftest.hdr confdefs.h > conftest.vals
+rm -f conftest.hdr
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >> conftest.vals <<\EOF
+s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
+EOF
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+rm -f conftest.tail
+while :
+do
+ ac_lines=`grep -c . conftest.vals`
+ # grep -c gives empty output for an empty file on some AIX systems.
+ if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+ # Write a limited-size here document to conftest.frag.
+ echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+ echo 'CEOF
+ sed -f conftest.frag conftest.in > conftest.out
+ rm -f conftest.in
+ mv conftest.out conftest.in
+' >> $CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+ rm -f conftest.vals
+ mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
+cat >> $CONFIG_STATUS <<\EOF
+ rm -f conftest.frag conftest.h
+ echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
+ cat conftest.in >> conftest.h
+ rm -f conftest.in
+ if cmp -s $ac_file conftest.h 2>/dev/null; then
+ echo "$ac_file is unchanged"
+ rm -f conftest.h
+ else
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ fi
+ rm -f $ac_file
+ mv conftest.h $ac_file
+ fi
+fi; done
+
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+
+exit 0
+EOF
+chmod +x $CONFIG_STATUS
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+
+
+ rm -f Makefile
+ cp make/Toplevel.make.in ./Makefile
+ chmod 444 Makefile
+
diff --git a/stepmake/configure.in b/stepmake/configure.in
new file mode 100644
index 0000000000..30b29f450c
--- /dev/null
+++ b/stepmake/configure.in
@@ -0,0 +1,37 @@
+dnl configure.in -*-shell-script-*-
+dnl Process this file with autoconf to produce a configure script.
+
+# Bootstrap the init proces. List a file identifies your package.
+AC_INIT(make/stepmake.lsm.in)
+AC_CONFIG_HEADER($CONFIGFILE.hh:config.hh.in)
+
+# Bootstrap StepMake configure
+AC_STEPMAKE_INIT
+
+# For all packages except the StepMake package itself
+# AC_CONFIG_SUBDIRS(stepmake)
+
+# Uncomment the configuration options your package needs.
+# AC_STEPMAKE_COMPILE
+# AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h)
+# AC_STEPMAKE_CXX
+# AC_STEPMAKE_GXX
+# AC_STEPMAKE_CXXTEMPLATE
+# AC_STEPMAKE_LEXYACC
+# AC_STEPMAKE_LIB
+# AC_STEPMAKE_LIBTOOL
+AC_STEPMAKE_LOCALE
+# AC_STEPMAKE_GETTEXT
+# AC_STEPMAKE_MAN
+# AC_STEPMAKE_MSGFMT
+# AC_STEPMAKE_TEXMF
+AC_STEPMAKE_YODL
+
+# AM_PATH_GTK(1.0.0,,AC_MSG_ERROR([please install proper version of gtk]))
+# AM_PATH_GTK__(0.9.4,,AC_MSG_ERROR([please install proper version of gtk--]))
+
+AC_CHECK_PROGS(MAKEINFO, makeinfo, error)
+# AC_CHECK_SEARCH_RESULT($YODL2TEXINFO, yodl,
+# You should install Yodl 1.30.pre6 or better)
+
+AC_STEPMAKE_END
diff --git a/stepmake/make/Makefile b/stepmake/make/Makefile
new file mode 100644
index 0000000000..719d05f303
--- /dev/null
+++ b/stepmake/make/Makefile
@@ -0,0 +1,9 @@
+# file make/Makefile
+
+depth = ..
+
+include $(depth)/make/Stepmake.make
+BLURBS=BLURB # COPERTINA FLAPTEKST
+
+include $(stepdir)/Makedir.shared.make
+
diff --git a/stepmake/make/Rules.make b/stepmake/make/Rules.make
new file mode 100644
index 0000000000..38dafc0f24
--- /dev/null
+++ b/stepmake/make/Rules.make
@@ -0,0 +1,8 @@
+# title package specific rules
+# file make/Rules.lilymake.make
+
+$(outdir)/%: %.in
+ rm -f $@
+ cat $< | $(sed-atfiles) | $(sed-atvariables) > $@
+
+
diff --git a/stepmake/make/STATE-VECTOR b/stepmake/make/STATE-VECTOR
new file mode 100644
index 0000000000..29637a2eba
--- /dev/null
+++ b/stepmake/make/STATE-VECTOR
@@ -0,0 +1,18 @@
+0.1.26
+0.1.26.jcn1
+0.1.26.hwn1
+0.1.26.jcn2
+0.1.26.jcn3
+0.1.27
+0.1.28
+0.1.29
+0.1.30
+0.1.32
+0.1.33
+0.1.34
+0.1.35
+0.1.36
+0.1.37
+0.1.38
+0.1.39
+0.1.40
diff --git a/stepmake/make/Stepmake.make b/stepmake/make/Stepmake.make
new file mode 100644
index 0000000000..a1e6cdbe92
--- /dev/null
+++ b/stepmake/make/Stepmake.make
@@ -0,0 +1,20 @@
+# make/Stepmake.make
+
+include $(depth)/make/Toplevel_version.make
+
+# Don't try to outsmart us, you puny computer!
+ifeq (0,${MAKELEVEL})
+ MAKE:=$(MAKE) --no-builtin-rules
+endif
+
+ifndef config
+ configuration=config
+else
+ configuration=config-$(config)
+endif
+
+include $(depth)/$(configuration).make
+
+stepdir = $(depth)/$(stepmake)/stepmake
+-include $(stepdir)/Include.make
+
diff --git a/stepmake/make/Substitute.make b/stepmake/make/Substitute.make
new file mode 100644
index 0000000000..8d5549b2fd
--- /dev/null
+++ b/stepmake/make/Substitute.make
@@ -0,0 +1,17 @@
+# Substitute.make
+
+ATVARIABLES = \
+ BASH\
+ DATE\
+ date\
+ DIR_DATADIR\
+ PACKAGE\
+ package\
+ PERL\
+ PYTHON\
+ SHELL\
+ TOPLEVEL_VERSION\
+ step-bindir\
+ abs-step-bindir\
+
+
diff --git a/stepmake/make/Targets.make b/stepmake/make/Targets.make
new file mode 100644
index 0000000000..5a6603fab0
--- /dev/null
+++ b/stepmake/make/Targets.make
@@ -0,0 +1,26 @@
+# title package specific targets
+# file make/Targets.make
+
+.PHONY : check-dist-deps check-make-deps check-rpm-doc-deps check-html-deps check-www-doc check-rpm-icons
+
+check-dist-deps: check-make-deps
+
+check-html-deps:
+ $(MAKE) -C $(depth)/Documentation html
+
+check-www-doc:
+ $(MAKE) CONFIGSUFFIX='www' -C Documentation outdirs
+ $(MAKE) CONFIGSUFFIX='www' -C Documentation WWW
+
+# check-rpm-doc-deps:
+# $(MAKE) -C $(depth)/Documentation gifs
+
+check-rpm-icons:
+
+check-make-deps:
+ $(MAKE) -C $(depth)/make
+
+# urg urg
+$(configheader): $(depth)/$(configuration).hh
+ cp $< $@
+
diff --git a/stepmake/make/Toplevel.make.in b/stepmake/make/Toplevel.make.in
new file mode 100644
index 0000000000..244f56d24e
--- /dev/null
+++ b/stepmake/make/Toplevel.make.in
@@ -0,0 +1,40 @@
+# -*-Makefile-*-
+# title specific top level makefile for StepMake
+
+# subdir level:
+#
+depth = .
+#
+
+# descent order into subdirectories:
+#
+SUBDIRS = bin make stepmake Documentation
+#
+
+# bootstrap stepmake:
+#
+include $(depth)/make/Stepmake.make
+#
+
+# list of distribution files:
+#
+SCRIPTS = configure aclocal.m4
+README_FILES = NEWS README TODO
+README_TXT_FILES = AUTHORS.txt INSTALL.txt
+EXTRA_DIST_FILES = $(IN_FILES) VERSION $(README_FILES) $(SCRIPTS)
+NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES)
+
+#
+
+include $(stepdir)/Toplevel.make
+
+
+
+localdist: do-top-doc
+
+do-top-doc:
+ -$(MAKE) -C Documentation/topdocs/ README_TOP_FILES="$(README_TXT_FILES)" copy-to-top
+
+$(README_TXT_FILES): do-top-doc
+
+
diff --git a/stepmake/make/Toplevel_version.make b/stepmake/make/Toplevel_version.make
new file mode 100644
index 0000000000..4a1e24e9e2
--- /dev/null
+++ b/stepmake/make/Toplevel_version.make
@@ -0,0 +1,8 @@
+# Toplevel_version.make
+
+include $(depth)/VERSION
+TOPLEVEL_MAJOR_VERSION:=$(MAJOR_VERSION)
+TOPLEVEL_MINOR_VERSION:=$(MINOR_VERSION)
+TOPLEVEL_PATCH_LEVEL:=$(PATCH_LEVEL)
+# use to send patches, always empty for released version:
+TOPLEVEL_MY_PATCH_LEVEL:=$(MY_PATCH_LEVEL)
diff --git a/stepmake/make/User.make b/stepmake/make/User.make
new file mode 100644
index 0000000000..598bc732fb
--- /dev/null
+++ b/stepmake/make/User.make
@@ -0,0 +1,15 @@
+# title user changeable settings
+# file make/User.make
+
+# will be split into CFLAGS/EXTRA_CFLAGS etc,
+# so that defineable generically and per module
+
+#
+# -lefence = ElectricFence.
+#
+# ElectricFence is a memory debugger which uses the
+# VM hardware to trap malloc/free errors.
+#
+
+EXTRALIB+= #-lefence
+
diff --git a/stepmake/make/Variables.make b/stepmake/make/Variables.make
new file mode 100644
index 0000000000..3c5a39dca3
--- /dev/null
+++ b/stepmake/make/Variables.make
@@ -0,0 +1,20 @@
+# title package specific variables
+# file make/Variables.lilymake.make
+#
+# do not change this file for site-wide extensions; please use
+# make/$(outdir)/Site.make;
+#
+# Any change in files in this directory (make/) would be distributed, if
+# you do make dist
+#
+
+# dummydeps
+#
+DUMMYDEPS=\
+
+#
+
+STEPMAKE_INCLUDES =
+STEPMAKE_LDFLAGS =
+STEPMAKE_LIBES =
+
diff --git a/stepmake/make/out/stepmake.lsm b/stepmake/make/out/stepmake.lsm
new file mode 100644
index 0000000000..4d16f1cce6
--- /dev/null
+++ b/stepmake/make/out/stepmake.lsm
@@ -0,0 +1,15 @@
+Begin3
+Title: StepMake
+Version: 0.1.41
+Entered-date: 10AUG98
+Description:
+Keywords: music notation typesetting midi fonts engraving
+Author: janneke@gnu.org (Jan Nieuwenhuizen)
+ hanwen@cs.ruu.nl (Han-Wen Nienhuys)
+Maintained-by: janneke@gnu.org (Jan Nieuwenhuizen)
+Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
+ 40k stepmake-0.1.41.tar.gz
+Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
+ 40k stepmake-0.1.41.tar.gz
+Copying-policy: GPL
+End
diff --git a/stepmake/make/out/stepmake.spec b/stepmake/make/out/stepmake.spec
new file mode 100644
index 0000000000..60ebe82c78
--- /dev/null
+++ b/stepmake/make/out/stepmake.spec
@@ -0,0 +1,26 @@
+Name: stepmake
+Version: 0.1.41
+Release: 1
+Copyright: GPL
+Group: Development
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/stepmake-0.1.41.tar.gz
+Summary: generic make package
+Packager: janneke@gnu.org (Jan Nieuwenhuizen)
+Buildroot: /tmp/stepmake-install
+
+%description
+
+
+%prep
+%setup
+%build
+./configure --prefix=/usr
+make all
+%install
+rm -rf $RPM_BUILD_ROOT
+make prefix="$RPM_BUILD_ROOT/usr" install
+%files
+# urg
+/usr/bin/make-patch
+%post
+
diff --git a/stepmake/make/stepmake.lsm.in b/stepmake/make/stepmake.lsm.in
new file mode 100644
index 0000000000..1e00adf0f7
--- /dev/null
+++ b/stepmake/make/stepmake.lsm.in
@@ -0,0 +1,15 @@
+Begin3
+Title: StepMake
+Version: @TOPLEVEL_VERSION@
+Entered-date: @DATE@
+Description: @BLURB@
+Keywords: music notation typesetting midi fonts engraving
+Author: janneke@gnu.org (Jan Nieuwenhuizen)
+ hanwen@cs.ruu.nl (Han-Wen Nienhuys)
+Maintained-by: janneke@gnu.org (Jan Nieuwenhuizen)
+Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
+ 40k @package@-@TOPLEVEL_VERSION@.tar.gz
+Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
+ 40k @package@-@TOPLEVEL_VERSION@.tar.gz
+Copying-policy: GPL
+End
diff --git a/stepmake/make/stepmake.spec.in b/stepmake/make/stepmake.spec.in
new file mode 100644
index 0000000000..ded7146fe6
--- /dev/null
+++ b/stepmake/make/stepmake.spec.in
@@ -0,0 +1,26 @@
+Name: @package@
+Version: @TOPLEVEL_VERSION@
+Release: 1
+Copyright: GPL
+Group: Development
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/@package@-@TOPLEVEL_VERSION@.tar.gz
+Summary: generic make package
+Packager: janneke@gnu.org (Jan Nieuwenhuizen)
+Buildroot: /tmp/stepmake-install
+
+%description
+@BLURB@
+
+%prep
+%setup
+%build
+./configure --prefix=/usr
+make all
+%install
+rm -rf $RPM_BUILD_ROOT
+make prefix="$RPM_BUILD_ROOT/usr" install
+%files
+# urg
+/usr/bin/make-patch
+%post
+
diff --git a/stepmake/stepmake/C++.make b/stepmake/stepmake/C++.make
new file mode 100644
index 0000000000..8f39b4e0ad
--- /dev/null
+++ b/stepmake/stepmake/C++.make
@@ -0,0 +1,4 @@
+
+include $(stepdir)/C++_rules.make
+include $(stepdir)/C++_vars.make
+include $(stepdir)/C++_files.make
diff --git a/stepmake/stepmake/C++_files.make b/stepmake/stepmake/C++_files.make
new file mode 100644
index 0000000000..d61a475a63
--- /dev/null
+++ b/stepmake/stepmake/C++_files.make
@@ -0,0 +1,14 @@
+
+#
+# template files:
+TCC_FILES := $(wildcard *.tcc)
+HH_FILES := $(wildcard *.hh)
+CC_FILES := $(wildcard *.cc)
+INL_FILES := $(wildcard *.icc)
+YY_FILES := $(wildcard *.yy)
+LL_FILES := $(wildcard *.ll)
+
+SOURCE_FILES+=$(YY_FILES) $(CC_FILES) $(INL_FILES) $(TCC_FILES) $(HH_FILES) $(LL_FILES)
+OBJECT_FILES+=$(YY_FILES:.yy=.o) $(CC_FILES:.cc=.o) $(LL_FILES:.ll=.o)
+
+TAGS_FILES += $(TCC_FILES) $(HH_FILES) $(INL_FILES) $(CC_FILES)
diff --git a/stepmake/stepmake/C++_rules.make b/stepmake/stepmake/C++_rules.make
new file mode 100644
index 0000000000..df26b06ced
--- /dev/null
+++ b/stepmake/stepmake/C++_rules.make
@@ -0,0 +1,27 @@
+# title C++ rules
+# file make/C++_rules.make
+
+.SUFFIXES: .cc .o .hh .yy .ll .dep
+
+# compile rules:
+#
+$(outdir)/%.o: %.cc
+ $(DO_CXX_COMPILE)
+
+$(outdir)/%.o: $(outdir)/%.cc
+ $(DO_CXX_COMPILE)
+
+$(outdir)/%.cc: %.yy
+ $(BISON) $<
+ mv $<.tab.c $@
+
+$(outdir)/%.hh: %.yy
+ $(BISON) -d $<
+ mv $<.tab.h $@
+ mv $<.tab.c $(basename $@).cc
+
+$(outdir)/%.cc: %.ll
+ $(FLEX) -Cfe -p -p -t $< > $@
+# could be faster:
+# $(FLEX) -8 -Cf -t $< > $@
+
diff --git a/stepmake/stepmake/C++_vars.make b/stepmake/stepmake/C++_vars.make
new file mode 100644
index 0000000000..889b3f6c21
--- /dev/null
+++ b/stepmake/stepmake/C++_vars.make
@@ -0,0 +1,14 @@
+
+# added two warnings that are treated by cygwin32's gcc 2.7.2 as errors.
+# huh, but still, no warnings even provoced with linux's gcc 2.7.2.1?
+
+# -pipe makes it go faster, but is not supported on all platforms.
+# EXTRA_CXXFLAGS= -Wall -Winline -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
+EXTRA_CXXFLAGS= -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
+
+
+CXXFLAGS = $(ICFLAGS) $(DEFINES) $(INCLUDES) $(USER_CFLAGS) $(EXTRA_CFLAGS) $(MODULE_CFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS) $(MODULE_CXXFLAGS)
+CXX_OUTPUT_OPTION = $< -o $@
+DO_CXX_COMPILE=$(DODEP) $(CXX) -c $(CXXFLAGS) $(CXX_OUTPUT_OPTION)
+
+
diff --git a/stepmake/stepmake/C.make b/stepmake/stepmake/C.make
new file mode 100644
index 0000000000..2548c77b55
--- /dev/null
+++ b/stepmake/stepmake/C.make
@@ -0,0 +1,24 @@
+
+# header files:
+H_FILES := $(wildcard *.h)
+C_FILES := $(wildcard *.c)
+Y_FILES := $(wildcard *.y)
+L_FILES := $(wildcard *.l)
+
+SOURCE_FILES+=$(Y_FILES) $(C_FILES) $(L_FILES) $(H_FILES)
+OBJECT_FILES+=$(Y_FILES:.y=.o) $(C_FILES:.c=.o) $(L_FILES:.l=.o)
+
+TAGS_FILES += C_FILES H_FILES
+# C/C++
+#
+
+ALL_C_SOURCES += $(H_FILES) $(C_FILES) $(Y_FILES)
+
+include $(stepdir)/C_rules.make
+
+# compiler:
+#
+DO_C_COMPILE = $(DODEP) $(CC) -c $(CFLAGS) $(C_OUTPUT_OPTION)
+C_OUTPUT_OPTION = $< -o $@
+
+CFLAGS = $(ICFLAGS) $(DEFINES) $(INCLUDES) $(USER_CFLAGS) $(EXTRA_CFLAGS) $(MODULE_CFLAGS)
diff --git a/stepmake/stepmake/C_rules.make b/stepmake/stepmake/C_rules.make
new file mode 100644
index 0000000000..a2bf496187
--- /dev/null
+++ b/stepmake/stepmake/C_rules.make
@@ -0,0 +1,26 @@
+# stepmake/C_rules.make
+
+.SUFFIXES: .c .o .h .y .l .dep
+
+$(outdir)/%.o: %.c
+ $(DO_C_COMPILE)
+
+$(outdir)/%.o: $(outdir)/%.c
+ $(DO_C_COMPILE)
+
+$(outdir)/%.c: %.y
+ $(BISON) $<
+# mv $<.tab.c $@
+ mv parser.tab.c $@
+
+$(outdir)/%.h: %.y
+ $(BISON) -d $<
+# mv $<.tab.h $@
+ mv parser.tab.h $@
+ mv parser.tab.c $(basename $@).c
+
+$(outdir)/%.c: %.l
+ $(FLEX) -Cfe -p -p -t $< > $@
+# could be faster:
+# $(FLEX) -8 -Cf -t $< > $@
+
diff --git a/stepmake/stepmake/Documentation.shared.make b/stepmake/stepmake/Documentation.shared.make
new file mode 100644
index 0000000000..1a8ee9b02a
--- /dev/null
+++ b/stepmake/stepmake/Documentation.shared.make
@@ -0,0 +1,48 @@
+# stepmake/Documentation.shared.make
+# urg: stuff shared between yodl/lily/stepmake
+
+# could/should do this for bin/Makefile make/Makefile too
+
+### below here is shared between lily/yodl/Documentation and topdocs...
+
+AT_FILES = $(BLURBS) #
+at-dir = $(doc-dir)/
+at-ext = .in
+
+include $(stepdir)/Documentation.vars.make
+include $(stepdir)/Documentation_rules.make
+
+do-doc: $(OUTTXT_FILES)
+
+# ugh. FIXME
+ifeq ($(strip $(README_TOP_FILES)),)
+readme-top_FILES-html:
+else
+
+readme-top_FILES-html:
+ for i in $(README_TOP_FILES); do \
+ $(SHELL) $(step-bindir)/text2html.sh $(outdir)/$$i.txt $(outdir)/$$i.html; \
+ $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=$(depth)/../index.html $(outdir)/$$i.html; \
+ done
+endif
+
+local-WWW: readme-top_FILES-html $(OUTHTML_FILES) $(OUTREADME_HTML_FILES)
+
+doc: do-doc
+
+# what to do here?
+ifneq ($(strip $(INFO_FILES)),)
+
+INFOINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(infodir) depth=$(depth) INSTALLATION_OUT_FILES="$(INFO_FILES)" -f $(stepdir)/Install_outfiles.sub.make $@
+
+$(outdir)/$(package).info: check-texinfo-deps $(OUTTEXINFO_FILES)
+ $(MAKEINFO) -o $@ $(outdir)/topinfo.texinfo
+
+localinstall: # $(INFO_FILES)
+ $(INSTALL) -d $(infodir)
+ $(INFOINSTALL)
+localuninstall:
+ $(INFOINSTALL)
+
+endif
+
diff --git a/stepmake/stepmake/Documentation.vars.make b/stepmake/stepmake/Documentation.vars.make
new file mode 100644
index 0000000000..a12f31ef99
--- /dev/null
+++ b/stepmake/stepmake/Documentation.vars.make
@@ -0,0 +1,20 @@
+# Documentation files
+#
+YO_FILES := $(wildcard *.yo)
+POD_FILES := $(wildcard *.pod)
+TEXINFO_FILES := $(wildcard *.texinfo)
+OUTYO_FILES = $(addprefix $(outdir)/,$(YO_FILES))
+OUTPOD_FILES = $(addprefix $(outdir)/,$(POD_FILES))
+OUTTEXINFO_FILES = $(addprefix $(outdir)/,$(TEXINFO_FILES))
+
+#
+ALL_DOC_FILES = $(POD_FILES) $(TEXINFO_FILES) $(YO_FILES)
+OUTTXT_FILES = $(OUTYO_FILES:.yo=.txt) $(OUTIN_FILES:.yo=.txt)
+OUTHTML_FILES = $(OUTYO_FILES:.yo=.html) $(OUTIN_FILES:.yo=.html) # $(OUTREADME_HTML_FILES)
+# OUTTEXINFO_FILES= $(addprefix $(outdir)/, $(addsuffix .texinfo,$(basename $(YO_FILES) .yo)))
+# OUTTEXINFO_FILES = $(outdir)/topinfo.texinfo $(outdir)/mutopia.texinfo
+OUTREADME_TXT_FILES=$(addprefix $(outdir)/,$(addsuffix .txt, $(README_TOP_FILES)))
+OUTREADME_HTML_FILES=$(addprefix $(outdir)/,$(addsuffix .html, $(README_TOP_FILES)))
+
+
+ALL_SOURCES += $(ALL_DOC_FILES)
diff --git a/stepmake/stepmake/Documentation_rules.make b/stepmake/stepmake/Documentation_rules.make
new file mode 100644
index 0000000000..6e9828954a
--- /dev/null
+++ b/stepmake/stepmake/Documentation_rules.make
@@ -0,0 +1,25 @@
+# Docrules.make
+
+# special rules for the documentation section.
+# There are too many to add to the general rules
+
+.SUFFIXES: .1 .data .html .gif .xpm .tex .txt
+
+$(outdir)/%.gif: %.xpm
+ xpmtoppm $< | ppmtogif > $@
+
+$(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
+-include $(make-dir)/Docrules.make
+
diff --git a/stepmake/stepmake/Executable.make b/stepmake/stepmake/Executable.make
new file mode 100644
index 0000000000..1516ad7eb7
--- /dev/null
+++ b/stepmake/stepmake/Executable.make
@@ -0,0 +1,34 @@
+# Executable.make
+
+# dependency list of executable:
+#
+
+default: $(EXECUTABLE)
+
+$(EXECUTABLE): $(configheader) $(O_FILES) $(outdir)/version.hh $(MODULE_LIBES)
+ $(foreach a, $(MODULE_LIBS), $(MAKE) -C $a && ) true
+ $(LD_COMMAND) $(O_FILES) $(LOADLIBES)
+
+exe: $(EXECUTABLE)
+
+
+
+localinstall: installexe
+
+localuninstall: uninstallexe
+
+installexe: all
+ $(INSTALL) -d $(bindir)
+ $(foreach a, $(EXECUTABLES), \
+ $(INSTALL) -m 755 $(outdir)/$(a) $(bindir)/$(a)$(DOTEXE) && \
+ strip $(bindir)/$(a)$(DOTEXE) && ) true
+ $(foreach a, $(SEXECUTABLES), \
+ $(INSTALL) -m 755 $(outdir)/$(a) $(bindir) &&) true
+
+uninstallexe:
+ $(foreach a, $(EXECUTABLES), rm -f $(bindir)/$(a)$(DOTEXE) &&) true
+ $(foreach a, $(SEXECUTABLES), rm -f $(bindir)/$(a) &&) true
+
+
+%/$(outdir)/library.a:
+ $(MAKE) -C $(dir $@)/.. default
diff --git a/stepmake/stepmake/Files.make b/stepmake/stepmake/Files.make
new file mode 100644
index 0000000000..2c2ede8dac
--- /dev/null
+++ b/stepmake/stepmake/Files.make
@@ -0,0 +1,27 @@
+# Files.make
+
+
+# list of object _FILES:
+#
+SOURCE_FILES =
+
+O_FILES = $(addprefix $(outdir)/,$(OBJECT_FILES))
+#
+
+DEP_FILES := $(wildcard $(depdir)/*.dep)
+
+# (Why not Makefile too?)
+#
+MAKE_FILES := $(wildcard *.make)
+#
+
+IN_FILES := $(wildcard *.in)
+SOURCE_FILES += $(IN_FILES)
+SOURCE_FILES += $(MAKE_FILES)
+# Preprocessed .in documentation _FILES:
+#
+OUTIN_FILES = $(addprefix $(outdir)/, $(IN_FILES:%.in=%))
+#
+
+ALL_SOURCES = $(SOURCE_FILES)
+
diff --git a/stepmake/stepmake/Include.make b/stepmake/stepmake/Include.make
new file mode 100644
index 0000000000..61f6eff329
--- /dev/null
+++ b/stepmake/stepmake/Include.make
@@ -0,0 +1,7 @@
+# Include.make
+
+include $(stepdir)/Variables.make
+include $(stepdir)/Files.make
+include $(stepdir)/Targets.make
+include $(stepdir)/Rules.make
+
diff --git a/stepmake/stepmake/Install_outfiles.make b/stepmake/stepmake/Install_outfiles.make
new file mode 100644
index 0000000000..53b2321dc7
--- /dev/null
+++ b/stepmake/stepmake/Install_outfiles.make
@@ -0,0 +1,15 @@
+# Initial_outfiles.make
+
+localinstall: localinstall-files
+
+localinstall-files: $(INSTALLATION_OUT_FILES)
+ $(INSTALL) -d $(INSTALLATION_OUT_DIR)
+ $(foreach i, $(INSTALLATION_OUT_FILES), \
+ $(INSTALL) -m 644 $(i) $(INSTALLATION_OUT_DIR) && )true
+
+localuninstall: localuninstall-files
+
+localuninstall-files:
+ $(foreach i, $(notdir $(INSTALLATION_OUT_FILES)), \
+ rm -f $(INSTALLATION_OUT_DIR)/$(i) && ) true
+ -rmdir $(INSTALLATION_OUT_DIR)
diff --git a/stepmake/stepmake/Install_outfiles.sub.make b/stepmake/stepmake/Install_outfiles.sub.make
new file mode 100644
index 0000000000..d5f9920448
--- /dev/null
+++ b/stepmake/stepmake/Install_outfiles.sub.make
@@ -0,0 +1,5 @@
+# Initial_outfiles.sub.make
+
+include $(depth)/make/Stepmake.make
+include $(stepdir)/Install_outfiles.make
+
diff --git a/stepmake/stepmake/Installfiles.make b/stepmake/stepmake/Installfiles.make
new file mode 100644
index 0000000000..93d4083fe2
--- /dev/null
+++ b/stepmake/stepmake/Installfiles.make
@@ -0,0 +1,15 @@
+# Installfiles.make
+
+localinstall: localinstall-files
+
+localinstall-files:
+ $(INSTALL) -d $(INSTALLATION_DIR)
+ $(foreach i, $(INSTALLATION_FILES),\
+ $(INSTALL) -m 644 $(i) $(INSTALLATION_DIR) &&)true
+
+localuninstall: localuninstall-files
+
+localuninstall-files:
+ $(foreach i, $(INSTALLATION_FILES),
+ rm -f $(INSTALLATION_DIR)/$(i) && ) true
+ -rmdir $(INSTALLATION_DIR)
diff --git a/stepmake/stepmake/Intlrules.make b/stepmake/stepmake/Intlrules.make
new file mode 100644
index 0000000000..41a4421f86
--- /dev/null
+++ b/stepmake/stepmake/Intlrules.make
@@ -0,0 +1,7 @@
+
+LIBINTL=$(outdir)/libintl.a
+check-lib-intl:
+ $(MAKE) -C $(depth)/intl lib
+
+include $(stepdir)/C.make
+
diff --git a/stepmake/stepmake/Library.make b/stepmake/stepmake/Library.make
new file mode 100644
index 0000000000..c3a88cf9ec
--- /dev/null
+++ b/stepmake/stepmake/Library.make
@@ -0,0 +1,3 @@
+
+include $(stepdir)/Library_vars.make
+include $(stepdir)/Library_targets.make
diff --git a/stepmake/stepmake/Library_targets.make b/stepmake/stepmake/Library_targets.make
new file mode 100644
index 0000000000..f032aa5425
--- /dev/null
+++ b/stepmake/stepmake/Library_targets.make
@@ -0,0 +1,17 @@
+# dependency list of library:
+#
+
+
+default: $(LIBRARY)
+
+$(outdir)/library.a: $(configheader) $(O_FILES) $(MODULE_LIBES)
+ $(AR_COMMAND) $(O_FILES)
+ $(RANLIB_COMMAND)
+
+$(SHAREDLIBRARY): $(configheader) $(O_FILES) $(MODULE_LIBES)
+ $(LD_COMMAND) $(O_FILES) -o $@.$(VERSION)
+ rm -f $@
+ ln -sf $(outdir)/$(LIB_PREFIX)$(NAME).so.$(VERSION) $@.$(MAJOR_VERSION)
+ ln -sf $(LIB_PREFIX)$(NAME).so.$(VERSION) $@
+
+
diff --git a/stepmake/stepmake/Library_vars.make b/stepmake/stepmake/Library_vars.make
new file mode 100644
index 0000000000..f488bfb07e
--- /dev/null
+++ b/stepmake/stepmake/Library_vars.make
@@ -0,0 +1,20 @@
+ifndef LIB_SUFFIX
+LIB_SUFFIX = .a
+endif
+
+LIB_PREFIX = lib
+
+# librarian:
+#
+AR = ar
+AR_COMMAND = $(AR) $(ARFLAGS) $@
+
+#
+ifeq ($(RANLIB),error)
+RANLIB_COMMAND=$(AR) ts $@
+else
+RANLIB_COMMAND=$(RANLIB) $@
+endif
+# linker:
+LIBRARY = $(outdir)/library.a
+SHAREDLIBRARY=$(outdir)/$(LIB_PREFIX)$(NAME).so
diff --git a/stepmake/stepmake/Makedir.shared.make b/stepmake/stepmake/Makedir.shared.make
new file mode 100644
index 0000000000..aee95bf5ee
--- /dev/null
+++ b/stepmake/stepmake/Makedir.shared.make
@@ -0,0 +1,31 @@
+# stepmake/Makedir.shared.make
+# urg: stuff shared between yodl/lily/stepmake
+
+LSM_FILES:= $(wildcard *.lsm.in)
+OUTLSM_FILES=$(addprefix $(outdir)/,$(basename $(LSM_FILES), .in))
+SPEC_FILES:= $(wildcard *.spec.in)
+OUTSPEC_FILES=$(addprefix $(outdir)/,$(basename $(SPEC_FILES), .in))
+
+EXTRA_DIST_FILES = $(state-vector)
+
+# these two outdir FILES are distributed, since they make sense to have
+# without running configure and make.
+OUT_DIST_FILES= $(OUTLSM_FILES) $(OUTSPEC_FILES)
+
+
+spec: $(OUTSPEC_FILES)
+
+$(OUTSPEC_FILES): $(depth)/VERSION
+$(OUTLSM_FILES): $(depth)/VERSION
+
+AT_FILES = $(BLURBS) #
+at-dir = $(doc-dir)/
+at-ext = .in
+
+# is this still used?
+rpmdocs=BUGS TODO NEWS DEDICATION ANNOUNCE README
+rpmdvis=$(rpmmudocs:.doc=.dvi)
+rpmexamples= $(addprefix input/, $(notdir $(shell ls $(depth)/input/*.ly)))
+
+
+localdist: $(OUTSPEC_FILES) $(OUTLSM_FILES)
diff --git a/stepmake/stepmake/Makefile b/stepmake/stepmake/Makefile
new file mode 100644
index 0000000000..a27042129c
--- /dev/null
+++ b/stepmake/stepmake/Makefile
@@ -0,0 +1,23 @@
+# title makefile for stepmake
+
+# subdir level:
+#
+depth = ..
+#
+
+# descent order into subdirectories:
+#
+SUBDIRS =
+#
+
+# bootstrap stepmake:
+#
+-include $(depth)/make/Stepmake.make
+#
+
+# gory hack: stepmake itself is a stepmake package.
+default:
+ rm -f stepmake
+ ln -s ../stepmake .
+ rm -f bin
+ ln -s ../bin .
diff --git a/make/Manual.make b/stepmake/stepmake/Manual.make
index 2914e59159..5186b1d8cd 100644
--- a/make/Manual.make
+++ b/stepmake/stepmake/Manual.make
@@ -1,7 +1,6 @@
-MANFILES = lilypond convert-mudela mi2mu mudela-book
-MANGROFF = $(addprefix $(outdir)/, $(addsuffix .$(SECTION)))
-
+# Manual.make
+MANGROFF = $(addprefix $(outdir)/, $(addsuffix .$(SECTION)))
localinstall: $(MANGROFFS)
$(INSTALL) -d $(mandir)/man$(SECTION)
diff --git a/stepmake/stepmake/Metafont.make b/stepmake/stepmake/Metafont.make
new file mode 100644
index 0000000000..ed0e227779
--- /dev/null
+++ b/stepmake/stepmake/Metafont.make
@@ -0,0 +1,15 @@
+MF_FILES = $(wildcard *.mf)
+FONT_FILES = $(wildcard *[0-9].mf)
+EXTRA_DIST_FILES += $(MF_FILES)
+
+$(outdir)/%.dvi: %.mf
+ mf $<
+ gftodvi $(basename $<)
+ mv $(basename $<).dvi $(outdir)
+ rm $(basename $<).*gf
+
+$(outdir)/%.log: %.mf
+ mf $<
+ mv $(@F) $@
+ rm $(basename $< ).*gf
+
diff --git a/stepmake/stepmake/Package.make b/stepmake/stepmake/Package.make
new file mode 100644
index 0000000000..d0d29f11e1
--- /dev/null
+++ b/stepmake/stepmake/Package.make
@@ -0,0 +1,36 @@
+# stepmake/Package.make
+
+package-icon=$(outdir)/$(package)-icon.gif
+
+deb:
+ $(MAKE) -C $(depth)/debian
+
+# urg
+#(cd $(depth)/../debian/$(distname); \
+# ln -sf debian DEBIAN; )
+# su -c 'dpkg-deb -b $(depth)/../debian/$(distname)'
+# urg, why aren't there any decent manual pages for dpkg or rpm?
+ su -c '(cd $(depth)/../debian; \
+ rm -rf $(distname) $(distname).deb;\
+ tar xz -C $(depth)/../debian -f $(release-dir)/$(distname).tar.gz; \
+ cd $(distname);\
+ dpkg-buildpackage -b; \
+ )'
+
+makeflags=$(patsubst %==, %, $(patsubst %----,%,$(MAKEFLAGS:%=--%)))
+
+diff:
+ $(PYTHON) $(step-bindir)/package-diff.py --package=$(topdir) $(makeflags)
+
+release:
+ $(PYTHON) $(step-bindir)/release.py --package=$(topdir)
+
+rpm: $(depth)/$(package-icon) dist
+ su -c 'rpm -tb $(depth)/$(outdir)/$(distname).tar.gz'
+
+update:
+ $(PYTHON) $(step-bindir)/update.py --package=$(topdir) $(makeflags)
+
+zip:
+ $(SHELL) $(step-bindir)/package-zip.sh $(topdir) $(prefix:/%=%)
+
diff --git a/stepmake/stepmake/Po_rules.make b/stepmake/stepmake/Po_rules.make
new file mode 100644
index 0000000000..ccff7a15f3
--- /dev/null
+++ b/stepmake/stepmake/Po_rules.make
@@ -0,0 +1,28 @@
+# Porules.make
+
+.SUFFIXES: .po .mo
+
+$(outdir)/%.mo: %.po
+ $(MSGFMT) -o $@ $<
+
+# sed-pofile = sed 's/^. \#: .*//'
+sed-pofile = sed 's/^\#: .*//'
+sed-makestuff = sed 's/[a-zA-Z_/]*make\[[0-9]*\].*//'
+sed-edstuff = sed 's/[ \.,adic0-9]*//' | sed 's/---//' | sort -u
+
+po-update:
+ $(foreach i,$(CATALOGS), \
+ rm -f $(po-dir)/$(outdir)/$(i).po; \
+ tupdate $(po-dir)/$(outdir)/$(package).po $(po-dir)/$(i).po \
+ > $(po-dir)/$(outdir)/$(i).po && ) true
+ $(foreach i,$(CATALOGS), \
+ changes=`$(MAKE) --silent -C $(po-dir) LANGUAGE=$$i show-po-changes $(ERROR_LOG) | $(sed-makestuff)`; \
+ if test "$$changes" != "" ; then \
+ echo "*** Changes for language $$i; check po/$(outdir)/$$i.po ***"; \
+ echo -e "changes: \`$$changes'";\
+ fi; && ) true
+
+
+show-po-changes:
+ diff -e $(po-dir)/$(outdir)/$(LANGUAGE).po $(po-dir)/$(LANGUAGE).po \
+ | $(sed-pofile) | $(sed-edstuff)
diff --git a/stepmake/stepmake/Pod_rules.make b/stepmake/stepmake/Pod_rules.make
new file mode 100644
index 0000000000..dd5b7ccd3d
--- /dev/null
+++ b/stepmake/stepmake/Pod_rules.make
@@ -0,0 +1,32 @@
+# Pod_rules.make
+
+.SUFFIXES: .1 .5 .html .pod .txt
+
+pod2html=pod2html
+pod2groff=pod2man --center="$(PACKAGE_NAME) documentation" --section="0"\
+ --release="$(PACKAGE_NAME) $(VERSION)" $< > $@
+
+
+# perl 5.003/4
+POD2HTML_5003=$(POD2HTML) $< ; mv $(notdir $@) $(outdir)/ || true
+# urg, broken. if you must have perl 5004, better install pod2html from 5003
+POD2HTML_5004=$(POD2HTML) --noindex --infile $< --outfile=$@; sh $(depth)/bin/add-URLs.sh $@
+
+do_pod2html=$($(POD2HTML_VERSION))
+
+$(outdir)/%.html: $(outdir)/%.pod $(depth)/VERSION
+ $(do_pod2html)
+ $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index $(depth)/../index.html $@
+
+$(outdir)/%.pod: %.pod
+ cp $< $@
+
+$(outdir)/%.5: %.pod
+ $(pod2groff)
+
+$(outdir)/%.1: %.pod
+ $(pod2groff)
+
+$(outdir)/%.1: $(outdir)/%.pod
+ -$(pod2groff)
+
diff --git a/stepmake/stepmake/Rules.make b/stepmake/stepmake/Rules.make
new file mode 100644
index 0000000000..97e210c959
--- /dev/null
+++ b/stepmake/stepmake/Rules.make
@@ -0,0 +1,39 @@
+# title generic make rules
+# file make/Rules.make
+
+# this is supposed to clear all suffixes:
+.SUFFIXES:
+
+$(outdir)/%: %.m4
+ $(M4) $< > $@
+
+%.dep:
+ touch $@
+
+%.gz: %
+ gzip -c9 $< > $@
+
+# bit docrules, these...
+$(outdir)/%.dvi: $(outdir)/%.tex
+ (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);\
+ )
+
+$(outdir)/%.ps: $(outdir)/%.dvi
+ dvips -ta4 -o $@ $<
+
+
+# hmm, always include these, or include via package/make/Rules.make?
+include $(stepdir)/Substitute.make
+include $(make-dir)/Rules.make
+
+$(outdir)/%: %.in
+ rm -f $@
+ cat $< | $(sed-atfiles) | $(sed-atvariables) > $@
+
diff --git a/stepmake/stepmake/Script_files.make b/stepmake/stepmake/Script_files.make
new file mode 100644
index 0000000000..ef705ba066
--- /dev/null
+++ b/stepmake/stepmake/Script_files.make
@@ -0,0 +1,10 @@
+
+
+PERL_SCRIPTS_IN := $(wildcard *.pl)
+PERL_SCRIPTS = $(addprefix $(outdir)/, $(PERL_SCRIPTS_IN:.pl=))
+SH_SCRIPTS_IN := $(wildcard *.sh)
+SH_SCRIPTS = $(addprefix $(outdir)/, $(SH_SCRIPTS_IN:.sh=))
+PYTHON_SCRIPTS_IN := $(wildcard *.py)
+PYTHON_SCRIPTS = $(addprefix $(outdir)/, $(PYTHON_SCRIPTS_IN:.py=))
+ALL_SCRIPTS_IN = $(SH_SCRIPTS_IN) $(PERL_SCRIPTS_IN) $(PYTHON_SCRIPTS_IN)
+EXTRA_DIST_FILES += $(ALL_SCRIPTS_IN)
diff --git a/stepmake/stepmake/Scripts.make b/stepmake/stepmake/Scripts.make
new file mode 100644
index 0000000000..a0e79f74e0
--- /dev/null
+++ b/stepmake/stepmake/Scripts.make
@@ -0,0 +1,21 @@
+# Scripts.make
+
+
+include $(stepdir)/Script_files.make
+
+all: $(PERL_SCRIPTS) $(PYTHON_SCRIPTS) $(SH_SCRIPTS)
+
+$(outdir)/%: %.pl
+ cat $< | $(sed-atvariables) > $@
+ chmod 755 $@
+
+#FIXME. Check for bash?
+$(outdir)/%: %.sh
+ cat $< | $(sed-atvariables) > $@
+ chmod 755 $@
+
+
+$(outdir)/%: %.py
+ cat $< | $(sed-atvariables) > $@
+ chmod 755 $@
+
diff --git a/stepmake/stepmake/Substitute.make b/stepmake/stepmake/Substitute.make
new file mode 100644
index 0000000000..d4f1840898
--- /dev/null
+++ b/stepmake/stepmake/Substitute.make
@@ -0,0 +1,35 @@
+# Substitute.make
+
+include $(make-dir)/Substitute.make
+
+sed-endline = sed 's!$$!\\!'
+sed-newline = sed 's!$$!\n!'
+sed-quotes = sed "s!\'!\\\&!g"
+sed-quote-line = sed 's!.*$$!\"&\"!'
+
+date := $(shell date '+%d%b%y'|tr '[a-z]' '[A-Z]' )
+DATE = $(date)
+
+# for all FILE in AT_FILES:
+# substitute occurrences of @FILE@ with contents $(at-dir)BLA$(at-ext)
+sed-atfiles = cat $(foreach i, $(AT_FILES), \
+ | sed '/@$i@/r $(at-dir)$i$(at-ext)' | sed 's%@$i@%%g')
+
+# for all VAR in ATVARIABLES
+# substitute occurrences of @VAR@ with $(VAR)
+sed-atvariables = cat $(foreach i, $(ATVARIABLES), | sed 's!@$i@!$($i)!g')
+
+# these are obsolete
+# use ATVARIABLES
+sed-date=sed 's!@DATE@!${date}!g'
+sed-PACKAGE = sed 's!@PACKAGE@!${PACKAGE}!g'
+sed-bash = sed 's!@BASH@!$(BASH)!'
+sed-dir-datadir = sed 's!@DIR_DATADIR@!$(DIR_DATADIR)!'
+sed-package=sed 's!@package@!${package}!g'
+sed-perl = sed 's!@PERL@!$(PERL)!'
+sed-python = sed 's!@PYTHON@!$(PYTHON)!'
+sed-sh = sed 's!@SH@!$(SH)!'
+sed-shell = sed 's!@SH@!$(SHELL)!' | sed 's!@BASH@!$(BASH)!'
+sed-version= sed 's!@TOPLEVEL_VERSION@!${TOPLEVEL_VERSION}!g'
+sed-step-bindir = sed 's!@STEP_BINDIR@!$(pwd)/$(step-bindir)!'
+
diff --git a/stepmake/stepmake/Targets.make b/stepmake/stepmake/Targets.make
new file mode 100644
index 0000000000..43d9877f18
--- /dev/null
+++ b/stepmake/stepmake/Targets.make
@@ -0,0 +1,194 @@
+# title generic make targets
+# file make/Targets.make
+
+.PHONY : all clean config default dist doc doc++ exe help html lib TAGS\
+ po
+
+# target all:
+#
+all: default
+ $(LOOP)
+
+
+# be careful about deletion.
+clean: localclean
+ -rm -f $(outdir)/*
+ $(LOOP)
+
+distclean: clean
+ $(LOOP)
+ $(MAKE) local-distclean
+
+maintainerclean:
+ $(LOOP)
+ $(MAKE) local-maintainerclean
+ $(MAKE) local-distclean
+
+new-po:
+ if test -r $(po-dir); then \
+ rm -f $(po-dir)/$(outdir)/$(package).po; \
+ touch $(po-dir)/$(outdir)/$(package).po; \
+ fi
+
+ifeq ($(strip $(depth)),.)
+po: new-po
+ $(LOOP)
+localpo:
+ @true
+else
+po: localpo
+ $(LOOP)
+ALL_PO_SOURCES = $(ALL_C_SOURCES) $(wildcard $(outdir)/*.hh) $(wildcard $(outdir)/*.cc)
+localpo:
+ifneq ($(strip $(ALL_PO_SOURCES)),)
+ @echo $(ALL_PO_SOURCES)
+ xgettext --c++ --default-domain=$(package) --join \
+ --output-dir=$(po-dir)/$(outdir) --add-comments \
+ --keyword=_ --keyword=_f $(ALL_PO_SOURCES)
+endif
+endif
+
+po-update: po
+ $(MAKE) -C $(po-dir) po-update
+
+show-po-changes:
+ $(MAKE) -C $(po-dir) show-po-changes
+
+# configure:
+#
+config:
+ ./$(depth)/configure
+#
+
+
+# target help:
+#
+generic-help:
+ @echo -e "\
+Makefile for $(PACKAGE_NAME) $(TOPLEVEL_VERSION)\n\
+Usage: $(MAKE) ["VARIABLE=value"]... [TARGET]\n\
+\n\
+Targets:\n"
+
+help: generic-help local-help
+ @echo -e "\
+ all update everything\n\
+ clean remove all genated stuff in $(oudir)\n\
+ config rerun configure\n\
+ deb build Debian package\n\
+ default same as the empty target\n\
+ diff generate patch: $(package)-$(TOPLEVEL_VERSION).diff.gz\n\
+ . Options:\n\
+ . from=0.1.74\n\
+ . help==\n\
+ . release==\n\
+ . to=0.1.74.jcn2\n\
+ distclean cleaner than clean (duh)\n\
+ doc update all documentation\n\
+ doc++ make doc++ documentation\n\
+ exe update all executables\n\
+ help this help\n\
+ install install programs and data (prefix=$(prefix))\n\
+ lib update all libraries\n\
+ release roll tarball and generate patch\n\
+ rpm build RedHat package\n\
+ tar same as dist\n\
+ TAGS genarate tagfiles\n\
+ zip build binary doze distribution\n\
+\n\
+Make may be invoked from any subdirectory\n\
+Note that all commands recurse into SUBSDIRS\n\
+"\
+#
+
+local-help:
+
+doc:
+# $(MAKE) -C $(depth)/Documentation do-doc
+ $(MAKE) -C $(depth)/Documentation all
+
+
+# Ugh. C++ specific.
+doc++:
+ (cd $(outdir); sh ../$(step-bindir)/tar-docxx.sh $(package)-$(TOPLEVEL_VERSION).tar.gz)
+
+
+
+check-state-vector:
+ if [ "`tail -1 $(state-vector)`" != "$(TOPLEVEL_VERSION)" ]; then\
+ echo $(TOPLEVEL_VERSION) >> $(state-vector); \
+ fi
+
+
+localdist: $(DIST_FILES) $(OUT_DIST_FILES) $(NON_ESSENTIAL_DIST_FILES)
+ $(LN) $(DIST_FILES) $(distdir)/$(localdir)
+
+#UGH UGH . make ifdef doesn't mix with string substitution semantics (late expansion vs. early expansion)
+#
+ if [ "$(NON_ESSENTIAL_DIST_FILES)x" != "x" ] ; then \
+ $(LN) $(NON_ESSENTIAL_DIST_FILES) $(distdir)/$(localdir); \
+ fi
+ if [ "$(OUT_DIST_FILES)x" != "x" ] ; then \
+ mkdir $(distdir)/$(localdir)/out; \
+ $(LN) $(OUT_DIST_FILES) $(distdir)/$(localdir)/out; \
+ fi
+ $(foreach i, $(SUBDIRS), mkdir $(distdir)/$(localdir)/$(i); \
+ $(MAKE) distdir=../$(distdir) localdir=$(localdir)/$(i) -C $(i) localdist &&) true
+
+
+
+html: $(HTML_FILES)
+
+TAGS:
+ -if [ "$(TAGS_FILES)" != "" ]; then \
+ etags -CT $(TAGS_FILES) || \
+ ctags -h ".h.hh.tcc.icc" $(TAGS_FILES) $(ERROR_LOG); \
+ fi
+
+ $(LOOP)
+
+$(outdir)/version.hh: VERSION
+ sh ./$(step-bindir)/make-version.sh > $@
+
+
+# should this be in Rules?
+configure: configure.in aclocal.m4
+ autoconf - < $<> $@
+ chmod +x configure
+
+localclean:
+
+local-distclean:
+
+local-maintainerclean:
+
+install-strip:
+ $(MAKE) INSTALL="$(INSTALL) -s" install
+
+install: localinstall
+ $(LOOP)
+
+localinstall:
+
+uninstall: localuninstall
+ $(LOOP)
+
+localuninstall:
+
+installextradoc:
+ $(INSTALL) -d $(prefix)/doc/$(package)
+ $(foreach i, $(EXTRA_DOC_FILES),\
+ cp -r $(i) $(prefix)/doc/$(package) &&) true
+
+WWW: local-WWW
+ $(LOOP)
+
+include $(stepdir)/Package.make
+include $(make-dir)/Targets.make
+
+include $(outdir)/dummy.dep $(DEP_FILES)
+
+$(outdir)/dummy.dep:
+ -mkdir $(outdir)
+ touch $(outdir)/dummy.dep
+
diff --git a/stepmake/stepmake/Template.make b/stepmake/stepmake/Template.make
new file mode 100644
index 0000000000..739a02af74
--- /dev/null
+++ b/stepmake/stepmake/Template.make
@@ -0,0 +1,50 @@
+# THIS IS A TEMPLATE FOR SUB-PROJECT MAKEFILES
+# /Makefile
+
+# subdir level:
+#
+depth = ..
+#
+
+# identify module:
+#
+NAME =
+#
+
+# descent order into subdirectories:
+#
+SUBDIRS =
+#
+
+# dependencies and linkage of custom libraries:
+#
+
+MODULE_LIBES = # $(depth)/lib $(depth)/flower
+#
+
+# list of extra distribution files:
+# Makefile, C++ and pod are dist'ed automatically
+EXTRA_DIST_FILES =
+#
+
+# bootstrap stepmake:
+#
+include $(depth)/make/Stepmake.make
+#
+
+# module compile settings: (not generally needed!)
+#
+EXTRA_CFLAGS =
+EXTRA_CXXFLAGS =
+EXTRA_LDFLAGS =
+#
+
+# main target of this module:
+#
+default: $(EXECUTABLE)
+# default: $(LIBRARY)
+#
+
+# EXECUTABLES=
+# include $(stepmake)/Executable.make
+
diff --git a/stepmake/stepmake/Texinfo_rules.make b/stepmake/stepmake/Texinfo_rules.make
new file mode 100644
index 0000000000..a1f223b4c4
--- /dev/null
+++ b/stepmake/stepmake/Texinfo_rules.make
@@ -0,0 +1,41 @@
+# Texinfo_rules.make
+
+.SUFFIXES: .1 .html .texinfo
+
+texi2man = $(step-bindir)/out/texi2man $< $@
+texi2html =\
+ rm -f $@.urg;\
+ cat $< | sed "s!@include.*!!" > $@.urg;\
+ $(TEXI2HTML) $@.urg;\
+ rm -f $@.urg;\
+ mv $(@F).urg.html $@;\
+ rm -f $(@F:%.html=%.html.urg_toc.html);\
+ add-URLs $@
+
+$(outdir)/%.1: %.texinfo
+ $(texi2man)
+
+# $(outdir)/%.info: %.texinfo
+# $(MAKEINFO) -o $@ $<
+
+$(outdir)/%.info: $(outdir)/%.texinfo
+ $(MAKEINFO) -o $@ $<
+
+# $(outdir)/%.html: %.texinfo
+# $(texi2html)
+# add-html-footer --index $(depth)/../index.html $@
+
+# texi2html is as broken as pod2html 5004 :-)
+# we'll have to use pod2html 5003 for now.
+# don't burn your .pod sources!
+#
+$(outdir)/%.html: $(outdir)/%.texinfo
+ $(texi2html)
+ $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index $(depth)/../index.html $@
+
+$(outdir)/%.texinfo: %.texinfo
+ cp $< $@
+
+$(outdir)/%.1: $(outdir)/%.texinfo
+ -$(texi2man)
+
diff --git a/stepmake/stepmake/Toplevel.make b/stepmake/stepmake/Toplevel.make
new file mode 100644
index 0000000000..52d1256221
--- /dev/null
+++ b/stepmake/stepmake/Toplevel.make
@@ -0,0 +1,62 @@
+# -*-Makefile-*-
+# title Toplevel.make
+
+# override Variables.make:
+# do not dist ./Makefile (is copied from make/Toplevel.make)
+#
+DIST_FILES := $(EXTRA_DIST_FILES)
+#
+
+localdist: configure
+
+local-distclean:
+ rm -f config.hh config.make Makefile config.cache \
+ config.status config.log index.html
+
+local-maintainerclean:
+ rm -f configure
+
+Makefile: make/Toplevel.make.in
+ chmod +w $@
+ echo "# WARNING WARNING WARNING WARNING" > $@
+ echo "# do not edit! this is generated from make/Toplevel.make.in" >> $@
+ cat $< >> $@
+ chmod -w $@
+
+htmldoc:
+ $(MAKE) CONFIGSUFFIX='www' local-WWW
+ $(MAKE) CONFIGSUFFIX='www' -C Documentation WWW
+ rm -f `find . -name \*.html~ -print`
+ tar cfz $(outdir)/htmldoc.tar.gz `find Documentation -type d -name 'out-www' -print` index.html $(shell ls *.gif $(ERRORLOG))
+
+
+# if you fix this, please fix yodl too!
+check-top-web:
+ $(MAKE) -C Documentation/topdocs WWW
+
+local-WWW: #index.html
+
+index.html: check-top-web NEWS
+ $(sed-version) < Documentation/topdocs/$(outdir)/topweb.html > $@
+ $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=Documentation/top-docs/out-www/index.html $@
+
+WWW-clean:
+ $(MAKE) CONFIGSUFFIX='www' clean
+
+
+dist: check-state-vector
+ rm -rf $(distdir)
+ -mkdir $(distdir)
+ $(MAKE) localdist $(distdir)
+ chmod -R a+r $(distdir)
+ chmod a+x `find $(distdir) -type d -print`
+ (cd ./$(depth)/$(outdir); $(TAR) cf - $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz)
+# ugh.
+# Can't compare "stage1" dist with "stage2" dist in this way?
+ -ln -f $(depth)/$(outdir)/$(distname).tar.gz $(release-dir)
+ rm -rf ./$(distdir)/
+
+local-help:
+ @echo -e "\
+ dist roll tarball: $(outdir)/$(package)-$(TOPLEVEL_VERSION).tar.gz\n"
+
diff --git a/stepmake/stepmake/Variables.make b/stepmake/stepmake/Variables.make
new file mode 100644
index 0000000000..59e84b210a
--- /dev/null
+++ b/stepmake/stepmake/Variables.make
@@ -0,0 +1,160 @@
+# title generic variables
+# file make/Variables.make
+#
+# do not change this file for site-wide extensions; please use
+# make/$(outdir)/Site.make;
+#
+# Any change in files in this directory (make/) would be distributed, if
+# you do make dist
+
+# directory names:
+
+# depth from group-dir
+# not eh, normally used
+DEPTH = $(depth)/$(package-depth)
+
+topdir := $(shell cd $(depth); pwd)
+pwd := $(shell pwd)
+
+
+ifdef CONFIGSUFFIX
+outdir=out-$(CONFIGSUFFIX)
+else
+outdir=out
+endif
+
+# derived names
+ifeq ($(distdir),)
+ distdir = $(depth)/$(outdir)/$(DIST_NAME)
+ DIST_NAME = $(package)-$(TOPLEVEL_VERSION)
+endif
+distname = $(package)-$(TOPLEVEL_VERSION)
+
+depdir = $(outdir)
+
+
+
+# obsolete?
+makeout = $(depth)/make/$(outdir)
+docout = $(depth)/Documentation/$(outdir)
+binout = $(depth)/bin/$(outdir)
+
+doc-dir = $(depth)/Documentation
+make-dir = $(depth)/make
+po-dir = $(depth)/po
+
+# -c is for copying
+INSTALL = $(stepdir)/../bin/install-sh -c
+
+# user settings:
+#
+include $(make-dir)/Variables.make
+include $(make-dir)/User.make
+#
+
+# urg
+# sort-out which of these are still needed
+#
+$(package)_bindir = $(depth)/bin
+step-bindir = $(depth)/$(stepmake)/bin
+abs-step-bindir = $(topdir)/$(stepmake)/bin
+#
+group-dir = $(shell cd $(DEPTH)/..; pwd)
+release-dir = $(group-dir)/releases
+patch-dir = $(group-dir)/patches
+#
+# i have in $HOME/.rpmrc
+# topdir: /home/fred/usr/src/Redhat
+#
+rpm-sources = $(release-dir)
+rpm-build = $(group-dir)/RedHat/BUILD
+#
+
+# hmm
+configheader=$(outdir)/config.hh
+
+# need to be defined in local Makefiles:
+#
+FOOBAR =
+# the version:
+#
+ifneq ($(MY_PATCH_LEVEL),$(FOOBAR))
+VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL).$(MY_PATCH_LEVEL)
+else
+VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL)
+endif
+
+ifneq ($(TOPLEVEL_MY_PATCH_LEVEL),$(FOOBAR))
+TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL).$(TOPLEVEL_MY_PATCH_LEVEL)
+else
+TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL)
+endif
+state-vector = $(make-dir)/STATE-VECTOR
+#
+
+# clean file lists:
+#
+ERROR_LOG = 2> /dev/null
+SILENT_LOG = 2>&1 > /dev/null
+date := $(shell date +%x) #duplicated?
+
+# compile and link options:
+#
+ARFLAGS = ru
+
+INCLUDES = -Iinclude -I$(outdir) $($(PACKAGE)_INCLUDES)
+LDFLAGS = $(ILDFLAGS) $(USER_LDFLAGS) $(EXTRA_LDFLAGS) $(MODULE_LDFLAGS) $($(PACKAGE)_LDFLAGS)
+
+MODULE_LIBES=$(addsuffix /$(outdir)/library.a, $(MODULE_LIBS))
+LOADLIBES = $(MODULE_LIBES) $($(PACKAGE)_LIBES) $(EXTRA_LIBES)
+# urg: for windows ?
+# LOADLIBES = $(MODULE_LIBES) $($(PACKAGE)_LIBES) $(EXTRA_LIBES) -lstdc++
+#
+
+# macro compiler:
+#
+M4 = m4
+#
+
+#
+LD_COMMAND = $(LD) $(LDFLAGS) -o $@
+#
+
+# dependencies:
+#
+depfile = $(depdir)/$(subst .o,.dep,$(notdir $@))#
+DODEP=rm -f $(depfile); DEPENDENCIES_OUTPUT="$(depfile) $(outdir)/$(notdir $@)"
+#
+
+
+# generic target names:
+#
+ifdef NAME
+EXECUTABLE = $(outdir)/$(NAME)$(EXE)
+else
+EXECUTABLE =
+endif
+
+EXECUTABLES = $(notdir $(EXECUTABLE))
+
+
+#
+
+#replace to do stripping of certain objects
+STRIPDEBUG=true
+
+DIST_FILES=$(EXTRA_DIST_FILES) Makefile $(ALL_SOURCES)
+DOCDIR=$(depth)/$(outdir)
+
+
+STRIP=strip --strip-debug
+ifdef stablecc
+ STABLEOBS=$(addprefix $(outdir)/,$(stablecc:.cc=.o))
+endif
+
+# substitute $(STRIP) in Site.make if you want stripping
+DO_STRIP=true
+
+
+LOOP=$(foreach i, $(SUBDIRS), $(MAKE) -C $(i) $@ &&) true
+
diff --git a/stepmake/stepmake/WWW.make b/stepmake/stepmake/WWW.make
new file mode 100644
index 0000000000..b4c2b27c3b
--- /dev/null
+++ b/stepmake/stepmake/WWW.make
@@ -0,0 +1,17 @@
+# WWW.make
+
+ly_examples=$(addprefix $(outdir)/, $(addsuffix .ly.txt, $(examples)))
+fly_examples=$(addprefix $(outdir)/, $(addsuffix .fly.txt, $(flexamples)))
+
+all_examples=$(flexamples) $(examples)
+
+ps_examples=$(addprefix $(outdir)/, $(addsuffix .ps.gz, $(all_examples)))
+gif_examples=$(addprefix $(outdir)/, $(addsuffix .gif, $(all_examples)))
+
+html_subdirs=$(addprefix --subdirs ,$(SUBDIRS))
+
+## UGH! lily specific
+local-WWW: $(ly_examples) $(fly_examples) $(ps_examples) $(gif_examples)
+ (cd $(outdir); $(PYTHON) ../$(buildscripts)/mutopia-index.py --package=$(topdir) --prefix=../ --suffix=/$(outdir) $(html_subdirs) $(all_examples))
+ $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=$(depth)/$(outdir)/index.html $(outdir)/index.html
+
diff --git a/stepmake/stepmake/Yodl_rules.make b/stepmake/stepmake/Yodl_rules.make
new file mode 100644
index 0000000000..34542d3f2b
--- /dev/null
+++ b/stepmake/stepmake/Yodl_rules.make
@@ -0,0 +1,26 @@
+# Yodl_rules.make
+
+.SUFFIXES: .1 .5 .7 .dvi .html .latex .ps .texinfo .txt .yo
+
+$(outdir)/%.1: %.yo
+ $(YODL2MAN) -doutdir=$(outdir) --live-data=3 -o $@ $<
+
+$(outdir)/%.5: %.yo
+ $(YODL2MAN) -doutdir=$(outdir) --live-data=3 -o $@ $<
+
+$(outdir)/%.7: %.yo
+ $(YODL2MAN) -doutdir=$(outdir) --live-data=3 -o $@ $<
+
+$(outdir)/%.html: %.yo
+ $(YODL2HTML) -doutdir=$(outdir) --live-data=3 -o $@ $<
+ $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=$(depth)/../index.html $@ $(wildcard $(basename $@)[0-9][0-9].html)
+
+$(outdir)/%.latex: %.yo
+ $(YODL2LATEX) -doutdir=$(outdir) --live-data=3 -o $@ $<
+
+$(outdir)/%.texinfo: %.yo
+ $(YODL2TEXINFO) -doutdir=$(outdir) --live-data=3 -o $@ $<
+
+$(outdir)/%.txt: %.yo
+ $(YODL2TXT) -doutdir=$(outdir) --live-data=3 -o $@ $<
+
diff --git a/test/Makefile b/test/Makefile
index 367d4f6ebc..3b22c6a630 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,47 +1,19 @@
-# project LilyPond -- the musical typesetter
# title makefile for test
-# file test/Makefile
-#
-# Copyright (c) 1997 by
-# Jan Nieuwenhuizen <jan@digicash.com>
-# Han-Wen Nienhuys <hanwen@stack.nl>
-#
-
-# subdir level:
-#
-depth = ..
-#
-
-# generic variables:
-#
-include ./$(depth)/make/Variables.make
-#
+# test/Makefile
-# identify module:
-#
-NAME = test
-MODULE_NAME = test
+depth = ..
-# descent order into subdirectories:
-#
-SUBDIRS =
-#
+NAME = lily-test
+MODULE_NAME = lily-test
-include ./$(depth)/make/Files.make
+MODULE_CXXFLAGS = -I$(depth)/flower/include -I$(depth)/flower -I$(depth)/lily/include -I$(depth)/lily
-# list of custom libraries:
-#
-CUSTOMLIBES = \
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C++.make
-LOADLIBES +=
-#
+EXTRA_DIST_FILES = VERSION
-# main target of this module:
-#
-default: $(EXECUTABLE)
-include ./$(depth)/make/Files.make
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-#
+# default: $(EXECUTABLE)
+# include $(stepdir)/Executable.make
diff --git a/mi2mu/VERSION b/test/VERSION
index 361ecac436..97cdc4da2f 100644
--- a/mi2mu/VERSION
+++ b/test/VERSION
@@ -1,6 +1,6 @@
MAJOR_VERSION = 0
MINOR_VERSION = 0
-PATCH_LEVEL = 22
+PATCH_LEVEL = 0
# use to send patches, always empty for released version:
MY_PATCH_LEVEL =
#
diff --git a/test/out/dummy.dep b/test/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/out/dummy.dep
+++ /dev/null
diff --git a/tex/Makefile b/tex/Makefile
index 9a7713e43d..13480c8146 100644
--- a/tex/Makefile
+++ b/tex/Makefile
@@ -1,20 +1,14 @@
# tex/Makefile
-# subdir level:
-#
depth = ..
-#
-#
-include ./$(depth)/make/Include.make
-#
-# list of distribution files:
-#
-TEXFILES = $(wildcard *.tex)
-DISTFILES = Makefile $(TEXFILES)
-#
+include $(depth)/make/Stepmake.make
+
+TEX_FILES = $(wildcard *.tex)
+DIST_FILES = Makefile $(TEX_FILES)
INSTALLATION_DIR=$(TEXDIR)/lilypond
-INSTALLATION_FILES=$(TEXFILES)
+INSTALLATION_FILES=$(TEX_FILES)
+
+include $(stepdir)/Installfiles.make
-include $(depth)/make/Installfiles.make
diff --git a/tex/fetdefs.tex b/tex/fetdefs.tex
index f7fd285720..d00e359195 100644
--- a/tex/fetdefs.tex
+++ b/tex/fetdefs.tex
@@ -1,64 +1,87 @@
% fetdefs.tex
% encapsulating tex backend for auto-generated feta definitions
+\def\placebox#1#2#3{%
+ \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}}%
+
+
\def\fetsixteendefs{%
- \font\feta = feta16
- \font\fetanummer = feta-nummer8
- \font\dynfont = feta-din10 scaled \magstep 1
- \font\bracefont = feta-braces16
- \font\bracketfont = feta-brackets16
- \font\fingerfont = feta-nummer4
+ \font\fetasixteen = feta16
+ \font\fetanummersixteen = feta-nummer8
+ \font\dynfontsixteen = feta-din10 scaled \magstep 1
+ \font\bracefontsixteen = feta-braces16
+ \font\fingerfontsixteen = feta-nummer4
+ \font\markfontsixteen = feta-nummer10
+\def\currentsize{sixteen}
}
\def\fettwentydefs{%
- \font\feta = feta20
- \font\fetanummer = feta-nummer10
- \font\dynfont = feta-din10 scaled \magstep 2
- \font\bracefont = feta-braces20
- \font\bracketfont = feta-brackets20
- \font\fingerfont = feta-nummer5
+ \font\fetatwenty = feta20
+ \font\fetanummertwenty = feta-nummer10
+ \font\dynfonttwenty = feta-din10 scaled \magstep 2
+ \font\bracefonttwenty = feta-braces20
+ \font\fingerfonttwenty = feta-nummer5
+ \font\markfonttwenty = feta-nummer12
+\def\currentsize{twenty}
}
\def\fettwentysixdefs{%
- \font\feta = feta26
- \font\fetanummer = feta-nummer12
- \font\dynfont = feta-din10 scaled \magstep 3
- \font\bracefont = feta-braces16
- \font\bracketfont = feta-brackets20
- \font\fingerfont = feta-nummer7
+ \font\fetatwentysix = feta26
+ \font\fetanummertwentysix = feta-nummer12
+ \font\dynfonttwentysix = feta-din10 scaled \magstep 3
+ \font\bracefonttwentysix = feta-braces16
+ \font\fingerfonttwenty = feta-nummer7
+ \font\markfonttwentysix = feta-nummer14
+\def\currentsize{twentysix}
}
\def\fetthirteendefs{%
- \font\feta = feta13
- \font\fetanummer = feta-nummer5
- \font\dynfont = feta-din10 scaled \magstep 0
- \font\bracefont = feta-braces16
- \font\bracketfont = feta-brackets16
- \font\fingerfont = feta-nummer3
+ \font\fetathirteen = feta13
+ \font\fetanummerthirteen = feta-nummer5
+ \font\dynfontthirteen = feta-din10 scaled \magstep 0
+ \font\bracefontthirteen = feta-braces16
+ \font\fingerfontthirteen = feta-nummer3
+ \font\markfonttwentysix = feta-nummer8
+\def\currentsize{thirteen}
}
\def\fetelevendefs{%
- \font\feta = feta11
- \font\fetanummer = feta-nummer5
- \font\dynfont = feta-din10 % scaled \magstep-1
- \font\bracefont = feta-braces16
- \font\bracketfont = feta-brackets16
- \font\fingerfont = feta-nummer3
+ \font\fetaeleven = feta11
+ \font\fetanummereleven = feta-nummer5
+ \font\dynfonteleven = feta-din10 % scaled \magstep-1
+ \font\bracefonteleven = feta-braces16
+ \font\fingerfonteleven = feta-nummer3
+ \font\markfonttwentysix = feta-nummer7
+\def\currentsize{eleven}
}
-
\def\sixteenfonts{\fetsixteendefs\cmrsixteen}
\def\twentyfonts{\fettwentydefs\cmrtwenty}
\def\twentysixfonts{\fettwentysixdefs\cmrtwenty}
\def\elevenfonts{\fetelevendefs\cmreleven}
\def\thirteenfonts{\fetthirteendefs\cmrthirteen}
+
+\def\bracefont{\csname bracefont\currentsize\endcsname}
+\def\fetanummer{\csname fetanummer\currentsize\endcsname}
+\def\dynfont{\csname dynfont\currentsize\endcsname}
+\def\fingerfont{\csname fingerfont\currentsize\endcsname}
+\def\markfont{\csname markfont\currentsize\endcsname}
+
+%\sixteenfonts
+%\twentysixfonts
+%\twentyfonts
+%\elevenfonts
+%\thirteenfonts
+
+\def\switchfont#1{\def\currentsize{#1}\csname feta\currentsize\endcsname}
+
\def\fetdef#1#2{%
\def#1{\hbox{\fetchar{#2}}}}
-\def\fetchar#1{\feta\char#1}
+\def\fetchar#1{\char#1}
%\input feta16
-\input feta20
+%\input feta20
% stacked numbers; overrules def in lilyponddefs
% widest num should be .40 balkheight
@@ -88,9 +111,9 @@
\else
\vbox to 0pt{%
\vss
- \hbox to 0.45\staffheight{\hss\fetanummer #1\hss}%
+ \hbox to 0.45\staffheight{\hss \fetanummer #1\hss}%
\nointerlineskip
- \hbox to 0.45\staffheight{\hss\fetanummer #2\hss}%
+ \hbox to 0.45\staffheight{\hss \fetanummer #2\hss}%
\vss}%
\fi}
diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex
index 074eb7d1ce..7740d62496 100644
--- a/tex/lily-ps-defs.tex
+++ b/tex/lily-ps-defs.tex
@@ -157,7 +157,9 @@ staffheight 4 div /interline exch def
exch
} bind def
%
-interline 2 div /bracket_b exch def
+% too fat for 20pt
+% interline 2 div /bracket_b exch def
+interline 3 div /bracket_b exch def
interline 2 mul /bracket_w exch def
staffrulethickness /stafflinethickness exch def
stafflinethickness 2 mul /bracket_t exch def
diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex
index 00ad42fc35..08ad2b5190 100644
--- a/tex/lilyponddefs.tex
+++ b/tex/lilyponddefs.tex
@@ -26,17 +26,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% macros to shorten other definitions
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\musicdef#1#2{\def#1{\musicchar{#2}}}
-\def\musicchar#1{\musicfnt\char#1}
-\def\rationalmultiply#1*#2/#3{\multiply #1 by #2 \divide #1 by #3}
-
-
-\def\maccentraise#1#2{\dimen0=\noteheight
- \rationalmultiply\dimen0*#2%
- \raise\dimen0\hbox{#1}}
-\def\maccentdef#1#2#3{\def#1{\maccentraise{\musicchar{#2}}{#3}}}
-\def\vertcenter#1{\vbox to 0pt{\vss #1\vss}}
-
\def\musicmathdef#1#2{\def#1{\musicmathchar{#2}}}
\def\musicmathchar#1{\musicmathfont\char#1}
@@ -53,8 +42,9 @@
\parindent=0pt
\newdimen\smallspace
\newdimen\interlinedist
+
\newdimen\stemthickness
-\newcount\n
+\newcount\n %duh. meaningful identifiers.
\newdimen\staffheight
\newdimen\notewidth
\newdimen\noteheight
@@ -72,7 +62,7 @@
\def\cmrtwenty{
\font\smalltextfont=cmr8
- \font\meterfont=cmbx15
+ \font\meterfont=cmbx12 at 15pt
\font\textmusic=cmmi12
% \font\musicmathfont=cmsy10 %%Not used?? /MB
\ifundefined{documentclass}
@@ -80,13 +70,16 @@
\font\italicfont=cmti10 scaled \magstep1
\font\boldfont=cmbx10
\font\largefont=cmbx12
- \font\Largefont=cmbx14
- \font\hugefont=cmbx15 scaled \magstep 2
+ \font\typewriterfont=cmtt10
+ %\font\Largefont=cmbx14
+ \font\Largefont=cmbx12 scaled \magstep 2
+ \font\hugefont=cmbx12 scaled \magstep 3
\else
% \def\settext##1{{\normalfont\normalsize ##1}}
\def\settext##1{{\normalfont ##1}}
\def\setitalic##1{\textit{\normalsize ##1}}
\def\setbold##1{\textbf{\normalsize ##1}}
+ \def\settypewriter##1{\texttt{\normalsize ##1}}
\def\setlarge##1{\textbf{\large ##1}}
\def\setLarge##1{\textbf{\Large ##1}}
\def\sethuge##1{\textbf{\huge ##1}}
@@ -100,6 +93,7 @@
\font\normaltextfont=cmr8 %\textfont is a primitive
\font\italicfont=cmti9
\font\boldfont=cmbx8
+ \font\typewriterfont=cmtt9
\font\largefont=cmbx10
\font\Largefont=cmbx12
\font\hugefont=cmbx12 scaled \magstep 2
@@ -107,6 +101,7 @@
\def\settext##1{{\normalfont\footnotesize ##1}}
\def\setitalic##1{\textit{\small ##1}}
\def\setbold##1{\textbf{\footnotesize ##1}}
+ \def\settypewriter##1{\texttt{\normalsize ##1}}
\def\setlarge##1{\textbf{\normalsize ##1}}
\def\setLarge##1{\textbf{\large ##1}}
\def\sethuge##1{\textbf{\Large ##1}}
@@ -121,6 +116,7 @@
\font\italicfont=cmti7
\font\boldfont=cmbx7
\font\largefont=cmbx9
+ \font\typewriterfont=cmtt7
\font\Largefont=cmbx10
\font\hugefont=cmbx12
\else
@@ -140,6 +136,7 @@
\font\normaltextfont=cmr6
\font\italicfont=cmti6
\font\boldfont=cmbx6
+ \font\typewriterfont=cmtt6
\font\largefont=cmbx8
\font\Largefont=cmbx9
\font\hugefont=cmbx10
@@ -200,6 +197,18 @@
% stacked horizontal lines
+\def\interscoreline{\vskip 16pt}
+\def\setdynamic#1{\dynfont #1}
+\def\setfinger#1{\fingerfont #1}
+\def\setnumber#1{\fetanummer #1}
+\def\setmark#1{\markfont #1}
+
+% big fat marks, if errors are detected.
+\def\columnerrormark{\placebox{-5pt}{0pt}{\bf C!}}
+\def\scorelineerrormark{\placebox{0pt}{-10pt}{\bf L!}}
+\def\errormark{{\bf E!}}
+\def\unknown{{\bf u}}
+
\input dyndefs
\input fetdefs
@@ -210,11 +219,13 @@
\def\defaultthinbar{\thinbar{\staffheight}}
\def\defaultthickbar{\thickbar{\staffheight}}
%? what-s wrong with rightalign?
-\def\repeatstopbar{\hss\rightalign{\repeatcolon\hskip2\smallspace\defaultthinbar\hskip\smallspace\defaultthickbar}}
+\def\repeatstopbar{\rightalign{\repeatcolon\kern2\smallspace\defaultthinbar\kern\smallspace\defaultthickbar}}
\def\repeatstartbar{\hbox{\defaultthickbar\kern\smallspace\defaultthinbar\kern2\smallspace\repeatcolon}}
\def\repeatstopstart{\hbox{\repeatcolon\kern2\smallspace\defaultthickbar\kern\smallspace\defaultthickbar\kern2\smallspace\repeatcolon}}
%compatibility
+%urg
+\fetdef\repeatcolon{18}
\def\repeatbar{\repeatstopbar}
\def\startrepeat{\repeatstartbar}
\def\repeatbarstartrepeat{\repeatstopstart}
@@ -255,31 +266,51 @@
\def\maatstreep#1{\thinbar{#1}}
\def\startbar#1{\leftalign{\thickbar{#1}\kern\smallspace\thinbar{#1}}}
\def\finishbar#1{\rightalign{\thinbar{#1}\kern\smallspace\thickbar{#1}}}
+\def\fatdoublebar#1{\hbox{\phantom{\repeatcolon\kern2\smallspace}\thickbar{#1}\kern\smallspace\thickbar{#1}}}
\def\stem#1#2{\hbox{\kern -.5\stemthickness
\vrule width\stemthickness height#2 depth-#1}}
-\def\placebox#1#2#3{%
- \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}%
-}
-
+% ugh
+% see e.g. input/test/beam-pos.ly
+%
+% something's wrong with the aligment; sometimes all symbols
+% look to be placed a bit too high (there's an ugly fix for
+% the staccato-dot in script.cc)
+% but this varies from line to line: it seems that xdvi
+% does some rounding; i can't really check this from screen on i
+% 600x600 res.
+%
\def\rulesym#1#2{\dimen0=#1%
\vrule height .5\dimen0 depth .5\dimen0 width #2}
+\def\shiftedrulesym#1#2{\dimen0=#1%
+ \vrule height .7\dimen0 depth .3\dimen0 width #2}
+\def\tinyrulesym#1#2{\dimen0=#1%
+ \vrule height .1\dimen0 depth .1\dimen0 width #2}
+%would be nice for checking alignment
+\def\openrulesym#1#2{\dimen0=#1%
+ \vbox to \dimen0{\vss%
+ \hbox{\vrule height .1\dimen0 width #2}%
+ \hbox{\vrule height .2\dimen0 width 0pt}%
+ \hbox{\vrule height .4\dimen0 width #2}%
+ \hbox{\vrule height .2\dimen0 width 0pt}%
+ \hbox{\vrule height .1\dimen0 width #2}%
+ \vss}}
+%\let\rulesym\shiftedrulesym
+%\let\rulesym\tinyrulesym
+%\let\rulesym\openrulesym
+
\ifundefined{documentclass}
\def\settext#1{\normaltextfont #1}
\def\setitalic#1{\italicfont #1}
\def\setbold#1{\boldfont #1}
+ \def\settypewriter#1{\typewriterfont #1}
\def\setlarge#1{\largefont #1}
\def\setLarge#1{\Largefont #1}
\def\sethuge#1{\hugefont #1}
\fi
-
-\def\setdynamic#1{\dynfont #1}
-\def\setfinger#1{\fingerfont #1}
-\def\setnumber#1{\fetanummer #1}
-
% the interline symbol. Redefine to remove it.
\def\defaultlineseparator{\vbox{\mussepline\vskip -5pt\mussepline}}
\def\lineseparator{\defaultlineseparator}
@@ -290,38 +321,41 @@
}
-\def\interscoreline{\vskip 16pt}
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% big fat marks, if errors are detected.
-\def\columnerrormark{\placebox{-5pt}{0pt}{\bf C!}}
-\def\scorelineerrormark{\placebox{0pt}{-10pt}{\bf L!}}
-\def\errormark{{\bf E!}}
-\def\unknown{{\bf u}}
-
\def\postheader{}
-\ifundefined{documentclass}
- \footline={\ifnum\pageno=1
- {\smalltextfont\mudelacopyright\hfil \LilyIdString
- }\else{\hfil\the\pageno\hfil}\fi
-}\else
+
+
+
+
+\ifundefined{documentclass}%
+% \ifundefined{nolilyfooter}
+% Can't nest \ifundefined ??
+ \footline={\ifnum\pageno=1\smalltextfont\mudelacopyright\hfil \LilyIdString
+ \else\hfil\the\pageno\hfil\fi}%
+ \advance\hoffset by -.6in
+ % \fi%
+\else
+\let\nopagenumbers\relax
%% FIXME
\def\ps@plain{
\renewcommand{\@oddhead}{}%
\renewcommand{\@evenfoot}{}%
\renewcommand{\@evenhead}{}%
- \renewcommand{\@oddfoot}{\ifnum\thepage=1
- {\hfil \LilyIdString
- }\else{foo\hfil\the\pageno\hfil}\fi}}
+ \renewcommand{\@oddfoot}{%
+ \ifnum\thepage=1{\hfil \LilyIdString}%
+ \else{%
+ foo\hfil\the\pageno\hfil}%
+ \fi}}
\def\ps@empty{
\renewcommand{\@oddhead}{}%
\renewcommand{\@evenfoot}{}%
\renewcommand{\@evenhead}{}%
- \renewcommand{\@oddfoot}{\ifnum\thepage=1
- {\hfil \LilyIdString
- }\else{foo\hfil\the\pageno\hfil}\fi}}
+ \renewcommand{\@oddfoot}{%
+ \ifnum\thepage=1{\hfil \LilyIdString}%
+ \else{foo\hfil\the\pageno\hfil}%
+ \fi}}%
\fi
-
+\nopagenumbers
% debugging stuff:
% \vbox to 0pt{\vskip .5cm \hruler{48}{3pt}\vss}
diff --git a/tex/mudela-book.tex b/tex/mudela-book.tex
new file mode 100644
index 0000000000..5df5c77a4d
--- /dev/null
+++ b/tex/mudela-book.tex
@@ -0,0 +1,34 @@
+
+\def\file#1{\verb+#1+}
+
+% ugh: trick to get examples not generate par
+% these are for 16pt
+\def\mudelapaperlinewidth{-28.452756}%
+\def\mudelapaperindent{28.452756}%
+\def\mudelapaperrulethickness{0.400000}%
+\def\mudelapaperbarsize{16.000000}%
+\def\mudelapaperinterline{4.000000}%
+\def\mudelapapernotewidth{5.930000}%
+\def\mudelapaperwholewidth{8.640000}%
+\def\mudelapaperunitspace{22.000000}%
+\def\mudelapaperbasicspace{4.000000}%
+\def\mudelapapergeometric{0.000000}%
+\def\mudelapaperarithmetic_basicspace{2.000000}%
+\def\mudelapaperarithmetic_multiplier{4.800000}%
+\def\mudelapaperinterbeam{3.140000}%
+\def\mudelapapergourlay_energybound{100000.000000}%
+\def\mudelapapergourlay_maxmeasures{14.000000}%
+% huh?
+% \def\exampleheight{2\mudelapaperbarsize pt}
+\def\exampleheight{2cm}
+
+% ful of pars, needs the above
+\input lilyponddefs
+% generates par
+\musixsixteendefs
+\def\musixsixteendefs{}
+% generates par
+\turnOnPostScript%
+\def\turnOnPostScript{}
+% generates par
+\def\interscoreline{}
diff --git a/tex/out/dummy.dep b/tex/out/dummy.dep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/tex/out/dummy.dep
+++ /dev/null
diff --git a/tex/titledefs.tex b/tex/titledefs.tex
index 420f5fe9ac..51df6979e7 100644
--- a/tex/titledefs.tex
+++ b/tex/titledefs.tex
@@ -14,38 +14,57 @@
\def\theinstrument{}
\def\theopus{}
\def\thepiece{}
+\def\themetre{}
+\def\thepoet{}
%
% duh. LaTeX has a \title too.
-\renewcommand*{\title}[1]{\def\thetitle{#1\\}}
-\newcommand*{\subtitle}[1]{\def\thesubtitle{#1\\}}
-\newcommand*{\composer}[1]{\def\thecomposer{#1\\}}
+\renewcommand*{\title}[1]{\def\thetitle{#1}}
+\newcommand*{\subtitle}[1]{\def\thesubtitle{#1}}
+\newcommand*{\composer}[1]{\def\thecomposer{#1}}
\newcommand*{\arranger}[1]{\def\thearranger{#1}}
\newcommand*{\instrument}[1]{\def\theinstrument{#1}}
\newcommand*{\opus}[1]{\def\theopus{#1}}
\newcommand*{\piece}[1]{\def\thepiece{#1}}
+\newcommand*{\metre}[1]{\def\themetre{#1}}
+\newcommand*{\poet}[1]{\def\thepoet{#1}}
%
-\newcommand*{\mudelatitle}[1]{\def\thetitle{#1\\}}
-\newcommand*{\mudelasubtitle}[1]{\def\thesubtitle{#1\\}}
-\newcommand*{\mudelacomposer}[1]{\def\thecomposer{#1\\}}
+\newcommand*{\mudelatitle}[1]{\def\thetitle{#1}}
+\newcommand*{\mudelasubtitle}[1]{\def\thesubtitle{#1}}
+\newcommand*{\mudelacomposer}[1]{\def\thecomposer{#1}}
\newcommand*{\mudelaarranger}[1]{\def\thearranger{#1}}
\newcommand*{\mudelainstrument}[1]{\def\theinstrument{#1}}
\newcommand*{\mudelaopus}[1]{\def\theopus{#1}}
\newcommand*{\mudelapiece}[1]{\def\thepiece{#1}}
+\newcommand*{\mudelametre}[1]{\def\themetre{#1}}
+\newcommand*{\mudelapoet}[1]{\def\thepoet{#1}}
%
-\def\makelilytitle
-{
- {\center\bfseries\center\sethuge{\thetitle}}
- \par
- {\center\bfseries\setLarge{\thesubtitle}}
+%
+\def\mudelanull{}%
+%
+\def\makelilytitle{%
+ \begin{center}
+ \bfseries
+ \ifx\mudelanull\thetitle\else\sethuge{\thetitle}\\ \fi
+ \ifx\mudelanull\thesubtitle\else\setLarge{\thesubtitle}\\ \fi
+ \end{center}
\bigskip
- {\flushright\setlarge{\normalfont\scshape\thecomposer}\par}
% urg
\edef\saveparskip{\parskip}\parskip-5mm
- {\flushright\settext{\theopus}\par}
- {\flushright\settext{\thearranger}\par}
+ \begin{minipage}[t]{0.45\textwidth}
+ \ifx\mudelanull\thepoet\else\settext{\thepoet}\\ \fi
+ \ifx\mudelanull\themetre\else\settext{\themetre}\\ \fi
+ \end{minipage}\hspace*{\fill}
+ \begin{minipage}[t]{0.45\textwidth}
+ \begin{flushright}
+ \ifx\mudelanull\thecomposer\else\setlarge{\normalfont\scshape\thecomposer}\\ \fi
+ \ifx\mudelanull\theopus\else\settext{\theopus}\\ \fi
+ \ifx\mudelanull\thearranger\else\settext{\thearranger}\\ \fi
+ \end{flushright}%
+ \end{minipage}\par
\parskip\saveparskip
{\center\setlarge{\theinstrument}\par}
{\flushleft\setLarge{\normalfont\scshape\thepiece}}
+ \leavevmode
}
\def\makelilypiecetitle
{
diff --git a/vimrc b/vimrc
index b8123fcb10..76e16104eb 100644
--- a/vimrc
+++ b/vimrc
@@ -18,10 +18,14 @@ map [20~ :w :se makeprg=make\ -k :make
map [21~ :w :se makeprg=lilypond\ %:t :make
"
" F11 check buffer for quarts
-map [23~ :w :se makeprg=lilypond\ -Q%:t :make
+map [23~ :w :se makeprg=lilypond\ -Q\ %:t :make
+"
+" shift F10: run buffer through lily -M
+map [34~ :w :se makeprg=lilypond\ -M\ %:t :make
"
"
" errorformat for lily (with columns) and gcc
" (how to see multiple-line error messages?)
"
se errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,In\ file\ included\ from\ %f:%l:,\^I\^Ifrom\ %f:%l%m
+