---- ../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
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)
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) \
$(MAKE) footify
$(outdir)/%.html: %.bib
- -$(BIBTEX2HTML) $(BIBTEX2HTML_FLAGS)
+ $(PYTHON) $(depth)/buildscripts/bib2html.py -o $@ $<
$(footify) $@
local-clean:
% 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},
}
%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},
-@Book {63,
+@Book{?:_pictor_histor_music_print,
author={?},
title = {Pictoral History of Music Printing},
address={Elhardt, Indiana},
}
-@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},
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},
ftp = {ftp://blackbox.cartah.washington.edu}
}
-
@Article {smdl-web,
author={unknown},
title = {SMDL, Standard Musical Description Language},
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.}
}
--- /dev/null
+% 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 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 <
+ { " " }
+ { " " }
+ 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 al." * }
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et 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}
@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
@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
@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
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
* 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
* groff, texinfo
- * bibtex2html (not in Debian 2.2)
-
* tetex-base, tetex-bin, tetex-extra, libkpathsea-dev or tetex-dev
* dpkg-dev, debhelper, fakeroot
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
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.
--- /dev/null
+#!@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)
+
+
+
+
+
+
+
+
+
+
+
- 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"
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
ac_cv_func_memcmp_clean=no
else
cat > conftest.$ac_ext <<EOF
-#line 3243 "configure"
+#line 3199 "configure"
#include "confdefs.h"
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
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. */
; 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
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. */
; 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
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. */
; 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
# 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
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
# 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
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*
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
AC_STEPMAKE_TEXMF_DIRS
AC_STEPMAKE_GUILE
AC_STEPMAKE_KPATHSEA
-AC_STEPMAKE_BIBTEX2HTML
if test "$optimise_b" = yes; then
+++ /dev/null
-\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
- }
-}
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
+++ /dev/null
-\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
- }
-}
-
+% \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 >
+ }
+}
+
};
-
Accidental_engraver::Accidental_engraver ()
{
key_item_p_ =0;
* 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;
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 ()
{
{
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
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);
}
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"));
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)
{
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));
}
}
daddy_trans_l_->set_property ("lazyKeySignature", lazysig);
}
-
+
if (key_item_p_)
{
/*
}
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));
}
}
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 */ "");
{
/*
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);
}
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
/*
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,
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);
}
/*
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;
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);
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); }
Real indent_f_;
Real line_len_f_;
Real default_space_f_;
-
+ int active_count_;
Simple_spacer ();
#include "direction.hh"
#include "offset.hh"
#include "interval.hh"
-#include "pitch.hh"
SCM
ly_last (SCM list)
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"
*/
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--)
*/
#include "script-column.hh"
#include "side-position-interface.hh"
-
+#include "warn.hh"
#include "group-interface.hh"
void
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;
Simple_spacer::Simple_spacer ()
{
+ active_count_ = 0;
force_f_ = 0.;
indent_f_ =0.0;
default_space_f_ = 20 PT;
// 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
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
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++)
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;
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);
#include "translator-group.hh"
#include "warn.hh"
#include "music-output-def.hh"
-
#include "ly-smobs.icc"
int
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 ()
{
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_);
}
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);
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));
}
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_);
}
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"
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)
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
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
%define name lilypond
-%define version 1.5.24
+%define version 1.5.25
%define release 1mdk
Name: %{name}
%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
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/
(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.")
'spaceable-element-interface
"An grob (generally a Paper_column) that takes part in the
spacing problem. "
- '(
+ '(penalty
minimum-distances
ideal-distances
dir-list
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")
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
@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
\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?
(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
(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.")
(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? "
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
#!@PYTHON@
+
# Run lilypond, latex, dvips.
#
# This is the third incarnation of ly2dvi.
# 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.
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',
'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())
self.instrument = 0
self.voice_idx = 0
self.number = None
+ self.key = 0
i = 0
for v in self.voices:
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):
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:]
l = l[1:]
# dump path
- while ls[0][0] == '%':
- ls = ls[1:]
-
ls = ls[1:]
# dump more ?
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] == "//":
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, ' ')
--- /dev/null
+\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}
--- /dev/null
+\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}
--- /dev/null
+\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}
--- /dev/null
+\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}
--- /dev/null
+\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}
--- /dev/null
+\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}
--- /dev/null
+\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}