]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.5.25 release/1.5.25
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 5 Dec 2001 18:08:18 +0000 (19:08 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 5 Dec 2001 18:08:18 +0000 (19:08 +0100)
46 files changed:
ChangeLog
Documentation/bibliography/GNUmakefile
Documentation/bibliography/colorado.bib
Documentation/bibliography/computer-notation.bib
Documentation/bibliography/html-long.bst [new file with mode: 0644]
Documentation/regression-test.tely
Documentation/topdocs/INSTALL.texi
INSTALL.txt
VERSION
buildscripts/bib2html.py [new file with mode: 0644]
configure
configure.in
input/regression/accidental-octave.ly [deleted file]
input/regression/accidental-single-double.ly
input/regression/accidentals.ly [deleted file]
input/test/accidentals.ly
lily/accidental-engraver.cc
lily/fingering-engraver.cc
lily/gourlay-breaking.cc
lily/include/lily-guile.hh
lily/include/simple-spacer.hh
lily/lily-guile.cc
lily/pitch.cc
lily/script-column.cc
lily/simple-spacer.cc
lily/stem.cc
lily/translator-def.cc
ly/engraver-init.ly
ly/property-init.ly
make/out/lilypond.lsm
make/out/lilypond.mandrake.spec
make/out/lilypond.redhat.spec
make/out/lilypond.suse.spec
scm/grob-property-description.scm
scm/interface-description.scm
scm/music-functions.scm
scm/translator-property-description.scm
scripts/ly2dvi.py
scripts/pmx2ly.py
tex/feta11.tex [new file with mode: 0644]
tex/feta13.tex [new file with mode: 0644]
tex/feta16.tex [new file with mode: 0644]
tex/feta19.tex [new file with mode: 0644]
tex/feta20.tex [new file with mode: 0644]
tex/feta23.tex [new file with mode: 0644]
tex/feta26.tex [new file with mode: 0644]

index b3ae394d3a2bf5de8eda682756a4290b67cfc824..e30cf2f8fd420d5d2a940e1ba909b460b3ecad06 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,20 @@
---- ../lilypond-1.5.24.jcn1/ChangeLog  Sat Dec  1 15:35:46 2001
-++ b/ChangeLog Wed Dec  5 14:31:02 2001
-@@ -1,3 +1,22 @@
+2001-12-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * bibtools/bib2html.py: Add simple bib2html convertor, and .bst
+       files to have standardised HTML bibliography output. Update build
+       docs to reflect this.
+
+       * lily/include/simple-spacer.hh (struct Simple_spacer): add
+       active_count_, so that we don't have to look for active springs
+       anymore.
+
+       * scm/interface-description.scm,scm/grob-property-description.scm:
+       Add 'penalty
+
+       * lily/simple-spacer.cc (solve): Handle forced line breaks
+       here. Fixes problems when combining linebreaks with non-fitting
+       line configurations
+
 2001-12-05  Jan Nieuwenhuizen  <janneke@gnu.org>
 
        * 1.4.9.jcn3 forward ports.
 
        * ly2dvi: Don't accept filenames with spaces (+ fix).
 
- 2001-12-01  Han-Wen  <hanwen@cs.uu.nl>
-       * lily/note-head.cc (head_extent): added to compute width without2001-12-03 Rune Zedeler <rune@zedeler.dk>
+2001-12-03  Han-Wen  <hanwen@cs.uu.nl>
 
-       * lily/lily-guile.cc: Added ly_assoc_front_x() and ly_assoc_cdr()
-       (FIXME: not accessible from guile)
-       
-       * lily/accidental-engraver.cc: rewrote accidental-routines to get
-       better support for Kurt Stone's suggestions.
-       Removed properties: noResetKey, autoReminders.
-       Added properties:   oneMeasureLazy, extraNatural, autoAccidentals,
-                           autoCautionaries.
-       
-       * ly/property-init.ly: added commands
-       \defaultAccidentals \modernAccidentals \modernCautionaries
-       \noResetKey
+       * ly/engraver-init.ly (VoiceContext): fix text engraver ordering.
 
-       * ly/engraver-init.ly: Correct initialization of new accidentals.
+       * lily/translator-def.cc: Remove manual symbol caching.
+
+       * lily/script-column.cc (before_line_breaking): robustness check:
+       don't crash if no direction set.
+
+       * scripts/pmx2ly.py: Key and clef change support (Laura Conrad)
+
+       * scripts/pmx2ly.py (Parser.parse_header): more generic header
+       parsing.
 
-       * scm/translator-property-description.scm: The new properties
-       added.
 
-       * input/: Some examples added, some changed.
-       
-       * Documentation/regression-test.tely: Added quick test of new
-       accidentals.
-       
-       
 2001-12-01  Han-Wen  <hanwen@cs.uu.nl>
 
        * lily/note-head.cc (head_extent): added to compute width without
index 78e0c3c7306f2a5d9cd0a9839bfa79ec18b10a80..9eebd303702491914e1fb9de51dd1dddd23b1e02 100644 (file)
@@ -4,12 +4,11 @@ depth=../..
 
 OUT_BIB_FILES = $(addprefix $(outdir)/, $(BIB_FILES))
 BIB_FILES= $(wildcard *.bib)
-EXTRA_DIST_FILES= $(BIB_FILES)
+EXTRA_DIST_FILES= $(BIB_FILES) $(wildcard *.bst)
 
 STEPMAKE_TEMPLATES=tex documentation
 LOCALSTEPMAKE_TEMPLATES=lilypond ly
 
-export BIBINPUTS:=$(shell pwd)//$(PATHSEP)$(BIBINPUTS)
 include $(depth)/make/stepmake.make 
 
 dvi: $(DVI_FILES) $(OUT_BIB_FILES)
@@ -22,6 +21,7 @@ default:
 GENHTMLS = engraving colorado  computer-notation
 OUTGENHTMLS = $(addprefix $(outdir)/, $(GENHTMLS:%=%.html))
 
+
 local-WWW: $(addprefix $(outdir)/, $(BIB_FILES:.bib=.html))
        $(PYTHON) $(step-bindir)/ls-latex.py  --title 'References on Music Notation' \
          $(YO_FILES) $(OUTYO_FILES:.yo=.latex) $(BIB_FILES) $(DOC_FILES) $(TEX_FILES) \
@@ -33,7 +33,7 @@ $(outdir)/%.bib: %.bib
        $(MAKE) footify
 
 $(outdir)/%.html: %.bib
-       -$(BIBTEX2HTML) $(BIBTEX2HTML_FLAGS)
+       $(PYTHON) $(depth)/buildscripts/bib2html.py -o $@ $<
        $(footify) $@
 
 local-clean:
index 6d7cf5120046978627ee79843bcc7b681330d35a..b9ac8df280ca43826508349c3d94e13aaf5f74b8 100644 (file)
@@ -3,19 +3,16 @@
 % AUTHOR=Alyssa Lamb (edited & converted to bibtex by HWN)
 %
 
-
-% TODO: fix the labelling.  
-
-@Book {6,
+@Book {jacob47:_music,
        author ={Jacob, Archibald},
-       year={1947},
+       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,
+@Book{brandt:_stand_chord_symbol_notat,
        author ={Carl Brandt and Clinton Roemer},
        title = {Standardized Chord Symbol Notation},
        address={Sherman Oaks, CA},
        note ={subject: musical notation},
 }
 
-@Book {22,
+@Book{johnson46:_how,
        author = {Johnson, Harold M},
-       year = {1946},
+       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,
+@Book{sadie90:_music_print_publis,
        title = {Music Printing & Publishing},
        author ={Donald W. Krummel \& Stanley Sadie},
-       year = {1990},
+       year = 1990,
        publisher= {Macmillan Press},
        note ={subject: musical notation},
 }
@@ -43,7 +40,7 @@
 %series={The Norton/Grove Handbooks in Music.},
 % publisher={W.W. Norton},
 
-@Book {40,
+@Book{foss:_music_print,
        author={Foss, Hubert},
        title = {Music Printing},
        series = {Practical Printing and Binding},
        note ={subject: musical notation},
 }
 
-@Book {48,
+@Book{steele03:_earlies_englis_music_print,
        author = {Steele, Robert},
-       year = {1903},
+       year = 1903,
        title = {The Earliest English Music Printing},
        address={London},
        note= {subject: history of music printing and engraving},
 }
 
-@Book {54,
+@Book{austin:_story_music_print,
        author={Austin, Ernest},
        title = {The Story of Music Printing},
        address={London},
@@ -71,7 +68,7 @@
 
 
 
-@Book {63,
+@Book{?:_pictor_histor_music_print,
        author={?},
        title = {Pictoral History of Music Printing},
        address={Elhardt, Indiana},
@@ -80,9 +77,9 @@
 
 }
 
-@Book {77,
+@Book{wintermitz55:_music_autog_montev_hindem,
        author = {Wintermitz, Emmanuel},
-       year = {1955},
+       year = 1955,
        title = {Musical Autographs from Monteverdi to Hindemith},
        address={Princeton},
        publisher={Princeton University Press},
 }
 
 
-@Book {92,
+@Book{novello47:_some_accoun_method_music_print,
 
        author = {Novello, A},
-       year = {1847},
+       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,
+@Book{chrsander18:_sketc_histor_music,
        author={Chrsander, F.},
        year={18??},
        title={A Sketch of the HIstory of Music printing, from the 15th to the 16th century},
 
 @Article {squire1897,
        author = {Squire, W},
-       year = {1897},
+       year = 1897,
        title = {Notes on Early Music Printing},
        journal = {Bibliographica},
        volume={iii},
-       number={99},
+       number=99,
        note={ subject: history of music printing and engraving},
 
 }
 
-@Article{113,
+@Article{meyer35:_print_music,
        author = {Meyer, K. and O'Meara, J},
-       year = {1935},
+       year = 1935,
        title = {The Printing of Music, 1473-1934},
        journal = {The Dolphin},
        volume={ ii},
 
 }
 %% 4th ver.,
-@Article {120,
+@Article{pattison39:_notes_early_music_print,
        author = {Pattison, B},
-       year = {1939},
+       year = 1939,
        title = {Notes on Early Music Printing},
        journal = {The Library},
        note={subject: history of music printing and engraving},
        pages={389-421}, 
 }
 
-@Book {136,
+@Book{king64:_four_hundr_years_music_print,
        author = {King, H},
-       year = {1964},
+       year = 1964,
        title = {Four Hundred Years of Music Printing},
        address={London},
        note={ subject: history of music printing and engraving},
 
 
 %(Rev.1961).
-@Book{150,
+@Book{deutsch46:_music_number,
        author={Deutsch, O.F.},
-       year ={1946},
+       year =1946,
        title = {Music Publishers' Numbers},
        address={London},
        note={ subject: history of music printing and engraving},
 }
 
-@Book {151,
+@Book{marco62:_earlies_music_print_contin_europ,
        author = {Marco, G.A},
-       year = {1962},
+       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,
+@Article{kinkeldey32:_music_and_music_print_incun,
        author = {Kinkeldey, O},
-       year = {1932},
+       year = 1932,
        title = {Music And Music Printing in Incunabula},
        journal = {Papers of the Bibliographical Society of America},
        volume={ xxvi},
        note={ subject: history of music printing and engraving},
 }
 
-@Book {166,
+@Book{oldman34:_collec_music_first_edition,
        author = {Oldman, C.B},
-       year = {1934},
+       year = 1934,
        title = {Collecting Musical First Editions},
        address={London},
        note={ subject: history of music printing and engraving},
 }
 
-@Book{170,
+@Book{carter34:_new_paths_book_collec,
        author={Carter, J},
-       year={1934},
+       year=1934,
        title = {New Paths in Book Collecting},
        address={London},
        note={ subject: history of music printing and engraving},
 }
 
-@Book {179,
+@Book{krummel58:_graph_analy_applic_early_americ_engrav_music,
        author={Krummel, D.W.},
-       year={1958},
-       month={9},
+       year=1958,
+       month=9,
        title = {Graphic Analysis in Application to Early American Engraved Music},
        journal = {Notes},
        volume={xvi},
-       pages={213},
+       pages=213,
        note={ subject: history of music printing and engraving},
 }
 
-@Book {189,
+@Book{krummel71:_oblon_format_early_music_books,
        author = {Krummel, D.W},
-       year = {1971},
+       year = 1971,
        title = {Oblong Format in Early Music Books},
        journal = {The Library},
        volume={5th ser., xxvi},
-       pages={312},
+       pages=312,
        note={ subject: history of music printing and engraving},
 }
 
-@Book {198,
+@Book{king73:_anniv_music_print,
        author = {King, A.H},
-       year = {1973},
+       year = 1973,
        title = {The 50th Anniversary of Music Printing},
 }
 
-@Book {204,
+@Book{rastall82:_wester,
        author={Rastall, Richard},
-       year={1982},
+       year=1982,
  title = {The notation of Western music : an introduction},
        address={New York, N.Y.},
        publisher={St. Martin's Press},
 
 }
 
-@Book {215,
+@Book{tappolet47:_la_notat_music,
        author = {Tappolet, Willy},
-       year = {1947},
+       year = 1947,
        title = {La Notation Musicale},
        address={Paris},
        note={subject: general notation},
        publisher={Neuch\^atel},
 }
 
-@Book {223,
+@Book{williams03:_story_notat,
        author = {Williams, C.F. Abdy},
-       year = {1903},
+       year = 1903,
        title = {The Story of Notation},
        address={New York},
        publisher={Charles Scribner's Sons},
        note={subject: general notation},
 }
 
-@Book {239,
+@Book{apel53,
        author={Apel, Willi},
-       year={1953},
+       year=1953,
        title = {The notation of polyphonic music, 900-1600},
        address={Cambridge, Mass},
        institution={Mediaeval Academy of America},
        note = {Musical notation},
 }
 
-@Book {248,
+@Book{berger93:_mensur,
        author={Berger, Anna Maria Busse},
-       year={1993},
+       year=1993,
        title = {Mensuration and proportion signs : origins and evolution},
        address={Oxford, England},
        publisher={Clarendon Press},
        note={subject: early notation},
 }
 
-@Book {258,
+@Book{parrish57,
        author={Parrish, Carl},
-       year={1957},
+       year=1957,
  title = {The notation of medieval music},
        address={New York},
        publisher={Norton},
 
 }
 
-@Book {269,
+@Book{parrish46:_notat_mediev_music,
        author = {Parrish, Carl},
-       year = {1946},
+       year = 1946,
        title = {The Notation of Medieval Music},
        address={New York},
        publisher={Carl Fischer, Inc.},
        note={subject: early notation},
 }
 
-@Book {277,
+@Book{patch49:_genes_music,
        author = {Patch, Harry},
-       year = {1949},
+       year = 1949,
        title = {Genesis of a Music},
        address={Madison},
        publisher={University of Wisconsin Press},
        note={subject: early notation},
 }
 
-@Book {285,
+@Book{cage69:_notat,
        author={Cage, John},
-       year={1969},
+       year=1969,
   title = {Notations},
        address={New York},
        publisher={Something Else Press},
        Performance Arts, with text by 269 composers, but rearranged using
        chance operations.,V)} },
 
-@Book {295,
+@Book{gaburo77:_notat,
        author = {Gaburo, Virginia},
-       year = {1977},
+       year = 1977,
        title = {Notation},
        address={publisher= {Lingua Press},
        publisher={La Jolla, California}},
        note = {A Lecture about notation, new ideas about},
 }
 
-@Book {306,
+@Book{risatti75:_new_music_vocab,
        author = {Risatti, Howard},
-       year = {1975},
+       year = 1975,
        title = {New Music Vocabulary},
        address={Urbana, Illinois},
        publisher={University of Illinois Press},
 
 
 
-@Book {325,
+@Book{cowell30:_new_music_resour,
        author = {Cowell, Henry},
-       year = {1930},
+       year = 1930,
        title = {New Musical Resources},
        address={New York},
        publisher={Alfred A. Knopf, Inc.},
        note={subject: 20th century notation},
 }
 
-@Article {333,
+@Article{cowell27:_our_inadeq_notat,
        author = {Cowell, Henry},
-       year = {1927},
+       year = 1927,
        title = {Our Inadequate Notation},
        journal = {Modern Music},
-       volume={4},
-       number={3},
+       volume=4,
+       number=3,
        note={subject: 20th century notation},
 
 }
 
-@Book {342,
+@Book{bowers92:_music_letter,
        author = {Bowers, Roger},
-       year = {1992},
+       year = 1992,
        title = {Music & Letters},
-       volume={73},
-       number={3},
+       volume=73,
+       number=3,
        month={August},
        pages={347(52)},
        note={Some reflection upon notation and proportion in Monteverdi's mass and vespers},
 }
 
-@Book {353,
+@Book{brainard92:_curren_music,
        author = {Brainard, Paul},
-       year = {1992},
+       year = 1992,
        title = {Current Musicology},
-       number={50},
+       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,
+@Book{monelle89:_compar_liter,
        author = {Monelle, Raymond},
-       year = {1989},
+       year = 1989,
        title = {Comparative Literature},
-       volume={41}, number={3}
+       volume=41, number=3
        month={Summer},
        pages={252(18)},
 
        note={Music notation and the poetic foot},
 }
 
-@Book {373,
+@Book{pinegar93:_curren_music,
        author = {Pinegar, Sandra},
-       year = {1993},
+       year = 1993,
        title = {Current Musicology},
-       number={53},
+       number=53,
        month={July},
        pages={99(10)},
        note={The seeds of notation and music paleography.},
 }
 
-@Book {382,
+@Book{smith90:_curren_music,
        author = {Smith, Norman E},
-       year = {1990},
+       year = 1990,
        title = {Current Musicology},
        number={45-47},
        month={Jan-Dec},
        note={The notation of fractio modi.},
 }
 
-@Book {392,
+@Book{treitler92:_journ_music,
        author = {Treitler, Leo},
-       year = {1992},
+       year = 1992,
        title = {The Journal of Musicology},
-       volume={10},
-       number={2},
+       volume=10,
+       number=2,
        month={Spring},
        pages={131(61)},
 
        Notational practice developed in medieval music to address the written tradition for chant which interacted with the unwritten vocal tradition.},
 }
 
-@Book {407,
+@Book{west94:_music_letter,
        author = {West, M.L},
-       year = {1994},
+       year = 1994,
        title = {Music & Letters},
-       volume={75},
-       number={2},
+       volume=75,
+       number=2,
        month={May},
        pages={161(19)},
        note={The Babylonian musical notation and the Hurrian melodic texts. 
 }
 }
 
-@Book {418,
+@Book{brown86:_music_quart,
        author = {Brown, Earle},
-       year = {1986},
+       year = 1986,
        title = {Musical Quarterly},
-       volume={72},
+       volume=72,
        month={Spring},
        pages={180(22)},
        note={The notation and performance of new music.},
 }
 
-@Book {426,
+@Book{eggleston94:_notes,
        author = {Eggleston, Suzanne},
-       year = {1994},
+       year = 1994,
        title = {Notes},
-       volume={51},
-       number={2},
+       volume=51,
+       number=2,
        month={Dec},
        pages={657(7)}, 
        journal={New periodicals},
 
 }
 
-@Book {441,
-
+@Book{fuller89:_journ_music,
        author = {Fuller, David},
-       year = {1989},
+       year = 1989,
        title = {The Journal of Musicology},
-       volume={7},
-       number={1},
+       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,
+@Book{jones90:_persp_new_music,
 
        author = {Jones, David Evan},
-       year = {1990},
+       year = 1990,
        title = {Perspectives of New Music},
        note={Speech extrapolated. (includes notation)}
 }
 
-@Book {464,
+@Book{lependorf89,
        author = {Lependorf, Jeffrey},
-       year = {1989},
+       year = 1989,
        journal={Perspectives of New Music},
-       volume={27},
- number={2},
+       volume=27,
+       title = {?},
+ 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) },
+       note={Contemporary notation for the shakuhachi: a primer for composers. (Tradition and Renewal in the Music of Japan) },
 
 }
 
-@Book {478,
+@Book{rastall93:_music_letter,
        author = {Rastall, Richard},
-       year = {1993},
+       year = 1993,
        title = {Music & Letters},
-       volume={74}, number={4},
+       volume=74, number=4,
        month={November},
        pages={639(2)},
 
        title={Writing without representation, and unreadable notation.},
 }
 
-@Book {501,
+@Book{hamel89,
        author = {Hamel, Keith A},
-       year = {1989},
+       year = 1989,
        journal = {Perspectives of New Music},
-       volume={27},
-       number={1},
+       volume=27,
+       number=1,
        month={Winter},
        pages={70(14)},
        title={A design for music editing and printing software based on notational syntax},
index c5a25053716ff1fcc998f175776406fbfa30aaba..b368d6fc30e7ae663b528254eeda051f35582797 100644 (file)
@@ -534,18 +534,14 @@ surprising that LilyPond is more mature.
   pages={47--61},
 }
 
-
-
 @Article {tablature-web,
   note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN},
   title = {how to read and write tab: a guide to tab notation},
   author = {Howard Wright},
   email={Howard.Wright@ed.ac.uk},
-  HTML={http://www.guitartabs.cc/tabfaq.shtml}
-%  HTML={http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html},
+  url={http://www.guitartabs.cc/tabfaq.shtml},
 }
 
-
 @Article {niff-web,
   note = {Specs for NIFF, a reasonably comprehensive but binary (yuk) format for notation HWN},
 
@@ -557,7 +553,6 @@ surprising that LilyPond is more mature.
   ftp = {ftp://blackbox.cartah.washington.edu}
 }
 
-
 @Article {smdl-web,
   author={unknown},
   title = {SMDL, Standard Musical Description Language},
@@ -656,18 +651,11 @@ general rules, similar to\cite{parrish87-simultaneities}},
 note = {Placement of accidentals crystallised in an enormous set of
 rules.  Same remarks as for \cite{grover89-twovoices} applies} }
 
-@TechReport{,
+@TechReport{droettboom00:_study_notat_descr_languag,
   author =      {Michael Droettboom},
   title =       {Study of music Notation Description Languages},
-  year =        {2000},
-  OPTkey =      {},
-  OPTvolume =   {},
-  OPTnumber =   {},
-  OPTpages =    {},
-  OPTmonth =    {},
-  OPTnote =     {},
-  OPTannote =   {}
-html= {http://gigue.peabody.jhu.edu/~mdboom/format.pdf}
+  year =        2000,
+url= {http://gigue.peabody.jhu.edu/~mdboom/format.pdf},
 annote ={Author compares GUIDO and lilypond. LilyPond wins on practical issues as usability and availability of tools, GUIDO wins on implementation simplicity.}
 }
 
diff --git a/Documentation/bibliography/html-long.bst b/Documentation/bibliography/html-long.bst
new file mode 100644 (file)
index 0000000..85a6163
--- /dev/null
@@ -0,0 +1,1373 @@
+% BibTeX bibliography style `html-long'
+%   spits out HTML-formatted bibliography in place of bbl output
+% by David Kotz dfk@cs.dartmouth.edu
+% $Id: html-long.bst,v 1.1 1999/03/11 22:00:27 dfk Exp dfk $
+%    modified from
+% BibTeX standard bibliography style `alpha'
+       % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
+       % Copyright (C) 1985, all rights reserved.
+       % Copying of this file is authorized only if either
+       % (1) you make absolutely no changes to your copy, including name, or
+       % (2) if you do make changes, you name it something other than
+       % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
+       % This restriction helps ensure that all standard styles are identical.
+       % The file btxbst.doc has the documentation for this style.
+
+% DFK added abstract, comment, earlier, keyword, later, URL
+ENTRY
+  { abstract
+    address
+    author
+    booktitle
+    chapter
+    comment
+    earlier
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    keyword
+    later
+    month
+    note
+    number
+    organization
+    pages
+    private
+    publisher
+    school
+    series
+    title
+    type
+    URL
+    volume
+    year
+  }
+  {}
+  { label extra.label sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { ", " * write$ }
+    { output.state after.block =
+       { add.period$ write$
+         newline$
+       }
+       { output.state before.all =
+            'write$
+            { add.period$ " " * write$ }
+           if$
+       }
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull
+  if$
+}
+
+% DFK changed to use cite$ for the label
+% DFK changed to HTML, and use URL to make cite key a link
+FUNCTION {output.bibitem}
+{ newline$
+  URL empty$
+    { "<DT> <A NAME=" quote$ * cite$ * quote$ * 
+       "> " * cite$ * ":</A> </DT>" * write$
+    }
+    { "<DT><A NAME=" quote$ * cite$ * quote$ * " HREF=" * quote$ * 
+       URL * quote$ * "> " * cite$ * ":</A></DT>" * write$
+    }
+  if$
+  newline$
+  "<DD>" write$ newline$
+  ""
+  before.all 'output.state :=
+}
+
+% DFK changed to HTML
+FUNCTION {fin.entry}
+{ add.period$
+  write$
+  newline$
+  earlier empty$
+       'skip$
+       { "<br>" write$ newline$
+         "See also earlier version <A HREF=" quote$ * "#" * earlier * quote$ *
+               ">" * earlier * "</A>." * write$ newline$
+       }
+  if$
+  later empty$
+       'skip$
+       { "<br>" write$ newline$
+         "See also later version <A HREF=" quote$ * "#" * later * quote$ *
+               ">" * later * "</A>." * write$ newline$
+       }
+  if$
+  "</DD>" write$ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { after.block 'output.state := }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+       'skip$
+       { after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+% DFK changed to HTML
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "<EM>" swap$ * "</EM>" * }
+  if$
+}
+
+% DFK added for HTML strong emphasis
+FUNCTION {strong}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "<STRONG>" swap$ * "</STRONG>" * }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+% DFK added this, to strip {} and ~ from titles and authors
+% It's not a great idea, because it will screw up in math mode and some
+% special characters... but it makes most things much prettier.
+FUNCTION {author.title.purify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "{" = 
+      t #1 #1 substring$ "}" = or
+       'skip$
+       { t #1 #1 substring$ "~" =
+           { " " * }
+           { t #1 #1 substring$ * }
+       if$
+       }
+      if$
+      t #2 global.max$ substring$ 't :=
+    }
+  while$
+}
+
+FUNCTION {format.names}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
+      nameptr #1 >
+       { namesleft #1 >
+           { ", " * t * }
+           { numnames #2 >
+               { "," * }
+               'skip$
+             if$
+             t "others" =
+               { " et&nbsp;al." * }
+               { " and " * t * }
+             if$
+           }
+         if$
+       }
+       't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names  author.title.purify }
+  if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+       { ", editors" * }
+       { ", editor" * }
+      if$
+    }
+  if$
+}
+
+% DFK added strong, so it will be bold.
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title "t" change.case$  author.title.purify strong }
+  if$
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+       { t #1 #2 substring$ "--" = not
+           { "--" *
+             t #2 global.max$ substring$ 't :=
+           }
+           {   { t #1 #1 substring$ "-" = }
+               { "-" *
+                 t #2 global.max$ substring$ 't :=
+               }
+             while$
+           }
+         if$
+       }
+       { t #1 #1 substring$ *
+         t #2 global.max$ substring$ 't :=
+       }
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.date}
+{ year empty$
+    { month empty$
+       { "" }
+       { "there's a month but no year in " cite$ * warning$
+         month
+       }
+      if$
+    }
+    { month empty$
+       'year
+       { month " " * year * }
+      if$
+    }
+  if$
+}
+
+% DFK changed emphasize to strong
+FUNCTION {format.btitle}
+{ title author.title.purify strong
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "&nbsp;" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+    { "" }
+    { "volume" volume tie.or.space.connect
+      series empty$
+       'skip$
+       { " of " * series emphasize * }
+      if$
+      "volume and number" number either.or.check
+    }
+  if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+    { number empty$
+       { series field.or.null }
+       { output.state mid.sentence =
+           { "number" }
+           { "Number" }
+         if$
+         number tie.or.space.connect
+         series empty$
+           { "there's a number but no series in " cite$ * warning$ }
+           { " in " * series * }
+         if$
+       }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { output.state mid.sentence =
+       { edition "l" change.case$ " edition" * }
+       { edition "t" change.case$ " edition" * }
+      if$
+    }
+  if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+       { #1 'multiresult := }
+       { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+    { "" }
+    { pages multi.page.check
+       { "pages" pages n.dashify tie.or.space.connect }
+       { "page" pages tie.or.space.connect }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+  number empty$
+    'skip$
+    { "(" number * ")" * *
+      volume empty$
+       { "there's a number but no volume in " cite$ * warning$ }
+       'skip$
+      if$
+    }
+  if$
+  pages empty$
+    'skip$
+    { duplicate$ empty$
+       { pop$ format.pages }
+       { ":" * pages n.dashify * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+       { "chapter" }
+       { type "l" change.case$ }
+      if$
+      chapter tie.or.space.connect
+      pages empty$
+       'skip$
+       { ", " * format.pages * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "" }
+    { editor empty$
+       { "In " booktitle emphasize * }
+       { "In " format.editors * ", " * booktitle emphasize * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$
+  and and and and and
+  key empty$ not and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+    'skip$
+    { pop$
+      type "t" change.case$
+    }
+  if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+    { "Technical Report" }
+    'type
+  if$
+  number empty$
+    { "t" change.case$ }
+    { number tie.or.space.connect }
+  if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+    { journal empty$
+       { "need key or journal for " cite$ * " to crossref " * crossref *
+         warning$
+         ""
+       }
+       { "In {\em " journal * "\/}" * }
+      if$
+    }
+    { "In " key * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+  editor num.names$ duplicate$
+  #2 >
+    { pop$ " et&nbsp;al." * }
+    { #2 <
+       'skip$
+       { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+           { " et&nbsp;al." * }
+           { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+         if$
+       }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+      "In "
+    }
+    { "Volume" volume tie.or.space.connect
+      " of " *
+    }
+  if$
+  editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+       { series empty$
+           { "need editor, key, or series for " cite$ * " to crossref " *
+             crossref * warning$
+             "" *
+           }
+           { "{\em " * series * "\/}" * }
+         if$
+       }
+       { key * }
+      if$
+    }
+    { format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+       { booktitle empty$
+           { "need editor, key, or booktitle for " cite$ * " to crossref " *
+             crossref * warning$
+             ""
+           }
+           { "In {\em " booktitle * "\/}" * }
+         if$
+       }
+       { "In " key * }
+      if$
+    }
+    { "In " format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+
+% DFK added
+% top of stack is the string we want to be a quoted paragraph
+FUNCTION {format.quotedParagraph}
+{ duplicate$ empty$
+    { skip$ }
+    { "<P><QUOTE> " swap$ * "  </QUOTE></P>" *}
+  if$
+}
+
+
+% DFK added, to support comment, private, keyword, etc
+% next-to-top is field name (eg, "Comment")
+% top is field value (eg, value of comment)
+% both are popped; resulting top is either empty, 
+%    or string describing field
+FUNCTION {format.dfkfield}
+{ duplicate$ empty$
+       { pop$ pop$ "" }
+       { swap$ 
+          "<strong> " swap$ * ":</strong> " * swap$ * }
+  if$
+}
+
+% DFK added
+FUNCTION {dfk.stuff}
+{ new.block
+  "Abstract" abstract format.dfkfield format.quotedParagraph write$ newline$
+  "Keyword" keyword format.dfkfield format.quotedParagraph write$ newline$
+  "Comment" comment format.dfkfield format.quotedParagraph write$ newline$
+}
+
+% DFK: added a call to dfk.stuff in all entry-type functions below
+
+FUNCTION {article}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { journal emphasize "journal" output.check
+      format.vol.num.pages output
+      format.date "year" output.check
+    }
+    { format.article.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {book}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+       { "author and editor" editor either.or.check }
+       'skip$
+      if$
+    }
+  if$
+  new.block
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+  format.authors output
+  new.block
+  format.title "title" output.check
+  howpublished address new.block.checkb
+  howpublished output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+       { "author and editor" editor either.or.check }
+       'skip$
+      if$
+    }
+  if$
+  new.block
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+    }
+    { format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      format.chapter.pages output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+      format.edition output
+      format.date "year" output.check
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      format.pages output
+      address empty$
+       { organization publisher new.sentence.checkb
+         organization output
+         publisher output
+         format.date "year" output.check
+       }
+       { address output.nonnull
+         format.date "year" output.check
+         new.sentence
+         organization output
+         publisher output
+       }
+      if$
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+  author empty$
+    { organization empty$
+       'skip$
+       { organization output.nonnull
+         address output
+       }
+      if$
+    }
+    { format.authors output.nonnull }
+  if$
+  new.block
+  format.btitle "title" output.check
+  author empty$
+    { organization empty$
+       { address new.block.checka
+         address output
+       }
+       'skip$
+      if$
+    }
+    { organization address new.block.checkb
+      organization output
+      address output
+    }
+  if$
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  "Master's thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {misc}
+{ output.bibitem
+  format.authors output
+  title howpublished new.block.checkb
+  format.title output
+  howpublished new.block.checka
+  howpublished output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+  empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.btitle "title" output.check
+  new.block
+  "PhD thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+  editor empty$
+    { organization output }
+    { format.editors output.nonnull }
+  if$
+  new.block
+  format.btitle "title" output.check
+  format.bvolume output
+  format.number.series output
+  address empty$
+    { editor empty$
+       { publisher new.sentence.checka }
+       { organization publisher new.sentence.checkb
+         organization output
+       }
+      if$
+      publisher output
+      format.date "year" output.check
+    }
+    { address output.nonnull
+      format.date "year" output.check
+      new.sentence
+      editor empty$
+       'skip$
+       { organization output }
+      if$
+      publisher output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  format.tr.number output.nonnull
+  institution "institution" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  note "note" output.check
+  format.date output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+  "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+INTEGERS { et.al.char.used }
+
+FUNCTION {initialize.et.al.char.used}
+{ #0 'et.al.char.used :=
+}
+
+EXECUTE {initialize.et.al.char.used}
+
+FUNCTION {format.lab.names}
+{ 's :=
+  s num.names$ 'numnames :=
+  numnames #1 >
+    { numnames #4 >
+       { #3 'namesleft := }
+       { numnames 'namesleft := }
+      if$
+      #1 'nameptr :=
+      ""
+       { namesleft #0 > }
+       { nameptr numnames =
+           { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+               { "{\etalchar{+}}" *
+                 #1 'et.al.char.used :=
+               }
+               { s nameptr "{v{}}{l{}}" format.name$ * }
+             if$
+           }
+           { s nameptr "{v{}}{l{}}" format.name$ * }
+         if$
+         nameptr #1 + 'nameptr :=
+         namesleft #1 - 'namesleft :=
+       }
+      while$
+      numnames #4 >
+       { "{\etalchar{+}}" *
+         #1 'et.al.char.used :=
+       }
+       'skip$
+      if$
+    }
+    { s #1 "{v{}}{l{}}" format.name$
+      duplicate$ text.length$ #2 <
+       { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
+       'skip$
+      if$
+    }
+  if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+    { key empty$
+       { cite$ #1 #3 substring$ }
+       { key #3 text.prefix$ }
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+    { editor empty$
+       { key empty$
+           { cite$ #1 #3 substring$ }
+           { key #3 text.prefix$ }
+         if$
+       }
+       { editor format.lab.names }
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+    { key empty$
+       { organization empty$
+           { cite$ #1 #3 substring$ }
+           { "The " #4 organization chop.word #3 text.prefix$ }
+         if$
+       }
+       { key #3 text.prefix$ }
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+    { key empty$
+       { organization empty$
+           { cite$ #1 #3 substring$ }
+           { "The " #4 organization chop.word #3 text.prefix$ }
+         if$
+       }
+       { key #3 text.prefix$ }
+      if$
+    }
+    { editor format.lab.names }
+  if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.key.label
+    { type$ "proceedings" =
+       'editor.key.organization.label
+       { type$ "manual" =
+           'author.key.organization.label
+           'author.key.label
+         if$
+       }
+      if$
+    }
+  if$
+  duplicate$
+  year field.or.null purify$ #-1 #2 substring$
+  *
+  'label :=
+  year field.or.null purify$ #-1 #4 substring$
+  *
+  sortify 'sort.label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+  #1 'nameptr :=
+  ""
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { nameptr #1 >
+       { "   " * }
+       'skip$
+      if$
+      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
+      nameptr numnames = t "others" = and
+       { "et al" * }
+       { t sortify * }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+  "A " #2
+    "An " #3
+      "The " #4 t chop.word
+    chop.word
+  chop.word
+  sortify
+  #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+    { key empty$
+       { "to sort, need author or key in " cite$ * warning$
+         ""
+       }
+       { key sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+    { editor empty$
+       { key empty$
+           { "to sort, need author, editor, or key in " cite$ * warning$
+             ""
+           }
+           { key sortify }
+         if$
+       }
+       { editor sort.format.names }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+    { organization empty$
+       { key empty$
+           { "to sort, need author, organization, or key in " cite$ * warning$
+             ""
+           }
+           { key sortify }
+         if$
+       }
+       { "The " #4 organization chop.word sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+    { organization empty$
+       { key empty$
+           { "to sort, need editor, organization, or key in " cite$ * warning$
+             ""
+           }
+           { key sortify }
+         if$
+       }
+       { "The " #4 organization chop.word sortify }
+      if$
+    }
+    { editor sort.format.names }
+  if$
+}
+
+FUNCTION {presort}
+{ calc.label
+  sort.label
+  "    "
+  *
+  type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.sort
+    { type$ "proceedings" =
+       'editor.organization.sort
+       { type$ "manual" =
+           'author.organization.sort
+           'author.sort
+         if$
+       }
+      if$
+    }
+  if$
+  *
+  "    "
+  *
+  year field.or.null sortify
+  *
+  "    "
+  *
+  title field.or.null
+  sort.format.title
+  *
+% DFK throw away stuff above and use cite$ for sort key
+  pop$
+  cite$
+  #1 entry.max$ substring$
+  'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.sort.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #0 int.to.chr$ 'last.sort.label :=
+  "" 'next.extra :=
+  #0 'longest.label.width :=
+  #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+{ last.sort.label sort.label =
+    { last.extra.num #1 + 'last.extra.num :=
+      last.extra.num int.to.chr$ 'extra.label :=
+    }
+    { "a" chr.to.int$ 'last.extra.num :=
+      "" 'extra.label :=
+      sort.label 'last.sort.label :=
+    }
+  if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+    { "a" 'extra.label := }
+    'skip$
+  if$
+  label extra.label * 'label :=
+  label width$ longest.label.width >
+    { label 'longest.label :=
+      label width$ 'longest.label.width :=
+    }
+    'skip$
+  if$
+  extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+% DFK removed code about et.al.char
+% DFK changed to HTML
+FUNCTION {begin.bib}
+{ "<HTML>" write$ newline$
+  "<HEAD><TITLE> Bibliography </TITLE></HEAD>" write$ newline$
+  "<BODY BGCOLOR=#EEEEEE>" write$ newline$
+  "<DL>" write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+% DFK changed to HTML
+FUNCTION {end.bib}
+{ newline$
+  "</DL>" write$ newline$
+  "</BODY>" write$ newline$
+  "</HTML>" write$ newline$
+}
+
+EXECUTE {end.bib}
index 0f7791c577248d13f890472a80787b1554d99c2f..3876f3b648e66b36b661ee2e1ab95f9ca2c5978d 100644 (file)
@@ -35,23 +35,14 @@ documenting bugfixes.
 
 @lilypondfile[printfilename]{dots.ly}
 
+@lilypondfile[printfilename]{accidental.ly}
+
 @lilypondfile[printfilename]{multi-measure-rest.ly}
 
 @lilypondfile[printfilename]{mm-rests2.ly}
 
-
-@section Accidentals
-
-Accidentals are currently in a development stage.
-
-@lilypondfile[printfilename]{accidental.ly}
-
 @lilypondfile[printfilename]{accidental-single-double.ly}
 
-@lilypondfile[printfilename]{accidentals.ly}
-
-@lilypondfile[printfilename]{accidental-octave.ly}
-
 
 @section Stems
 
index 61cf08e3b9fcc8520169295b827655373f5d1a33..f50a1b821e5419a8ca3bf95f51bd7f8f832aff9f 100644 (file)
@@ -235,16 +235,6 @@ at
 @uref{ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz,in
 the pnmtopng FTP site}.
 
-@item @uref{http://www.lri.fr/~filliatr/ftp/bibtex2html/, Bibtex2html}, or
-@uref{http://www.uni-koblenz.de/ag-ki/ftp/bib2html/, Bib2html}.
-Bibtex2html is available in debian, while bib2html is in some rpm based
-distributions.
-Bib2html, in turn depends on man2html for proper installation.
-man2html can be had from @uref{http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05,http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05}.
-
-The website will build without bib converter utility, but you will not
-see our hypertextified bibliography.
-
 @item texinfo (a development release)
 The documentation will build with texinfo-4.0, but if you want split
 html pages, you're best off using the lates pretest version from
@@ -491,7 +481,6 @@ in addition to the those needed for running:
 @item make, m4, flex, bison
 @item gettext
 @item groff, texinfo
-@item bibtex2html (not in Debian 2.2)
 @item tetex-base, tetex-bin, tetex-extra, libkpathsea-dev or tetex-dev
 @item dpkg-dev, debhelper, fakeroot
 @item gs, netpbm
@@ -519,7 +508,7 @@ For Debian in development ("unstable", the future 2.3 or 3.0):
        apt-get install binutils cpp gcc libc6-dev \
                g++ libstdc++2.10-dev \
                python-base libguile-dev tetex-bin libkpathsea-dev \
-               tetex-extra flex bison texinfo bibtex2html groff gs \
+               tetex-extra flex bison texinfo  groff gs \
                netpbm m4 gettext
 @end example
 
index a2b3a793e12079ec6997de594ce44aab331ae0d2..176a50e06294a188b13bc3f047654e60773d3ee2 100644 (file)
@@ -231,17 +231,6 @@ issuing
    * pnmtopng. The original is at in the pnmtopng FTP site
      (ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz).
 
-   * Bibtex2html (http://www.lri.fr/~filliatr/ftp/bibtex2html/), or
-     Bib2html (http://www.uni-koblenz.de/ag-ki/ftp/bib2html/).
-     Bibtex2html is available in debian, while bib2html is in some rpm
-     based distributions.  Bib2html, in turn depends on man2html for
-     proper installation.  man2html can be had from
-     http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05
-     (http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05).
-
-     The website will build without bib converter utility, but you will
-     not see our hypertextified bibliography.
-
    * texinfo (a development release) The documentation will build with
      texinfo-4.0, but if you want split html pages, you're best off
      using the lates pretest version from texinfo-4.0b
@@ -462,8 +451,6 @@ in addition to the those needed for running:
 
    * groff, texinfo
 
-   * bibtex2html (not in Debian 2.2)
-
    * tetex-base, tetex-bin, tetex-extra, libkpathsea-dev or tetex-dev
 
    * dpkg-dev, debhelper, fakeroot
@@ -490,7 +477,7 @@ by running \`apt-get' as root before building the package:
        apt-get install binutils cpp gcc libc6-dev \
                g++ libstdc++2.10-dev \
                python-base libguile-dev tetex-bin libkpathsea-dev \
-               tetex-extra flex bison texinfo bibtex2html groff gs \
+               tetex-extra flex bison texinfo  groff gs \
                netpbm m4 gettext
 
    And, just so that old fonts from previous versions of LilyPond won't
diff --git a/VERSION b/VERSION
index 319a3ad1243b6a1f74a68164083c1cd5f5176e02..65adfb75d9390e26193e459f1a300988d67a64d5 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=5
-PATCH_LEVEL=24
-MY_PATCH_LEVEL=jcn2
+PATCH_LEVEL=25
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
diff --git a/buildscripts/bib2html.py b/buildscripts/bib2html.py
new file mode 100644 (file)
index 0000000..37bc469
--- /dev/null
@@ -0,0 +1,86 @@
+#!@PYTHON@
+import os
+import sys
+import getopt
+import tempfile
+import string
+
+# usage:
+def usage ():
+    print 'usage: %s [-s style] [-o <outfile>] BIBFILES...';
+
+
+
+(options, files) = getopt.getopt(sys.argv[1:], 's:o:', [])
+
+output = 'bib.html'
+style = 'long'
+for (o,a) in options:
+       if o == '-h' or o == '--help':
+               usage ()
+               sys.exit (0)
+       elif o == '-s' or o == '--style':
+               style = a
+       elif o == '-o' or o == '--output':
+               output = a
+       else:
+               raise 'unknown opt ', o
+
+
+if style not in ['alpha','index','long','longp','long-pario','short','short-pario','split']:
+    sys.stderr.write ("Unknown style \`%s'\n" % style)
+
+tempfile = tempfile.mktemp ('bib2html')
+
+if not files:
+    usage ()
+    sys.exit (2)
+
+
+def strip_extension (f, ext):
+       (p, e) = os.path.splitext (f)
+       if e == ext:
+               e = ''
+       return p + e
+
+nf = []
+for f in files:
+    nf.append (strip_extension(f, '.bib'))
+
+files = string.join (nf,',')
+
+open(tempfile + '.aux', 'w').write (r'''
+\relax 
+\citation{*}
+\bibstyle{html-%(style)s}
+\bibdata{%(files)s}''' % vars ()) 
+
+cmd = "bibtex %s" % tempfile;
+
+sys.stdout.write ("Invoking `%s'\n" % cmd)
+os.system (cmd) 
+
+
+#TODO: do tex -> html on output 
+
+bbl =open (tempfile + '.bbl').read ()
+
+open (output, 'w').write  (bbl)
+
+
+def cleanup (tempfile):
+    for a in ['aux','bbl', 'blg']:
+       os.unlink (tempfile + '.' + a)
+
+cleanup(tempfile)
+
+
+
+
+
+
+
+
+
+
+
index f08e5039654c04c1bc37d0bc195456f9449ab6f5..421625432fe3402a3113edf061edfbb8923aef48 100755 (executable)
--- a/configure
+++ b/configure
@@ -3175,50 +3175,6 @@ EOF
 
 
 
-    for ac_prog in bibtex2html bib2html
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3184: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_BIBTEX2HTML'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$BIBTEX2HTML"; then
-  ac_cv_prog_BIBTEX2HTML="$BIBTEX2HTML" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_BIBTEX2HTML="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-BIBTEX2HTML="$ac_cv_prog_BIBTEX2HTML"
-if test -n "$BIBTEX2HTML"; then
-  echo "$ac_t""$BIBTEX2HTML" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$BIBTEX2HTML" && break
-done
-test -n "$BIBTEX2HTML" || BIBTEX2HTML="error"
-
-    if test "$BIBTEX2HTML" = "bib2html"; then
-       BIBTEX2HTML_FLAGS='$< $(@)'
-    else
-       BIBTEX2HTML_FLAGS='-o $(@D)/$(*F) $<'
-    fi
-    
-    
-
-
 
 if test "$optimise_b" = yes; then
     DEFINES="$DEFINES -DSTRING_UTILS_INLINED"
@@ -3231,7 +3187,7 @@ fi
 
 
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:3235: checking for 8-bit clean memcmp" >&5
+echo "configure:3191: checking for 8-bit clean memcmp" >&5
 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3239,7 +3195,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 3243 "configure"
+#line 3199 "configure"
 #include "confdefs.h"
 
 main()
@@ -3249,7 +3205,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:3253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_memcmp_clean=yes
 else
@@ -3267,12 +3223,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
 
 echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:3271: checking for vprintf" >&5
+echo "configure:3227: checking for vprintf" >&5
 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3276 "configure"
+#line 3232 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -3298,7 +3254,7 @@ vprintf();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_vprintf=yes"
 else
@@ -3322,12 +3278,12 @@ fi
 
 if test "$ac_cv_func_vprintf" != yes; then
 echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:3326: checking for _doprnt" >&5
+echo "configure:3282: checking for _doprnt" >&5
 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3331 "configure"
+#line 3287 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -3353,7 +3309,7 @@ _doprnt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__doprnt=yes"
 else
@@ -3380,12 +3336,12 @@ fi
 for ac_func in memmem snprintf vsnprintf gettext isinf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3384: checking for $ac_func" >&5
+echo "configure:3340: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3389 "configure"
+#line 3345 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3411,7 +3367,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3451,7 +3407,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3455: checking for $ac_word" >&5
+echo "configure:3411: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3483,7 +3439,7 @@ test -n "$MAKEINFO" || MAKEINFO="error"
 
     if test "$MAKEINFO" != "error"; then
        echo $ac_n "checking whether makeinfo can split html by @node""... $ac_c" 1>&6
-echo "configure:3487: checking whether makeinfo can split html by @node" >&5
+echo "configure:3443: checking whether makeinfo can split html by @node" >&5
        mkdir -p out
        makeinfo --html --output=out/split <<EOF
 \input texinfo
@@ -3511,7 +3467,7 @@ EOF
 # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3515: checking for $ac_word" >&5
+echo "configure:3471: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3549,17 +3505,17 @@ for ac_hdr in python2.1/Python.h python2.0/Python.h python2/Python.h python/Pyth
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3553: checking for $ac_hdr" >&5
+echo "configure:3509: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3558 "configure"
+#line 3514 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3563: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3783,8 +3739,6 @@ s%@GUILE_CFLAGS@%$GUILE_CFLAGS%g
 s%@GUILE_LDFLAGS@%$GUILE_LDFLAGS%g
 s%@GUILE@%$GUILE%g
 s%@KPATHSEA@%$KPATHSEA%g
-s%@BIBTEX2HTML@%$BIBTEX2HTML%g
-s%@BIBTEX2HTML_FLAGS@%$BIBTEX2HTML_FLAGS%g
 s%@LIBOBJS@%$LIBOBJS%g
 s%@MAKEINFO@%$MAKEINFO%g
 s%@SPLITTING_MAKEINFO@%$SPLITTING_MAKEINFO%g
index 1597831177a63eb43c8709ecab06c8629230fd32..687edd4e4a5877fa25c54fcd9ffb6d8c2265de4e 100644 (file)
@@ -29,7 +29,6 @@ AC_STEPMAKE_TEXMF
 AC_STEPMAKE_TEXMF_DIRS
 AC_STEPMAKE_GUILE
 AC_STEPMAKE_KPATHSEA
-AC_STEPMAKE_BIBTEX2HTML
 
 
 if test "$optimise_b" = yes; then
diff --git a/input/regression/accidental-octave.ly b/input/regression/accidental-octave.ly
deleted file mode 100644 (file)
index 54ba4fb..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-\version "1.5.24.rz2"
-
-\header {
-texidoc="
-This shows how accidentals in different octaves are handled.
-"
-}
-
-#(define  (central-octave p)
-  (let* ((a (pitch-alteration p))
-         (n (pitch-notename p)))
-    (make-pitch 0 n a)))
-
-#(define (no-octaves music)
-  (let* ((es (ly-get-mus-property music 'elements))
-         (e (ly-get-mus-property music 'element))
-         (p (ly-get-mus-property music 'pitch)))
-
-    (if (pair? es)
-        (ly-set-mus-property
-         music 'elements
-         (map no-octaves es)))
-
-    (if (music? e)
-        (ly-set-mus-property
-         music 'element
-         (no-octaves e)))
-
-    (if (pitch? p)
-        (begin
-          (set! p (central-octave p))
-          (ly-set-mus-property music 'pitch p)))
-
-
-    music))
-
-
-\include "paper16.ly"
-
-mel = \notes \transpose c'' {
-  \time 4/4 \key d \major
-  gis4 g' g gis' | gis2 g' | g1 | gis | g | gis | g' |
-  fis4 f' f fis' | fis2 f' | f1 | fis | f | fis | f' |
-  \bar "|." \break
-}
-
-mus = \notes {
-  \mel
-   \property Score.oneMeasureLazy = ##t
-   \property Score.autoAccidentals = #'(same-octave)
-   < s1^"$\\backslash$property Score.autoAccidentals = \\#'(same-octave)" \mel >
-   \property Score.autoAccidentals = #'(lazy-same-octave)
-   < s1^"$\\backslash$property Score.autoAccidentals = \\#'(lazy-same-octave)" \mel >
-   \property Score.autoAccidentals = #'(any-octave)
-   < s1^"$\\backslash$property Score.autoAccidentals = \\#'(any-octave)" \mel >
-   \property Score.autoAccidentals = #'(lazy-any-octave)
-   < s1^"$\\backslash$property Score.autoAccidentals = \\#'(lazy-any-octave)" \mel >
-  \modernAccidentals
-  < s1^"$\\backslash$modernAccidentals" \mel >
-  \modernCautionaries
-  < s1^"$\\backslash$modernCautionaries" \mel >
-  \noResetKey
-  < s1^"$\\backslash$noResetKey" \mel >
-}
-
-
-\score {
-  < \context Staff \mus
-    \context NoteNames \apply #no-octaves \mus
-  >
-  \paper {
-    indent=0.0
-  }
-}
index cffcbac459c4b937ba82a6cfed8208e3c0f700fe..f7676f85caba78e35df1b767a8cb96aaf580252a 100644 (file)
@@ -13,12 +13,12 @@ thenotes =  \notes \relative cis' { \time 4/4
 gisis'4 gis gisis ges |
 geses ges geses gis |
 gisis g geses g |
-gis ges gis g |
+gis g ges g |
 \key a \major
 gisis4 gis gisis ges |
 geses ges geses gis |
 gisis g geses g |
-gis ges gis g |
+gis g ges g |
 }
 
 \score { < \context Staff \thenotes
diff --git a/input/regression/accidentals.ly b/input/regression/accidentals.ly
deleted file mode 100644 (file)
index dbd2f02..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-\version "1.5.24.rz2"
-
-\header{
-texidoc="
-This shows how accidentals are handled.
-"
-}
-
-mel = \notes { \key d \major \time 4/4
- d4  dis dis8 dis, d4 | d dis disis8 d, dis4 | d des disis8 dis, d4 | dis deses d dis ~ | dis dis ~ dis8 d, dis4 ~ | \break
- dis dis cis c | c cis cisis cis | c ces cisis c | cis ceses c cis ~ | cis cis ~ cis cis \bar "|."  | \break
-}
-
-\score { \notes \context Staff \transpose c''' {
-   \mel
-   \property Score.oneMeasureLazy = ##t
-   \property Score.autoAccidentals = #'(same-octave)
-   < s1^"$\\backslash$property Score.autoAccidentals = \\#'(same-octave)" \mel >
-   \property Score.autoAccidentals = #'(lazy-same-octave)
-   < s1^"$\\backslash$property Score.autoAccidentals = \\#'(lazy-same-octave)" \mel >
-   \property Score.autoAccidentals = #'(any-octave)
-   < s1^"$\\backslash$property Score.autoAccidentals = \\#'(any-octave)" \mel >
-   \property Score.autoAccidentals = #'(lazy-any-octave)
-   < s1^"$\\backslash$property Score.autoAccidentals = \\#'(lazy-any-octave)" \mel >
-   \stoneAccidentals
-   < s1^"$\\backslash stoneAccidentals" \mel >
-   \stoneCautionaries
-   < s1^"$\\backslash stoneCautionaries" \mel >
-   \noResetKey
-   < s1^"$\\backslash noResetKey" \mel >
-  }
-  \paper {
-    indent = 0.0
-  }
-}
-
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..294ca11db3d970db2457ba26ed5555fdec334e03 100644 (file)
@@ -0,0 +1,23 @@
+% \version "1.5.15.rz1"
+
+mel = \notes {
+ d4  dis dis d | d dis disis dis | d des disis d | dis deses d dis ~ | dis dis ~ dis dis ~ | \break
+ dis dis cis c | c cis cisis cis | c ces cisis c | cis ceses c cis ~ | cis cis ~ cis cis \bar "|."  | \break
+}
+
+\score { \notes \context Staff \transpose c''' {
+   \key d \major
+   \mel
+   \property Score.autoReminders = #'cautionary
+   < s1^"$\\backslash$property Score.autoReminders = \\#'cautionary" \mel >
+   \property Score.autoReminders = #'accidental
+   < s1^"$\\backslash$property Score.autoReminders = \\#'accidental" \mel >
+   \property Score.autoReminders = ##f
+   \property Score.forgetAccidentals = ##t
+   < s1^"$\\backslash$property Score.forgetAccidentals = \\#\\#t" \mel >
+   \property Score.forgetAccidentals = ##f
+   \property Score.noResetKey = ##t
+   < s1^"$\\backslash$property Score.noResetKey = \\#\\#t" \mel >
+  }
+}
+
index baf3941591380799093e228cde74b905738c3b4d..65b83a1b611ca39563e546f1102286229a61d83e 100644 (file)
@@ -59,7 +59,6 @@ public:
 
 };
 
-
 Accidental_engraver::Accidental_engraver ()
 {
   key_item_p_ =0;
@@ -80,22 +79,19 @@ Accidental_engraver::initialize ()
   *   Negative (-1 or -2) if accidental has changed.
   **/
 static int
-number_accidentals (SCM sig, Note_req * note_l, bool ignore_octave_b)
+number_accidentals (SCM sig, Note_req * note_l)
 {
   Pitch *pitch = unsmob_pitch (note_l->get_mus_property ("pitch"));
   int n = pitch->notename_i_;
-  int o = pitch->octave_i_;
+  int o = pitch->octave_i () ;
   int a = pitch->alteration_i_;
   
-  SCM prev;
-  if (ignore_octave_b)
-    prev = ly_assoc_cdr (gh_int2scm (n), sig);
-  else
-    prev = gh_assoc (gh_cons (gh_int2scm (o), gh_int2scm (n)), sig);
+  SCM prev = scm_assoc (gh_cons (gh_int2scm (o), gh_int2scm (n)), sig);
   if (prev == SCM_BOOL_F)
-    prev = gh_assoc (gh_int2scm (n), sig);
+    prev = scm_assoc (gh_int2scm (n), sig);
   SCM prev_acc = (prev == SCM_BOOL_F) ? gh_int2scm (0) : ly_cdr (prev);
 
+  bool different = !gh_equal_p (prev_acc , gh_int2scm (a));
   int p = gh_number_p (prev_acc) ? gh_scm2int (prev_acc) : 0;
 
   int num;
@@ -106,33 +102,6 @@ number_accidentals (SCM sig, Note_req * note_l, bool ignore_octave_b)
   return a==p ? num : -num;
 }
 
-static int
-number_accidentals (SCM localsig, SCM lazysig, Note_req * note_l, SCM accidentals_l) {
-  int number=0;
-  int diff=0;
-  if(gh_memq(ly_symbol2scm("same-octave"),accidentals_l)!=SCM_BOOL_F) {
-    int n = number_accidentals(localsig,note_l,false);
-    diff |= n<0;
-    number = max(number,abs(n));
-  }
-  if(gh_memq(ly_symbol2scm("lazy-same-octave"),accidentals_l)!=SCM_BOOL_F) {
-    int n = number_accidentals(lazysig,note_l,false);
-    diff |= n<0;
-    number = max(number,abs(n));
-  }
-  if(gh_memq(ly_symbol2scm("any-octave"),accidentals_l)!=SCM_BOOL_F) {
-    int n = number_accidentals(localsig,note_l,true);
-    diff |= n<0;
-    number = max(number,abs(n));
-  }
-  if(gh_memq(ly_symbol2scm("lazy-any-octave"),accidentals_l)!=SCM_BOOL_F) {
-    int n = number_accidentals(lazysig,note_l,true);
-    diff |= n<0;
-    number = max(number,abs(n));
-  }
-  return diff ? -number : number;
-}
-
 void
 Accidental_engraver::create_grobs ()
 {
@@ -140,25 +109,31 @@ Accidental_engraver::create_grobs ()
     {
       SCM localsig = get_property ("localKeySignature");
       SCM lazysig = get_property ("lazyKeySignature");
-      SCM accidentals_l =  get_property ("autoAccidentals");
-      SCM cautionaries_l =  get_property ("autoCautionaries");
-
-      bool extra_natural_b = get_property ("extraNatural")==SCM_BOOL_T;
 
       for (int i=0; i  < mel_l_arr_.size (); i++) 
        {
          Grob * support_l = support_l_arr_[i];
          Note_req * note_l = mel_l_arr_[i];
 
-         int num = number_accidentals(localsig,lazysig,note_l,accidentals_l);
-         int num_caut = number_accidentals(localsig,lazysig,note_l,cautionaries_l);
+         int local_num = number_accidentals(localsig,note_l);
+         bool local_diff = local_num<0; local_num = abs(local_num);
+         int lazy_num = number_accidentals(lazysig,note_l);
+         bool lazy_diff = lazy_num<0; lazy_num = abs(lazy_num);
+
+         int num = local_num;;
+         bool different= local_diff;
          bool cautionary = to_boolean (note_l->get_mus_property ("cautionary"));
-         if (abs(num_caut)>abs(num)) {
-           num=num_caut;
-           cautionary=true;
+         if (to_boolean (get_property ("noResetKey"))) {
+           num = lazy_num;
+           different = lazy_diff;
+         }
+         else if (gh_equal_p (get_property ("autoReminders"),ly_symbol2scm("cautionary"))
+                  || gh_equal_p (get_property ("autoReminders"),ly_symbol2scm("accidental"))) {
+           num = max(local_num,lazy_num);
+           if (gh_equal_p (get_property ("autoReminders"),ly_symbol2scm("cautionary"))
+               && lazy_num>local_num)
+             cautionary = true;
          }
-         bool different=num<0;
-         num=abs(num);
 
          /* see if there's a tie that "changes" the accidental */
          /* works because if there's a tie, the note to the left
@@ -201,7 +176,7 @@ Accidental_engraver::create_grobs ()
              
              Local_key_item::add_pitch (key_item_p_, *unsmob_pitch (note_l->get_mus_property ("pitch")),
                                         cautionary,
-                                        num==2 && extra_natural_b,
+                                        num==2,
                                         tie_break_reminder);
              Side_position_interface::add_support (key_item_p_,support_l);
            }
@@ -213,8 +188,7 @@ Accidental_engraver::create_grobs ()
 
            Checking whether it is tied also works mostly, but will it
            always do the correct thing?
-           FIXME: 2nd accidental after broken-tie accidental should be junked.
-                  Remove broken-tie-support?
+           (???? -Rune )
           */
          
          Pitch *pitch = unsmob_pitch (note_l->get_mus_property ("pitch"));
@@ -229,8 +203,8 @@ Accidental_engraver::create_grobs ()
                Remember an alteration that is different both from
                that of the tied note and of the key signature.
               */
-             localsig = ly_assoc_front_x (localsig, on, SCM_BOOL_T);
-             lazysig = ly_assoc_front_x  (lazysig,  on, SCM_BOOL_T);
+             localsig = scm_assoc_set_x (localsig, on, SCM_BOOL_T); 
+             lazysig = scm_assoc_set_x  (lazysig,  on, SCM_BOOL_T); 
            }
          else if (!forget)
            {
@@ -238,8 +212,8 @@ Accidental_engraver::create_grobs ()
                not really really correct if there are more than one
                noteheads with the same notename.
               */
-             localsig = ly_assoc_front_x (localsig, on, gh_int2scm (a)); 
-             lazysig = ly_assoc_front_x  (lazysig,  on, gh_int2scm (a)); 
+             localsig = scm_assoc_set_x (localsig, on, gh_int2scm (a)); 
+             lazysig = scm_assoc_set_x  (lazysig,  on, gh_int2scm (a)); 
            }
         }
   
@@ -247,7 +221,7 @@ Accidental_engraver::create_grobs ()
       daddy_trans_l_->set_property ("lazyKeySignature",   lazysig);
     }
   
-  
+
   if (key_item_p_)
     {
       /*
@@ -333,11 +307,7 @@ Accidental_engraver::process_music ()
     }
   else if (!mp.to_bool () )
     {
-      /* Use the old local sig as new lazy sig. This way the lazy sig will be one measure late */
-      if (get_property("oneMeasureLazy")==SCM_BOOL_T)
-       daddy_trans_l_->set_property ("lazyKeySignature",
-         daddy_trans_l_->get_property ("localKeySignature"));
-      daddy_trans_l_->set_property ("localKeySignature",  ly_deep_copy (sig));
+       daddy_trans_l_->set_property ("localKeySignature",  ly_deep_copy (sig));
     }
 }
 
@@ -351,5 +321,5 @@ events.  Due to interaction with ties (which don't come together
 with note heads), this needs to be in a context higher than Tie_engraver. FIXME",
 /* creats*/       "Accidentals",
 /* acks  */       "rhythmic-head-interface tie-interface arpeggio-interface",
-/* reads */       "localKeySignature lazyKeySignature forgetAccidentals oneMeasureLazy extraNatural autoAccidentals autoCautionaries",
+/* reads */       "localKeySignature forgetAccidentals noResetKey autoReminders",
 /* write */       "");
index afdd5482bd1d9961daa8a030688565aa4fd53bcf..ec516bb2afde65830b24b5ce241bdc64dad155ef 100644 (file)
@@ -129,7 +129,7 @@ Fingering_engraver::process_music ()
        {
          /*
            chuck out reqs that have no pitch.  We put them over the note by default.
-       */
+         */
          up_reqs_.push (pitch_sorted_reqs [i]);
          pitch_sorted_reqs.del (i);
        }
index 86914fcd0eab394751b69378dad3e74a73fa4e7d..4c9ef7c9fa6bc3fedbf6ec1cc5ea757c889dbeb9 100644 (file)
@@ -64,7 +64,7 @@ Gourlay_breaking::do_solve () const
 
   Real worst_force = 0.0;
   
-  for (  int break_idx=1; break_idx< breaks.size (); break_idx++) 
+  for (int break_idx=1; break_idx< breaks.size (); break_idx++) 
     {
       /*
        start with a short line, add measures. At some point 
@@ -187,6 +187,10 @@ Gourlay_breaking::Gourlay_breaking ()
 
 /*
   TODO: uniformity parameter to control rel. importance of spacing differences.
+
+  TODO:
+
+  mixing break penalties and constraint-failing solutions is confusing.
  */
 Real
 Gourlay_breaking::combine_demerits (Column_x_positions const &prev,
@@ -197,7 +201,7 @@ Gourlay_breaking::combine_demerits (Column_x_positions const &prev,
   if (pc->original_l_)
     {
       SCM pen = pc->get_grob_property ("penalty");
-      if (gh_number_p (pen))
+      if (gh_number_p (pen) && fabs (gh_scm2double (pen)) < 10000)
        {
          break_penalties += gh_scm2double (pen);
        }
@@ -212,9 +216,12 @@ Gourlay_breaking::combine_demerits (Column_x_positions const &prev,
        /*
         If it doesn't satisfy constraints, we make this one
         really unattractive.
-       */
-       demerit += 10;
-       demerit *= 100;
+
+        add 20000 to the demerits, so that a break penalty
+        of -10000 won't change the result */
+       demerit = (demerit + 20000) >? 2000;
+       
+       demerit *= 10;
      }
 
    return demerit;
index 26c2a8a3001732a7ff94c2521813288dbbc52e11..55aafc98c7d8cdea7102233ab888d2544626ce58 100644 (file)
@@ -133,11 +133,9 @@ String ly_symbol2string (SCM);
 SCM ly_offset2scm (Offset);
 Offset ly_scm2offset (SCM);
 SCM ly_assoc_chain (SCM key, SCM achain);
-SCM ly_assoc_cdr (SCM key, SCM alist);
 Interval ly_scm2interval (SCM);
 SCM ly_interval2scm (Interval);
 
-
 SCM ly_parse_scm (char const* s, int* n);
 SCM ly_quote_scm (SCM s);
 SCM ly_type (SCM);
@@ -155,11 +153,6 @@ inline SCM ly_cddr (SCM x) { return SCM_CDDR (x); }
 inline SCM ly_caddr (SCM x) { return SCM_CADDR (x); }
 inline SCM ly_cdadr (SCM x) { return SCM_CDADR (x); }
 inline SCM ly_caadr (SCM x) { return SCM_CAADR (x); }
-/* inserts at front, removing dublicates */
-inline SCM ly_assoc_front_x(SCM alist, SCM key, SCM val)
-{
-  return scm_acons(key, val, scm_assoc_remove_x (alist, key));
-}
 inline bool ly_pair_p (SCM x) { return SCM_NFALSEP (scm_pair_p (x)); }
 inline bool ly_symbol_p (SCM x) { return SCM_SYMBOLP (x); }
 inline bool ly_number_p (SCM x) { return SCM_NUMBERP (x); }
index 8115e25587d81df6221b0d83babe6b5187602397..80fd7f153d447a508468d28e046a7552c250cba8 100644 (file)
@@ -69,7 +69,7 @@ struct Simple_spacer
   Real indent_f_;
   Real line_len_f_;
   Real default_space_f_;
-
+  int active_count_;
 
   Simple_spacer ();
   
index 2cf476fbbf587ff8c7ffccd1ac4de85917e95b71..a42715549180c18e07902fbcd6b479572fe0a00a 100644 (file)
@@ -22,7 +22,6 @@
 #include "direction.hh"
 #include "offset.hh"
 #include "interval.hh"
-#include "pitch.hh"
 
 SCM
 ly_last (SCM list)
@@ -520,23 +519,6 @@ ly_assoc_chain (SCM key, SCM achain)
     return SCM_BOOL_F;
 }
 
-/* looks the key up in the cdrs of the alist-keys
-   - ignoring the car and ignoring non-pair keys.
-   Returns first match found. */
-SCM
-ly_assoc_cdr (SCM key, SCM alist)
-{
-  if (gh_pair_p (alist)) {
-    SCM trykey = ly_caar(alist);
-    if(gh_pair_p(trykey) && to_boolean(scm_equal_p(key,ly_cdr(trykey))))
-      return ly_car(alist);
-    else
-      return ly_assoc_cdr (key, ly_cdr (alist));
-  }
-  else
-    return SCM_BOOL_F;
-}
-
 /*
   LIST has the form "sym1 sym2 sym3" 
  */
index 46013523fd454bc124e9295ca69129c0aff1964a..df4db48a8c0ba16197442ed24ba1eda3f8988ec6 100644 (file)
@@ -154,13 +154,13 @@ Pitch::str () const
   if (alteration_i_)
     s += String (accname[alteration_i_ + 2]);
 
-  if (octave_i_ > 0)
+  if (octave_i_ >= 0)
     {
       int o = octave_i_ + 1;
       while (o--)
        s += "'";
     }
-  else if (octave_i_ <0)
+  else if (octave_i_ < 0)
     {
       int o = (-octave_i_) - 1;
       while (o--)
index e5ecb8796091d0a391e58e49a35306706fc9a10e..7d8cdc7467f6495360e64f4976cfe3411e90b17d 100644 (file)
@@ -8,7 +8,7 @@
  */
 #include "script-column.hh"
 #include "side-position-interface.hh"
-
+#include "warn.hh"
 #include "group-interface.hh"
 
 void
@@ -46,8 +46,15 @@ Script_column::before_line_breaking (SCM smob)
                                     
   for (int i=0; i < staff_sided.size (); i++)
     {
-      arrs[Side_position_interface::get_direction (staff_sided[i])]
-       .push (staff_sided[i]);
+      Direction d = Side_position_interface::get_direction (staff_sided[i]);
+      if (!d)
+       {
+         programming_error ( "No direction for script?");
+         d = DOWN;
+         staff_sided[i]->set_grob_property ("direction", gh_int2scm (d));
+       }
+      
+      arrs[d].push (staff_sided[i]);
     }
 
   Direction d = DOWN;
index e787fd091b92ae0c7f3ff31e721c5ec7d156814f..a98188569a0d7a40473dd09cad2ed1c24ca189f6 100644 (file)
@@ -24,6 +24,7 @@
 
 Simple_spacer::Simple_spacer ()
 {
+  active_count_ = 0;
   force_f_ = 0.;
   indent_f_ =0.0;
   default_space_f_ = 20 PT;
@@ -100,8 +101,12 @@ Simple_spacer::set_active_states ()
   // safe, since
   // force is only copied.
   for (int i=0 ; i <springs_.size (); i++)
-    if (springs_[i].block_force_f_ >= force_f_) 
-      springs_[i].active_b_ = false;
+    if (springs_[i].active_b_
+       && springs_[i].block_force_f_ >= force_f_)
+      {
+       springs_[i].active_b_ = false;
+       active_count_ --; 
+      }
 }   
 
 Real
@@ -125,10 +130,7 @@ Spring_description::length (Real f) const
 bool
 Simple_spacer::active_b () const
 {
-   for (int i=0; i < springs_.size (); i++)
-    if (springs_[i].active_b_)
-      return true;
-   return false;
+  return active_count_; 
 }
 
 void
@@ -216,6 +218,7 @@ Simple_spacer::add_columns (Link_array<Grob> cols)
       
       desc.block_force_f_ = - desc.hooke_f_ * desc.ideal_f_; // block at distance 0
       springs_.push (desc);
+      active_count_ ++;
     }
   
   for (int i=0; i < cols.size () - 1; i++)
@@ -255,10 +258,35 @@ Simple_spacer::solve (Column_x_positions *positions) const
   positions->loose_cols_ = loose_cols_;
   
   positions->satisfies_constraints_b_ = (line_len_f_ < 0) || active_b ();
+
+
+  /*
+    Check if breaking constraints are met.
+   */
+  bool break_satisfy = true;
+  int sz =  positions->cols_.size ();
+  for (int i = sz; i--; )
+    {
+      SCM p = positions->cols_[i]->get_grob_property( "penalty");
+      if (gh_number_p (p))
+       {
+         if (gh_scm2double (p) < -9999)
+           break_satisfy = break_satisfy && (i == 0 || i == sz -1);
+         if (gh_scm2double (p) > 9999)
+           break_satisfy = break_satisfy && !(i == 0 || i == sz -1);
+       }
+      
+    }
+
+  positions->satisfies_constraints_b_ =
+    positions->satisfies_constraints_b_ && break_satisfy;
 }
 
 
 
+
+
+
 Spring_description::Spring_description ()
 {
   ideal_f_ =0.0;
index 90949fc766f0274c72ecf5345fc1abab6fc402d3..8502c7581c558ccf8c1ffa2e97900cacb980135c 100644 (file)
@@ -586,15 +586,18 @@ Stem::brew_molecule (SCM smob)
   Real y1 = Staff_symbol_referencer::position_f (first_head (me));
   Real y2 = stem_end_position (me);
   
-  Interval stem_y (y1,y2);
-  stem_y.unite (Interval (y2,y1));
+  Interval stem_y (y1 <? y2,y2 >? y1);
+
 
   // dy?
-  Real dy = Staff_symbol_referencer::staff_space (me)/2.0;
+  Real dy = Staff_symbol_referencer::staff_space (me) * 0.5;
     
   if (Grob *hed = support_head (me))
     {
-      Interval head_height = hed->extent (hed,Y_AXIS);
+      /*
+       must not take ledgers into account.
+       */
+      Interval head_height = Note_head::head_extent (hed,Y_AXIS);
       Real y_attach = Note_head::stem_attachment_coordinate ( hed, Y_AXIS);
 
       y_attach = head_height.linear_combination (y_attach);
index 9c8ffb0d3a5b4954e4f2ea11da2a3f0e75dd3fee..6d90f320be6655b6d14a033227ec542300c0c8ec 100644 (file)
@@ -12,7 +12,6 @@
 #include "translator-group.hh"
 #include "warn.hh"
 #include "music-output-def.hh"
-
 #include "ly-smobs.icc"
 
 int
@@ -41,17 +40,6 @@ Translator_def::mark_smob (SCM smob)
   return me->type_name_;
 }
 
-SCM push_sym;
-SCM assign_sym;
-
-static void
-foo_init ()
-{
-  push_sym = scm_permanent_object (ly_symbol2scm ("push"));
-  assign_sym = scm_permanent_object (ly_symbol2scm ("assign"));
-}
-
-ADD_SCM_INIT_FUNC (transdef, foo_init);
 
 Translator_def::Translator_def ()
 {
@@ -138,14 +126,14 @@ Translator_def::add_last_element (SCM s)
 void
 Translator_def::add_push_property (SCM props, SCM syms,  SCM vals)
 {
-  this->property_ops_ = gh_cons (scm_list_n (push_sym, props, syms, vals, SCM_UNDEFINED),
+  this->property_ops_ = gh_cons (scm_list_n (ly_symbol2scm ("push"), props, syms, vals, SCM_UNDEFINED),
                                 this->property_ops_);
 }
 
 void
 Translator_def::add_pop_property (SCM props, SCM syms)
 {
-  this->property_ops_ = gh_cons (scm_list_n (push_sym, props, syms, SCM_UNDEFINED),
+  this->property_ops_ = gh_cons (scm_list_n (ly_symbol2scm ("push"), props, syms, SCM_UNDEFINED),
                                 this->property_ops_);
 }
 
@@ -248,6 +236,10 @@ Translator_def::instantiate (Music_output_def* md)
   tg->output_def_l_ = md;
   tg->definition_ = self_scm ();
   tg->type_str_ = ly_scm2string (type_name_);
+
+  /*
+    TODO: ugh. we're reversing CONSISTS_NAME_LIST_ here
+   */
   SCM l1 = trans_list (consists_name_list_, tg);
   SCM l2 =trans_list (end_consists_name_list_,tg);
   l1 = scm_reverse_x (l1, l2);
@@ -268,14 +260,14 @@ Translator_def::apply_property_operations (Translator_group*tg)
       SCM type = ly_car (entry);
       entry = ly_cdr (entry); 
       
-      if (type == push_sym)
+      if (type == ly_symbol2scm ("push"))
        {
          SCM val = ly_cddr (entry);
          val = gh_pair_p (val) ? ly_car (val) : SCM_UNDEFINED;
 
          apply_pushpop_property (tg, ly_car (entry), ly_cadr (entry), val);
        }
-      else if (type == assign_sym)
+      else if (type == ly_symbol2scm ("assign"))
        {
          tg->internal_set_property (ly_car (entry), ly_cadr (entry));
        }
@@ -299,7 +291,7 @@ Translator_def::make_scm ()
 void
 Translator_def::add_property_assign (SCM nm, SCM val)
 {
-  this->property_ops_ = gh_cons (scm_list_n (assign_sym, scm_string_to_symbol (nm), val, SCM_UNDEFINED),
+  this->property_ops_ = gh_cons (scm_list_n (ly_symbol2scm ("assign"), scm_string_to_symbol (nm), val, SCM_UNDEFINED),
                                 this->property_ops_);
 }
 
index 8ed003ee386bab90b64eeccab8832955b3f4105c..1df040265a1d63f58987dd0257d680542ede4f69 100644 (file)
@@ -141,9 +141,9 @@ VoiceContext = \translator {
  Must come before text_engraver, but after note_column engraver.
 
 %}
+       \consists "Text_engraver"
        \consists "Dynamic_engraver"
        \consists "Fingering_engraver"
-%      \consists "Text_engraver"
 
        \consists "Script_engraver"
        \consists "Script_column_engraver"
@@ -382,10 +382,6 @@ ScoreContext = \translator {
        tupletNumberFormatFunction = #denominator-tuplet-formatter
        
        subdivideBeams = ##f
-       extraNatural = ##t
-       autoAccidentals = #'(same-octave)
-       autoCautionaries = #'()  
-
 
        keyAccidentalOrder = #'(
          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
index 8fff8e7d9239613e08dd352f6b55890f86b4d9fb..1d26dc2a03b0107a4d5cbd102b6613c9e9a974f3 100644 (file)
@@ -160,38 +160,6 @@ fatText = \property Voice.textNonEmpty = ##t
 showStaffSwitch = \property PianoStaff.followVoice = ##t
 hideStaffSwitch = \property PianoStaff.followVoice = ##f
 
-% FIXME: Move this docu (to where?)
-
-% accidentals as they were common in the 18th century.
-defaultAccidentals = {
-  \property Score.extraNatural = ##t
-  \property Score.autoAccidentals = #'(same-octave)
-  \property Score.autoCautionaries = #'()  
-}
-
-% accidentals as suggested by Kurt Stone, Music Notation in the 20th century.
-modernAccidentals = {
-  \property Score.extraNatural = ##f
-  \property Score.oneMeasureLazy = ##t
-  \property Score.autoAccidentals = #'(same-octave any-octave lazy-any-octave)
-  \property Score.autoCautionaries = #'()  
-}
-
-% the accidentals that Stone adds to the old standard as cautionaries
-modernCautionaries = {
-  \property Score.extraNatural = ##f
-  \property Score.oneMeasureLazy = ##t
-  \property Score.autoAccidentals = #'(same-octave)
-  \property Score.autoCautionaries = #'(any-octave lazy-any-octave)  
-}
-
-% accidentals not being reset at the bar-lines
-noResetKey = {
-  \property Score.oneMeasureLazy = ##f
-  \property Score.autoAccidentals = #'(lazy-same-octave)
-  \property Score.autoCautionaries = #'()
-}
-
 
 % To remove a Volta bracet or some other graphical object,
 % set it to turnOff. Example: \property Staff.VoltaBracket = \turnOff
index 5cf9f286fa8b64ad065df560ef167a500fe5a04e..28cc1a6459b7c53d6bd0f7de922d3e5052e56557 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.5.24
-Entered-date: 01DEC01
+Version: 1.5.25
+Entered-date: 05DEC01
 Description: @BLURB@
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       1000k lilypond-1.5.24.tar.gz 
+       1000k lilypond-1.5.25.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.5.24.tar.gz 
+       1000k lilypond-1.5.25.tar.gz 
 Copying-policy: GPL
 End
index 6053f4d2c2033fc2b62a97c6983a48002044c784..7027054c8ccbafbc1102a463a58bef5af13e8528 100644 (file)
@@ -1,5 +1,5 @@
 %define name lilypond
-%define version 1.5.24
+%define version 1.5.25
 %define release 1mdk
 
 Name: %{name}
index 07da5dde40bfb37c925f881268e1f11a6a5d639f..c31da8a65ba67866b4d1dd3cc03c3e2f29721af5 100644 (file)
@@ -1,11 +1,11 @@
 %define info yes
 
 Name: lilypond
-Version: 1.5.24
+Version: 1.5.25
 Release: 1
 License: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.24.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.25.tar.gz
 Summary: Create and print music notation 
 URL: http://www.lilypond.org/
 BuildRoot: /tmp/lilypond-install
index 5bf5530c94dab94873867bea55b09bb5e68cba20..3a460b67b363005a804bd999aad9f7ba6c9368df 100644 (file)
 
 Distribution: SuSE Linux 7.0 (i386)
 Name: lilypond
-Version: 1.5.24
+Version: 1.5.25
 Release: 2
 Copyright:    GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.24.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.25.tar.gz
 # music notation software for.. ?
 Summary: A program for printing sheet music.
 URL: http://www.lilypond.org/
index d16013e6c31e21790cfd563a8fd13df89d1f8b52..0df5480c15c2bb0bbce27f0810e8ec268f4230df 100644 (file)
@@ -258,6 +258,11 @@ more than this (in staffspace).")
 (grob-property-description 'padding number? "add this much extra space between objects that are next to each other.")
 (grob-property-description 'parallel-beam boolean? "internal: true if there is a beam just as wide as the bracket .")
 (grob-property-description 'paren-cautionaries boolean? "Whether to add parenthesis around cautionary accidentals.")
+(grob-property-description 'penalty number? "Penalty for breaking at
+this column. 10000 or more means forbid linebreak, -10000 or less
+means force linebreak.  Other values influence linebreaking decisions
+as a real penalty.")
+
 (grob-property-description 'pitches list? "list of musical-pitch.")
 (grob-property-description 'porrectus-width number? "width of the porrectus ligature measured in staff space.")
 (grob-property-description 'raise number? "height for text to be raised (a negative value lowers the text.")
index 9050f64050b67f0a4413848c98fcaef45dd52bb8..1e2fda7b37705f4daabc44b4cdc3e8a08bfe1793 100644 (file)
@@ -594,7 +594,7 @@ contains-grace extra-space stretch-distance ))
    'spaceable-element-interface
    "An grob (generally a Paper_column) that takes part in the
 spacing problem. "
-   '(
+   '(penalty 
      minimum-distances 
      ideal-distances  
      dir-list 
index 6d2257b7e6c837362b14d0a171d3da7c00e6ceee..98127c076f23fb94654ba1c020141a108ee1b462 100644 (file)
@@ -14,6 +14,8 @@ This function replaces all repeats  with unfold repeats. It was
 written by Rune Zedeler. "
   (let* ((es (ly-get-mus-property music 'elements))
          (e (ly-get-mus-property music 'element))
+         (body (ly-get-mus-property music 'body))
+         (alts (ly-get-mus-property music 'alternatives))
          (n  (ly-music-name music)))
 
     (if (equal? n "Repeated_music")
@@ -28,6 +30,16 @@ written by Rune Zedeler. "
          music 'elements
          (map unfold-repeats es)))
 
+    (if (music? alts)
+        (ly-set-mus-property
+         music 'alternatives
+         (unfold-repeats alts)))
+
+    (if (music? body)
+        (ly-set-mus-property
+         music 'body
+         (unfold-repeats body)))
+
     (if (music? e)
         (ly-set-mus-property
          music 'element
index 452154b0941a03d1a8d132672b75db593ba8d381..7400a25972196aa9acafe40e9eec27de260ba17e 100644 (file)
@@ -78,40 +78,21 @@ The head of the list:
 
 @end example")
 
-(translator-property-description 'autoAccidentals list? "List of
-different ways to typeset an accidental. All algorithms in the list
-are tried, and the one returning the most accidentals is used.
-The algorithms are:
-@table @samp
-@item same-octave: This is the default algorithm. Accidentals are
-typeset if the note changes the accidental of that note in that octave.
-@item any-octave: Accidentals are typeset if the note is different from 
-the previous note on the same pitch in any octave.
-@item lazy-same-octave: Shows accidentals as if the key signature does
-not get reset at every barline. This means that an alteration lasts until it is
-changed - perhaps many measures later. See oneMeasureLazy, though.
-@item lazy-any-octave: Yeah, you probably guessed that one.
-@end table
-")
-
-(translator-property-description 'autoCautionaries list? "List similar to
-autoAccidentals, but it controls cautionary accidentals rather than
-normal ones. Both lists are tried, and the one giving the most accidentals
-wins. In case of draw, a normal accidental is typeset.
-")
-
 (translator-property-description 'automaticPhrasing boolean? " If set,
 the @ref{Lyric_phrasing_engraver} will match note heads of context
 called Voice X to syllables from LyricsVoice called
 X-<something>. This feature is turned on by default. See the example
 file @file{lyrics-multi-stanza.ly}.
-")
 
+")
 (translator-property-description 'automaticMelismata boolean? " If
 set, \addlyrics will assume that beams, slurs and ties signal
 melismata, and align lyrics accordingly.
 ")
 
+(translator-property-description 'autoReminders symbol? "If set to @samp{accidental} or @samp{cautionary},
+a (reminder) accidental automatically is inserted whenever an accidental is reverted - even after a bar.")
+
 (translator-property-description 'barAlways boolean? " If set to true a bar line is drawn after each note.
 ")
 (translator-property-description 'barCheckNoSynchronize boolean? "If set, don't reset measurePosition when finding a bbarcheck. This
@@ -197,10 +178,7 @@ procedure? "visibility-lambda function for explicit Key changes;
 \override of #'visibility-lambda will set the visibility for normal
 (ie. at the start of the line) key signatures.")
 
-(translator-property-description 'extraNatural boolean? "Whether to typeset an
-extra natural sign before accidentals changing from a non-natural to 
-another non-natural.
-")
+
 (translator-property-description 'followVoice boolean?
                                 "if set, note heads are tracked  across staff switches by a thin line")
 (translator-property-description 'fontSize integer?
@@ -238,11 +216,8 @@ The format is (NAME . ALTER), where NAME is from 0 .. 6 and ALTER from  -1, 1.
 (translator-property-description 'lastKeySignature list? "Last key
 signature before a key signature change.")
 
-(translator-property-description 'lazyKeySignature list? "a lazy version of
-localKeySignature, only being reset according to oneMeasureLazy."
-) 
 (translator-property-description 'localKeySignature list? "the key
-signature at this point in the measure.  The format is the same as for keySignature. Is reset at every bar line."
+signature at this point in the measure.  The format is the same as for keySignature. "
 ) 
 
 (translator-property-description 'measureLength moment? "Length of one
@@ -261,13 +236,15 @@ MIDI instrument to use ")
 (translator-property-description 'noAutoBeaming boolean? "If set to true then beams are not generated automatically.
 ")
 (translator-property-description 'noDirection boolean? "Don't set directions by a2-engraver when part-combining.")
-(translator-property-description 'oneBeat moment? "  How long does one beat in the current time signature last?")
-(translator-property-description 'oneMeasureLazy boolean? "If false, the lazy
-time-signature is never reset, causing lazy accidentals (see
-autoAccidentals) to last until the next key change. If true, the lazy
-key signature only last one measure longer than the normal one - accidentals
-being reset at the end of the measure after the one in which they occur.
+(translator-property-description 'noResetKey boolean? "Do not
+reset local key to the value of keySignature at the start of a measure,
+as determined by measurePosition.
+
+Do not reset the key at the start of a measure.  Accidentals will be
+printed only once and are in effect until overridden, possibly many
+measures later.
 ")
+(translator-property-description 'oneBeat moment? "  How long does one beat in the current time signature last?")
 (translator-property-description 'pedalSustainStrings list? "List of   string to print for sustain-pedal. Format is
  (UP UPDOWN DOWN), where each of the three is the string to print when
 this is done with the pedal.")
@@ -324,7 +301,7 @@ help with debugging large scores.")
 (translator-property-description 'squashedPosition integer? " Vertical position of
 squashing for Pitch_squash_engraver.")
 (translator-property-description 'stavesFound list? "list of all staff-symbols found.")
-(translator-property-description 'stanza string? "Stanza `number' to print at start of a verse. Use in LyricsVoice context.")
+(translator-property-description 'stanza markup? "Stanza `number' to print at start of a verse. Use in LyricsVoice context.")
 
 
 (translator-property-description 'stemLeftBeamCount integer? "
@@ -333,7 +310,7 @@ Overrides automatic beaming.  The value is only used once, and then it
 is erased.
 .")
 (translator-property-description 'stemRightBeamCount integer? "idem, for the right side.")
-(translator-property-description 'stz string? "Abbreviated form for a stanza, see also Stanza property.")
+(translator-property-description 'stz markup? "Abbreviated form for a stanza, see also Stanza property.")
 (translator-property-description 'subdivideBeams boolean? "If set, multiple beams will be subdivided at beat
 positions - by only drawing one beam over the beat.")
 (translator-property-description 'textNonEmpty boolean? " If set
index 1857dcef5dbf7700bd8d9b19e29a22e8090b1d20..2a93542dd03281aa09adc8b412a66823149829d5 100644 (file)
@@ -1,4 +1,5 @@
 #!@PYTHON@
+
 # Run lilypond, latex, dvips.
 #
 # This is the third incarnation of ly2dvi.
@@ -14,7 +15,7 @@
 # TODO: should allow to switch off pk cache.
 #
 
-
+#
 # Note: gettext work best if we use ' for docstrings and "
 #       for gettextable strings.
 #       --> DO NOT USE """ for docstrings.
index 44535e503afa5a6e265c279d3788703c6ae7aa18..ed02750ebfdc1bf60dab78a07b182bb4680b5d65 100644 (file)
@@ -211,6 +211,12 @@ class Clef:
        def dump(self):
                return '\\clef %s' % self.type
 
+class Key:
+       def __init__ (self, key):
+               self.type = key
+       def dump(self):
+               return '\\key %s' % self.type
+
 clef_table = {
        'b':'bass'  ,
        'r':'baritone',
@@ -220,7 +226,22 @@ clef_table = {
        's':'soprano',
        't':'treble',
        'f':'frenchviolin',
-       } 
+       }
+key_table = {
+       '+0':'c \major',
+       '+1':'g \major',
+       '+2':'d \major',
+       '+3':'a \major',
+       '+4':'e \major',
+       '+5':'b \major',
+       '+6':'fis \major',
+       '-1':'f \major',
+       '-2':'bes \major',
+       '-3':'ees \major',
+       '-4':'aes \major',
+       '-5':'des \major',
+       '-6':'ges \major'
+       }
 class Staff:
        def __init__ (self): 
                self.voices = (Voice (), Voice())
@@ -228,6 +249,7 @@ class Staff:
                self.instrument = 0
                self.voice_idx = 0
                self.number = None
+               self.key = 0
                
                i = 0
                for v  in self.voices:
@@ -237,7 +259,8 @@ class Staff:
        def set_clef (self, letter):
                clstr = clef_table[letter]
                self.voices[0].add_nonchord (Clef (clstr))
-               
+
+       
        def current_voice (self):
                return self.voices[self.voice_idx]
        def next_voice (self):
@@ -531,47 +554,62 @@ Huh? expected duration, found %d Left was `%s'""" % (durdigit, str[:20]))
                        str = str[1:]
                                        
                return str
-       
+
+       def parse_key (self, str):
+               key = ""
+               #The key is changed by a string of the form K[+-]<num>[+-]<num>
+               #where the first number is the transposition and the second number is the
+               #new key signature.  For now, we won't bother with the transposition.
+               if str[2] != '0':
+                       sys.stderr.write("Transposition not implemented yet: ")
+                       while str[0] in '+-0123456789':
+                               str = str[1:]
+               else:
+                       str=str[3:]
+                       key = ''
+                       while str[0] in '+-0123456789':
+                               key=key + str[0]
+                               str=str[1:]
+                       keystr = key_table[key]
+                       self.current_voice().add_nonchord (Key(keystr))
+               return(str)
+
 
        def parse_header  (self, ls):
-               while ls[0][0] == '%':
-                       ls = ls[1:]
+               def atonum(a):
+                       if re.search('\\.', a):
+                               return string.atof (a)
+                       else:
+                               return string.atoi (a)
 
-               opening = ls[0]
-               ls = ls[1:]
-               
-               opening = re.sub ('^[ \t]+', '', opening)
-               opening = re.sub ('[ \t]+$', '', opening)               
-               opening = re.split ('[\t ]+', opening)
-
-               (no_staffs, no_instruments, timesig_num,timesig_den, ptimesig_num,
-                ptimesig_den, pickup_beats,keysig_number) = opening
-               (no_staffs, no_instruments, timesig_num, timesig_den, ptimesig_num, ptimesig_den, keysig_number) = tuple (map (string.atoi , [no_staffs, no_instruments, timesig_num, timesig_den, ptimesig_num, ptimesig_den, keysig_number]))
-               try: 
-                       pickup_beats = string.atoi (pickup_beats)
-               except ValueError:
-                       pickup_beats = string.atof (pickup_beats)
-               
+               number_count = 12
+               numbers = []
 
-               while ls[0][0] == '%':
+               while len (numbers) < number_count:
+                       opening = ls[0]
                        ls = ls[1:]
-                       
-               opening = ls[0]
-               ls = ls[1:]
+
+                       opening = re.sub ('[ \t\n]+', ' ', opening)
+                       opening = re.sub ('^ ', '', opening)
+                       opening = re.sub (' $', '', opening)                                            
+                       if opening == '':
+                               continue
+                       opening = string.split (opening, ' ')
+
+                       numbers = numbers + map (atonum, opening)
+
+               (no_staffs, no_instruments, timesig_num, timesig_den, ptimesig_num,
+                ptimesig_den, pickup_beats,keysig_number) = tuple (numbers[0:8])
+               (no_pages,no_systems, musicsize, fracindent) = tuple (numbers[8:])
 
                # ignore this.
                # opening = map (string.atoi, re.split ('[\t ]+', opening))
-               # (no_pages,no_systems, musicsize, fracindent) = tuple (opening)
-
+               
                instruments = []
                while len (instruments) < no_instruments:
                        instruments.append (ls[0])
                        ls = ls[1:]
 
-
-               while ls[0][0] == '%':
-                       ls = ls[1:]
-
                l = ls[0]
                ls = ls[1:]
 
@@ -582,9 +620,6 @@ Huh? expected duration, found %d Left was `%s'""" % (durdigit, str[:20]))
                        l = l[1:]
 
                # dump path 
-               while ls[0][0] == '%':
-                       ls = ls[1:]
-
                ls = ls[1:] 
 
                # dump more ?
@@ -691,6 +726,11 @@ Huh? expected duration, found %d Left was `%s'""" % (durdigit, str[:20]))
                                left = self.parse_ornament (left)
                        elif c == 'x':
                                left = self.parsex (left)
+                       elif c == 'C':
+                               self.current_staff().set_clef(str(left[1]))
+                               left = left[2:]
+                       elif c == 'K':
+                               left = self.parse_key (left)
                        elif c in "[]":
                                left = self.parse_beams (left)
                        elif left[:2] == "//":
@@ -722,6 +762,9 @@ Huh? Unknown directive `%s', before `%s'""" % (c, left[:20] ))
 
        def parse (self,fn):
                ls = open (fn).readlines ()
+               def subst(s):
+                       return re.sub ('%.*$', '', s)
+               ls = map (subst, ls)
                ls = self.parse_header (ls)
                left = string.join (ls, ' ')
 
diff --git a/tex/feta11.tex b/tex/feta11.tex
new file mode 100644 (file)
index 0000000..106744d
--- /dev/null
@@ -0,0 +1,250 @@
+\def\fetawholerest{\char0}
+\def\fetahalfrest{\char1}
+\def\fetaoutsidewholerest{\char2}
+\def\fetaoutsidehalfrest{\char3}
+\def\fetabreverest{\char4}
+\def\fetalongarest{\char5}
+\def\fetamultirest{\char6}
+\def\fetaquartrest{\char7}
+\def\fetaeighthrest{\char8}
+\def\fetasixteenthrest{\char9}
+\def\fetathirtysecondrest{\char10}
+\def\fetasixtyfourthrest{\char11}
+\def\fetahundredtwentyeighthrest{\char12}
+\def\fetaneomenslongarest{\char13}
+\def\fetaneomensbreverest{\char14}
+\def\fetaneomenssemibrevisrest{\char15}
+\def\fetaneomensminimahalfrest{\char16}
+\def\fetaneomenssemiminimarest{\char17}
+\def\fetaneomensfusarest{\char18}
+\def\fetaneomenssemifusarest{\char19}
+\def\fetamenslongarest{\char20}
+\def\fetamensbreverest{\char21}
+\def\fetamenssemibrevisrest{\char22}
+\def\fetamensminimahalfrest{\char23}
+\def\fetamenssemiminimarest{\char24}
+\def\fetamensfusarest{\char25}
+\def\fetamenssemifusarest{\char26}
+\def\fetasharp{\char27}
+\def\fetanatural{\char28}
+\def\fetaflat{\char29}
+\def\fetaflatflat{\char30}
+\def\fetasharpsharp{\char31}
+\def\fetarightparen{\char32}
+\def\fetaleftparen{\char33}
+\def\fetamedicaeaflat{\char34}
+\def\fetavaticanaflat{\char35}
+\def\fetavaticananatural{\char36}
+\def\fetamensuralsharp{\char37}
+\def\fetamensuralflat{\char38}
+\def\fetahufnagelflat{\char39}
+\def\fetadot{\char40}
+\def\fetamensuralmaximahead{\char41}
+\def\fetamensurallongahead{\char42}
+\def\fetamensuralbrevishead{\char43}
+\def\fetaneomensuralminimhead{\char44}
+\def\fetaneomensuralsemiminimhead{\char45}
+\def\fetaneofusahead{\char46}
+\def\fetamensuralminimhead{\char47}
+\def\fetamensuralsemiminimhead{\char48}
+\def\fetafusahead{\char49}
+\def\fetaledgerending{\char50}
+\def\fetabrevishead{\char51}
+\def\fetawholehead{\char52}
+\def\fetahalfhead{\char53}
+\def\fetaquarthead{\char54}
+\def\fetawholediamondhead{\char55}
+\def\fetahalfdiamondhead{\char56}
+\def\fetadiamondhead{\char57}
+\def\fetawholetrianglehead{\char58}
+\def\fetahalftrianglehead{\char59}
+\def\fetatrianglehead{\char60}
+\def\fetawholeslashhead{\char61}
+\def\fetahalfslashhead{\char62}
+\def\fetaquartslashhead{\char63}
+\def\fetawholecrossedhead{\char64}
+\def\fetahalfcrossedhead{\char65}
+\def\fetacrossedhead{\char66}
+\def\fetaxcircledhead{\char67}
+\def\fetavatsubbipunctumhead{\char68}
+\def\fetavatpunctumhead{\char69}
+\def\fetavatvirgahead{\char70}
+\def\fetavatrvirgahead{\char71}
+\def\fetavatlpeshead{\char72}
+\def\fetavatupeshead{\char73}
+\def\fetavatvupeshead{\char74}
+\def\fetavatplicahead{\char75}
+\def\fetavatepiphonushead{\char76}
+\def\fetavatcephalicushead{\char77}
+\def\fetavatquilismahead{\char78}
+\def\fetamedsubbipunctumhead{\char79}
+\def\fetamedpunctumhead{\char80}
+\def\fetamedrvirgahead{\char81}
+\def\fetamedvirgahead{\char82}
+\def\fetahufpunctumhead{\char83}
+\def\fetahufvirgahead{\char84}
+\def\fetahuflpeshead{\char85}
+\def\fetaufermata{\char86}
+\def\fetadfermata{\char87}
+\def\fetathumb{\char88}
+\def\fetasforzatoaccent{\char89}
+\def\fetastaccato{\char90}
+\def\fetaustaccatissimo{\char91}
+\def\fetadstaccatissimo{\char92}
+\def\fetatenuto{\char93}
+\def\fetauportato{\char94}
+\def\fetadportato{\char95}
+\def\fetaumarcato{\char96}
+\def\fetadmarcato{\char97}
+\def\fetaouvert{\char98}
+\def\fetaplusstop{\char99}
+\def\fetaupbow{\char100}
+\def\fetadownbow{\char101}
+\def\fetareverseturn{\char102}
+\def\fetaturn{\char103}
+\def\fetatrill{\char104}
+\def\fetaupedalheel{\char105}
+\def\fetadpedalheel{\char106}
+\def\fetaupedaltoe{\char107}
+\def\fetadpedaltoe{\char108}
+\def\fetaflageolet{\char109}
+\def\fetasegno{\char110}
+\def\fetacoda{\char111}
+\def\fetarcomma{\char112}
+\def\fetalcomma{\char113}
+\def\fetaarpeggio{\char114}
+\def\fetatrill-element{\char115}
+\def\fetaarpeggioarrowdown{\char116}
+\def\fetaarpeggioarrowup{\char117}
+\def\fetatrilelement{\char118}
+\def\fetaprall{\char119}
+\def\fetamordent{\char120}
+\def\fetaprallprall{\char121}
+\def\fetaprallmordent{\char122}
+\def\fetaupprall{\char123}
+\def\fetadownprall{\char124}
+\def\fetaupmordent{\char125}
+\def\fetadownmordent{\char126}
+\def\fetalineprall{\char127}
+\def\fetapralldown{\char128}
+\def\fetaprallup{\char129}
+\def\fetaeighthflag{\char130}
+\def\fetasixteenthflag{\char131}
+\def\fetathirtysecondflag{\char132}
+\def\fetasixtyfourthflag{\char133}
+\def\fetadeighthflag{\char134}
+\def\fetamenseighthflag{\char135}
+\def\fetamens1eighthflag{\char136}
+\def\fetamensdeighthflag{\char137}
+\def\fetamensd1eighthflag{\char138}
+\def\fetamenssixteenthflag{\char139}
+\def\fetamens1sixteenthflag{\char140}
+\def\fetamensdsixteenthflag{\char141}
+\def\fetamensd1sixteenthflag{\char142}
+\def\fetamensthirtysecondflag{\char143}
+\def\fetamens1thirtysecondflag{\char144}
+\def\fetamensdthirtysecondflag{\char145}
+\def\fetamensd1thirtysecondflag{\char146}
+\def\fetamenssixtyfourthflag{\char147}
+\def\fetamens1sixtyfourthflag{\char148}
+\def\fetamensdsixtyfourthflag{\char149}
+\def\fetamensd1sixtyfourthflag{\char150}
+\def\fetagracedash{\char151}
+\def\fetadsixteenthflag{\char152}
+\def\fetadthirtysecondflag{\char153}
+\def\fetadsixtyfourthflag{\char154}
+\def\fetamenseighthflag{\char155}
+\def\fetamens1eighthflag{\char156}
+\def\fetamensdeighthflag{\char157}
+\def\fetamensd1eighthflag{\char158}
+\def\fetamenssixteenthflag{\char159}
+\def\fetamens1sixteenthflag{\char160}
+\def\fetamensdsixteenthflag{\char161}
+\def\fetamensd1sixteenthflag{\char162}
+\def\fetamensthirtysecondflag{\char163}
+\def\fetamens1thirtysecondflag{\char164}
+\def\fetamensdthirtysecondflag{\char165}
+\def\fetamensd1thirtysecondflag{\char166}
+\def\fetamenssixtyfourthflag{\char167}
+\def\fetamens1sixtyfourthflag{\char168}
+\def\fetamensdsixtyfourthflag{\char169}
+\def\fetamensd1sixtyfourthflag{\char170}
+\def\fetagracedash{\char171}
+\def\fetadgracedash{\char172}
+\def\fetastem{\char173}
+\def\fetadstem{\char174}
+\def\fetaaltoclef{\char175}
+\def\fetacaltoclef{\char176}
+\def\fetabassclef{\char177}
+\def\fetacbassclef{\char178}
+\def\fetatrebleclef{\char179}
+\def\fetactrebleclef{\char180}
+\def\fetavatdoclef{\char181}
+\def\fetavatcdoclef{\char182}
+\def\fetavatfaclef{\char183}
+\def\fetavatcfaclef{\char184}
+\def\fetameddoclef{\char185}
+\def\fetacmeddoclef{\char186}
+\def\fetamedfaclef{\char187}
+\def\fetacmedfaclef{\char188}
+\def\fetaneomenscclef{\char189}
+\def\fetacneomenscclef{\char190}
+\def\fetapetruccicclef{\char191}
+\def\fetacpetruccicclef{\char192}
+\def\fetamenscclef{\char193}
+\def\fetacmenscclef{\char194}
+\def\fetapetruccifclef{\char195}
+\def\fetacpetruccifclef{\char196}
+\def\fetamensfclef{\char197}
+\def\fetacmensfclef{\char198}
+\def\fetamensgclef{\char199}
+\def\fetacmensgclef{\char200}
+\def\fetapetruccigclef{\char201}
+\def\fetacpetruccigclef{\char202}
+\def\fetahufnageldoclef{\char203}
+\def\fetachufnageldoclef{\char204}
+\def\fetahufnagelfaclef{\char205}
+\def\fetachufnagelfaclef{\char206}
+\def\fetahufnageldofaclef{\char207}
+\def\fetachufnageldofaclef{\char208}
+\def\fetapercussionclef{\char209}
+\def\fetacpercussionclef{\char210}
+\def\fetatabclef{\char211}
+\def\fetactabclef{\char212}
+\def\fetafourfourmeter{\char213}
+\def\fetaallabreve{\char214}
+\def\fetaoldfourfourmeter{\char215}
+\def\fetaoldallabreve{\char216}
+\def\fetaoldthreetwometer{\char217}
+\def\fetaoldsixfourmeter{\char218}
+\def\fetaoldninefourmeter{\char219}
+\def\fetaoldthreefourmeter{\char220}
+\def\fetaoldsixeightmeter{\char221}
+\def\fetaoldnineeight{\char222}
+\def\fetaoldfoureightmeter{\char223}
+\def\fetaoldsixeightmeteralt{\char224}
+\def\fetaoldtwofourmeter{\char225}
+\def\fetapedal-asterisk{\char226}
+\def\fetapedal-dash{\char227}
+\def\fetapedal-dot{\char228}
+\def\fetapedal-P{\char229}
+\def\fetapedal-d{\char230}
+\def\fetapedal-e{\char231}
+\def\fetapedal-Ped{\char232}
+\def\fetaaccDiscant{\char233}
+\def\fetaaccDot{\char234}
+\def\fetaaccFreebase{\char235}
+\def\fetaaccStdbase{\char236}
+\def\fetaaccBayanbase{\char237}
+\def\fetaaccSB{\char238}
+\def\fetaaccBB{\char239}
+\def\fetaaccOldEE{\char240}
+\def\fetaaccOldEES{\char241}
+\def\fetahufnagel{\char242}
+\def\fetarhufnagel{\char243}
+\def\fetamedicaea{\char244}
+\def\fetarmedicaea{\char245}
+\def\fetavaticana{\char246}
+\def\fetarvaticana{\char247}
+\def\fetamensural{\char248}
+\def\fetarmensural{\char249}
diff --git a/tex/feta13.tex b/tex/feta13.tex
new file mode 100644 (file)
index 0000000..106744d
--- /dev/null
@@ -0,0 +1,250 @@
+\def\fetawholerest{\char0}
+\def\fetahalfrest{\char1}
+\def\fetaoutsidewholerest{\char2}
+\def\fetaoutsidehalfrest{\char3}
+\def\fetabreverest{\char4}
+\def\fetalongarest{\char5}
+\def\fetamultirest{\char6}
+\def\fetaquartrest{\char7}
+\def\fetaeighthrest{\char8}
+\def\fetasixteenthrest{\char9}
+\def\fetathirtysecondrest{\char10}
+\def\fetasixtyfourthrest{\char11}
+\def\fetahundredtwentyeighthrest{\char12}
+\def\fetaneomenslongarest{\char13}
+\def\fetaneomensbreverest{\char14}
+\def\fetaneomenssemibrevisrest{\char15}
+\def\fetaneomensminimahalfrest{\char16}
+\def\fetaneomenssemiminimarest{\char17}
+\def\fetaneomensfusarest{\char18}
+\def\fetaneomenssemifusarest{\char19}
+\def\fetamenslongarest{\char20}
+\def\fetamensbreverest{\char21}
+\def\fetamenssemibrevisrest{\char22}
+\def\fetamensminimahalfrest{\char23}
+\def\fetamenssemiminimarest{\char24}
+\def\fetamensfusarest{\char25}
+\def\fetamenssemifusarest{\char26}
+\def\fetasharp{\char27}
+\def\fetanatural{\char28}
+\def\fetaflat{\char29}
+\def\fetaflatflat{\char30}
+\def\fetasharpsharp{\char31}
+\def\fetarightparen{\char32}
+\def\fetaleftparen{\char33}
+\def\fetamedicaeaflat{\char34}
+\def\fetavaticanaflat{\char35}
+\def\fetavaticananatural{\char36}
+\def\fetamensuralsharp{\char37}
+\def\fetamensuralflat{\char38}
+\def\fetahufnagelflat{\char39}
+\def\fetadot{\char40}
+\def\fetamensuralmaximahead{\char41}
+\def\fetamensurallongahead{\char42}
+\def\fetamensuralbrevishead{\char43}
+\def\fetaneomensuralminimhead{\char44}
+\def\fetaneomensuralsemiminimhead{\char45}
+\def\fetaneofusahead{\char46}
+\def\fetamensuralminimhead{\char47}
+\def\fetamensuralsemiminimhead{\char48}
+\def\fetafusahead{\char49}
+\def\fetaledgerending{\char50}
+\def\fetabrevishead{\char51}
+\def\fetawholehead{\char52}
+\def\fetahalfhead{\char53}
+\def\fetaquarthead{\char54}
+\def\fetawholediamondhead{\char55}
+\def\fetahalfdiamondhead{\char56}
+\def\fetadiamondhead{\char57}
+\def\fetawholetrianglehead{\char58}
+\def\fetahalftrianglehead{\char59}
+\def\fetatrianglehead{\char60}
+\def\fetawholeslashhead{\char61}
+\def\fetahalfslashhead{\char62}
+\def\fetaquartslashhead{\char63}
+\def\fetawholecrossedhead{\char64}
+\def\fetahalfcrossedhead{\char65}
+\def\fetacrossedhead{\char66}
+\def\fetaxcircledhead{\char67}
+\def\fetavatsubbipunctumhead{\char68}
+\def\fetavatpunctumhead{\char69}
+\def\fetavatvirgahead{\char70}
+\def\fetavatrvirgahead{\char71}
+\def\fetavatlpeshead{\char72}
+\def\fetavatupeshead{\char73}
+\def\fetavatvupeshead{\char74}
+\def\fetavatplicahead{\char75}
+\def\fetavatepiphonushead{\char76}
+\def\fetavatcephalicushead{\char77}
+\def\fetavatquilismahead{\char78}
+\def\fetamedsubbipunctumhead{\char79}
+\def\fetamedpunctumhead{\char80}
+\def\fetamedrvirgahead{\char81}
+\def\fetamedvirgahead{\char82}
+\def\fetahufpunctumhead{\char83}
+\def\fetahufvirgahead{\char84}
+\def\fetahuflpeshead{\char85}
+\def\fetaufermata{\char86}
+\def\fetadfermata{\char87}
+\def\fetathumb{\char88}
+\def\fetasforzatoaccent{\char89}
+\def\fetastaccato{\char90}
+\def\fetaustaccatissimo{\char91}
+\def\fetadstaccatissimo{\char92}
+\def\fetatenuto{\char93}
+\def\fetauportato{\char94}
+\def\fetadportato{\char95}
+\def\fetaumarcato{\char96}
+\def\fetadmarcato{\char97}
+\def\fetaouvert{\char98}
+\def\fetaplusstop{\char99}
+\def\fetaupbow{\char100}
+\def\fetadownbow{\char101}
+\def\fetareverseturn{\char102}
+\def\fetaturn{\char103}
+\def\fetatrill{\char104}
+\def\fetaupedalheel{\char105}
+\def\fetadpedalheel{\char106}
+\def\fetaupedaltoe{\char107}
+\def\fetadpedaltoe{\char108}
+\def\fetaflageolet{\char109}
+\def\fetasegno{\char110}
+\def\fetacoda{\char111}
+\def\fetarcomma{\char112}
+\def\fetalcomma{\char113}
+\def\fetaarpeggio{\char114}
+\def\fetatrill-element{\char115}
+\def\fetaarpeggioarrowdown{\char116}
+\def\fetaarpeggioarrowup{\char117}
+\def\fetatrilelement{\char118}
+\def\fetaprall{\char119}
+\def\fetamordent{\char120}
+\def\fetaprallprall{\char121}
+\def\fetaprallmordent{\char122}
+\def\fetaupprall{\char123}
+\def\fetadownprall{\char124}
+\def\fetaupmordent{\char125}
+\def\fetadownmordent{\char126}
+\def\fetalineprall{\char127}
+\def\fetapralldown{\char128}
+\def\fetaprallup{\char129}
+\def\fetaeighthflag{\char130}
+\def\fetasixteenthflag{\char131}
+\def\fetathirtysecondflag{\char132}
+\def\fetasixtyfourthflag{\char133}
+\def\fetadeighthflag{\char134}
+\def\fetamenseighthflag{\char135}
+\def\fetamens1eighthflag{\char136}
+\def\fetamensdeighthflag{\char137}
+\def\fetamensd1eighthflag{\char138}
+\def\fetamenssixteenthflag{\char139}
+\def\fetamens1sixteenthflag{\char140}
+\def\fetamensdsixteenthflag{\char141}
+\def\fetamensd1sixteenthflag{\char142}
+\def\fetamensthirtysecondflag{\char143}
+\def\fetamens1thirtysecondflag{\char144}
+\def\fetamensdthirtysecondflag{\char145}
+\def\fetamensd1thirtysecondflag{\char146}
+\def\fetamenssixtyfourthflag{\char147}
+\def\fetamens1sixtyfourthflag{\char148}
+\def\fetamensdsixtyfourthflag{\char149}
+\def\fetamensd1sixtyfourthflag{\char150}
+\def\fetagracedash{\char151}
+\def\fetadsixteenthflag{\char152}
+\def\fetadthirtysecondflag{\char153}
+\def\fetadsixtyfourthflag{\char154}
+\def\fetamenseighthflag{\char155}
+\def\fetamens1eighthflag{\char156}
+\def\fetamensdeighthflag{\char157}
+\def\fetamensd1eighthflag{\char158}
+\def\fetamenssixteenthflag{\char159}
+\def\fetamens1sixteenthflag{\char160}
+\def\fetamensdsixteenthflag{\char161}
+\def\fetamensd1sixteenthflag{\char162}
+\def\fetamensthirtysecondflag{\char163}
+\def\fetamens1thirtysecondflag{\char164}
+\def\fetamensdthirtysecondflag{\char165}
+\def\fetamensd1thirtysecondflag{\char166}
+\def\fetamenssixtyfourthflag{\char167}
+\def\fetamens1sixtyfourthflag{\char168}
+\def\fetamensdsixtyfourthflag{\char169}
+\def\fetamensd1sixtyfourthflag{\char170}
+\def\fetagracedash{\char171}
+\def\fetadgracedash{\char172}
+\def\fetastem{\char173}
+\def\fetadstem{\char174}
+\def\fetaaltoclef{\char175}
+\def\fetacaltoclef{\char176}
+\def\fetabassclef{\char177}
+\def\fetacbassclef{\char178}
+\def\fetatrebleclef{\char179}
+\def\fetactrebleclef{\char180}
+\def\fetavatdoclef{\char181}
+\def\fetavatcdoclef{\char182}
+\def\fetavatfaclef{\char183}
+\def\fetavatcfaclef{\char184}
+\def\fetameddoclef{\char185}
+\def\fetacmeddoclef{\char186}
+\def\fetamedfaclef{\char187}
+\def\fetacmedfaclef{\char188}
+\def\fetaneomenscclef{\char189}
+\def\fetacneomenscclef{\char190}
+\def\fetapetruccicclef{\char191}
+\def\fetacpetruccicclef{\char192}
+\def\fetamenscclef{\char193}
+\def\fetacmenscclef{\char194}
+\def\fetapetruccifclef{\char195}
+\def\fetacpetruccifclef{\char196}
+\def\fetamensfclef{\char197}
+\def\fetacmensfclef{\char198}
+\def\fetamensgclef{\char199}
+\def\fetacmensgclef{\char200}
+\def\fetapetruccigclef{\char201}
+\def\fetacpetruccigclef{\char202}
+\def\fetahufnageldoclef{\char203}
+\def\fetachufnageldoclef{\char204}
+\def\fetahufnagelfaclef{\char205}
+\def\fetachufnagelfaclef{\char206}
+\def\fetahufnageldofaclef{\char207}
+\def\fetachufnageldofaclef{\char208}
+\def\fetapercussionclef{\char209}
+\def\fetacpercussionclef{\char210}
+\def\fetatabclef{\char211}
+\def\fetactabclef{\char212}
+\def\fetafourfourmeter{\char213}
+\def\fetaallabreve{\char214}
+\def\fetaoldfourfourmeter{\char215}
+\def\fetaoldallabreve{\char216}
+\def\fetaoldthreetwometer{\char217}
+\def\fetaoldsixfourmeter{\char218}
+\def\fetaoldninefourmeter{\char219}
+\def\fetaoldthreefourmeter{\char220}
+\def\fetaoldsixeightmeter{\char221}
+\def\fetaoldnineeight{\char222}
+\def\fetaoldfoureightmeter{\char223}
+\def\fetaoldsixeightmeteralt{\char224}
+\def\fetaoldtwofourmeter{\char225}
+\def\fetapedal-asterisk{\char226}
+\def\fetapedal-dash{\char227}
+\def\fetapedal-dot{\char228}
+\def\fetapedal-P{\char229}
+\def\fetapedal-d{\char230}
+\def\fetapedal-e{\char231}
+\def\fetapedal-Ped{\char232}
+\def\fetaaccDiscant{\char233}
+\def\fetaaccDot{\char234}
+\def\fetaaccFreebase{\char235}
+\def\fetaaccStdbase{\char236}
+\def\fetaaccBayanbase{\char237}
+\def\fetaaccSB{\char238}
+\def\fetaaccBB{\char239}
+\def\fetaaccOldEE{\char240}
+\def\fetaaccOldEES{\char241}
+\def\fetahufnagel{\char242}
+\def\fetarhufnagel{\char243}
+\def\fetamedicaea{\char244}
+\def\fetarmedicaea{\char245}
+\def\fetavaticana{\char246}
+\def\fetarvaticana{\char247}
+\def\fetamensural{\char248}
+\def\fetarmensural{\char249}
diff --git a/tex/feta16.tex b/tex/feta16.tex
new file mode 100644 (file)
index 0000000..106744d
--- /dev/null
@@ -0,0 +1,250 @@
+\def\fetawholerest{\char0}
+\def\fetahalfrest{\char1}
+\def\fetaoutsidewholerest{\char2}
+\def\fetaoutsidehalfrest{\char3}
+\def\fetabreverest{\char4}
+\def\fetalongarest{\char5}
+\def\fetamultirest{\char6}
+\def\fetaquartrest{\char7}
+\def\fetaeighthrest{\char8}
+\def\fetasixteenthrest{\char9}
+\def\fetathirtysecondrest{\char10}
+\def\fetasixtyfourthrest{\char11}
+\def\fetahundredtwentyeighthrest{\char12}
+\def\fetaneomenslongarest{\char13}
+\def\fetaneomensbreverest{\char14}
+\def\fetaneomenssemibrevisrest{\char15}
+\def\fetaneomensminimahalfrest{\char16}
+\def\fetaneomenssemiminimarest{\char17}
+\def\fetaneomensfusarest{\char18}
+\def\fetaneomenssemifusarest{\char19}
+\def\fetamenslongarest{\char20}
+\def\fetamensbreverest{\char21}
+\def\fetamenssemibrevisrest{\char22}
+\def\fetamensminimahalfrest{\char23}
+\def\fetamenssemiminimarest{\char24}
+\def\fetamensfusarest{\char25}
+\def\fetamenssemifusarest{\char26}
+\def\fetasharp{\char27}
+\def\fetanatural{\char28}
+\def\fetaflat{\char29}
+\def\fetaflatflat{\char30}
+\def\fetasharpsharp{\char31}
+\def\fetarightparen{\char32}
+\def\fetaleftparen{\char33}
+\def\fetamedicaeaflat{\char34}
+\def\fetavaticanaflat{\char35}
+\def\fetavaticananatural{\char36}
+\def\fetamensuralsharp{\char37}
+\def\fetamensuralflat{\char38}
+\def\fetahufnagelflat{\char39}
+\def\fetadot{\char40}
+\def\fetamensuralmaximahead{\char41}
+\def\fetamensurallongahead{\char42}
+\def\fetamensuralbrevishead{\char43}
+\def\fetaneomensuralminimhead{\char44}
+\def\fetaneomensuralsemiminimhead{\char45}
+\def\fetaneofusahead{\char46}
+\def\fetamensuralminimhead{\char47}
+\def\fetamensuralsemiminimhead{\char48}
+\def\fetafusahead{\char49}
+\def\fetaledgerending{\char50}
+\def\fetabrevishead{\char51}
+\def\fetawholehead{\char52}
+\def\fetahalfhead{\char53}
+\def\fetaquarthead{\char54}
+\def\fetawholediamondhead{\char55}
+\def\fetahalfdiamondhead{\char56}
+\def\fetadiamondhead{\char57}
+\def\fetawholetrianglehead{\char58}
+\def\fetahalftrianglehead{\char59}
+\def\fetatrianglehead{\char60}
+\def\fetawholeslashhead{\char61}
+\def\fetahalfslashhead{\char62}
+\def\fetaquartslashhead{\char63}
+\def\fetawholecrossedhead{\char64}
+\def\fetahalfcrossedhead{\char65}
+\def\fetacrossedhead{\char66}
+\def\fetaxcircledhead{\char67}
+\def\fetavatsubbipunctumhead{\char68}
+\def\fetavatpunctumhead{\char69}
+\def\fetavatvirgahead{\char70}
+\def\fetavatrvirgahead{\char71}
+\def\fetavatlpeshead{\char72}
+\def\fetavatupeshead{\char73}
+\def\fetavatvupeshead{\char74}
+\def\fetavatplicahead{\char75}
+\def\fetavatepiphonushead{\char76}
+\def\fetavatcephalicushead{\char77}
+\def\fetavatquilismahead{\char78}
+\def\fetamedsubbipunctumhead{\char79}
+\def\fetamedpunctumhead{\char80}
+\def\fetamedrvirgahead{\char81}
+\def\fetamedvirgahead{\char82}
+\def\fetahufpunctumhead{\char83}
+\def\fetahufvirgahead{\char84}
+\def\fetahuflpeshead{\char85}
+\def\fetaufermata{\char86}
+\def\fetadfermata{\char87}
+\def\fetathumb{\char88}
+\def\fetasforzatoaccent{\char89}
+\def\fetastaccato{\char90}
+\def\fetaustaccatissimo{\char91}
+\def\fetadstaccatissimo{\char92}
+\def\fetatenuto{\char93}
+\def\fetauportato{\char94}
+\def\fetadportato{\char95}
+\def\fetaumarcato{\char96}
+\def\fetadmarcato{\char97}
+\def\fetaouvert{\char98}
+\def\fetaplusstop{\char99}
+\def\fetaupbow{\char100}
+\def\fetadownbow{\char101}
+\def\fetareverseturn{\char102}
+\def\fetaturn{\char103}
+\def\fetatrill{\char104}
+\def\fetaupedalheel{\char105}
+\def\fetadpedalheel{\char106}
+\def\fetaupedaltoe{\char107}
+\def\fetadpedaltoe{\char108}
+\def\fetaflageolet{\char109}
+\def\fetasegno{\char110}
+\def\fetacoda{\char111}
+\def\fetarcomma{\char112}
+\def\fetalcomma{\char113}
+\def\fetaarpeggio{\char114}
+\def\fetatrill-element{\char115}
+\def\fetaarpeggioarrowdown{\char116}
+\def\fetaarpeggioarrowup{\char117}
+\def\fetatrilelement{\char118}
+\def\fetaprall{\char119}
+\def\fetamordent{\char120}
+\def\fetaprallprall{\char121}
+\def\fetaprallmordent{\char122}
+\def\fetaupprall{\char123}
+\def\fetadownprall{\char124}
+\def\fetaupmordent{\char125}
+\def\fetadownmordent{\char126}
+\def\fetalineprall{\char127}
+\def\fetapralldown{\char128}
+\def\fetaprallup{\char129}
+\def\fetaeighthflag{\char130}
+\def\fetasixteenthflag{\char131}
+\def\fetathirtysecondflag{\char132}
+\def\fetasixtyfourthflag{\char133}
+\def\fetadeighthflag{\char134}
+\def\fetamenseighthflag{\char135}
+\def\fetamens1eighthflag{\char136}
+\def\fetamensdeighthflag{\char137}
+\def\fetamensd1eighthflag{\char138}
+\def\fetamenssixteenthflag{\char139}
+\def\fetamens1sixteenthflag{\char140}
+\def\fetamensdsixteenthflag{\char141}
+\def\fetamensd1sixteenthflag{\char142}
+\def\fetamensthirtysecondflag{\char143}
+\def\fetamens1thirtysecondflag{\char144}
+\def\fetamensdthirtysecondflag{\char145}
+\def\fetamensd1thirtysecondflag{\char146}
+\def\fetamenssixtyfourthflag{\char147}
+\def\fetamens1sixtyfourthflag{\char148}
+\def\fetamensdsixtyfourthflag{\char149}
+\def\fetamensd1sixtyfourthflag{\char150}
+\def\fetagracedash{\char151}
+\def\fetadsixteenthflag{\char152}
+\def\fetadthirtysecondflag{\char153}
+\def\fetadsixtyfourthflag{\char154}
+\def\fetamenseighthflag{\char155}
+\def\fetamens1eighthflag{\char156}
+\def\fetamensdeighthflag{\char157}
+\def\fetamensd1eighthflag{\char158}
+\def\fetamenssixteenthflag{\char159}
+\def\fetamens1sixteenthflag{\char160}
+\def\fetamensdsixteenthflag{\char161}
+\def\fetamensd1sixteenthflag{\char162}
+\def\fetamensthirtysecondflag{\char163}
+\def\fetamens1thirtysecondflag{\char164}
+\def\fetamensdthirtysecondflag{\char165}
+\def\fetamensd1thirtysecondflag{\char166}
+\def\fetamenssixtyfourthflag{\char167}
+\def\fetamens1sixtyfourthflag{\char168}
+\def\fetamensdsixtyfourthflag{\char169}
+\def\fetamensd1sixtyfourthflag{\char170}
+\def\fetagracedash{\char171}
+\def\fetadgracedash{\char172}
+\def\fetastem{\char173}
+\def\fetadstem{\char174}
+\def\fetaaltoclef{\char175}
+\def\fetacaltoclef{\char176}
+\def\fetabassclef{\char177}
+\def\fetacbassclef{\char178}
+\def\fetatrebleclef{\char179}
+\def\fetactrebleclef{\char180}
+\def\fetavatdoclef{\char181}
+\def\fetavatcdoclef{\char182}
+\def\fetavatfaclef{\char183}
+\def\fetavatcfaclef{\char184}
+\def\fetameddoclef{\char185}
+\def\fetacmeddoclef{\char186}
+\def\fetamedfaclef{\char187}
+\def\fetacmedfaclef{\char188}
+\def\fetaneomenscclef{\char189}
+\def\fetacneomenscclef{\char190}
+\def\fetapetruccicclef{\char191}
+\def\fetacpetruccicclef{\char192}
+\def\fetamenscclef{\char193}
+\def\fetacmenscclef{\char194}
+\def\fetapetruccifclef{\char195}
+\def\fetacpetruccifclef{\char196}
+\def\fetamensfclef{\char197}
+\def\fetacmensfclef{\char198}
+\def\fetamensgclef{\char199}
+\def\fetacmensgclef{\char200}
+\def\fetapetruccigclef{\char201}
+\def\fetacpetruccigclef{\char202}
+\def\fetahufnageldoclef{\char203}
+\def\fetachufnageldoclef{\char204}
+\def\fetahufnagelfaclef{\char205}
+\def\fetachufnagelfaclef{\char206}
+\def\fetahufnageldofaclef{\char207}
+\def\fetachufnageldofaclef{\char208}
+\def\fetapercussionclef{\char209}
+\def\fetacpercussionclef{\char210}
+\def\fetatabclef{\char211}
+\def\fetactabclef{\char212}
+\def\fetafourfourmeter{\char213}
+\def\fetaallabreve{\char214}
+\def\fetaoldfourfourmeter{\char215}
+\def\fetaoldallabreve{\char216}
+\def\fetaoldthreetwometer{\char217}
+\def\fetaoldsixfourmeter{\char218}
+\def\fetaoldninefourmeter{\char219}
+\def\fetaoldthreefourmeter{\char220}
+\def\fetaoldsixeightmeter{\char221}
+\def\fetaoldnineeight{\char222}
+\def\fetaoldfoureightmeter{\char223}
+\def\fetaoldsixeightmeteralt{\char224}
+\def\fetaoldtwofourmeter{\char225}
+\def\fetapedal-asterisk{\char226}
+\def\fetapedal-dash{\char227}
+\def\fetapedal-dot{\char228}
+\def\fetapedal-P{\char229}
+\def\fetapedal-d{\char230}
+\def\fetapedal-e{\char231}
+\def\fetapedal-Ped{\char232}
+\def\fetaaccDiscant{\char233}
+\def\fetaaccDot{\char234}
+\def\fetaaccFreebase{\char235}
+\def\fetaaccStdbase{\char236}
+\def\fetaaccBayanbase{\char237}
+\def\fetaaccSB{\char238}
+\def\fetaaccBB{\char239}
+\def\fetaaccOldEE{\char240}
+\def\fetaaccOldEES{\char241}
+\def\fetahufnagel{\char242}
+\def\fetarhufnagel{\char243}
+\def\fetamedicaea{\char244}
+\def\fetarmedicaea{\char245}
+\def\fetavaticana{\char246}
+\def\fetarvaticana{\char247}
+\def\fetamensural{\char248}
+\def\fetarmensural{\char249}
diff --git a/tex/feta19.tex b/tex/feta19.tex
new file mode 100644 (file)
index 0000000..106744d
--- /dev/null
@@ -0,0 +1,250 @@
+\def\fetawholerest{\char0}
+\def\fetahalfrest{\char1}
+\def\fetaoutsidewholerest{\char2}
+\def\fetaoutsidehalfrest{\char3}
+\def\fetabreverest{\char4}
+\def\fetalongarest{\char5}
+\def\fetamultirest{\char6}
+\def\fetaquartrest{\char7}
+\def\fetaeighthrest{\char8}
+\def\fetasixteenthrest{\char9}
+\def\fetathirtysecondrest{\char10}
+\def\fetasixtyfourthrest{\char11}
+\def\fetahundredtwentyeighthrest{\char12}
+\def\fetaneomenslongarest{\char13}
+\def\fetaneomensbreverest{\char14}
+\def\fetaneomenssemibrevisrest{\char15}
+\def\fetaneomensminimahalfrest{\char16}
+\def\fetaneomenssemiminimarest{\char17}
+\def\fetaneomensfusarest{\char18}
+\def\fetaneomenssemifusarest{\char19}
+\def\fetamenslongarest{\char20}
+\def\fetamensbreverest{\char21}
+\def\fetamenssemibrevisrest{\char22}
+\def\fetamensminimahalfrest{\char23}
+\def\fetamenssemiminimarest{\char24}
+\def\fetamensfusarest{\char25}
+\def\fetamenssemifusarest{\char26}
+\def\fetasharp{\char27}
+\def\fetanatural{\char28}
+\def\fetaflat{\char29}
+\def\fetaflatflat{\char30}
+\def\fetasharpsharp{\char31}
+\def\fetarightparen{\char32}
+\def\fetaleftparen{\char33}
+\def\fetamedicaeaflat{\char34}
+\def\fetavaticanaflat{\char35}
+\def\fetavaticananatural{\char36}
+\def\fetamensuralsharp{\char37}
+\def\fetamensuralflat{\char38}
+\def\fetahufnagelflat{\char39}
+\def\fetadot{\char40}
+\def\fetamensuralmaximahead{\char41}
+\def\fetamensurallongahead{\char42}
+\def\fetamensuralbrevishead{\char43}
+\def\fetaneomensuralminimhead{\char44}
+\def\fetaneomensuralsemiminimhead{\char45}
+\def\fetaneofusahead{\char46}
+\def\fetamensuralminimhead{\char47}
+\def\fetamensuralsemiminimhead{\char48}
+\def\fetafusahead{\char49}
+\def\fetaledgerending{\char50}
+\def\fetabrevishead{\char51}
+\def\fetawholehead{\char52}
+\def\fetahalfhead{\char53}
+\def\fetaquarthead{\char54}
+\def\fetawholediamondhead{\char55}
+\def\fetahalfdiamondhead{\char56}
+\def\fetadiamondhead{\char57}
+\def\fetawholetrianglehead{\char58}
+\def\fetahalftrianglehead{\char59}
+\def\fetatrianglehead{\char60}
+\def\fetawholeslashhead{\char61}
+\def\fetahalfslashhead{\char62}
+\def\fetaquartslashhead{\char63}
+\def\fetawholecrossedhead{\char64}
+\def\fetahalfcrossedhead{\char65}
+\def\fetacrossedhead{\char66}
+\def\fetaxcircledhead{\char67}
+\def\fetavatsubbipunctumhead{\char68}
+\def\fetavatpunctumhead{\char69}
+\def\fetavatvirgahead{\char70}
+\def\fetavatrvirgahead{\char71}
+\def\fetavatlpeshead{\char72}
+\def\fetavatupeshead{\char73}
+\def\fetavatvupeshead{\char74}
+\def\fetavatplicahead{\char75}
+\def\fetavatepiphonushead{\char76}
+\def\fetavatcephalicushead{\char77}
+\def\fetavatquilismahead{\char78}
+\def\fetamedsubbipunctumhead{\char79}
+\def\fetamedpunctumhead{\char80}
+\def\fetamedrvirgahead{\char81}
+\def\fetamedvirgahead{\char82}
+\def\fetahufpunctumhead{\char83}
+\def\fetahufvirgahead{\char84}
+\def\fetahuflpeshead{\char85}
+\def\fetaufermata{\char86}
+\def\fetadfermata{\char87}
+\def\fetathumb{\char88}
+\def\fetasforzatoaccent{\char89}
+\def\fetastaccato{\char90}
+\def\fetaustaccatissimo{\char91}
+\def\fetadstaccatissimo{\char92}
+\def\fetatenuto{\char93}
+\def\fetauportato{\char94}
+\def\fetadportato{\char95}
+\def\fetaumarcato{\char96}
+\def\fetadmarcato{\char97}
+\def\fetaouvert{\char98}
+\def\fetaplusstop{\char99}
+\def\fetaupbow{\char100}
+\def\fetadownbow{\char101}
+\def\fetareverseturn{\char102}
+\def\fetaturn{\char103}
+\def\fetatrill{\char104}
+\def\fetaupedalheel{\char105}
+\def\fetadpedalheel{\char106}
+\def\fetaupedaltoe{\char107}
+\def\fetadpedaltoe{\char108}
+\def\fetaflageolet{\char109}
+\def\fetasegno{\char110}
+\def\fetacoda{\char111}
+\def\fetarcomma{\char112}
+\def\fetalcomma{\char113}
+\def\fetaarpeggio{\char114}
+\def\fetatrill-element{\char115}
+\def\fetaarpeggioarrowdown{\char116}
+\def\fetaarpeggioarrowup{\char117}
+\def\fetatrilelement{\char118}
+\def\fetaprall{\char119}
+\def\fetamordent{\char120}
+\def\fetaprallprall{\char121}
+\def\fetaprallmordent{\char122}
+\def\fetaupprall{\char123}
+\def\fetadownprall{\char124}
+\def\fetaupmordent{\char125}
+\def\fetadownmordent{\char126}
+\def\fetalineprall{\char127}
+\def\fetapralldown{\char128}
+\def\fetaprallup{\char129}
+\def\fetaeighthflag{\char130}
+\def\fetasixteenthflag{\char131}
+\def\fetathirtysecondflag{\char132}
+\def\fetasixtyfourthflag{\char133}
+\def\fetadeighthflag{\char134}
+\def\fetamenseighthflag{\char135}
+\def\fetamens1eighthflag{\char136}
+\def\fetamensdeighthflag{\char137}
+\def\fetamensd1eighthflag{\char138}
+\def\fetamenssixteenthflag{\char139}
+\def\fetamens1sixteenthflag{\char140}
+\def\fetamensdsixteenthflag{\char141}
+\def\fetamensd1sixteenthflag{\char142}
+\def\fetamensthirtysecondflag{\char143}
+\def\fetamens1thirtysecondflag{\char144}
+\def\fetamensdthirtysecondflag{\char145}
+\def\fetamensd1thirtysecondflag{\char146}
+\def\fetamenssixtyfourthflag{\char147}
+\def\fetamens1sixtyfourthflag{\char148}
+\def\fetamensdsixtyfourthflag{\char149}
+\def\fetamensd1sixtyfourthflag{\char150}
+\def\fetagracedash{\char151}
+\def\fetadsixteenthflag{\char152}
+\def\fetadthirtysecondflag{\char153}
+\def\fetadsixtyfourthflag{\char154}
+\def\fetamenseighthflag{\char155}
+\def\fetamens1eighthflag{\char156}
+\def\fetamensdeighthflag{\char157}
+\def\fetamensd1eighthflag{\char158}
+\def\fetamenssixteenthflag{\char159}
+\def\fetamens1sixteenthflag{\char160}
+\def\fetamensdsixteenthflag{\char161}
+\def\fetamensd1sixteenthflag{\char162}
+\def\fetamensthirtysecondflag{\char163}
+\def\fetamens1thirtysecondflag{\char164}
+\def\fetamensdthirtysecondflag{\char165}
+\def\fetamensd1thirtysecondflag{\char166}
+\def\fetamenssixtyfourthflag{\char167}
+\def\fetamens1sixtyfourthflag{\char168}
+\def\fetamensdsixtyfourthflag{\char169}
+\def\fetamensd1sixtyfourthflag{\char170}
+\def\fetagracedash{\char171}
+\def\fetadgracedash{\char172}
+\def\fetastem{\char173}
+\def\fetadstem{\char174}
+\def\fetaaltoclef{\char175}
+\def\fetacaltoclef{\char176}
+\def\fetabassclef{\char177}
+\def\fetacbassclef{\char178}
+\def\fetatrebleclef{\char179}
+\def\fetactrebleclef{\char180}
+\def\fetavatdoclef{\char181}
+\def\fetavatcdoclef{\char182}
+\def\fetavatfaclef{\char183}
+\def\fetavatcfaclef{\char184}
+\def\fetameddoclef{\char185}
+\def\fetacmeddoclef{\char186}
+\def\fetamedfaclef{\char187}
+\def\fetacmedfaclef{\char188}
+\def\fetaneomenscclef{\char189}
+\def\fetacneomenscclef{\char190}
+\def\fetapetruccicclef{\char191}
+\def\fetacpetruccicclef{\char192}
+\def\fetamenscclef{\char193}
+\def\fetacmenscclef{\char194}
+\def\fetapetruccifclef{\char195}
+\def\fetacpetruccifclef{\char196}
+\def\fetamensfclef{\char197}
+\def\fetacmensfclef{\char198}
+\def\fetamensgclef{\char199}
+\def\fetacmensgclef{\char200}
+\def\fetapetruccigclef{\char201}
+\def\fetacpetruccigclef{\char202}
+\def\fetahufnageldoclef{\char203}
+\def\fetachufnageldoclef{\char204}
+\def\fetahufnagelfaclef{\char205}
+\def\fetachufnagelfaclef{\char206}
+\def\fetahufnageldofaclef{\char207}
+\def\fetachufnageldofaclef{\char208}
+\def\fetapercussionclef{\char209}
+\def\fetacpercussionclef{\char210}
+\def\fetatabclef{\char211}
+\def\fetactabclef{\char212}
+\def\fetafourfourmeter{\char213}
+\def\fetaallabreve{\char214}
+\def\fetaoldfourfourmeter{\char215}
+\def\fetaoldallabreve{\char216}
+\def\fetaoldthreetwometer{\char217}
+\def\fetaoldsixfourmeter{\char218}
+\def\fetaoldninefourmeter{\char219}
+\def\fetaoldthreefourmeter{\char220}
+\def\fetaoldsixeightmeter{\char221}
+\def\fetaoldnineeight{\char222}
+\def\fetaoldfoureightmeter{\char223}
+\def\fetaoldsixeightmeteralt{\char224}
+\def\fetaoldtwofourmeter{\char225}
+\def\fetapedal-asterisk{\char226}
+\def\fetapedal-dash{\char227}
+\def\fetapedal-dot{\char228}
+\def\fetapedal-P{\char229}
+\def\fetapedal-d{\char230}
+\def\fetapedal-e{\char231}
+\def\fetapedal-Ped{\char232}
+\def\fetaaccDiscant{\char233}
+\def\fetaaccDot{\char234}
+\def\fetaaccFreebase{\char235}
+\def\fetaaccStdbase{\char236}
+\def\fetaaccBayanbase{\char237}
+\def\fetaaccSB{\char238}
+\def\fetaaccBB{\char239}
+\def\fetaaccOldEE{\char240}
+\def\fetaaccOldEES{\char241}
+\def\fetahufnagel{\char242}
+\def\fetarhufnagel{\char243}
+\def\fetamedicaea{\char244}
+\def\fetarmedicaea{\char245}
+\def\fetavaticana{\char246}
+\def\fetarvaticana{\char247}
+\def\fetamensural{\char248}
+\def\fetarmensural{\char249}
diff --git a/tex/feta20.tex b/tex/feta20.tex
new file mode 100644 (file)
index 0000000..106744d
--- /dev/null
@@ -0,0 +1,250 @@
+\def\fetawholerest{\char0}
+\def\fetahalfrest{\char1}
+\def\fetaoutsidewholerest{\char2}
+\def\fetaoutsidehalfrest{\char3}
+\def\fetabreverest{\char4}
+\def\fetalongarest{\char5}
+\def\fetamultirest{\char6}
+\def\fetaquartrest{\char7}
+\def\fetaeighthrest{\char8}
+\def\fetasixteenthrest{\char9}
+\def\fetathirtysecondrest{\char10}
+\def\fetasixtyfourthrest{\char11}
+\def\fetahundredtwentyeighthrest{\char12}
+\def\fetaneomenslongarest{\char13}
+\def\fetaneomensbreverest{\char14}
+\def\fetaneomenssemibrevisrest{\char15}
+\def\fetaneomensminimahalfrest{\char16}
+\def\fetaneomenssemiminimarest{\char17}
+\def\fetaneomensfusarest{\char18}
+\def\fetaneomenssemifusarest{\char19}
+\def\fetamenslongarest{\char20}
+\def\fetamensbreverest{\char21}
+\def\fetamenssemibrevisrest{\char22}
+\def\fetamensminimahalfrest{\char23}
+\def\fetamenssemiminimarest{\char24}
+\def\fetamensfusarest{\char25}
+\def\fetamenssemifusarest{\char26}
+\def\fetasharp{\char27}
+\def\fetanatural{\char28}
+\def\fetaflat{\char29}
+\def\fetaflatflat{\char30}
+\def\fetasharpsharp{\char31}
+\def\fetarightparen{\char32}
+\def\fetaleftparen{\char33}
+\def\fetamedicaeaflat{\char34}
+\def\fetavaticanaflat{\char35}
+\def\fetavaticananatural{\char36}
+\def\fetamensuralsharp{\char37}
+\def\fetamensuralflat{\char38}
+\def\fetahufnagelflat{\char39}
+\def\fetadot{\char40}
+\def\fetamensuralmaximahead{\char41}
+\def\fetamensurallongahead{\char42}
+\def\fetamensuralbrevishead{\char43}
+\def\fetaneomensuralminimhead{\char44}
+\def\fetaneomensuralsemiminimhead{\char45}
+\def\fetaneofusahead{\char46}
+\def\fetamensuralminimhead{\char47}
+\def\fetamensuralsemiminimhead{\char48}
+\def\fetafusahead{\char49}
+\def\fetaledgerending{\char50}
+\def\fetabrevishead{\char51}
+\def\fetawholehead{\char52}
+\def\fetahalfhead{\char53}
+\def\fetaquarthead{\char54}
+\def\fetawholediamondhead{\char55}
+\def\fetahalfdiamondhead{\char56}
+\def\fetadiamondhead{\char57}
+\def\fetawholetrianglehead{\char58}
+\def\fetahalftrianglehead{\char59}
+\def\fetatrianglehead{\char60}
+\def\fetawholeslashhead{\char61}
+\def\fetahalfslashhead{\char62}
+\def\fetaquartslashhead{\char63}
+\def\fetawholecrossedhead{\char64}
+\def\fetahalfcrossedhead{\char65}
+\def\fetacrossedhead{\char66}
+\def\fetaxcircledhead{\char67}
+\def\fetavatsubbipunctumhead{\char68}
+\def\fetavatpunctumhead{\char69}
+\def\fetavatvirgahead{\char70}
+\def\fetavatrvirgahead{\char71}
+\def\fetavatlpeshead{\char72}
+\def\fetavatupeshead{\char73}
+\def\fetavatvupeshead{\char74}
+\def\fetavatplicahead{\char75}
+\def\fetavatepiphonushead{\char76}
+\def\fetavatcephalicushead{\char77}
+\def\fetavatquilismahead{\char78}
+\def\fetamedsubbipunctumhead{\char79}
+\def\fetamedpunctumhead{\char80}
+\def\fetamedrvirgahead{\char81}
+\def\fetamedvirgahead{\char82}
+\def\fetahufpunctumhead{\char83}
+\def\fetahufvirgahead{\char84}
+\def\fetahuflpeshead{\char85}
+\def\fetaufermata{\char86}
+\def\fetadfermata{\char87}
+\def\fetathumb{\char88}
+\def\fetasforzatoaccent{\char89}
+\def\fetastaccato{\char90}
+\def\fetaustaccatissimo{\char91}
+\def\fetadstaccatissimo{\char92}
+\def\fetatenuto{\char93}
+\def\fetauportato{\char94}
+\def\fetadportato{\char95}
+\def\fetaumarcato{\char96}
+\def\fetadmarcato{\char97}
+\def\fetaouvert{\char98}
+\def\fetaplusstop{\char99}
+\def\fetaupbow{\char100}
+\def\fetadownbow{\char101}
+\def\fetareverseturn{\char102}
+\def\fetaturn{\char103}
+\def\fetatrill{\char104}
+\def\fetaupedalheel{\char105}
+\def\fetadpedalheel{\char106}
+\def\fetaupedaltoe{\char107}
+\def\fetadpedaltoe{\char108}
+\def\fetaflageolet{\char109}
+\def\fetasegno{\char110}
+\def\fetacoda{\char111}
+\def\fetarcomma{\char112}
+\def\fetalcomma{\char113}
+\def\fetaarpeggio{\char114}
+\def\fetatrill-element{\char115}
+\def\fetaarpeggioarrowdown{\char116}
+\def\fetaarpeggioarrowup{\char117}
+\def\fetatrilelement{\char118}
+\def\fetaprall{\char119}
+\def\fetamordent{\char120}
+\def\fetaprallprall{\char121}
+\def\fetaprallmordent{\char122}
+\def\fetaupprall{\char123}
+\def\fetadownprall{\char124}
+\def\fetaupmordent{\char125}
+\def\fetadownmordent{\char126}
+\def\fetalineprall{\char127}
+\def\fetapralldown{\char128}
+\def\fetaprallup{\char129}
+\def\fetaeighthflag{\char130}
+\def\fetasixteenthflag{\char131}
+\def\fetathirtysecondflag{\char132}
+\def\fetasixtyfourthflag{\char133}
+\def\fetadeighthflag{\char134}
+\def\fetamenseighthflag{\char135}
+\def\fetamens1eighthflag{\char136}
+\def\fetamensdeighthflag{\char137}
+\def\fetamensd1eighthflag{\char138}
+\def\fetamenssixteenthflag{\char139}
+\def\fetamens1sixteenthflag{\char140}
+\def\fetamensdsixteenthflag{\char141}
+\def\fetamensd1sixteenthflag{\char142}
+\def\fetamensthirtysecondflag{\char143}
+\def\fetamens1thirtysecondflag{\char144}
+\def\fetamensdthirtysecondflag{\char145}
+\def\fetamensd1thirtysecondflag{\char146}
+\def\fetamenssixtyfourthflag{\char147}
+\def\fetamens1sixtyfourthflag{\char148}
+\def\fetamensdsixtyfourthflag{\char149}
+\def\fetamensd1sixtyfourthflag{\char150}
+\def\fetagracedash{\char151}
+\def\fetadsixteenthflag{\char152}
+\def\fetadthirtysecondflag{\char153}
+\def\fetadsixtyfourthflag{\char154}
+\def\fetamenseighthflag{\char155}
+\def\fetamens1eighthflag{\char156}
+\def\fetamensdeighthflag{\char157}
+\def\fetamensd1eighthflag{\char158}
+\def\fetamenssixteenthflag{\char159}
+\def\fetamens1sixteenthflag{\char160}
+\def\fetamensdsixteenthflag{\char161}
+\def\fetamensd1sixteenthflag{\char162}
+\def\fetamensthirtysecondflag{\char163}
+\def\fetamens1thirtysecondflag{\char164}
+\def\fetamensdthirtysecondflag{\char165}
+\def\fetamensd1thirtysecondflag{\char166}
+\def\fetamenssixtyfourthflag{\char167}
+\def\fetamens1sixtyfourthflag{\char168}
+\def\fetamensdsixtyfourthflag{\char169}
+\def\fetamensd1sixtyfourthflag{\char170}
+\def\fetagracedash{\char171}
+\def\fetadgracedash{\char172}
+\def\fetastem{\char173}
+\def\fetadstem{\char174}
+\def\fetaaltoclef{\char175}
+\def\fetacaltoclef{\char176}
+\def\fetabassclef{\char177}
+\def\fetacbassclef{\char178}
+\def\fetatrebleclef{\char179}
+\def\fetactrebleclef{\char180}
+\def\fetavatdoclef{\char181}
+\def\fetavatcdoclef{\char182}
+\def\fetavatfaclef{\char183}
+\def\fetavatcfaclef{\char184}
+\def\fetameddoclef{\char185}
+\def\fetacmeddoclef{\char186}
+\def\fetamedfaclef{\char187}
+\def\fetacmedfaclef{\char188}
+\def\fetaneomenscclef{\char189}
+\def\fetacneomenscclef{\char190}
+\def\fetapetruccicclef{\char191}
+\def\fetacpetruccicclef{\char192}
+\def\fetamenscclef{\char193}
+\def\fetacmenscclef{\char194}
+\def\fetapetruccifclef{\char195}
+\def\fetacpetruccifclef{\char196}
+\def\fetamensfclef{\char197}
+\def\fetacmensfclef{\char198}
+\def\fetamensgclef{\char199}
+\def\fetacmensgclef{\char200}
+\def\fetapetruccigclef{\char201}
+\def\fetacpetruccigclef{\char202}
+\def\fetahufnageldoclef{\char203}
+\def\fetachufnageldoclef{\char204}
+\def\fetahufnagelfaclef{\char205}
+\def\fetachufnagelfaclef{\char206}
+\def\fetahufnageldofaclef{\char207}
+\def\fetachufnageldofaclef{\char208}
+\def\fetapercussionclef{\char209}
+\def\fetacpercussionclef{\char210}
+\def\fetatabclef{\char211}
+\def\fetactabclef{\char212}
+\def\fetafourfourmeter{\char213}
+\def\fetaallabreve{\char214}
+\def\fetaoldfourfourmeter{\char215}
+\def\fetaoldallabreve{\char216}
+\def\fetaoldthreetwometer{\char217}
+\def\fetaoldsixfourmeter{\char218}
+\def\fetaoldninefourmeter{\char219}
+\def\fetaoldthreefourmeter{\char220}
+\def\fetaoldsixeightmeter{\char221}
+\def\fetaoldnineeight{\char222}
+\def\fetaoldfoureightmeter{\char223}
+\def\fetaoldsixeightmeteralt{\char224}
+\def\fetaoldtwofourmeter{\char225}
+\def\fetapedal-asterisk{\char226}
+\def\fetapedal-dash{\char227}
+\def\fetapedal-dot{\char228}
+\def\fetapedal-P{\char229}
+\def\fetapedal-d{\char230}
+\def\fetapedal-e{\char231}
+\def\fetapedal-Ped{\char232}
+\def\fetaaccDiscant{\char233}
+\def\fetaaccDot{\char234}
+\def\fetaaccFreebase{\char235}
+\def\fetaaccStdbase{\char236}
+\def\fetaaccBayanbase{\char237}
+\def\fetaaccSB{\char238}
+\def\fetaaccBB{\char239}
+\def\fetaaccOldEE{\char240}
+\def\fetaaccOldEES{\char241}
+\def\fetahufnagel{\char242}
+\def\fetarhufnagel{\char243}
+\def\fetamedicaea{\char244}
+\def\fetarmedicaea{\char245}
+\def\fetavaticana{\char246}
+\def\fetarvaticana{\char247}
+\def\fetamensural{\char248}
+\def\fetarmensural{\char249}
diff --git a/tex/feta23.tex b/tex/feta23.tex
new file mode 100644 (file)
index 0000000..106744d
--- /dev/null
@@ -0,0 +1,250 @@
+\def\fetawholerest{\char0}
+\def\fetahalfrest{\char1}
+\def\fetaoutsidewholerest{\char2}
+\def\fetaoutsidehalfrest{\char3}
+\def\fetabreverest{\char4}
+\def\fetalongarest{\char5}
+\def\fetamultirest{\char6}
+\def\fetaquartrest{\char7}
+\def\fetaeighthrest{\char8}
+\def\fetasixteenthrest{\char9}
+\def\fetathirtysecondrest{\char10}
+\def\fetasixtyfourthrest{\char11}
+\def\fetahundredtwentyeighthrest{\char12}
+\def\fetaneomenslongarest{\char13}
+\def\fetaneomensbreverest{\char14}
+\def\fetaneomenssemibrevisrest{\char15}
+\def\fetaneomensminimahalfrest{\char16}
+\def\fetaneomenssemiminimarest{\char17}
+\def\fetaneomensfusarest{\char18}
+\def\fetaneomenssemifusarest{\char19}
+\def\fetamenslongarest{\char20}
+\def\fetamensbreverest{\char21}
+\def\fetamenssemibrevisrest{\char22}
+\def\fetamensminimahalfrest{\char23}
+\def\fetamenssemiminimarest{\char24}
+\def\fetamensfusarest{\char25}
+\def\fetamenssemifusarest{\char26}
+\def\fetasharp{\char27}
+\def\fetanatural{\char28}
+\def\fetaflat{\char29}
+\def\fetaflatflat{\char30}
+\def\fetasharpsharp{\char31}
+\def\fetarightparen{\char32}
+\def\fetaleftparen{\char33}
+\def\fetamedicaeaflat{\char34}
+\def\fetavaticanaflat{\char35}
+\def\fetavaticananatural{\char36}
+\def\fetamensuralsharp{\char37}
+\def\fetamensuralflat{\char38}
+\def\fetahufnagelflat{\char39}
+\def\fetadot{\char40}
+\def\fetamensuralmaximahead{\char41}
+\def\fetamensurallongahead{\char42}
+\def\fetamensuralbrevishead{\char43}
+\def\fetaneomensuralminimhead{\char44}
+\def\fetaneomensuralsemiminimhead{\char45}
+\def\fetaneofusahead{\char46}
+\def\fetamensuralminimhead{\char47}
+\def\fetamensuralsemiminimhead{\char48}
+\def\fetafusahead{\char49}
+\def\fetaledgerending{\char50}
+\def\fetabrevishead{\char51}
+\def\fetawholehead{\char52}
+\def\fetahalfhead{\char53}
+\def\fetaquarthead{\char54}
+\def\fetawholediamondhead{\char55}
+\def\fetahalfdiamondhead{\char56}
+\def\fetadiamondhead{\char57}
+\def\fetawholetrianglehead{\char58}
+\def\fetahalftrianglehead{\char59}
+\def\fetatrianglehead{\char60}
+\def\fetawholeslashhead{\char61}
+\def\fetahalfslashhead{\char62}
+\def\fetaquartslashhead{\char63}
+\def\fetawholecrossedhead{\char64}
+\def\fetahalfcrossedhead{\char65}
+\def\fetacrossedhead{\char66}
+\def\fetaxcircledhead{\char67}
+\def\fetavatsubbipunctumhead{\char68}
+\def\fetavatpunctumhead{\char69}
+\def\fetavatvirgahead{\char70}
+\def\fetavatrvirgahead{\char71}
+\def\fetavatlpeshead{\char72}
+\def\fetavatupeshead{\char73}
+\def\fetavatvupeshead{\char74}
+\def\fetavatplicahead{\char75}
+\def\fetavatepiphonushead{\char76}
+\def\fetavatcephalicushead{\char77}
+\def\fetavatquilismahead{\char78}
+\def\fetamedsubbipunctumhead{\char79}
+\def\fetamedpunctumhead{\char80}
+\def\fetamedrvirgahead{\char81}
+\def\fetamedvirgahead{\char82}
+\def\fetahufpunctumhead{\char83}
+\def\fetahufvirgahead{\char84}
+\def\fetahuflpeshead{\char85}
+\def\fetaufermata{\char86}
+\def\fetadfermata{\char87}
+\def\fetathumb{\char88}
+\def\fetasforzatoaccent{\char89}
+\def\fetastaccato{\char90}
+\def\fetaustaccatissimo{\char91}
+\def\fetadstaccatissimo{\char92}
+\def\fetatenuto{\char93}
+\def\fetauportato{\char94}
+\def\fetadportato{\char95}
+\def\fetaumarcato{\char96}
+\def\fetadmarcato{\char97}
+\def\fetaouvert{\char98}
+\def\fetaplusstop{\char99}
+\def\fetaupbow{\char100}
+\def\fetadownbow{\char101}
+\def\fetareverseturn{\char102}
+\def\fetaturn{\char103}
+\def\fetatrill{\char104}
+\def\fetaupedalheel{\char105}
+\def\fetadpedalheel{\char106}
+\def\fetaupedaltoe{\char107}
+\def\fetadpedaltoe{\char108}
+\def\fetaflageolet{\char109}
+\def\fetasegno{\char110}
+\def\fetacoda{\char111}
+\def\fetarcomma{\char112}
+\def\fetalcomma{\char113}
+\def\fetaarpeggio{\char114}
+\def\fetatrill-element{\char115}
+\def\fetaarpeggioarrowdown{\char116}
+\def\fetaarpeggioarrowup{\char117}
+\def\fetatrilelement{\char118}
+\def\fetaprall{\char119}
+\def\fetamordent{\char120}
+\def\fetaprallprall{\char121}
+\def\fetaprallmordent{\char122}
+\def\fetaupprall{\char123}
+\def\fetadownprall{\char124}
+\def\fetaupmordent{\char125}
+\def\fetadownmordent{\char126}
+\def\fetalineprall{\char127}
+\def\fetapralldown{\char128}
+\def\fetaprallup{\char129}
+\def\fetaeighthflag{\char130}
+\def\fetasixteenthflag{\char131}
+\def\fetathirtysecondflag{\char132}
+\def\fetasixtyfourthflag{\char133}
+\def\fetadeighthflag{\char134}
+\def\fetamenseighthflag{\char135}
+\def\fetamens1eighthflag{\char136}
+\def\fetamensdeighthflag{\char137}
+\def\fetamensd1eighthflag{\char138}
+\def\fetamenssixteenthflag{\char139}
+\def\fetamens1sixteenthflag{\char140}
+\def\fetamensdsixteenthflag{\char141}
+\def\fetamensd1sixteenthflag{\char142}
+\def\fetamensthirtysecondflag{\char143}
+\def\fetamens1thirtysecondflag{\char144}
+\def\fetamensdthirtysecondflag{\char145}
+\def\fetamensd1thirtysecondflag{\char146}
+\def\fetamenssixtyfourthflag{\char147}
+\def\fetamens1sixtyfourthflag{\char148}
+\def\fetamensdsixtyfourthflag{\char149}
+\def\fetamensd1sixtyfourthflag{\char150}
+\def\fetagracedash{\char151}
+\def\fetadsixteenthflag{\char152}
+\def\fetadthirtysecondflag{\char153}
+\def\fetadsixtyfourthflag{\char154}
+\def\fetamenseighthflag{\char155}
+\def\fetamens1eighthflag{\char156}
+\def\fetamensdeighthflag{\char157}
+\def\fetamensd1eighthflag{\char158}
+\def\fetamenssixteenthflag{\char159}
+\def\fetamens1sixteenthflag{\char160}
+\def\fetamensdsixteenthflag{\char161}
+\def\fetamensd1sixteenthflag{\char162}
+\def\fetamensthirtysecondflag{\char163}
+\def\fetamens1thirtysecondflag{\char164}
+\def\fetamensdthirtysecondflag{\char165}
+\def\fetamensd1thirtysecondflag{\char166}
+\def\fetamenssixtyfourthflag{\char167}
+\def\fetamens1sixtyfourthflag{\char168}
+\def\fetamensdsixtyfourthflag{\char169}
+\def\fetamensd1sixtyfourthflag{\char170}
+\def\fetagracedash{\char171}
+\def\fetadgracedash{\char172}
+\def\fetastem{\char173}
+\def\fetadstem{\char174}
+\def\fetaaltoclef{\char175}
+\def\fetacaltoclef{\char176}
+\def\fetabassclef{\char177}
+\def\fetacbassclef{\char178}
+\def\fetatrebleclef{\char179}
+\def\fetactrebleclef{\char180}
+\def\fetavatdoclef{\char181}
+\def\fetavatcdoclef{\char182}
+\def\fetavatfaclef{\char183}
+\def\fetavatcfaclef{\char184}
+\def\fetameddoclef{\char185}
+\def\fetacmeddoclef{\char186}
+\def\fetamedfaclef{\char187}
+\def\fetacmedfaclef{\char188}
+\def\fetaneomenscclef{\char189}
+\def\fetacneomenscclef{\char190}
+\def\fetapetruccicclef{\char191}
+\def\fetacpetruccicclef{\char192}
+\def\fetamenscclef{\char193}
+\def\fetacmenscclef{\char194}
+\def\fetapetruccifclef{\char195}
+\def\fetacpetruccifclef{\char196}
+\def\fetamensfclef{\char197}
+\def\fetacmensfclef{\char198}
+\def\fetamensgclef{\char199}
+\def\fetacmensgclef{\char200}
+\def\fetapetruccigclef{\char201}
+\def\fetacpetruccigclef{\char202}
+\def\fetahufnageldoclef{\char203}
+\def\fetachufnageldoclef{\char204}
+\def\fetahufnagelfaclef{\char205}
+\def\fetachufnagelfaclef{\char206}
+\def\fetahufnageldofaclef{\char207}
+\def\fetachufnageldofaclef{\char208}
+\def\fetapercussionclef{\char209}
+\def\fetacpercussionclef{\char210}
+\def\fetatabclef{\char211}
+\def\fetactabclef{\char212}
+\def\fetafourfourmeter{\char213}
+\def\fetaallabreve{\char214}
+\def\fetaoldfourfourmeter{\char215}
+\def\fetaoldallabreve{\char216}
+\def\fetaoldthreetwometer{\char217}
+\def\fetaoldsixfourmeter{\char218}
+\def\fetaoldninefourmeter{\char219}
+\def\fetaoldthreefourmeter{\char220}
+\def\fetaoldsixeightmeter{\char221}
+\def\fetaoldnineeight{\char222}
+\def\fetaoldfoureightmeter{\char223}
+\def\fetaoldsixeightmeteralt{\char224}
+\def\fetaoldtwofourmeter{\char225}
+\def\fetapedal-asterisk{\char226}
+\def\fetapedal-dash{\char227}
+\def\fetapedal-dot{\char228}
+\def\fetapedal-P{\char229}
+\def\fetapedal-d{\char230}
+\def\fetapedal-e{\char231}
+\def\fetapedal-Ped{\char232}
+\def\fetaaccDiscant{\char233}
+\def\fetaaccDot{\char234}
+\def\fetaaccFreebase{\char235}
+\def\fetaaccStdbase{\char236}
+\def\fetaaccBayanbase{\char237}
+\def\fetaaccSB{\char238}
+\def\fetaaccBB{\char239}
+\def\fetaaccOldEE{\char240}
+\def\fetaaccOldEES{\char241}
+\def\fetahufnagel{\char242}
+\def\fetarhufnagel{\char243}
+\def\fetamedicaea{\char244}
+\def\fetarmedicaea{\char245}
+\def\fetavaticana{\char246}
+\def\fetarvaticana{\char247}
+\def\fetamensural{\char248}
+\def\fetarmensural{\char249}
diff --git a/tex/feta26.tex b/tex/feta26.tex
new file mode 100644 (file)
index 0000000..106744d
--- /dev/null
@@ -0,0 +1,250 @@
+\def\fetawholerest{\char0}
+\def\fetahalfrest{\char1}
+\def\fetaoutsidewholerest{\char2}
+\def\fetaoutsidehalfrest{\char3}
+\def\fetabreverest{\char4}
+\def\fetalongarest{\char5}
+\def\fetamultirest{\char6}
+\def\fetaquartrest{\char7}
+\def\fetaeighthrest{\char8}
+\def\fetasixteenthrest{\char9}
+\def\fetathirtysecondrest{\char10}
+\def\fetasixtyfourthrest{\char11}
+\def\fetahundredtwentyeighthrest{\char12}
+\def\fetaneomenslongarest{\char13}
+\def\fetaneomensbreverest{\char14}
+\def\fetaneomenssemibrevisrest{\char15}
+\def\fetaneomensminimahalfrest{\char16}
+\def\fetaneomenssemiminimarest{\char17}
+\def\fetaneomensfusarest{\char18}
+\def\fetaneomenssemifusarest{\char19}
+\def\fetamenslongarest{\char20}
+\def\fetamensbreverest{\char21}
+\def\fetamenssemibrevisrest{\char22}
+\def\fetamensminimahalfrest{\char23}
+\def\fetamenssemiminimarest{\char24}
+\def\fetamensfusarest{\char25}
+\def\fetamenssemifusarest{\char26}
+\def\fetasharp{\char27}
+\def\fetanatural{\char28}
+\def\fetaflat{\char29}
+\def\fetaflatflat{\char30}
+\def\fetasharpsharp{\char31}
+\def\fetarightparen{\char32}
+\def\fetaleftparen{\char33}
+\def\fetamedicaeaflat{\char34}
+\def\fetavaticanaflat{\char35}
+\def\fetavaticananatural{\char36}
+\def\fetamensuralsharp{\char37}
+\def\fetamensuralflat{\char38}
+\def\fetahufnagelflat{\char39}
+\def\fetadot{\char40}
+\def\fetamensuralmaximahead{\char41}
+\def\fetamensurallongahead{\char42}
+\def\fetamensuralbrevishead{\char43}
+\def\fetaneomensuralminimhead{\char44}
+\def\fetaneomensuralsemiminimhead{\char45}
+\def\fetaneofusahead{\char46}
+\def\fetamensuralminimhead{\char47}
+\def\fetamensuralsemiminimhead{\char48}
+\def\fetafusahead{\char49}
+\def\fetaledgerending{\char50}
+\def\fetabrevishead{\char51}
+\def\fetawholehead{\char52}
+\def\fetahalfhead{\char53}
+\def\fetaquarthead{\char54}
+\def\fetawholediamondhead{\char55}
+\def\fetahalfdiamondhead{\char56}
+\def\fetadiamondhead{\char57}
+\def\fetawholetrianglehead{\char58}
+\def\fetahalftrianglehead{\char59}
+\def\fetatrianglehead{\char60}
+\def\fetawholeslashhead{\char61}
+\def\fetahalfslashhead{\char62}
+\def\fetaquartslashhead{\char63}
+\def\fetawholecrossedhead{\char64}
+\def\fetahalfcrossedhead{\char65}
+\def\fetacrossedhead{\char66}
+\def\fetaxcircledhead{\char67}
+\def\fetavatsubbipunctumhead{\char68}
+\def\fetavatpunctumhead{\char69}
+\def\fetavatvirgahead{\char70}
+\def\fetavatrvirgahead{\char71}
+\def\fetavatlpeshead{\char72}
+\def\fetavatupeshead{\char73}
+\def\fetavatvupeshead{\char74}
+\def\fetavatplicahead{\char75}
+\def\fetavatepiphonushead{\char76}
+\def\fetavatcephalicushead{\char77}
+\def\fetavatquilismahead{\char78}
+\def\fetamedsubbipunctumhead{\char79}
+\def\fetamedpunctumhead{\char80}
+\def\fetamedrvirgahead{\char81}
+\def\fetamedvirgahead{\char82}
+\def\fetahufpunctumhead{\char83}
+\def\fetahufvirgahead{\char84}
+\def\fetahuflpeshead{\char85}
+\def\fetaufermata{\char86}
+\def\fetadfermata{\char87}
+\def\fetathumb{\char88}
+\def\fetasforzatoaccent{\char89}
+\def\fetastaccato{\char90}
+\def\fetaustaccatissimo{\char91}
+\def\fetadstaccatissimo{\char92}
+\def\fetatenuto{\char93}
+\def\fetauportato{\char94}
+\def\fetadportato{\char95}
+\def\fetaumarcato{\char96}
+\def\fetadmarcato{\char97}
+\def\fetaouvert{\char98}
+\def\fetaplusstop{\char99}
+\def\fetaupbow{\char100}
+\def\fetadownbow{\char101}
+\def\fetareverseturn{\char102}
+\def\fetaturn{\char103}
+\def\fetatrill{\char104}
+\def\fetaupedalheel{\char105}
+\def\fetadpedalheel{\char106}
+\def\fetaupedaltoe{\char107}
+\def\fetadpedaltoe{\char108}
+\def\fetaflageolet{\char109}
+\def\fetasegno{\char110}
+\def\fetacoda{\char111}
+\def\fetarcomma{\char112}
+\def\fetalcomma{\char113}
+\def\fetaarpeggio{\char114}
+\def\fetatrill-element{\char115}
+\def\fetaarpeggioarrowdown{\char116}
+\def\fetaarpeggioarrowup{\char117}
+\def\fetatrilelement{\char118}
+\def\fetaprall{\char119}
+\def\fetamordent{\char120}
+\def\fetaprallprall{\char121}
+\def\fetaprallmordent{\char122}
+\def\fetaupprall{\char123}
+\def\fetadownprall{\char124}
+\def\fetaupmordent{\char125}
+\def\fetadownmordent{\char126}
+\def\fetalineprall{\char127}
+\def\fetapralldown{\char128}
+\def\fetaprallup{\char129}
+\def\fetaeighthflag{\char130}
+\def\fetasixteenthflag{\char131}
+\def\fetathirtysecondflag{\char132}
+\def\fetasixtyfourthflag{\char133}
+\def\fetadeighthflag{\char134}
+\def\fetamenseighthflag{\char135}
+\def\fetamens1eighthflag{\char136}
+\def\fetamensdeighthflag{\char137}
+\def\fetamensd1eighthflag{\char138}
+\def\fetamenssixteenthflag{\char139}
+\def\fetamens1sixteenthflag{\char140}
+\def\fetamensdsixteenthflag{\char141}
+\def\fetamensd1sixteenthflag{\char142}
+\def\fetamensthirtysecondflag{\char143}
+\def\fetamens1thirtysecondflag{\char144}
+\def\fetamensdthirtysecondflag{\char145}
+\def\fetamensd1thirtysecondflag{\char146}
+\def\fetamenssixtyfourthflag{\char147}
+\def\fetamens1sixtyfourthflag{\char148}
+\def\fetamensdsixtyfourthflag{\char149}
+\def\fetamensd1sixtyfourthflag{\char150}
+\def\fetagracedash{\char151}
+\def\fetadsixteenthflag{\char152}
+\def\fetadthirtysecondflag{\char153}
+\def\fetadsixtyfourthflag{\char154}
+\def\fetamenseighthflag{\char155}
+\def\fetamens1eighthflag{\char156}
+\def\fetamensdeighthflag{\char157}
+\def\fetamensd1eighthflag{\char158}
+\def\fetamenssixteenthflag{\char159}
+\def\fetamens1sixteenthflag{\char160}
+\def\fetamensdsixteenthflag{\char161}
+\def\fetamensd1sixteenthflag{\char162}
+\def\fetamensthirtysecondflag{\char163}
+\def\fetamens1thirtysecondflag{\char164}
+\def\fetamensdthirtysecondflag{\char165}
+\def\fetamensd1thirtysecondflag{\char166}
+\def\fetamenssixtyfourthflag{\char167}
+\def\fetamens1sixtyfourthflag{\char168}
+\def\fetamensdsixtyfourthflag{\char169}
+\def\fetamensd1sixtyfourthflag{\char170}
+\def\fetagracedash{\char171}
+\def\fetadgracedash{\char172}
+\def\fetastem{\char173}
+\def\fetadstem{\char174}
+\def\fetaaltoclef{\char175}
+\def\fetacaltoclef{\char176}
+\def\fetabassclef{\char177}
+\def\fetacbassclef{\char178}
+\def\fetatrebleclef{\char179}
+\def\fetactrebleclef{\char180}
+\def\fetavatdoclef{\char181}
+\def\fetavatcdoclef{\char182}
+\def\fetavatfaclef{\char183}
+\def\fetavatcfaclef{\char184}
+\def\fetameddoclef{\char185}
+\def\fetacmeddoclef{\char186}
+\def\fetamedfaclef{\char187}
+\def\fetacmedfaclef{\char188}
+\def\fetaneomenscclef{\char189}
+\def\fetacneomenscclef{\char190}
+\def\fetapetruccicclef{\char191}
+\def\fetacpetruccicclef{\char192}
+\def\fetamenscclef{\char193}
+\def\fetacmenscclef{\char194}
+\def\fetapetruccifclef{\char195}
+\def\fetacpetruccifclef{\char196}
+\def\fetamensfclef{\char197}
+\def\fetacmensfclef{\char198}
+\def\fetamensgclef{\char199}
+\def\fetacmensgclef{\char200}
+\def\fetapetruccigclef{\char201}
+\def\fetacpetruccigclef{\char202}
+\def\fetahufnageldoclef{\char203}
+\def\fetachufnageldoclef{\char204}
+\def\fetahufnagelfaclef{\char205}
+\def\fetachufnagelfaclef{\char206}
+\def\fetahufnageldofaclef{\char207}
+\def\fetachufnageldofaclef{\char208}
+\def\fetapercussionclef{\char209}
+\def\fetacpercussionclef{\char210}
+\def\fetatabclef{\char211}
+\def\fetactabclef{\char212}
+\def\fetafourfourmeter{\char213}
+\def\fetaallabreve{\char214}
+\def\fetaoldfourfourmeter{\char215}
+\def\fetaoldallabreve{\char216}
+\def\fetaoldthreetwometer{\char217}
+\def\fetaoldsixfourmeter{\char218}
+\def\fetaoldninefourmeter{\char219}
+\def\fetaoldthreefourmeter{\char220}
+\def\fetaoldsixeightmeter{\char221}
+\def\fetaoldnineeight{\char222}
+\def\fetaoldfoureightmeter{\char223}
+\def\fetaoldsixeightmeteralt{\char224}
+\def\fetaoldtwofourmeter{\char225}
+\def\fetapedal-asterisk{\char226}
+\def\fetapedal-dash{\char227}
+\def\fetapedal-dot{\char228}
+\def\fetapedal-P{\char229}
+\def\fetapedal-d{\char230}
+\def\fetapedal-e{\char231}
+\def\fetapedal-Ped{\char232}
+\def\fetaaccDiscant{\char233}
+\def\fetaaccDot{\char234}
+\def\fetaaccFreebase{\char235}
+\def\fetaaccStdbase{\char236}
+\def\fetaaccBayanbase{\char237}
+\def\fetaaccSB{\char238}
+\def\fetaaccBB{\char239}
+\def\fetaaccOldEE{\char240}
+\def\fetaaccOldEES{\char241}
+\def\fetahufnagel{\char242}
+\def\fetarhufnagel{\char243}
+\def\fetamedicaea{\char244}
+\def\fetarmedicaea{\char245}
+\def\fetavaticana{\char246}
+\def\fetarvaticana{\char247}
+\def\fetamensural{\char248}
+\def\fetarmensural{\char249}