From 225485917d3e66bd7eb907d6462e981ae1bd1654 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 27 Apr 1998 08:50:24 +0200 Subject: [PATCH] release: 0.1.59 --- AUTHORS.txt | 4 +- Documentation/INSTALL.pod | 76 +-- Documentation/Makefile | 23 +- Documentation/colorado.bib | 452 +++++++++++++ Documentation/engraving.bib | 573 +++++++++++++++- Documentation/fonts.tex | 44 +- Documentation/literature.pod | 54 +- Documentation/man/Makefile | 15 + Documentation/{ => man}/convert-mudela.pod | 0 Documentation/{ => man}/lilypond.pod | 0 Documentation/{ => man}/ly2dvi.pod | 4 + Documentation/{ => man}/mi2mu.pod | 0 Documentation/{ => man}/mudela-book.pod | 0 Documentation/man/out/dummy.dep | 0 Documentation/mudela-man.doc | 624 ------------------ Documentation/mudela.doc | 209 +++--- Documentation/vocabulary-data | 499 +++++++------- Documentation/vocabulary-forms.el | 12 +- INSTALL.txt | 176 ++--- NEWS | 52 +- PATCHES.txt | 4 +- TODO | 16 +- VERSION | 2 +- bin/Makefile | 2 +- bin/conflily.sh | 2 +- bin/flower.py | 82 +-- bin/genheader.py | 136 ++++ bin/ly2dvi.sh | 51 +- bin/make-patch.py | 119 +++- bin/make-website.py | 96 +-- bin/mutopia-index.py | 68 ++ bin/profile-conf.sh | 2 + bin/ps-to-gifs.sh | 2 - config.make.in | 3 +- configure | 123 ++-- configure.in | 32 +- flower/NEWS | 3 + flower/VERSION | 2 +- flower/choleski.cc | 13 +- flower/diagonal-storage.cc | 251 ------- flower/full-storage.cc | 150 ++--- flower/include/choleski.hh | 2 + flower/include/full-storage.hh | 155 ++++- flower/include/full-storage.icc | 49 +- flower/include/matrix-storage.hh | 193 +++--- flower/include/matrix.hh | 26 +- flower/include/offset.hh | 2 +- flower/include/scalar.hh | 1 + flower/include/text-stream.hh | 24 +- flower/include/varray.hh | 7 + flower/include/vector.hh | 38 +- flower/matrix-debug.cc | 8 +- flower/matrix-storage.cc | 148 ----- flower/matrix.cc | 204 +++--- flower/offset.cc | 2 + flower/scalar.cc | 7 +- flower/vector.cc | 10 + init/engraver.ly | 16 +- init/feta11.ly | 89 --- init/feta13.ly | 89 --- init/feta16.ly | 89 --- init/feta19.ly | 89 --- init/feta20.ly | 89 --- init/feta23.ly | 89 --- init/feta26.ly | 89 --- init/table11.ly | 1 + init/table13.ly | 1 + init/table16.ly | 1 + init/table20.ly | 1 + init/table26.ly | 1 + input/Makefile | 19 +- input/TODO | 5 - input/bugs/Makefile | 9 + input/{ => bugs}/beam-bug.ly | 0 input/bugs/out/dummy.dep | 0 input/{ => bugs}/slur-bug.ly | 0 input/part.ly | 50 ++ input/test/Makefile | 9 + input/{ => test}/abbrev.ly | 0 input/{ => test}/beams.ly | 0 input/{ => test}/clefs.ly | 0 input/{ => test}/collisions.ly | 0 input/{ => test}/denneboom.ly | 0 input/{ => test}/font-body.ly | 0 input/{ => test}/font.ly | 0 input/{ => test}/font11.ly | 0 input/{ => test}/font13.ly | 0 input/{ => test}/font16.ly | 0 input/{ => test}/font20.ly | 0 input/{ => test}/font26.ly | 0 input/{ => test}/gourlay.ly | 0 input/test/out/dummy.dep | 0 input/{ => test}/sleur.ly | 13 + input/{ => test}/slurs.ly | 0 input/{ => test}/spacing.ly | 0 input/{ => test}/stem.ly | 0 input/{ => test}/test-lyrics.ly | 0 lily/bar-grav.cc | 21 + lily/bezier.cc | 150 ++++- lily/bow.cc | 12 +- lily/clef-item.cc | 3 +- lily/include/bar-grav.hh | 1 + lily/include/bezier.hh | 2 + lily/include/lily-proto.hh | 3 + lily/include/lookup.hh | 1 - lily/include/main.hh | 2 - lily/include/musical-request.hh | 11 +- lily/include/timing-grav.hh | 1 + lily/include/timing-translator.hh | 2 + lily/ineq-constrained-qp.cc | 6 +- lily/lookup.cc | 67 +- lily/main.cc | 10 +- lily/musical-request.cc | 174 ++--- lily/my-lily-parser.cc | 9 + lily/p-score.cc | 3 +- lily/slur.cc | 28 +- lily/spring-spacer.cc | 6 +- lily/tex-beam.cc | 87 +-- lily/timing-grav.cc | 11 +- lily/timing-translator.cc | 5 +- .../Rules.make => make/Docrules.make | 18 +- make/Install_outfiles.make | 16 + make/Makefile | 15 +- make/Manual.make | 16 + make/Mutopia.make | 18 +- make/Rules.make | 7 + make/Targets.make | 18 +- make/Variables.make | 50 +- make/WWW.make | 11 + make/lilypond.spec.in | 6 +- make/out/lelievijver.lsm | 8 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 12 +- mf/feta-generic.mf | 5 +- mf/feta-haak.mf | 28 +- mutopia/J.S.Bach/Makefile | 5 + mutopia/Makefile | 4 + mutopia/TODO | 9 + mutopia/los-toros-oboe.ly | 2 +- test/Makefile | 3 - test/bow.cc | 126 +--- tex/eglerdefs.tex | 130 ---- tex/feta11.tex | 88 --- tex/feta13.tex | 88 --- tex/feta16.tex | 88 --- tex/feta19.tex | 88 --- tex/feta20.tex | 88 --- tex/feta23.tex | 88 --- tex/feta26.tex | 88 --- tex/fetdefs.tex | 5 - tex/lily-ps-defs.tex | 133 +++- tex/lilyponddefs.tex | 11 +- tex/taupindefs.tex | 145 ---- 153 files changed, 3274 insertions(+), 4367 deletions(-) create mode 100644 Documentation/colorado.bib create mode 100644 Documentation/man/Makefile rename Documentation/{ => man}/convert-mudela.pod (100%) rename Documentation/{ => man}/lilypond.pod (100%) rename Documentation/{ => man}/ly2dvi.pod (98%) rename Documentation/{ => man}/mi2mu.pod (100%) rename Documentation/{ => man}/mudela-book.pod (100%) create mode 100644 Documentation/man/out/dummy.dep delete mode 100644 Documentation/mudela-man.doc create mode 100644 bin/genheader.py create mode 100644 bin/mutopia-index.py create mode 100644 bin/profile-conf.sh delete mode 100644 flower/diagonal-storage.cc delete mode 100644 flower/matrix-storage.cc delete mode 100644 init/feta11.ly delete mode 100644 init/feta13.ly delete mode 100644 init/feta16.ly delete mode 100644 init/feta19.ly delete mode 100644 init/feta20.ly delete mode 100644 init/feta23.ly delete mode 100644 init/feta26.ly delete mode 100644 input/TODO create mode 100644 input/bugs/Makefile rename input/{ => bugs}/beam-bug.ly (100%) create mode 100644 input/bugs/out/dummy.dep rename input/{ => bugs}/slur-bug.ly (100%) create mode 100644 input/part.ly create mode 100644 input/test/Makefile rename input/{ => test}/abbrev.ly (100%) rename input/{ => test}/beams.ly (100%) rename input/{ => test}/clefs.ly (100%) rename input/{ => test}/collisions.ly (100%) rename input/{ => test}/denneboom.ly (100%) rename input/{ => test}/font-body.ly (100%) rename input/{ => test}/font.ly (100%) rename input/{ => test}/font11.ly (100%) rename input/{ => test}/font13.ly (100%) rename input/{ => test}/font16.ly (100%) rename input/{ => test}/font20.ly (100%) rename input/{ => test}/font26.ly (100%) rename input/{ => test}/gourlay.ly (100%) create mode 100644 input/test/out/dummy.dep rename input/{ => test}/sleur.ly (92%) rename input/{ => test}/slurs.ly (100%) rename input/{ => test}/spacing.ly (100%) rename input/{ => test}/stem.ly (100%) rename input/{ => test}/test-lyrics.ly (100%) rename Documentation/Rules.make => make/Docrules.make (76%) create mode 100644 make/Install_outfiles.make create mode 100644 make/Manual.make create mode 100644 make/WWW.make create mode 100644 mutopia/TODO delete mode 100644 tex/eglerdefs.tex delete mode 100644 tex/feta11.tex delete mode 100644 tex/feta13.tex delete mode 100644 tex/feta16.tex delete mode 100644 tex/feta19.tex delete mode 100644 tex/feta20.tex delete mode 100644 tex/feta23.tex delete mode 100644 tex/feta26.tex delete mode 100644 tex/taupindefs.tex diff --git a/AUTHORS.txt b/AUTHORS.txt index c3f40ad67e..11fde65e97 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -61,7 +61,7 @@ CONTRIBUTORS -6/Apr/98 LilyPond 0.1.58 1 +6/Apr/98 LilyPond 0.1.59 1 @@ -127,6 +127,6 @@ AUTHORS(1) LilyPond documentation AUTHORS(1) -6/Apr/98 LilyPond 0.1.58 2 +6/Apr/98 LilyPond 0.1.59 2 diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod index b1fd8f6f76..a52cccadc7 100644 --- a/Documentation/INSTALL.pod +++ b/Documentation/INSTALL.pod @@ -34,6 +34,9 @@ work in Windows NT/95, but we don't promise to support it. GNU C++ version 2.7 or newer (yes, 2.8 is fine). +=item * + +Python =back @@ -41,7 +44,6 @@ GNU C++ version 2.7 or newer (yes, 2.8 is fine). GNU LilyPond does use a lot of resources. For operation you need the following: - =over 5 =item * @@ -73,6 +75,7 @@ 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 @@ -101,6 +104,7 @@ most MusiXTeX preprocessors) to install GNU LilyPond, simply type: configure + make make install This will install the following files: @@ -175,6 +179,12 @@ Set then directory TeX input is in (detected as a subdir of tex-prefix) Set the directory mf input is in (idem) +=item B<--enable-config> + +Output to different configuration files. Needed for multi-platform +builds + + =back All options are documented in the F help @@ -188,6 +198,24 @@ everything will be compiled, but nothing will be installed. The resulting binaries can be found in the subdirectories F (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, then a simple @@ -275,52 +303,6 @@ to unpack the distribution, make sure the B source tree is unpacked correctly, in particular the empty out directories (F, F et. al.) -=head1 MUSIXTEX - -Previous versions (before 0.1.39) used fonts from the TeX macro -package "MusixTeX". You can still use these, but they are not -supported. Since LilyPond's Feta font is much prettier, you'd be -seriously misguided if you used them, but anyway, here are the -installation instructions for those deprecated fonts. - - -[obsolete] I use the MusixTeX fonts those found in MusixTeX -T.73. Beware, the clef symbol seems to have changed its position in -some versions, (notably Egler's, a.k.a. OpusTeX). The MusixTeX fonts -are included in MusixTeX (T73 or newer), which can be had from any -CTAN site, e.g. at - -=over 4 - -=item ftp://ftp.shsu.edu/tex-archive/macros/musixtex/taupin - -=item ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin - -=item ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin - -=back - -You only need the contents of the F subdirectory of the -package. The primary site of the Taupin version is -ftp://hprib.lps.u-psud.fr/pub/music_zips/musixtex.zip - -Install the musixtex fonts in a directory which TeX and MF knows (if -you are root, look for a directory which contains the directories with -AMS and CM source (*.mf) files. Create a subdir lilypond or musixtex -and copy the fonts into that). Do not forget to rehash TeX (if -applicable) - -Example: my fonts are in F, and I -have a symlink pointing to that in -F. After I copied the -files, I ran "texhash" - -Andreas Egler's version of MusixTeX, now called OpusTeX, will also -work. Andreas moved some characters around in the fonts, so you have -to edit the definitions in F. - - - =head1 AUTHORS Han-Wen Nienhuys diff --git a/Documentation/Makefile b/Documentation/Makefile index 47df8c5935..27248c9ad8 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -8,6 +8,7 @@ depth = .. # identify module: # NAME = Documentation +SUBDIRS=man # @@ -16,13 +17,14 @@ NAME = Documentation include ./$(depth)/make/Variables.make include ./$(depth)/make/Version.make include ./$(depth)/make/Files.make -include ./Rules.make +include ./$(depth)/make/Docrules.make # # DOCFILES = $(wildcard *.doc) OUTPODFILES = $(addprefix $(outdir)/,$(PODFILES)) +BIBFILES= $(wildcard *.bib) TEXTFILES = $(OUTPODFILES:.pod=.txt) GROFFFILES = $(OUTPODFILES:.pod=.1) HTMLFILES = $(OUTPODFILES:.pod=.html) @@ -39,33 +41,16 @@ giffiles=$(XPMS:.xpm=.gif) gifs: $(addprefix $(outdir)/, $(giffiles)) -EXTRA_DISTFILES = $(XPMS) $(DOCFILES) vocabulary-data vocabulary-forms.el fonts.tex automake.urgh engraving.bib +EXTRA_DISTFILES = $(XPMS) $(DOCFILES) vocabulary-data vocabulary-forms.el fonts.tex automake.urgh $(BIBFILES) # don't do DVI files. They can only be made if lily is installed do-doc: $(TEXTFILES) html: $(HTMLFILES) -htmldist: html - $(lily_bindir)/make_website - dvi: $(DVIFILES) # generic targets and rules: # include $(depth)/make/Targets.make include $(depth)/make/Rules.make - -MAN1FILES = lilypond convert-mudela mi2mu mudela-book -MAN1GROFF = $(addprefix $(outdir)/, $(addsuffix .1,$(MAN1FILES))) - -localinstall: $(outdir)/lilypond.1 - $(INSTALL) -d $(mandir)/man1 - $(INSTALL) -m 644 $(MAN1GROFF) $(mandir)/man1 - - -localuninstall: - (cd $(mandir)/man1/; rm -f $(MAN1GROFF)) - - - diff --git a/Documentation/colorado.bib b/Documentation/colorado.bib new file mode 100644 index 0000000000..2955972393 --- /dev/null +++ b/Documentation/colorado.bib @@ -0,0 +1,452 @@ +% +% from the University of Colorado Engraving page (by Alyssa Lamb) +% + +@Book { +author ={Jacob, Archibald}, +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}, +subject = { Musical notation}, +} + +@Book { +author ={Brandt, Carl, and Roemer, Clinton}, +title = {Standardized Chord Symbol Notation}, +address={Sherman Oaks, CA} +publisher={Roerick Music Co.} +} + +@Book { +author = {Johnson, Harold M}, +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} +subject = {Musical notation --Handbooks, manuals}, +} + +@Book { +title = {Music Printing & Publishing}, +editedby={ Donald W. Krummel \& Stanley Sadie}, +author = {?} +year = {1990}, +series={ The Norton/Grove Handbooks in Music.} +publisher={W.W. Norton} +} + +@Book { +author={Foss, Hubert}, +title = {Music Printing}, +series = {Practical Printing and Binding}, +address={ London}, +publisher={ Oldhams Press Ltd., Long Acre.} +} + +@Book { +author = {Steele, Robert}, +year = {1903}, +title = {The Earliest English Music Printing}, +address={ London}, +} +@Book { +author={Austin, Ernest}, +title = {The Story of Music Printing}, +address={ London}, +publisher={Lowe and Brydone Printers, Ltd.} +} + +} + +@Book { +title = {Pictoral History of Music Printing}, +address={E;lhardt, Indiana} +publisher={H. and A. Selmer, Inc.} +} + +@Book { +author = {Scholderer, Victor}, +year = {1963}, +title = {Johann Gutenberg}, +address={ London}, +publisher={ British Museum}, +} + +@Book{ +author = {Wintermitz, Emmanuel}, +year = {1955}, +title = {Musical Autographs from Monteverdi to Hindemith}, +address={Princeton} +publisher={Princeton University Press}, +} + +@Book{ +author = {Wolf, Johannes}, +year = {1919}, +title = {Handbuch der Notationskunde}, +address={Leipzig}, +publisher={ Breitkopf & Hartel.} +} +@Book{ + +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}. +} + +@Book{ +author={Chrsander, F.} +year={18??} +title={A Sketch of the HIstory of Music printing, from the 15th to the 16th century}, +} +@Book{ +author = {Squire, W}, +year = {1897}, +title = {Notes on Early Music Printing}, +, title = {Bibliographica}, +, iii, 99. +} + +@Book{ +author = {Meyer, K. and O'Meara, J}, +year = {1935}, +title = {The Printing of Music, 1473-1934}, +, title = {The Dolphin}, +, ii, p.171-207. + +@Book{ +author = {Pattison, B}, +year = {1939}, +title = {Notes on Early Music Printing}, +,title = {The Library}, +, 4th ver., xix, p.389-421. +} + +@Book{ +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{ +author = {King, H}, +year = {1964}, +title = {Four Hundred Years of Music Printing}, +London. +} + +@Book{ +Gamble, W. 1923 (Rev. 1971). title = {Music Engraving and Pinting, Historical And Technical Treatise}, +Londond. + +Deutsch, O.F. 1946 (Rev.1961). title = {Music Publishers' Numbers}, +London. +} + +@Book{ +author = {Marco, G.A}, +year = {1962}, +title = {The Earliest Music Printers of Continental Europe: a Checklist of Facsimiles Illustrating Their Work}, +Charlottesville, Virginia. +} + +@Book{ +author = {Kinkeldey, O}, +year = {1932}, +title = {Music And Music Printing in Incunabula}, +, title = {Papers of the Bibliographical Society of America}, +, xxvi, p.89-118. +} + +@Book{ +author = {Oldman, C.B}, +year = {1934}, +title = {Collecting Musical First Editions}, +London. +Also in: Carter, J. 1934. title = {New Paths in Book Collecting}, +London. + +Krummel, D.W. 1958-9. title = {Graphic Analysis in Application to Early American Engraved Music}, +, title = {Notes}, +, xvi, p.213. +} + +@Book{ +author = {Krummel, D.W}, +year = {1971}, +title = {Oblong Format in Early Music Books}, +, title = {The Library}, +, 5th ser., xxvi, p.312. +} + +@Book{ +author = {King, A.H}, +year = {1973}, +title = {The 50th Anniversary of Music Printing}, +, title = {M_________}, +, cxiv. +} + +@Book{ +Rastall, Richard. 1982. title = {The notation of Western music : an introduction}, +New York, N.Y.: St. Martin's Press. +subject = { Musical notation}, + + +} + +@Book{ +author = {Tappelot, Willy}, +year = {1947}, +title = {La Notation Musicale}, +Paris: Neuchatel. +} + +@Book{ +author = {Williams, C.F. Abdy}, +year = {1903}, +title = {The Story of Notation}, +New York: Charles Scribner's Sons. +} + +@Book{ +author = {Rosenthal, Carl A}, +year = {1967}, +title = {A Practical Guide to Music Notation}, +New York: MCA Music. + +
    } + +@Book{ +Apel, Willi. 1953. title = {The notation of polyphonic music, 900-1600.}, +Cambridge, Mass.: Mediaeval Academy of America. +subject = {Musical notation}, +} + +@Book{ + + +Berger, Anna Maria Busse. 1993. title = {Mensuration and proportion signs : origins and evolution}, +Oxford, England: Clarendon Press; New York: Oxford University Press . +} + +@Book{ +Parrish, Carl. 1957. title = {The notation of medieval music}, +New York : Norton. +subject = {Musical notation}, + + +} + +@Book{ +author = {Parrish, Carl}, +year = {1946}, +title = { The Notation of Medieval Music}, +New York: Carl Fischer, Inc. +} + +@Book{ +author = {Patch, Harry}, +year = {1949}, +title = { Genesis of a Music}, +Madison: University of Wisconsin Press. +} + +@Book{ +Cage, John. 1969. title = {Notations}, +New York: Something Else Press. +subject = { Music, Manuscripts, Facsimiles}, + +(Facsimiles of holographs from the Foundation for Contemporary Performance Arts, with text by 269 composers, but rearranged using title = {chance operations.}, +) +} + +@Book{ +author = {Gaburo, Virginia}, +year = {1977}, +title = {Notation}, +publisher= {Lingua Press: La Jolla, California}. +subject = { A Lecture about notation, new ideas about}, + + +} + +@Book{ +author = {Risatti, Howard}, +year = {1975}, +title = {New Music Vocabulary}, +Urbana, Illinois: University of Illinois Press. +subject = { A Guide to Notational Signs for Contemporary Music}, + + +} + +@Book{ +author = {Boehm, Laszlo}, +year = {1961}, +Modern Music Notation. New York: G. Schirmer, Inc. +} + +@Book{ +author = {Cowell, Henry}, +year = {1930}, +title = {New Musical Resources}, +New York: Alfred A. Knopf, Inc. + +author = {Cowell, Henry}, +year = {1927}, +title = {Our Inadequate Notation}, +,title = {Modern Music}, +, Vol. 4, No. 3. +} + +@Book{ +author = {Bowers, Roger}, +year = {1992}, +title = {Music & Letters}, +v73, n3, August, p347(52) + +Some reflection upon notation and proportion in Monteverdi's mass and vespers. +} + +@Book{ +author = {Brainard, Paul}, +year = {1992}, +title = {Current Musicology}, +n50, July-Dec, p21(26) + +Proportional notation in the music of Schutz and his contemporaries in the 17th Century.} + +@Book{ + +author = {Monelle, Raymond}, +year = {1989}, +title = {Comparative Literature}, +v41, n3, Summer, p252(18) + +Music notation and the poetic foot. +} + +@Book{ +author = {Pinegar, Sandra}, +year = {1993}, +title = {Current Musicology}, +n53, July, p99(10) +The seeds of notation and music paleography. + +author = {Smith, Norman E}, +year = {1990}, +title = {Current Musicology}, +n45-47, Jan-Dec, p283(22) + +The notation of fractio modi. +} + +@Book{ +author = {Treitler, Leo}, +year = {1992}, +title = {The Journal of Musicology}, +v10, n2, Spring, p131(61) + +The title = {unwritten}, +and title = {written transmission}, +of medieval chant and the start-up of musical notation. + +Notational practice developed in medieval music to address the written tradition for chant which interacted with the unwritten vocal tradition... +} + +@Book{ +author = {West, M.L}, +year = {1994}, +title = {Music & Letters}, +v75, n2, May, p161(19) +The Babylonian musical notation and the Hurrian melodic texts. + +A new way of deciphering the ancient Babylonian musical notation... + +} + +@Book{ +author = {Brown, Earle}, +year = {1986}, +title = {Musical Quarterly}, +v72, Spr, p180(22) + +The notation and performance of new music. +} + +@Book{ +author = {Eggleston, Suzanne}, +year = {1994}, + +title = {Notes}, +v51, n2, Dec, p657(7) + +New periodicals + +A list of new music periodicals covering the period Jun.-Dec. 1994. Includes aims, formats and a description of the contents of each listed periodical. Includes title = {Music Notation News}, + +} + +@Book{ + +author = {Fuller, David}, +year = {1989}, +title = {The Journal of Musicology}, +v7, n1, Wntr, p21(8) + +Notes and inegales unjoined: defending a definition. (written-out inequalities in music notation). +} + +@Book{ + +author = {Jones, David Evan}, +year = {1990}, +title = {Perspectives of New Music}, + + +Speech extrapolated. (includes notation) + +} + +@Book{ + +author = {Lependorf, Jeffrey}, +year = {1989}, +I>Perspectives of New Music v27, n2, Summer, p232(20) + +Contemporary notation for the shakuhachi: a primer for composers. (Tradition and Renewal in the Music of Japan) + +} + +@Book{ +author = {Rastall, Richard}, +year = {1993}, +title = {Music & Letters}, +v74, n4, Nov, p639(2) +Equal Temperament Music Notation: The Ailler-Brennink Chromatic Notation. Results and Conclusions of the Music Notation Refor by the Chroma Foundation (book reviews). +} + +@Book{ +
      +Francois, Jean-Charles.title = {Perspectives of New Music}, +v30, n1, Wntr, p6(15) + +1992. +Writing without representation, and unreadable notation. by Jean-Charles Francois. +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... +} + +@Book{ +author = {Hamel, Keith A}, +year = {1989}, + +title = {Perspectives of New Music}, +v27, n1, Wntr, p70(14) + +A design for music editing and printing software based on notational syntax. (computer music) + diff --git a/Documentation/engraving.bib b/Documentation/engraving.bib index 5b8a1ba4ba..ad34b6a0a3 100644 --- a/Documentation/engraving.bib +++ b/Documentation/engraving.bib @@ -1,45 +1,128 @@ -@Book{wanske, - author = {Helene Wanske}, - ALTeditor = {}, - title = {Musiknotation --- Von der Syntax des Notenstichs zum -EDV-gesteuerten Notensatz}, - publisher = {Schott-Verlag, Mainz}, - year = {1988}, - OPTkey = {}, - OPTvolume = {}, - OPTnumber = {}, - OPTseries = {}, - OPTaddress = {}, - OPTedition = {}, - OPTmonth = {}, - OPTnote = {ISBN 3-7957-2886-x}, - OPTannote = {} -} - - @Book{rastall, author = {Richard Rastall}, ALTeditor = {}, title = {The Notation of Western Music: an -Introduction}, + Introduction}, publisher = {J. M. Dent \6& Sons London}, year = {1983}, - OPTkey = {}, - OPTvolume = {}, - OPTnumber = {}, - OPTseries = {}, - OPTaddress = {}, - OPTedition = {}, - OPTmonth = {}, - OPTnote = {}, - OPTannote = {} + key = {}, + volume = {}, + number = {}, + series = {}, + address = {}, + edition = {}, + month = {}, + note = {}, + comment = {Interesting account of the evolution and origin of common notation starting from neumes, and ending with modern innovations HWN}, + annote = {}, } @Book{ross, -author = {Ted 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 = {}, + comment = {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}, + key = {}, + volume = {24}, + number = {3}, + month = {march}, + pages = {289--306}, + note = {}, + annote = {}, + comment = {A description of various conversions, decisions and issues relating to this interactive editor HWN}, +} + + + +@Book {wanske, + comment = {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{, + ALTauthor = {}, + ALTeditor = {}, + title = {}, + publisher = {}, + year = {}, + key = {}, + volume = {}, + number = {}, + series = {}, + address = {}, + edition = {}, + month = {}, + note = {}, + annote = {}, +} + + + +@Book {, + 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 {, + comment = {Sound (boring) review of the various hairy rhythmic notations used by avant-garde composers HWN}, + year = {1978}, + title = {Modern Rhythmic Notation}, + author = {Gardner Read}, + publisher = {Indiana University Press}, +} + + +@Book {, + comment = {This is as close to the ``standard'' reference work for music notation issues as one is likely to get. MB}, + title = {Music Notation: a Manual of Modern Practice}, + author = {Gardner Read}, + totalentry = {(2nd edition)}, + publisher ={Taplinger Publishing}, + address ={New York}, + note = { (Out of print)}, +} + + +@Book{, + ALTauthor = {}, + ALTeditor = {}, + title = {}, + publisher = {}, + year = {}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, @@ -47,10 +130,432 @@ author = {Ted Ross}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, - OPTnote = {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}, + OPTnote = {}, OPTannote = {} } +@Book {, + year = {1948}, + title = {Aus der Werkstatt eines Notenstechers}, + author = {Karl Hader}, + publisher = {Waldheim--Eberle Verlag}, + address ={Vienna}, + + comment = {Hader was the chief-engraver of the Waldheim-Eberle music + publishers. This book contains the most important rules on engraving +(according to [Chlapik])}, + +} + + + +@Booklet {, + comment = {Pamphlet explaining some fine points in music font design HWN}, + year = {1996}, + title = {Standard music notation specifications for computer programming. }, + month = {December}, + publisher = {MPA}, +} + +@TechReport{, + comment = {Rules on formatting music formulated for use in computers. Mainly distilled from [Ross] HWN}, + year = {1988}, + title = {Music Formatting Guidelines,}, + author = {D. Roush}, + note={Technical Report OSU-CISRC-3/88-TR10}, + institution ={Department of Computer and Information Science, The Ohio State University}, +} + + + +@PhdThesis {, + year = {1985}, + title = {Music Notation by Computer}, + author = {Donald Byrd}, + institution = {Dissertation Indiana University}, +} + + +@Article {, + year = {1974}, + title = {A System for Music Printing by Computer}, + author = {Donald Byrd}, + journal = {Computers and the Humanities}, + volume ={ 8}, + pages ={161-72}, +} + + +@Book {, + comment = {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 {, + year = {1975}, + title = {A Computer-Oriented System for Music Printing}, + author = {David A Gomberg}, + school = {Washington University}, +} + + +@Book {, + comment = {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 {, + title = {A Computer-oriented System for Music Printing}, + author = {David A. Gomberg; }, + + journal = {Computers and the Humanities}, + volume={11}, + pages = {63-80}, +} + + +@TechReport {, + comment = {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 {, + comment = {A brief overview of MusiCopy HWN}, + year = {1987}, + title = {MusiCopy: An automated Music Formatting System}, + author = {Allen Parish, Wael A. Hegazy, John S. Gourlay, 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 {, + comment = {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, A. Parrish, D. Roush, F. Sola, Y. Tien}, + totalentry = {OSU-CISRC-2/87-TR3}, + institution ={Department of Computer and Information Science, The Ohio State University}, +} + + +@TechReport {, + comment = {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 {, + comment = {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 {, + comment = {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 {, + comment = {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}, +} + + +@TechReport {, + comment = {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}, +} + + +@TechReport {, + institution={ Department of Computer and Information Science, The Ohio State University}, + comment = {Calculating beam slopes HWN}, + year = {1987}, + title = {Design of Musical Beams,}, + author = {F. Sola and D. Roush}, + totalentry = { OSU-CISRC-10/87-TR30}, +} + + +@Article {, + comment = {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 {, + comment = {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}, +} + + +@Article {, + comment = {This describes an algorithm which uses springs between adjacent columns. This algorithm is a "subclass" of the LilyPond algorithm. HWN}, + year = {1995}, + title = {A New Algorithm for Horizontal Spacing of Printed Music}, + author = {Lippold Haken and Dorothea Blostein}, + totalentry = {Lippold Haken and Dorothea Blostein. ``A New Algorithm for Horizontal Spacing of Printed Music'', International Computer Music Conference, Banff, Sept. 1995}, + pages = {118-119}, +} + +@Article {, + comment = {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}, + totalentry = {Communications of the ACM}, + volume={J34}, + number={ 3},month={ March}, pages = {88-99}, +} + + +@Article {, + comment = {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 {, + comment = {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{, + comment = {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}, + totalentry = {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.)}, +} + + +@Article {, + 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 {, + comment = {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 {, + year = {1996}, + title = {Implementing a Symbolic Music Processing System}, + author = {Miguel Filgueiras}, + totalentry = {LIACC, Universidade do Porto, 1996; submitted}, +} + +@Book {, + title = {Some Music Typesetting Algorithms}, + author = {Miguel Filgueiras}, + totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming}, +} + + +@Book {, + comment = {A concise, alphabetically ordered list of typesetting and music (notation) issues with a rather simplistic attitude but in most cases "good-enough" answers JCN}, + year = {1996}, + title = {Essential Dictionary of Music Notation}, + author = {Tom Gerou and Linda Lusk}, + publisher = {Alfred Publishing}, + address ={Van Nuys CA}, + isbn ={ ISBN 0-88284-768-6}, +} + + +@Book {, + comment = {An clearly written book for the casually interested reader. It shows some of the conventions and difficulties in printing music HWN}, + year = {1987}, + title = {Die Praxis des Notengraphikers}, + author = {Herbert Chlapik}, + publisher = {Doblinger}, + isbn ={ ISBN 3-9000 035-96-2}, +} + + +@Book {, + comment = {Webpages about engraving (designed with finale users in mind) (sic) HWN}, + institution = {The University of Colorado}, + title ={The University of Colorado Music Engraving page.}, + url={http://obenamots.cc.colorado.edu/Musicpress/engraving.html}, +} + + + + +@Book {, + year = {1963}, + author = {Anthony Donato}, + title ={ Preparing Music Manuscript}, + address ={ Englewood Cliffs, NJ}, + publisher={Prentice-Hall}, +} + + +@Book {, + year = {1900}, + title = {Uitgeven van muziek}, + author = {Donemus}, + publisher= {Donemus Amsterdam}, +} + + +@Book {, + year = {1987}, + title = {The Norton Manual of Music Notation}, + author = {George Heussenstamm}, + address= { New York}, + publisher={ Norton}, +} + + +@Book {, + 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 {, + year = {1973}, + title = {The Art of Music Copying}, + author = {Clinton Roemer}, + publisher={ Roerick music co.}, + address= { Sherman Oaks (CA)}, +} + + +@Book {, + year = {1979}, + title = {Music Notation Primer}, + author = {Glen Rosecrans}, + publisher={Passantino}, + address={New York}, +} + + +@Book {, + year = {1980}, + title = {Music Notation in the Twentieth Century}, + author = {Kurt Stone}, + publisher= {Norton}, + address={New York}, + note ={(Out of print)}, + +} + + +@Book {, + comment = {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}, +} + + + +@URL {, + comment = {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}, + url={ http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html}, +} + + +@URL {, + comment = {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.}, + url={http://www.jtauber.com/music/encoding/niff/}, +} + + +@URL {, + title = {SMDL, Standard Musical Description Language}, + url={ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf}, + note={ISO/IEC DIS 10743}, +} diff --git a/Documentation/fonts.tex b/Documentation/fonts.tex index e9c18ab9c4..a9e1940fbe 100644 --- a/Documentation/fonts.tex +++ b/Documentation/fonts.tex @@ -10,8 +10,8 @@ This document are some design notes of the Feta font. Feta (not an abbreviation of Font-En-Tja) is a font of music symbols. All MetaFont -%ugh sources are original. The symbols are modelled after various -editions of music, notably +sources are original. The symbols are modelled after various editions +of music, notably \begin{itemize} \item B\"arenreiter \item Hofmeister @@ -173,34 +173,32 @@ Traditional engraving uses a set of 9 standardised sizes for Staffs (running from 0 to 8). We have tried to measure these (helped by a magnifying glass), and -found the staffsizes in the following table. One should note that +found the staffsizes in table~\ref{fonts:staff-size}. One should note that these are estimates, so I think there could be a measuring error of ~ .5 pt. Moreover [Ross] states that not all engravers use exactly those sizes. -\begin{table} -\begin{tabular}{lll} -Staffsize &Numbers &Name\\ +\begin{table}[h] + \begin{center} + \begin{tabular}{lll} +Staffsize &Numbers &Name\\ \hline\\ -26.2pt &No. 0\\ -22.6pt &No. 1 &Giant/English\\ -21.3pt &No. 2 &Giant/English\\ -19.9pt &No. 3 &Regular, Ordinary, Common\\ -19.1pt &No. 4 &Peter\\ -17.1pt &No. 5 &Large middle\\ -15.9pt &No. 6 &Small middle\\ -13.7pt &No. 7 &Cadenza\\ -11.1pt &No. 8 &Pearl\\ -\end{tabular} -\caption{Font and staff sizes} +26.2pt &No. 0\\ +22.6pt &No. 1 &Giant/English\\ +21.3pt &No. 2 &Giant/English\\ +19.9pt &No. 3 &Regular, Ordinary, Common\\ +19.1pt &No. 4 &Peter\\ +17.1pt &No. 5 &Large middle\\ +15.9pt &No. 6 &Small middle\\ +13.7pt &No. 7 &Cadenza\\ +11.1pt &No. 8 &Pearl\\ + + \end{tabular} + \caption{Foo} + \label{fonts:staff-size} + \end{center} \end{table} - -This table is partially taken from [Ross]. Most music is set in No.3, -but the papersizes usually are bigger than standard printer paper -(such as A4). If you plot these, you'll notice that the sizes (With -exception of 26) almost (but not quite) form a arithmetic progression. - Ross states that the dies (the stamps to make the symbols) come in 12 different sizes. diff --git a/Documentation/literature.pod b/Documentation/literature.pod index b714006cdd..37fb180df3 100644 --- a/Documentation/literature.pod +++ b/Documentation/literature.pod @@ -13,8 +13,9 @@ 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. +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. @@ -22,7 +23,7 @@ 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, +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. @@ -68,22 +69,22 @@ distilled from [Ross] HWN] =head2 Notation with computers -Donald Byrd. ``Music Notation by Computer''. Dissertation Indiana +Donald Byrd. ``Music Notation by Computer''. Dissertation Indiana University, 1985. -Donald Byrd. ``A System for Music Printing by Computer.'' Computers +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 +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.'' +David A Gomberg. ``A Computer-Oriented System for Music Printing.'' Dissertation Washington University. 1975. -Walter B Hewlett. and Eleanor Selfridge-Field. ``Directory of Computer +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. @@ -161,28 +162,28 @@ 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 +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: +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 +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'', +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 @@ -195,7 +196,7 @@ Gary M. Rader. ``Creating Printed Music Automatically''. Computer Vol "constraints" (which go unexplained) to automatically position various elements. HWN] -Stephen Dowland Page. ``Computer Tools for Music Information +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, @@ -214,21 +215,21 @@ 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. +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 +Miguel Filgueiras. ``Implementing a Symbolic Music Processing System''. LIACC, Universidade do Porto, 1996; submitted. -Miguel Filgueiras, ``Some Music Typesetting Algorithms''. LIACC, +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'' +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 @@ -257,18 +258,18 @@ Prentice-Hall, 1963. Donemus. ``Uitgeven van muziek''. Donemus Amsterdam, 1900 -George Heussenstamm. The Norton Manual of Music Notation. New York: +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 +C. Roemer, ``The Art of Music Copying''. Roerick music co., Sherman Oaks (CA), 1973. -Glen Rosecrans. Music Notation Primer. New York: Passantino, 1979. +Glen Rosecrans. ``Music Notation Primer''. New York: Passantino, 1979. -Kurt Stone. Music Notation in the Twentieth Century. New York: Norton, +Kurt Stone. ``Music Notation in the Twentieth Century''. New York: Norton, 1980. (Out of print) @@ -276,7 +277,7 @@ Kurt Stone. Music Notation in the Twentieth Century. New York: Norton, =head2 Other stuff -Peter S. Langston, ``Unix music tools at Bellcore''. Software --- +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 @@ -287,15 +288,14 @@ your nuclear plant supervisor to use AC/DC for checking the reactor HWN] =head2 File formats -Howard Wright , how to read and write tab: a -guide to tab notation, +Howard Wright , ``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. ftp://blackbox.cartah.washington.edu/pub/, -http://www.jtauber.com/music/encoding/niff/ +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] diff --git a/Documentation/man/Makefile b/Documentation/man/Makefile new file mode 100644 index 0000000000..67d1357ae6 --- /dev/null +++ b/Documentation/man/Makefile @@ -0,0 +1,15 @@ + +depth = ../.. + +include $(depth)/make/Include.make +include $(depth)/make/Docrules.make +SECTION=1 +MANGROFF = $(addprefix $(outdir)/, $(addsuffix .$(SECTION),$(basename $(PODFILES) .pod))) + +default: $(MANGROFF) + + +INSTALLATION_OUT_FILES=$(MANGROFF) +INSTALLATION_DIR=$(mandir)/man$(SECTION) + +include $(depth)/make/Install_outfiles.make diff --git a/Documentation/convert-mudela.pod b/Documentation/man/convert-mudela.pod similarity index 100% rename from Documentation/convert-mudela.pod rename to Documentation/man/convert-mudela.pod diff --git a/Documentation/lilypond.pod b/Documentation/man/lilypond.pod similarity index 100% rename from Documentation/lilypond.pod rename to Documentation/man/lilypond.pod diff --git a/Documentation/ly2dvi.pod b/Documentation/man/ly2dvi.pod similarity index 98% rename from Documentation/ly2dvi.pod rename to Documentation/man/ly2dvi.pod index c9a749d710..60968cf9d5 100644 --- a/Documentation/ly2dvi.pod +++ b/Documentation/man/ly2dvi.pod @@ -44,6 +44,10 @@ Print help. Keep the LaTeX file after the run. +=item B<-K> + +Keep LilyPond output after the run. + =item B<-l,--language> Specify LaTeX language. diff --git a/Documentation/mi2mu.pod b/Documentation/man/mi2mu.pod similarity index 100% rename from Documentation/mi2mu.pod rename to Documentation/man/mi2mu.pod diff --git a/Documentation/mudela-book.pod b/Documentation/man/mudela-book.pod similarity index 100% rename from Documentation/mudela-book.pod rename to Documentation/man/mudela-book.pod diff --git a/Documentation/man/out/dummy.dep b/Documentation/man/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Documentation/mudela-man.doc b/Documentation/mudela-man.doc deleted file mode 100644 index 4434920ed7..0000000000 --- a/Documentation/mudela-man.doc +++ /dev/null @@ -1,624 +0,0 @@ -% -*-latex-*- - -% 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-man.dvi -% -% or -% -% mudela-book --outdir=out/ --outname=mudela-course.mudtex mudela-course.doc -% latex '\nonstopmode \input out/mudela-course.mudtex' - - -\documentclass{article} -\usepackage{a4wide} -\title{GNU LilyPond input format 0.1} -\author{Han-Wen Nienhuys} -\date{October 8, 1997} - -\begin{document} -\maketitle -\def\interexample{\par Produces the following:\par} -\def\preexample{\par\medskip} -\def\postexample{\par\medskip} -\def\file#1{{\texttt{#1}}} - -\emph{This document is not complete yet} - -\section{Introduction} - -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{ - -} -\end{verbatim} -and instantiations: - -\begin{verbatim} -\TYPE{ } -\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[fragment,verbatim]{mudela} -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[fragment,verbatim]{mudela} - '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[verbatim,fragment]{mudela} -\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[verbatim,fragment]{mudela} - \octave c'; - [c8 () d8 () e8 - e8(] [)g8 % 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+[ ]+ will generate a parse error. - -\subsection{Slurs and Ties} - -Ties connect the noteheads of adjacent notes. They are entered as follows: - -\begin[verbatim,fragment]{mudela} -a'4 ~ a''4 -\end{mudela} - -Slurs connect whole chords, and try to avoid crossing stems. They are -entered as follows: - -\begin[verbatim,fragment]{mudela} -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[verbatim,fragment]{mudela} - 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} - % 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 } % 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/mudela.doc b/Documentation/mudela.doc index 8c95b4d1f6..60d906ac77 100644 --- a/Documentation/mudela.doc +++ b/Documentation/mudela.doc @@ -1,4 +1,4 @@ -% -*-latex-*- +% -*-tex-*- % this document should be run through the mudela-book script after lilypond % has been installed. The rules have been precooked into the @@ -79,21 +79,22 @@ 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 -texteditor (such as emacs or vi) to create an input file. When you -are done editing your input file, you run LilyPond. If Lily -finds any errors in your input file she\footnote{ If computer programs -could have gender, we're sure that LilyPond is 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 lots of joy. We hope -you do not mind our little aberration from computer-manual tradition. +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 ? % -} complain. If everything is well, than she'll generate a file that -you can process further to view or print it. +} 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 @@ -105,19 +106,21 @@ 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}. +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 +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 @@ -125,7 +128,7 @@ Parsing ... [/home/hanwen/musix/spacer/init/lily-init.ly[/home/hanwen/ ... stuff left out here ... - Documentation/silly.ly] + Documentation/silly.ly] Interpreting music ...[1] (time: 0.04 seconds) Preprocessing elements... Calculating column positions ... [2] @@ -137,18 +140,16 @@ warning: Can not solve this casting problem exactly; revert to Word_wrap Postprocessing elements... TeX output to silly.tex ... \end{verbatim} - All has gone well; there were some warning but no errors. The - output is a \file{TeX}\footnote{% - \file{TeX} is usually spelled as - \TeX. It is batch program for typesetting text, developed by the - famous 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 was also done with \TeX.} file, and it is called - \file{silly.tex}. +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. type \verb+tex silly+. The output should resemble this: + 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 @@ -162,17 +163,17 @@ 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}''. + 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, 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: +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 } > @@ -185,20 +186,20 @@ 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. So we try to explain how to use -LilyPond, and not how LilyPond works; the input language of LilyPond -is the subject of the document. For want of a better name we call -this language Mudela (short for Music Description Language). +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 this 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\footnote{ They are in \file{lilypond-x.y.z/lily/parser.y}, -\file{lilypond-x.y.z/lily/lexer.l}. Of course, it would be even +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.)} +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 @@ -215,22 +216,24 @@ 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, and that you are familiar with terms such as -``note'', ``clef'', ``slur'' etc. +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} If you have done music copying before, then using LilyPond may seem -awkward to you in the beginning. The purpose of LilyPond is usually +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 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. +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 @@ -239,19 +242,19 @@ 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'', but ``a quarter note, -pitch $d^2$''. LilyPond will figure out from the musical info what +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 -that you enter can be played and transposed automatically. +once entered can be played and transposed automatically. \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 know as c$^1$ is written as \verb+c'+. A quarter +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[fragment,verbatim,center]{mudela} @@ -262,11 +265,16 @@ name, and one part for the octave. The number of apostrophes specifies the octave to use, and the letter which note name to use. The note names simply are the letters \verb+a+ to \verb+g+. +For example, +\begin[fragment,verbatim]{mudela} + 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[fragment,verbatim]{mudela} -'c8 c8 c'16 c''16 d''64 b'64 c1 c'4 d'4 e'4 f'4 g'4 a'4 +'c8 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: @@ -280,31 +288,42 @@ This gives us already enough material to make simple songs: 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. - -\begin{table}\caption{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} +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{Defaults 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\footnote{LilyPond actually defaults to -dutch notenames, with aes, aeses, ees and eeses added} are used in a -number of germanic languages, notably dutch, german, swedish, -norwegian. If you are not comfortable with these names, you can make -your own names. Check out the example initialisation files. A number -of languages are included. +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{Hairy rhythms} @@ -508,10 +527,10 @@ A Mudela file needs some red tape \begin[verbatim,center]{mudela} \score{ \melodic { - \octave c'; - c d e c | - c d e c | - e f g2 | + \octave c'; + c d e c | + c d e c | + e f g2 | } } \end{mudela} @@ -521,18 +540,18 @@ A Mudela file needs some red tape \begin[verbatim,center]{mudela} \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 - } + \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} diff --git a/Documentation/vocabulary-data b/Documentation/vocabulary-data index 7f7640524e..43847bb985 100644 --- a/Documentation/vocabulary-data +++ b/Documentation/vocabulary-data @@ -1,249 +1,250 @@ -Francais:US English:Deutsch:UK English:Nederlands:Italiaans -: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: -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:: +:engraving:notenstechen::steken:: +Francais:US English:Deutsch:UK English:Nederlands:Italiaans: +: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:: +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/Documentation/vocabulary-forms.el b/Documentation/vocabulary-forms.el index 2b3b52f30a..98a964793a 100644 --- a/Documentation/vocabulary-forms.el +++ b/Documentation/vocabulary-forms.el @@ -4,7 +4,7 @@ ; Forms by Han-Wen Nienhuys (setq forms-file "vocabulary-data") -(setq forms-number-of-fields 6) +(setq forms-number-of-fields 7) (setq forms-read-only nil) ; to make sure (setq forms-field-sep ":") (setq forms-multi-line nil) @@ -13,9 +13,11 @@ (list "*** Musical vocabulary ***\n" "\nItaliano: " 6 - "\nFrancais: " 1 - "\nUS English: " 2 + "\nFrancais: " 1 + "\nUS English: " 2 "\nDeutsch: " 3 - "\nBritish English: " 4 - "\nNederlands: " 5 + "\nBritish English: " 4 + "\nNederlands: " 5 + "\n\nExplanation\n\n" 7 + )) diff --git a/INSTALL.txt b/INSTALL.txt index 43bc7f8126..d52fa09d70 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -33,6 +33,8 @@ PREREQUISITES o GNU C++ version 2.7 or newer (yes, 2.8 is fine). + o Python + RUNNING GNU LilyPond does use a lot of resources. For operation you need the following: @@ -52,16 +54,14 @@ RECOMMENDED o Flex (version 2.5.4 or newer). - o Bison (version 1.25 or newer). =item * + o Bison (version 1.25 or newer). - Perl-5. Most documentation was created with the + o Perl-5. Most documentation was created with the perl's Plain Old Documentation. (I use 5.003) - - -21/Apr/98 LilyPond 0.1.58 1 +27/Apr/98 LilyPond 0.1.59 1 @@ -84,6 +84,7 @@ CONFIGURING and COMPILING to install GNU LilyPond, simply type: configure + make make install This will install the following files: @@ -123,11 +124,10 @@ CONFIGURING and COMPILING 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 -21/Apr/98 LilyPond 0.1.58 2 +27/Apr/98 LilyPond 0.1.59 2 @@ -136,6 +136,8 @@ CONFIGURING and COMPILING INSTALL(1) LilyPond documentation INSTALL(1) + configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf + Since GNU LilyPond currently is beta, you are advised to also use @@ -166,6 +168,10 @@ INSTALL(1) LilyPond documentation INSTALL(1) --enable-mf-dir Set the directory mf input is in (idem) + --enable-config + Output to different configuration files. Needed for + multi-platform builds + All options are documented in the configure help The option --enable-optimise is recommended for Real Life usage. @@ -179,28 +185,47 @@ INSTALL(1) LilyPond documentation INSTALL(1) subdirectories out/ (which contain all files generated during compilation). -INSTALLING - If you have done a successful make, then a simple +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 - 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. +27/Apr/98 LilyPond 0.1.59 3 + -21/Apr/98 LilyPond 0.1.58 3 +INSTALL(1) LilyPond documentation INSTALL(1) + normal build, + configure --prefix=~ --disable-optimise --enable-checking + make + make install + and for the profiling version, I specify a different + configuration. -INSTALL(1) LilyPond documentation INSTALL(1) + 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. CAVEATS o The -O2 option to gcc triggers a gcc bug on DEC Alpha @@ -230,6 +255,19 @@ EXAMPLE TeX output to someinput.tex ... Creating MIDI elements ...MIDI output to someinput.midi ... + + + + +27/Apr/98 LilyPond 0.1.59 4 + + + + + +INSTALL(1) LilyPond documentation INSTALL(1) + + hw:~/musix/spacer$ xdvi someinput& [1] 855 @@ -256,18 +294,6 @@ WINDOWS NT/95 http://www.cygnus.com/gnu-win32. To make GNU LilyPond under, brr, aargh, shudder... - - - -21/Apr/98 LilyPond 0.1.58 4 - - - - - -INSTALL(1) LilyPond documentation INSTALL(1) - - windows32, well, simply type: bash configure @@ -278,62 +304,6 @@ INSTALL(1) LilyPond documentation INSTALL(1) entire source tree is unpacked correctly, in particular the empty out directories (flower/out, lib/out et. al.) -MUSIXTEX - Previous versions (before 0.1.39) used fonts from the TeX - macro package "MusixTeX". You can still use these, but - they are not supported. Since LilyPond's Feta font is - much prettier, you'd be seriously misguided if you used - them, but anyway, here are the installation instructions - for those deprecated fonts. - - [obsolete] I use the MusixTeX fonts those found in - MusixTeX T.73. Beware, the clef symbol seems to have - changed its position in some versions, (notably Egler's, - a.k.a. OpusTeX). The MusixTeX fonts are included in - MusixTeX (T73 or newer), which can be had from any CTAN - site, e.g. at - - ftp://ftp.shsu.edu/tex-archive/macros/musixtex/taupin - - ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin - - ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin - - You only need the contents of the mf/ subdirectory of the - package. The primary site of the Taupin version is - ftp://hprib.lps.u-psud.fr/pub/music_zips/musixtex.zip - - Install the musixtex fonts in a directory which TeX and MF - knows (if you are root, look for a directory which - contains the directories with AMS and CM source (*.mf) - files. Create a subdir lilypond or musixtex and copy the - fonts into that). Do not forget to rehash TeX (if - applicable) - - Example: my fonts are in - /usr/local/lib/texfonts/musixtex/, and I have a symlink - pointing to that in - /usr/lib/texmf/texmf/fonts/source/public/. After I copied - the files, I ran "texhash" - - Andreas Egler's version of MusixTeX, now called OpusTeX, - will also work. Andreas moved some characters around in - the fonts, so you have to edit the definitions in - tex/eglerdefs.tex. - - - - - -21/Apr/98 LilyPond 0.1.58 5 - - - - - -INSTALL(1) LilyPond documentation INSTALL(1) - - AUTHORS Han-Wen Nienhuys @@ -355,42 +325,6 @@ AUTHORS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -21/Apr/98 LilyPond 0.1.58 6 +27/Apr/98 LilyPond 0.1.59 5 diff --git a/NEWS b/NEWS index 1c262faf47..7fc5f9bcb5 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,53 @@ +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) @@ -32,7 +82,7 @@ pl 57 - solaris/irix patches (AO) -pl 56.jcn5 + pl 56.jcn5 - bezier and slur: cleaning and fixes - bf: removed silly experimental beam feature diff --git a/PATCHES.txt b/PATCHES.txt index 6996afe212..a608193dc0 100644 --- a/PATCHES.txt +++ b/PATCHES.txt @@ -61,7 +61,7 @@ PREREQUISITES -20/Apr/98 LilyPond 0.1.58 1 +20/Apr/98 LilyPond 0.1.59 1 @@ -127,6 +127,6 @@ MAINTAINER -20/Apr/98 LilyPond 0.1.58 2 +20/Apr/98 LilyPond 0.1.59 2 diff --git a/TODO b/TODO index 8a8bdbaa23..4d189db612 100644 --- a/TODO +++ b/TODO @@ -4,17 +4,14 @@ 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 +grep for TODO and ugh/ug 0.2: - * junk embedded mf - - - * ly2dvi seams to eat accents as in \'el\'egant * libtoolize flowerlib + * shared lib * bf: abbrevbeam? @@ -37,8 +34,6 @@ grep for TODO and ugh/ugr - remove all \multi - break-up heavily-nested score blocks - * --metafont - * disable spaces in TeX stuff * handle ^C for tmp/file creation. @@ -120,7 +115,9 @@ STUFF * AFM for font input? + 3RD PARTY BUGS: + * tried egcs 1.0.2: failed on lily/stem.cc -> flower/include/interval.hh should narrow down and send bug report @@ -153,6 +150,7 @@ PROJECTS * a musical dictionary. See Documentation/vocabulary-*, other languages: + - explanation - italian - german - dutch @@ -193,8 +191,6 @@ languages: * accidentals per Voice_group - * Convert all ref/bib stuff into BibTeX. - * Output class, handles : (smallish) - help text /(c) notice? - version line @@ -326,7 +322,7 @@ SMALLISH PROJECTS * adaptive accidental spacing. * handle EOF graciously in error messages. - +oo * caching Item/spanner dimensions. * centered whole rest diff --git a/VERSION b/VERSION index 6b52b51a7f..ca4b0d8662 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ MAJOR_VERSION=0 MINOR_VERSION=1 -PATCH_LEVEL=58 +PATCH_LEVEL=59 MY_PATCH_LEVEL= # use the above to send patches, always empty for released version: diff --git a/bin/Makefile b/bin/Makefile index 3b2d36034d..b7a8c3a60d 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -8,6 +8,6 @@ EXTRA_DISTFILES = install-sh config.sub config.guess ltconfig include $(depth)/make/Scripts.make -EXECUTABLES=convert-mudela mudela-book +EXECUTABLES=convert-mudela mudela-book ly2dvi include $(depth)/make/Executable.make diff --git a/bin/conflily.sh b/bin/conflily.sh index dff069ab34..56793f1e27 100755 --- a/bin/conflily.sh +++ b/bin/conflily.sh @@ -31,5 +31,5 @@ fi ln -sf $lelie/current/lily/out/lilypond bin/lilypond ln -sf $lelie/current/mi2mu/out/mi2mu bin/mi2mu -configure --prefix=/usr --enable-debugging --enable-printing --enable-checking +configure --prefix=/usr --enable-debugging --enable-printing --enable-checking diff --git a/bin/flower.py b/bin/flower.py index 46dfe0faf3..768a56eb61 100755 --- a/bin/flower.py +++ b/bin/flower.py @@ -74,80 +74,12 @@ def multiple_find(pats, dirnames): for d in dirnames: l = l + my_find(pats, d) return l -#!@PYTHON@ - -# -# flower.py -- python flower lib -# -# source file of the GNU LilyPond music typesetter -# -# (c) 1997 Han-Wen Nienhuys -# - -class File: - """silly wrapper for Python file object.""" - def __init__ (self,nm, mode='r'): - if nm: - self.file_ = open (nm, mode); - elif mode == 'w': - self.file_ = sys.stdout - else: - self.file_ = sys.stdin - - self.eof_ = 0; - def readline (self): - l= self.file_.readline (); - if not l: - self.eof_ = 1; - return l; - def write (self, str): - self.file_.write (str) - def eof (self): - return self.eof_ - def close (self): - self.file_.close () - def __del__ (self): - self.close (); +def file_exist_b(name): + try: + f = open(name) + except IOError: + return 0 + f.close () + return 1 - -import fnmatch -import os - -_debug = 0 - -_prune = ['(*)'] - - -def my_find(patterns, dir = os.curdir): - list = [] - try: - names = os.listdir(dir) - except os.error: - names = [] - names.sort() - for name in names: - if name in (os.curdir, os.pardir): - continue - fullname = os.path.join(dir, name) - for pat in patterns: - if fnmatch.fnmatch(name, pat): - list.append(fullname) - if os.path.isdir(fullname) and not os.path.islink(fullname): - for p in _prune: - if fnmatch.fnmatch(name, p): - if _debug: print "skip", `fullname` - break - else: - if _debug: print "descend into", `fullname` - found = my_find(patterns, fullname) - if found: - list = list + found - return list - -def multiple_find(pats, dirnames): - from find import find - l = [] - for d in dirnames: - l = l + my_find(pats, d) - return l diff --git a/bin/genheader.py b/bin/genheader.py new file mode 100644 index 0000000000..9f16663bf7 --- /dev/null +++ b/bin/genheader.py @@ -0,0 +1,136 @@ +#!@PYTHON@ + +# +# genheader.py -- do headers (like these) +# +# source file of the GNU LilyPond music typesetter +# +# (c) 1997 Han-Wen Nienhuys +# + + + +import posix +import pwd +import regex +import regsub +import string +import sys +import os +import getopt +import time + +class My_options: + def __init__(self): + self.commentify = None + self.add_hdr_def = 0 + self.classname = '' + +my_options = My_options() + +def mail(): + return os.environ['MAILADDRESS'] + +def name(): + return pwd.getpwuid(posix.getuid())[4] + +def c_commentify(str): + return '/* ' + regsub.gsub('^',' ', str) + '\n */'; + +def sh_commentify(str): + return regsub.gsub('^', '# ', str) + +def tex_commentify(str): + return regsub.gsub('^', '% ', str) + +def project_str(): + cwd = posix.getcwd() + if regex.search('flower', cwd) <> -1: + PROJECT = "the Flower Library" + elif regex.search('mf$', cwd) <> -1: + PROJECT = "the Feta (defintively not an abbreviation for Font-En-Tja) music font" + else: + PROJECT = "the GNU LilyPond music typesetter" + return PROJECT + +def head_str(filename): + if my_options.add_hdr_def: + what = "declare " + 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(), mail()) + return headstr + + +def c_include(filename): + startdef= filename; + trans = string.maketrans( string.lowercase + '-.', string.uppercase + '__') + startdef = string.translate(filename, trans) + + + headstr = "\n\n#ifndef %s\n#define %s\n" % (startdef, startdef) + terminatestr = "#endif /* %s */\n" % (startdef); + + return headstr+ '\n\n'+ terminatestr; + + + + + +(options, files) = getopt.getopt(sys.argv[1:], 'tcsh', ['class']) + +for opt in options: + o = opt[0] + a = opt[1] + if o == '-c': + my_options.commentify = c_commentify + elif o == '-t': + my_options.commentify = tex_commentify + elif o == '-s': + my_options.commentify = sh_commentify + elif o == '-h': + my_options.add_hdr_def = 1 + elif o == '--class': + my_options.classname = a + + + +# +# FIXME: should create xxx.cc and include/xxx.hh, with implement/declare Xxx +# in one run +if my_options.classname: + pass + +def do_file(nm): + s = my_options.commentify(head_str(nm)) + if my_options.add_hdr_def: + s = s + c_include(nm) + return s + + +def extension(ext,nm): + ext = '\\.' + ext + return regex.search(ext, nm) <> -1 + +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 + elif extension('py',nm) or extension('pl',nm) or extension('sh',nm): + return sh_commentify + elif extension('mf',nm) or extension('tex',nm) or extension('ly',nm): + return tex_commentify + else: + raise 'help' + +for nm in files: + if extension('hh', nm) or extension('icc', nm) or extension('tcc', nm): + my_options.add_hdr_def = 1 + if my_options.commentify == None: + my_options.commentify = select_commentification(nm) + print do_file(nm) diff --git a/bin/ly2dvi.sh b/bin/ly2dvi.sh index ac70e37209..11c15cfeb6 100755 --- a/bin/ly2dvi.sh +++ b/bin/ly2dvi.sh @@ -8,20 +8,29 @@ # Original LaTeX file made by Mats Bengtsson, 17/8 1997 # -VERSION="0.8" +VERSION="0.9" NAME=ly2dvi.sh IDENTIFICATION="$NAME $VERSION" NOW=`date` echo "$IDENTIFICATION" 1>&2 +KEEP_LILY_OUTPUT=N + # NEWS +#0.9.hwn1 +# - option to remove output of lily + +# 0.9 - Trap Lilypond abort +# - Replaced "\usepackage[T1]{fontenc}" with +# \usepackage[latin1]{inputenc} (takk, Mats) +# - Removed "()" around "\LilyIdString" (Janne didn't want it) + # 0.8 - Trap Lilypond segmentation fault # - Function for cleanup # - Trap line # - More human-readable variables # - Some logics concerning rc-files - # 0.7 # - Improved Lilypond error checking # - Output orientation (landscape...). Overrides mudela file @@ -46,7 +55,7 @@ echo "$IDENTIFICATION" 1>&2 # - Handles margins for A4 paper (equal on both sides) # - new option -s (--separate) for one LaTeX run per file, # else all files are run together - +# # 0.5 # - More useful ("two-level") debug. # - The Q&D hack to find file names and not handling \include @@ -129,7 +138,7 @@ echo "$IDENTIFICATION" 1>&2 # cleanup() { $debug_echo "("$LF")("$FN")("$LOGFILE")" - if [ "$KEEP" != "Y" ] + if [ "$KEEP_LY2DVI_OUTPUT" != "Y" ] then [ -n "$LF" -a -f "$LF" ] && rm -f $LF [ -n "$LOGFILE" -a -f "$LOGFILE" ] && rm -f $LOGFILE @@ -172,7 +181,7 @@ then fi LOGFILE=$TMP/lilylog.$$ # Logfile for lilypond PWIDTH=600; # Width of A4 paper! -PHEIGTH=830; # Heigth of A4 paper! +PHEIGTH=845; # Heigth of A4 paper! # # RC-files ? # @@ -219,7 +228,7 @@ SEPFILE=N # # "x:" x takes argument # -switches="DO:hkl:o:p:s\?" +switches="DO:hkl:o:Kp:s\?" options="" # # ugh, "\-" is a hack to support long options @@ -242,8 +251,12 @@ do exit 0 ;; k ) - KEEP=Y + KEEP_LY2DVI_OUTPUT=Y + ;; + K ) + KEEP_LILY_OUTPUT=Y ;; + l ) LANGUAGE=$OPTARG ;; @@ -273,7 +286,7 @@ do exit 0 ;; k*|-k*) - KEEP=Y + KEEP_LY2DVI_OUTPUT=Y ;; l*|-l*) LANGUAGE=`echo $OPTARG | sed -e s/"^.*="//` @@ -315,7 +328,7 @@ startFile(){ # BN=`basename $File .tex` FN=$BN.$$ -if [ "$KEEP" != "Y" ] +if [ "$KEEP_LY2DVI_OUTPUT" != "Y" ] then LF=$TMP/$FN.tex else @@ -414,7 +427,8 @@ cat << EOF > $LF \nonstopmode $LLNG \usepackage{geometry} -\usepackage[T1]{fontenc} +%\usepackage[T1]{fontenc} +\usepackage[latin1]{inputenc} %\addtolength{\oddsidemargin}{-1cm} %\addtolength{\topmargin}{-1cm} \setlength{\textwidth}{$TW} @@ -435,7 +449,7 @@ do LLL=`echo $LL | sed -e 's/}.*$//' -e 's/.*{//'` if [ "$LLL" != "" ] then - echo '\'$L'{'$LLL'}%' >> $LF + echo "\\"$L'{'$LLL'}%' >> $LF fi fi done @@ -449,7 +463,7 @@ EOF # endFile(){ cat << EOF >> $LF -\vfill\hfill{(\LilyIdString)} +\vfill\hfill{\LilyIdString} \end{document} EOF # @@ -503,6 +517,9 @@ findInput() { # # Loop through all files # + +LILY_OUTPUT_FILES= + for GF in $* do findInput $GF @@ -552,7 +569,7 @@ do OF=`egrep '^TeX output to ' $LOGFILE | \\ sed -e 's/TeX output to//' -e 's/\.\.\.//'` $debug_echo "==> "$OF - STATUS=`egrep -i "error|segmentation" $LOGFILE` + STATUS=`egrep -i "error|segmentation|abort" $LOGFILE` echo $STATUS if [ ! -z "$STATUS" ] then @@ -589,12 +606,20 @@ EOF FFile="" endFile fi + LILY_OUTPUT_FILES="$LILY_OUTPUT_FILES $OF" done done if [ $SEPFILE = N ] then endFile fi + + + +if [ $KEEP_LILY_OUTPUT = N ] +then + rm $LILY_OUTPUT_FILES +fi # # OK - finished # diff --git a/bin/make-patch.py b/bin/make-patch.py index 6600ec2e7d..69e14b0cc2 100755 --- a/bin/make-patch.py +++ b/bin/make-patch.py @@ -19,7 +19,7 @@ import getopt import pipes -mp_version = '0.3' +mp_version = '0.51' class Options: def __init__(self): @@ -34,23 +34,15 @@ def help(): 'Generate a patch to go to this version.\n' ' --from=FROM, -f FROM old is FROM\n' ' --to=TO, -t TO to version TO\n' - + ' --dir=DIR, -d TO directory\n' ) def untar(fn): # os.system('pwd'); - sys.stderr.write('untarring ' + fn) -# can't seem to fix errors: -# gzip: stdout: Broken pipe -# tar: Child returned status 1 -# os.system ('tar xzf ' + fn) -# sys.stderr.write('\n') -# ugh, even this does not work, but one error message less :-) + sys.stderr.write('untarring ' + fn + '\n') os.system ('gzip --quiet -dc ' + fn + '| tar xf - ') -# so print soothing message: - sys.stderr.write('make-patch:ugh: Please ignore error: gzip: stdout: Broken pipe\n'); sys.stderr.flush() @@ -58,12 +50,14 @@ header = 'Generated by make-patch, old = %s, new = %s\n\ \n\ usage \n\ \n\ - cd lilypond-source-dir; patch -E -p0 < %s\n\ + cd lilypond-source-dir; patch -E -p1 < %s\n\ \n\ Patches do not contain automatically generated files, \n\ i.e. you should rerun configure\n\n' +# ugh, how to get rid of .tex files generated by lily? pats = ['*.lsm', 'configure', '*.txt', 'lilypond.spec'] + def remove_automatic(dirnames): files = [] files = files + multiple_find(pats, dirnames) @@ -71,47 +65,47 @@ def remove_automatic(dirnames): for f in files: os.remove(f) -def makepatch(fv, tv, patfile_nm): - import tempfile - prev_cwd = os.getcwd(); - os.chdir ('/tmp') - untar(released_tarball(fv)) - untar(released_tarball(tv)) - remove_automatic([dirname(fv), dirname(tv)]) +def makepatch(fromdir, todir, patfile_nm): - os.chdir(dirname(tv)) - - if not patfile_nm: - patfile_nm = '../patch-%s' % version_tuple_to_str(tv) + remove_automatic([fromdir, todir]) + os.chdir(todir) + f = open(patfile_nm, 'w') f.write(header %\ - (version_tuple_to_str(fv), version_tuple_to_str(tv), \ + (fromdir, todir, \ os.path.basename(patfile_nm))) f.close() sys.stderr.write('diffing to %s... ' % patfile_nm) - os.system('diff -urN ../%s . >> %s' % (dirname(fv), patfile_nm)) - #os.system('gzip -9f %s' % patfile_nm) - os.chdir('/tmp') - - sys.stderr.write('cleaning ... ') - os.system('rm -fr %s %s' % (dirname(tv), dirname(fv))) - sys.stderr.write('\n') - os.chdir(prev_cwd) - + os.system('pwd') + print ('diff -urN ../%s . >> %s' % (fromdir, patfile_nm)) + os.system('diff -urN ../%s . >> %s' % (fromdir, patfile_nm)) + os.system('gzip -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:], - 'hf:o:t:', ['output=', 'help', 'from=', 'to=']) + 'd:hf:o:t:', ['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) + 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; @@ -124,7 +118,60 @@ def main(): pn = 'patch-%s' % version_tuple_to_str(options.to_version) outfn = os.path.join(os.getcwd(), pn) - makepatch(options.from_version, options.to_version, outfn) + 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.system('tar cf - --exclude out %s | tar -xf - -C %s' + % (srcdir, '/tmp/make-patch')) + + 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.system('tar -cf - --exclude out %s | tar -xf - -C %s ' + % (srcdir, '/tmp/make-patch')) + + 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/make-website.py b/bin/make-website.py index c6034aa822..ccff8df603 100755 --- a/bin/make-website.py +++ b/bin/make-website.py @@ -43,7 +43,7 @@ depth = '' makewebsite_id = ""; id_str = "make-website 0.9"; tar = "tar"; -make = "make -f Makefile"; +make = "make -f Makefile outdir=out-www"; mailaddress = "unknown" fullname = "unknown" footstr = "" @@ -94,98 +94,12 @@ def my_system(cmds): base="lilypond/"; -examples=["twinkle-pop", - "praeludium-fuga-E", - "cadenza", - "twinkle", - "collisions", - "font16", - "font20", - #"scales", - "rhythm", - "coriolan", - "multi"] - -mutopia_examples = [ "wtk1-fugue2", - "standje", - "preludes-1", - "preludes-2", - - "wtk1-prelude1", - "gallina", - "scsii-menuetto"] - def gen_html(): print 'generating HTML' my_system (["make -f Makefile -kC .. html"]); -def gen_examples(inputs): - print 'generating examples:\n' - outputs = [] - for i in inputs: - try: - located = multiple_find ([i + '.ly'], include_path) [0] - except IndexError: - print 'continuing dazed & confused (%s) ' % i - continue - outputs.append (located) - if not file_exist_b(i + '.dvi'): - my_system (['ly2dvi %s' % located]) - if not file_exist_b(i + '.ly.txt'): - os.link (located, i + ".ly.txt") - list = map(lambda x: 'out/%s.ps.gz out/%s.gif' % (x,x), inputs) - my_system (['make -C .. ' + join(' ', list)]) - - return outputs - -def gen_list(inputs, filename): - print "generating HTML list %s\n" % filename; - list = open(filename, 'w') - list.write ('Rendered Examples\n' - 'These example files are taken from the LilyPond distribution.\n' - 'LilyPond currently only outputs TeX and MIDI. The pictures and\n' - 'PostScript files were generated using TeX, Ghostscript and some\n' - 'graphics tools. The papersize used for these examples is A4. The GIF\n' - 'files have been scaled to eliminate aliasing.\n'); - - for ex in inputs: - print '%s, ' % ex - header = read_mudela_header(ex + '.ly.txt') - - def read_dict(s, default, h =header): - try: - ret = h[s] - except KeyError: - ret = default - return ret - head = read_dict('title', ex) - composer = read_dict('composer', '') - desc = read_dict('description', '') - list.write('
      ') - list.write('

      example file: %s

      ' % head); - if composer <> '': - list.write('

      %s

      \n' % composer) - if desc <> '': - list.write('%s

      ' % desc) - list.write ('

        ') - def list_item(filename, desc, l = list): - if file_exist_b(filename): - l.write ('
      • %s\n' % (filename, desc)) - - list_item(ex + '.ly.txt', 'The input') - for pageno in range(1,10): - f = ex + '-page%d.gif' % pageno - if not file_exist_b (f): - break - list_item(f, 'The output (picture, page %d)' % pageno) - list_item(ex + '.ps.gz', 'The output (gzipped PostScript)') - list_item(ex + '.midi', 'The output (MIDI)') - list.write ("
      "); - - list.write( ""); - list.close() texstuff = ["mudela"] @@ -204,13 +118,7 @@ def gen_manuals(): my_system (['make -C .. ' + todo]) -def file_exist_b(name): - try: - f = open(name) - except IOError: - return 0 - f.close () - return 1 + def copy_files(): print "copying files\n" diff --git a/bin/mutopia-index.py b/bin/mutopia-index.py new file mode 100644 index 0000000000..a268cded6e --- /dev/null +++ b/bin/mutopia-index.py @@ -0,0 +1,68 @@ + +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 * + + + +def gen_list(inputs, filename): + print "generating HTML list %s\n" % filename + list = open(filename, 'w') + list.write ('Rendered Examples\n' + 'These example files are taken from the LilyPond distribution.\n' + 'LilyPond currently only outputs TeX and MIDI. The pictures and\n' + 'PostScript files were generated using TeX, Ghostscript and some\n' + 'graphics tools. The papersize used for these examples is A4. The GIF\n' + 'files have been scaled to eliminate aliasing.\n'); + + for ex in inputs: + print '%s, ' % ex + header = read_mudela_header(ex + '.ly.txt') + + def read_dict(s, default, h =header): + try: + ret = h[s] + except KeyError: + ret = default + return ret + head = read_dict('title', ex) + composer = read_dict('composer', '') + desc = read_dict('description', '') + list.write('
      ') + list.write('

      example file: %s

      ' % head); + if composer <> '': + list.write('

      %s

      \n' % composer) + if desc <> '': + list.write('%s

      ' % desc) + list.write ('

        ') + def list_item(filename, desc, l = list): + if file_exist_b(filename): + l.write ('
      • %s\n' % (filename, desc)) + + list_item(ex + '.ly.txt', 'The input') + for pageno in range(1,10): + f = ex + '-page%d.gif' % pageno + if not file_exist_b (f): + break + list_item(f, 'The output (picture, page %d)' % pageno) + list_item(ex + '.ps.gz', 'The output (gzipped PostScript)') + list_item(ex + '.midi', 'The output (MIDI)') + list.write ("
      "); + + list.write( ""); + list.close() + +allfiles = multiple_find (['*.ly.txt'], '.') + +gen_list (sys.argv[1:], 'index.html') diff --git a/bin/profile-conf.sh b/bin/profile-conf.sh new file mode 100644 index 0000000000..79dbd73463 --- /dev/null +++ b/bin/profile-conf.sh @@ -0,0 +1,2 @@ + +configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking diff --git a/bin/ps-to-gifs.sh b/bin/ps-to-gifs.sh index dc51988675..57021850f5 100755 --- a/bin/ps-to-gifs.sh +++ b/bin/ps-to-gifs.sh @@ -20,5 +20,3 @@ cat $1 | gs -q -sDEVICE=ppmraw \ -sOutputFile="|pnmscale 0.5|ppmtogif > $FILE-page%d.gif" \ -r200 -dNOPAUSE - -c quit - - diff --git a/config.make.in b/config.make.in index 57fdbc39da..08f8af8523 100644 --- a/config.make.in +++ b/config.make.in @@ -35,6 +35,5 @@ LN = @LN@ ZIP = @ZIP@ PERL = @PERL@ PYTHON = @PYTHON@ -OUTDIR_NAME = @OUTDIR_NAME@ - +CONFIGSUFFIX = @CONFIGSUFFIX@ diff --git a/configure b/configure index 5a09581ddb..0b529a29cc 100755 --- a/configure +++ b/configure @@ -29,6 +29,8 @@ ac_help="$ac_help enable-tex-dir=DIR set the directory to put LilyPond TeX files in. " ac_help="$ac_help enable-mf-dir=DIR set the directory to put LilyPond MetaFont files in. " +ac_help="$ac_help + enable-config=FILE put configure settings in config-FILE.make" # Initialize some variables set by options. # The variables have the same names as the options, with @@ -563,7 +565,7 @@ 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:567: checking host system type" >&5 +echo "configure:569: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -584,7 +586,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 -OUTDIR_NAME=out + . $srcdir/VERSION FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL if test x$MY_PATCH_LEVEL != x; then @@ -619,7 +621,7 @@ 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:623: checking for $ac_word" >&5 +echo "configure:625: 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 @@ -657,12 +659,16 @@ test -n "$YACC" || YACC="yacc" # 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=no profile_b=no - +CONFIGSUFFIX= debug_b=yes + + ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -743,6 +749,14 @@ else fi +# Check whether --enable-config or --disable-config was given. +if test "${enable_config+set}" = set; then + enableval="$enable_config" + CONFIGSUFFIX=$enableval +fi + + + if test "$printing_b" = no; then cat >> confdefs.h <<\EOF #define NPRINT 1 @@ -758,7 +772,8 @@ EOF fi if test "$optimise_b" = yes; then - DEFINES="$DEFINES -finline-functions -O2 -DSTRING_UTILS_INLINED" + DEFINES="$DEFINES -finline-functions -DSTRING_UTILS_INLINED" + OPTIMIZE="-O2" cat >> confdefs.h <<\EOF #define STRINGS_UTILS_INLINED 1 EOF @@ -788,10 +803,18 @@ else ZIP="zip -r -9" fi +if test "$CONFIGSUFFIX" != "" ; then + CONFIGFILE=config-$CONFIGSUFFIX +else + CONFIGFILE=config +fi + + + 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 +CXXFLAGS="$DEFINES $OPTIMIZE" LDFLAGS=$EXTRA_LIBES for ac_prog in $CCC c++ g++ gcc CC cxx cc++ @@ -799,7 +822,7 @@ 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:803: checking for $ac_word" >&5 +echo "configure:826: 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 @@ -830,7 +853,7 @@ test -n "$CXX" || CXX="gcc" echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:834: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:857: 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. @@ -840,11 +863,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 <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:871: \"$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 @@ -864,12 +887,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:868: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:891: 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:873: checking whether we are using GNU C++" >&5 +echo "configure:896: 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 @@ -878,7 +901,7 @@ else yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:882: \"$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:905: \"$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 @@ -893,7 +916,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:897: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:920: 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 @@ -923,7 +946,7 @@ fi # 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:927: checking for $ac_word" >&5 +echo "configure:950: 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 @@ -960,7 +983,7 @@ fi # 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:964: checking for a BSD compatible install" >&5 +echo "configure:987: 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 @@ -1014,7 +1037,7 @@ 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:1018: checking for $ac_word" >&5 +echo "configure:1041: 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 @@ -1048,7 +1071,7 @@ 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:1052: checking for $ac_word" >&5 +echo "configure:1075: 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 @@ -1089,7 +1112,7 @@ test -n "$FIND" || FIND="error" echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:1093: checking for 8-bit clean memcmp" >&5 +echo "configure:1116: 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 @@ -1097,7 +1120,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1137: \"$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 @@ -1128,12 +1151,12 @@ 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:1132: checking for vprintf" >&5 +echo "configure:1155: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -1183,12 +1206,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:1187: checking for _doprnt" >&5 +echo "configure:1210: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -1241,12 +1264,12 @@ fi for ac_func in memmem snprintf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1245: checking for $ac_func" >&5 +echo "configure:1268: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1349,7 +1372,7 @@ 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:1353: checking for $ac_word" >&5 +echo "configure:1376: 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 @@ -1383,7 +1406,7 @@ 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:1387: checking for $ac_word" >&5 +echo "configure:1410: 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 @@ -1417,7 +1440,7 @@ 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:1421: checking for $ac_word" >&5 +echo "configure:1444: 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 @@ -1449,7 +1472,7 @@ 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 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1453: checking for $ac_word" >&5 +echo "configure:1476: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1481,7 +1504,7 @@ 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:1485: checking for $ac_word" >&5 +echo "configure:1508: 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 @@ -1515,7 +1538,7 @@ 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:1519: checking for $ac_word" >&5 +echo "configure:1542: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_POD2HTML'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1549,7 +1572,7 @@ 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:1553: checking for $ac_word" >&5 +echo "configure:1576: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_POD2MAN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1585,7 +1608,7 @@ if test "x$TEXPREFIX" = xauto ; then echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6 -echo "configure:1589: checking TeX/MF root dir directory" >&5 +echo "configure:1612: checking TeX/MF root dir directory" >&5 find_root_prefix="$prefix" @@ -1626,7 +1649,7 @@ if test "x$MFDIR" = xauto; then echo $ac_n "checking MF input directory""... $ac_c" 1>&6 -echo "configure:1630: checking MF input directory" >&5 +echo "configure:1653: checking MF input directory" >&5 find_dirdir=`(cd $find_texprefix; $FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')` @@ -1651,7 +1674,7 @@ if test "x$TEXDIR" = xauto ; then echo $ac_n "checking TeX input directory""... $ac_c" 1>&6 -echo "configure:1655: checking TeX input directory" >&5 +echo "configure:1678: checking TeX input directory" >&5 find_dirdir=`(cd $find_texprefix; $FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')` @@ -1768,7 +1791,7 @@ else fi echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:1772: checking how to run the C++ preprocessor" >&5 +echo "configure:1795: 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 @@ -1781,12 +1804,12 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1790: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1813: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1806,17 +1829,17 @@ 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:1810: checking for FlexLexer.h" >&5 +echo "configure:1833: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1820: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1948,7 +1971,7 @@ done ac_given_srcdir=$srcdir ac_given_INSTALL="$INSTALL" -trap 'rm -fr `echo "config.make config.hh:config.hh.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +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 <> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then @@ -2138,7 +2161,7 @@ ac_eD='%g' if test "${CONFIG_HEADERS+set}" != set; then EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF fi diff --git a/configure.in b/configure.in index 13bf8fd95f..5b00c8f99d 100644 --- a/configure.in +++ b/configure.in @@ -3,11 +3,11 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(flower/choleski.cc) -AC_CONFIG_HEADER(config.hh:config.hh.in) #ugh flower/out/ +AC_CONFIG_HEADER($CONFIGFILE.hh:config.hh.in) #ugh flower/out/ AC_CONFIG_AUX_DIR(bin) AC_CANONICAL_HOST -OUTDIR_NAME=out + . $srcdir/VERSION FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL if test x$MY_PATCH_LEVEL != x; then @@ -47,12 +47,16 @@ AC_PROG_YACC # 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=no profile_b=no - +CONFIGSUFFIX= debug_b=yes + + AC_LANG_CPLUSPLUS @@ -96,6 +100,11 @@ AC_ARG_ENABLE(mf-dir, [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 AC_DEFINE(NPRINT) fi @@ -105,7 +114,8 @@ if test "$checking_b" = no; then fi if test "$optimise_b" = yes; then - DEFINES="$DEFINES -finline-functions -O2 -DSTRING_UTILS_INLINED" + DEFINES="$DEFINES -finline-functions -DSTRING_UTILS_INLINED" + OPTIMIZE="-O2" AC_DEFINE(STRINGS_UTILS_INLINED) fi @@ -132,11 +142,19 @@ else 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 +CXXFLAGS="$DEFINES $OPTIMIZE" LDFLAGS=$EXTRA_LIBES AC_PROG_CXX @@ -189,7 +207,7 @@ AC_SUBST(MFDIR) AC_SUBST(DIR_DATADIR) AC_SUBST(absolute_builddir) AC_SUBST(EXTRA_LIBES) -AC_SUBST(OUTDIR_NAME) +AC_SUBST(CONFIGSUFFIX) AC_CHECK_PROGS(BISON, bison, error) AC_CHECK_PROGS(FLEX, flex, error) AC_CHECK_PROGS(MAKE, make, error) @@ -262,7 +280,7 @@ touch stamp-h.in # first do Foobar/Makefile then Foobar/include/Makefile -AC_OUTPUT(config.make) +AC_OUTPUT($CONFIGFILE.make:config.make.in) rm -f Makefile cp make/Toplevel.make.in ./Makefile diff --git a/flower/NEWS b/flower/NEWS index 749922590d..111717025e 100644 --- a/flower/NEWS +++ b/flower/NEWS @@ -1,3 +1,6 @@ +pl 41 + - matrix fixes; more inlining no virtual methods + pl 40 - do some Complex number stuff in Offset - included axies, offset from lily diff --git a/flower/VERSION b/flower/VERSION index 0c19fcdf01..53f4cca490 100644 --- a/flower/VERSION +++ b/flower/VERSION @@ -1,6 +1,6 @@ MAJOR_VERSION=1 MINOR_VERSION=1 -PATCH_LEVEL=40 +PATCH_LEVEL=41 # use to send patches, always empty for released version: # diff --git a/flower/choleski.cc b/flower/choleski.cc index 989a042603..5c803ab0a8 100644 --- a/flower/choleski.cc +++ b/flower/choleski.cc @@ -81,7 +81,7 @@ Choleski_decomposition::band_matrix_solve (Vector &out, Vector const &rhs) const void Choleski_decomposition::solve (Vector &x, Vector const &rhs) const { - if (L.band_b()) + if (band_b_) { band_matrix_solve (x,rhs); } @@ -145,8 +145,8 @@ Choleski_decomposition::band_matrix_decompose (Matrix const &P) Real d = P(i,i) - sum; D(i) = d; } - L.try_set_band(); - assert (L.band_i() == P.band_i ()); + L.set_band(); + band_b_ = true; } @@ -162,11 +162,14 @@ Choleski_decomposition::Choleski_decomposition (Matrix const & P) #ifdef PARANOID assert ((P-P.transposed()).norm ()/P.norm () < EPS); #endif - if (P.band_b()) + band_b_ = false; + + int b = P.calc_band_i (); + + if (b <= P.dim ()/2) band_matrix_decompose (P); else full_matrix_decompose (P); - #ifdef PARANOID assert ((original()-P).norm () / P.norm () < EPS); diff --git a/flower/diagonal-storage.cc b/flower/diagonal-storage.cc deleted file mode 100644 index 069ea8294d..0000000000 --- a/flower/diagonal-storage.cc +++ /dev/null @@ -1,251 +0,0 @@ -/* - diagonal-storage.cc -- implement Diagonal_storage - - source file of the Flower Library - - (c) 1997 Han-Wen Nienhuys -*/ - - -#include "diagonal-storage.hh" - - -#ifdef INLINE -#undef INLINE -#endif - -//#define INLINE inline - -// #include "full-storage.icc" - -int -Diagonal_storage::dim() const -{ - return band_.rows(); -} - -Diagonal_storage::Diagonal_storage() -{ -} - -int -Diagonal_storage::rows() const -{ - return band_.rows(); -} - -int -Diagonal_storage::cols() const -{ - return band_.rows(); -} - -int -Diagonal_storage::band_size_i() const -{ - return (band_.cols()-1)/2; -} - -void -Diagonal_storage::set_band_size (int s) -{ - assert (s>=0); - Full_storage f (dim(), 2*s+1); - for (int i=0; i < dim(); i++) - { - int k=-s; - for (; k < -band_size_i(); k++) - f.elem (i,k + s) = 0.0; - for (; k <= band_size_i()&& k<=s ; k++) - f.elem (i, k + s) = band_.elem (i,k+ band_size_i()); - for (; k <= s; k++) - f.elem (i, k + s) =0.0; - } - - band_ = f; -} - - - -/* - any takers? - */ -void -Diagonal_storage::insert_row (int) -{ - assert (false); -} - -void -Diagonal_storage::delete_row (int) -{ - assert (false); -} - -void -Diagonal_storage::resize (int,int) -{ -} - -void -Diagonal_storage::resize (int) -{ -} - -void -Diagonal_storage::delete_column (int) -{ - assert (false); -} - -Diagonal_storage::~Diagonal_storage() -{ -} - - -bool -Diagonal_storage::band_elt_b (int i,int j) const -{ - return abs (i-j) <= band_size_i(); -} - -void -Diagonal_storage::assert_valid (int i,int j) const -{ - assert (band_elt_b (i,j)); - assert (i >=0 && j >=0 && i < dim() && j < dim ()); -} - - -void -Diagonal_storage::resize_dim (int d) -{ - Full_storage f (d, 2*band_size_i()+1); - for (int i=0; i < d && i < dim(); i++) - { - for (int k=0; k < 2*band_size_i(); k++) - f.elem (i,k) = elem (i,k); - } - - band_ = f; -} - - - -bool -Diagonal_storage::mult_ok (int i,int) const -{ - return i < dim(); -} - -void -Diagonal_storage::mult_next (int &i, int &j) const -{ - j++; - if (j < i - band_size_i()) - j = i- band_size_i(); - if (j > i + band_size_i() || j >= dim ()) - { - i++; - j = 0 >? i - band_size_i(); - } -} - -bool -Diagonal_storage::trans_ok (int ,int j) const -{ - return j < dim(); -} - -void -Diagonal_storage::trans_next (int &i, int& j) const -{ - i++; - if (i < j - band_size_i()) - i = j-band_size_i(); - - if (i >= dim() || i > j + band_size_i ()) - { - j++; - i = 0 >? j - band_size_i(); - } -} - -static Real nul_entry=0.0; - -Real -Diagonal_storage::elem (int i, int j) const -{ - if (abs (i-j) > band_size_i()) - return 0; - else - return band_.elem (i, j - i +band_size_i()); -} - -Real & -Diagonal_storage::elem (int i, int j) -{ - /* - if this fails, the previous call fucked up - */ - assert (!nul_entry); - - if (abs (i-j) > band_size_i()) - return nul_entry; - else - return band_.elem (i, j - i + band_size_i()); -} - -/* - Hairy routine to try to save some fp-ops - */ - -bool -Diagonal_storage::try_right_multiply (Matrix_storage*dest, - const Matrix_storage*right) const -{ - if (right->name() != Diagonal_storage::static_name ()) - return false; - - const Diagonal_storage* right_diag = (Diagonal_storage const*)right; - int band2 = right_diag->band_size_i(); - int n = dim(); - /* - should check if dest is a Diagonal_storage of sufficient size too. - */ - for (int i=0; i < n; i++) - { - for (int j = 0; j < n; j++) - { - int startk = i - band_size_i() >? 0 >? j - band2; - int stopk = i + band_size_i() elem (k, j); - dest->elem (i, j) = sum; - - } - } - return true; -} - -IMPLEMENT_IS_TYPE_B1(Diagonal_storage, Matrix_storage); - - -Diagonal_storage::Diagonal_storage (Matrix_storage*stor_l, int band_i) -{ - set_band_size (band_i); - resize_dim (stor_l->dim()); - - for (int i=0,j=0; mult_ok (i,j); mult_next (i,j)) - band_.elem (i, j + band_i -i) = stor_l->elem (i,j); -} - -void -Diagonal_storage::OK() const -{ - band_.OK(); -} - -IMPLEMENT_VIRTUAL_COPY_CONS(Diagonal_storage, Matrix_storage); diff --git a/flower/full-storage.cc b/flower/full-storage.cc index 5e05c1bb4b..8389854361 100644 --- a/flower/full-storage.cc +++ b/flower/full-storage.cc @@ -16,8 +16,8 @@ Full_storage::operator=(Full_storage const &fs) OK(); fs.OK(); for (int i=0; i= height_i_ && max_width_i_ >= width_i_); assert (height_i_ >= 0 && width_i_ >= 0); assert (els_p_p_||!max_height_i_); @@ -38,7 +37,7 @@ Full_storage::OK() const Full_storage::~Full_storage() { for (int i=0; i < max_height_i_; i++) - delete [] els_p_p_[i]; + delete [] els_p_p_[i]; delete[] els_p_p_; } @@ -48,56 +47,16 @@ Full_storage::resize (int rows, int cols) OK(); resize_cols (rows); resize_rows (cols); + band_i_ = rows >? cols; } -bool -Full_storage::mult_ok (int i, int) const -{ - return i < height_i_; -} - - -bool -Full_storage::trans_ok (int , int j) const -{ - return j < width_i_; -} - - - -void -Full_storage::trans_next (int &i, int &j) const -{ - assert (trans_ok (i,j)); - i++; - if (i >= height_i_) - { - i=0; - j ++; - } -} - - -void -Full_storage::mult_next (int &i, int &j) const -{ - assert (mult_ok (i,j)); - j++; - if (j >= width_i_) - { - j=0; - i++; - } -} - - void Full_storage::delete_column (int k) { assert (0 <= k &&k k ; i--) - for (int j=0; j +Full_storage::row (int n) const +{ + Array r; + for (int j = 0; j < cols(); j++) + r.push (elem (n,j)); + return r; +} +Array +Full_storage::column (int n) const +{ + Array r; + for (int i = 0; i < rows(); i++) + r.push (elem (i,n)); + return r; } -bool -Full_storage::try_right_multiply (Matrix_storage * dest, Matrix_storage const * right) const +void +Full_storage::set_size (int rows, int cols) { - if (dest->name() != Full_storage::static_name () || - right->name() != Full_storage::static_name ()) - return false; - - Full_storage *d_l = (Full_storage*)dest; - Full_storage *r_l = (Full_storage*)right; - - d_l->set_size (height_i_, r_l->width_i_); - for (int i=0; i < d_l->height_i_; i++) - for (int j = 0; j < d_l->width_i_; j++) - { - Real &r (d_l->els_p_p_[i][j]); - r=0.0; - for (int k = 0; k < width_i_; k++) - r += els_p_p_[i][k] * r_l->els_p_p_[k][j]; - - } - return true; - - + resize (rows,cols); } -IMPLEMENT_IS_TYPE_B1(Full_storage,Matrix_storage); + +void +Full_storage::set_size (int rows) +{ + + resize (rows); +} + + + void Full_storage::resize_cols (int newh) { if (newh <= max_height_i_) { - height_i_=newh; - return; + height_i_=newh; + return; } Real ** newa=new Real*[newh]; int j=0; for (; j < height_i_; j++) - newa[j] = els_p_p_[j]; + newa[j] = els_p_p_[j]; for (; j < newh; j++) - newa[j] = new Real[max_width_i_]; + newa[j] = new Real[max_width_i_]; delete[] els_p_p_; els_p_p_=newa; @@ -173,34 +139,22 @@ Full_storage::resize_cols (int newh) -Full_storage::Full_storage (Matrix_storage*m) -{ - set_size (m->rows(), m->cols ()); - if (!m->is_type_b (Full_storage::static_name())) - for (int i=0; imult_ok (i,j); m->mult_next (i,j)) - els_p_p_[i][j] = m->elem (i,j); -} - - void Full_storage::resize_rows (int neww) { if (neww <= max_width_i_) { - width_i_=neww; - return; + width_i_=neww; + return; } for (int i=0; i < max_height_i_ ; i++) { - Real* newa = new Real[neww]; - for (int k=0; k < width_i_; k++) - newa[k] = els_p_p_[i][k]; + Real* newa = new Real[neww]; + for (int k=0; k < width_i_; k++) + newa[k] = els_p_p_[i][k]; - delete[] els_p_p_[i]; - els_p_p_[i] = newa; + delete[] els_p_p_[i]; + els_p_p_[i] = newa; } width_i_ = max_width_i_ = neww; } @@ -210,7 +164,5 @@ Full_storage::resize_rows (int neww) #endif #define INLINE -INLINE -IMPLEMENT_VIRTUAL_COPY_CONS(Full_storage,Matrix_storage); #include "full-storage.icc" diff --git a/flower/include/choleski.hh b/flower/include/choleski.hh index f4b5e29814..c6db243ba8 100644 --- a/flower/include/choleski.hh +++ b/flower/include/choleski.hh @@ -16,6 +16,8 @@ struct Choleski_decomposition { /// lower triangle of Choleski decomposition Matrix L; + bool band_b_; + /// diagonal Vector D; diff --git a/flower/include/full-storage.hh b/flower/include/full-storage.hh index 4575002916..8fec189c73 100644 --- a/flower/include/full-storage.hh +++ b/flower/include/full-storage.hh @@ -11,22 +11,22 @@ #define FULL_STORAGE_HH #include "varray.hh" -#include "matrix-storage.hh" #include "real.hh" /// simplest matrix storage. refer to its baseclass for the doco. -class Full_storage : public Matrix_storage +class Full_storage { /// height, width - int height_i_,width_i_; + int height_i_; + int width_i_; /// maxima. - int max_height_i_, max_width_i_; + int max_height_i_; + int max_width_i_; - /// the storage + /// the storage Real** els_p_p_; - void - init() ; + void init() ; bool valid (int i, int j) const ; @@ -34,35 +34,138 @@ class Full_storage : public Matrix_storage void resize_cols (int); public: - virtual int rows() const; - virtual int cols() const ; - + int band_i_; // ugh + + /// check invariants + void OK() 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 ; + /// height of matrix + int rows() const; + + /// width of matrix + int cols() const; + + /// size if square int dim() const; - Full_storage (Matrix_storage*); + + /** set the size. contents lost. + PRE + i >=0, j>=0 + */ + void set_size (int rows, int cols) ; + + + /**set the size to square dimen. contents lost + PRE + i>=0 + */ + void set_size (int i) ; + /**set the size to i. + + keep contents. If enlarged contents unspecified + + PRE + i>=0, j>=0 + + */ + void resize (int rows, int cols); + + /** + set the size to square dimen. contents kept + Keep contents. If enlarged contents are unspecified + + PRE + i>=0 + */ + void resize (int i); + + + /** + access an element. + + Generate an errormessage, if this happens + in the 0-part of a sparse matrix. + */ + + Real& elem (int i,int j); + + /// access a element, no modify + Real elem (int i, int j) const; + + Array row (int i) const ; + Array column (int j) const; + + + /** + add a row to the matrix before row k. Contents + of added row are unspecified + + 0 <= k <= rows() + */ + void insert_row (int k); + + + /** + delete a row from this matrix. + + PRE + 0 <= k < rows(); + */ + void delete_row (int k); + void delete_column (int k); + + + + /** + at end of matrix?. when doing loop + + for (i=0; i= height_i_) + { + i= (0 >? j - band_i_); + j ++; + } +} + +INLINE +void +Full_storage::mult_next (int &i, int &j) const +{ + assert (mult_ok (i,j)); + j++; + if (j >= width_i_) + { + j= 0 >? (i - band_i_); + i++; + } +} #endif // FULL_STORAGE_ICC diff --git a/flower/include/matrix-storage.hh b/flower/include/matrix-storage.hh index a48f87050c..7cb3f4c3d4 100644 --- a/flower/include/matrix-storage.hh +++ b/flower/include/matrix-storage.hh @@ -13,9 +13,6 @@ #include "varray.hh" #include "real.hh" -// oo, noo! -#include "virtual-methods.hh" - /** base class for interface with matrix storageclasses. There are no @@ -33,143 +30,123 @@ class Matrix_storage { public: - /// check invariants - virtual void OK() const=0; + /// check invariants + void OK() const; - /// height of matrix - virtual int rows() const = 0; + /// height of matrix + int rows() const; - /// width of matrix - virtual int cols() const = 0; + /// width of matrix + int cols() const; - /// size if square - virtual int dim() const =0; + /// size if square + int dim() const; - /** set the size. contents lost. - PRE - i >=0, j>=0 - */ - virtual void set_size (int rows, int cols) ; + /** set the size. contents lost. + PRE + i >=0, j>=0 + */ + void set_size (int rows, int cols) ; - /**set the size to square dimen. contents lost - PRE - i>=0 - */ - virtual void set_size (int i) ; - /**set the size to i. - - keep contents. If enlarged contents unspecified + /**set the size to square dimen. contents lost + PRE + i>=0 + */ + void set_size (int i) ; + /**set the size to i. + + keep contents. If enlarged contents unspecified - PRE - i>=0, j>=0 + PRE + i>=0, j>=0 - */ - virtual void resize (int rows, int cols) = 0; + */ + void resize (int rows, int cols); /** - set the size to square dimen. contents kept - Keep contents. If enlarged contents are unspecified + set the size to square dimen. contents kept + Keep contents. If enlarged contents are unspecified - PRE - i>=0 - */ - virtual void resize (int i) = 0; + PRE + i>=0 + */ + void resize (int i); - /** - access an element. + /** + access an element. - Generate an errormessage, if this happens - in the 0-part of a sparse matrix. - */ + Generate an errormessage, if this happens + in the 0-part of a sparse matrix. + */ - virtual Real& elem (int i,int j) = 0; + Real& elem (int i,int j); - /// access a element, no modify - virtual Real elem (int i, int j) const = 0; + /// access a element, no modify + Real elem (int i, int j) const; - virtual Array row (int i) const ; - virtual Array column (int j) const; + Array row (int i) const ; + Array column (int j) const; - /** - add a row to the matrix before row k. Contents - of added row are unspecified + /** + add a row to the matrix before row k. Contents + of added row are unspecified - 0 <= k <= rows() - */ - virtual void insert_row (int k)=0; + 0 <= k <= rows() + */ + void insert_row (int k); - /** - delete a row from this matrix. - - PRE - 0 <= k < rows(); - */ - virtual void delete_row (int k)=0; - virtual void delete_column (int k)=0; - virtual ~Matrix_storage() { } - virtual Matrix_storage *clone() const=0; + /** + delete a row from this matrix. + PRE + 0 <= k < rows(); + */ + void delete_row (int k); + void delete_column (int k); + ~Matrix_storage() { } - /** - at end of matrix?. when doing loop + /** + at end of matrix?. when doing loop - for (i=0; iOK(); } - int cols() const { return dat->cols (); } - int rows() const { return dat->rows (); } + void OK() const { dat_->OK(); } + void set_band (); + int calc_band_i () const; + int cols() const { return dat_->cols (); } + int rows() const { return dat_->rows (); } /** return the size of a matrix. PRE @@ -49,10 +50,6 @@ public: 0 <= band_i() <= dim */ int band_i() const; - bool band_b() const; - void set_full() const; - void try_set_band() const; - ~Matrix() { delete dat; } /// set entries to r void fill (Real r); @@ -83,8 +80,8 @@ public: PRE 0 <= k < rows(); */ - void delete_row (int k) { dat->delete_row (k); } - void delete_column (int k) { dat->delete_column (k); } + void delete_row (int k) { dat_->delete_row (k); } + void delete_column (int k) { dat_->delete_column (k); } /** square n matrix, initialised to null @@ -102,10 +99,10 @@ public: void operator=(Matrix const &m); /// access an element - Real operator()(int i,int j) const { return dat->elem (i,j); } + Real operator()(int i,int j) const { return dat_->elem (i,j); } /// access an element - Real &operator()(int i, int j) { return dat->elem (i,j); } + Real &operator()(int i, int j) { return dat_->elem (i,j); } /// Matrix multiply with vec (from right) Vector operator *(Vector const &v) const; @@ -142,6 +139,7 @@ public: operator String() const; void print() const; + ~Matrix (); }; inline Vector diff --git a/flower/include/offset.hh b/flower/include/offset.hh index 03685c1a1a..428a8fa6b3 100644 --- a/flower/include/offset.hh +++ b/flower/include/offset.hh @@ -39,7 +39,7 @@ public: Offset o = *this; o.x () = - o.x (); o.y () = - o.y (); - return *this; + return o; } Offset& operator-=(Offset o) { x()-=o.x (); diff --git a/flower/include/scalar.hh b/flower/include/scalar.hh index facc36ac73..457c78af04 100644 --- a/flower/include/scalar.hh +++ b/flower/include/scalar.hh @@ -27,6 +27,7 @@ struct Scalar : public String { bool isnum_b() const; operator Real(); operator int(); + bool to_bool () const; /** perl -like string to bool conversion. */ diff --git a/flower/include/text-stream.hh b/flower/include/text-stream.hh index 02d16885b1..4d369fdbbb 100644 --- a/flower/include/text-stream.hh +++ b/flower/include/text-stream.hh @@ -31,18 +31,6 @@ public: bool eof() { return feof (f); } - bool eol() { - return (peek() == '\n'); - } - char peek() { - char c = get(); - unget (c); - return c; - } - int line(){ - return line_no; - } - char get() { char c; @@ -60,6 +48,18 @@ public: line_no--; pushback.push (c); } + char peek() { + char c = get(); + unget (c); + return c; + } + bool eol() { + return (peek() == '\n'); + } + int line(){ + return line_no; + } + ~Text_stream(){ if (!eof()) cerr <<__FUNCTION__<< ": closing unended file"; diff --git a/flower/include/varray.hh b/flower/include/varray.hh index 4333bfa6e4..82106ca8d6 100644 --- a/flower/include/varray.hh +++ b/flower/include/varray.hh @@ -76,6 +76,13 @@ public: Array() { array_p_ = 0; max_ =0; size_ =0; } + // ugh, get around gcc 2.8.1 ice; see bezier.cc + Array (int i) + { + max_ = size_ = i; + array_p_ = new T[i]; + } + /** set the size_ to #s#. POST: size() == s. diff --git a/flower/include/vector.hh b/flower/include/vector.hh index 7ad3f655c1..1d986c53b7 100644 --- a/flower/include/vector.hh +++ b/flower/include/vector.hh @@ -16,9 +16,18 @@ class Vector { public: void OK() const { dat.OK();} int dim() const { return dat.size (); } + void fill (Real r) { + for (int i=0; i < dim(); i++) + dat[i] =r; + } + Vector() { } Vector (Array d); Vector (Vector const &n); + + Real &operator()(int i) { return dat[i]; } + Real operator()(int i) const { return dat[i]; } + Real elem (int i) { return dat[i]; } Vector (int n) { dat.set_size (n); fill (0); @@ -33,10 +42,6 @@ public: } void del (int i) { dat.del (i); } operator String() const; - void fill (Real r) { - for (int i=0; i < dim(); i++) - dat[i] =r; - } void operator +=(Vector v) { assert (v.dim() == dim ()); @@ -44,24 +49,12 @@ public: dat[i] += v.dat[i]; } - void operator /=(Real a) { - (*this) *= 1/a; - } - - void operator *=(Real a) { - for (int i=0; i < dim(); i++) - dat[i] *= a; - } - void operator -=(Vector v) { assert (v.dim() == dim ()); for (int i=0; i < dim(); i++) dat[i] -= v (i); } - Real &operator()(int i) { return dat[i]; } - Real operator()(int i) const { return dat[i]; } - Real elem (int i) { return dat[i]; } Real operator *(Vector v) const { Real ip=0; assert (v.dim() == dim ()); @@ -69,13 +62,20 @@ public: ip += dat[i] *v (i); return ip; } - Vector operator-() const; - Real norm() { - return sqrt (norm_sq()); + void operator *=(Real a) { + for (int i=0; i < dim(); i++) + dat[i] *= a; + } + void operator /=(Real a) { + (*this) *= 1/a; } + Vector operator-() const; Real norm_sq() { return ((*this) * (*this)); } + Real norm() { + return sqrt (norm_sq()); + } operator Array() { return dat; } void print() const; /// set to j-th element of unit-base diff --git a/flower/matrix-debug.cc b/flower/matrix-debug.cc index 762da9e0a8..5a6149720c 100644 --- a/flower/matrix-debug.cc +++ b/flower/matrix-debug.cc @@ -9,15 +9,13 @@ #include "flower-debug.hh" #include "matrix.hh" -#include "matrix-storage.hh" - Matrix::operator String() const { String s; #ifndef NPRINT - Matrix_storage const * stor_c_l = dat; - s=String ("matrix { (") + dat->name() + ")\n"; + Full_storage const * stor_c_l = dat_; + s=String ("matrix {"); for (int i=0; i< rows(); i++) { for (int j = 0; j < cols(); j++) @@ -49,7 +47,7 @@ Vector::operator String() const { s += String (dat[i], "%6f") + String (' '); } - s+="]"; + s+="]\n"; #endif return s; } diff --git a/flower/matrix-storage.cc b/flower/matrix-storage.cc deleted file mode 100644 index 7d2c8fbcad..0000000000 --- a/flower/matrix-storage.cc +++ /dev/null @@ -1,148 +0,0 @@ -/* - matrix-storage.cc -- implement Matrix_storage - - source file of the Flower Library - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "full-storage.hh" -#include "diagonal-storage.hh" - -void -Matrix_storage::set_addition_result (Matrix_storage *&dat, Matrix_storage *right) -{ - if (dat && dat->name() == Diagonal_storage::static_name () - && right->name() == Diagonal_storage::static_name ()) - { - Diagonal_storage *L = (Diagonal_storage*)dat; - Diagonal_storage* R = (Diagonal_storage*) right; - - if (R->band_size_i() > L->band_size_i ()) - { - L->set_band_size (R->band_size_i()); - } - return ; - } - if (!dat || !dat->is_type_b (Full_storage::static_name())) - { - - Matrix_storage *new_stor = (dat)? new Full_storage (dat) : - new Full_storage (right->rows(), right->cols ()); - delete dat; - dat = new_stor; - } -} - -Matrix_storage* -Matrix_storage::get_product_result (Matrix_storage*left, Matrix_storage*right) -{ - Matrix_storage* dest =0; - set_product_result (dest, left,right); - return dest; -} - - -/* - hairy - */ -void -Matrix_storage::set_product_result (Matrix_storage*&dest, - Matrix_storage*left, Matrix_storage*right) -{ - if (left->name() == Diagonal_storage::static_name () - && right->name() == Diagonal_storage::static_name ()) - { - Diagonal_storage *L = (Diagonal_storage*)left; - Diagonal_storage* R = (Diagonal_storage*) right; - - if (L->band_size_i() + R->band_size_i () < L->dim ()/2) - { - if (dest ->name() != Diagonal_storage::static_name ()) - { - delete dest; - dest = new Diagonal_storage; - } - - dest->set_size (L->dim()); - return; - } - } - - if (dest && dest->name() == Full_storage::static_name ()) - { - dest->set_size (left->rows(), right->cols ()); - } - else - { - delete dest; - dest = new Full_storage (left->rows(), right->cols ()); - } -} - -IMPLEMENT_IS_TYPE_B(Matrix_storage); - -Matrix_storage * -Matrix_storage::get_full (int n, int m) -{ - return new Full_storage (n,m); -} - - - - bool -Matrix_storage::try_right_multiply (Matrix_storage *, - const Matrix_storage *) const -{ - return false; -} - -Array -Matrix_storage::row (int n) const -{ - Array r; - for (int j = 0; j < cols(); j++) - r.push (elem (n,j)); - return r; -} - -Array -Matrix_storage::column (int n) const -{ - Array r; - for (int i = 0; i < rows(); i++) - r.push (elem (i,n)); - return r; -} - -void -Matrix_storage::set_size (int rows, int cols) -{ - - resize (rows,cols); -} - -void -Matrix_storage::set_size (int rows) -{ - - resize (rows); -} - - -void -Matrix_storage::set_band (Matrix_storage *&mat, int b) -{ - Matrix_storage* ns = new Diagonal_storage (mat, b); - delete mat; - mat=ns; -} - - -void -Matrix_storage::set_full (Matrix_storage *&mat) -{ - Matrix_storage* ns = new Full_storage (mat); - delete mat; - mat=ns; -} diff --git a/flower/matrix.cc b/flower/matrix.cc index f7cb37585d..09a7668a05 100644 --- a/flower/matrix.cc +++ b/flower/matrix.cc @@ -8,157 +8,130 @@ #include "matrix.hh" #include "full-storage.hh" -#include "diagonal-storage.hh" - -bool -Matrix::band_b() const -{ - return dat->is_type_b (Diagonal_storage::static_name()); -} - -void -Matrix::set_full() const -{ - if (dat->name() != Full_storage::static_name ()) - { - Matrix_storage::set_full (((Matrix*)this)->dat); - } -} - -void -Matrix::try_set_band() const -{ - if (band_b()) - return; - - int b = band_i(); - if (b > dim()/2) - return; - // it only looks constant - Matrix*self = (Matrix*)this; - Matrix_storage::set_band (self->dat,b); -} Real Matrix::norm() const { Real r =0.0; - for (int i=0, j=0; dat->mult_ok (i,j); dat->mult_next (i,j)) - r += sqr (dat->elem (i,j)); + for (int i=0, j=0; dat_->mult_ok (i,j); dat_->mult_next (i,j)) + r += sqr (dat_->elem (i,j)); return sqrt (r); } void Matrix::fill (Real r) { - for (int i=0, j=0; dat->mult_ok (i,j); dat->mult_next (i,j)) - dat->elem (i,j)=r; + for (int i=0, j=0; dat_->mult_ok (i,j); dat_->mult_next (i,j)) + dat_->elem (i,j)=r; } void Matrix::set_diag (Real r) { - for (int i=0, j=0; dat->mult_ok (i,j); dat->mult_next (i,j)) - dat->elem (i,j)=(i==j) ? r: 0.0; + for (int i=0, j=0; dat_->mult_ok (i,j); dat_->mult_next (i,j)) + dat_->elem (i,j)=(i==j) ? r: 0.0; } void Matrix::set_diag (Vector d) { - for (int i=0, j=0; dat->mult_ok (i,j); dat->mult_next (i,j)) - dat->elem (i,j)=(i==j) ? d (i): 0.0; + for (int i=0, j=0; dat_->mult_ok (i,j); dat_->mult_next (i,j)) + dat_->elem (i,j)=(i==j) ? d (i): 0.0; } void Matrix::operator+=(Matrix const &m) { - Matrix_storage::set_addition_result (dat, m.dat); assert (m.cols() == cols ()); assert (m.rows() == rows ()); - for (int i=0, j=0; dat->mult_ok (i,j); dat->mult_next (i,j)) - dat->elem (i,j) += m (i,j); + for (int i=0, j=0; dat_->mult_ok (i,j); dat_->mult_next (i,j)) + dat_->elem (i,j) += m (i,j); } void Matrix::operator-=(Matrix const &m) { - Matrix_storage::set_addition_result (dat, m.dat); assert (m.cols() == cols ()); assert (m.rows() == rows ()); - for (int i=0, j=0; dat->mult_ok (i,j); dat->mult_next (i,j)) - dat->elem (i,j) -= m (i,j); + for (int i=0, j=0; dat_->mult_ok (i,j); dat_->mult_next (i,j)) + dat_->elem (i,j) -= m (i,j); } void Matrix::operator*=(Real a) { - for (int i=0, j=0; dat->mult_ok (i,j); dat->mult_next (i,j)) - dat->elem (i,j) *= a; + for (int i=0, j=0; dat_->mult_ok (i,j); dat_->mult_next (i,j)) + dat_->elem (i,j) *= a; } void Matrix::operator=(Matrix const &m) { if (&m == this) - return ; - delete dat; - dat = m.dat->clone(); + return ; + delete dat_; + dat_ = new Full_storage (*m.dat_); } + int -Matrix::band_i() const +Matrix::band_i () const +{ + return dat_->band_i_; +} + +void +Matrix::set_band () +{ + dat_->band_i_ = calc_band_i (); +} + +int +Matrix::calc_band_i() const { - if (band_b()) - { - Diagonal_storage const * diag = (Diagonal_storage*) dat; - return diag->band_size_i(); - } int starty = dim(); while (starty >= 0) { - for (int i = starty, j = 0; i < dim(); i++, j++) - if (dat->elem (i,j)) - goto gotcha; - for (int i=0, j = starty; j < dim(); i++,j++) - if (dat->elem (i,j)) - goto gotcha; - starty --; + for (int i = starty, j = 0; i < dim(); i++, j++) + if (dat_->elem (i,j)) + goto gotcha; + for (int i=0, j = starty; j < dim(); i++,j++) + if (dat_->elem (i,j)) + goto gotcha; + starty --; } -gotcha: + gotcha: return starty; } Matrix::Matrix (Matrix const &m) { - m.OK(); - - dat = m.dat->clone(); + dat_ = new Full_storage (*m.dat_); } Matrix::Matrix (int n, int m) { - dat = Matrix_storage::get_full (n,m); + dat_ = new Full_storage(n,m); fill (0); } -Matrix::Matrix (Matrix_storage*stor_p) -{ - dat = stor_p; -} Matrix::Matrix (int n) { - dat = Matrix_storage::get_full (n,n); + dat_= new Full_storage (n,n); fill (0); } Matrix::Matrix (Vector v, Vector w) -{ - dat = Matrix_storage::get_full (v.dim(), w.dim ()); - for (int i=0, j=0; dat->mult_ok (i,j); dat->mult_next (i,j)) - dat->elem (i,j)=v (i)*w (j); +{ + int n = v.dim(); + int m = w.dim (); + dat_= new Full_storage (n,m); + for (int i=0; i < n; i++) + for (int j=0; j < m ; j++) + dat_->elem (i,j)=v (i)*w (j); } @@ -170,7 +143,7 @@ Matrix::row (int k) const Vector v (n); for (int i=0; i < n; i++) - v (i)=dat->elem (k,i); + v (i)=dat_->elem (k,i); return v; } @@ -181,17 +154,17 @@ Matrix::col (int k) const int n=rows(); Vector v (n); for (int i=0; i < n; i++) - v (i)=dat->elem (i,k); + v (i)=dat_->elem (i,k); return v; } Vector Matrix::left_multiply (Vector const & v) const { - Vector dest (v.dim()); - assert (dat->cols()==v.dim ()); - for (int i=0, j=0; dat->mult_ok (i,j); dat->mult_next (i,j)) - dest (i)+= dat->elem (j,i)*v (j); + Vector dest (v.dim()); + assert (dat_->cols()==v.dim ()); + for (int i=0, j=0; dat_->mult_ok (i,j); dat_->mult_next (i,j)) + dest (i)+= dat_->elem (j,i)*v (j); return dest; } @@ -199,9 +172,9 @@ Vector Matrix::operator *(Vector const & v) const { Vector dest (rows()); - assert (dat->cols()==v.dim ()); - for (int i=0, j=0; dat->mult_ok (i,j); dat->mult_next (i,j)) - dest (i)+= dat->elem (i,j)*v (j); + assert (dat_->cols()==v.dim ()); + for (int i=0, j=0; dat_->mult_ok (i,j); dat_->mult_next (i,j)) + dest (i)+= dat_->elem (i,j)*v (j); return dest; } @@ -217,18 +190,16 @@ operator /(Matrix const& m1,Real a) ugh. Only works for square matrices. */ void -Matrix::transpose() // delegate to storage? +Matrix::transpose() { -#if 1 - for (int i=0, j=0; dat->mult_ok (i,j); dat->mult_next (i,j)) + for (int i=0, j=0; dat_->mult_ok (i,j); dat_->mult_next (i,j)) { - if (i >= j) - continue; - Real r=dat->elem (i,j); - dat->elem (i,j) = dat->elem (j,i); - dat->elem (j,i)=r; + if (i >= j) + continue; + Real r=dat_->elem (i,j); + dat_->elem (i,j) = dat_->elem (j,i); + dat_->elem (j,i)=r; } -#endif } Matrix @@ -251,29 +222,30 @@ Matrix::transposed() const Matrix operator *(Matrix const &m1, Matrix const &m2) { - Matrix result (Matrix_storage::get_product_result (m1.dat, m2.dat)); - + Matrix result (m1.rows (), m2.cols ()); result.set_product (m1,m2); return result; } + + void Matrix::set_product (Matrix const &m1, Matrix const &m2) { assert (m1.cols()==m2.rows ()); assert (cols()==m2.cols () && rows ()==m1.rows ()); - if (m1.dat->try_right_multiply (dat, m2.dat)) - return; - - for (int i=0, j=0; dat->mult_ok (i,j); - dat->mult_next (i,j)) - { + for (int i=0; i < rows (); i++) + for (int j=0; j < cols (); j++) + { Real r=0.0; - for (int k = 0; k < m1.cols(); k++) + for (int k = 0 >? i - m1.band_i () >? j - m2.band_i (); + k < m1.cols(); k++) + { r += m1(i,k)*m2(k,j); - dat->elem (i,j)=r; - } + } + dat_->elem (i,j)=r; + } } void @@ -281,9 +253,9 @@ Matrix::insert_row (Vector v, int k) { int c = cols(); assert (v.dim()==cols ()); - dat->insert_row (k); + dat_->insert_row (k); for (int j=0; j < c; j++) - dat->elem (k,j)=v (j); + dat_->elem (k,j)=v (j); } @@ -294,9 +266,9 @@ Matrix::swap_columns (int c1, int c2) int r = rows(); for (int i=0; i< r; i++) { - Real r=dat->elem (i,c1); - dat->elem (i,c1) = dat->elem (i,c2); - dat->elem (i,c2)=r; + Real r=dat_->elem (i,c1); + dat_->elem (i,c1) = dat_->elem (i,c2); + dat_->elem (i,c2)=r; } } @@ -307,9 +279,9 @@ Matrix::swap_rows (int c1, int c2) int c = cols(); for (int i=0; i< c; i++) { - Real r=dat->elem (c1,i); - dat->elem (c1,i) = dat->elem (c2,i); - dat->elem (c2,i)=r; + Real r=dat_->elem (c1,i); + dat_->elem (c1,i) = dat_->elem (c2,i); + dat_->elem (c2,i)=r; } } @@ -321,5 +293,7 @@ Matrix::dim() const return rows(); } - - +Matrix::~Matrix () +{ + delete dat_; +} diff --git a/flower/offset.cc b/flower/offset.cc index 232967e675..3085f246b5 100644 --- a/flower/offset.cc +++ b/flower/offset.cc @@ -7,7 +7,9 @@ */ #include +#ifndef STANDALONE #include "string.hh" +#endif #include "offset.hh" diff --git a/flower/scalar.cc b/flower/scalar.cc index 2b61b9089f..79bfd53d5f 100644 --- a/flower/scalar.cc +++ b/flower/scalar.cc @@ -55,8 +55,13 @@ Scalar::operator int() return value_i (); } - Scalar::operator bool () const +{ + return to_bool (); +} + +bool +Scalar::to_bool () const { if (!length_i ()) return false; diff --git a/flower/vector.cc b/flower/vector.cc index 8f88b14f50..fafa47a97e 100644 --- a/flower/vector.cc +++ b/flower/vector.cc @@ -1,4 +1,14 @@ +/* + vector.cc -- implement Vector + + source file of the Flower Library + + (c) 1996-98 Han-Wen Nienhuys + + */ + #include "vector.hh" + Vector::Vector (Array d) : dat (d) { diff --git a/init/engraver.ly b/init/engraver.ly index 401b4d59ce..1e16c2146b 100644 --- a/init/engraver.ly +++ b/init/engraver.ly @@ -38,16 +38,17 @@ Staff = \translator { Rhythmic_staff = \translator { - \type "Engraver_group_engraver"; + \type "Engraver_group_engraver"; nolines = "1"; - \consists "Pitch_squash_engraver"; + \consists "Pitch_squash_engraver"; - \consists "Bar_engraver"; - \consists "Meter_engraver"; - \consists "Staff_sym_engraver"; - \consists "Line_group_engraver"; - \accepts "Voice"; + \consists "Bar_engraver"; + \consists "Meter_engraver"; + \consists "Staff_sym_engraver"; + \consists "Line_group_engraver"; + \accepts "Voice"; } + Voice = \translator { \type "Engraver_group_engraver"; \consists "Dynamic_engraver"; @@ -56,6 +57,7 @@ Voice = \translator { \consists "Plet_engraver"; \consists "Beam_engraver"; \consists "Abbreviation_beam_engraver"; + \consists "Multi_measure_rest_engraver"; \consists "Script_engraver"; \consists "Rhythmic_column_engraver"; \consists "Slur_engraver"; diff --git a/init/feta11.ly b/init/feta11.ly deleted file mode 100644 index a27a789ab2..0000000000 --- a/init/feta11.ly +++ /dev/null @@ -1,89 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta11.log -% name=\symboltables { - "rests" = \table { - "0" "\\wholerest" 0.00\pt 4.12\pt -1.72\pt 0.00\pt - "1" "\\halfrest" 0.00\pt 4.12\pt 0.00\pt 1.72\pt - "0o" "\\outsidewholerest" -1.72\pt 5.84\pt -1.72\pt 0.28\pt - "1o" "\\outsidehalfrest" -1.72\pt 5.84\pt -0.28\pt 1.72\pt - "2" "\\quartrest" 0.00\pt 2.97\pt 2.06\pt 9.90\pt - "3" "\\eighthrest" 0.00\pt 3.67\pt 2.75\pt 7.81\pt - "4" "\\sixteenthrest" 0.00\pt 4.27\pt 0.00\pt 7.81\pt - "5" "\\thirtysecondrest" 0.00\pt 4.81\pt 0.00\pt 10.56\pt - "6" "\\sixtyfourthrest" 0.00\pt 5.16\pt 0.00\pt 13.31\pt - "7" "\\hundredtwentyeighthrest" 0.00\pt 5.75\pt 0.00\pt 16.06\pt - } - "accidentals" = \table { - "1" "\\sharp" 0.00\pt 3.03\pt -4.12\pt 4.12\pt - "0" "\\natural" 0.00\pt 1.83\pt -4.12\pt 4.12\pt - "-1" "\\flat" -0.33\pt 2.20\pt -1.38\pt 5.50\pt - "-2" "\\flatflat" -0.33\pt 3.99\pt -1.38\pt 5.50\pt - "2" "\\sharpsharp" 0.00\pt 2.75\pt -1.38\pt 1.38\pt - } - "dots" = \table { - "dot" "\\dot" 0.00\pt 1.24\pt -0.62\pt 0.62\pt - "repeatcolon" "\\repeatcolon" 0.00\pt 1.24\pt -1.38\pt 1.38\pt - } - "balls" = \table { - "-1" "\\brevisball" 0.00\pt 5.50\pt -1.51\pt 1.51\pt - "-1l" "\\brevisledger" -1.38\pt 6.88\pt -0.28\pt 0.28\pt - "-2" "\\longaball" 0.00\pt 5.50\pt -1.51\pt 1.51\pt - "-2l" "\\longaledger" -1.38\pt 6.88\pt -0.28\pt 0.28\pt - "0" "\\wholeball" 0.00\pt 5.45\pt -1.51\pt 1.51\pt - "0l" "\\wholeledger" -1.36\pt 6.81\pt -0.28\pt 0.28\pt - "1" "\\halfball" 0.00\pt 3.79\pt -1.51\pt 1.51\pt - "1l" "\\halfledger" -0.95\pt 4.74\pt -0.28\pt 0.28\pt - "2" "\\quartball" 0.00\pt 3.63\pt -1.51\pt 1.51\pt - "2l" "\\quartledger" -0.91\pt 4.54\pt -0.28\pt 0.28\pt - } - "scripts" = \table { - "ufermata" "\\ufermata" -3.64\pt 3.64\pt -0.21\pt 3.99\pt - "dfermata" "\\dfermata" -3.64\pt 3.64\pt -3.99\pt 0.21\pt - "sforzato" "\\sforzatoaccent" -2.47\pt 2.47\pt -1.38\pt 1.38\pt - "staccato" "\\staccato" -0.41\pt 0.41\pt -0.41\pt 0.41\pt - "ustaccatissimo" "\\ustaccatissimo" -0.55\pt 0.55\pt -0.20\pt 2.75\pt - "dstaccatissimo" "\\dstaccatissimo" -0.55\pt 0.55\pt -2.75\pt 0.20\pt - "tenuto" "\\tenuto" -2.47\pt 2.47\pt -0.17\pt 0.17\pt - "umarcato" "\\umarcato" -1.38\pt 1.38\pt 0.00\pt 3.03\pt - "dmarcato" "\\dmarcato" -1.38\pt 1.38\pt -3.03\pt 0.00\pt - "open" "\\ouvert" -1.10\pt 1.10\pt -1.38\pt 1.38\pt - "stopped" "\\plusstop" -1.51\pt 1.51\pt -1.51\pt 1.51\pt - "upbow" "\\upbow" -1.79\pt 1.79\pt 0.00\pt 5.72\pt - "downbow" "\\downbow" -2.06\pt 2.06\pt 0.00\pt 3.67\pt - "reverseturn" "\\reverseturn" -3.01\pt 3.01\pt -1.46\pt 1.46\pt - "turn" "\\turn" -3.01\pt 3.01\pt -1.46\pt 1.46\pt - "trill" "\\trill" -2.75\pt 2.75\pt 0.00\pt 6.19\pt - "upedalheel" "\\upedalheel" -1.38\pt 1.38\pt -1.38\pt 1.83\pt - "dpedalheel" "\\dpedalheel" -1.38\pt 1.38\pt -1.83\pt 1.38\pt - "upedaltoe" "\\upedaltoe" -1.38\pt 1.38\pt 0.00\pt 4.12\pt - "dpedaltoe" "\\dpedaltoe" -1.38\pt 1.38\pt -4.12\pt 0.00\pt - "flageolet" "\\flageolet" -1.47\pt 1.47\pt -1.47\pt 1.47\pt - "trilelement" "\\trilelement" -1.83\pt 0.72\pt -1.38\pt 1.38\pt - "prall" "\\prall" -3.11\pt 3.11\pt -1.38\pt 1.38\pt - "mordent" "\\mordent" -3.11\pt 3.11\pt -1.38\pt 1.38\pt - "prallprall" "\\prallprall" -4.39\pt 4.39\pt -1.38\pt 1.38\pt - "prallmordent" "\\prallmordent" -4.39\pt 4.39\pt -1.38\pt 1.38\pt - "upprall" "\\upprall" -4.39\pt 4.39\pt -1.38\pt 1.38\pt - "downprall" "\\downprall" -4.39\pt 4.39\pt -1.38\pt 1.38\pt - } - "flags" = \table { - "u3" "\\eighthflag" -0.14\pt 3.39\pt -8.43\pt 0.14\pt - "u4" "\\sixteenthflag" -0.14\pt 3.39\pt -9.80\pt 0.14\pt - "u5" "\\thirtysecondflag" -0.14\pt 3.39\pt -11.87\pt 0.14\pt - "u6" "\\sixtyfourthflag" -0.14\pt 3.39\pt -14.62\pt 0.14\pt - "d3" "\\deighthflag" -0.14\pt 3.76\pt -0.14\pt 8.02\pt - "d4" "\\dsixteenthflag" -0.14\pt 3.76\pt -0.14\pt 8.43\pt - "d5" "\\dthirtysecondflag" -0.14\pt 3.76\pt -0.14\pt 10.77\pt - "d6" "\\dsixtyfourthflag" -0.14\pt 3.76\pt -0.14\pt 12.14\pt - } - "clefs" = \table { - "alto" "\\altoclef" -2.75\pt 10.24\pt -5.50\pt 5.50\pt - "alto_change" "\\caltoclef" -2.20\pt 8.19\pt -4.40\pt 4.40\pt - "bass" "\\bassclef" -1.38\pt 9.90\pt -6.88\pt 2.75\pt - "bass_change" "\\cbassclef" -1.10\pt 7.92\pt -5.50\pt 2.20\pt - "violin" "\\violinclef" -2.40\pt 10.28\pt -8.25\pt 13.75\pt - "violin_change" "\\cviolinclef" -2.08\pt 8.06\pt -6.60\pt 11.00\pt - } - % } % $name diff --git a/init/feta13.ly b/init/feta13.ly deleted file mode 100644 index 19a706f59e..0000000000 --- a/init/feta13.ly +++ /dev/null @@ -1,89 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta13.log -% name=\symboltables { - "rests" = \table { - "0" "\\wholerest" 0.00\pt 4.88\pt -2.03\pt 0.00\pt - "1" "\\halfrest" 0.00\pt 4.88\pt 0.00\pt 2.03\pt - "0o" "\\outsidewholerest" -2.03\pt 6.91\pt -2.03\pt 0.33\pt - "1o" "\\outsidehalfrest" -2.03\pt 6.91\pt -0.33\pt 2.03\pt - "2" "\\quartrest" 0.00\pt 3.51\pt 2.44\pt 11.70\pt - "3" "\\eighthrest" 0.00\pt 4.33\pt 3.25\pt 9.24\pt - "4" "\\sixteenthrest" 0.00\pt 5.04\pt 0.00\pt 9.24\pt - "5" "\\thirtysecondrest" 0.00\pt 5.69\pt 0.00\pt 12.49\pt - "6" "\\sixtyfourthrest" 0.00\pt 6.10\pt 0.00\pt 15.74\pt - "7" "\\hundredtwentyeighthrest" 0.00\pt 6.79\pt 0.00\pt 18.99\pt - } - "accidentals" = \table { - "1" "\\sharp" 0.00\pt 3.58\pt -4.88\pt 4.88\pt - "0" "\\natural" 0.00\pt 2.17\pt -4.88\pt 4.88\pt - "-1" "\\flat" -0.39\pt 2.60\pt -1.62\pt 6.50\pt - "-2" "\\flatflat" -0.39\pt 4.71\pt -1.62\pt 6.50\pt - "2" "\\sharpsharp" 0.00\pt 3.25\pt -1.62\pt 1.62\pt - } - "dots" = \table { - "dot" "\\dot" 0.00\pt 1.46\pt -0.73\pt 0.73\pt - "repeatcolon" "\\repeatcolon" 0.00\pt 1.46\pt -1.62\pt 1.62\pt - } - "balls" = \table { - "-1" "\\brevisball" 0.00\pt 6.50\pt -1.79\pt 1.79\pt - "-1l" "\\brevisledger" -1.62\pt 8.12\pt -0.33\pt 0.33\pt - "-2" "\\longaball" 0.00\pt 6.50\pt -1.79\pt 1.79\pt - "-2l" "\\longaledger" -1.62\pt 8.12\pt -0.33\pt 0.33\pt - "0" "\\wholeball" 0.00\pt 6.44\pt -1.79\pt 1.79\pt - "0l" "\\wholeledger" -1.61\pt 8.04\pt -0.33\pt 0.33\pt - "1" "\\halfball" 0.00\pt 4.48\pt -1.79\pt 1.79\pt - "1l" "\\halfledger" -1.12\pt 5.60\pt -0.33\pt 0.33\pt - "2" "\\quartball" 0.00\pt 4.29\pt -1.79\pt 1.79\pt - "2l" "\\quartledger" -1.07\pt 5.37\pt -0.33\pt 0.33\pt - } - "scripts" = \table { - "ufermata" "\\ufermata" -4.31\pt 4.31\pt -0.24\pt 4.71\pt - "dfermata" "\\dfermata" -4.31\pt 4.31\pt -4.71\pt 0.24\pt - "sforzato" "\\sforzatoaccent" -2.92\pt 2.92\pt -1.62\pt 1.62\pt - "staccato" "\\staccato" -0.49\pt 0.49\pt -0.49\pt 0.49\pt - "ustaccatissimo" "\\ustaccatissimo" -0.65\pt 0.65\pt -0.20\pt 3.25\pt - "dstaccatissimo" "\\dstaccatissimo" -0.65\pt 0.65\pt -3.25\pt 0.20\pt - "tenuto" "\\tenuto" -2.92\pt 2.92\pt -0.20\pt 0.20\pt - "umarcato" "\\umarcato" -1.62\pt 1.62\pt 0.00\pt 3.58\pt - "dmarcato" "\\dmarcato" -1.62\pt 1.62\pt -3.58\pt 0.00\pt - "open" "\\ouvert" -1.30\pt 1.30\pt -1.62\pt 1.62\pt - "stopped" "\\plusstop" -1.79\pt 1.79\pt -1.79\pt 1.79\pt - "upbow" "\\upbow" -2.11\pt 2.11\pt 0.00\pt 6.76\pt - "downbow" "\\downbow" -2.44\pt 2.44\pt 0.00\pt 4.33\pt - "reverseturn" "\\reverseturn" -3.55\pt 3.55\pt -1.72\pt 1.72\pt - "turn" "\\turn" -3.55\pt 3.55\pt -1.72\pt 1.72\pt - "trill" "\\trill" -3.25\pt 3.25\pt 0.00\pt 7.31\pt - "upedalheel" "\\upedalheel" -1.62\pt 1.62\pt -1.62\pt 2.17\pt - "dpedalheel" "\\dpedalheel" -1.62\pt 1.62\pt -2.17\pt 1.62\pt - "upedaltoe" "\\upedaltoe" -1.62\pt 1.62\pt 0.00\pt 4.88\pt - "dpedaltoe" "\\dpedaltoe" -1.62\pt 1.62\pt -4.88\pt 0.00\pt - "flageolet" "\\flageolet" -1.73\pt 1.73\pt -1.73\pt 1.73\pt - "trilelement" "\\trilelement" -2.17\pt 0.85\pt -1.62\pt 1.62\pt - "prall" "\\prall" -3.67\pt 3.67\pt -1.62\pt 1.62\pt - "mordent" "\\mordent" -3.67\pt 3.67\pt -1.62\pt 1.62\pt - "prallprall" "\\prallprall" -5.18\pt 5.18\pt -1.62\pt 1.62\pt - "prallmordent" "\\prallmordent" -5.18\pt 5.18\pt -1.62\pt 1.62\pt - "upprall" "\\upprall" -5.18\pt 5.18\pt -1.62\pt 1.62\pt - "downprall" "\\downprall" -5.18\pt 5.18\pt -1.62\pt 1.62\pt - } - "flags" = \table { - "u3" "\\eighthflag" -0.16\pt 4.01\pt -9.96\pt 0.16\pt - "u4" "\\sixteenthflag" -0.16\pt 4.01\pt -11.59\pt 0.16\pt - "u5" "\\thirtysecondflag" -0.16\pt 4.01\pt -14.02\pt 0.16\pt - "u6" "\\sixtyfourthflag" -0.16\pt 4.01\pt -17.27\pt 0.16\pt - "d3" "\\deighthflag" -0.16\pt 4.44\pt -0.16\pt 9.47\pt - "d4" "\\dsixteenthflag" -0.16\pt 4.44\pt -0.16\pt 9.96\pt - "d5" "\\dthirtysecondflag" -0.16\pt 4.44\pt -0.16\pt 12.72\pt - "d6" "\\dsixtyfourthflag" -0.16\pt 4.44\pt -0.16\pt 14.35\pt - } - "clefs" = \table { - "alto" "\\altoclef" -3.25\pt 12.10\pt -6.50\pt 6.50\pt - "alto_change" "\\caltoclef" -2.60\pt 9.68\pt -5.20\pt 5.20\pt - "bass" "\\bassclef" -1.62\pt 11.70\pt -8.12\pt 3.25\pt - "bass_change" "\\cbassclef" -1.30\pt 9.36\pt -6.50\pt 2.60\pt - "violin" "\\violinclef" -2.83\pt 12.15\pt -9.75\pt 16.25\pt - "violin_change" "\\cviolinclef" -2.46\pt 9.52\pt -7.80\pt 13.00\pt - } - % } % $name diff --git a/init/feta16.ly b/init/feta16.ly deleted file mode 100644 index bf4ec3ba59..0000000000 --- a/init/feta16.ly +++ /dev/null @@ -1,89 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta16.log -% name=\symboltables { - "rests" = \table { - "0" "\\wholerest" 0.00\pt 6.00\pt -2.50\pt 0.00\pt - "1" "\\halfrest" 0.00\pt 6.00\pt 0.00\pt 2.50\pt - "0o" "\\outsidewholerest" -2.50\pt 8.50\pt -2.50\pt 0.40\pt - "1o" "\\outsidehalfrest" -2.50\pt 8.50\pt -0.40\pt 2.50\pt - "2" "\\quartrest" 0.00\pt 4.32\pt 3.00\pt 14.40\pt - "3" "\\eighthrest" 0.00\pt 5.33\pt 4.00\pt 11.37\pt - "4" "\\sixteenthrest" 0.00\pt 6.21\pt 0.00\pt 11.37\pt - "5" "\\thirtysecondrest" 0.00\pt 7.00\pt 0.00\pt 15.37\pt - "6" "\\sixtyfourthrest" 0.00\pt 7.51\pt 0.00\pt 19.37\pt - "7" "\\hundredtwentyeighthrest" 0.00\pt 8.36\pt 0.00\pt 23.37\pt - } - "accidentals" = \table { - "1" "\\sharp" 0.00\pt 4.40\pt -6.00\pt 6.00\pt - "0" "\\natural" 0.00\pt 2.67\pt -6.00\pt 6.00\pt - "-1" "\\flat" -0.48\pt 3.20\pt -2.00\pt 8.00\pt - "-2" "\\flatflat" -0.48\pt 5.80\pt -2.00\pt 8.00\pt - "2" "\\sharpsharp" 0.00\pt 4.00\pt -2.00\pt 2.00\pt - } - "dots" = \table { - "dot" "\\dot" 0.00\pt 1.80\pt -0.90\pt 0.90\pt - "repeatcolon" "\\repeatcolon" 0.00\pt 1.80\pt -2.00\pt 2.00\pt - } - "balls" = \table { - "-1" "\\brevisball" 0.00\pt 8.00\pt -2.20\pt 2.20\pt - "-1l" "\\brevisledger" -2.00\pt 10.00\pt -0.40\pt 0.40\pt - "-2" "\\longaball" 0.00\pt 8.00\pt -2.20\pt 2.20\pt - "-2l" "\\longaledger" -2.00\pt 10.00\pt -0.40\pt 0.40\pt - "0" "\\wholeball" 0.00\pt 7.92\pt -2.20\pt 2.20\pt - "0l" "\\wholeledger" -1.98\pt 9.90\pt -0.40\pt 0.40\pt - "1" "\\halfball" 0.00\pt 5.51\pt -2.20\pt 2.20\pt - "1l" "\\halfledger" -1.38\pt 6.89\pt -0.40\pt 0.40\pt - "2" "\\quartball" 0.00\pt 5.28\pt -2.20\pt 2.20\pt - "2l" "\\quartledger" -1.32\pt 6.61\pt -0.40\pt 0.40\pt - } - "scripts" = \table { - "ufermata" "\\ufermata" -5.30\pt 5.30\pt -0.30\pt 5.80\pt - "dfermata" "\\dfermata" -5.30\pt 5.30\pt -5.80\pt 0.30\pt - "sforzato" "\\sforzatoaccent" -3.60\pt 3.60\pt -2.00\pt 2.00\pt - "staccato" "\\staccato" -0.60\pt 0.60\pt -0.60\pt 0.60\pt - "ustaccatissimo" "\\ustaccatissimo" -0.80\pt 0.80\pt -0.20\pt 4.00\pt - "dstaccatissimo" "\\dstaccatissimo" -0.80\pt 0.80\pt -4.00\pt 0.20\pt - "tenuto" "\\tenuto" -3.60\pt 3.60\pt -0.24\pt 0.24\pt - "umarcato" "\\umarcato" -2.00\pt 2.00\pt 0.00\pt 4.40\pt - "dmarcato" "\\dmarcato" -2.00\pt 2.00\pt -4.40\pt 0.00\pt - "open" "\\ouvert" -1.60\pt 1.60\pt -2.00\pt 2.00\pt - "stopped" "\\plusstop" -2.20\pt 2.20\pt -2.20\pt 2.20\pt - "upbow" "\\upbow" -2.60\pt 2.60\pt 0.00\pt 8.32\pt - "downbow" "\\downbow" -3.00\pt 3.00\pt 0.00\pt 5.33\pt - "reverseturn" "\\reverseturn" -4.38\pt 4.38\pt -2.12\pt 2.12\pt - "turn" "\\turn" -4.38\pt 4.38\pt -2.12\pt 2.12\pt - "trill" "\\trill" -4.00\pt 4.00\pt 0.00\pt 9.00\pt - "upedalheel" "\\upedalheel" -2.00\pt 2.00\pt -2.00\pt 2.67\pt - "dpedalheel" "\\dpedalheel" -2.00\pt 2.00\pt -2.67\pt 2.00\pt - "upedaltoe" "\\upedaltoe" -2.00\pt 2.00\pt 0.00\pt 6.00\pt - "dpedaltoe" "\\dpedaltoe" -2.00\pt 2.00\pt -6.00\pt 0.00\pt - "flageolet" "\\flageolet" -2.13\pt 2.13\pt -2.13\pt 2.13\pt - "trilelement" "\\trilelement" -2.67\pt 1.05\pt -2.00\pt 2.00\pt - "prall" "\\prall" -4.52\pt 4.52\pt -2.00\pt 2.00\pt - "mordent" "\\mordent" -4.52\pt 4.52\pt -2.00\pt 2.00\pt - "prallprall" "\\prallprall" -6.38\pt 6.38\pt -2.00\pt 2.00\pt - "prallmordent" "\\prallmordent" -6.38\pt 6.38\pt -2.00\pt 2.00\pt - "upprall" "\\upprall" -6.38\pt 6.38\pt -2.00\pt 2.00\pt - "downprall" "\\downprall" -6.38\pt 6.38\pt -2.00\pt 2.00\pt - } - "flags" = \table { - "u3" "\\eighthflag" -0.20\pt 4.94\pt -12.26\pt 0.20\pt - "u4" "\\sixteenthflag" -0.20\pt 4.94\pt -14.26\pt 0.20\pt - "u5" "\\thirtysecondflag" -0.20\pt 4.94\pt -17.26\pt 0.20\pt - "u6" "\\sixtyfourthflag" -0.20\pt 4.94\pt -21.26\pt 0.20\pt - "d3" "\\deighthflag" -0.20\pt 5.46\pt -0.20\pt 11.66\pt - "d4" "\\dsixteenthflag" -0.20\pt 5.46\pt -0.20\pt 12.26\pt - "d5" "\\dthirtysecondflag" -0.20\pt 5.46\pt -0.20\pt 15.66\pt - "d6" "\\dsixtyfourthflag" -0.20\pt 5.46\pt -0.20\pt 17.66\pt - } - "clefs" = \table { - "alto" "\\altoclef" -4.00\pt 14.89\pt -8.00\pt 8.00\pt - "alto_change" "\\caltoclef" -3.20\pt 11.91\pt -6.40\pt 6.40\pt - "bass" "\\bassclef" -2.00\pt 14.40\pt -10.00\pt 4.00\pt - "bass_change" "\\cbassclef" -1.60\pt 11.52\pt -8.00\pt 3.20\pt - "violin" "\\violinclef" -3.49\pt 14.95\pt -12.00\pt 20.00\pt - "violin_change" "\\cviolinclef" -3.03\pt 11.72\pt -9.60\pt 16.00\pt - } - % } % $name diff --git a/init/feta19.ly b/init/feta19.ly deleted file mode 100644 index b5feea689e..0000000000 --- a/init/feta19.ly +++ /dev/null @@ -1,89 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta19.log -% name=\symboltables { - "rests" = \table { - "0" "\\wholerest" 0.00\pt 7.12\pt -2.97\pt 0.00\pt - "1" "\\halfrest" 0.00\pt 7.12\pt 0.00\pt 2.97\pt - "0o" "\\outsidewholerest" -2.97\pt 10.09\pt -2.97\pt 0.48\pt - "1o" "\\outsidehalfrest" -2.97\pt 10.09\pt -0.48\pt 2.97\pt - "2" "\\quartrest" 0.00\pt 5.13\pt 3.56\pt 17.10\pt - "3" "\\eighthrest" 0.00\pt 6.33\pt 4.75\pt 13.50\pt - "4" "\\sixteenthrest" 0.00\pt 7.37\pt 0.00\pt 13.50\pt - "5" "\\thirtysecondrest" 0.00\pt 8.32\pt 0.00\pt 18.25\pt - "6" "\\sixtyfourthrest" 0.00\pt 8.92\pt 0.00\pt 23.00\pt - "7" "\\hundredtwentyeighthrest" 0.00\pt 9.93\pt 0.00\pt 27.75\pt - } - "accidentals" = \table { - "1" "\\sharp" 0.00\pt 5.23\pt -7.12\pt 7.12\pt - "0" "\\natural" 0.00\pt 3.17\pt -7.12\pt 7.12\pt - "-1" "\\flat" -0.57\pt 3.80\pt -2.38\pt 9.50\pt - "-2" "\\flatflat" -0.57\pt 6.89\pt -2.38\pt 9.50\pt - "2" "\\sharpsharp" 0.00\pt 4.75\pt -2.38\pt 2.38\pt - } - "dots" = \table { - "dot" "\\dot" 0.00\pt 2.14\pt -1.07\pt 1.07\pt - "repeatcolon" "\\repeatcolon" 0.00\pt 2.14\pt -2.38\pt 2.38\pt - } - "balls" = \table { - "-1" "\\brevisball" 0.00\pt 9.50\pt -2.61\pt 2.61\pt - "-1l" "\\brevisledger" -2.38\pt 11.88\pt -0.48\pt 0.48\pt - "-2" "\\longaball" 0.00\pt 9.50\pt -2.61\pt 2.61\pt - "-2l" "\\longaledger" -2.38\pt 11.88\pt -0.48\pt 0.48\pt - "0" "\\wholeball" 0.00\pt 9.41\pt -2.61\pt 2.61\pt - "0l" "\\wholeledger" -2.35\pt 11.76\pt -0.48\pt 0.48\pt - "1" "\\halfball" 0.00\pt 6.54\pt -2.61\pt 2.61\pt - "1l" "\\halfledger" -1.64\pt 8.18\pt -0.48\pt 0.48\pt - "2" "\\quartball" 0.00\pt 6.27\pt -2.61\pt 2.61\pt - "2l" "\\quartledger" -1.57\pt 7.84\pt -0.48\pt 0.48\pt - } - "scripts" = \table { - "ufermata" "\\ufermata" -6.29\pt 6.29\pt -0.36\pt 6.89\pt - "dfermata" "\\dfermata" -6.29\pt 6.29\pt -6.89\pt 0.36\pt - "sforzato" "\\sforzatoaccent" -4.27\pt 4.27\pt -2.38\pt 2.38\pt - "staccato" "\\staccato" -0.71\pt 0.71\pt -0.71\pt 0.71\pt - "ustaccatissimo" "\\ustaccatissimo" -0.95\pt 0.95\pt -0.20\pt 4.75\pt - "dstaccatissimo" "\\dstaccatissimo" -0.95\pt 0.95\pt -4.75\pt 0.20\pt - "tenuto" "\\tenuto" -4.27\pt 4.27\pt -0.29\pt 0.29\pt - "umarcato" "\\umarcato" -2.38\pt 2.38\pt 0.00\pt 5.23\pt - "dmarcato" "\\dmarcato" -2.38\pt 2.38\pt -5.23\pt 0.00\pt - "open" "\\ouvert" -1.90\pt 1.90\pt -2.38\pt 2.38\pt - "stopped" "\\plusstop" -2.61\pt 2.61\pt -2.61\pt 2.61\pt - "upbow" "\\upbow" -3.09\pt 3.09\pt 0.00\pt 9.88\pt - "downbow" "\\downbow" -3.56\pt 3.56\pt 0.00\pt 6.33\pt - "reverseturn" "\\reverseturn" -5.20\pt 5.20\pt -2.51\pt 2.51\pt - "turn" "\\turn" -5.20\pt 5.20\pt -2.51\pt 2.51\pt - "trill" "\\trill" -4.75\pt 4.75\pt 0.00\pt 10.69\pt - "upedalheel" "\\upedalheel" -2.38\pt 2.38\pt -2.38\pt 3.17\pt - "dpedalheel" "\\dpedalheel" -2.38\pt 2.38\pt -3.17\pt 2.38\pt - "upedaltoe" "\\upedaltoe" -2.38\pt 2.38\pt 0.00\pt 7.12\pt - "dpedaltoe" "\\dpedaltoe" -2.38\pt 2.38\pt -7.12\pt 0.00\pt - "flageolet" "\\flageolet" -2.53\pt 2.53\pt -2.53\pt 2.53\pt - "trilelement" "\\trilelement" -3.17\pt 1.24\pt -2.38\pt 2.38\pt - "prall" "\\prall" -5.37\pt 5.37\pt -2.38\pt 2.38\pt - "mordent" "\\mordent" -5.37\pt 5.37\pt -2.38\pt 2.38\pt - "prallprall" "\\prallprall" -7.57\pt 7.57\pt -2.38\pt 2.38\pt - "prallmordent" "\\prallmordent" -7.57\pt 7.57\pt -2.38\pt 2.38\pt - "upprall" "\\upprall" -7.57\pt 7.57\pt -2.38\pt 2.38\pt - "downprall" "\\downprall" -7.57\pt 7.57\pt -2.38\pt 2.38\pt - } - "flags" = \table { - "u3" "\\eighthflag" -0.24\pt 5.86\pt -14.56\pt 0.24\pt - "u4" "\\sixteenthflag" -0.24\pt 5.86\pt -16.93\pt 0.24\pt - "u5" "\\thirtysecondflag" -0.24\pt 5.86\pt -20.50\pt 0.24\pt - "u6" "\\sixtyfourthflag" -0.24\pt 5.86\pt -25.25\pt 0.24\pt - "d3" "\\deighthflag" -0.24\pt 6.49\pt -0.24\pt 13.85\pt - "d4" "\\dsixteenthflag" -0.24\pt 6.49\pt -0.24\pt 14.56\pt - "d5" "\\dthirtysecondflag" -0.24\pt 6.49\pt -0.24\pt 18.60\pt - "d6" "\\dsixtyfourthflag" -0.24\pt 6.49\pt -0.24\pt 20.97\pt - } - "clefs" = \table { - "alto" "\\altoclef" -4.75\pt 17.68\pt -9.50\pt 9.50\pt - "alto_change" "\\caltoclef" -3.80\pt 14.14\pt -7.60\pt 7.60\pt - "bass" "\\bassclef" -2.38\pt 17.10\pt -11.88\pt 4.75\pt - "bass_change" "\\cbassclef" -1.90\pt 13.68\pt -9.50\pt 3.80\pt - "violin" "\\violinclef" -4.14\pt 17.75\pt -14.25\pt 23.75\pt - "violin_change" "\\cviolinclef" -3.60\pt 13.92\pt -11.40\pt 19.00\pt - } - % } % $name diff --git a/init/feta20.ly b/init/feta20.ly deleted file mode 100644 index e48e6606f0..0000000000 --- a/init/feta20.ly +++ /dev/null @@ -1,89 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta20.log -% name=\symboltables { - "rests" = \table { - "0" "\\wholerest" 0.00\pt 7.50\pt -3.12\pt 0.00\pt - "1" "\\halfrest" 0.00\pt 7.50\pt 0.00\pt 3.12\pt - "0o" "\\outsidewholerest" -3.12\pt 10.62\pt -3.12\pt 0.50\pt - "1o" "\\outsidehalfrest" -3.12\pt 10.62\pt -0.50\pt 3.12\pt - "2" "\\quartrest" 0.00\pt 5.40\pt 3.75\pt 18.00\pt - "3" "\\eighthrest" 0.00\pt 6.67\pt 5.00\pt 14.21\pt - "4" "\\sixteenthrest" 0.00\pt 7.76\pt 0.00\pt 14.21\pt - "5" "\\thirtysecondrest" 0.00\pt 8.75\pt 0.00\pt 19.21\pt - "6" "\\sixtyfourthrest" 0.00\pt 9.38\pt 0.00\pt 24.21\pt - "7" "\\hundredtwentyeighthrest" 0.00\pt 10.45\pt 0.00\pt 29.21\pt - } - "accidentals" = \table { - "1" "\\sharp" 0.00\pt 5.50\pt -7.50\pt 7.50\pt - "0" "\\natural" 0.00\pt 3.33\pt -7.50\pt 7.50\pt - "-1" "\\flat" -0.60\pt 4.00\pt -2.50\pt 10.00\pt - "-2" "\\flatflat" -0.60\pt 7.25\pt -2.50\pt 10.00\pt - "2" "\\sharpsharp" 0.00\pt 5.00\pt -2.50\pt 2.50\pt - } - "dots" = \table { - "dot" "\\dot" 0.00\pt 2.25\pt -1.12\pt 1.12\pt - "repeatcolon" "\\repeatcolon" 0.00\pt 2.25\pt -2.50\pt 2.50\pt - } - "balls" = \table { - "-1" "\\brevisball" 0.00\pt 10.00\pt -2.75\pt 2.75\pt - "-1l" "\\brevisledger" -2.50\pt 12.50\pt -0.50\pt 0.50\pt - "-2" "\\longaball" 0.00\pt 10.00\pt -2.75\pt 2.75\pt - "-2l" "\\longaledger" -2.50\pt 12.50\pt -0.50\pt 0.50\pt - "0" "\\wholeball" 0.00\pt 9.90\pt -2.75\pt 2.75\pt - "0l" "\\wholeledger" -2.48\pt 12.38\pt -0.50\pt 0.50\pt - "1" "\\halfball" 0.00\pt 6.89\pt -2.75\pt 2.75\pt - "1l" "\\halfledger" -1.72\pt 8.61\pt -0.50\pt 0.50\pt - "2" "\\quartball" 0.00\pt 6.61\pt -2.75\pt 2.75\pt - "2l" "\\quartledger" -1.65\pt 8.26\pt -0.50\pt 0.50\pt - } - "scripts" = \table { - "ufermata" "\\ufermata" -6.63\pt 6.63\pt -0.38\pt 7.25\pt - "dfermata" "\\dfermata" -6.63\pt 6.63\pt -7.25\pt 0.38\pt - "sforzato" "\\sforzatoaccent" -4.50\pt 4.50\pt -2.50\pt 2.50\pt - "staccato" "\\staccato" -0.75\pt 0.75\pt -0.75\pt 0.75\pt - "ustaccatissimo" "\\ustaccatissimo" -1.00\pt 1.00\pt -0.20\pt 5.00\pt - "dstaccatissimo" "\\dstaccatissimo" -1.00\pt 1.00\pt -5.00\pt 0.20\pt - "tenuto" "\\tenuto" -4.50\pt 4.50\pt -0.30\pt 0.30\pt - "umarcato" "\\umarcato" -2.50\pt 2.50\pt 0.00\pt 5.50\pt - "dmarcato" "\\dmarcato" -2.50\pt 2.50\pt -5.50\pt 0.00\pt - "open" "\\ouvert" -2.00\pt 2.00\pt -2.50\pt 2.50\pt - "stopped" "\\plusstop" -2.75\pt 2.75\pt -2.75\pt 2.75\pt - "upbow" "\\upbow" -3.25\pt 3.25\pt 0.00\pt 10.40\pt - "downbow" "\\downbow" -3.75\pt 3.75\pt 0.00\pt 6.67\pt - "reverseturn" "\\reverseturn" -5.47\pt 5.47\pt -2.65\pt 2.65\pt - "turn" "\\turn" -5.47\pt 5.47\pt -2.65\pt 2.65\pt - "trill" "\\trill" -5.00\pt 5.00\pt 0.00\pt 11.25\pt - "upedalheel" "\\upedalheel" -2.50\pt 2.50\pt -2.50\pt 3.33\pt - "dpedalheel" "\\dpedalheel" -2.50\pt 2.50\pt -3.33\pt 2.50\pt - "upedaltoe" "\\upedaltoe" -2.50\pt 2.50\pt 0.00\pt 7.50\pt - "dpedaltoe" "\\dpedaltoe" -2.50\pt 2.50\pt -7.50\pt 0.00\pt - "flageolet" "\\flageolet" -2.67\pt 2.67\pt -2.67\pt 2.67\pt - "trilelement" "\\trilelement" -3.33\pt 1.31\pt -2.50\pt 2.50\pt - "prall" "\\prall" -5.65\pt 5.65\pt -2.50\pt 2.50\pt - "mordent" "\\mordent" -5.65\pt 5.65\pt -2.50\pt 2.50\pt - "prallprall" "\\prallprall" -7.97\pt 7.97\pt -2.50\pt 2.50\pt - "prallmordent" "\\prallmordent" -7.97\pt 7.97\pt -2.50\pt 2.50\pt - "upprall" "\\upprall" -7.97\pt 7.97\pt -2.50\pt 2.50\pt - "downprall" "\\downprall" -7.97\pt 7.97\pt -2.50\pt 2.50\pt - } - "flags" = \table { - "u3" "\\eighthflag" -0.25\pt 6.17\pt -15.33\pt 0.25\pt - "u4" "\\sixteenthflag" -0.25\pt 6.17\pt -17.83\pt 0.25\pt - "u5" "\\thirtysecondflag" -0.25\pt 6.17\pt -21.58\pt 0.25\pt - "u6" "\\sixtyfourthflag" -0.25\pt 6.17\pt -26.58\pt 0.25\pt - "d3" "\\deighthflag" -0.25\pt 6.83\pt -0.25\pt 14.58\pt - "d4" "\\dsixteenthflag" -0.25\pt 6.83\pt -0.25\pt 15.33\pt - "d5" "\\dthirtysecondflag" -0.25\pt 6.83\pt -0.25\pt 19.58\pt - "d6" "\\dsixtyfourthflag" -0.25\pt 6.83\pt -0.25\pt 22.08\pt - } - "clefs" = \table { - "alto" "\\altoclef" -5.00\pt 18.61\pt -10.00\pt 10.00\pt - "alto_change" "\\caltoclef" -4.00\pt 14.89\pt -8.00\pt 8.00\pt - "bass" "\\bassclef" -2.50\pt 18.00\pt -12.50\pt 5.00\pt - "bass_change" "\\cbassclef" -2.00\pt 14.40\pt -10.00\pt 4.00\pt - "violin" "\\violinclef" -4.36\pt 18.69\pt -15.00\pt 25.00\pt - "violin_change" "\\cviolinclef" -3.79\pt 14.65\pt -12.00\pt 20.00\pt - } - % } % $name diff --git a/init/feta23.ly b/init/feta23.ly deleted file mode 100644 index 9d05e404ed..0000000000 --- a/init/feta23.ly +++ /dev/null @@ -1,89 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta23.log -% name=\symboltables { - "rests" = \table { - "0" "\\wholerest" 0.00\pt 8.44\pt -3.52\pt 0.00\pt - "1" "\\halfrest" 0.00\pt 8.44\pt 0.00\pt 3.52\pt - "0o" "\\outsidewholerest" -3.52\pt 11.95\pt -3.52\pt 0.56\pt - "1o" "\\outsidehalfrest" -3.52\pt 11.95\pt -0.56\pt 3.52\pt - "2" "\\quartrest" 0.00\pt 6.08\pt 4.22\pt 20.25\pt - "3" "\\eighthrest" 0.00\pt 7.50\pt 5.62\pt 15.98\pt - "4" "\\sixteenthrest" 0.00\pt 8.73\pt 0.00\pt 15.98\pt - "5" "\\thirtysecondrest" 0.00\pt 9.85\pt 0.00\pt 21.61\pt - "6" "\\sixtyfourthrest" 0.00\pt 10.56\pt 0.00\pt 27.23\pt - "7" "\\hundredtwentyeighthrest" 0.00\pt 11.75\pt 0.00\pt 32.86\pt - } - "accidentals" = \table { - "1" "\\sharp" 0.00\pt 6.19\pt -8.44\pt 8.44\pt - "0" "\\natural" 0.00\pt 3.75\pt -8.44\pt 8.44\pt - "-1" "\\flat" -0.68\pt 4.50\pt -2.81\pt 11.25\pt - "-2" "\\flatflat" -0.68\pt 8.16\pt -2.81\pt 11.25\pt - "2" "\\sharpsharp" 0.00\pt 5.62\pt -2.81\pt 2.81\pt - } - "dots" = \table { - "dot" "\\dot" 0.00\pt 2.53\pt -1.27\pt 1.27\pt - "repeatcolon" "\\repeatcolon" 0.00\pt 2.53\pt -2.81\pt 2.81\pt - } - "balls" = \table { - "-1" "\\brevisball" 0.00\pt 11.25\pt -3.09\pt 3.09\pt - "-1l" "\\brevisledger" -2.81\pt 14.06\pt -0.56\pt 0.56\pt - "-2" "\\longaball" 0.00\pt 11.25\pt -3.09\pt 3.09\pt - "-2l" "\\longaledger" -2.81\pt 14.06\pt -0.56\pt 0.56\pt - "0" "\\wholeball" 0.00\pt 11.14\pt -3.09\pt 3.09\pt - "0l" "\\wholeledger" -2.78\pt 13.92\pt -0.56\pt 0.56\pt - "1" "\\halfball" 0.00\pt 7.75\pt -3.09\pt 3.09\pt - "1l" "\\halfledger" -1.94\pt 9.69\pt -0.56\pt 0.56\pt - "2" "\\quartball" 0.00\pt 7.43\pt -3.09\pt 3.09\pt - "2l" "\\quartledger" -1.86\pt 9.29\pt -0.56\pt 0.56\pt - } - "scripts" = \table { - "ufermata" "\\ufermata" -7.45\pt 7.45\pt -0.42\pt 8.16\pt - "dfermata" "\\dfermata" -7.45\pt 7.45\pt -8.16\pt 0.42\pt - "sforzato" "\\sforzatoaccent" -5.06\pt 5.06\pt -2.81\pt 2.81\pt - "staccato" "\\staccato" -0.84\pt 0.84\pt -0.84\pt 0.84\pt - "ustaccatissimo" "\\ustaccatissimo" -1.13\pt 1.13\pt -0.20\pt 5.63\pt - "dstaccatissimo" "\\dstaccatissimo" -1.13\pt 1.13\pt -5.63\pt 0.20\pt - "tenuto" "\\tenuto" -5.06\pt 5.06\pt -0.34\pt 0.34\pt - "umarcato" "\\umarcato" -2.81\pt 2.81\pt 0.00\pt 6.19\pt - "dmarcato" "\\dmarcato" -2.81\pt 2.81\pt -6.19\pt 0.00\pt - "open" "\\ouvert" -2.25\pt 2.25\pt -2.81\pt 2.81\pt - "stopped" "\\plusstop" -3.09\pt 3.09\pt -3.09\pt 3.09\pt - "upbow" "\\upbow" -3.66\pt 3.66\pt 0.00\pt 11.70\pt - "downbow" "\\downbow" -4.22\pt 4.22\pt 0.00\pt 7.50\pt - "reverseturn" "\\reverseturn" -6.15\pt 6.15\pt -2.98\pt 2.98\pt - "turn" "\\turn" -6.15\pt 6.15\pt -2.98\pt 2.98\pt - "trill" "\\trill" -5.62\pt 5.62\pt 0.00\pt 12.66\pt - "upedalheel" "\\upedalheel" -2.81\pt 2.81\pt -2.81\pt 3.75\pt - "dpedalheel" "\\dpedalheel" -2.81\pt 2.81\pt -3.75\pt 2.81\pt - "upedaltoe" "\\upedaltoe" -2.81\pt 2.81\pt 0.00\pt 8.44\pt - "dpedaltoe" "\\dpedaltoe" -2.81\pt 2.81\pt -8.44\pt 0.00\pt - "flageolet" "\\flageolet" -3.00\pt 3.00\pt -3.00\pt 3.00\pt - "trilelement" "\\trilelement" -3.75\pt 1.47\pt -2.81\pt 2.81\pt - "prall" "\\prall" -6.36\pt 6.36\pt -2.81\pt 2.81\pt - "mordent" "\\mordent" -6.36\pt 6.36\pt -2.81\pt 2.81\pt - "prallprall" "\\prallprall" -8.97\pt 8.97\pt -2.81\pt 2.81\pt - "prallmordent" "\\prallmordent" -8.97\pt 8.97\pt -2.81\pt 2.81\pt - "upprall" "\\upprall" -8.97\pt 8.97\pt -2.81\pt 2.81\pt - "downprall" "\\downprall" -8.97\pt 8.97\pt -2.81\pt 2.81\pt - } - "flags" = \table { - "u3" "\\eighthflag" -0.28\pt 6.94\pt -17.24\pt 0.28\pt - "u4" "\\sixteenthflag" -0.28\pt 6.94\pt -20.05\pt 0.28\pt - "u5" "\\thirtysecondflag" -0.28\pt 6.94\pt -24.27\pt 0.28\pt - "u6" "\\sixtyfourthflag" -0.28\pt 6.94\pt -29.90\pt 0.28\pt - "d3" "\\deighthflag" -0.28\pt 7.68\pt -0.28\pt 16.40\pt - "d4" "\\dsixteenthflag" -0.28\pt 7.68\pt -0.28\pt 17.24\pt - "d5" "\\dthirtysecondflag" -0.28\pt 7.68\pt -0.28\pt 22.02\pt - "d6" "\\dsixtyfourthflag" -0.28\pt 7.68\pt -0.28\pt 24.83\pt - } - "clefs" = \table { - "alto" "\\altoclef" -5.62\pt 20.94\pt -11.25\pt 11.25\pt - "alto_change" "\\caltoclef" -4.50\pt 16.75\pt -9.00\pt 9.00\pt - "bass" "\\bassclef" -2.81\pt 20.25\pt -14.06\pt 5.62\pt - "bass_change" "\\cbassclef" -2.25\pt 16.20\pt -11.25\pt 4.50\pt - "violin" "\\violinclef" -4.90\pt 21.02\pt -16.88\pt 28.12\pt - "violin_change" "\\cviolinclef" -4.26\pt 16.48\pt -13.50\pt 22.50\pt - } - % } % $name diff --git a/init/feta26.ly b/init/feta26.ly deleted file mode 100644 index 2600e09740..0000000000 --- a/init/feta26.ly +++ /dev/null @@ -1,89 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta26.log -% name=\symboltables { - "rests" = \table { - "0" "\\wholerest" 0.00\pt 9.75\pt -4.06\pt 0.00\pt - "1" "\\halfrest" 0.00\pt 9.75\pt 0.00\pt 4.06\pt - "0o" "\\outsidewholerest" -4.06\pt 13.81\pt -4.06\pt 0.65\pt - "1o" "\\outsidehalfrest" -4.06\pt 13.81\pt -0.65\pt 4.06\pt - "2" "\\quartrest" 0.00\pt 7.02\pt 4.88\pt 23.40\pt - "3" "\\eighthrest" 0.00\pt 8.67\pt 6.50\pt 18.47\pt - "4" "\\sixteenthrest" 0.00\pt 10.08\pt 0.00\pt 18.47\pt - "5" "\\thirtysecondrest" 0.00\pt 11.38\pt 0.00\pt 24.97\pt - "6" "\\sixtyfourthrest" 0.00\pt 12.20\pt 0.00\pt 31.47\pt - "7" "\\hundredtwentyeighthrest" 0.00\pt 13.58\pt 0.00\pt 37.97\pt - } - "accidentals" = \table { - "1" "\\sharp" 0.00\pt 7.15\pt -9.75\pt 9.75\pt - "0" "\\natural" 0.00\pt 4.33\pt -9.75\pt 9.75\pt - "-1" "\\flat" -0.78\pt 5.20\pt -3.25\pt 13.00\pt - "-2" "\\flatflat" -0.78\pt 9.42\pt -3.25\pt 13.00\pt - "2" "\\sharpsharp" 0.00\pt 6.50\pt -3.25\pt 3.25\pt - } - "dots" = \table { - "dot" "\\dot" 0.00\pt 2.92\pt -1.46\pt 1.46\pt - "repeatcolon" "\\repeatcolon" 0.00\pt 2.92\pt -3.25\pt 3.25\pt - } - "balls" = \table { - "-1" "\\brevisball" 0.00\pt 13.00\pt -3.58\pt 3.58\pt - "-1l" "\\brevisledger" -3.25\pt 16.25\pt -0.65\pt 0.65\pt - "-2" "\\longaball" 0.00\pt 13.00\pt -3.58\pt 3.58\pt - "-2l" "\\longaledger" -3.25\pt 16.25\pt -0.65\pt 0.65\pt - "0" "\\wholeball" 0.00\pt 12.87\pt -3.58\pt 3.58\pt - "0l" "\\wholeledger" -3.22\pt 16.09\pt -0.65\pt 0.65\pt - "1" "\\halfball" 0.00\pt 8.95\pt -3.58\pt 3.58\pt - "1l" "\\halfledger" -2.24\pt 11.19\pt -0.65\pt 0.65\pt - "2" "\\quartball" 0.00\pt 8.59\pt -3.58\pt 3.58\pt - "2l" "\\quartledger" -2.15\pt 10.73\pt -0.65\pt 0.65\pt - } - "scripts" = \table { - "ufermata" "\\ufermata" -8.61\pt 8.61\pt -0.49\pt 9.43\pt - "dfermata" "\\dfermata" -8.61\pt 8.61\pt -9.43\pt 0.49\pt - "sforzato" "\\sforzatoaccent" -5.85\pt 5.85\pt -3.25\pt 3.25\pt - "staccato" "\\staccato" -0.98\pt 0.98\pt -0.98\pt 0.98\pt - "ustaccatissimo" "\\ustaccatissimo" -1.30\pt 1.30\pt -0.20\pt 6.50\pt - "dstaccatissimo" "\\dstaccatissimo" -1.30\pt 1.30\pt -6.50\pt 0.20\pt - "tenuto" "\\tenuto" -5.85\pt 5.85\pt -0.39\pt 0.39\pt - "umarcato" "\\umarcato" -3.25\pt 3.25\pt 0.00\pt 7.15\pt - "dmarcato" "\\dmarcato" -3.25\pt 3.25\pt -7.15\pt 0.00\pt - "open" "\\ouvert" -2.60\pt 2.60\pt -3.25\pt 3.25\pt - "stopped" "\\plusstop" -3.58\pt 3.58\pt -3.58\pt 3.58\pt - "upbow" "\\upbow" -4.23\pt 4.23\pt 0.00\pt 13.52\pt - "downbow" "\\downbow" -4.88\pt 4.88\pt 0.00\pt 8.67\pt - "reverseturn" "\\reverseturn" -7.11\pt 7.11\pt -3.44\pt 3.44\pt - "turn" "\\turn" -7.11\pt 7.11\pt -3.44\pt 3.44\pt - "trill" "\\trill" -6.50\pt 6.50\pt 0.00\pt 14.62\pt - "upedalheel" "\\upedalheel" -3.25\pt 3.25\pt -3.25\pt 4.33\pt - "dpedalheel" "\\dpedalheel" -3.25\pt 3.25\pt -4.33\pt 3.25\pt - "upedaltoe" "\\upedaltoe" -3.25\pt 3.25\pt 0.00\pt 9.75\pt - "dpedaltoe" "\\dpedaltoe" -3.25\pt 3.25\pt -9.75\pt 0.00\pt - "flageolet" "\\flageolet" -3.47\pt 3.47\pt -3.47\pt 3.47\pt - "trilelement" "\\trilelement" -4.33\pt 1.70\pt -3.25\pt 3.25\pt - "prall" "\\prall" -7.35\pt 7.35\pt -3.25\pt 3.25\pt - "mordent" "\\mordent" -7.35\pt 7.35\pt -3.25\pt 3.25\pt - "prallprall" "\\prallprall" -10.37\pt 10.37\pt -3.25\pt 3.25\pt - "prallmordent" "\\prallmordent" -10.37\pt 10.37\pt -3.25\pt 3.25\pt - "upprall" "\\upprall" -10.37\pt 10.37\pt -3.25\pt 3.25\pt - "downprall" "\\downprall" -10.37\pt 10.37\pt -3.25\pt 3.25\pt - } - "flags" = \table { - "u3" "\\eighthflag" -0.33\pt 8.02\pt -19.92\pt 0.33\pt - "u4" "\\sixteenthflag" -0.33\pt 8.02\pt -23.17\pt 0.33\pt - "u5" "\\thirtysecondflag" -0.33\pt 8.02\pt -28.05\pt 0.33\pt - "u6" "\\sixtyfourthflag" -0.33\pt 8.02\pt -34.55\pt 0.33\pt - "d3" "\\deighthflag" -0.33\pt 8.88\pt -0.33\pt 18.95\pt - "d4" "\\dsixteenthflag" -0.33\pt 8.88\pt -0.33\pt 19.92\pt - "d5" "\\dthirtysecondflag" -0.33\pt 8.88\pt -0.33\pt 25.45\pt - "d6" "\\dsixtyfourthflag" -0.33\pt 8.88\pt -0.33\pt 28.70\pt - } - "clefs" = \table { - "alto" "\\altoclef" -6.50\pt 24.19\pt -13.00\pt 13.00\pt - "alto_change" "\\caltoclef" -5.20\pt 19.36\pt -10.40\pt 10.40\pt - "bass" "\\bassclef" -3.25\pt 23.40\pt -16.25\pt 6.50\pt - "bass_change" "\\cbassclef" -2.60\pt 18.72\pt -13.00\pt 5.20\pt - "violin" "\\violinclef" -5.66\pt 24.29\pt -19.50\pt 32.50\pt - "violin_change" "\\cviolinclef" -4.92\pt 19.04\pt -15.60\pt 26.00\pt - } - % } % $name diff --git a/init/table11.ly b/init/table11.ly index e2ed204085..34bffcc63c 100644 --- a/init/table11.ly +++ b/init/table11.ly @@ -16,6 +16,7 @@ table_eleven = \symboltables { "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 } diff --git a/init/table13.ly b/init/table13.ly index 757778437f..d8d64fff07 100644 --- a/init/table13.ly +++ b/init/table13.ly @@ -16,6 +16,7 @@ table_thirteen = \symboltables { "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 } diff --git a/init/table16.ly b/init/table16.ly index 8ad75392b2..c78d4be45a 100644 --- a/init/table16.ly +++ b/init/table16.ly @@ -16,6 +16,7 @@ table_sixteen= "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 } "dynamics" = \table { diff --git a/init/table20.ly b/init/table20.ly index eee1669ee8..5206821581 100644 --- a/init/table20.ly +++ b/init/table20.ly @@ -17,6 +17,7 @@ table_twenty = "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt "italic" "\setitalic{%}" 0.0\pt 7.5\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 } diff --git a/init/table26.ly b/init/table26.ly index ace2e1026e..93d9bd645a 100644 --- a/init/table26.ly +++ b/init/table26.ly @@ -16,6 +16,7 @@ table_twentysix = \symboltables { "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 } diff --git a/input/Makefile b/input/Makefile index 45c1320de0..4167e225f9 100644 --- a/input/Makefile +++ b/input/Makefile @@ -5,21 +5,10 @@ depth = .. # -build = ./$(depth)/lily/$(outdir)/.build +SUBDIRS=test bugs -# generic stuff/Makefile -# -include ./$(depth)/make/Include.make -# - -# list of distribution files: -# -LYFILES = $(wildcard *.ly) -TEXFILES = $(wildcard *.tex) -M4FILES = $(wildcard *.m4) -DISTFILES = Makefile TODO $(LYFILES) $(TEXFILES) $(wildcard *.m4) -# +include $(depth)/make/Mutopia.make -OUTFILES = $(addprefix $(outdir)/,$(M4FILES:%.m4=%)) +WWW_examples=twinkle-pop praeludium-fuga-E cadenza twinkle -all: $(OUTFILES) +include $(depth)/make/WWW.make diff --git a/input/TODO b/input/TODO deleted file mode 100644 index d1af953ae3..0000000000 --- a/input/TODO +++ /dev/null @@ -1,5 +0,0 @@ - - - neaten/structure examples - - - rename/split into test/examples? - diff --git a/input/bugs/Makefile b/input/bugs/Makefile new file mode 100644 index 0000000000..b03bae72a4 --- /dev/null +++ b/input/bugs/Makefile @@ -0,0 +1,9 @@ +# input/Makefile + +# subdir level: +# +depth = ../.. +# + + +include $(depth)/make/Mutopia.make diff --git a/input/beam-bug.ly b/input/bugs/beam-bug.ly similarity index 100% rename from input/beam-bug.ly rename to input/bugs/beam-bug.ly diff --git a/input/bugs/out/dummy.dep b/input/bugs/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/input/slur-bug.ly b/input/bugs/slur-bug.ly similarity index 100% rename from input/slur-bug.ly rename to input/bugs/slur-bug.ly diff --git a/input/part.ly b/input/part.ly new file mode 100644 index 0000000000..39737f22ff --- /dev/null +++ b/input/part.ly @@ -0,0 +1,50 @@ +part = \melodic{ + \octave c; + c c c c + r1*3 + c4 c c c + c c c c + c c c c + c c c c +} + +a4 = \paper{ + linewidth= 80.\mm; + Staff = \translator { + \type "Engraver_group_engraver"; + defaultclef = violin; + \consists "Bar_engraver"; + \consists "Clef_engraver"; + \consists "Key_engraver"; + \consists "Meter_engraver"; + \consists "Local_key_engraver"; + \consists "Staff_sym_engraver"; + \consists "Collision_engraver"; + \consists "Rest_collision_engraver"; + \consists "Bar_column_engraver"; + \consists "Bar_number_engraver"; + \consists "Separating_line_group_engraver"; + \consists "Line_group_engraver"; + \accepts "Voice"; + } +} + +\score{ + < + \melodic{ + \property Score.part = 1 + \part + } + > + \paper{\a4} +} + +\score{ + < + \melodic{ + \property Score.part = 0 + \part + } + > + \paper{\a4} +} diff --git a/input/test/Makefile b/input/test/Makefile new file mode 100644 index 0000000000..b03bae72a4 --- /dev/null +++ b/input/test/Makefile @@ -0,0 +1,9 @@ +# input/Makefile + +# subdir level: +# +depth = ../.. +# + + +include $(depth)/make/Mutopia.make diff --git a/input/abbrev.ly b/input/test/abbrev.ly similarity index 100% rename from input/abbrev.ly rename to input/test/abbrev.ly diff --git a/input/beams.ly b/input/test/beams.ly similarity index 100% rename from input/beams.ly rename to input/test/beams.ly diff --git a/input/clefs.ly b/input/test/clefs.ly similarity index 100% rename from input/clefs.ly rename to input/test/clefs.ly diff --git a/input/collisions.ly b/input/test/collisions.ly similarity index 100% rename from input/collisions.ly rename to input/test/collisions.ly diff --git a/input/denneboom.ly b/input/test/denneboom.ly similarity index 100% rename from input/denneboom.ly rename to input/test/denneboom.ly diff --git a/input/font-body.ly b/input/test/font-body.ly similarity index 100% rename from input/font-body.ly rename to input/test/font-body.ly diff --git a/input/font.ly b/input/test/font.ly similarity index 100% rename from input/font.ly rename to input/test/font.ly diff --git a/input/font11.ly b/input/test/font11.ly similarity index 100% rename from input/font11.ly rename to input/test/font11.ly diff --git a/input/font13.ly b/input/test/font13.ly similarity index 100% rename from input/font13.ly rename to input/test/font13.ly diff --git a/input/font16.ly b/input/test/font16.ly similarity index 100% rename from input/font16.ly rename to input/test/font16.ly diff --git a/input/font20.ly b/input/test/font20.ly similarity index 100% rename from input/font20.ly rename to input/test/font20.ly diff --git a/input/font26.ly b/input/test/font26.ly similarity index 100% rename from input/font26.ly rename to input/test/font26.ly diff --git a/input/gourlay.ly b/input/test/gourlay.ly similarity index 100% rename from input/gourlay.ly rename to input/test/gourlay.ly diff --git a/input/test/out/dummy.dep b/input/test/out/dummy.dep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/input/sleur.ly b/input/test/sleur.ly similarity index 92% rename from input/sleur.ly rename to input/test/sleur.ly index 4dc4e08f6d..9ea0df5912 100644 --- a/input/sleur.ly +++ b/input/test/sleur.ly @@ -159,6 +159,18 @@ bug = \melodic{ c' () b () c' c' } +clipping = \melodic{ + \octave 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 +} + \score{ \melodic{ % use blend for fast check @@ -173,6 +185,7 @@ bug = \melodic{ \tiltup \tiltdown \bug + \clipping % } % use broken with small linewidth %\broken diff --git a/input/slurs.ly b/input/test/slurs.ly similarity index 100% rename from input/slurs.ly rename to input/test/slurs.ly diff --git a/input/spacing.ly b/input/test/spacing.ly similarity index 100% rename from input/spacing.ly rename to input/test/spacing.ly diff --git a/input/stem.ly b/input/test/stem.ly similarity index 100% rename from input/stem.ly rename to input/test/stem.ly diff --git a/input/test-lyrics.ly b/input/test/test-lyrics.ly similarity index 100% rename from input/test-lyrics.ly rename to input/test/test-lyrics.ly diff --git a/lily/bar-grav.cc b/lily/bar-grav.cc index 4ca3bdac19..4b8e1d4472 100644 --- a/lily/bar-grav.cc +++ b/lily/bar-grav.cc @@ -8,6 +8,8 @@ #include "bar-grav.hh" #include "bar.hh" +#include "musical-request.hh" +#include "multi-measure-rest.hh" #include "command-request.hh" #include "time-description.hh" #include "engraver-group.hh" @@ -44,6 +46,25 @@ Bar_engraver::create_bar () } } +void +Bar_engraver::acknowledge_element (Score_elem_info i) +{ + if (!bar_p_ || !i.elem_l_->is_type_b (Multi_measure_rest::static_name ())) + return; + +#if 0 + if (!bar_p_ || !i.req_l_ || !i.req_l_->musical () + || !i.req_l_->musical ()->multi_measure ()) + return; + + // would this be enough? + //urg segfault + bar_p_->unlink (); + delete bar_p_; + bar_p_ = 0; +#endif +} + void Bar_engraver::do_creation_processing () { diff --git a/lily/bezier.cc b/lily/bezier.cc index f261d37c28..bb360581e2 100644 --- a/lily/bezier.cc +++ b/lily/bezier.cc @@ -51,14 +51,14 @@ void Curve::rotate (Real phi) { Offset rot (complex_exp (Offset (0, phi))); - for (int i = 1; i < size (); i++) + for (int i = 0; i < size (); i++) (*this)[i] = complex_multiply (rot, (*this)[i]); } void Curve::translate (Offset o) { - for (int i = 1; i < size (); i++) + for (int i = 0; i < size (); i++) (*this)[i] += o; } @@ -94,8 +94,6 @@ Bezier::set (Array points) Real Bezier::y (Real x) { -// if (x <= curve_[0].x ()) -// return curve_[0].y (); for (int i = 1; i < curve_.size (); i++ ) { if (x < curve_[i].x () || (i == curve_.size () - 1)) @@ -103,7 +101,7 @@ Bezier::y (Real x) Offset z1 = curve_[i-1]; Offset z2 = curve_[i]; Real multiplier = (x - z2.x ()) / (z1.x () - z2.x ()); - Real y = z1.y () * multiplier + (1.0 - multiplier) z2.y(); + Real y = z1.y () * multiplier + (1.0 - multiplier) * z2.y(); return y; } @@ -207,18 +205,129 @@ void Bezier_bow::calc () { transform (); - calc_default (0); - calc_bezier (); + + calc_controls (); + + transform_controls_back (); +} + +/* + [TODO] + * see if it works + * document in Documentation/fonts.tex + */ + +/* + Clipping + + This function tries to address two issues: + * the tangents of the slur should always point inwards + in the actual slur, i.e. *after rotating back*. + * slurs shouldn't be too high ( <= 1.5 staffheight?) + + We could calculate the tangent of the bezier curve from + both ends going inward, and clip the slur at the point + where the tangent (after rotation) points up (or inward + with a certain maximum angle). - if (check_fit_bo ()) - calc_return (0, 0); + However, we assume that real clipping is not the best + answer. We expect that moving the outer control point up + if the slur becomes too high will result in a nicer slur + after recalculation. + + Knowing that the tangent is the line through the first + two control points, we'll clip (move the outer control + point upwards) too if the tangent points outwards. + */ + +bool +Bezier_bow::calc_clipping () +{ + if (!experimental_features_global_b) + return false; +#ifndef STANDALONE + Real staffsize_f = paper_l_->get_var ("barsize"); +#else + Real staffsize_f = STAFFHEIGHT; +#endif + + Real clip_h = staffsize_f; + Real begin_h = control_[1].y () - control_[0].y (); + Real end_h = control_[2].y () - control_[3].y (); + Real begin_dy = begin_h - clip_h; + Real end_dy = end_h - clip_h; + + Real pi = M_PI; + Real begin_alpha = (control_[1] - control_[0]).arg () + alpha_; + Real end_alpha = pi - (control_[2] - control_[3]).arg () - alpha_; + + Real max_alpha = 1.1 * pi/2; + if ((begin_dy < 0) && (end_dy < 0) + && (begin_alpha < max_alpha) && (end_alpha < max_alpha)) + return false; + + encompass_.rotate (alpha_); + // ugh + origin_.y () *= dir_; + encompass_.translate (origin_); + + bool again = true; + //ugh + if ((begin_dy > 0) || (end_dy > 0)) + { + Real dy = (begin_dy + end_dy) / 4; + dy *= cos (alpha_); + encompass_[0].y () += dy; + encompass_[encompass_.size () - 1].y () += dy; + } else { - calc_controls (); - blow_fit (); + //ugh + Real c = -0.4; + if (begin_alpha >= max_alpha) + begin_dy = c * begin_alpha / max_alpha * begin_h; + if (end_alpha >= max_alpha) + end_dy = c * end_alpha / max_alpha * end_h; + encompass_[0].y () += begin_dy; + encompass_[encompass_.size () - 1].y () += end_dy; + + Offset delta = encompass_[encompass_.size () - 1] - encompass_[0]; + alpha_ = delta.arg (); + alpha_ *= dir_; +// again = false; } - transform_controls_back (); + origin_ = encompass_[0]; + encompass_.translate (-origin_); + // ugh + origin_.y () *= dir_; + encompass_.rotate (-alpha_); + + return again; +} + +void +Bezier_bow::calc_controls () +{ + for (int i = 0; i < 3; i++) + { + calc_default (0); + calc_bezier (); + + if (check_fit_bo ()) + { + calc_return (0, 0); + return; + } + calc_tangent_controls (); + blow_fit (); + + // ugh + blow_fit (); + + if (!calc_clipping ()) + return; + } } void @@ -239,12 +348,10 @@ Bezier_bow::calc_return (Real begin_alpha, Real end_alpha) } /* - [TODO] - Document algorithm in: See Documentation/fonts.tex */ void -Bezier_bow::calc_controls () +Bezier_bow::calc_tangent_controls () { Offset ijk_p (control_[3].x () / 2, control_[1].y ()); SLUR_DOUT << "ijk: " << ijk_p.x () << ", " << ijk_p.y () << endl; @@ -370,8 +477,8 @@ Bezier_bow::transform () encompass_.translate (-origin_); Offset delta = encompass_[encompass_.size () - 1] - encompass_[0]; - alpha_ = delta.arg (); + encompass_.rotate (-alpha_); if (dir_ == DOWN) @@ -383,6 +490,7 @@ Bezier_bow::transform_controls_back () { // silly name; let's transform encompass back too // to allow recalculation without re-set()ting encompass array + if (dir_ == DOWN) { control_.flipy (); @@ -398,6 +506,7 @@ Bezier_bow::transform_controls_back () encompass_.rotate (alpha_); encompass_.translate (origin_); + } /* @@ -425,11 +534,20 @@ Bezier_bow::calc_default (Real h) Real indent = alpha * atan (beta * b); Real height = indent + h; +#define RESIZE_ICE +#ifndef RESIZE_ICE Array control; control.push (Offset (0, 0)); control.push (Offset (indent, height)); control.push (Offset (b - indent, height)); control.push (Offset (b, 0)); +#else + Array control (4); + control[0] = Offset (0, 0); + control[1] = Offset (indent, height); + control[2] = Offset (b - indent, height); + control[3] = Offset (b, 0); +#endif Bezier::set (control); } diff --git a/lily/bow.cc b/lily/bow.cc index 8be81c4f61..30e82e05e2 100644 --- a/lily/bow.cc +++ b/lily/bow.cc @@ -26,15 +26,13 @@ Bow::brew_molecule_p () const { Molecule* mol_p = new Molecule; - Real dy_f = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT]; - - Real dx_f = width ().length (); - dx_f += (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]); - - Atom a = paper ()->lookup_l ()->slur (get_controls ()); + Array c = get_controls (); + Atom a = paper ()->lookup_l ()->slur (c); +// a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT])); + a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT] - c[0].y ())); - a.translate (Offset (dx_f + dx_f_drul_[LEFT], dy_f + dy_f_drul_[LEFT])); mol_p->add (a); + return mol_p; } diff --git a/lily/clef-item.cc b/lily/clef-item.cc index 0c5c56eb22..0d1a185923 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -6,6 +6,7 @@ (c) 1997 Han-Wen Nienhuys */ +#include #include "clef-item.hh" #include "string.hh" #include "molecule.hh" @@ -55,7 +56,7 @@ Clef_item::read (String t) else if (t == "G" || t == "G2" || t == "treble") { symbol_ = "violin"; - y_position_i_ == -2; + y_position_i_ = -2; } else if (t == "french" || t == "G1") { diff --git a/lily/include/bar-grav.hh b/lily/include/bar-grav.hh index 28dae424ff..d62fb3ecea 100644 --- a/lily/include/bar-grav.hh +++ b/lily/include/bar-grav.hh @@ -26,6 +26,7 @@ public: protected: + virtual void acknowledge_element (Score_elem_info); virtual void do_creation_processing (); virtual void do_removal_processing (); virtual bool do_try_request (Request *req_l); diff --git a/lily/include/bezier.hh b/lily/include/bezier.hh index d69fc98196..df6b3362cb 100644 --- a/lily/include/bezier.hh +++ b/lily/include/bezier.hh @@ -53,9 +53,11 @@ public: void calc (); Real calc_f (Real height); void calc_bezier (); + bool calc_clipping (); void calc_controls (); void calc_default (Real h); void calc_return (Real begin_alpha, Real end_alpha); + void calc_tangent_controls (); bool check_fit_bo (); Real check_fit_f (); void set (Array points, int dir); diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 809bb015ca..9adfb26c09 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -133,6 +133,9 @@ struct Midi_track; struct Midi_walker; struct Mixed_qp; struct Molecule; +struct Multi_measure_rest; +struct Multi_measure_rest_req; +struct Multi_measure_rest_engraver; struct Music_general_chord; struct Musical_script_req; struct Music_voice; diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index fa4463146e..4e924397b1 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -35,7 +35,6 @@ struct Lookup { /// round slope to closest TeXslope Atom beam (Real&,Real, Real) const; Atom ps_beam (Real, Real, Real)const; - Atom tex_beam (Real&, Real) const; Atom streepje (int type) const; diff --git a/lily/include/main.hh b/lily/include/main.hh index ce4cfe76a4..646f82638a 100644 --- a/lily/include/main.hh +++ b/lily/include/main.hh @@ -24,8 +24,6 @@ extern bool no_paper_global_b; extern bool no_timestamps_global_b; extern int exit_status_i_; extern bool experimental_features_global_b; -extern bool postscript_global_b; -extern bool embedded_mf_global_b; extern String default_outname_base_global; extern String default_outname_suffix_global; diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh index cd822d1ac2..e46153c9f7 100644 --- a/lily/include/musical-request.hh +++ b/lily/include/musical-request.hh @@ -40,6 +40,7 @@ public: 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); }; @@ -84,7 +85,6 @@ struct Abbreviation_req : public Musical_req { class Blank_req : public Spacing_req, Rhythmic_req { public: REQUESTMETHODS(Spacing_req, spacing); - }; /// Put a text above or below (?) this staff. @@ -156,7 +156,14 @@ public: REQUESTMETHODS(Rest_req,rest); }; - +/** + Part: typeset a measure with the number of measures rest + Score: typeset all individual measures ass full rests + */ +class Multi_measure_rest_req : public Rhythmic_req { +public: + REQUESTMETHODS(Multi_measure_rest_req, multi_measure); +}; /** Requests to start or stop something. diff --git a/lily/include/timing-grav.hh b/lily/include/timing-grav.hh index c73ccdd83f..4c0c431bcf 100644 --- a/lily/include/timing-grav.hh +++ b/lily/include/timing-grav.hh @@ -18,6 +18,7 @@ class Timing_engraver : public Timing_translator, public Engraver { protected: + virtual void acknowledge_element (Score_elem_info i); virtual void fill_staff_info (Staff_info&); virtual Engraver * engraver_l () { return Engraver::engraver_l (); } public: diff --git a/lily/include/timing-translator.hh b/lily/include/timing-translator.hh index cd8248aaf0..02da3a2488 100644 --- a/lily/include/timing-translator.hh +++ b/lily/include/timing-translator.hh @@ -32,5 +32,7 @@ protected: virtual void do_process_requests(); virtual void do_pre_move_processing(); virtual void do_post_move_processing(); + + bool mmrest_b_; }; #endif // TIMING_TRANSLATOR_HH diff --git a/lily/ineq-constrained-qp.cc b/lily/ineq-constrained-qp.cc index f1cfebfdd2..4ff8adcc20 100644 --- a/lily/ineq-constrained-qp.cc +++ b/lily/ineq-constrained-qp.cc @@ -12,7 +12,7 @@ #include "main.hh" /* - MAy be this also should go into a library + May be this also should go into a library */ const int MAXITER=100; // qlpsolve.hh @@ -113,10 +113,6 @@ Ineq_constrained_qp::constraint_solve (Vector start) const if (!dim()) return Vector (0); - // experimental - if (quad_.dim() > 10) - quad_.try_set_band(); - Active_constraints act (this); act.OK(); diff --git a/lily/lookup.cc b/lily/lookup.cc index 5b0054084d..b0212b2f91 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -149,31 +149,26 @@ Lookup::flag (int j, Direction d) const Atom Lookup::slur (Array controls) const { - assert (postscript_global_b); assert (controls.size () == 8); String ps = "\\embeddedps{\n"; -#if 1 - for (int i = 1; i < 4; i++) - ps += String_convert::double_str (controls[i].x ()) + " " - + String_convert::double_str (controls[i].y ()) + " "; + Real dx = controls[3].x () - controls[0].x (); + Real dy = controls[3].y () - controls[0].y (); - Real dx = controls[3].x (); - Real dy = controls[3].y (); for (int i = 5; i < 8; i++) - ps += String_convert::double_str (controls[i].x () - dx) + " " - + String_convert::double_str (controls[i].y () - dy) + " "; -#else - // this would be nice - for (int i = 1; i < 4; i++) ps += String_convert::double_str (controls[i].x ()) + " " + String_convert::double_str (controls[i].y ()) + " "; - for (int i = 5; i < 8; i++) + 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 ()) + " "; -#endif + + ps += String_convert::double_str (controls[0].x ()) + " " + + String_convert::double_str (controls[0].y ()) + " "; ps += " draw_slur}"; @@ -199,41 +194,20 @@ Lookup::streepje (int type) const Atom Lookup::hairpin (Real &wid, bool decresc, bool continued) const { - bool embedded_b = postscript_global_b; String embed; Atom ret; Real height = paper_l_->get_var ("barsize") / 6; - if (embedded_b) - { - embed = "\\embeddedps{\n" ; - embed += String (wid) + " " + embed = "\\embeddedps{\n" ; + embed += String (wid) + " " + String (height) + " " - + String (continued ? height/2 : 0) + - + " draw_" + String(decresc ? "de" : "") + "cresc}\n"; - ret.tex_ = embed; - } - else - { - if (wid > 32 * 6 PT) - { - warning (_("Crescendo too long (") + print_dimen (wid) - +_( ") shrinking (ugh)")); - wid = 32*6 PT; - } - int idx = int (rint (wid / 6 PT)); - if (!idx) idx ++; - wid = idx*6 PT; - String idxstr = (decresc)? "decrescendosym" : "crescendosym"; - ret=(*symtables_p_)("param")->lookup (idxstr); - - Array a; - a.push (idx); - ret.tex_ = substitute_args (ret.tex_, a); - } - + + String (continued ? height/2 : 0) + + + " draw_" + String(decresc ? "de" : "") + "cresc}\n"; + ret.tex_ = embed; + + ret.dim_.x () = Interval (0,wid); ret.dim_.y () = Interval (-2*height,2*height); -// ret.translate_axis (ret.dim_[Y_AXIS][DOWN], Y_AXIS); + return ret; } @@ -308,8 +282,15 @@ Lookup::vbrace (Real &y) const Atom Lookup::vbracket (Real &y) const { + Atom psbracket; + psbracket.tex_ = String ("\\embeddedps{ ") + 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"); Interval ydims = bracket.dim_[Y_AXIS]; + + Real min_y = ydims[LEFT]; Real max_y = ydims[RIGHT]; Real step = 1.0 PT; diff --git a/lily/main.cc b/lily/main.cc index 4be0a9a367..743b8e6a9e 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -26,9 +26,8 @@ Sources* source_global_l = 0; bool no_paper_global_b = false; bool no_timestamps_global_b = false; -bool embedded_mf_global_b = false; bool experimental_features_global_b = false; -bool postscript_global_b = true; + int exit_status_i_; void destill_inname (String &name_str_r); @@ -42,7 +41,7 @@ Long_option_init theopts[] = { {1, "init", 'i'}, {1, "include", 'I'}, {0, "no-paper", 'M'}, - {0, "no-postscript", 'P'}, + {0, "no-timestamps", 'T'}, {0, "ignore-version", 'V'}, {0,0,0} @@ -65,7 +64,7 @@ usage () " -t, --test switch on experimental features\n" " -M, --no-paper produce midi output only\n" " -V, --ignore-version ignore mudela version\n" - " -P, --no-postscript don't use PostScript\n" + " -T, --no-timestamps don't timestamp the output\n" "\n" "GNU LilyPond was compiled with the following settings:\n") @@ -212,9 +211,6 @@ main (int argc, char **argv) case 'V': version_ignore_b = true; break; - case 'P': - postscript_global_b = false; - break; case 'd': set_debug (true); break; diff --git a/lily/musical-request.cc b/lily/musical-request.cc index a4e1146844..0def2d2f51 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -15,11 +15,11 @@ -IMPLEMENT_IS_TYPE_B1(Musical_req,Request); +IMPLEMENT_IS_TYPE_B1 (Musical_req,Request); void -Musical_req::do_print() const{} +Musical_req::do_print () const{} void -Tie_req::do_print() const{} +Tie_req::do_print () const{} /* *************** */ @@ -27,19 +27,19 @@ Tie_req::do_print() const{} -IMPLEMENT_IS_TYPE_B1(Span_req,Musical_req); +IMPLEMENT_IS_TYPE_B1 (Span_req,Musical_req); void -Span_req::do_print() const +Span_req::do_print () const { #ifndef NPRINT DOUT << spantype ; #endif } -IMPLEMENT_IS_TYPE_B1(Spacing_req,Request); +IMPLEMENT_IS_TYPE_B1 (Spacing_req,Request); -Spacing_req::Spacing_req() +Spacing_req::Spacing_req () { next = 0; distance = 0; @@ -47,7 +47,7 @@ Spacing_req::Spacing_req() } void -Spacing_req::do_print() const +Spacing_req::do_print () const { #ifndef NPRINT DOUT << "next " << next << "dist " << distance << "strength\n"; @@ -62,7 +62,7 @@ Abbreviation_req::Abbreviation_req () } void -Abbreviation_req::do_print() const +Abbreviation_req::do_print () const { #ifndef NPRINT DOUT << "type " << type_i_ << "\n"; @@ -70,16 +70,16 @@ Abbreviation_req::do_print() const } -IMPLEMENT_IS_TYPE_B2(Blank_req,Spacing_req,Rhythmic_req); +IMPLEMENT_IS_TYPE_B2 (Blank_req,Spacing_req,Rhythmic_req); void -Blank_req::do_print() const +Blank_req::do_print () const { - Spacing_req::do_print(); + Spacing_req::do_print (); } /* *************** */ -Melodic_req::Melodic_req() +Melodic_req::Melodic_req () { notename_i_ = 0; octave_i_ = 0; @@ -89,8 +89,8 @@ Melodic_req::Melodic_req() void Melodic_req::transpose (Melodic_req const * delta) { - int old_pitch = pitch(); - int delta_pitch = delta->pitch(); + int old_pitch = pitch (); + int delta_pitch = delta->pitch (); octave_i_ += delta->octave_i_; notename_i_ += delta->notename_i_; while (notename_i_ >= 7) @@ -99,22 +99,22 @@ Melodic_req::transpose (Melodic_req const * delta) octave_i_ ++; } - int new_pitch = pitch(); + int new_pitch = pitch (); int delta_acc = new_pitch - old_pitch - delta_pitch; accidental_i_ -= delta_acc; if (abs (accidental_i_) > 2) { - delta->warning (_("transposition makes accidental larger than 2")); + delta->warning (_ ("transposition makes accidental larger than 2")); } } -IMPLEMENT_IS_TYPE_B1(Melodic_req,Musical_req); +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->musical ()->melodic (); return !compare (*m, *this); } @@ -135,7 +135,7 @@ Melodic_req::compare (Melodic_req const &m1 , Melodic_req const&m2) } void -Melodic_req::do_print() const +Melodic_req::do_print () const { #ifndef NPRINT DOUT << "notename: " << notename_i_ @@ -144,7 +144,7 @@ Melodic_req::do_print() const } int -Melodic_req::height() const +Melodic_req::height () const { return notename_i_ + octave_i_*7; } @@ -155,7 +155,7 @@ Melodic_req::height() const static Byte pitch_byte_a[ ] = { 0, 2, 4, 5, 7, 9, 11 }; int -Melodic_req::pitch() const +Melodic_req::pitch () const { return pitch_byte_a[ notename_i_ % 7 ] + accidental_i_ + octave_i_ * 12; } @@ -164,13 +164,13 @@ Melodic_req::pitch() const int Rhythmic_req::compare (Rhythmic_req const &r1, Rhythmic_req const &r2) { - return (r1.duration() - r2.duration ()); + return (r1.duration () - r2.duration ()); } bool Rhythmic_req::do_equal_b (Request*r) const { - Rhythmic_req* rh = r->musical()->rhythmic (); + Rhythmic_req* rh = r->musical ()->rhythmic (); return !compare (*this, *rh); } @@ -181,26 +181,26 @@ Rhythmic_req::set_duration (Duration d) duration_ = d; } -Rhythmic_req::Rhythmic_req() +Rhythmic_req::Rhythmic_req () { } -IMPLEMENT_IS_TYPE_B1(Rhythmic_req,Musical_req); +IMPLEMENT_IS_TYPE_B1 (Rhythmic_req,Musical_req); void -Rhythmic_req::do_print() const +Rhythmic_req::do_print () const { #ifndef NPRINT - DOUT << "duration { " <span(); + Span_req * s = r->span (); return spantype == s->spantype; } -Span_req::Span_req() +Span_req::Span_req () { spantype = NOSPAN; } @@ -321,7 +331,7 @@ Span_req::Span_req() Script_req::Script_req (Script_req const&s) { dir_ = s.dir_; - scriptdef_p_ = s.scriptdef_p_ ? s.scriptdef_p_->clone() : 0; + scriptdef_p_ = s.scriptdef_p_ ? s.scriptdef_p_->clone () : 0; } /* @@ -332,47 +342,47 @@ 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->script (); return scriptdef_p_->equal_b (*s->scriptdef_p_); } -Script_req::Script_req() +Script_req::Script_req () { dir_ = CENTER; scriptdef_p_ = 0; } -IMPLEMENT_IS_TYPE_B1(Script_req,Request); +IMPLEMENT_IS_TYPE_B1 (Script_req,Request); void -Script_req::do_print() const +Script_req::do_print () const { #ifndef NPRINT DOUT << " dir " << dir_ ; - scriptdef_p_->print(); + scriptdef_p_->print (); #endif } void -Musical_script_req::do_print() const +Musical_script_req::do_print () const { - Script_req::do_print(); + Script_req::do_print (); } -IMPLEMENT_IS_TYPE_B2(Musical_script_req,Musical_req, Script_req); +IMPLEMENT_IS_TYPE_B2 (Musical_script_req,Musical_req, Script_req); -Script_req::~Script_req() +Script_req::~Script_req () { delete scriptdef_p_; } /* *************** */ -Text_req::~Text_req() +Text_req::~Text_req () { delete tdef_p_; tdef_p_ = 0; @@ -386,54 +396,54 @@ Text_req::Text_req (Text_req const& src) Text_req::Text_req (int dir_i, Text_def* tdef_p) { - dir_ = Direction(dir_i); + dir_ = Direction (dir_i); tdef_p_ = tdef_p; } -IMPLEMENT_IS_TYPE_B1(Text_req,Musical_req); +IMPLEMENT_IS_TYPE_B1 (Text_req,Musical_req); void -Text_req::do_print() const +Text_req::do_print () const { #ifndef NPRINT DOUT << " dir " << dir_ ; - tdef_p_->print(); + tdef_p_->print (); #endif } /* *************** */ -IMPLEMENT_IS_TYPE_B1(Skip_req,Musical_req); +IMPLEMENT_IS_TYPE_B1 (Skip_req,Musical_req); void -Skip_req::do_print() const +Skip_req::do_print () const { #ifndef NPRINT - DOUT << "duration: " << duration(); + DOUT << "duration: " << duration (); #endif } -IMPLEMENT_IS_TYPE_B1(Dynamic_req,Musical_req); +IMPLEMENT_IS_TYPE_B1 (Dynamic_req,Musical_req); void -Dynamic_req::do_print() const +Dynamic_req::do_print () const { - Musical_req::do_print(); + Musical_req::do_print (); } -IMPLEMENT_IS_TYPE_B1(Absolute_dynamic_req,Musical_req); +IMPLEMENT_IS_TYPE_B1 (Absolute_dynamic_req,Musical_req); void -Absolute_dynamic_req::do_print() const +Absolute_dynamic_req::do_print () const { #ifndef NPRINT - Dynamic_req::do_print(); + Dynamic_req::do_print (); DOUT << " loudness " <set_spot (here_input()); velt_p->add (skip_p); } + else if ((duration_p->plet_.type_i_ == 1) && (duration_p->plet_.iso_i_ > 1)) + { + Multi_measure_rest_req* m = new Multi_measure_rest_req; + plet_.iso_i_ = 1; + default_duration_.plet_.iso_i_ = 1; + m->duration_ = *duration_p; + m->set_spot (here_input()); + velt_p->add (m); + } else { Rest_req * rest_req_p = new Rest_req; diff --git a/lily/p-score.cc b/lily/p-score.cc index e53985fa4e..02033ab93e 100644 --- a/lily/p-score.cc +++ b/lily/p-score.cc @@ -227,8 +227,7 @@ Paper_score::tex_output () if (experimental_features_global_b) tex_out << "\\turnOnExperimentalFeatures%\n"; - if (postscript_global_b) - tex_out << "\\turnOnPostScript%\n"; + tex_out << "\\turnOnPostScript%\n"; super_elem_l_->output_all (); tex_out << "\n\\EndLilyPondOutput"; outputter_l_ = 0; diff --git a/lily/slur.cc b/lily/slur.cc index 3e8cbdfe26..69b49cde0a 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -183,10 +183,7 @@ Slur::get_encompass_offset_arr () const first = 0; left_x = spanned_drul_[LEFT]->width ().length (); left_x -= 2 * notewidth; -// left_y = 0; - Stem* stem = encompass_arr_[last]->stem_l_; - left_y = stem->dir_ == dir_ ? stem->stem_end_f () - : stem->stem_begin_f () + 0.5 * dir_; + left_y = encompass_arr_[last]->stem_l_->height ()[dir_]; dy = 0; } if (encompass_arr_.top () != spanned_drul_[RIGHT]) @@ -195,8 +192,15 @@ Slur::get_encompass_offset_arr () const dy = 0; } +#define RESIZE_ICE +#ifndef RESIZE_ICE Array notes; notes.push (Offset (0,0)); +#else + int n = last - first + 2; + Array notes (n); + notes[0] = Offset (0,0); +#endif for (int i = first; i < last; i++) { Stem* stem = encompass_arr_[i]->stem_l_; @@ -213,25 +217,27 @@ Slur::get_encompass_offset_arr () const x -= left_x; - Real y = stem->dir_ == dir_ ? stem->stem_end_f () - : stem->stem_begin_f () + 0.5 * dir_; + Real y = stem->height ()[dir_]; /* leave a gap: slur mustn't touch head/stem */ - y += 2.5 * dir_; + y += 2.5 * internote * dir_; - // ugh: huh? if (dir_ == DOWN) - y += 1.5 * dir_; + y += 1.5 * internote * dir_; - y *= internote; y -= left_y; +#ifndef RESIZE_ICE notes.push (Offset (x, y)); } - notes.push (Offset (dx, dy)); +#else + notes[i - first + 1] = Offset (x, y); + } + notes[n - 1] = Offset (dx, dy); +#endif return notes; } diff --git a/lily/spring-spacer.cc b/lily/spring-spacer.cc index e513e27407..db27da7950 100644 --- a/lily/spring-spacer.cc +++ b/lily/spring-spacer.cc @@ -253,6 +253,11 @@ Spring_spacer::make_matrices (Matrix &quad, Vector &lin, Real &c) const c += sqr (i->space_f_); } + // experimental + if (quad.dim() > 10) + quad.set_band(); + + } void @@ -268,7 +273,6 @@ void Spring_spacer::make_constraints (Mixed_qp& lp) const { int dim=cols_.size(); - int last_rank = cols_.top ().pcol_l_->rank_i (); for (int j=0; j < dim -1; j++) { diff --git a/lily/tex-beam.cc b/lily/tex-beam.cc index 6283f753ce..0a1de1398d 100644 --- a/lily/tex-beam.cc +++ b/lily/tex-beam.cc @@ -23,23 +23,6 @@ #include "string-convert.hh" #include "main.hh" -Atom -Lookup::beam_element (int sidx, int widx, Real slope) const -{ - String name = String("slope"); - Atom bs=(*symtables_p_)("beamslopes")->lookup (name); - - Array args; - args.push (sidx); - args.push (widx); - bs.tex_ = substitute_args (bs.tex_,args); - int w = 2 << widx; - Real width = w PT; - bs.dim_.x() = Interval (0,width); - bs.dim_.y() = Interval (0,width*slope); - return bs; -} - Atom Lookup::rule_symbol (Real height, Real width) const @@ -57,10 +40,8 @@ Lookup::rule_symbol (Real height, Real width) const Atom Lookup::beam(Real &slope, Real width, Real y_thick) const { - Atom a( postscript_global_b - ? ps_beam (slope, width, y_thick) - : tex_beam (slope, width)); + Atom a( ps_beam (slope, width, y_thick)); Real slope_y =slope * width; Real min_y = (0 ? slope_y) + y_thick/2; @@ -92,74 +73,8 @@ Lookup::ps_beam (Real slope, Real width, Real y_thickness)const name[i]= 'x'; - String mf = "\\embeddedmf{" + name + "}{\n"; - mf += "input feta-beum;\n"; - mf += "drawbeam(" + width_str + "," + slope_str + "," + thick_str + ");\n"; - mf += "end.\n"; - mf += "}\n"; Atom s; s.tex_ = ps; - if (embedded_mf_global_b) - s.tex_ += mf; - return s; } - -Atom -Lookup::tex_beam (Real &slope, Real width) const -{ - const Real MAX_SLOPE = 0.6; - const Real SLOPES = 20.0; - int sidx = 0; - if (abs (slope) > MAX_SLOPE) - { - WARN << _("beam too steep (") << slope << ")\n"; - slope = sign (slope) * MAX_SLOPE; - } - - sidx = int (rint (slope / MAX_SLOPE * SLOPES)); - slope = MAX_SLOPE * sidx / SLOPES; - - Interval xdims = (*symtables_p_)("beamslopes")->lookup ("slope").dim_[X_AXIS]; - Real min_wid = xdims[LEFT]; - Real max_wid = xdims[RIGHT]; - assert(max_wid > 0); - int widths = intlog2 (int (max_wid/min_wid)) + 1; - - if (width < min_wid) - { - WARN<<_("Beam too narrow. (") << print_dimen (width) <<")\n"; - width = min_wid; - } - - Real elemwidth = max_wid; - - int widx =widths - 1; - Molecule m; - while (elemwidth > width) - { - widx --; - elemwidth /= 2.0; - } - Real overlap = elemwidth/4; - Real last_x = width - elemwidth; - Real x = overlap; - Atom elem (beam_element (sidx * widths, widx, slope)); - m.add (elem); - while (x < last_x) - { - Atom a(elem); - a.translate (Offset (x-overlap, (x-overlap)*slope)); - m.add (a); - x += elemwidth - overlap; - } - Atom a(elem); - a.translate (Offset (last_x, (last_x) * slope)); - m.add (a); - - Atom ret; - ret.tex_ = m.TeX_string(); - - return ret; -} diff --git a/lily/timing-grav.cc b/lily/timing-grav.cc index 9b5ea11d9c..8da02d6161 100644 --- a/lily/timing-grav.cc +++ b/lily/timing-grav.cc @@ -8,8 +8,17 @@ #include "score-grav.hh" #include "timing-grav.hh" #include "command-request.hh" +#include "score-elem-info.hh" +#include "multi-measure-rest.hh" - +void +Timing_engraver::acknowledge_element (Score_elem_info i) +{ + if (!i.elem_l_->is_type_b (Multi_measure_rest::static_name ())) + return; + if (((Multi_measure_rest*)i.elem_l_->item ())->measures_i_) + mmrest_b_ = true; +} void Timing_engraver::fill_staff_info (Staff_info &inf) diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc index f294431972..de93a9206f 100644 --- a/lily/timing-translator.cc +++ b/lily/timing-translator.cc @@ -11,10 +11,12 @@ #include "command-request.hh" #include "translator-group.hh" #include "global-translator.hh" +#include "multi-measure-rest.hh" Timing_translator::Timing_translator () { default_grouping_ = Rhythmic_grouping (MInterval (0, 1), 4); // ugh + mmrest_b_ = false; } bool @@ -113,8 +115,9 @@ Timing_translator::do_pre_move_processing() Global_translator *global_l = daddy_trans_l_->ancestor_l (100)->global_l (); // ugh 100. - if (!time_.cadenza_b_) + if (!time_.cadenza_b_ && !mmrest_b_) global_l->add_moment_to_process (time_.next_bar_moment ()); +// mmrest_b_ = false; } IMPLEMENT_IS_TYPE_B1(Timing_translator, Translator); diff --git a/Documentation/Rules.make b/make/Docrules.make similarity index 76% rename from Documentation/Rules.make rename to make/Docrules.make index b8e14d7d8c..e66b3c8212 100644 --- a/Documentation/Rules.make +++ b/make/Docrules.make @@ -10,10 +10,6 @@ pod2groff=pod2man --center="LilyPond documentation" --section="0"\ $(outdir)/%.gif: %.xpm xpmtoppm $< | ppmtogif > $@ - -$(outdir)/%.ps: $(outdir)/%.dvi - dvips -o $@ $< - $(outdir)/%.dvi: $(outdir)/%.mudtex latex '\nonstopmode \input $<' mv $(notdir $@) $(outdir) @@ -27,8 +23,8 @@ $(outdir)/%.txt: $(outdir)/%.1 $(depth)/%.txt: $(outdir)/%.txt cp $< $@ -# perl 5.003/4 +# perl 5.003/4 POD2HTML5004=$(POD2HTML) --noindex --infile $< --outfile=$@; sh $(depth)/bin/add-URLs.sh $@ POD2HTML5003=$(POD2HTML) $< ; mv $(notdir $@) $(outdir)/ @@ -46,15 +42,3 @@ $(outdir)/%.5: %.pod $(outdir)/%.1: %.pod $(pod2groff) -$(outdir)/%.gz: $(outdir)/% - gzip -c9 $< > $@ - -name-stem= $(notdir $(basename $<)) - -$(outdir)/%.gif: $(outdir)/%.ps - sh $(depth)/bin/ps-to-gifs.sh $< - mv $(name-stem)-page*.gif $(outdir)/ - touch $@ - -$(outdir)/%.ly.txt: $(depth)/input/%.ly - ln -f $< $@ diff --git a/make/Install_outfiles.make b/make/Install_outfiles.make new file mode 100644 index 0000000000..e3da0a9ce5 --- /dev/null +++ b/make/Install_outfiles.make @@ -0,0 +1,16 @@ + + + +localinstall: localinstall-files + +localinstall-files: $(INSTALLATION_OUT_FILES) + $(INSTALL) -d $(INSTALLATION_DIR) + $(INSTALL) -m 644 $(INSTALLATION_OUT_FILES) $(INSTALLATION_DIR) + +localuninstall: localuninstall-files + +localuninstall-files: + for i in $(notdir $(INSTALLATION_OUT_FILES)) ; do \ + rm -f $(INSTALLATION_DIR)/$$i; \ + done + -rmdir $(INSTALLATION_DIR) diff --git a/make/Makefile b/make/Makefile index 52b9e55637..c50099ce31 100644 --- a/make/Makefile +++ b/make/Makefile @@ -15,14 +15,16 @@ depth = .. # identify module: # -NAME = make SUBDIRS = # two outdir files are distributed, since they make sense to have without running # configure and make. + +LSMENTRY=$(outdir)/lilypond.lsm +RPMSPEC=$(outdir)/lilypond.spec IN_FILES = $(wildcard *.in) EXTRA_DISTFILES = $(IN_FILES) -OUT_DISTFILES=$(outdir)/lilypond.spec $(outdir)/lilypond.lsm $(outdir)/lelievijver.lsm +OUT_DISTFILES= $(outdir)/lelievijver.lsm $(LSMENTRY) $(RPMSPEC) # # generic variables: @@ -32,13 +34,10 @@ include ./$(depth)/make/Files.make include ./$(depth)/make/Targets.make include ./$(depth)/make/Rules.make +default: $(RPMSPEC) $(LSMENTRY) -local-maintainerclean: - rm lilypond.spec $(wildcard *.lsm) - -spec: $(outdir)/lilypond.spec -rpmdocs=$(addprefix Documentation/out/, $(notdir $(shell ls $(depth)/Documentation/$(outdir)/*.txt)))\ +rpmdocs=$(addprefix Documentation/out/, $(notdir $(shell find $(depth)/Documentation/ -name '*.txt' ))) \ BUGS TODO NEWS DEDICATION ANNOUNCE README rpmmudocs=$(addprefix Documentation/, $(notdir $(shell ls $(depth)/Documentation/*.doc))) rpmdvis=$(rpmmudocs:.doc=.dvi) @@ -51,7 +50,7 @@ sed-date=sed 's!@DATE@!${date}!g' sed-examples = sed 's!@EXAMPLE_LYS@!${rpmexamples} ${rpmmudocs}!g' sed-docs=sed 's!@TEXT_DOCS@!${rpmdocs}!g' -$(outdir)/lilypond.spec: lilypond.spec.in $(depth)/VERSION +$(outdir)/%.spec: %.spec.in $(depth)/VERSION cat $< | $(sed-version) | $(sed-docs) | $(sed-examples) > $@ $(outdir)/%.lsm: %.lsm.in $(depth)/VERSION diff --git a/make/Manual.make b/make/Manual.make new file mode 100644 index 0000000000..2914e59159 --- /dev/null +++ b/make/Manual.make @@ -0,0 +1,16 @@ +MANFILES = lilypond convert-mudela mi2mu mudela-book +MANGROFF = $(addprefix $(outdir)/, $(addsuffix .$(SECTION))) + + + +localinstall: $(MANGROFFS) + $(INSTALL) -d $(mandir)/man$(SECTION) + $(INSTALL) -m 644 $(MANGROFFS) $(mandir)/man$(SECTION) + + +localuninstall: + (cd $(mandir)/man$(SECTION)/; rm -f $(MANGROFF)) + + + + diff --git a/make/Mutopia.make b/make/Mutopia.make index ec12e0599a..1da745a5b6 100644 --- a/make/Mutopia.make +++ b/make/Mutopia.make @@ -5,10 +5,26 @@ include $(depth)/make/Include.make LYFILES = $(wildcard *.ly) TEXFILES = $(wildcard *.tex) M4FILES = $(wildcard *.m4) -DISTFILES = Makefile $(LYFILES) $(TEXFILES) $(wildcard *.m4) +DISTFILES = Makefile $(EXTRA_DISTFILES) $(LYFILES) $(TEXFILES) $(wildcard *.m4) # OUTFILES = $(addprefix $(outdir)/,$(M4FILES:%.m4=%)) all: $(OUTFILES) + + +name-stem= $(notdir $(basename $<)) + +$(outdir)/%.gif: $(outdir)/%.ps + sh $(depth)/bin/ps-to-gifs.sh $< + mv $(name-stem)-page*.gif $(outdir)/ + touch $@ + +$(outdir)/%.ly.txt: %.ly + ln -f $< $@ + +$(outdir)/%.dvi: %.ly + (cd $(outdir); \ + LILYINCLUDE="..:$$LILYINCLUDE" ly2dvi ../$< ) + diff --git a/make/Rules.make b/make/Rules.make index f886422b03..4e4d335a77 100644 --- a/make/Rules.make +++ b/make/Rules.make @@ -44,7 +44,14 @@ $(outdir)/%: %.m4 %.dep: touch $@ +%.gz: % + gzip -c9 $< > $@ + $(depth)/%.txt: check-doc-deps rm -f $@ ln `find ${depth}/Documentation -name $@ -print|head -1 ` . + +$(outdir)/%.ps: $(outdir)/%.dvi + dvips -o $@ $< + diff --git a/make/Targets.make b/make/Targets.make index 0d4c0b505d..c696163f14 100644 --- a/make/Targets.make +++ b/make/Targets.make @@ -17,8 +17,10 @@ all: default # dependency list of executable: # -$(EXECUTABLE): $(OFILES) $(outdir)/version.hh - $(MAKE) $(MODULE_LIBDEPS) +$(EXECUTABLE): $(configheader) $(OFILES) $(outdir)/version.hh +ifdef MODULE_LIBDEPS + $(MAKE) $(MODULE_LIBDEPS) +endif ifdef STABLEOBS $(DO_STRIP) $(STABLEOBS) endif @@ -29,11 +31,11 @@ exe: $(EXECUTABLE) # dependency list of library: # -$(LIBRARY): $(OFILES) +$(LIBRARY): $(configheader) $(OFILES) $(AR_COMMAND) $(OFILES) $(RANLIB_COMMAND) -$(SHAREDLIBRARY): $(OFILES) $(MODULE_LIBDEPS) +$(SHAREDLIBRARY): $(configheader) $(OFILES) $(MODULE_LIBDEPS) $(LD_COMMAND) $(OFILES) -o $@.$(VERSION) rm -f $@ ln -sf $(outdir)/$(LIB_PREFIX)$(NAME).so.$(VERSION) $@.$(MAJOR_VERSION) @@ -44,11 +46,11 @@ lib: $(LIBRARY) # -make-all-outdirs: make-outdir +outdirs: outdir $(LOOP) -make-outdir: - -mkdir $(OUTDIR_NAME) +outdir: + -mkdir $(outdir) # be careful about deletion. clean: localclean @@ -225,6 +227,8 @@ check-rpm-doc-deps: check-mf-deps: $(MAKE) -C $(depth)/mf +$(configheader): $(depth)/$(configuration).hh + cp $< $@ diff --git a/make/Variables.make b/make/Variables.make index 2918aa5a33..60a2205ab9 100644 --- a/make/Variables.make +++ b/make/Variables.make @@ -5,7 +5,7 @@ # abstract # # do not change this file for site-wide extensions; please use -# make/$(OUTDIR_NAME)/Site.make; +# make/$(outdir)/Site.make; # # Any change in files in this directory (make/) would be distributed, if # you do make dist @@ -19,32 +19,41 @@ include $(depth)/make/Toplevel_version.make -ifeq (0,${MAKELEVEL}) - # Don't try to outsmart us, you puny computer! -MAKE:=$(MAKE) --no-builtin-rules +ifeq (0,${MAKELEVEL}) + MAKE:=$(MAKE) --no-builtin-rules endif -ifndef OUTDIR_NAME -OUTDIR_NAME=out + +ifndef config +configuration=config +else +configuration=config-$(config) endif +include $(depth)/$(configuration).make + # directory names: buildprefix=$(depth) -outdir=$(OUTDIR_NAME) + +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_NAME) -libout = $(buildprefix)/lib/$(OUTDIR_NAME) -lilyout = $(buildprefix)/lily/$(OUTDIR_NAME) -mi2muout = $(buildprefix)/mi2mu/$(OUTDIR_NAME) -makeout = $(buildprefix)/make/$(OUTDIR_NAME) -docout = $(buildprefix)/Documentation/$(OUTDIR_NAME) -binout = $(buildprefix)/bin/$(OUTDIR_NAME) +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 flower-dir = $(depth)/flower @@ -59,11 +68,10 @@ include-flower = $(depth)/flower/include rpm-sources = ${HOME}/rpms/SOURCES # -ifndef configuration -configuration=config -endif +configheader=$(outdir)/config.hh + + -include $(depth)/$(configuration).make # user settings: # @@ -145,12 +153,12 @@ CFLAGS = $(ICFLAGS) $(DEFINES) $(INCLUDES) $(USER_CFLAGS) $(EXTRA_CFLAGS) # -pipe makes it go faster, but is not supported on all platforms. # EXTRA_CXXFLAGS= -fno-rtti -fno-exceptions -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion -EXTRA_CXXFLAGS= -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion +EXTRA_CXXFLAGS= -Wall -Winline -W -Wmissing-prototypes -Wmissing-declarations -Wconversion CXXFLAGS = $(CFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS) $(MODULE_CXXFLAGS) -INCLUDES = -I$(depth) -Iinclude -I$(outdir) -I$(include-lib) -I$(libout) -I$(include-flower) -I$(flowerout) +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_NAME) -L$(depth)/flower/$(OUTDIR_NAME) +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! # diff --git a/make/WWW.make b/make/WWW.make new file mode 100644 index 0000000000..58379aed6e --- /dev/null +++ b/make/WWW.make @@ -0,0 +1,11 @@ + + +ly_examples=$(addprefix $(outdir)/, $(addsuffix .ly.txt, $(examples))) +ps_examples=$(addprefix $(outdir)/, $(addsuffix .ps.gz, $(examples))) +gif_examples=$(addprefix $(outdir)/, $(addsuffix .gif, $(examples))) + + + +WWW: $(ly_examples) $(ps_examples) $(gif_examples) + (cd $(outdir); $(PYTHON) ../$(depth)/bin/mutopia-index.py $(examples)) + diff --git a/make/lilypond.spec.in b/make/lilypond.spec.in index 96adf5b0bd..10fd44ffe7 100644 --- a/make/lilypond.spec.in +++ b/make/lilypond.spec.in @@ -3,7 +3,7 @@ Version: @TOPLEVEL_VERSION@ Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz +Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz Summary: A program for typesetting music. URL: http://www.cs.ruu.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys @@ -36,12 +36,14 @@ make prefix="$RPM_BUILD_ROOT/usr" install %doc Documentation/out/lelie_logo.gif /usr/bin/convert-mudela /usr/bin/mudela-book +/usr/bin/ly2dvi /usr/bin/lilypond -/usr/lib/libflower.so /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/fonts/source/public/lilypond diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm index ac0f588999..5069c41b95 100644 --- a/make/out/lelievijver.lsm +++ b/make/out/lelievijver.lsm @@ -1,7 +1,7 @@ Begin3 Titel: LilyPond -Versie: 0.1.58 -Inschrijf datum: 21APR98 +Versie: 0.1.59 +Inschrijf datum: 27APR98 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: @@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys) Voornaamste plek: sunsite.unc.edu /pub/Linux/apps - 395k lilypond-0.1.58.tar.gz + 395k lilypond-0.1.59.tar.gz Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/ - 395k lilypond-0.1.58.tar.gz + 395k lilypond-0.1.59.tar.gz Copi"eer politie: GPL End diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 2de07e43b9..f8ba14b405 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 0.1.58 -Entered-date: 21APR98 +Version: 0.1.59 +Entered-date: 27APR98 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 @@ -15,8 +15,8 @@ Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 570k lilypond-0.1.58.tar.gz + 570k lilypond-0.1.59.tar.gz Original-site: pcnov095.win.tue.nl /pub/lilypond/development/ - 570k lilypond-0.1.58.tar.gz + 570k lilypond-0.1.59.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index aec37efd48..46cb95948a 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.1.58 +Version: 0.1.59 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.58.tar.gz +Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-0.1.59.tar.gz Summary: A program for typesetting music. URL: http://www.cs.ruu.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys @@ -31,17 +31,19 @@ strip lily/out/lilypond mi2mu/out/mi2mu make -C Documentation gifs make prefix="$RPM_BUILD_ROOT/usr" install %files -%doc Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/PATCHES.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt BUGS TODO NEWS DEDICATION ANNOUNCE README -%doc input/abbrev.ly input/beam-bug.ly input/beams.ly input/cadenza.ly input/clefs.ly input/collisions.ly input/coriolan-alto.ly input/denneboom.ly input/dummy.tex input/font-body.ly input/font.ly input/font11.ly input/font13.ly input/font16.ly input/font20.ly input/font26.ly input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/praeludium-fuga-E.ly input/rhythm.ly input/scales.ly input/scripts.ly input/sleur.ly input/slur-bug.ly input/slurs.ly input/spacing.ly input/stem.ly input/test-lyrics.ly input/tril.ly input/twinkle-pop.ly input/twinkle.ly Documentation/mudela-man.doc Documentation/mudela.doc +%doc Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/PATCHES.txt Documentation/out/faq.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt BUGS TODO NEWS DEDICATION ANNOUNCE README +%doc input/cadenza.ly input/coriolan-alto.ly input/dummy.tex input/keys.ly input/kortjakje.ly input/multi.ly input/part.ly input/pedal.ly input/praeludium-fuga-E.ly input/rhythm.ly input/scales.ly input/scripts.ly input/tril.ly input/twinkle-pop.ly input/twinkle.ly Documentation/mudela.doc %doc Documentation/out/lelie_logo.gif /usr/bin/convert-mudela /usr/bin/mudela-book +/usr/bin/ly2dvi /usr/bin/lilypond -/usr/lib/libflower.so /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/fonts/source/public/lilypond diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index ea9fa54c65..1fde0e32e4 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -38,6 +38,7 @@ else: % input feta-eindelijk; % input feta-klef; % input feta-toevallig; - input feta-schrift; -% input feta-slag; +% input feta-schrift; +% input feta-schrift; + input feta-haak; fi diff --git a/mf/feta-haak.mf b/mf/feta-haak.mf index 186a9ddeac..76bd6bd4c7 100644 --- a/mf/feta-haak.mf +++ b/mf/feta-haak.mf @@ -1,5 +1,6 @@ input feta-macros; input feta-params; +input feta-autometric; save code; code :=0; @@ -39,13 +40,34 @@ def draw_bracket( expr height_sharp, width_sharp) = filldraw z5{dir(180+alpha)}..{left}z1--z2--z3..{up}z4{right} ..{dir(alpha)}z6..cycle; - labels(1,2,3,4,5,6); +% % try control points to do this in ps +% currentpicture:=currentpicture shifted (-x5/2,(x5-x4)/2); +% +% s7 := 0.4*(x5-x1); +% x7 = x1 + s7 * cosd(0); +% y7 = y1 + s7 * sind(0); +% +% s8 := -0.25*(x5-x1); +% x8 := x5 + s8 * cosd(alpha); +% y8 := y5 + s8 * sind(alpha); +% +% s9 := 0.5*(x5-x4); +% x9 := x4 + s9 * cosd(0); +% y9 := y4 + s9 * sind(0); +% +% s10 := -0.15*(x5-x4); +% x10 := x5 + s10 * cosd(alpha); +% y10 := y5 + s10 * sind(alpha); +% +% draw z5..controls z8 and z7..z1--z2--z3..{up}z4 +% ..controls z9 and z10..z6..cycle; +% +% labels(1,2,3,4,5,6,7,8,9,10); addto currentpicture also currentpicture yscaled -1; endchar; enddef; - -% for h := staffsize# step 1 pt# until (2 * staffsize#): +% for h := staffsize# step 1 pt# until (1.1 * staffsize#): for h := staffsize# step 1 pt# until (7 * staffsize#): draw_bracket(h, 2interline# ); endfor diff --git a/mutopia/J.S.Bach/Makefile b/mutopia/J.S.Bach/Makefile index 018f98af67..46c474af95 100644 --- a/mutopia/J.S.Bach/Makefile +++ b/mutopia/J.S.Bach/Makefile @@ -10,7 +10,12 @@ depth = ../.. SUBDIRS = # + # generic stuff/Makefile # include ./$(depth)/make/Mutopia.make # + +examples=scsii-menuetto wtk1-fugue2 preludes-2 + +include $(depth)/make/WWW.make diff --git a/mutopia/Makefile b/mutopia/Makefile index 0137e29946..c67daf25f0 100644 --- a/mutopia/Makefile +++ b/mutopia/Makefile @@ -9,6 +9,10 @@ depth = .. # SUBDIRS = J.S.Bach Coriolan EXTRA_DISTFILES += TODO + +examples=standje gallina + + # # generic stuff/Makefile # diff --git a/mutopia/TODO b/mutopia/TODO new file mode 100644 index 0000000000..e282e81cf8 --- /dev/null +++ b/mutopia/TODO @@ -0,0 +1,9 @@ + - more composers > 70y + + - (more) free composers + - beethoven's coriolan + - more composers > 70y + + - (more) free composers + - beethoven's coriolan + - more composers > 70y + + - (more) free composers + - beethoven's coriolan diff --git a/mutopia/los-toros-oboe.ly b/mutopia/los-toros-oboe.ly index 822a0b27d9..85707a1282 100644 --- a/mutopia/los-toros-oboe.ly +++ b/mutopia/los-toros-oboe.ly @@ -1,6 +1,6 @@ \header{ filename = "los-toros-oboe.ly"; -title = "La Feria\normalsize\\[2ex]Los Toros"; +title = "La Feria\\normalsize\\[2ex]Los Toros"; opus = ""; composer = "Paul Lac\\^ome d'Estalenx (1838-1920)"; enteredby = "jcn"; diff --git a/test/Makefile b/test/Makefile index 4f89904b66..367d4f6ebc 100644 --- a/test/Makefile +++ b/test/Makefile @@ -44,7 +44,4 @@ include ./$(depth)/make/Targets.make include ./$(depth)/make/Rules.make # -EXECUTABLES=bow -include $(depth)/make/Executable.make - diff --git a/test/bow.cc b/test/bow.cc index bb85ea3e6d..02d5adbc44 100644 --- a/test/bow.cc +++ b/test/bow.cc @@ -14,10 +14,13 @@ typedef void *Paper_def; +bool experimental_features_global_b = true; + #include "bezier.hh" #include "bezier.cc" #include "offset.cc" + struct Point { Real x, y; @@ -62,8 +65,11 @@ bow (Point* points, int n, int d) Array notes; for (int i = 0; i < n; i++) notes.push (Offset (points[i].x, points[i].y)); -// cout << "pickup pencircle scaled 8pt#;\n"; +#if 1 + cout << "pickup pencircle scaled 8pt#;\n"; +#else cout << "pickup pencircle scaled 2pt#;\n"; +#endif for (int i = 0; i < n; i++) cout << "drawdot (" << notes[i].x () << ", " << notes[i].y () << ");\n"; Bezier_bow b (0); @@ -104,108 +110,40 @@ main () bow ((Point[6]){ 0,0, 20,0, 40,0, 60,0, 80,0, 100,40 }, 6, 1); bow ((Point[2]){ 0,0, 20,0 }, 2, 1); bow ((Point[2]){ 0,0, 20,-10 }, 2, 1); -#endif bow ((Point[6]){ 0,0, 20,0, 40,0, 60,0, 80,0, 100,100 }, 6, 1); - cout << "\\end\n"; - return 0; -} -// vim:sw=2 makeprg=g++\ -g\ bow.cc\ -o\ bow -#include -#define PT + bow ((Point[6]){ 0,0, 20,-10, 40,20, 60,-20, 80,20, 100,0 }, 6, 1); + bow ((Point[6]){ 0,0, 20,-10, 40,20, 60,-20, 80,20, 100,0 }, 6, -1); + bow ((Point[6]){ 0,0, 20,20, 40,0, 60,40, 80,20, 100,50 }, 6, 1); + bow ((Point[6]){ 0,0, 20,20, 40,0, 60,40, 80,20, 100,50 }, 6, -1); + bow ((Point[6]){ 0,0, 20,20, 40,0, 60,40, 80,20, 100,100 }, 6, -1); -// mmm -#define STANDALONE + bow ((Point[6]){ 0,-10, 20,-20, 40,0, 60,-40, 80,-20, 100,-50 }, 6, 1); -#include + bow ((Point[6]){ 0,10, 20,20, 40,0, 60,40, 80,20, 100,50 }, 6, -1); +#endif -typedef void *Paper_def; + //clipping +#if 0 + bow ((Point[6]){ 0,0, 20,60, 40,0, 60,0, 80,0, 100,1 }, 6, 1); -#include "bezier.hh" -#include "bezier.cc" -#include "mat.hh" + bow ((Point[6]){ 0,1, 20,0, 40,0, 60,0, 80,60, 100,0 }, 6, 1); + bow ((Point[6]){ 0,0, 20,20, 40,40, 60,60, 80,140, 100,100 }, 6, 1); + bow ((Point[6]){ 0,0, 20,20, 40,40, 60,60, 80,20, 100,100 }, 6, -1); + bow ((Point[6]){ 0,0, 20,-20, 40,-40, 60,-60, 80,-20, 100,-100 }, 6, 1); + bow ((Point[6]){ 0,0, 20,-20, 40,-40, 60,-60, 80,-140, 100,-100 }, 6, -1); +#endif -struct Point -{ - Real x, y; -}; + // bugs +// bow ((Point[6]){ 0,0, 20,0, 40,0, 60,0, 80,40, 100,1 }, 6, 1); +// bow ((Point[6]){ 0,0, 20,0, 40,0, 60,0, 80,-40, 100,1 }, 6, -1); +// bow ((Point[6]){ 0,0, 20,40, 40,0, 60,0, 80,0, 100,1 }, 6, 1); +// bow ((Point[6]){ 0,0, 20,-40, 40,0, 60,0, 80,0, 100,1 }, 6, -1); -void -out (Bezier_bow& b) -{ - cout << "save dx,dy,x,y;\n"; - for (int i = 0; i < 4; i++) - cout << "z" << i + 1 << " = (" << b.control_[i].x () - << ", " << b.control_[i].y () << ");\n"; - for (int i = 1; i < 3; i++) - cout << "z" << i + 4 << " = (" << b.return_[i].x () - << ", " << b.return_[i].y () << ");\n"; -// cout << "pickup pencircle scaled 0.5pt#;\n"; -// cout << "draw z2--z3; draw (50,0)-- 0.5[z2,z3];\n"; - cout << "pickup pencircle scaled 4pt#;\n"; - for (int i = 0; i < 4; i++) - cout << "drawdot z" << i + 1 << ";\n"; -// cout << "pickup pencircle scaled 0.4pt#;\n"; - cout << "pickup pencircle scaled 1.6pt#;\n"; - cout << "path boogje;\n"; -// cout << "boogje=z1..controls z2 and z3..z4..controls z5 and z6..cycle;\n"; - cout << "boogje=z1..controls z2 and z3..z4;\n"; - cout << "dx=x4-x1;\n"; - cout << "dy=y4-y1;\n"; - cout << "draw boogje;\n"; - cout << "pickup pencircle scaled 0.4pt#;\n"; - cout << "boogje:=z4..controls z5 and z6..z1;\n"; - cout << "draw boogje;\n"; -// cout << "filldraw boogje;\n"; - cout << "showit; shipit;clearit;\n"; -} - -void -bow (Point* points, int n, int d) -{ - Array notes; - for (int i = 0; i < n; i++) - notes.push (Offset (points[i].x, points[i].y)); - cout << "pickup pencircle scaled 8pt#;\n"; - for (int i = 0; i < n; i++) - cout << "drawdot (" << notes[i].x () << ", " << notes[i].y () << ");\n"; - Bezier_bow b (0); - b.set (notes, d); - b.calc (); - out (b); - return; -} + bow ((Point[6]){ 0,0, 20,-40, 40,0, 60,20, 80,20, 100,40 }, 6, -1); + bow ((Point[6]){ 0,0, 20,-20, 40,-20, 60,-20, 80,-80, 100,-40 }, 6, -1); -int -main () -{ - //cout.unsetf(ios::scientific); - cout.setf(ios::fixed); -#if 1 - bow ((Point[6]){ 0,0, 20,0, 40,0, 60,0, 80,0, 100,1 }, 6, 1); - bow ((Point[6]){ 0,0, 20,0, 40,30, 60,30, 80,0, 100,1 }, 6, 1); - bow ((Point[6]){ 0,0, 20,0, 40,0, 60,0, 80,10, 100,1 }, 6, 1); - bow ((Point[6]){ 0,0, 20,0, 40,0, 60,0, 80,40, 100,1 }, 6, 1); - bow ((Point[6]){ 0,0, 20,0, 40,0, 60,40, 80,0, 100,1 }, 6, 1); - bow ((Point[6]){ 0,10, 20,20, 40,0, 60,40, 80,20, 100,50 }, 6, 1); - bow ((Point[6]){ 0,10, 20,20, 40,0, 60,40, 80,20, 100,50 }, 6, -1); - bow ((Point[6]){ 0,10, 20,20, 40,0, 60,40, 80,20, 100,100 }, 6, -1); - bow ((Point[9]){ 0,0, 20,0, 40,-80, 60,0, 80,0, 100,0, 120,0, 140,0, 160,-1 }, 9, -1); - bow ((Point[9]){ 0,0, 40,0, 80,180, 120,0, 160,0, 200,0, 240,0, 280,0, 320,1 }, 9, 1); - bow ((Point[9]){ - {0, 0}, - {19.10645980317711, 1}, - {29.402919606354207, 28}, - {55.389379409531308, 1}, - {73.530839212708514, 1}, - {91.672299015885727, 1}, - {111.35901367452229, 1}, - {131.04572833315891, 1}, - {145.76744299179552, 0} - }, - 9, 1); -#endif - bow ((Point[6]){ 0,0, 20,0, 40,0, 60,0, 80,0, 100,40 }, 6, 1); + bow ((Point[6]){ 0,0, 20,20, 40,40, 60,60, 80,140, 100,100 }, 6, 1); cout << "\\end\n"; return 0; } diff --git a/tex/eglerdefs.tex b/tex/eglerdefs.tex deleted file mode 100644 index 71857b6f13..0000000000 --- a/tex/eglerdefs.tex +++ /dev/null @@ -1,130 +0,0 @@ -% -% Has to be fixed. Exercise for the reader. -% -\input fetdefs - -\def\musixtwentyfonts{ - \font\normaltextfont=cmr10 - \font\meterfont=cmbx15 - \font\slurufont=oslu20 - \font\smalltextfont=cmr8 - \font\slurdfont=osld20 - \font\slurhfont=oslz20 - \font\hslurufont=oslhu20 - \font\hslurdfont=oslhd20 - \font\hslurhfont=oslhz20 - \font\musicfnt=opus20 - \font\musicdraw=opussps - \font\italicfont=cmti10 - \font\dynfont=cmbxti10 scaled \magstep1 - \font\musicmathfont=cmsy10 - \fettwentydefs -} - - -\def\musixsixteenfonts{ - \font\smalltextfont=cmr6 - \font\normaltextfont=cmr8 - \font\meterfont=cmbx12 - \font\italicfont=cmti8 - \font\slurufont=oslu16 - \font\slurdfont=osld16 - \font\slurhfont=oslz20 % sigh - \font\hslurufont=oslhu16 - \font\hslurdfont=oslhd16 - \font\hslurhfont=oslhz20 - \font\musicfnt=opus16 - \font\dynfont=cmbxti12 - \font\musicdraw=opussps - \font\musicmathfont=cmsy8 - \fetsixteendefs -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% provide interface to musixtex fonts -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\musicdef\halfrest{10} -\musicdef\outsidehalfrest{11} -\musicdef\wholerest{13} -\musicdef\outsidewholerest{12} -\musicdef\quartrest{14} -\musicdef\eighthrest{15} -\musicdef\sixteenthrest{16} -\musicdef\thirtysecondrest{17} -\musicdef\sixtyfourthrest{18} -\musicdef\sharp{93} -\musicdef\flat{91} -\musicdef\natural{95} -\musicdef\sharpsharp{94} -\musicdef\flatflat{92} - - -\musicdef\singledot{'00} -\musicdef\doubledot{'01} -\musicdef\tripledot{'02} -\musicdef\mussepline{155} - -\musicdef\violinclef{65} -\musicdef\bassclef{67} -\musicdef\altoclef{69} -\musicdef\cviolinclef{66} -\musicdef\cbassclef{68} -\musicdef\caltoclef{70} - -\musicdef\deighthflag{37} -\musicdef\dsixteenthflag{38} -\musicdef\dthirtysecondflag{39} -\musicdef\dsixtyfourthflag{40} -\musicdef\dhundredtwentyeighthflag{41} - -% pointing up -\musicdef\ueighthflag{32} -\musicdef\usixteenthflag{33} -\musicdef\uthirtysecondflag{34} -\musicdef\usixtyfourthflag{35} -\musicdef\uhundredtwentyeighthflag{36} - -\maccentdef\repeatcolon{55}{2/1} -\def\eighthflag{\topalign{\ueighthflag}} -\def\sixteenthflag{\topalign{\usixteenthflag}} -\def\thirtysecondflag{\topalign{\uthirtysecondflag}} -\def\sixtyfourthflag{\topalign{\usixtyfourthflag}} -\def\hundredtwentyeighthflag{\topalign{\uhundredtwentyeighthflag}} - -\def\cquartrest{\vertcenter\quartrest} -\def\ceighthrest{\vertcenter\eighthrest} -\def\csixteenthrest{\vertcenter\sixteenthrest} -\def\cthirtysecondrest{\vertcenter\thirtysecondrest} -\def\csixtyfourthrest{\vertcenter\sixtyfourthrest} -\def\chundredtwentyeighthrest{\vertcenter\hundredtwentyeighthrest} - -\def\lsingledot{\kern-\notewidth\singledot} -\def\ldoubledot{\kern-\notewidth\doubledot} -\def\ltripledot{\kern-\notewidth\tripledot} - -\maccentdef\sforzato{30}{-3/2} -\maccentdef\marcato{20}{-1/1} -\maccentdef\imarcato{21}{1/1} -\maccentdef\staccato{24}{-1/3} -\maccentdef\istaccato{25}{1/3} -\maccentdef\staccatissimo{28}{-5/5} -\maccentdef\istaccatissimo{29}{2/5} -\maccentdef\portato{18}{-6/5} -\maccentdef\iportato{19}{3/5} -\maccentdef\tenuto{26}{-1/1} -\maccentdef\itenuto{27}{1/1} -\maccentdef\fermata{80}{-1/1} -\maccentdef\ifermata{81}{1/1} - -\musicdef\spicato{28} -\musicdef\ispicato{29} -\musicdef\upbow{23} -\musicdef\downbow{22} - -\def\beamuslope#1#2{{\count0=#2\advance\count0 by#1 - \advance\count0 by 132 - \musicfnt\char\count0}} -\def\beamdslope#1#2{{\count0=#2\advance\count0 by#1 - \advance\count0 by 186 - \musicfnt\char\count0}} - diff --git a/tex/feta11.tex b/tex/feta11.tex deleted file mode 100644 index 33ca5ccd3b..0000000000 --- a/tex/feta11.tex +++ /dev/null @@ -1,88 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta11.log -% name -% rests -\fetdef\wholerest{0} -\fetdef\halfrest{1} -\fetdef\outsidewholerest{2} -\fetdef\outsidehalfrest{3} -\fetdef\quartrest{4} -\fetdef\eighthrest{5} -\fetdef\sixteenthrest{6} -\fetdef\thirtysecondrest{7} -\fetdef\sixtyfourthrest{8} -\fetdef\hundredtwentyeighthrest{9} - -% accidentals -\fetdef\sharp{10} -\fetdef\natural{11} -\fetdef\flat{12} -\fetdef\flatflat{13} -\fetdef\sharpsharp{14} - -% dots -\fetdef\dot{15} -\fetdef\repeatcolon{16} - -% balls -\fetdef\brevisball{17} -\fetdef\brevisledger{18} -\fetdef\longaball{19} -\fetdef\longaledger{20} -\fetdef\wholeball{21} -\fetdef\wholeledger{22} -\fetdef\halfball{23} -\fetdef\halfledger{24} -\fetdef\quartball{25} -\fetdef\quartledger{26} - -% scripts -\fetdef\ufermata{27} -\fetdef\dfermata{28} -\fetdef\sforzatoaccent{29} -\fetdef\staccato{30} -\fetdef\ustaccatissimo{31} -\fetdef\dstaccatissimo{32} -\fetdef\tenuto{33} -\fetdef\umarcato{34} -\fetdef\dmarcato{35} -\fetdef\ouvert{36} -\fetdef\plusstop{37} -\fetdef\upbow{38} -\fetdef\downbow{39} -\fetdef\reverseturn{40} -\fetdef\turn{41} -\fetdef\trill{42} -\fetdef\upedalheel{43} -\fetdef\dpedalheel{44} -\fetdef\upedaltoe{45} -\fetdef\dpedaltoe{46} -\fetdef\flageolet{47} -\fetdef\trilelement{48} -\fetdef\prall{49} -\fetdef\mordent{50} -\fetdef\prallprall{51} -\fetdef\prallmordent{52} -\fetdef\upprall{53} -\fetdef\downprall{54} - -% flags -\fetdef\eighthflag{55} -\fetdef\sixteenthflag{56} -\fetdef\thirtysecondflag{57} -\fetdef\sixtyfourthflag{58} -\fetdef\deighthflag{59} -\fetdef\dsixteenthflag{60} -\fetdef\dthirtysecondflag{61} -\fetdef\dsixtyfourthflag{62} - -% clefs -\fetdef\altoclef{63} -\fetdef\caltoclef{64} -\fetdef\bassclef{65} -\fetdef\cbassclef{66} -\fetdef\violinclef{67} -\fetdef\cviolinclef{68} - diff --git a/tex/feta13.tex b/tex/feta13.tex deleted file mode 100644 index 5c604206db..0000000000 --- a/tex/feta13.tex +++ /dev/null @@ -1,88 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta13.log -% name -% rests -\fetdef\wholerest{0} -\fetdef\halfrest{1} -\fetdef\outsidewholerest{2} -\fetdef\outsidehalfrest{3} -\fetdef\quartrest{4} -\fetdef\eighthrest{5} -\fetdef\sixteenthrest{6} -\fetdef\thirtysecondrest{7} -\fetdef\sixtyfourthrest{8} -\fetdef\hundredtwentyeighthrest{9} - -% accidentals -\fetdef\sharp{10} -\fetdef\natural{11} -\fetdef\flat{12} -\fetdef\flatflat{13} -\fetdef\sharpsharp{14} - -% dots -\fetdef\dot{15} -\fetdef\repeatcolon{16} - -% balls -\fetdef\brevisball{17} -\fetdef\brevisledger{18} -\fetdef\longaball{19} -\fetdef\longaledger{20} -\fetdef\wholeball{21} -\fetdef\wholeledger{22} -\fetdef\halfball{23} -\fetdef\halfledger{24} -\fetdef\quartball{25} -\fetdef\quartledger{26} - -% scripts -\fetdef\ufermata{27} -\fetdef\dfermata{28} -\fetdef\sforzatoaccent{29} -\fetdef\staccato{30} -\fetdef\ustaccatissimo{31} -\fetdef\dstaccatissimo{32} -\fetdef\tenuto{33} -\fetdef\umarcato{34} -\fetdef\dmarcato{35} -\fetdef\ouvert{36} -\fetdef\plusstop{37} -\fetdef\upbow{38} -\fetdef\downbow{39} -\fetdef\reverseturn{40} -\fetdef\turn{41} -\fetdef\trill{42} -\fetdef\upedalheel{43} -\fetdef\dpedalheel{44} -\fetdef\upedaltoe{45} -\fetdef\dpedaltoe{46} -\fetdef\flageolet{47} -\fetdef\trilelement{48} -\fetdef\prall{49} -\fetdef\mordent{50} -\fetdef\prallprall{51} -\fetdef\prallmordent{52} -\fetdef\upprall{53} -\fetdef\downprall{54} - -% flags -\fetdef\eighthflag{55} -\fetdef\sixteenthflag{56} -\fetdef\thirtysecondflag{57} -\fetdef\sixtyfourthflag{58} -\fetdef\deighthflag{59} -\fetdef\dsixteenthflag{60} -\fetdef\dthirtysecondflag{61} -\fetdef\dsixtyfourthflag{62} - -% clefs -\fetdef\altoclef{63} -\fetdef\caltoclef{64} -\fetdef\bassclef{65} -\fetdef\cbassclef{66} -\fetdef\violinclef{67} -\fetdef\cviolinclef{68} - diff --git a/tex/feta16.tex b/tex/feta16.tex deleted file mode 100644 index e4cac0fa9b..0000000000 --- a/tex/feta16.tex +++ /dev/null @@ -1,88 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta16.log -% name -% rests -\fetdef\wholerest{0} -\fetdef\halfrest{1} -\fetdef\outsidewholerest{2} -\fetdef\outsidehalfrest{3} -\fetdef\quartrest{4} -\fetdef\eighthrest{5} -\fetdef\sixteenthrest{6} -\fetdef\thirtysecondrest{7} -\fetdef\sixtyfourthrest{8} -\fetdef\hundredtwentyeighthrest{9} - -% accidentals -\fetdef\sharp{10} -\fetdef\natural{11} -\fetdef\flat{12} -\fetdef\flatflat{13} -\fetdef\sharpsharp{14} - -% dots -\fetdef\dot{15} -\fetdef\repeatcolon{16} - -% balls -\fetdef\brevisball{17} -\fetdef\brevisledger{18} -\fetdef\longaball{19} -\fetdef\longaledger{20} -\fetdef\wholeball{21} -\fetdef\wholeledger{22} -\fetdef\halfball{23} -\fetdef\halfledger{24} -\fetdef\quartball{25} -\fetdef\quartledger{26} - -% scripts -\fetdef\ufermata{27} -\fetdef\dfermata{28} -\fetdef\sforzatoaccent{29} -\fetdef\staccato{30} -\fetdef\ustaccatissimo{31} -\fetdef\dstaccatissimo{32} -\fetdef\tenuto{33} -\fetdef\umarcato{34} -\fetdef\dmarcato{35} -\fetdef\ouvert{36} -\fetdef\plusstop{37} -\fetdef\upbow{38} -\fetdef\downbow{39} -\fetdef\reverseturn{40} -\fetdef\turn{41} -\fetdef\trill{42} -\fetdef\upedalheel{43} -\fetdef\dpedalheel{44} -\fetdef\upedaltoe{45} -\fetdef\dpedaltoe{46} -\fetdef\flageolet{47} -\fetdef\trilelement{48} -\fetdef\prall{49} -\fetdef\mordent{50} -\fetdef\prallprall{51} -\fetdef\prallmordent{52} -\fetdef\upprall{53} -\fetdef\downprall{54} - -% flags -\fetdef\eighthflag{55} -\fetdef\sixteenthflag{56} -\fetdef\thirtysecondflag{57} -\fetdef\sixtyfourthflag{58} -\fetdef\deighthflag{59} -\fetdef\dsixteenthflag{60} -\fetdef\dthirtysecondflag{61} -\fetdef\dsixtyfourthflag{62} - -% clefs -\fetdef\altoclef{63} -\fetdef\caltoclef{64} -\fetdef\bassclef{65} -\fetdef\cbassclef{66} -\fetdef\violinclef{67} -\fetdef\cviolinclef{68} - diff --git a/tex/feta19.tex b/tex/feta19.tex deleted file mode 100644 index b236739fe0..0000000000 --- a/tex/feta19.tex +++ /dev/null @@ -1,88 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta19.log -% name -% rests -\fetdef\wholerest{0} -\fetdef\halfrest{1} -\fetdef\outsidewholerest{2} -\fetdef\outsidehalfrest{3} -\fetdef\quartrest{4} -\fetdef\eighthrest{5} -\fetdef\sixteenthrest{6} -\fetdef\thirtysecondrest{7} -\fetdef\sixtyfourthrest{8} -\fetdef\hundredtwentyeighthrest{9} - -% accidentals -\fetdef\sharp{10} -\fetdef\natural{11} -\fetdef\flat{12} -\fetdef\flatflat{13} -\fetdef\sharpsharp{14} - -% dots -\fetdef\dot{15} -\fetdef\repeatcolon{16} - -% balls -\fetdef\brevisball{17} -\fetdef\brevisledger{18} -\fetdef\longaball{19} -\fetdef\longaledger{20} -\fetdef\wholeball{21} -\fetdef\wholeledger{22} -\fetdef\halfball{23} -\fetdef\halfledger{24} -\fetdef\quartball{25} -\fetdef\quartledger{26} - -% scripts -\fetdef\ufermata{27} -\fetdef\dfermata{28} -\fetdef\sforzatoaccent{29} -\fetdef\staccato{30} -\fetdef\ustaccatissimo{31} -\fetdef\dstaccatissimo{32} -\fetdef\tenuto{33} -\fetdef\umarcato{34} -\fetdef\dmarcato{35} -\fetdef\ouvert{36} -\fetdef\plusstop{37} -\fetdef\upbow{38} -\fetdef\downbow{39} -\fetdef\reverseturn{40} -\fetdef\turn{41} -\fetdef\trill{42} -\fetdef\upedalheel{43} -\fetdef\dpedalheel{44} -\fetdef\upedaltoe{45} -\fetdef\dpedaltoe{46} -\fetdef\flageolet{47} -\fetdef\trilelement{48} -\fetdef\prall{49} -\fetdef\mordent{50} -\fetdef\prallprall{51} -\fetdef\prallmordent{52} -\fetdef\upprall{53} -\fetdef\downprall{54} - -% flags -\fetdef\eighthflag{55} -\fetdef\sixteenthflag{56} -\fetdef\thirtysecondflag{57} -\fetdef\sixtyfourthflag{58} -\fetdef\deighthflag{59} -\fetdef\dsixteenthflag{60} -\fetdef\dthirtysecondflag{61} -\fetdef\dsixtyfourthflag{62} - -% clefs -\fetdef\altoclef{63} -\fetdef\caltoclef{64} -\fetdef\bassclef{65} -\fetdef\cbassclef{66} -\fetdef\violinclef{67} -\fetdef\cviolinclef{68} - diff --git a/tex/feta20.tex b/tex/feta20.tex deleted file mode 100644 index 42e4a210b8..0000000000 --- a/tex/feta20.tex +++ /dev/null @@ -1,88 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta20.log -% name -% rests -\fetdef\wholerest{0} -\fetdef\halfrest{1} -\fetdef\outsidewholerest{2} -\fetdef\outsidehalfrest{3} -\fetdef\quartrest{4} -\fetdef\eighthrest{5} -\fetdef\sixteenthrest{6} -\fetdef\thirtysecondrest{7} -\fetdef\sixtyfourthrest{8} -\fetdef\hundredtwentyeighthrest{9} - -% accidentals -\fetdef\sharp{10} -\fetdef\natural{11} -\fetdef\flat{12} -\fetdef\flatflat{13} -\fetdef\sharpsharp{14} - -% dots -\fetdef\dot{15} -\fetdef\repeatcolon{16} - -% balls -\fetdef\brevisball{17} -\fetdef\brevisledger{18} -\fetdef\longaball{19} -\fetdef\longaledger{20} -\fetdef\wholeball{21} -\fetdef\wholeledger{22} -\fetdef\halfball{23} -\fetdef\halfledger{24} -\fetdef\quartball{25} -\fetdef\quartledger{26} - -% scripts -\fetdef\ufermata{27} -\fetdef\dfermata{28} -\fetdef\sforzatoaccent{29} -\fetdef\staccato{30} -\fetdef\ustaccatissimo{31} -\fetdef\dstaccatissimo{32} -\fetdef\tenuto{33} -\fetdef\umarcato{34} -\fetdef\dmarcato{35} -\fetdef\ouvert{36} -\fetdef\plusstop{37} -\fetdef\upbow{38} -\fetdef\downbow{39} -\fetdef\reverseturn{40} -\fetdef\turn{41} -\fetdef\trill{42} -\fetdef\upedalheel{43} -\fetdef\dpedalheel{44} -\fetdef\upedaltoe{45} -\fetdef\dpedaltoe{46} -\fetdef\flageolet{47} -\fetdef\trilelement{48} -\fetdef\prall{49} -\fetdef\mordent{50} -\fetdef\prallprall{51} -\fetdef\prallmordent{52} -\fetdef\upprall{53} -\fetdef\downprall{54} - -% flags -\fetdef\eighthflag{55} -\fetdef\sixteenthflag{56} -\fetdef\thirtysecondflag{57} -\fetdef\sixtyfourthflag{58} -\fetdef\deighthflag{59} -\fetdef\dsixteenthflag{60} -\fetdef\dthirtysecondflag{61} -\fetdef\dsixtyfourthflag{62} - -% clefs -\fetdef\altoclef{63} -\fetdef\caltoclef{64} -\fetdef\bassclef{65} -\fetdef\cbassclef{66} -\fetdef\violinclef{67} -\fetdef\cviolinclef{68} - diff --git a/tex/feta23.tex b/tex/feta23.tex deleted file mode 100644 index bbf2717abd..0000000000 --- a/tex/feta23.tex +++ /dev/null @@ -1,88 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta23.log -% name -% rests -\fetdef\wholerest{0} -\fetdef\halfrest{1} -\fetdef\outsidewholerest{2} -\fetdef\outsidehalfrest{3} -\fetdef\quartrest{4} -\fetdef\eighthrest{5} -\fetdef\sixteenthrest{6} -\fetdef\thirtysecondrest{7} -\fetdef\sixtyfourthrest{8} -\fetdef\hundredtwentyeighthrest{9} - -% accidentals -\fetdef\sharp{10} -\fetdef\natural{11} -\fetdef\flat{12} -\fetdef\flatflat{13} -\fetdef\sharpsharp{14} - -% dots -\fetdef\dot{15} -\fetdef\repeatcolon{16} - -% balls -\fetdef\brevisball{17} -\fetdef\brevisledger{18} -\fetdef\longaball{19} -\fetdef\longaledger{20} -\fetdef\wholeball{21} -\fetdef\wholeledger{22} -\fetdef\halfball{23} -\fetdef\halfledger{24} -\fetdef\quartball{25} -\fetdef\quartledger{26} - -% scripts -\fetdef\ufermata{27} -\fetdef\dfermata{28} -\fetdef\sforzatoaccent{29} -\fetdef\staccato{30} -\fetdef\ustaccatissimo{31} -\fetdef\dstaccatissimo{32} -\fetdef\tenuto{33} -\fetdef\umarcato{34} -\fetdef\dmarcato{35} -\fetdef\ouvert{36} -\fetdef\plusstop{37} -\fetdef\upbow{38} -\fetdef\downbow{39} -\fetdef\reverseturn{40} -\fetdef\turn{41} -\fetdef\trill{42} -\fetdef\upedalheel{43} -\fetdef\dpedalheel{44} -\fetdef\upedaltoe{45} -\fetdef\dpedaltoe{46} -\fetdef\flageolet{47} -\fetdef\trilelement{48} -\fetdef\prall{49} -\fetdef\mordent{50} -\fetdef\prallprall{51} -\fetdef\prallmordent{52} -\fetdef\upprall{53} -\fetdef\downprall{54} - -% flags -\fetdef\eighthflag{55} -\fetdef\sixteenthflag{56} -\fetdef\thirtysecondflag{57} -\fetdef\sixtyfourthflag{58} -\fetdef\deighthflag{59} -\fetdef\dsixteenthflag{60} -\fetdef\dthirtysecondflag{61} -\fetdef\dsixtyfourthflag{62} - -% clefs -\fetdef\altoclef{63} -\fetdef\caltoclef{64} -\fetdef\bassclef{65} -\fetdef\cbassclef{66} -\fetdef\violinclef{67} -\fetdef\cviolinclef{68} - diff --git a/tex/feta26.tex b/tex/feta26.tex deleted file mode 100644 index 501e32787e..0000000000 --- a/tex/feta26.tex +++ /dev/null @@ -1,88 +0,0 @@ -% Creator: mf-to-table.py version 0.6 -% Automatically generated on -% Do not edit -% input from out/feta26.log -% name -% rests -\fetdef\wholerest{0} -\fetdef\halfrest{1} -\fetdef\outsidewholerest{2} -\fetdef\outsidehalfrest{3} -\fetdef\quartrest{4} -\fetdef\eighthrest{5} -\fetdef\sixteenthrest{6} -\fetdef\thirtysecondrest{7} -\fetdef\sixtyfourthrest{8} -\fetdef\hundredtwentyeighthrest{9} - -% accidentals -\fetdef\sharp{10} -\fetdef\natural{11} -\fetdef\flat{12} -\fetdef\flatflat{13} -\fetdef\sharpsharp{14} - -% dots -\fetdef\dot{15} -\fetdef\repeatcolon{16} - -% balls -\fetdef\brevisball{17} -\fetdef\brevisledger{18} -\fetdef\longaball{19} -\fetdef\longaledger{20} -\fetdef\wholeball{21} -\fetdef\wholeledger{22} -\fetdef\halfball{23} -\fetdef\halfledger{24} -\fetdef\quartball{25} -\fetdef\quartledger{26} - -% scripts -\fetdef\ufermata{27} -\fetdef\dfermata{28} -\fetdef\sforzatoaccent{29} -\fetdef\staccato{30} -\fetdef\ustaccatissimo{31} -\fetdef\dstaccatissimo{32} -\fetdef\tenuto{33} -\fetdef\umarcato{34} -\fetdef\dmarcato{35} -\fetdef\ouvert{36} -\fetdef\plusstop{37} -\fetdef\upbow{38} -\fetdef\downbow{39} -\fetdef\reverseturn{40} -\fetdef\turn{41} -\fetdef\trill{42} -\fetdef\upedalheel{43} -\fetdef\dpedalheel{44} -\fetdef\upedaltoe{45} -\fetdef\dpedaltoe{46} -\fetdef\flageolet{47} -\fetdef\trilelement{48} -\fetdef\prall{49} -\fetdef\mordent{50} -\fetdef\prallprall{51} -\fetdef\prallmordent{52} -\fetdef\upprall{53} -\fetdef\downprall{54} - -% flags -\fetdef\eighthflag{55} -\fetdef\sixteenthflag{56} -\fetdef\thirtysecondflag{57} -\fetdef\sixtyfourthflag{58} -\fetdef\deighthflag{59} -\fetdef\dsixteenthflag{60} -\fetdef\dthirtysecondflag{61} -\fetdef\dsixtyfourthflag{62} - -% clefs -\fetdef\altoclef{63} -\fetdef\caltoclef{64} -\fetdef\bassclef{65} -\fetdef\cbassclef{66} -\fetdef\violinclef{67} -\fetdef\cviolinclef{68} - diff --git a/tex/fetdefs.tex b/tex/fetdefs.tex index b7ba27d281..f7fd285720 100644 --- a/tex/fetdefs.tex +++ b/tex/fetdefs.tex @@ -3,7 +3,6 @@ \def\fetsixteendefs{% \font\feta = feta16 - \font\vetfont = feta-beams16 \font\fetanummer = feta-nummer8 \font\dynfont = feta-din10 scaled \magstep 1 \font\bracefont = feta-braces16 @@ -13,7 +12,6 @@ \def\fettwentydefs{% \font\feta = feta20 - \font\vetfont = feta-beams20 \font\fetanummer = feta-nummer10 \font\dynfont = feta-din10 scaled \magstep 2 \font\bracefont = feta-braces20 @@ -23,7 +21,6 @@ \def\fettwentysixdefs{% \font\feta = feta26 - \font\vetfont = feta-beams26 \font\fetanummer = feta-nummer12 \font\dynfont = feta-din10 scaled \magstep 3 \font\bracefont = feta-braces16 @@ -33,7 +30,6 @@ \def\fetthirteendefs{% \font\feta = feta13 - \font\vetfont = feta-beams26 \font\fetanummer = feta-nummer5 \font\dynfont = feta-din10 scaled \magstep 0 \font\bracefont = feta-braces16 @@ -43,7 +39,6 @@ \def\fetelevendefs{% \font\feta = feta11 - \font\vetfont = feta-beams26 \font\fetanummer = feta-nummer5 \font\dynfont = feta-din10 % scaled \magstep-1 \font\bracefont = feta-braces16 diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex index 9ff22292d5..59e4d4e857 100644 --- a/tex/lily-ps-defs.tex +++ b/tex/lily-ps-defs.tex @@ -96,39 +96,122 @@ def /lily_distance { 1 copy mul exch 1 copy mul add sqrt } bind def - /draw_plet - { - staffrulethickness setlinewidth - /dir exch def - /plet_dy exch def - /plet_dx exch def - staffheight 2 div /plet_gapx exch def - plet_dy plet_dx div plet_gapx mul /plet_gapy exch def - staffheight 4 div dir mul /plet_h exch def -% - 0 0 moveto - 0 plet_h lineto - plet_dx plet_gapx sub 2 div - plet_dy plet_gapy sub 2 div plet_h add lineto - plet_dx plet_gapx add 2 div - plet_dy plet_gapy add 2 div plet_h add moveto - plet_dx plet_dy plet_h add lineto - plet_dx plet_dy lineto - stroke - } - bind def - staffheight 2 div /slurhtlimit exch def +staffrulethickness 1.2 mul /plet_t exch def +/draw_plet +{ + plet_t setlinewidth + true setstrokeadjust + 1 setlinecap + 1 setlinejoin + /dir exch def + /plet_dy exch def + /plet_dx exch def + staffheight 2 div /plet_gapx exch def + plet_dy plet_dx div plet_gapx mul /plet_gapy exch def + staffheight 4 div dir mul /plet_h exch def +% + 0 0 moveto + 0 plet_h lineto + plet_dx plet_gapx sub 2 div + plet_dy plet_gapy sub 2 div plet_h add lineto + plet_dx plet_gapx add 2 div + plet_dy plet_gapy add 2 div plet_h add moveto + plet_dx plet_dy plet_h add lineto + plet_dx plet_dy lineto + stroke +} bind def +staffheight 2 div /slurhtlimit exch def /draw_slur { staffrulethickness setlinewidth - 0 0 moveto - rcurveto - rcurveto + moveto + curveto + lineto + curveto gsave fill grestore stroke } bind def +% +staffheight 4 div /interline exch def +% +/bracket_traject +{ + /traject_ds exch def + /traject_alpha exch def + traject_ds traject_alpha sin mul add + exch + traject_ds traject_alpha cos mul add + exch +} bind def +% +interline 2 div /bracket_b exch def +interline 2 mul /bracket_w exch def +staffrulethickness /stafflinethickness exch def +stafflinethickness 2 mul /bracket_t exch def +interline 1.5 mul /bracket_v exch def +bracket_v /bracket_u exch def +50 /bracket_alpha exch def +% +/half_bracket +{ +%6 + 0 0 +%5a + bracket_b bracket_v add bracket_h bracket_t sub bracket_u add + bracket_alpha bracket_v -0.15 mul bracket_traject +%5b + 1 bracket_h + 0 bracket_v 0.5 mul bracket_traject +%5c + 0 bracket_h +%4a + bracket_b bracket_h bracket_t sub + 0 bracket_v 0.4 mul bracket_traject +%4b + bracket_b bracket_v add bracket_h bracket_t sub bracket_u add + bracket_alpha bracket_v -0.25 mul bracket_traject +%4c + bracket_b bracket_v add bracket_h bracket_t sub bracket_u add +%3 + bracket_b bracket_h bracket_t sub +%2 + bracket_b 0 +%1 + 0 0 +} bind def +% +/draw_half_bracket { + moveto + lineto + lineto + curveto + curveto + lineto + gsave + fill + grestore +} bind def +% +/draw_bracket +{ + 2 div bracket_b add /bracket_h exch def + bracket_t setlinewidth + true setstrokeadjust + 1 setlinecap + 1 setlinejoin + half_bracket + 20 copy + 1 -1 scale + draw_half_bracket + stroke + 1 -1 scale +% ugh, ugh: + 0.05 0 translate + draw_half_bracket + stroke +} bind def }} \def\turnOnExperimentalFeatures{% diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index d73f989630..a5bc3c4fde 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -78,7 +78,7 @@ \font\smalltextfont=cmr8 \font\boldfont=cmbx10 \font\textmusic=cmmi12 - \font\largefont=cmbx12 + \font\largefont=cmbx12 } \def\cmrsixteen{ \font\smalltextfont=cmr6 @@ -87,7 +87,7 @@ \font\italicfont=cmti9 \font\textmusic=cmmi10 \font\boldfont=cmbx8 - \font\largefont=cmbx10 + \font\largefont=cmbx10 } \def\cmreleven{ \font\smalltextfont=cmr5 @@ -96,7 +96,7 @@ \font\italicfont=cmti6 \font\textmusic=cmmi8 \font\boldfont=cmbx6 - \font\largefont=cmbx8 + \font\largefont=cmbx8 } \def\cmrthirteen{ @@ -106,7 +106,7 @@ \font\italicfont=cmti7 \font\textmusic=cmmi9 \font\boldfont=cmbx7 - \font\largefont=cmbx9 + \font\largefont=cmbx9 } \def\musixsixteendefs{ \sixteenfonts @@ -159,8 +159,6 @@ \input dyndefs \input fetdefs -%\input taupindefs -%\input eglerdefs \def\emptybar{} @@ -231,6 +229,7 @@ \def\setdynamic#1{\dynfont #1} \def\setfinger#1{\fingerfont #1} \def\setlarge#1{\largefont #1} +\def\setnumber#1{\fetanummer #1} % the interline symbol. Redefine to remove it. \def\defaultlineseparator{\vbox{\mussepline\vskip -5pt\mussepline}} diff --git a/tex/taupindefs.tex b/tex/taupindefs.tex deleted file mode 100644 index 3c5921c4f1..0000000000 --- a/tex/taupindefs.tex +++ /dev/null @@ -1,145 +0,0 @@ -\def\musixtwentyfonts{ - \font\dynfont=cmbxti10 scaled \magstep2 - \font\slurufont=xslu20 - \font\slurdfont=xsld20 - \font\slurhfont=xslz20 - \font\hslurufont=xslhu20 - \font\hslurdfont=xslhd20 - \font\hslurhfont=xslhz20 - \font\musicfnt=musix20 - \font\musicdraw=musixsps - \fettwentydefs -} - - -\def\musixsixteenfonts{ - \font\normaltextfont=cmr8 %\textfont is a primitive - \font\smalltextfont=cmr6 - \font\slurufont=xslu16 - \font\slurdfont=xsld16 - \font\slurhfont=xslz20 % sigh - \font\hslurufont=xslhu16 - \font\hslurdfont=xslhd16 - \font\hslurhfont=xslhz20 - \font\musicfnt=musix16 - \font\dynfont=cmbxti10 scaled \magstep1 - \font\musicdraw=musixsps - \font\musicmathfont=cmsy8 - \fetsixteendefs -} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% provide interface to musixtex fonts -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \musicdef\breveball{'040} -% \musicdef\longaball{'047} -% \musicdef\quartball{'007} -% \musicdef\halfball{'010} -% \musicdef\wholeball{'011} -\musicdef\halfrest{'074} -\musicdef\wholerest{'075} -\musicdef\breverest{'072} -\musicdef\longarest{'073} - -%% hmm -\musicdef\outsidehalfrest{10} -\musicdef\outsidewholerest{11} -% \musicdef\quartrest{62} -% \musicdef\eighthrest{63} -% \musicdef\sixteenthrest{64} -% \musicdef\thirtysecondrest{65} -% \musicdef\sixtyfourthrest{66} -% \musicdef\hundredtwentyeighthrest{67} -\musicdef\sharp{52} -\musicdef\flat{50} -\musicdef\natural{54} -\musicdef\sharpsharp{53} -\musicdef\flatflat{51} - -\musicdef\singledot{'00} -\musicdef\doubledot{'01} -\musicdef\tripledot{'02} -\musicdef\mussepline{155} - -\musicdef\violinclef{71} -\musicdef\bassclef{73} -\musicdef\altoclef{75} -\musicdef\cviolinclef{72} -\musicdef\cbassclef{74} -\musicdef\caltoclef{76} - -\musicdef\deighthflag{45} -\musicdef\dsixteenthflag{46} -\musicdef\dthirtysecondflag{47} -\musicdef\dsixtyfourthflag{48} -\musicdef\dhundredtwentyeighthflag{49} - -% pointing up -\musicdef\ueighthflag{40} -\musicdef\usixteenthflag{41} -\musicdef\uthirtysecondflag{42} -\musicdef\usixtyfourthflag{43} -\musicdef\uhundredtwentyeighthflag{44} - -\maccentdef\repeatcolon{55}{2/1} -\def\eighthflag{\topalign{\ueighthflag}} -\def\sixteenthflag{\topalign{\usixteenthflag}} -\def\thirtysecondflag{\topalign{\uthirtysecondflag}} -\def\sixtyfourthflag{\topalign{\usixtyfourthflag}} -\def\hundredtwentyeighthflag{\topalign{\uhundredtwentyeighthflag}} - -\def\cquartrest{\vertcenter\quartrest} -\def\ceighthrest{\vertcenter\eighthrest} -\def\csixteenthrest{\vertcenter\sixteenthrest} -\def\cthirtysecondrest{\vertcenter\thirtysecondrest} -\def\csixtyfourthrest{\vertcenter\sixtyfourthrest} -\def\chundredtwentyeighthrest{\vertcenter\hundredtwentyeighthrest} - -\def\lsingledot{\kern-\notewidth\singledot} -\def\ldoubledot{\kern-\notewidth\doubledot} -\def\ltripledot{\kern-\notewidth\tripledot} - -\musicdef\turn{67} -\maccentdef\sforzato{30}{-3/2} -\maccentdef\marcato{20}{-1/1} -\maccentdef\imarcato{21}{1/1} -\maccentdef\staccato{24}{-1/1} -\maccentdef\istaccato{25}{1/1} -\maccentdef\staccatissimo{28}{-5/5} -\maccentdef\istaccatissimo{29}{2/5} -\maccentdef\portato{18}{-6/5} -\maccentdef\iportato{19}{3/5} -\maccentdef\tenuto{26}{-1/1} -\maccentdef\itenuto{27}{1/1} -\maccentdef\fermata{80}{-1/1} -\maccentdef\ifermata{81}{1/1} - -\musicdef\spicato{28} -\musicdef\ispicato{29} -\musicdef\upbow{23} -\musicdef\downbow{22} - -\def\tr{{\it tr}} -\def\pianobrace#1{{\musicdraw\char#1}} - -% \def\beamuslope#1#2{{\count0=#2\advance\count0 by#1 -% \advance\count0 by 122 -% \musicfnt\char\count0}} -% \def\beamdslope#1#2{{\count0=#2\advance\count0 by#1 -% \advance\count0 by 186 -% \musicfnt\char\count0}} - - - -\def\beamslope#1#2{{\count0=#2\advance\count0 by#1 - \advance\count0by128 - {\vetfont\char\count0}}} - -\def\slurcharh#1{{\slurhfont\char#1}} -\def\slurcharu#1{{\slurufont\char#1}} -\def\slurchard#1{{\slurdfont\char#1}} -\def\hslurcharh#1{{\hslurhfont\char#1}} -\def\hslurcharu#1{{\hslurufont\char#1}} -\def\hslurchard#1{{\hslurdfont\char#1}} -\def\brace#1{\count0=148\advance\count0 by #1\musicdraw\char\count0} -\def\crescendosym#1{\count0=84\advance\count0 by #1\musicdraw\char\count0} -\def\decrescendosym#1{\count0=116\advance\count0 by #1\musicdraw\char\count0} -- 2.39.2