From 30270f615f32a6b93e7b09bf55d1b8a7d7aad7ca Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 19 Oct 1998 14:09:33 +0200 Subject: [PATCH] release: 1.0.17 --- AUTHORS.txt | 31 +- BUGS | 5 + Documentation/links.yo | 8 + Documentation/tex/colorado.bib | 630 ++++--- Documentation/tex/fonts.doc | 16 + Documentation/tex/refman.yo | 22 +- Documentation/tex/tutorial.yo | 8 +- Documentation/topdocs/AUTHORS.yo | 16 +- Documentation/topdocs/INSTALL.yo | 77 +- Documentation/topdocs/index.yo | 4 - INSTALL.txt | 152 +- NEWS | 45 +- TODO | 48 +- VERSION | 4 +- buildscripts/lilypond-login.sh | 13 + buildscripts/lilypond-profile.sh | 2 +- buildscripts/set-lily.sh | 2 +- configure.in | 2 +- debian/TODO | 3 - debian/changelog | 47 +- debian/control | 8 +- debian/control.foka | 8 +- debian/control.in | 8 +- debian/copyright | 11 +- debian/out/control | 8 +- debian/postrm | 8 +- debian/rules | 65 +- debian/watch | 4 +- flower/hash.cc | 33 + flower/include/dictionary-iter.hh | 49 +- flower/include/dictionary.hh | 181 +- init/declarations.ly | 2 - init/engraver.ly | 9 +- init/property.ly | 12 - init/scm.ly | 30 - input/test/keys.ly | 4 +- input/test/time.fly | 2 - lily/atom.cc | 2 - lily/auto-plet-engraver.cc | 19 +- lily/engraver.cc | 7 +- lily/graphical-lisp-element.cc | 47 - lily/include/atom.hh | 3 +- lily/include/auto-plet-engraver.hh | 4 +- lily/include/engraver.hh | 1 - lily/include/graphical-lisp-element.hh | 39 - lily/include/key-item.hh | 16 +- lily/include/lily-guile.hh | 17 - lily/include/lily-proto.hh | 1 - lily/include/local-key-item.hh | 3 +- lily/include/lookup.hh | 6 +- lily/include/musical-request.hh | 2 - lily/include/notename-table.hh | 2 +- lily/include/paper-outputter.hh | 2 +- lily/include/ps-lookup.hh | 3 +- lily/include/ps-lookup.hh.orig | 39 - lily/include/score-element-info.hh | 2 - lily/include/score-engraver.hh | 1 - lily/include/slur-engraver.hh | 2 - lily/include/tex-lookup.hh | 3 +- lily/include/tex-lookup.hh.orig | 42 - lily/key-engraver.cc | 11 +- lily/key-item.cc | 53 +- lily/lily-guile.cc | 61 - lily/local-key-engraver.cc | 6 - lily/local-key-item.cc | 25 +- lily/lookup.cc | 61 +- lily/lookup.cc.orig | 422 ----- lily/main.cc | 61 +- lily/music-iterator.cc | 2 +- lily/musical-request.cc | 7 +- lily/my-lily-lexer.cc | 1 - lily/notename-table.cc | 4 +- lily/paper-def.cc | 7 +- lily/paper-outputter.cc | 12 +- lily/parser.yy | 18 +- lily/parser.yy.orig | 1504 ----------------- lily/ps-lookup.cc | 38 +- lily/ps-outputter.cc | 4 +- lily/scope.cc | 8 +- lily/score-element-info.cc | 9 - lily/score-engraver.cc | 15 +- lily/slur-engraver.cc | 22 +- lily/symtable.cc | 13 +- lily/tex-lookup.cc | 10 +- lily/tex-outputter.cc | 2 +- lily/ties-engraver.cc | 16 +- lily/translator-group.cc | 40 +- make/GNUmakefile | 4 - make/STATE-VECTOR | 106 -- make/lilypond.spec.in | 16 +- make/mutopia-rules.make | 4 +- make/out/lelievijver.lsm | 8 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 20 +- make/stepmake.make | 2 +- mf/GNUmakefile | 4 +- mf/feta-slag.mf | 1 - .../Cembalo-Partitas/Partita_II_Capriccio.ly | 498 ++++++ mutopia/gallina.ly | 63 +- scripts/GNUmakefile | 2 +- scripts/convert-mudela.py | 52 +- scripts/{ly2dvi.sh => ly2dvi-old.sh} | 0 scripts/{ly2dvi32.py => ly2dvi.py} | 0 scripts/mudela-book.py | 37 +- stepmake/TODO | 2 + stepmake/stepmake/generic-targets.make | 6 - stepmake/stepmake/toplevel-targets.make | 1 - test/hash.cc | 39 + 108 files changed, 1793 insertions(+), 3352 deletions(-) create mode 100644 buildscripts/lilypond-login.sh create mode 100644 flower/hash.cc delete mode 100644 init/scm.ly delete mode 100644 lily/graphical-lisp-element.cc delete mode 100644 lily/include/graphical-lisp-element.hh delete mode 100644 lily/include/ps-lookup.hh.orig delete mode 100644 lily/include/tex-lookup.hh.orig delete mode 100644 lily/lily-guile.cc delete mode 100644 lily/lookup.cc.orig delete mode 100644 lily/parser.yy.orig delete mode 100644 make/STATE-VECTOR create mode 100644 mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Capriccio.ly rename scripts/{ly2dvi.sh => ly2dvi-old.sh} (100%) rename scripts/{ly2dvi32.py => ly2dvi.py} (100%) create mode 100644 test/hash.cc diff --git a/AUTHORS.txt b/AUTHORS.txt index e17ad4f902..c92e48df1a 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -21,7 +21,7 @@ o Tom Cato Amundsen , cembalo-par- tita in mudela. o Mats Bengtsson , - http://www.s3.kth.se/~matsb clef stuff, key stuff, + http://www.s3.kth.se/~matsb/ clef stuff, key stuff, swedish notenames, testing, general comments. o Eric Bullinger , accidental trans- @@ -36,8 +36,8 @@ o Neil Jerram . parts of Documenta- tion/Vocab* o Donald Ervin Knuth, http://www.cs-staff.stan- - ford.edu/~knuth mf/ital-*.mf (these were taken from the - CM fonts) + ford.edu/~knuth/ mf/ital-*.mf (these were taken from + the CM fonts) o Werner Lemberg , misc bugfixes, some Beam and Stem code. @@ -45,21 +45,22 @@ o Werner Lemberg , misc o David R. Linn , Mailing list maintenance. -o Adrian Moriano <> Documentation fixes, glossary. +o Adrian Mariano <> Reference manual, tutorial fixes, + glossary. o Han-Wen Nienhuys , - http://www.cs.uu.nl/~hanwen - Main author (initials: HWN). + http://www.cs.uu.nl/~hanwen/ Main author (initials: + HWN). o Jan Nieuwenhuizen , - http://www.xs4all.nl/~jantien - Main author (initials: JCN). + http://www.xs4all.nl/~jantien/ Main author (initials: + JCN). -o Alexandre Oliva , http://sun- - site.unicamp.br/~oliva testing +o Alexandre Oliva , http://sun- + site.unicamp.br/~oliva/ testing -o Franc,ois Pinard , parts of - Documentation/Vocab*, started internationalization +o Franc,ois Pinard , parts of + Documentation/Vocab*, started internationalization stuff o Jeffrey B. Reed , Windows-NT support. @@ -67,9 +68,9 @@ o Jeffrey B. Reed , Windows-NT support. o Shay Rojanski Some mudela source. -Your name could be here! If you want to help, then take a -look at the SMALLISH PROJECTS section of in the file TODO. +Your name could be here! If you want to help, then take a +look at the SMALLISH PROJECTS section of in the file TODO. Some do not involve coding C++ -[And of course we sincerely thank J.S.Bach, F.Schubert, T. +[And of course we sincerely thank J.S.Bach, F.Schubert, T. Merula and W.A.Mozart for their beautiful music] diff --git a/BUGS b/BUGS index 36b24a234a..054d425246 100644 --- a/BUGS +++ b/BUGS @@ -3,6 +3,11 @@ This documents serious bugs ******** +[Linux Intel, EGCS-1.1b] + +Compiling with -O2 -finline-functions will cause crashes during +parsing stage. + [All platforms] diff --git a/Documentation/links.yo b/Documentation/links.yo index da883c4a68..1ff0bb7781 100644 --- a/Documentation/links.yo +++ b/Documentation/links.yo @@ -63,6 +63,12 @@ it()lurl(ftp://sca.uwaterloo.ca/pub/lilypond) it()[your mirror here] ) +Debian releases are located at +lurl(http://cgi.debian.org/www-master/debian.org/Packages/stable/tex/lilypond.html) +and +lurl(ftp://ftp.debian.org/debian/dists/unstable/main/binary-i386/tex/lilypond_*.deb) + + sect(News) The following newsgroups all contain material relevant to LilyPond @@ -133,3 +139,5 @@ dit(lurl(http://www.redhat.com/)) RedHat Software Inc. develops and markets a GNU/Linux distribution (of which we are avid users) ) + + diff --git a/Documentation/tex/colorado.bib b/Documentation/tex/colorado.bib index 9aa8871ac4..6d7cf51200 100644 --- a/Documentation/tex/colorado.bib +++ b/Documentation/tex/colorado.bib @@ -7,500 +7,498 @@ % TODO: fix the labelling. @Book {6, -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}, -note = {subject: Musical notation}, + 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}, + note = {subject: Musical notation}, } @Book {15, -author ={Carl Brandt and Clinton Roemer}, -title = {Standardized Chord Symbol Notation}, -address={Sherman Oaks, CA}, -publisher={Roerick Music Co.}, -note ={subject: musical notation}, + author ={Carl Brandt and Clinton Roemer}, + title = {Standardized Chord Symbol Notation}, + address={Sherman Oaks, CA}, + publisher={Roerick Music Co.}, + note ={subject: musical notation}, } @Book {22, -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}, -note = {subject: Musical notation --Handbooks, manuals}, + 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}, + note = {subject: Musical notation --Handbooks, manuals}, } @Book {31, -title = {Music Printing & Publishing}, -author ={Donald W. Krummel \& Stanley Sadie}, -year = {1990}, -publisher= {Macmillan Press}, -note ={subject: musical notation}, + title = {Music Printing & Publishing}, + author ={Donald W. Krummel \& Stanley Sadie}, + year = {1990}, + publisher= {Macmillan Press}, + note ={subject: musical notation}, } %series={The Norton/Grove Handbooks in Music.}, % publisher={W.W. Norton}, @Book {40, -author={Foss, Hubert}, -title = {Music Printing}, -series = {Practical Printing and Binding}, -address={London}, -publisher={Oldhams Press Ltd., Long Acre}, -note ={subject: musical notation}, + author={Foss, Hubert}, + title = {Music Printing}, + series = {Practical Printing and Binding}, + address={London}, + publisher={Oldhams Press Ltd., Long Acre}, + note ={subject: musical notation}, } @Book {48, -author = {Steele, Robert}, -year = {1903}, -title = {The Earliest English Music Printing}, -address={London}, -note= {subject: history of music printing and engraving}, + author = {Steele, Robert}, + year = {1903}, + title = {The Earliest English Music Printing}, + address={London}, + note= {subject: history of music printing and engraving}, } @Book {54, -author={Austin, Ernest}, -title = {The Story of Music Printing}, -address={London}, -publisher={Lowe and Brydone Printers, Ltd.}, -note= {subject: history of music printing and engraving}, + author={Austin, Ernest}, + title = {The Story of Music Printing}, + address={London}, + publisher={Lowe and Brydone Printers, Ltd.}, + note= {subject: history of music printing and engraving}, } @Book {63, -author={?}, -title = {Pictoral History of Music Printing}, -address={Elhardt, Indiana}, -publisher={H. and A. Selmer, Inc.}, -note= {subject: history of music printing and engraving}, + author={?}, + title = {Pictoral History of Music Printing}, + address={Elhardt, Indiana}, + publisher={H. and A. Selmer, Inc.}, + note= {subject: history of music printing and engraving}, } @Book {77, -author = {Wintermitz, Emmanuel}, -year = {1955}, -title = {Musical Autographs from Monteverdi to Hindemith}, -address={Princeton}, -publisher={Princeton University Press}, -note= {subject: history of music printing and engraving}, + author = {Wintermitz, Emmanuel}, + year = {1955}, + title = {Musical Autographs from Monteverdi to Hindemith}, + address={Princeton}, + publisher={Princeton University Press}, + note= {subject: history of music printing and engraving}, } @Book {92, -author = {Novello, A}, -year = {1847}, -title = {Some Account of the Methods of Musick Printing, with Specimens of the Various Sizes of Moveable Types and of Other Matters}, -address={London}, -note={ subject: history of music printing and engraving}, + author = {Novello, A}, + year = {1847}, + title = {Some Account of the Methods of Musick Printing, with Specimens of the Various Sizes of Moveable Types and of Other Matters}, + address={London}, + note={ subject: history of music printing and engraving}, } @Book {100, -author={Chrsander, F.}, -year={18??}, -title={A Sketch of the HIstory of Music printing, from the 15th to the 16th century}, -note={ subject: history of music printing and engraving}, + author={Chrsander, F.}, + year={18??}, + title={A Sketch of the HIstory of Music printing, from the 15th to the 16th century}, + note={ subject: history of music printing and engraving}, } @Article {squire1897, -author = {Squire, W}, -year = {1897}, -title = {Notes on Early Music Printing}, -journal = {Bibliographica}, -volume={iii}, -number={99}, -note={ subject: history of music printing and engraving}, + author = {Squire, W}, + year = {1897}, + title = {Notes on Early Music Printing}, + journal = {Bibliographica}, + volume={iii}, + number={99}, + note={ subject: history of music printing and engraving}, } @Article{113, -author = {Meyer, K. and O'Meara, J}, -year = {1935}, -title = {The Printing of Music, 1473-1934}, -journal = {The Dolphin}, -volume={ ii}, -pages={ 171--207}, -note={ subject: history of music printing and engraving}, + author = {Meyer, K. and O'Meara, J}, + year = {1935}, + title = {The Printing of Music, 1473-1934}, + journal = {The Dolphin}, + volume={ ii}, + pages={ 171--207}, + note={ subject: history of music printing and engraving}, } %% 4th ver., @Article {120, -author = {Pattison, B}, -year = {1939}, -title = {Notes on Early Music Printing}, -journal = {The Library}, -note={subject: history of music printing and engraving}, -volume={xix}, -pages={389-421}, + author = {Pattison, B}, + year = {1939}, + title = {Notes on Early Music Printing}, + journal = {The Library}, + note={subject: history of music printing and engraving}, + volume={xix}, + pages={389-421}, } @Book {136, -author = {King, H}, -year = {1964}, -title = {Four Hundred Years of Music Printing}, -address={London}, -note={ subject: history of music printing and engraving}, + author = {King, H}, + year = {1964}, + title = {Four Hundred Years of Music Printing}, + address={London}, + note={ subject: history of music printing and engraving}, } %(Rev.1961). @Book{150, -author={Deutsch, O.F.}, -year ={1946}, -title = {Music Publishers' Numbers}, -address={London}, -note={ subject: history of music printing and engraving}, + author={Deutsch, O.F.}, + year ={1946}, + title = {Music Publishers' Numbers}, + address={London}, + note={ subject: history of music printing and engraving}, } @Book {151, -author = {Marco, G.A}, -year = {1962}, -title = {The Earliest Music Printers of Continental Europe: a Checklist of Facsimiles Illustrating Their Work}, -address={Charlottesville, Virginia}, -note={ subject: history of music printing and engraving}, + author = {Marco, G.A}, + year = {1962}, + title = {The Earliest Music Printers of Continental Europe: a Checklist of Facsimiles Illustrating Their Work}, + address={Charlottesville, Virginia}, + note={ subject: history of music printing and engraving}, } @Article {158, -author = {Kinkeldey, O}, -year = {1932}, -title = {Music And Music Printing in Incunabula}, -journal = {Papers of the Bibliographical Society of America}, -volume={ xxvi}, -pages={89-118}, -note={ subject: history of music printing and engraving}, + author = {Kinkeldey, O}, + year = {1932}, + title = {Music And Music Printing in Incunabula}, + journal = {Papers of the Bibliographical Society of America}, + volume={ xxvi}, + pages={89-118}, + note={ subject: history of music printing and engraving}, } @Book {166, -author = {Oldman, C.B}, -year = {1934}, -title = {Collecting Musical First Editions}, -address={London}, -note={ subject: history of music printing and engraving}, + author = {Oldman, C.B}, + year = {1934}, + title = {Collecting Musical First Editions}, + address={London}, + note={ subject: history of music printing and engraving}, } @Book{170, -author={Carter, J}, -year={1934}, -title = {New Paths in Book Collecting}, -address={London}, -note={ subject: history of music printing and engraving}, + author={Carter, J}, + year={1934}, + title = {New Paths in Book Collecting}, + address={London}, + note={ subject: history of music printing and engraving}, } @Book {179, -author={Krummel, D.W.}, -year={1958}, -month={9}, -title = {Graphic Analysis in Application to Early American Engraved Music}, -journal = {Notes}, -volume={xvi}, -pages={213}, -note={ subject: history of music printing and engraving}, + author={Krummel, D.W.}, + year={1958}, + month={9}, + title = {Graphic Analysis in Application to Early American Engraved Music}, + journal = {Notes}, + volume={xvi}, + pages={213}, + note={ subject: history of music printing and engraving}, } @Book {189, -author = {Krummel, D.W}, -year = {1971}, -title = {Oblong Format in Early Music Books}, -journal = {The Library}, -volume={5th ser., xxvi}, -pages={312}, -note={ subject: history of music printing and engraving}, + author = {Krummel, D.W}, + year = {1971}, + title = {Oblong Format in Early Music Books}, + journal = {The Library}, + volume={5th ser., xxvi}, + pages={312}, + note={ subject: history of music printing and engraving}, } @Book {198, -author = {King, A.H}, -year = {1973}, -title = {The 50th Anniversary of Music Printing}, + author = {King, A.H}, + year = {1973}, + title = {The 50th Anniversary of Music Printing}, } @Book {204, -author={Rastall, Richard}, -year={1982}, + author={Rastall, Richard}, + year={1982}, title = {The notation of Western music : an introduction}, -address={New York, N.Y.}, -publisher={St. Martin's Press}, -note = {Musical notation}, + address={New York, N.Y.}, + publisher={St. Martin's Press}, + note = {Musical notation}, } @Book {215, -author = {Tappolet, Willy}, -year = {1947}, -title = {La Notation Musicale}, -address={Paris}, -note={subject: general notation}, -publisher={Neuch\^atel}, + author = {Tappolet, Willy}, + year = {1947}, + title = {La Notation Musicale}, + address={Paris}, + note={subject: general notation}, + publisher={Neuch\^atel}, } @Book {223, -author = {Williams, C.F. Abdy}, -year = {1903}, -title = {The Story of Notation}, -address={New York}, -publisher={Charles Scribner's Sons}, -note={subject: general notation}, + author = {Williams, C.F. Abdy}, + year = {1903}, + title = {The Story of Notation}, + address={New York}, + publisher={Charles Scribner's Sons}, + note={subject: general notation}, } @Book {239, -author={Apel, Willi}, -year={1953}, -title = {The notation of polyphonic music, 900-1600}, -address={Cambridge, Mass}, -institution={Mediaeval Academy of America}, -note = {Musical notation}, + author={Apel, Willi}, + year={1953}, + title = {The notation of polyphonic music, 900-1600}, + address={Cambridge, Mass}, + institution={Mediaeval Academy of America}, + note = {Musical notation}, } @Book {248, -author={Berger, Anna Maria Busse}, -year={1993}, -title = {Mensuration and proportion signs : origins and evolution}, -address={Oxford, England}, -publisher={Clarendon Press}, -scnd_address={New York}, -scnd_publisher={Oxford University Press }, -note={subject: early notation}, + author={Berger, Anna Maria Busse}, + year={1993}, + title = {Mensuration and proportion signs : origins and evolution}, + address={Oxford, England}, + publisher={Clarendon Press}, + scnd_address={New York}, + scnd_publisher={Oxford University Press }, + note={subject: early notation}, } @Book {258, -author={Parrish, Carl}, -year={1957}, + author={Parrish, Carl}, + year={1957}, title = {The notation of medieval music}, -address={New York}, -publisher={Norton}, -note = {Musical notation}, + address={New York}, + publisher={Norton}, + note = {Musical notation}, } @Book {269, -author = {Parrish, Carl}, -year = {1946}, -title = {The Notation of Medieval Music}, -address={New York}, -publisher={Carl Fischer, Inc.}, -note={subject: early notation}, + author = {Parrish, Carl}, + year = {1946}, + title = {The Notation of Medieval Music}, + address={New York}, + publisher={Carl Fischer, Inc.}, + note={subject: early notation}, } @Book {277, -author = {Patch, Harry}, -year = {1949}, -title = {Genesis of a Music}, -address={Madison}, -publisher={University of Wisconsin Press}, -note={subject: early notation}, + author = {Patch, Harry}, + year = {1949}, + title = {Genesis of a Music}, + address={Madison}, + publisher={University of Wisconsin Press}, + note={subject: early notation}, } @Book {285, -author={Cage, John}, -year={1969}, + author={Cage, John}, + year={1969}, title = {Notations}, -address={New York}, -publisher={Something Else Press}, -note = {Music, Manuscripts, Facsimiles. + address={New York}, + publisher={Something Else Press}, + note = {Music, Manuscripts, Facsimiles. -Facsimiles of holographs from the Foundation for Contemporary -Performance Arts, with text by 269 composers, but rearranged using -chance operations.,V)} }, + Facsimiles of holographs from the Foundation for Contemporary + Performance Arts, with text by 269 composers, but rearranged using + chance operations.,V)} }, @Book {295, -author = {Gaburo, Virginia}, -year = {1977}, -title = {Notation}, -address={publisher= {Lingua Press}, -publisher={La Jolla, California}}, -note = {A Lecture about notation, new ideas about}, + author = {Gaburo, Virginia}, + year = {1977}, + title = {Notation}, + address={publisher= {Lingua Press}, + publisher={La Jolla, California}}, + note = {A Lecture about notation, new ideas about}, } @Book {306, -author = {Risatti, Howard}, -year = {1975}, -title = {New Music Vocabulary}, -address={Urbana, Illinois}, -publisher={University of Illinois Press}, -note = {A Guide to Notational Signs for Contemporary Music}, + author = {Risatti, Howard}, + year = {1975}, + title = {New Music Vocabulary}, + address={Urbana, Illinois}, + publisher={University of Illinois Press}, + note = {A Guide to Notational Signs for Contemporary Music}, } @Book {325, -author = {Cowell, Henry}, -year = {1930}, -title = {New Musical Resources}, -address={New York}, -publisher={Alfred A. Knopf, Inc.}, -note={subject: 20th century notation}, + author = {Cowell, Henry}, + year = {1930}, + title = {New Musical Resources}, + address={New York}, + publisher={Alfred A. Knopf, Inc.}, + note={subject: 20th century notation}, } @Article {333, -author = {Cowell, Henry}, -year = {1927}, -title = {Our Inadequate Notation}, -journal = {Modern Music}, -volume={4}, -number={3}, -note={subject: 20th century notation}, + author = {Cowell, Henry}, + year = {1927}, + title = {Our Inadequate Notation}, + journal = {Modern Music}, + volume={4}, + number={3}, + note={subject: 20th century notation}, } @Book {342, -author = {Bowers, Roger}, -year = {1992}, -title = {Music & Letters}, -volume={73}, -number={3}, -month={August}, -pages={347(52)}, -note={Some reflection upon notation and proportion in Monteverdi's mass and vespers}, + author = {Bowers, Roger}, + year = {1992}, + title = {Music & Letters}, + volume={73}, + number={3}, + month={August}, + pages={347(52)}, + note={Some reflection upon notation and proportion in Monteverdi's mass and vespers}, } @Book {353, -author = {Brainard, Paul}, -year = {1992}, -title = {Current Musicology}, -number={50}, -month={July-Dec}, -pages={21(26)}, -note={Proportional notation in the music of Schutz and his contemporaries in the 17th Century}, + author = {Brainard, Paul}, + year = {1992}, + title = {Current Musicology}, + number={50}, + month={July-Dec}, + pages={21(26)}, + note={Proportional notation in the music of Schutz and his contemporaries in the 17th Century}, } @Book {362, -author = {Monelle, Raymond}, -year = {1989}, -title = {Comparative Literature}, -volume={41}, number={3}, -month={Summer}, -pages={252(18)}, + author = {Monelle, Raymond}, + year = {1989}, + title = {Comparative Literature}, + volume={41}, number={3}, + month={Summer}, + pages={252(18)}, -note={Music notation and the poetic foot}, + note={Music notation and the poetic foot}, } @Book {373, -author = {Pinegar, Sandra}, -year = {1993}, -title = {Current Musicology}, -number={53}, -month={July}, -pages={99(10)}, -note={The seeds of notation and music paleography.}, + author = {Pinegar, Sandra}, + year = {1993}, + title = {Current Musicology}, + number={53}, + month={July}, + pages={99(10)}, + note={The seeds of notation and music paleography.}, } @Book {382, -author = {Smith, Norman E}, -year = {1990}, -title = {Current Musicology}, -number={45-47}, -month={Jan-Dec}, -pages={283(22)}, -note={The notation of fractio modi.}, + author = {Smith, Norman E}, + year = {1990}, + title = {Current Musicology}, + number={45-47}, + month={Jan-Dec}, + pages={283(22)}, + note={The notation of fractio modi.}, } @Book {392, -author = {Treitler, Leo}, -year = {1992}, -title = {The Journal of Musicology}, -volume={10}, -number={2}, -month={Spring}, -pages={131(61)}, + author = {Treitler, Leo}, + year = {1992}, + title = {The Journal of Musicology}, + volume={10}, + number={2}, + month={Spring}, + pages={131(61)}, -note={ The unwritten and written transmission, of medieval chant -and the start-up of musical notation. + note={ The unwritten and 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.}, + Notational practice developed in medieval music to address the written tradition for chant which interacted with the unwritten vocal tradition.}, } @Book {407, -author = {West, M.L}, -year = {1994}, -title = {Music & Letters}, -volume={75}, -number={2}, -month={May}, -pages={161(19)}, -note={The Babylonian musical notation and the Hurrian melodic texts. + author = {West, M.L}, + year = {1994}, + title = {Music & Letters}, + volume={75}, + number={2}, + month={May}, + pages={161(19)}, + note={The Babylonian musical notation and the Hurrian melodic texts. -A new way of deciphering the ancient Babylonian musical notation. + A new way of deciphering the ancient Babylonian musical notation. } } @Book {418, -author = {Brown, Earle}, -year = {1986}, -title = {Musical Quarterly}, -volume={72}, -month={Spring}, -pages={180(22)}, -note={The notation and performance of new music.}, + author = {Brown, Earle}, + year = {1986}, + title = {Musical Quarterly}, + volume={72}, + month={Spring}, + pages={180(22)}, + note={The notation and performance of new music.}, } @Book {426, -author = {Eggleston, Suzanne}, -year = {1994}, -title = {Notes}, -volume={51}, -number={2}, -month={Dec}, -pages={657(7)}, -journal={New periodicals}, -note={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 Music Notation News}, + author = {Eggleston, Suzanne}, + year = {1994}, + title = {Notes}, + volume={51}, + number={2}, + month={Dec}, + pages={657(7)}, + journal={New periodicals}, + note={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 Music Notation News}, } @Book {441, -author = {Fuller, David}, -year = {1989}, -title = {The Journal of Musicology}, -volume={7}, -number={1}, -month={Winter}, -pages={21(8)}, -note={ -Notes and inegales unjoined: defending a definition. (written-out inequalities in music notation). + author = {Fuller, David}, + year = {1989}, + title = {The Journal of Musicology}, + volume={7}, + number={1}, + month={Winter}, + pages={21(8)}, + note={ + Notes and inegales unjoined: defending a definition. (written-out inequalities in music notation). }}, @Book {454, -author = {Jones, David Evan}, -year = {1990}, -title = {Perspectives of New Music}, -note={ -Speech extrapolated. (includes notation) -} + author = {Jones, David Evan}, + year = {1990}, + title = {Perspectives of New Music}, + note={Speech extrapolated. (includes notation)} } @Book {464, -author = {Lependorf, Jeffrey}, -year = {1989}, -journal={Perspectives of New Music}, -volume={27}, + author = {Lependorf, Jeffrey}, + year = {1989}, + journal={Perspectives of New Music}, + volume={27}, number={2}, -month={Summer}, -pages={232(20)}, -note={ -Contemporary notation for the shakuhachi: a primer for composers. (Tradition and Renewal in the Music of Japan) }, + month={Summer}, + pages={232(20)}, + note={ + Contemporary notation for the shakuhachi: a primer for composers. (Tradition and Renewal in the Music of Japan) }, } @Book {478, -author = {Rastall, Richard}, -year = {1993}, -title = {Music & Letters}, -volume={74}, number={4}, -month={November}, -pages={639(2)}, + author = {Rastall, Richard}, + year = {1993}, + title = {Music & Letters}, + volume={74}, number={4}, + month={November}, + pages={639(2)}, -note={Equal Temperament Music Notation: The Ailler-Brennink -Chromatic Notation. Results and Conclusions of the Music Notation -Refor by the Chroma Foundation (book reviews). }, + note={Equal Temperament Music Notation: The Ailler-Brennink + Chromatic Notation. Results and Conclusions of the Music Notation + Refor by the Chroma Foundation (book reviews). }, } @Article {Francois92, @@ -515,7 +513,7 @@ Refor by the Chroma Foundation (book reviews). }, computer is used to write down music with accuracy never before achieved, the range of modern sounds has surpassed the relevance of the computer...}, -title={Writing without representation, and unreadable notation.}, + title={Writing without representation, and unreadable notation.}, } @Book {501, diff --git a/Documentation/tex/fonts.doc b/Documentation/tex/fonts.doc index c66fa3bfbd..bc5bce8640 100644 --- a/Documentation/tex/fonts.doc +++ b/Documentation/tex/fonts.doc @@ -4,6 +4,8 @@ \def\kdots{,\ldots,} \title{Not the Font-En-Tja font} \author{HWN \& JCN} +\def\preMudelaExample{} +\def\postMudelaExample{} \begin{document} \maketitle @@ -22,6 +24,14 @@ Ross\cite{ross} quite some of their insights were used. Although it is a matter of taste, I'd say that B\"arenreiter has the finest typography of all. +% +% stupid test to check convert-mudela.py. +% +% (so sue me) +\begin{mudela}[fragment,center] + \clef bass; c1 \clef alto; c'2 \clef treble; c''4 +\end{mudela} + \section{Bezier curves for slurs} @@ -290,6 +300,12 @@ position that remains is for the upper beam to hang. \end{eqnarray*} +\section{Layout of the source files} + +The main font (with the fixed size music glyphs) uses a the \TeX\ +logfile as a communication device. Use the specialised macros to +create and export glyphs. + \bibliographystyle{plain} \bibliography{engraving} diff --git a/Documentation/tex/refman.yo b/Documentation/tex/refman.yo index 5331fe1269..ae08ad2d24 100644 --- a/Documentation/tex/refman.yo +++ b/Documentation/tex/refman.yo @@ -952,10 +952,7 @@ file(.ly) extension must be given, and the filename must be quoted. (An unquoted string will not work here.) dit(code(\key) var(pitch)code(;)) Change key signature to that of -var(pitch)-major. The predefined identifiers code(\major) and -code(\minor) decide if all subsequent code(\key) commands are given in -major or minor, respectively. - +var(pitch)-major. dit(code(\keysignature) var(pitchseq)code(;)) Specify an arbitrary key signature. The pitches from var(pitch) will @@ -1299,10 +1296,7 @@ dit(code(defaultBarType)) Sets the default type of bar line. See code(\bar) keyword. -dit(code(keymodality)) The number of semitones that should be added to -the pitch given in the subsequent code(\key) commands to get the -corresponding major key, e.g. minor keys are specified by -code(keymodality=3). Is set by code(\major) and code(\minor). + dit(code(keyoctaviation)) If set to 1, then keys are the same in all octaves. If set to 0 then the key signature for different octaves can @@ -1329,16 +1323,16 @@ default) if you do not want key signatures printed. dit(code(timeSignatureStyle)) Changes the default two-digit layout for time signatures. The following values are recognized: description( - dit(code(C)) 4/4 and 2/2 are typeset as C and struck C, + dit(code(C)): 4/4 and 2/2 are typeset as C and struck C, respectively. All other time signatures are written with two digits. - dit(code(old)) 2/2, 3/2, 3/4, 4/4, 6/4 and 9/4 are typeset with + dit(code(old)): 2/2, 3/2, 3/4, 4/4, 6/4 and 9/4 are typeset with old-style mensuration marks. All other time signatures are written with two digits. - dit(code(1)) All time signatures are typeset with a single + dit(code(1)): All time signatures are typeset with a single digit, e.g. 3/2 is written as 3. dit(code(C2/2), code(C4/4), code(old2/2), code(old3/2), code(old3/4), code(old4/4), code(old6/4) or - code(old9/4)) Tells Lilypond to use a specific symbol as time + code(old9/4)): Tells Lilypond to use a specific symbol as time signature. ) The different time signature characters are shown below with @@ -1445,10 +1439,6 @@ code(castingalgorithm). Is equal to 1.0. dit(code(\infinity)) Used for setting the Score.beamslopedamping property. Is actually equal to 10000. dit(code(\left)) Used for setting textalignment property. Is equal to -1. -dit(code(\major)) All subsequent code(\key) commands are interpreted -as major keys. -dit(code(\minor)) All subsequent code(\key) commands are interpreted -as minor keys. dit(code(\mf)) Print mezzoforte symbol on preceeding note. dit(code(\mp)) Print mezzopiano symbol on preceeding note. dit(code(\nobreak)) Prevent a line break in music by using a large diff --git a/Documentation/tex/tutorial.yo b/Documentation/tex/tutorial.yo index 2ab0846829..02bdaaf9a3 100644 --- a/Documentation/tex/tutorial.yo +++ b/Documentation/tex/tutorial.yo @@ -697,11 +697,9 @@ dit(code(\clef) var(clefname)) This command sets the current clef for notation, \clef "alto"; c'4 ) dit(code(\key) var(pitch)) This command changes the current key signature. The - key signature is printed at the start of every line. The identifiers - code(\major) and code(\minor) can be used to decide if all the - subsequent code(\key) commands are major or minor, respectively. - The default is major keys. The key of C-minor can - thus be specified as `code(\key es)' or `code(\minor \key c)'. + key signature is printed at the start of every line. The argument + is the name of the corresponding major key. The key of C-minor can + thus be specified as `code(\key es)'. dit(code(\keysignature) var(pitchlist)) diff --git a/Documentation/topdocs/AUTHORS.yo b/Documentation/topdocs/AUTHORS.yo index 99a54a24a9..ad2ad26ed5 100644 --- a/Documentation/topdocs/AUTHORS.yo +++ b/Documentation/topdocs/AUTHORS.yo @@ -7,7 +7,7 @@ itemize( it()nemail(Tom Cato Amundsen)(tomcato@xoommail.com), cembalo-partita in mudela. it()nemail(Mats Bengtsson)(matsb@s3.kth.se), - lurl(http://www.s3.kth.se/~matsb) + lurl(http://www.s3.kth.se/~matsb/) clef stuff, key stuff, swedish notenames, testing, general comments. it()nemail(Eric Bullinger)(eric@aut.ee.ethz.ch), @@ -18,24 +18,22 @@ it()nemail(Anthony Fok)(foka@debian.org), debian package: debian/* it()nemail(Neil Jerram)(nj104@cus.cam.ac.uk). parts of Documentation/Vocab* -it()Donald Ervin Knuth, lurl(http://www.cs-staff.stanford.edu/~knuth) +it()Donald Ervin Knuth, lurl(http://www.cs-staff.stanford.edu/~knuth/) mf/ital-*.mf (these were taken from the CM fonts) it()nemail(Werner Lemberg)(xlwy01@uxp1.hrz.uni-dortmund.de), misc bugfixes, some Beam and Stem code. it()nemail(David R. Linn)(drl@vuse.vanderbilt.edu), Mailing list maintenance. -it()nemail(Adrian Moriano)() - Documentation fixes, glossary. +it()nemail(Adrian Mariano)() + Reference manual, tutorial fixes, glossary. it()nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl), - lurl(http://www.cs.uu.nl/~hanwen) - nl() + lurl(http://www.cs.uu.nl/~hanwen/) Main author (initials: HWN). it()nemail(Jan Nieuwenhuizen)(janneke@gnu.org), - lurl(http://www.xs4all.nl/~jantien) - nl() + lurl(http://www.xs4all.nl/~jantien/) Main author (initials: JCN). it()nemail(Alexandre Oliva)(oliva@dcc.unicamp.br), - lurl(http://sunsite.unicamp.br/~oliva) + lurl(http://sunsite.unicamp.br/~oliva/) testing it()nemail(Franc,ois Pinard)(pinard@iro.umontreal.ca), parts of Documentation/Vocab*, started internationalization stuff diff --git a/Documentation/topdocs/INSTALL.yo b/Documentation/topdocs/INSTALL.yo index c1cee4ed6b..75bc165155 100644 --- a/Documentation/topdocs/INSTALL.yo +++ b/Documentation/topdocs/INSTALL.yo @@ -39,7 +39,8 @@ it() Python 1.5 (Strictly speaking, you shouldn't need Python for sect(RUNNING) -GNU LilyPond does use a lot of resources. For operation you need the following: +GNU LilyPond does use a lot of resources. For operation you need the +following: itemize( it()TeX @@ -48,6 +49,21 @@ it()A PostScript printer and/or viewer (such as Ghostscript) is strongly Ghostscript installed. ) + +For running LilyPond successfully you have to help TeX and MetaFont +find various files. The recommended way of doing so is adjusting the +environment variables in the start-up scripts of your shell. An +example is given here for the Bourne shell: +verb(export MFINPUTS="/usr/local/share/lilypond/mf:" +export TEXINPUTS="/usr/local/share/lilypond/tex:" +) +The empty path component +represents TeX() and MetaFont's default search paths. Scripts with +the proper paths for the bourne and C-shell respectively are generated in +file(buildscripts/out/lilypond-profile) and +file(buildscripts/out/lilypond-login) during compilation. + + sect(RECOMMENDED) Although not strictly necessary, these are recommended to have. @@ -64,6 +80,9 @@ it()Bison (version 1.25 or newer). Check out lurl(ftp://ftp.gnu.org) or any mirror of this site. +it()GUILE (version 1.2) +Check out lurl(http://www.gnu.org/programs/guile.html) + it()Python (version 1.5 or newer). Check out lurl(ftp://ftp.python.org) or lurl(ftp://ftp.cwi.nl/pub/python). @@ -101,11 +120,26 @@ man2html can be had from lurl(http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Ne TeTeX users should not forget to rerun texhash. ) +Building the website requires pnmtopng. The version of file(pnmtopng) +that is distributed with RedHat 5.1 contains a bug (pnmtopng is +dynamically linked to the wrong version of libpng). Recompile it from +source, and make sure that the pnmtopng binary is linked statically to +the libpng that is included in libgr. + +verb( tar xzf libgr-2.0.13.tar.gz + make + cd png + rm libpng.so* + make pnmtopng +) + +You can then install the new pnmtopng into /usr/local/bin/ + sect(CONFIGURING and COMPILING) to install GNU LilyPond, simply type: verb( - configure --enable-tex-dir=XXXX --enable-mf-dir=YYYY + configure make make install ) @@ -120,17 +154,12 @@ verb( /usr/local/bin/mi2mu /usr/local/share/lilypond/* /usr/local/share/locale/{it,nl}/LC_MESSAGES/lilypond.mo - /usr/lib/texmf/texmf/tex/lilypond/* ) -You should specify directories that are in TeX()'s and MetaFont's -include path with the options (--enable-tex-dir) and -bf(--enable-mf-dir). If you don't specify any directories, the TeX() -include directory is detected dynamically, which is unreliable. The -above assumes that you are root and have the GNU development tools, -and your make is GNU make. If this is not the case, you can adjust -your environment variables to your taste: +The above assumes that you are root and have the GNU development +tools, and your make is GNU make. If this is not the case, you can +adjust your environment variables to your taste: verb( export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR" @@ -149,13 +178,6 @@ verb( In this case, you will have to set up MFINPUTS, and TEXINPUTS accordingly. -If you want to install GNU LilyPond in file(/usr/local), and your TeX has -no default hooks for local stuff, you can do: - -verb( - configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf -) - Since GNU LilyPond currently is beta, you are advised to also use verb( @@ -163,29 +185,18 @@ verb( --enable-checking ) -Other options include: +Options to configure include: description( -dit(bf(--enable-shared)) - Make a shared library (gnu/linux, solaris (?) only ) (TEMPORARILY -OUT OF ORDER) - +dit(bf(--enable-guile)) + Link in GUILE (experimental) dit(bf(--enable-printing)) Enable debugging print routines (lilypond bf(-D) option) dit(bf(--enable-optimise)) - Set maximum optimisation: compile with bf(-O2) + Set maximum optimisation: compile with bf(-O2). This can be +unreliable on some compiler/platform combinations (eg, DEC Alpha and PPC) dit(bf(--enable-profiling)) Compile with support for profiling. -dit(bf(--enable-tex-prefix)) - Set the directory where TeX and Metafont live. -dit(bf(--enable-tex-dir)) - Set then directory TeX input is in (detected as a subdir of - tex-prefix). This should be a directory that is reachable both for - tex and latex. On my system the best choice would be - file(/usr/lib/texmf/texmf/tex/generic//). -dit(bf(--enable-mf-dir)) - Set the directory metafont input is in (idem). On my system the best - choice would be file(/usr/lib/texmf/texmf/fonts/source/public/). dit(bf(--enable-config)) Output to a different configuration file. Needed for multi-platform builds diff --git a/Documentation/topdocs/index.yo b/Documentation/topdocs/index.yo index 734dbab853..1307c60e3b 100644 --- a/Documentation/topdocs/index.yo +++ b/Documentation/topdocs/index.yo @@ -31,9 +31,6 @@ nsubsect(Introduction) This is not a Fanmail/Hype page. These pages were entirely created from the LilyPond package-sources. -A document on LilyPond's music description language Mudela is -url(in the making)(DOEXPAND(docdir)/tex/DOEXPAND(outdir)/tutorial.html). - Note: These pages are created from the latest bf(development snapshots) of LilyPond, specifically, this page was made from LilyPond @TOPLEVEL_VERSION@.tar.gz @@ -42,7 +39,6 @@ nsect(Sites) description( dit(lurl(http://www.cs.uu.nl/people/hanwen/lilypond/))Han-Wen's site. -dit(lurl(http://www.xs4all.nl/~jantien/lilypond/))Jan's site. dit(lurl(http://www.realtime.net/~daboys/lilypond/))Jeff's Windows NT Distribution site. ) diff --git a/INSTALL.txt b/INSTALL.txt index c62032bee9..1b088819bc 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -94,6 +94,27 @@ o A PostScript printer and/or viewer (such as all embedded PostScript too if you have Ghostscript installed. +For running LilyPond successfully you have to help TeX and +MetaFont find various files. The recommended way of doing +so is adjusting the environment variables in the start-up +scripts of your shell. An example is given here for the +Bourne shell: + + + + + export MFINPUTS="/usr/local/share/lilypond/mf:" + export TEXINPUTS="/usr/local/share/lilypond/tex:" + + + + +The empty path component represents and MetaFont's default +search paths. Scripts with the proper paths for the bourne +and C-shell respectively are generated in build- +scripts/out/lilypond-profile and buildscripts/out/lilypond- +login during compilation. + 4: RECOMMENDED @@ -113,51 +134,80 @@ o Bison (version 1.25 or newer). Check out ftp://ftp.gnu.org or any mirror of this site. -o Python (version 1.5 or newer). Check out +o GUILE (version 1.2) Check out http://www.gnu.org/pro- + grams/guile.html + + +o Python (version 1.5 or newer). Check out ftp://ftp.python.org or ftp://ftp.cwi.nl/pub/python. -o Yodl. All documentation will be in Yodl. (1.30.17) +o Yodl. All documentation will be in Yodl. (1.30.17) ftp://pcnov095.win.tue.nl/pub/yodl http://www.cs.uu.nl/~hanwen/yodl o Texinfo. (version 3.12 or newer) -o GNU find Check out ftp://ftp.gnu.org or any mirror of +o GNU find Check out ftp://ftp.gnu.org or any mirror of this site. o The geometry package for LaTeX is needed to use ly2dvi. - Available at ftp://ftp.ctan.org/tex- + Available at ftp://ftp.ctan.org/tex- archive/macros/latex/contrib/supported/geometry or at mirror site ftp://ftp.dante.de o A fast computer (a full page of music typically takes 1 - minute on my 486/133, using the --enable-checking com- + minute on my 486/133, using the --enable-checking com- pile. It's lot slower than most MusiXTeX preprocessors) 5: WEBSITE -If you want to auto-generate Lily's website, you'll need +If you want to auto-generate Lily's website, you'll need some additional conversion tools. o xpmtoppm (from the Portable Bitmap Utilities) (For Red- - Hat Linux users: it is included within the package + Hat Linux users: it is included within the package libgr-progs). o Bib2html http://pertsserver.cs.uiuc.edu/~hull/bib2html. Which, in turn depends on man2html for proper installa- - tion. man2html can be had from http://askdon- + tion. man2html can be had from http://askdon- ald.ask.uni-karlsruhe.de/hppd/hpux/Network- ing/WWW/Man2html-1.05. TeTeX users should not forget to rerun texhash. +Building the website requires pnmtopng. The version of pnm- +topng that is distributed with RedHat 5.1 contains a bug +(pnmtopng is dynamically linked to the wrong version of +libpng). Recompile it from source, and make sure that the +pnmtopng binary is linked statically to the libpng that is + + +included in libgr. + + + + + + tar xzf libgr-2.0.13.tar.gz + make + cd png + rm libpng.so* + make pnmtopng + + + + + +You can then install the new pnmtopng into /usr/local/bin/ + 6: CONFIGURING and COMPILING @@ -168,7 +218,7 @@ to install GNU LilyPond, simply type: - configure --enable-tex-dir=XXXX --enable-mf-dir=YYYY + configure make make install @@ -179,6 +229,9 @@ to install GNU LilyPond, simply type: This will install a number of files, something close to: + + + /usr/local/man/man1/mi2mu.1 /usr/local/man/man1/convert-mudela.1 /usr/local/man/man1/mudela-book.1 @@ -187,20 +240,12 @@ This will install a number of files, something close to: /usr/local/bin/mi2mu /usr/local/share/lilypond/* /usr/local/share/locale/{it,nl}/LC_MESSAGES/lilypond.mo - /usr/lib/texmf/texmf/tex/lilypond/* - - - -You should specify directories that are in 's and MetaFont's -include path with the options (--enable-tex-dir) and ---enable-mf-dir. If you don't specify any directories, the -include directory is detected dynamically, which is unreli- -able. The above assumes that you are root and have the GNU -development tools, and your make is GNU make. If this is -not the case, you can adjust your environment variables to -your taste: +The above assumes that you are root and have the GNU devel- +opment tools, and your make is GNU make. If this is not the +case, you can adjust your environment variables to your +taste: @@ -229,24 +274,13 @@ is configure --prefix=$HOME/usr -In this case, you will have to set up MFINPUTS, and TEXIN- -PUTS accordingly. - -If you want to install GNU LilyPond in /usr/local, and your -TeX has no default hooks for local stuff, you can do: - - - - - - - configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf - +In this case, you will have to set up MFINPUTS, and TEXIN- +PUTS accordingly. -Since GNU LilyPond currently is beta, you are advised to +Since GNU LilyPond currently is beta, you are advised to also use @@ -258,43 +292,23 @@ also use --enable-checking +Options to configure include: - -Other options include: - - ---enable-shared - Make a shared library (gnu/linux, solaris (?) only ) - (TEMPORARILY OUT OF ORDER) - +--enable-guile + Link in GUILE (experimental) --enable-printing Enable debugging print routines (lilypond -D option) --enable-optimise - Set maximum optimisation: compile with -O2 + Set maximum optimisation: compile with -O2. This can + be unreliable on some compiler/platform combinations + (eg, DEC Alpha and PPC) --enable-profiling Compile with support for profiling. ---enable-tex-prefix - Set the directory where TeX and Metafont live. - ---enable-tex-dir - Set then directory TeX input is in (detected as a - - - subdir of tex-prefix). This should be a directory that - is reachable both for tex and latex. On my system the - best choice would be - /usr/lib/texmf/texmf/tex/generic//. - ---enable-mf-dir - Set the directory metafont input is in (idem). On my - system the best choice would be - /usr/lib/texmf/texmf/fonts/source/public/. - --enable-config Output to a different configuration file. Needed for multi-platform builds @@ -329,15 +343,14 @@ Example: suppose I want to build with and without profil- ing. 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 config- uration. @@ -384,6 +397,8 @@ CAVEATS o The -O2 option to gcc triggers a gcc bug on DEC Alpha in dstream.cc. You should turn off this flag for this + + file. @@ -393,6 +408,10 @@ EXAMPLE This is what I type in my xterm: + + + + lilypond someinput.ly tex someinput.tex xdvi someinput& @@ -447,6 +466,9 @@ erate this gif file by typing make gifs + + + in the directory Documentation. You can make the rpm by issuing diff --git a/NEWS b/NEWS index 53ffde5b77..5cff9ea377 100644 --- a/NEWS +++ b/NEWS @@ -1,28 +1,25 @@ ---- ../lilypond-1.0.16/NEWS Wed Oct 14 15:44:20 1998 -++ b/NEWS Sat Oct 17 22:49:37 1998 -@@ -1,3 +1,11 @@ -pl 16.mb1 - - bf: No unnecessary warnings about time signatures - - \major and \minor affects how all subsequent key signatures - are interpreted. - - Parser support for cautionary accidentals, i.e. accidentals - within parantheses. Syntax: cis? The main part of the - implementation is still missing. - - pl 16 - - read property ydirection and tieYDirection for tie direction. - - bf: slur over rest.pl 16.jcn1 - - dashed-slur through scheme - -pl 15.jcn4 - - more scheme hacks - -pl 15.jcn3 - - try at scheme in Atom - -pl 15.jcn2 # rest of - - graphical-lisp-element + silly half hook-up with autuplet +pl 17 + - fixed RPM building. + +pl 16.hwn1 + - ridiculous slur dims fixed. + - ly2dvi32.py -> ly2dvi.py, ly2dvi.sh -> ly2dvi-old + - use re iso. regex for python stuff. + - bf: mudela-book.py + - updated install directions. Made lilypond-login for csh + - bf: installdirs of MF stuff + - Dictionary implementation using hash tables (LilyPond is 3% faster) + - Cache [non]group_l_arr () calls in translator-group.cc (LilyPond is 4% faster) + +pl 16.uu1 + - debian URLs, make/stepmake.make patch + - further debian fixes. + +pl 14.tca1 + - partitas + - prall{mordent,prall} patch. +****** pl 16 - read property ydirection and tieYDirection for tie direction. - bf: slur over rest. diff --git a/TODO b/TODO index d6bef869f2..6c18aa1a12 100644 --- a/TODO +++ b/TODO @@ -9,10 +9,10 @@ grep for TODO and ugh/ugr/urg BUGS: - - * egcs-1.1 -O2 -finline-functions causes crash + * document new TeX/mf layout + * egcs-1.1 -O2 -finline-functions causes crash * formatting of input stuff. @@ -28,12 +28,6 @@ BUGS: * [/3 c8 c16 c c c]/1 - * I see that \prallprall and \prallmordent are identical. I think this is a - mistake, that \prallprall should not have the vertical line. - This can be fixed by removing the line - draw_mordent(twidth-0.5toverlap); - from the definition of \prallprall in mf/feta-slag.mf (see below) - * fix singleStaffBracket * repeat bars: need distance after ":|" and before "|:" @@ -65,8 +59,6 @@ BUGS: portato= \script { "portato" 0 -1 0 1 0 } - * MIDI spelling. - * Align_element::padding ? * uniformise property names. @@ -108,8 +100,6 @@ BUGS: * install TeX stuff into tex/generic directory. - * /etc/profile.d support for RPM. - * percussion note heads * mi2mu empty staffs. @@ -118,12 +108,6 @@ BUGS: * make GNU style webpages. - * There seems to be an install error in lilypond-1.0.0. Most of the - files in the "init" directory don't get installed in the - /usr/local/share/lilypond directory. The files installed are of - the form feta*.ly. In particular init.ly doesn't get installed. - I installed the files by hand and then the system seems to work. - * midi_instrument -> midiInstrument * horizontal centering of dynamics @@ -237,8 +221,6 @@ ydirection and hshift preset - abbreviation-beam -> (measured/unmeasured) tremolo - partial -> anacrouse - * libtoolize flowerlib - * shared lib * robustify Beam (in case of no stems, 32nd notes) @@ -250,12 +232,7 @@ ydirection and hshift preset * check for groff / troff/ nroff et * more intelligent file searching - - use kpsepath - - make LilyPond fully relocatable - - * use kpsepath to find all TeX dirs - - configure.in - - clean-fonts.sh + - make LilyPond RPM fully relocatable * nicen examples: - break-up heavily-nested score blocks @@ -287,15 +264,6 @@ ydirection and hshift preset * clefs (AG): The "8" should appear closer to the actual clef, touching it. - * scoping for properties? - - { c4 - \multi 2 < { \stemup .. } { \stemdown .. } > - c2 - } - - this modifies \stem for the c2 - * put errorlevel in Input class * junk nesting slurs @@ -341,12 +309,6 @@ ydirection and hshift preset * redhat (v?) graphical install bomb-out? - * egcs-1.03 ice: stem.cc:327; should localize bug (mine's still 10K) - - * gcc 2.8.1: see ice and RESIZE_ICE - - * xdvi: PS in magnifying glass. - * GNU diff 2.7: diff -rN does not see a new directory with empty file * GNU patch 2.1: if patch chokes on a @@ -363,8 +325,6 @@ ydirection and hshift preset * GNU indent: handle C++ - * GNU make: move hardcoded builtin rules to runtime ? - * GNU patch - 'double-fix' mode: ignore identical fix, rather than suggest to revert patch direction when (more or less? exactly) the same @@ -498,7 +458,6 @@ PROJECTS - Move all Score_elems, into libmutype.a - SGML - * Documentation - Doc (C) stuff of sheet music - a better format? SGML? TeX? Info? @@ -531,6 +490,7 @@ PROJECTS * Keys: - merge key{item} & localkey{item}? + - Major/Minor - spacing, national styles? * Support for TAB diff --git a/VERSION b/VERSION index 414f826013..951bd357fd 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=0 -PATCH_LEVEL=16 -MY_PATCH_LEVEL=mb1 +PATCH_LEVEL=17 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/buildscripts/lilypond-login.sh b/buildscripts/lilypond-login.sh new file mode 100644 index 0000000000..d4a482ebe6 --- /dev/null +++ b/buildscripts/lilypond-login.sh @@ -0,0 +1,13 @@ +#!/bin/csh + +# env. vars for the C-shell. + +# set environment for LilyPond. To be installed in /etc/profile.d/ +setenv GS_LIB "@datadir@/afm" +setenv GS_FONTPATH "@datadir@/ps" +setenv LILYINCLUDE "@datadir@/ly:@datadir@/afm" + +# include an empty path component for the system wide includes. +setenv MFINPUTS "@datadir@/mf:"${MFINPUTS:=":"} +setenv TEXINPUTS "@datadir@/tex:"${TEXINPUTS:=":"} + diff --git a/buildscripts/lilypond-profile.sh b/buildscripts/lilypond-profile.sh index c20fa45672..176f63629e 100644 --- a/buildscripts/lilypond-profile.sh +++ b/buildscripts/lilypond-profile.sh @@ -4,7 +4,7 @@ # set environment for LilyPond. To be installed in /etc/profile.d/ GS_LIB="@datadir@/afm" GS_FONTPATH="@datadir@/ps" -LILYINCLUDE="@datadir@/ly" +LILYINCLUDE="@datadir@/ly:@datadir@/afm" # include an empty path component for the system wide includes. MFINPUTS="@datadir@/mf:"${MFINPUTS:=":"} diff --git a/buildscripts/set-lily.sh b/buildscripts/set-lily.sh index 087ad63182..d44317dc8e 100755 --- a/buildscripts/set-lily.sh +++ b/buildscripts/set-lily.sh @@ -52,5 +52,5 @@ then ln ../.dstreamrc . fi -./configure --prefix=$prefix --enable-debugging --enable-printing --enable-checking --disable-optimise +./configure --prefix=$prefix --enable-debugging --enable-printing --enable-checking --disable-optimise --enable-guile diff --git a/configure.in b/configure.in index 6209c8af22..69f8966897 100644 --- a/configure.in +++ b/configure.in @@ -42,7 +42,7 @@ AC_STEPMAKE_MSGFMT AC_STEPMAKE_TEXMF # AC_STEPMAKE_TEXMF_DIRS AC_STEPMAKE_YODL -AC_CHECK_LIB(guile, scm_shell) + dnl should check out -print dnl huh? diff --git a/debian/TODO b/debian/TODO index 25818fbb82..8a5f21bd28 100644 --- a/debian/TODO +++ b/debian/TODO @@ -2,6 +2,3 @@ Fri, 6 Feb 1998 17:24:49 -0700: * Compile mudela-mode.el into mudela-mode.elc * Install /etc/emacs/site-start.d/50lilypond.el * Figure out how to make mudela-mode work on my computer. :-) - -Sun, 26 Apr 1998 21:11:32 -0600: - * Remove preinst from upstream source diff --git a/debian/changelog b/debian/changelog index c56fe5d3d1..26392962b3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,53 @@ +lilypond (1.0.16-1) unstable; urgency=low + + * New upstream release. + * [debian/{copyright,control}]: pcnov095.win.tue.nl -> ftp.cs.uu.nl + (New upstream master FTP site). Also updated JCN's web site URL. + * [debian/rules]: + - Now, in the "clean:" target, runs either + "find . -user root | xargs -r chown $$SUDO_USER.$$SUDO_GID" or + "find . -user root | xargs -r chown $$LOGNAME" to deal with all those + root-owned "out/*" files generated during a "sudo debian/rules clean" + run. Thanks to Roman Hodek + for reporting the problem! (closes: Bug#27044) + - Updated debian/rules according to the new debhelper rules example. + * [Documentation/topdocs/AUTHORS.yo]: Added a trailing "/" on URLs. + + -- Anthony Fok Thu, 15 Oct 1998 04:49:40 -0600 + +lilypond (1.0.2-1) unstable; urgency=low + + * New upstream release. + + -- Anthony Fok Sat, 15 Aug 1998 04:32:08 -0600 + +lilypond (1.0.1-1) unstable; urgency=low + + * New upstream release. + * [aclocal.m4]: Temporarily changed OPTIMIZE="-O2" to OPTIMIZE="-O" + to avoid egcs (c++) complaint of "Internal compiler error" + on my computer. + * [scripts/mudela-book.py]: Added "#!@PYTHON@" at the top. This string + expands to "#!/usr/bin/python" in /usr/bin/mudela-book. + (Thanks to Lintian. :-) + * [debian/control]: Recommends: python-base (>= 1.5.1). + (Again, thanks to Lintian. :-) + * [debian/postrm]: Now also removes the generated LilyPond fonts + *.{tfm,pk} under /var/spool/texmf when called as "postrm remove". + * [debian/preinst]: Yes, have to bring this back to remove the generated + LilyPond fonts in /var/spool/texmf because "postrm remove" didn't do + its jobs in previous versions. Oops. :-) + * [debian/rules]: Installs a few new upstream documentation files, and + the example files in out/ directories are moved to parent directories. + + -- Anthony Fok Fri, 14 Aug 1998 03:30:05 -0600 + lilypond (0.1.76-1) unstable; urgency=low * support for 'make deb' target + * Not uploaded to Debian's FTP site. - -- Jan Nieuwenhuizen Fri, 3 Jul 1998 17:53:37 +0200 + -- Jan Nieuwenhuizen Fri, 3 Jul 1998 17:53:37 +0200 lilypond (0.1.71-1) unstable; urgency=low diff --git a/debian/control b/debian/control index 08a7805a9e..14be2746a9 100644 --- a/debian/control +++ b/debian/control @@ -7,8 +7,9 @@ Standards-Version: 2.4.1.0 Package: lilypond Architecture: any Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5) +Recommends: python-base (>= 1.5.1) Conflicts: musixtex-fonts, tetex-base (<< 0.9) -Description: The GNU Project music typesetter. +Description: The GNU Project music typesetter. LilyPond is the GNU Project music typesetter. This program can print beautiful sheet music from a music definition file. It can also play mechanical performances to a MIDI file. Features include multiple @@ -16,7 +17,8 @@ Description: The GNU Project music typesetter. beams, slurs, triplets, formatting scores, part extraction. It includes a nice font of musical symbols. . - URL: http://www.cs.ruu.nl/people/hanwen/lilypond - http://sca.uwaterloo.ca/~praetzel/lilypond/ + URLs: http://www.cs.uu.nl/~hanwen/lilypond/ + http://www.xs4all.nl/~jantien/lilypond/ + http://sca.uwaterloo.ca/~praetzel/lilypond/ Authors: Han-Wen Nienhuys Jan Nieuwenhuizen diff --git a/debian/control.foka b/debian/control.foka index 2f98fdf549..1054ef466e 100644 --- a/debian/control.foka +++ b/debian/control.foka @@ -7,6 +7,7 @@ Standards-Version: 2.4.1.0 Package: lilypond Architecture: any Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5) +Recommends: python-base (>= 1.5.1) Conflicts: musixtex-fonts, tetex-base (<< 0.9) Description: The GNU Project music typesetter. LilyPond is the GNU Project music typesetter. This program can print @@ -24,7 +25,8 @@ Description: The GNU Project music typesetter. cadensa, balken, boogjes, triolen, partituren, en losse partijen. Een fraai font met muzikeksymbolen wordt meegeleverd. . - URL: http://www.cs.ruu.nl/people/hanwen/lilypond/ - http://sca.uwaterloo.ca/~praetzel/lilypond/ - Authors: Han-Wen Nienhuys + URLs: http://www.cs.uu.nl/~hanwen/lilypond/ + http://www.digicash.com/~jan/lilypond/ + http://sca.uwaterloo.ca/lilypond/ + Authors: Han-Wen Nienhuys Jan Nieuwenhuizen diff --git a/debian/control.in b/debian/control.in index c78565b29b..6cde23db40 100644 --- a/debian/control.in +++ b/debian/control.in @@ -7,10 +7,12 @@ Standards-Version: 2.4.1.0 Package: lilypond Architecture: any Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5) +Recommends: python-base (>= 1.5.1) Conflicts: musixtex-fonts, tetex-base (<< 0.9) -Description: The GNU Project music typesetter. @BLURB@ +Description: The GNU Project music typesetter.@BLURB@ . - URL: http://www.cs.ruu.nl/people/hanwen/lilypond - http://sca.uwaterloo.ca/~praetzel/lilypond/ + URLs: http://www.cs.uu.nl/~hanwen/lilypond/ + http://www.xs4all.nl/~jantien/lilypond/ + http://sca.uwaterloo.ca/~praetzel/lilypond/ Authors: Han-Wen Nienhuys Jan Nieuwenhuizen diff --git a/debian/copyright b/debian/copyright index cf496990ff..551e4d52e1 100644 --- a/debian/copyright +++ b/debian/copyright @@ -2,18 +2,19 @@ This package was debianized by Anthony Fok on Wed, 6 Aug 1997 04:30:28 -0600 It was downloaded from - ftp://pcnov095.win.tue.nl/pub/lilypond/development/ - lilypond-0.1.71.tar.gz + ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/lilypond-1.0.16.tar.gz It is also available from: + ftp://sca.uwaterloo.ca/pub/lilypond/development/ For more information about GNU LilyPond, please visit: - http://www.cs.ruu.nl/people/hanwen/lilypond/ - or http://sca.uwaterloo.ca/~praetzel/lilypond/ + http://www.cs.uu.nl/~hanwen/lilypond/ + or http://www.xs4all.nl/~jantien/ + or http://sca.uwaterloo.ca/lilypond/ Authors: - Han-Wen Nienhuys + Han-Wen Nienhuys Jan Nieuwenhuizen Copyright: diff --git a/debian/out/control b/debian/out/control index 08a7805a9e..14be2746a9 100644 --- a/debian/out/control +++ b/debian/out/control @@ -7,8 +7,9 @@ Standards-Version: 2.4.1.0 Package: lilypond Architecture: any Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5) +Recommends: python-base (>= 1.5.1) Conflicts: musixtex-fonts, tetex-base (<< 0.9) -Description: The GNU Project music typesetter. +Description: The GNU Project music typesetter. LilyPond is the GNU Project music typesetter. This program can print beautiful sheet music from a music definition file. It can also play mechanical performances to a MIDI file. Features include multiple @@ -16,7 +17,8 @@ Description: The GNU Project music typesetter. beams, slurs, triplets, formatting scores, part extraction. It includes a nice font of musical symbols. . - URL: http://www.cs.ruu.nl/people/hanwen/lilypond - http://sca.uwaterloo.ca/~praetzel/lilypond/ + URLs: http://www.cs.uu.nl/~hanwen/lilypond/ + http://www.xs4all.nl/~jantien/lilypond/ + http://sca.uwaterloo.ca/~praetzel/lilypond/ Authors: Han-Wen Nienhuys Jan Nieuwenhuizen diff --git a/debian/postrm b/debian/postrm index e0dd95cfbc..80e1d36c75 100755 --- a/debian/postrm +++ b/debian/postrm @@ -4,7 +4,7 @@ # by Anthony Fok # This is free software; see the GNU General Public Licence # version 2 or later for copying conditions. There is NO warranty. -# Last modified: Wed, 22 Apr 1998 05:55:58 -0600 +# Last modified: Fri, 14 Aug 1998 00:07:07 -0600 set -e @@ -22,17 +22,13 @@ VARTEXFONTS=`/usr/bin/kpsewhich -expand-var '$VARTEXFONTS'` : ${VARTEXFONTS=$std_VARTEXFONTS} case "$1" in - remove) - /usr/bin/mktexlsr - ;; - upgrade) # Clear out the old TFM and PK files in case the fonts were modified rm -rf $VARTEXFONTS/tfm/$font_supplier/$font_typeface rm -rf $VARTEXFONTS/pk/*/$font_supplier/$font_typeface ;; - purge) + remove|purge) # Clear out the old TFM and PK files in case the fonts were modified rm -rf $VARTEXFONTS/tfm/$font_supplier/$font_typeface rm -rf $VARTEXFONTS/pk/*/$font_supplier/$font_typeface diff --git a/debian/rules b/debian/rules index fb123fcfa9..3a78b27b07 100755 --- a/debian/rules +++ b/debian/rules @@ -9,8 +9,9 @@ # for Debian GNU/Linux. package = lilypond - -SHELL = /bin/bash +SHELL = /bin/sh +r = debian/tmp +d = usr/doc/$(package) # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 @@ -19,57 +20,81 @@ build: build-stamp build-stamp: dh_testdir - ./configure --disable-checking --disable-debugging \ + CC=egcc ./configure --disable-checking --disable-debugging \ --enable-printing --prefix=/usr --enable-optimise \ --enable-shared $(MAKE) all + # $(MAKE) htmldoc touch build-stamp clean: dh_testdir dh_testroot - rm -f build-stamp + rm -f build-stamp install-stamp -$(MAKE) distclean - -$(MAKE) local-distclean + + # Correct the owner of the out/dummy.dep files when built with sudo. + if [ -n "$$SUDO_USER" -a -n "$$SUDO_GID" ]; then \ + find . -user root | xargs -r chown $$SUDO_USER.$$SUDO_GID; \ + else \ + find . -user root | xargs -r chown $$LOGNAME; \ + fi # Remove the following line once the *.make files are fixed - rm -f bin/*.pyc - rm -f debian/preinst + rm -f stepmake/bin/*.pyc + rm -f stepmake/stepmake/stepmake + rm -f stepmake/stepmake/bin + rm -f GNUmakefile stepmake/GNUmakefile + rm -f config.h + rm -f wwwlist dh_clean -# Build architecture-independent files here. -binary-indep: build -# We have nothing to do by default. - -binary-arch: build +install: install-stamp +install-stamp: build-stamp dh_testdir dh_testroot dh_clean -k - dh_installdirs usr/lib/texmf/doc \ usr/lib/emacs/site-lisp \ usr/doc/$(package)/examples - ln -fs ../../../doc/lilypond debian/tmp/usr/lib/texmf/doc/lilypond - $(MAKE) prefix=`pwd`/debian/tmp/usr install - cp -av mudela-mode.el debian/tmp/usr/lib/emacs/site-lisp - dh_installdocs ANNOUNCEMENT ANNOUNCE-0.1 README.txt NEWS ONEWS DEDICATION \ - BUGS TODO \ + ln -fs ../../../doc/lilypond $(r)/usr/lib/texmf/doc/lilypond + + $(MAKE) prefix=`pwd`/$(r)/usr install + + touch install-stamp + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +binary-arch: build install + dh_testdir + dh_testroot + cp -av mudela-mode.el $(r)/usr/lib/emacs/site-lisp + dh_installdocs ANNOUNCEMENT ANNOUNCE-0.1 NEWS* DEDICATION \ + BUGS TODO *.txt \ Documentation/pictures/*.xpm \ Documentation/out/*.txt \ Documentation/tex/*.doc \ Documentation/tex/*.bib # dh_installexamples input cp -aP `find input mutopia \( -name '*.ly' -o -name '*.tex' -o -name 'TODO' \)` \ - debian/tmp/usr/doc/lilypond/examples + $(r)/$(d)/examples + for i in `find $(r)/$(d)/examples/ -type d -name out`; do \ + mv -fv $$i/* $$i/..; rmdir $$i; done # dh_installmenu +# dh_installemacsen # dh_installcron # dh_installmanpages # dh_undocumented dh_installchangelogs # dh_strip dh_compress + ( cd $(r)/$(d) && \ + if [ -f NEWS ]; then gzip -9vf NEWS; fi ) + ln -s NEWS.gz $(r)/$(d)/changelog.gz dh_fixperms dh_suidregister dh_installdeb @@ -83,4 +108,4 @@ source diff: @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary +.PHONY: build clean install binary-indep binary-arch binary diff --git a/debian/watch b/debian/watch index 1a1bb286a0..9b35470c7c 100644 --- a/debian/watch +++ b/debian/watch @@ -1,5 +1,5 @@ # Example watch control file for uscan # Rename this file to "watch" and then you can run the "uscan" command # to check for upstream updates and more. -# Site Directory Pattern Version Script -pcnov095.win.tue.nl /pub/lilypond/development lilypond-*.tar.gz debian uupdate +# Site Directory Pattern Version Script +ftp.cs.uu.nl /pub/GNU/LilyPond/development lilypond-*.tar.gz debian uupdate diff --git a/flower/hash.cc b/flower/hash.cc new file mode 100644 index 0000000000..1e2debd13b --- /dev/null +++ b/flower/hash.cc @@ -0,0 +1,33 @@ +#include "string.hh" +#include "array.hh" +#include "dictionary.hh" + + +// Note: assumes long is at least 32 bits. +const unsigned long my_prime_list[] = +{ + 53, 97, 193, 389, 769, + 1543, 3079, 6151, 12289, 24593, + 49157, 98317, 196613, 393241, 786433, + 1572869, 3145739, 6291469, 12582917, 25165843, + 50331653, 100663319, 201326611, 402653189u, 805306457u, + 1610612741u, 3221225473u, 4294967291u +}; + +unsigned long prime_list (int idx) +{ + return my_prime_list [idx]; +} + +unsigned int hash (String s) +{ + const char* str = s.ch_C (); + unsigned int result = 0; + while (1) { + char c = *str++; + if (c == 0) break; + result += (result<<3) + c; + } + return result; +} + diff --git a/flower/include/dictionary-iter.hh b/flower/include/dictionary-iter.hh index 9183c5d585..da6e64b391 100644 --- a/flower/include/dictionary-iter.hh +++ b/flower/include/dictionary-iter.hh @@ -1,5 +1,5 @@ /* - dictionary-iter.hh -- declare + dictionary-iter.hh -- declare Dictionary_iter source file of the Flower Library @@ -10,18 +10,51 @@ #ifndef DICTIONARY_ITER_HH #define DICTIONARY_ITER_HH -#include "string.hh" -#include "assoc-iter.hh" +#include "dictionary.hh" + + + #include "dictionary.hh" template -class Dictionary_iter : public Assoc_iter +class Dictionary_iter { + Dictionary *dict_l_; + int i; public: - Dictionary_iter (Dictionary const &d) - : Assoc_iter (d) - { - } + Dictionary_iter(Dictionary const &dict) + { + i =0; + dict_l_ =(Dictionary *) & dict; + next_used (); + } + + bool ok () + { + return i < dict_l_->fixed_p_->dict_arr_.size (); + } + + void next_used () + { + while (ok () && dict_l_->fixed_p_->dict_arr_[i].free_b_) + { + i ++; + } + } + void operator ++(int) + { + i++; + next_used (); + } + + String key () + { + return dict_l_->fixed_p_->dict_arr_[i].name_; + } + V val () + { + return dict_l_->fixed_p_->dict_arr_[i].value_; + } }; #endif // DICTIONARY_ITER_HH diff --git a/flower/include/dictionary.hh b/flower/include/dictionary.hh index b25fc84b49..55f0e4fedd 100644 --- a/flower/include/dictionary.hh +++ b/flower/include/dictionary.hh @@ -11,28 +11,185 @@ #define DICTIONARY_HH #include "string.hh" -#include "assoc.hh" +#include "array.hh" + +unsigned long prime_list (int idx); +template +struct Dict_entry +{ + String name_; + V value_; + bool free_b_; + + Dict_entry() { + free_b_ = true; + } + Dict_entry (String s, V v) + { + name_ = s; + value_ = v; + free_b_ = false; + } +}; + +unsigned int hash (String); /** - UGH: write a String_hash template, + A hash table of prime size. - SEE: - - #include + We use quadratic probing. + */ +template +class Fixed_size_dictionary +{ +public: + Array > dict_arr_; + int size_idx_; + Fixed_size_dictionary (int size_idx) + { + size_idx_ = size_idx; + int sz = prime_list(size_idx_); + dict_arr_.set_size (sz); + } + + /// find #s#, or find first empty entry corresponding to #s# + int lookup (String s) + { + int sz =dict_arr_.size (); + int i = hash (s) % sz; + int j = 0; + while (j <= sz/2) { + if (dict_arr_[i].free_b_) + return i; + + if (dict_arr_[i].name_ == s) + return i; - ENTRY *hsearch(ENTRY item, ACTION action); + j++; + i = (i + j*j) % sz; + } - int hcreate (unsigned nel); + return -1; + } - void hdestroy (void); + /// remove #s# from the hash table. + V remove (String s) + { + assert (false); // Untested routine. + int sz =dict_arr_.size (); + int i = hash (s) % sz; + int j = 0; + V retval; + while (j <= sz/2 && dict_arr_[i].name_ != s) + { + assert (!dict_arr_[i].free_b_); + + + j ++; + i = (i + j*j) % sz; + } - (should be frobnified to allow multiple hashes) + j++; + int nexti = (i + j*j) % sz; + + while (j <= sz/2 && !dict_arr_[i].free_b_) + { + dict_arr_[i] = dict_arr_[nexti]; + j++; + i = nexti; + nexti = (nexti + j*j)%sz; + } + + finish: + return retval; + } +}; + +/** + Hash table with sliding sizes. */ -template -class Dictionary : public Assoc +template +class Dictionary { + Fixed_size_dictionary * fixed_p_; + + /// set size to next prime, and copy contents + void enlarge () + { + Fixed_size_dictionary *f = new Fixed_size_dictionary (fixed_p_->size_idx_ +1); + for (int i=0; i < fixed_p_->dict_arr_.size(); i++) + { + if (fixed_p_->dict_arr_[i].free_b_) + continue; + + String nm (fixed_p_->dict_arr_[i].name_); + int nl = f->lookup (nm); + + f->dict_arr_[nl] = Dict_entry (nm, fixed_p_->dict_arr_[i].value_); + } + delete fixed_p_; + fixed_p_ = f; + } public: - + Dictionary () + { + fixed_p_ = new Fixed_size_dictionary (0); + } + ~Dictionary () + { + delete fixed_p_; + } + void operator = (Dictionary const &src) + { + if (&src == this) + return; + + delete fixed_p_; + fixed_p_ = new Fixed_size_dictionary (*src.fixed_p_); + } + Dictionary (Dictionary const &src) + { + fixed_p_ = new Fixed_size_dictionary (*src.fixed_p_); + } + bool elem_b (String s) const + { + int l = fixed_p_->lookup (s); + + return (l >= 0 && !fixed_p_->dict_arr_[l].free_b_) ; + } + + /** + Find and return element. If #s# is not in the table, create an entry in the table, and init + */ + V& elem (String s) + { + int l; + while ((l= fixed_p_->lookup (s)) <0) + { + enlarge (); + } + + + fixed_p_->dict_arr_[l].free_b_ = false; + fixed_p_->dict_arr_[l].name_ = s; + return fixed_p_->dict_arr_[l].value_; + } + V& operator [] (String k) + { + return elem (k); + } + + V operator [] (String k) const + { + return elem (k); + } + + V remove (String s) + { + return fixed_p_->remove (s); + } + friend class Dictionary_iter; }; + #endif // DICTIONARY_HH diff --git a/init/declarations.ly b/init/declarations.ly index c1bc0fd333..d28a53c62f 100644 --- a/init/declarations.ly +++ b/init/declarations.ly @@ -35,7 +35,5 @@ nobreak = { \penalty = -10000; } \include "property.ly" -\include "scm.ly" - % music = "\melodic\relative c" diff --git a/init/engraver.ly b/init/engraver.ly index 54c737dd61..09df595038 100644 --- a/init/engraver.ly +++ b/init/engraver.ly @@ -176,12 +176,11 @@ ScoreWithNumbers = \translator { }; -\translator { +StupidScore = \translator { \type "Score_engraver"; - \name StupidScore; - - \consists "Staff_sym_engraver"; -} + \name Score; + \consists "Note_heads_engraver"; +}; diff --git a/init/property.ly b/init/property.ly index 5722c69cc0..4ab97b920f 100644 --- a/init/property.ly +++ b/init/property.ly @@ -48,11 +48,6 @@ beamquantisation 2 quantise avoide wedge2) \beampostraditional keyoctaviation 0 Key signature only for specified octave \specialkey keyoctaviation 1 Key signature for all octaves \normalkey -keymodality 0 Major key \major -keymodality 3 Minor key \minor -keymodality n modality n half tones from the major key - - timeSignatureStyle C Use C and stroked C for 4/4,2/2 timeSignatureStyle old Use old style mensuration marks timeSignatureStyle 1 Use single number @@ -276,10 +271,3 @@ specialkey = { \property Staff.keyoctaviation = 0 } -major = { - \property Staff.keymodality = 0 -} - -minor = { - \property Staff.keymodality = 3 -} diff --git a/init/scm.ly b/init/scm.ly deleted file mode 100644 index 0c56301f88..0000000000 --- a/init/scm.ly +++ /dev/null @@ -1,30 +0,0 @@ -\scm " - -(define (add-column p) (display \"adding column (in guile): \") (display p) (newline)) - -(define - (control->string c) - (string-append - (string-append (number->string (car c)) \" \") - (string-append (number->string (cadr c)) \" \"))) - -(define - (dashed-slur-ps thick dash l) - (string-append - (apply string-append (map control->string l)) - (number->string thick) - \" [ 0 \" (number->string dash) \" ] 0 draw_dashed_slur\")) - -(define - (dashed-slur-tex thick dash l) - (string-append - \"\\embedded_ps{\" - (dashed-slur-ps thick dash l) - \"}\")) - -(define - (dashed-slur o thick dash l) - ((eval-string (string-append \"dashed-slur-\" o)) thick dash l)) - -"; - diff --git a/input/test/keys.ly b/input/test/keys.ly index e4bc5c9321..211c7c1e20 100644 --- a/input/test/keys.ly +++ b/input/test/keys.ly @@ -6,8 +6,8 @@ test key itemv breaking \score { \notes { - \key bes; c1 \minor \key c; c1 + \key bes; c1 \key c; c1 \break - \major \key bes; c1 \key d;\break c1 + \key bes; c1 \key d;\break c1 } } diff --git a/input/test/time.fly b/input/test/time.fly index 03076b7ef0..3908c4cf64 100644 --- a/input/test/time.fly +++ b/input/test/time.fly @@ -1,5 +1,3 @@ -\version "1.0.7"; - \property Staff.timeSignatureStyle = "C" \time 1/1; c''1^"timeSignatureStyle = \"C\"" | diff --git a/lily/atom.cc b/lily/atom.cc index 3f79970b71..76b59197d3 100644 --- a/lily/atom.cc +++ b/lily/atom.cc @@ -76,14 +76,12 @@ Atom::Atom () But Atom is used as a simple type *everywhere*, and we don't have virtual contructors. */ - lambda_ = 0; str_ = global_lookup_l->unknown_str (); } Atom::Atom (String s, Box b) : dim_ (b) { - lambda_ = 0; str_ = s; } diff --git a/lily/auto-plet-engraver.cc b/lily/auto-plet-engraver.cc index 3ed45b2a46..8812f6245c 100644 --- a/lily/auto-plet-engraver.cc +++ b/lily/auto-plet-engraver.cc @@ -9,7 +9,7 @@ #include "auto-plet-engraver.hh" #include "command-request.hh" -#include "graphical-lisp-element.hh" +#include "slur.hh" #include "note-column.hh" bool @@ -27,11 +27,12 @@ Tuplet_engraver::do_try_request (Request *r) return true; } + void Tuplet_engraver::do_process_requests () { int stopcount =0; - Link_array start_arr; + Link_array start_arr; for (int i=0; i < bracket_req_arr_.size (); i++) { @@ -39,17 +40,16 @@ Tuplet_engraver::do_process_requests () stopcount++; if (bracket_req_arr_[i]->spantype == Span_req::START) { - Graphical_lisp_element* glep = new Graphical_lisp_element ("tuplet"); - start_arr.push (glep); -// lots of stuff does info->elem_l_->is_type () -// announce_element (Score_element_info (glep, bracket_req_arr_[i])); + Slur *sp =new Slur; + start_arr.push (sp); + announce_element (Score_element_info (sp, bracket_req_arr_[i])); } } for (; stopcount--; ) { - Graphical_lisp_element* glep = started_span_p_arr_.pop (); - stop_now_span_p_arr_.push (glep); + Slur *sp = started_span_p_arr_.pop (); + stop_now_span_p_arr_.push (sp); } for (int i=0; i < start_arr.size (); i++) @@ -63,8 +63,7 @@ Tuplet_engraver::acknowledge_element (Score_element_info i) { Note_column *nc = (Note_column*)i.elem_l_->access_Item (); for (int j =0; j add_column (nc); - started_span_p_arr_[j]->call ("add-column", (void*)nc); + started_span_p_arr_[j]->add_column (nc); } } diff --git a/lily/engraver.cc b/lily/engraver.cc index 3ecd606e92..ecad055870 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -26,18 +26,13 @@ Engraver::announce_element (Score_element_info i) daddy_grav_l()->announce_element (i); } + void Engraver::typeset_element (Score_element*p) { daddy_grav_l()->typeset_element (p); } -void -Engraver::typeset_element (Graphical_lisp_element*p) -{ - daddy_grav_l ()->typeset_element (p); -} - Paper_def* Engraver::paper() const { diff --git a/lily/graphical-lisp-element.cc b/lily/graphical-lisp-element.cc deleted file mode 100644 index 8b9fdefc1a..0000000000 --- a/lily/graphical-lisp-element.cc +++ /dev/null @@ -1,47 +0,0 @@ -/* - graphical-lisp-element.cc -- implement Graphical_lisp_element - - source file of the GNU LilyPond music typesetter - - (c) 1998 Jan Nieuwenhuizen -*/ - -#include "graphical-lisp-element.hh" -#include "string.hh" -#include "debug.hh" - -#undef IMPLEMENT_STATIC_NAME -#define IMPLEMENT_STATIC_NAME(c)\ -char const* c::static_name ()\ -{ return type_str_.ch_C (); }\ -size_t c::static_class_size () { return sizeof (c); } - -IMPLEMENT_IS_TYPE_B (Graphical_lisp_element); - -Graphical_lisp_element::Graphical_lisp_element (String str) -{ - type_str_ = str; -} - -void* -Graphical_lisp_element::access (String str) -{ - SCM scm; -// scm = gh_cons (gh_str02scm (str.ch_C ())); -// scm = gh_cons (gh_symbol2scm (str.ch_C ())); - return 0; -} - -void -Graphical_lisp_element::call (String str, void* p) -{ -// gh_apply (str.ch_C (), SCM_EOL); -// gh_apply (str.ch_C (), SCM_EOL); - -// mm, common lisp only? -// String ptr = to_str (" \\%x", p); - String ptr = to_str (" '%x", p); - str = "(" + str + ptr + ")"; - gh_eval_str (str.ch_l ()); -// gh_eval_str ("(add-column 0)"); -} diff --git a/lily/include/atom.hh b/lily/include/atom.hh index fcd434f0ab..0d88e7ce31 100644 --- a/lily/include/atom.hh +++ b/lily/include/atom.hh @@ -9,18 +9,17 @@ #ifndef ATOM_HH #define ATOM_HH -#include "lily-guile.hh" #include "string.hh" #include "box.hh" #include "lily-proto.hh" + /// a symbol which can be translated, and freely copied class Atom { Offset off_; public: String str_; String font_; - SCM lambda_; Box dim_; Offset offset () const; diff --git a/lily/include/auto-plet-engraver.hh b/lily/include/auto-plet-engraver.hh index 14b1fefcc4..a8cafb9c7c 100644 --- a/lily/include/auto-plet-engraver.hh +++ b/lily/include/auto-plet-engraver.hh @@ -23,8 +23,8 @@ public: protected: Link_array bracket_req_arr_; - Link_array started_span_p_arr_; - Link_array stop_now_span_p_arr_; + Link_array started_span_p_arr_; + Link_array stop_now_span_p_arr_; virtual void do_removal_processing (); virtual void acknowledge_element (Score_element_info); diff --git a/lily/include/engraver.hh b/lily/include/engraver.hh index 04fc21baa5..a8086af1f5 100644 --- a/lily/include/engraver.hh +++ b/lily/include/engraver.hh @@ -36,7 +36,6 @@ protected: Invoke walker method to typeset element. Default: pass on to daddy. */ virtual void typeset_element (Score_element*elem_p); - virtual void typeset_element (Graphical_lisp_element*); /** take note of item/spanner diff --git a/lily/include/graphical-lisp-element.hh b/lily/include/graphical-lisp-element.hh deleted file mode 100644 index 036b727c77..0000000000 --- a/lily/include/graphical-lisp-element.hh +++ /dev/null @@ -1,39 +0,0 @@ -/* - graphical-lisp-element.hh -- declare Graphical_lisp_element - - source file of the GNU LilyPond music typesetter - - (c) 1998 Jan Nieuwenhuizen -*/ - - -#ifndef GRAPHICAL_LISP_ELEMENT_HH -#define GRAPHICAL_LISP_ELEMENT_HH - -#include "lily-guile.hh" -#include "lily-proto.hh" -#include "string.hh" - -#define virtual -#define static -#include "virtual-methods.hh" - -class Graphical_lisp_element -{ -public: - DECLARE_MY_RUNTIME_TYPEINFO; - - Graphical_lisp_element (String); - - void* access (String); - void call (String, void*); - -private: - String type_str_; -}; - -#undef virtual -#undef static - -#endif // GRAPHICAL_LISP_ELEMENT_HH - diff --git a/lily/include/key-item.hh b/lily/include/key-item.hh index 9056db33b8..f8e3747b58 100644 --- a/lily/include/key-item.hh +++ b/lily/include/key-item.hh @@ -13,11 +13,14 @@ /// An item which places accidentals at the start of the line struct Key_item : Item { - Array pitch; - Array acc; - Array old_pitch; - Array old_acc; + Array pitch_arr_; + Array acc_arr_; + Array old_pitch_arr_; + Array old_acc_arr_; + + // ugh. Naming int c_position; + // see above. int c0_position; bool default_b_; bool multi_octave_b_; @@ -30,7 +33,10 @@ struct Key_item : Item { void add (const Musical_pitch&); void add_old (int pitch, int acc); void add_old (const Musical_pitch&); - void read (const Key_engraver&); + void set (bool multi_octave_b, + Array const &idx_arr, + Array const &old_idx_arr); + void set_c_position (int); int Key_item::calculate_position(int p, int a) const; diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 845a2a1f87..1ea707038e 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -11,10 +11,6 @@ #include "config.hh" -#ifdef __cplusplus -extern "C" { -#endif - #ifdef HAVE_LIBGUILE extern "C" { #include @@ -22,17 +18,4 @@ extern "C" { #else typedef long SCM; #endif - -SCM gh_append (SCM a, SCM b); -SCM gh_eval (SCM a); -SCM gh_func_o (char const* name); -SCM gh_lambda_o (); -SCM gh_list1 (SCM a); -SCM gh_list2(SCM a, SCM b); -SCM gh_quote (); - -#ifdef __cplusplus -} -#endif - #endif // LILY_GUILE_HH diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 184eec14c0..b7af83ec16 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -77,7 +77,6 @@ struct Element_group_item; struct Engraver_group_engraver; struct General_script_def; struct Graphical_element; -struct Graphical_lisp_element; struct Graphical_axis_group; struct Mark_req; struct Music_output; diff --git a/lily/include/local-key-item.hh b/lily/include/local-key-item.hh index d08ca2b490..7da65e532f 100644 --- a/lily/include/local-key-item.hh +++ b/lily/include/local-key-item.hh @@ -24,10 +24,9 @@ class Local_key_item : public Item { public: DECLARE_MY_RUNTIME_TYPEINFO; - Array accs; + Array accidental_pitch_arr_; Link_array support_items_; int c0_position_i_; - Local_key_item (); void add_support (Item*); void add (Musical_pitch); diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index ab761ac955..7efe60bb7e 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -31,8 +31,8 @@ public: Atom accidental (int) const; void add (String, Symtable*); - virtual Atom afm_find (String s, bool warn=true) const = 0; - Atom afm_find (String, String, bool warn=true) const; + virtual Atom afm_find (String s) const = 0; + Atom afm_find (String, String) const; virtual Atom* atom_p (String, int, Box) const = 0; Atom ball (int) const; Atom bar (String, Real height) const; @@ -40,7 +40,7 @@ public: Atom beam (Real,Real, Real) const; virtual String character_str (int i) const; Atom clef (String) const; - virtual Atom dashed_slur (Array controls, Real thick, Real dash) const; + virtual Atom dashed_slur (Array controls, Real thick, Real dash) const = 0; Atom dots () const; Atom dynamic (String) const; Atom fill (Box b) const; diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh index e03a3e8646..2f3c3f599c 100644 --- a/lily/include/musical-request.hh +++ b/lily/include/musical-request.hh @@ -129,8 +129,6 @@ public: /// force/supress printing of accidental. bool forceacc_b_; - /// Cautionary, i.e. parenthesized accidental. - bool cautionary_b_; Note_req(); bool do_equal_b (Request*) const; Rhythmic_req* access_Rhythmic_req () { return Rhythmic_req::access_Rhythmic_req (); } diff --git a/lily/include/notename-table.hh b/lily/include/notename-table.hh index 7338f05bf1..1d0fcf687e 100644 --- a/lily/include/notename-table.hh +++ b/lily/include/notename-table.hh @@ -16,7 +16,7 @@ #include "dictionary.hh" #include "musical-pitch.hh" -class Notename_table : public Dictionary< Musical_pitch >{ +class Notename_table : public Dictionary{ public: String get_name (Musical_pitch) const; }; diff --git a/lily/include/paper-outputter.hh b/lily/include/paper-outputter.hh index 0c6ff778df..5fa1204b2f 100644 --- a/lily/include/paper-outputter.hh +++ b/lily/include/paper-outputter.hh @@ -24,7 +24,7 @@ public: virtual ~Paper_outputter (); virtual void output_molecule (Molecule const *, Offset, char const *)=0; - void output_molecule (Molecule const *, Offset, char const *, String, String); + void output_molecule (Molecule const *, Offset, char const *, String); virtual void start_line ()=0; virtual void stop_line ()=0; virtual void switch_to_font (String fontname)=0; diff --git a/lily/include/ps-lookup.hh b/lily/include/ps-lookup.hh index 99a14a9fa0..2eb9ed025a 100644 --- a/lily/include/ps-lookup.hh +++ b/lily/include/ps-lookup.hh @@ -19,9 +19,10 @@ public: Ps_lookup (Symtables const& s); virtual ~Ps_lookup (); - virtual Atom afm_find (String s, bool warn=false) const; + virtual Atom afm_find (String s) const; virtual Atom* atom_p (String, int, Box) const; virtual String character_str (int i) const; + virtual Atom dashed_slur (Array controls, Real thick, Real dash) const; virtual Atom hairpin (Real width, bool decresc, bool continued) const; virtual Lookup* lookup_p (Lookup const&) const; virtual Lookup* lookup_p (Symtables const&) const; diff --git a/lily/include/ps-lookup.hh.orig b/lily/include/ps-lookup.hh.orig deleted file mode 100644 index 0b6481be6d..0000000000 --- a/lily/include/ps-lookup.hh.orig +++ /dev/null @@ -1,39 +0,0 @@ -/* - tex-lookup.hh -- declare Tex_lookup - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Jan Nieuwenhuizen -*/ - -#ifndef PS_LOOKUP_HH -#define PS_LOOKUP_HH - -#include "lookup.hh" - -class Ps_lookup : public Lookup -{ -public: - Ps_lookup (); - Ps_lookup (Lookup const& s); - Ps_lookup (Symtables const& s); - virtual ~Ps_lookup (); - - virtual Atom afm_find (String s) const; - virtual Atom* atom_p (String, int, Box) const; - virtual String character_str (int i) const; - virtual Atom hairpin (Real width, bool decresc, bool continued) const; - virtual Lookup* lookup_p (Lookup const&) const; - virtual Lookup* lookup_p (Symtables const&) const; - virtual Paper_outputter* paper_outputter_p (Paper_stream*, Paper_def*, Scope*, String) const; - virtual Paper_stream* paper_stream_p () const; - virtual Atom plet (Real dy , Real dx, Direction dir) const; - virtual Atom ps_beam (Real slope, Real width, Real thick) const; - virtual Atom slur (Array controls) const; - virtual Atom stem (Real y1, Real y2) const; - virtual Atom text (String style, String text) const; - virtual String unknown_str () const; - virtual Atom vbracket (Real &y) const; -}; - -#endif // PS_LOOKUP_HH diff --git a/lily/include/score-element-info.hh b/lily/include/score-element-info.hh index 34a5a49716..95d69a0d48 100644 --- a/lily/include/score-element-info.hh +++ b/lily/include/score-element-info.hh @@ -19,12 +19,10 @@ */ struct Score_element_info { Score_element * elem_l_; - Graphical_lisp_element * lisp_l_; Request*req_l_; Array origin_grav_l_arr_; Score_element_info (Score_element*, Request*); - Score_element_info (Graphical_lisp_element*, Request*); Score_element_info(); }; diff --git a/lily/include/score-engraver.hh b/lily/include/score-engraver.hh index 2f7883bb41..5d59fc06f7 100644 --- a/lily/include/score-engraver.hh +++ b/lily/include/score-engraver.hh @@ -53,7 +53,6 @@ protected: virtual void announce_element (Score_element_info); virtual void do_announces(); virtual void typeset_element (Score_element*elem_p); - virtual void typeset_element (Graphical_lisp_element*elem_p); virtual void do_pre_move_processing(); virtual void do_add_processing (); }; diff --git a/lily/include/slur-engraver.hh b/lily/include/slur-engraver.hh index 75c21d07f2..8665ee6e8d 100644 --- a/lily/include/slur-engraver.hh +++ b/lily/include/slur-engraver.hh @@ -15,7 +15,6 @@ class Slur_engraver :public Engraver { Array new_slur_req_l_arr_; Array slur_l_stack_; Array end_slur_l_arr_; - Direction dir_; protected: virtual bool do_try_request (Request*); @@ -27,7 +26,6 @@ protected: public: TRANSLATOR_CLONE(Slur_engraver); - Slur_engraver(); DECLARE_MY_RUNTIME_TYPEINFO; }; diff --git a/lily/include/tex-lookup.hh b/lily/include/tex-lookup.hh index 5f812088af..cdb9839fcc 100644 --- a/lily/include/tex-lookup.hh +++ b/lily/include/tex-lookup.hh @@ -20,8 +20,9 @@ public: Tex_lookup (Symtables const& s); virtual ~Tex_lookup(); - virtual Atom afm_find (String s, bool warn=false) const; + virtual Atom afm_find (String s) const; virtual String character_str (int i) const; + virtual Atom dashed_slur (Array controls, Real thick, Real dash) const; virtual Atom* atom_p (String, int, Box) const; Atom embed (Atom a) const; virtual Atom hairpin (Real width, bool decresc, bool continued) const; diff --git a/lily/include/tex-lookup.hh.orig b/lily/include/tex-lookup.hh.orig deleted file mode 100644 index 2341c4484c..0000000000 --- a/lily/include/tex-lookup.hh.orig +++ /dev/null @@ -1,42 +0,0 @@ -/* - tex-lookup.hh -- declare Tex_lookup - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen -*/ - -#ifndef TEX_LOOKUP_HH -#define TEX_LOOKUP_HH - -#include "ps-lookup.hh" - -class Tex_lookup : public Ps_lookup -{ -public: - Tex_lookup (); - Tex_lookup (Lookup const& s); - Tex_lookup (Symtables const& s); - virtual ~Tex_lookup(); - - virtual Atom afm_find (String s) const; - virtual String character_str (int i) const; - virtual Atom* atom_p (String, int, Box) const; - Atom embed (Atom a) const; - virtual Atom hairpin (Real width, bool decresc, bool continued) const; - virtual Lookup* lookup_p (Lookup const&) const; - virtual Lookup* lookup_p (Symtables const&) const; - virtual Paper_outputter* paper_outputter_p (Paper_stream*, Paper_def*, Scope*, String) const; - virtual Paper_stream* paper_stream_p () const; - virtual Atom plet (Real dy , Real dx, Direction dir) const; - virtual String print_dimen (Real) const; - virtual Atom ps_beam (Real slope, Real width, Real thick) const; - virtual Atom slur (Array controls) const; - virtual Atom stem (Real y1, Real y2) const; - virtual Atom text (String style, String text) const; - virtual String unknown_str () const; - virtual Atom vbracket (Real &y) const; -}; - -#endif // TEX_LOOKUP_HH diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc index e06bb1d63d..83fd6ec6db 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -29,7 +29,7 @@ Key_engraver::create_key () kit_p_ = new Key_item; kit_p_->break_priority_i_ = -1; // ugh announce_element (Score_element_info (kit_p_,keyreq_l_)); - kit_p_->read (*this); + kit_p_->set (key_.multi_octave_b_, accidental_idx_arr_, old_accidental_idx_arr_); } } @@ -95,7 +95,6 @@ Key_engraver::do_pre_move_processing () void Key_engraver::read_req (Key_change_req const * r) { - int modality=0; old_accidental_idx_arr_ = accidental_idx_arr_; key_.clear (); Scalar prop = get_property ("keyoctaviation"); @@ -103,11 +102,6 @@ Key_engraver::read_req (Key_change_req const * r) { key_.multi_octave_b_ = ! prop.to_bool (); } - prop = get_property ("keymodality"); - if (prop.isnum_b ()) - { - modality=(int)prop; - } accidental_idx_arr_.clear (); @@ -122,7 +116,8 @@ Key_engraver::read_req (Key_change_req const * r) else { p = r->pitch_arr_[0].semitone_pitch (); - p += modality; + if (r->minor_b ()) + p += 3; } /* Solve the equation 7*no_of_acc mod 12 = p, -6 <= no_of_acc <= 5 */ int no_of_acc = (7*p) % 12; diff --git a/lily/key-item.cc b/lily/key-item.cc index 58a91cac61..80e470f10f 100644 --- a/lily/key-item.cc +++ b/lily/key-item.cc @@ -14,8 +14,7 @@ #include "molecule.hh" #include "paper-def.hh" #include "lookup.hh" - -#include "key-engraver.hh" +#include "musical-pitch.hh" const int FLAT_TOP_PITCH=2; /* fes,ges,as and bes typeset in lower octave */ const int SHARP_TOP_PITCH=4; /* ais and bis typeset in lower octave */ @@ -28,19 +27,21 @@ Key_item::Key_item () } void -Key_item::read (Key_engraver const & key_grav_r) +Key_item::set (bool multi_octave_b, + Array const &idx_arr, + Array const &old_idx_arr) { - multi_octave_b_ = key_grav_r.key_.multi_octave_b_; - const Array &idx_arr = key_grav_r.accidental_idx_arr_; + multi_octave_b_ =multi_octave_b; + for (int i = 0; i < idx_arr.size(); i++) { Musical_pitch m_l =idx_arr[i]; if (multi_octave_b_) - add (m_l); + add (m_l); else add (m_l.notename_i_, m_l.accidental_i_); } - const Array &old_idx_arr = key_grav_r.old_accidental_idx_arr_; + for (int i = 0 ; i< old_idx_arr.size(); i++) { Musical_pitch m_l =old_idx_arr[i]; @@ -66,29 +67,29 @@ Key_item::set_c_position (int c0) void Key_item::add (int p, int a) { - pitch.push (p); - acc.push (a); + pitch_arr_.push (p); + acc_arr_.push (a); } void Key_item::add (const Musical_pitch& pitch_r) { - pitch.push (pitch_r.steps()); - acc.push (pitch_r.accidental_i_); + pitch_arr_.push (pitch_r.steps()); + acc_arr_.push (pitch_r.accidental_i_); } void Key_item::add_old (int p, int a) { - old_pitch.push (p); - old_acc.push (a); + old_pitch_arr_.push (p); + old_acc_arr_.push (a); } void Key_item::add_old (const Musical_pitch& pitch_r) { - old_pitch.push (pitch_r.steps()); - old_acc.push (pitch_r.accidental_i_); + old_pitch_arr_.push (pitch_r.steps()); + old_acc_arr_.push (pitch_r.accidental_i_); } int @@ -120,18 +121,20 @@ Key_item::brew_molecule_p() const int j; if ((break_status_dir_ == LEFT || break_status_dir_ == CENTER) - || old_pitch.size ()) + || old_pitch_arr_.size ()) { - for (int i =0; i < old_pitch.size(); i++) + for (int i =0; i < old_pitch_arr_.size(); i++) { - for (j =0; (j < pitch.size()) && (old_pitch[i] != pitch[j]); j++) + for (j =0; (j < pitch_arr_.size()) + && (old_pitch_arr_[i] != pitch_arr_[j]); j++) ; - if (j == pitch.size() - || (old_pitch[i] == pitch[j] && old_acc[i] != acc[j])) + if (j == pitch_arr_.size() + || (old_pitch_arr_[i] == pitch_arr_[j] + && old_acc_arr_[i] != acc_arr_[j])) { Atom a =lookup_l ()->accidental (0); - a.translate_axis (calculate_position(old_pitch[i], old_acc[i]) * inter, Y_AXIS); + a.translate_axis (calculate_position(old_pitch_arr_[i], old_acc_arr_[i]) * inter, Y_AXIS); Molecule m (a); output->add_at_edge (X_AXIS, RIGHT, m); } @@ -148,14 +151,14 @@ Key_item::brew_molecule_p() const output->add_at_edge (X_AXIS, RIGHT, lookup_l()->fill (Box(x,y))); } - for (int i =0; i < pitch.size(); i++) + for (int i =0; i < pitch_arr_.size(); i++) { - Atom a =lookup_l ()->accidental (acc[i]); - a.translate_axis (calculate_position(pitch[i], acc[i]) * inter, Y_AXIS); + Atom a =lookup_l ()->accidental (acc_arr_[i]); + a.translate_axis (calculate_position(pitch_arr_[i], acc_arr_[i]) * inter, Y_AXIS); Molecule m (a); output->add_at_edge (X_AXIS, RIGHT, m); } - if (pitch.size()) + if (pitch_arr_.size()) { Molecule m (lookup_l ()->fill (Box ( Interval (0, paper()->note_width ()), diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc deleted file mode 100644 index a5c47bd39b..0000000000 --- a/lily/lily-guile.cc +++ /dev/null @@ -1,61 +0,0 @@ -/* - lily-guile.cc -- implement assorted guile functions - - source file of the GNU LilyPond music typesetter - - (c) 1998 Jan Nieuwenhuizen -*/ - -#include "lily-guile.hh" - -#ifdef __cplusplus -extern "C" { -#endif - -SCM -gh_append (SCM a, SCM b) -{ - return gh_call2 (gh_eval_str ("append"), a, b); -} - -SCM -gh_list1 (SCM a) -{ - return gh_call1 (gh_eval_str ("list"), a); -} - -SCM -gh_list2(SCM a, SCM b) -{ - return gh_call2 (gh_eval_str ("list"), a, b); -} - -SCM -gh_quote () -{ - return gh_eval_str ("'quote"); -} - -SCM -gh_eval (SCM a) -{ - return gh_call1 (gh_eval_str ("eval"), a); -} - -SCM -gh_lambda_o () -{ - return gh_eval_str ("'(lambda (o))"); -} - -SCM -gh_func_o (char const* name) -{ - char buf[200]; - snprintf (buf, 200, "'(%s o)", name); - return gh_eval_str (buf); -} - -#ifdef __cplusplus -} -#endif diff --git a/lily/local-key-engraver.cc b/lily/local-key-engraver.cc index a74b27d79e..c6a3a07189 100644 --- a/lily/local-key-engraver.cc +++ b/lily/local-key-engraver.cc @@ -67,12 +67,6 @@ Local_key_engraver::process_acknowledged () key_item_p_ = new Local_key_item; announce_element (Score_element_info (key_item_p_, 0)); } - ///////// TODO: Handle cautionary accidentals - if (note_l->cautionary_b_) - { - warning (_("cautionary accidentals are not yet supported")); - } - key_item_p_->add (note_l->pitch_); key_item_p_->add_support (support_l); local_key_.set (note_l->pitch_); diff --git a/lily/local-key-item.cc b/lily/local-key-item.cc index 564b66ea9a..2b2d0dd5db 100644 --- a/lily/local-key-item.cc +++ b/lily/local-key-item.cc @@ -16,7 +16,7 @@ Local_key_item::Local_key_item () { - c0_position_i_ = 0; + c0_position_i_ = 0; } void @@ -31,17 +31,17 @@ Local_key_item::add_support (Item*head_l) void Local_key_item::add (Musical_pitch p) { - for (int i=0; i< accs.size(); i++) - if (!Musical_pitch::compare (p, accs[i])) + for (int i=0; i< accidental_pitch_arr_.size(); i++) + if (!Musical_pitch::compare (p, accidental_pitch_arr_[i])) return; - accs.push (p); + accidental_pitch_arr_.push (p); } void Local_key_item::do_pre_processing() { - accs.sort (Musical_pitch::compare); + accidental_pitch_arr_.sort (Musical_pitch::compare); } Molecule* @@ -51,10 +51,10 @@ Local_key_item::brew_molecule_p() const Molecule *octave_mol_p = 0; int lastoct = -100; - for (int i = 0; i < accs.size(); i++) + for (int i = 0; i < accidental_pitch_arr_.size(); i++) { // do one octave - if (accs[i].octave_i_ != lastoct) + if (accidental_pitch_arr_[i].octave_i_ != lastoct) { if (octave_mol_p) { @@ -65,9 +65,12 @@ Local_key_item::brew_molecule_p() const } octave_mol_p= new Molecule; } - lastoct = accs[i].octave_i_; - Real dy = (accs[i].notename_i_ + c0_position_i_) * paper()->internote_f (); - Atom a (lookup_l ()->accidental (accs[i].accidental_i_)); + + lastoct = accidental_pitch_arr_[i].octave_i_; + Real dy = + (c0_position_i_ + accidental_pitch_arr_[i].notename_i_) + * paper()->internote_f (); + Atom a (lookup_l ()->accidental (accidental_pitch_arr_[i].accidental_i_)); a.translate_axis (dy, Y_AXIS); Molecule m(a); @@ -82,7 +85,7 @@ Local_key_item::brew_molecule_p() const delete octave_mol_p; } - if (accs.size()) + if (accidental_pitch_arr_.size()) { Box b(Interval (0, paper()->internote_f ()), Interval (0,0)); Molecule m (lookup_l ()->fill (b)); diff --git a/lily/lookup.cc b/lily/lookup.cc index 07e7e63ca4..8ba88483f5 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -20,7 +20,6 @@ #include "paper-def.hh" #include "string-convert.hh" #include "main.hh" -#include "lily-guile.hh" Lookup::Lookup () { @@ -66,7 +65,7 @@ Lookup::add (String s, Symtable*p) } Atom -Lookup::afm_find (String s, String str, bool warn) const +Lookup::afm_find (String s, String str) const { if (!afm_p_) { @@ -75,7 +74,7 @@ Lookup::afm_find (String s, String str, bool warn) const *mlog << "]" << flush ; DOUT << this->afm_p_->str (); } - Adobe_font_char_metric m = afm_p_->find_char (s, warn); + Adobe_font_char_metric m = afm_p_->find_char (s); Atom a; if (m.code () < 0) @@ -151,58 +150,6 @@ Lookup::clef (String st) const return afm_find (String ("clefs") + String ("-") + st); } -Atom -Lookup::dashed_slur (Array controls, Real thick, Real dash) const -{ - assert (controls.size () == 8); - - Real dx = controls[3].x () - controls[0].x (); - Real dy = controls[3].y () - controls[0].y (); - - Atom a; - a.font_ = font_; - a.dim_[X_AXIS] = Interval (0, dx); - a.dim_[Y_AXIS] = Interval (0 ? dy); - -#ifndef HAVE_LIBGUILE - - String ps; - for (int i = 1; i < 4; i++) - ps += String_convert::double_str (controls[i].x ()) + " " - + String_convert::double_str (controls[i].y ()) + " "; - - ps += String_convert::double_str (controls[0].x ()) + " " - + String_convert::double_str (controls[0].y ()) + " "; - - ps += String_convert::double_str (thick) + " "; - Real on = dash > 1? thick * dash - thick : 0; - Real off = 2 * thick; - ps += "[" + String_convert::double_str (on) + " "; - ps += String_convert::double_str (off) + "] "; - ps += String_convert::int_str (0) + " "; - ps += "draw_dashed_slur "; - - a.str_ = ps; - -#else // HAVE_LIBGUILE - - // (lambda (o) (dashed-slur o '((0.1 0.2) (1.1 1.2) (2.1 2.2) (3.1 3.2)))) - a.lambda_ = - gh_append (gh_lambda_o (), - gh_list1 (gh_append (gh_func_o ("dashed-slur"), - gh_cons (gh_double2scm (thick), gh_cons (gh_double2scm (dash), - gh_list1 (gh_list2 (gh_quote (), - gh_cons (gh_list2 (gh_double2scm (controls[0].x ()), gh_double2scm (controls[0].y ())), - gh_cons (gh_list2 (gh_double2scm (controls[1].x ()), gh_double2scm (controls[1].y ())), - gh_cons (gh_list2 (gh_double2scm (controls[2].x ()), gh_double2scm (controls[2].y ())), - gh_cons (gh_list2 (gh_double2scm (controls[3].x ()), gh_double2scm (controls[3].y ())), - SCM_EOL))))))))))); - -#endif // HAVE_LIBGUILE - - return a; -} - Atom Lookup::dots () const { @@ -282,11 +229,11 @@ Atom Lookup::special_time_signature (String s, Array arr) const { String symbolname = "timesig-"+s+"%/%"; - Atom a (afm_find (substitute_args (symbolname, arr), false)); + Atom a (afm_find (substitute_args (symbolname, arr))); if (!a.empty ()) return a; // Try if the full name was given - a = afm_find ("timesig-"+s, false); + a = afm_find ("timesig-"+s); if (!a.empty ()) return a; // Resort to default layout with numbers diff --git a/lily/lookup.cc.orig b/lily/lookup.cc.orig deleted file mode 100644 index 7f67472b14..0000000000 --- a/lily/lookup.cc.orig +++ /dev/null @@ -1,422 +0,0 @@ -/* - lookup.cc -- implement simple Lookup methods. - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys - - Jan Nieuwenhuizen - - TODO - Read spacing info from AFMs - Glissando -*/ - -#include "lookup.hh" -#include "debug.hh" -#include "dimensions.hh" -#include "symtable.hh" -#include "scalar.hh" -#include "paper-def.hh" -#include "string-convert.hh" -#include "main.hh" -#include "lily-guile.hh" - -Lookup::Lookup () -{ - paper_l_ = 0; - symtables_p_ = new Symtables; - afm_p_ =0; -} - -Lookup::Lookup (Lookup const& s) -{ - font_ = s.font_; - font_path_ = s.font_path_; - paper_l_ = s.paper_l_; - symtables_p_ = new Symtables (*s.symtables_p_); - afm_p_ = 0; -} - -Lookup::Lookup (Symtables const& s) -{ - font_ = s.font_; - font_path_ = s.font_path_; - paper_l_ = 0; - symtables_p_ = new Symtables (s); - afm_p_ = 0; -} - -Lookup::~Lookup () -{ - delete afm_p_; - delete symtables_p_; -} - -Atom -Lookup::accidental (int j) const -{ - return afm_find (String ("accidentals") + String ("-") + to_str (j)); -} - -void -Lookup::add (String s, Symtable*p) -{ - symtables_p_->add (s, p); -} - -Atom -Lookup::afm_find (String s, String str) const -{ - if (!afm_p_) - { - *mlog << "[" << font_path_; - ( (Lookup*)this)->afm_p_ = new Adobe_font_metric (read_afm (font_path_)); - *mlog << "]" << flush ; - DOUT << this->afm_p_->str (); - } - Adobe_font_char_metric m = afm_p_->find_char (s); - - Atom a; - if (m.code () < 0) - return a; - - a.dim_ = m.B_; - a.dim_[X_AXIS] *= 1 / 1000.0; - a.dim_[Y_AXIS] *= 1 / 1000.0; - a.str_ = String_convert::form_str (str.ch_C (), m.code ()); - a.font_ = font_; - return a; -} - -Atom -Lookup::ball (int j) const -{ - if (j > 2) - j = 2; - - return afm_find (String ("balls") + String ("-") + to_str (j)); -} - -Atom -Lookup::bar (String str, Real h) const -{ - Array a; - a.push (print_dimen (h)); - Atom s = (*symtables_p_) ("bars")->lookup (str); - s.str_ = substitute_args (s.str_, a); - s.dim_.y () = Interval (-h/2, h/2); - s.font_ = font_; - return s; -} - -String -Lookup::base_output_str () const -{ - assert (paper_l_); - String str = paper_l_->get_default_output (); - - if (str.empty_b ()) - { - str = default_outname_base_global; - int def = paper_l_->get_next_default_count (); - if (def) - str += "-" + to_str (def); - } - return str; -} - -Atom -Lookup::beam (Real slope, Real width, Real thick) const -{ - Atom a (ps_beam (slope, width, thick)); - Real height = slope * width; - Real min_y = (0 ? height) + thick/2; - - a.dim_[X_AXIS] = Interval (0, width); - a.dim_[Y_AXIS] = Interval (min_y, max_y); - return a; -} - -String -Lookup::character_str (int i) const -{ - return to_str (i); -} - -Atom -Lookup::clef (String st) const -{ - return afm_find (String ("clefs") + String ("-") + st); -} - -Atom -Lookup::dashed_slur (Array controls, Real thick, Real dash) const -{ - assert (controls.size () == 8); - - Real dx = controls[3].x () - controls[0].x (); - Real dy = controls[3].y () - controls[0].y (); - - Atom a; - a.font_ = font_; - a.dim_[X_AXIS] = Interval (0, dx); - a.dim_[Y_AXIS] = Interval (0 ? dy); - -#ifndef HAVE_LIBGUILE - - String ps; - for (int i = 1; i < 4; i++) - ps += String_convert::double_str (controls[i].x ()) + " " - + String_convert::double_str (controls[i].y ()) + " "; - - ps += String_convert::double_str (controls[0].x ()) + " " - + String_convert::double_str (controls[0].y ()) + " "; - - ps += String_convert::double_str (thick) + " "; - Real on = dash > 1? thick * dash - thick : 0; - Real off = 2 * thick; - ps += "[" + String_convert::double_str (on) + " "; - ps += String_convert::double_str (off) + "] "; - ps += String_convert::int_str (0) + " "; - ps += "draw_dashed_slur "; - - a.str_ = ps; - -#else // HAVE_LIBGUILE - - // (lambda (o) (dashed-slur o '((0.1 0.2) (1.1 1.2) (2.1 2.2) (3.1 3.2)))) - a.lambda_ = - gh_append (gh_lambda_o (), - gh_list1 (gh_append (gh_func_o ("dashed-slur"), - gh_cons (gh_double2scm (thick), gh_cons (gh_double2scm (dash), - gh_list1 (gh_list2 (gh_quote (), - gh_cons (gh_list2 (gh_double2scm (controls[0].x ()), gh_double2scm (controls[0].y ())), - gh_cons (gh_list2 (gh_double2scm (controls[1].x ()), gh_double2scm (controls[1].y ())), - gh_cons (gh_list2 (gh_double2scm (controls[2].x ()), gh_double2scm (controls[2].y ())), - gh_cons (gh_list2 (gh_double2scm (controls[3].x ()), gh_double2scm (controls[3].y ())), - SCM_EOL))))))))))); - -#endif // HAVE_LIBGUILE - - return a; -} - -Atom -Lookup::dots () const -{ - return afm_find (String ("dots") + String ("-") + String ("dot")); -} - -Atom -Lookup::dynamic (String st) const -{ - return (*symtables_p_) ("dynamics")->lookup (st); -} - -Atom -Lookup::fill (Box b) const -{ - Atom a; - a.dim_ = b; - return a; -} - -Atom -Lookup::flag (int j, Direction d) const -{ - char c = (d == UP) ? 'u' : 'd'; - return afm_find (String ("flags") + String ("-") + to_str (c) + to_str (j)); -} - -void -Lookup::print () const -{ -#ifndef NPRINT - DOUT << "Lookup {\n"; - symtables_p_->print (); - DOUT << "}\n"; -#endif -} - -String -Lookup::print_dimen (Real r) const -{ - String s = to_str (r, "%.3f"); - if (s.index_i ("NaN") != -1) - { - warning (_ ("NaN")); - s = "0.0"; - } - return s; -} - -Atom -Lookup::rest (int j, bool o) const -{ - return afm_find (String ("rests") - + String ("-") + to_str (j) + (o ? "o" : "")); -} - -Atom -Lookup::rule_symbol (Real height, Real width) const -{ - Atom bs= (*symtables_p_) ("param")->lookup ("rule"); - Array args; - args.push (print_dimen (height)); - args.push (print_dimen (width)); - bs.str_ = substitute_args (bs.str_, args); - bs.dim_.x () = Interval (0, width); - bs.dim_.y () = Interval (0, height); - return bs; -} - -Atom -Lookup::script (String str) const -{ - return afm_find (String ("scripts") + String ("-") + str); -} - -Atom -Lookup::special_time_signature (String s, Array arr) const -{ - String symbolname = "timesig-"+s+"%/%"; - Atom a (afm_find (substitute_args (symbolname, arr))); - if (!a.empty ()) - return a; - // Try if the full name was given - a = afm_find ("timesig-"+s); - if (!a.empty ()) - return a; - // Resort to default layout with numbers - return time_signature (arr); -} - -static void -substitute_arg (String& r, String arg) -{ - int p = r.index_i ('%'); - if (p < 0) - return ; - - r = r.left_str (p) + arg + r.right_str (r.length_i () - p - 1); -} - -String -Lookup::substitute_args (String source, Array args) const -{ - String str (source); - for (int i = 0 ; i < args.size (); i++) - substitute_arg (str, args[i]); - return str; -} - -String -Lookup::substitute_args (String source, Array args) const -{ - Array sv; - for (int i = 0 ; i < args.size (); i++) - sv.push (args[i]); - return substitute_args (source, sv); -} - -Atom -Lookup::stem (Real y1, Real y2, String str) const -{ - if (y1 > y2) - { - Real t = y1; - y1 = y2; - y2 = t; - } - Atom s; - - s.dim_.x () = Interval (0,0); - s.dim_.y () = Interval (y1,y2); - - Array a; - - Real stem_width = paper_l_->get_var ("stemthickness"); - a.push (print_dimen (-stem_width /2)); - a.push (print_dimen (stem_width)); - a.push (print_dimen (y2)); - a.push (print_dimen (-y1)); - - s.str_ = substitute_args (str, a); - s.font_ = font_; - return s; -} - -Atom -Lookup::streepje (int type) const -{ - if (type > 2) - type = 2; - - return afm_find ("balls" + String ("-") +to_str (type) + "l"); -} - -Atom -Lookup::text (String style, String text) const -{ - Array a; - - a.push (text); - Atom s = (*symtables_p_) ("style")->lookup (style); - s.str_ = substitute_args (s.str_,a); - s.font_ = font_; - - return s; -} - -Atom -Lookup::time_signature (Array a) const -{ - Atom s ((*symtables_p_) ("param")->lookup ("time_signature")); - s.str_ = substitute_args (s.str_, a); - - return s; -} - -/* - should be handled via Tex_ code and Lookup::bar () - */ -Atom -Lookup::vbrace (Real &y) const -{ - Atom brace = (*symtables_p_) ("param")->lookup ( "brace"); - Interval ydims = brace.dim_[Y_AXIS]; - Real min_y = ydims[LEFT]; - Real max_y = ydims[RIGHT]; - Real step = 1.0 PT; - - if (y < min_y) - { - warning (_ ("piano brace") - + " " + _ ("too small") + " (" + print_dimen (y) + ")"); - y = min_y; - } - if (y > max_y) - { - warning (_ ("piano brace") - + " " + _ ("too big") + " (" + print_dimen (y) + ")"); - y = max_y; - } - - - int idx = int (rint ( (y- min_y)/step)) + 1; - - { - Array a; - a.push (character_str (idx)); - brace.str_ = substitute_args (brace.str_,a); - brace.dim_[Y_AXIS] = Interval (-y/2,y/2); - } - - brace.font_ = font_; - - return brace; -} - - diff --git a/lily/main.cc b/lily/main.cc index 74543baf2c..5b541eb29f 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -10,8 +10,6 @@ #include #include #include -#include "lily-guile.hh" - #include "proto.hh" #include "dimensions.hh" #include "plist.hh" @@ -188,8 +186,17 @@ identify () *mlog << get_version_str () << endl; } +void +guile_init () +{ +#ifdef HAVE_LIBGUILE + gh_eval_str ("(define (add-column p) (display \"adding column (in guile): \") (display p) (newline))"); +#endif +} + + void -main_prog (int argc, char **argv) +setup_paths () { // facilitate binary distributions char const *env_lily = getenv ("LILYPONDPREFIX"); @@ -213,10 +220,6 @@ main_prog (int argc, char **argv) textdomain (name.ch_C ()); #endif - identify (); - call_constructors (); - debug_init (); // should be first - global_path.add (""); // must override (come before) "/usr/local/share/lilypond"! char const *env_sz = getenv ("LILYINCLUDE"); @@ -231,11 +234,24 @@ main_prog (int argc, char **argv) global_path.add (String (DIR_DATADIR) + "/ly/"); global_path.add (String (DIR_DATADIR) + "/afm/"); +} - Getopt_long oparser (argc, argv,theopts); - String init_str; + +int +main_prog (int argc, char **argv) +{ + guile_init (); + identify (); + call_constructors (); + debug_init (); // should be first + + setup_paths (); + + String init_str; String outname_str; + + Getopt_long oparser (argc, argv,theopts); while (Long_option_init const * opt = oparser ()) { switch (opt->shortname) @@ -243,7 +259,6 @@ main_prog (int argc, char **argv) case 't': experimental_features_global_b = true; global_lookup_l = &ps_lookup; - *mlog << "*** enabling experimental features, you're on your own now ***\n"; break; case 'o': outname_str = oparser.optional_argument_ch_C_; @@ -329,18 +344,8 @@ main_prog (int argc, char **argv) default_outname_base_global = outname_str; do_one_file (i, default_outname_base_global); } -} -int -main (int argc, char **argv) -{ -#ifdef HAVE_LIBGUILE - gh_enter (argc, argv, (void(*)())main_prog); - return exit_status_i_; -#else - main_prog (argc, argv); return exit_status_i_; -#endif } /* @@ -380,3 +385,19 @@ distill_inname_str (String name_str, String& ext_r) return str; } + +#ifdef HAVE_LIBGUILE +int +main (int argc, char **argv) +{ + gh_enter (argc, argv, (void(*)())main_prog); + return exit_status_i_; +} + +#else +int main (int argc, char **argv) +{ + return main_prog (argc, argv); +} + +#endif diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index b19215f512..2b329815d6 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -167,7 +167,7 @@ Music_iterator::static_get_iterator_p (Music const *m, Translator_group *report_ } void -Music_iterator::inherit_info(Music_iterator const *parent) +Music_iterator::inherit_info(Music_iterator const *) { } diff --git a/lily/musical-request.cc b/lily/musical-request.cc index dd7da312df..3ee6004add 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -184,7 +184,6 @@ Note_req::do_equal_b (Request*r) const Note_req::Note_req () { - cautionary_b_ = false; forceacc_b_ = false; } @@ -195,11 +194,7 @@ Note_req::do_print () const { #ifndef NPRINT Melodic_req::do_print (); - if (cautionary_b_) - { - DOUT << " force cautionary accidental\n"; - } - else if (forceacc_b_) + if (forceacc_b_) { DOUT << " force accidental\n"; } diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc index 4c7d05a9a2..82948a3067 100644 --- a/lily/my-lily-lexer.cc +++ b/lily/my-lily-lexer.cc @@ -55,7 +55,6 @@ static Keyword_ent the_key_tab[]={ {"pt", PT_T}, {"relative", RELATIVE}, {"remove", REMOVE}, - {"scm", SCHEME}, {"score", SCORE}, {"script", SCRIPT}, {"shape", SHAPE}, diff --git a/lily/notename-table.cc b/lily/notename-table.cc index 9b08369db0..bf32cb7ee2 100644 --- a/lily/notename-table.cc +++ b/lily/notename-table.cc @@ -9,13 +9,13 @@ #include "notename-table.hh" #include "pointer.tcc" #include "musical-request.hh" -#include "assoc-iter.hh" +#include "dictionary-iter.hh" String Notename_table::get_name (Musical_pitch m) const { - for (Assoc_iter ai (*this); ai.ok (); ai++) + for (Dictionary_iter ai (*this); ai.ok (); ai++) { if (ai.val () == m) return ai.key (); diff --git a/lily/paper-def.cc b/lily/paper-def.cc index d3d4a67954..8593add910 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -21,8 +21,7 @@ #include "identifier.hh" #include "main.hh" #include "scope.hh" -#include "assoc.hh" -#include "assoc-iter.hh" +#include "dictionary-iter.hh" Paper_def::Paper_def () { @@ -214,7 +213,7 @@ String Paper_def::ps_output_settings_str () const { String s ("\n "); - for (Assoc_iter i (*scope_p_); i.ok (); i++) + for (Dictionary_iter i (*scope_p_); i.ok (); i++) s += String ("/mudelapaper") + i.key () + "{" + i.val ()->str () + "} bind def\n"; s += *scope_p_->elem ("pssetting")->access_String (); @@ -225,7 +224,7 @@ String Paper_def::tex_output_settings_str () const { String s ("\n "); - for (Assoc_iter i (*scope_p_); i.ok (); i++) + for (Dictionary_iter i (*scope_p_); i.ok (); i++) s += String ("\\def\\mudelapaper") + i.key () + "{" + i.val ()->str () + "}\n"; s += *scope_p_->elem ("texsetting")->access_String (); diff --git a/lily/paper-outputter.cc b/lily/paper-outputter.cc index 2ecf72a5ca..1e8d450c7b 100644 --- a/lily/paper-outputter.cc +++ b/lily/paper-outputter.cc @@ -27,7 +27,7 @@ Paper_outputter::~Paper_outputter () } void -Paper_outputter::output_molecule (Molecule const*m, Offset o, char const *nm, String s, String output_str) +Paper_outputter::output_molecule (Molecule const*m, Offset o, char const *nm, String s) { if (check_debug) *outstream_l_ << String ("\n%start: ") << nm << "\n"; @@ -44,15 +44,7 @@ Paper_outputter::output_molecule (Molecule const*m, Offset o, char const *nm, St a.push (global_lookup_l->print_dimen (a_off.y())); a.push (global_lookup_l->print_dimen (a_off.x())); - if (i->lambda_) - { - SCM str_scm = gh_call1 (gh_eval (i->lambda_), gh_eval_str ("'ps")); - char* c = gh_scm2newstr (str_scm, NULL); - a.push (String (c)); - free (c); - } - else - a.push (i->str_); + a.push (i->str_); r += global_lookup_l->substitute_args (s, a); *outstream_l_ << r; } diff --git a/lily/parser.yy b/lily/parser.yy index 1c254c8227..bf82af8ec4 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -10,7 +10,6 @@ */ #include -#include "lily-guile.hh" #include "notename-table.hh" #include "scalar.hh" #include "translation-property.hh" @@ -196,7 +195,6 @@ yylex (YYSTYPE *s, void * v_l) %token PT_T %token RELATIVE %token REMOVE -%token SCHEME /* token vs typedef; can't be named SCM */ %token SCORE %token SCRIPT %token SHAPE @@ -323,18 +321,8 @@ toplevel_expression: Midi_def_identifier ($1, MIDI_IDENTIFIER); THIS->lexer_p_->set_identifier ("$defaultmidi", id) } - | embedded_scm { - } ; -embedded_scm: - SCHEME STRING ';' { - #ifdef HAVE_LIBGUILE - gh_eval_str ($2->ch_C ()); - #endif - delete $2; - }; - check_version: VERSION STRING ';' { Mudela_version ver (*$2); @@ -1031,10 +1019,6 @@ steno_notepitch: | steno_notepitch '!' { $$->forceacc_b_ = ! $$->forceacc_b_; } - | steno_notepitch '?' { - $$->forceacc_b_ = ! $$->forceacc_b_; - $$->cautionary_b_ = ! $$->cautionary_b_; - } ; @@ -1458,7 +1442,7 @@ symtable: symtable_body: { $$ = new Symtable; } | symtable_body STRING symboldef { - $$->add (*$2, *$3); + $$->elem (*$2) = *$3; delete $2; delete $3; } diff --git a/lily/parser.yy.orig b/lily/parser.yy.orig deleted file mode 100644 index c73b8b812b..0000000000 --- a/lily/parser.yy.orig +++ /dev/null @@ -1,1504 +0,0 @@ -%{ // -*-Fundamental-*- - -/* - parser.yy -- Bison/C++ parser for mudela - - source file of the GNU LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys - Jan Nieuwenhuizen -*/ - -#include -#include "lily-guile.hh" -#include "notename-table.hh" -#include "scalar.hh" -#include "translation-property.hh" -#include "script-def.hh" -#include "symtable.hh" -#include "lookup.hh" -#include "ps-lookup.hh" -#include "tex-lookup.hh" -#include "misc.hh" -#include "my-lily-lexer.hh" -#include "paper-def.hh" -#include "midi-def.hh" -#include "main.hh" -#include "file-path.hh" -#include "keyword.hh" -#include "debug.hh" -#include "parseconstruct.hh" -#include "dimensions.hh" -#include "identifier.hh" -#include "command-request.hh" -#include "musical-request.hh" -#include "my-lily-parser.hh" -#include "text-def.hh" -#include "translator-group.hh" -#include "score.hh" -#include "music-list.hh" -#include "duration-convert.hh" -#include "change-translator.hh" -#include "file-results.hh" -#include "mudela-version.hh" -#include "scope.hh" -#include "relative-music.hh" -#include "transposed-music.hh" -#include "compressed-music.hh" - -// mmm -Mudela_version oldest_version ("1.0.7"); -Mudela_version version ("1.0.8"); - - -// needed for bison.simple's malloc() and free() -#include - -int const GUESS_PLET = 5; -int guess_plet_a[GUESS_PLET] = -{ - 1, - 3, - 2, - 3, - 4 -}; - -struct Assignment { - String *name_p_; - Identifier *id_p_; - ~Assignment () { - delete name_p_; - delete id_p_; - } - Assignment () { - name_p_ = 0; - id_p_ =0; - } - Assignment (Assignment const&s) - { - name_p_ = new String (*s.name_p_); - id_p_ = s.id_p_->clone (); - } -}; - -Paper_def* current_paper = 0; - -#ifndef NDEBUG -#define YYDEBUG 1 -#endif - -#define YYERROR_VERBOSE 1 - -#define YYPARSE_PARAM my_lily_parser_l -#define YYLEX_PARAM my_lily_parser_l -#define THIS ((My_lily_parser *) my_lily_parser_l) - -#define yyerror THIS->parser_error -#define ARRAY_SIZE(a,s) if (a.size () != s) THIS->parser_error (_f("expecting %d arguments", s)) - - -%} - - -%union { - Array* intarr; - Array *pitch_arr; - Array * strvec; - Array *intvec; - Box *box; - Simultaneous_music *chord; - Duration *duration; - Identifier *id; - Translator* trans; - Music *music; - Music_list *music_list; - Score *score; - Scope *scope; - Interval *interval; - Musical_req* musreq; - Music_output_def * outputdef; - Musical_pitch * pitch; - Midi_def* midi; - Moment *moment; - Note_req *notereq; - Notename_table *notenametab; - Paper_def *paper; - Real real; - Request * request; - General_script_def * script; - Scalar *scalar; - String *string; - Atom * symbol; - Symtable * symtable; - Symtables* symtables; - Text_def * textdef; - Tempo_req *tempo; - char c; - const char *consstr; - int i; - int pair[2]; - int ii[10]; -} -%{ - -int -yylex (YYSTYPE *s, void * v_l) -{ - My_lily_parser *pars_l = (My_lily_parser*) v_l; - My_lily_lexer * lex_l = pars_l->lexer_p_; - - lex_l->lexval_l = (void*) s; - return lex_l->yylex (); -} - - -%} - -%pure_parser - -/* tokens which are not keywords */ - -%token ABSDYNAMIC -%token ACCEPTS -%token BAR -%token BEAMPLET -%token CADENZA -%token CLEF -%token CM_T -%token CONSISTS -%token DURATION -%token END -%token FONT -%token GROUPING -%token HEADER -%token IN_T -%token KEY -%token KEYSIGNATURE -%token LYRICS -%token MAEBTELP -%token MARK -%token MEASURES -%token MIDI -%token MM_T -%token MUSIC -%token MUSICAL_PITCH -%token NAME -%token NOTENAMES -%token NOTES -%token OCTAVE -%token OUTPUT -%token PAPER -%token PARTIAL -%token PENALTY -%token PLET -%token PROPERTY -%token PT_T -%token RELATIVE -%token REMOVE -%token SCHEME /* token vs typedef; can't be named SCM */ -%token SCORE -%token SCRIPT -%token SHAPE -%token SKIP -%token SPANDYNAMIC -%token SYMBOLTABLES -%token TABLE -%token TELP -%token TEMPO -%token TIME_T -%token TIMES -%token TRANSLATOR -%token TRANSPOSE -%token TYPE -%token VERSION - -/* escaped */ -%token E_EXCLAMATION E_SMALLER E_BIGGER E_CHAR - -%type dots -%token DIGIT -%token NOTENAME_PITCH -%token DURATION_IDENTIFIER -%token IDENTIFIER -%token NOTENAME_TABLE_IDENTIFIER -%token MUSIC_IDENTIFIER -%token POST_REQUEST_IDENTIFIER -%token SCRIPT_IDENTIFIER -%token COMMAND_IDENTIFIER -%token REAL_IDENTIFIER -%token STRING_IDENTIFIER -%token TRANS_IDENTIFIER -%token INT_IDENTIFIER -%token SCORE_IDENTIFIER -%token MIDI_IDENTIFIER -%token PAPER_IDENTIFIER -%token REQUEST_IDENTIFIER -%token REAL -%token DURATION RESTNAME -%token STRING -%token UNSIGNED - - -%type output_def -%type mudela_header mudela_header_body -%type box -%type open_request_parens close_request_parens -%type open_abbrev_parens -%type open_plet_parens close_plet_parens -%type sub_quotes sup_quotes -%type simple_element request_chord command_element Simple_music Composite_music -%type abbrev_type -%type int unsigned -%type script_dir -%type identifier_init simple_identifier_init block_identifier -%type steno_duration notemode_duration -%type entered_notemode_duration explicit_duration -%type dinterval -%type intastint_list int_list -%type symtables symtables_body - -%type explicit_musical_pitch steno_musical_pitch musical_pitch absolute_musical_pitch -%type steno_notepitch -%type pitch_list -%type midi_block midi_body -%type duration_length - -%type scalar -%type Music relative_music Sequential_music Simultaneous_music -%type property_def translator_change -%type Music_list -%type paper_block paper_def_body -%type real_expression real dimension -%type abbrev_command_req -%type post_request structured_post_request -%type plet_fraction -%type command_req verbose_command_req -%type script_req dynamic_req -%type string -%type score_block score_body -%type shape_array -%type